summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authoraxis <qt-info@nokia.com>2009-04-24 13:34:15 +0200
committeraxis <qt-info@nokia.com>2009-04-24 13:34:15 +0200
commit8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76 (patch)
treea17e1a767a89542ab59907462206d7dcf2e504b2 /util
Long live Qt for S60!
Diffstat (limited to 'util')
-rw-r--r--util/fixnonlatin1/fixnonlatin1.pro9
-rw-r--r--util/fixnonlatin1/main.cpp102
-rw-r--r--util/gencmap/Makefile46
-rw-r--r--util/gencmap/gencmap.cpp344
-rwxr-xr-xutil/harfbuzz/update-harfbuzz63
-rw-r--r--util/install/archive/archive.pro9
-rw-r--r--util/install/archive/qarchive.cpp471
-rw-r--r--util/install/archive/qarchive.h138
-rw-r--r--util/install/configure_installer.cache30
-rw-r--r--util/install/install.pro9
-rw-r--r--util/install/keygen/keygen.pro13
-rw-r--r--util/install/keygen/keyinfo.cpp164
-rw-r--r--util/install/keygen/keyinfo.h123
-rw-r--r--util/install/keygen/main.cpp250
-rw-r--r--util/install/mac/licensedlg.ui134
-rw-r--r--util/install/mac/licensedlgimpl.cpp65
-rw-r--r--util/install/mac/licensedlgimpl.h55
-rw-r--r--util/install/mac/mac.pro11
-rw-r--r--util/install/mac/main.cpp117
-rw-r--r--util/install/mac/unpackage.icnsbin0 -> 29372 bytes
-rw-r--r--util/install/mac/unpackdlg.ui330
-rw-r--r--util/install/mac/unpackdlgimpl.cpp200
-rw-r--r--util/install/mac/unpackdlgimpl.h63
-rw-r--r--util/install/package/main.cpp397
-rw-r--r--util/install/package/package.pro25
-rw-r--r--util/install/win/archive.cpp115
-rw-r--r--util/install/win/archive.h49
-rw-r--r--util/install/win/dialogs/folderdlg.ui184
-rw-r--r--util/install/win/dialogs/folderdlgimpl.cpp119
-rw-r--r--util/install/win/dialogs/folderdlgimpl.h65
-rw-r--r--util/install/win/environment.cpp362
-rw-r--r--util/install/win/environment.h73
-rw-r--r--util/install/win/globalinformation.cpp168
-rw-r--r--util/install/win/globalinformation.h93
-rw-r--r--util/install/win/install-edu.rc3
-rw-r--r--util/install/win/install-eval.rc3
-rw-r--r--util/install/win/install-noncommercial.rc4
-rw-r--r--util/install/win/install-qsa.rc5
-rw-r--r--util/install/win/install.icobin0 -> 2998 bytes
-rw-r--r--util/install/win/install.rc4
-rw-r--r--util/install/win/main.cpp100
-rw-r--r--util/install/win/pages/buildpage.ui92
-rw-r--r--util/install/win/pages/configpage.ui474
-rw-r--r--util/install/win/pages/finishpage.ui63
-rw-r--r--util/install/win/pages/folderspage.ui259
-rw-r--r--util/install/win/pages/licenseagreementpage.ui202
-rw-r--r--util/install/win/pages/licensepage.ui264
-rw-r--r--util/install/win/pages/optionspage.ui503
-rw-r--r--util/install/win/pages/pages.cpp349
-rw-r--r--util/install/win/pages/pages.h226
-rw-r--r--util/install/win/pages/progresspage.ui78
-rw-r--r--util/install/win/pages/sidedecoration.ui108
-rw-r--r--util/install/win/pages/sidedecorationimpl.cpp205
-rw-r--r--util/install/win/pages/sidedecorationimpl.h70
-rw-r--r--util/install/win/pages/winintropage.ui39
-rw-r--r--util/install/win/qt.arq3
-rw-r--r--util/install/win/resource.cpp162
-rw-r--r--util/install/win/resource.h77
-rw-r--r--util/install/win/setupwizardimpl.cpp2571
-rw-r--r--util/install/win/setupwizardimpl.h276
-rw-r--r--util/install/win/setupwizardimpl_config.cpp1564
-rw-r--r--util/install/win/shell.cpp472
-rw-r--r--util/install/win/shell.h87
-rw-r--r--util/install/win/uninstaller/quninstall.pro7
-rw-r--r--util/install/win/uninstaller/uninstall.ui167
-rw-r--r--util/install/win/uninstaller/uninstaller.cpp142
-rw-r--r--util/install/win/uninstaller/uninstallimpl.cpp75
-rw-r--r--util/install/win/uninstaller/uninstallimpl.h54
-rw-r--r--util/install/win/win.pro136
-rw-r--r--util/lexgen/README16
-rw-r--r--util/lexgen/configfile.cpp99
-rw-r--r--util/lexgen/configfile.h81
-rw-r--r--util/lexgen/css2-simplified.lexgen93
-rw-r--r--util/lexgen/generator.cpp532
-rw-r--r--util/lexgen/generator.h221
-rw-r--r--util/lexgen/global.h113
-rw-r--r--util/lexgen/lexgen.lexgen24
-rw-r--r--util/lexgen/lexgen.pri3
-rw-r--r--util/lexgen/lexgen.pro6
-rw-r--r--util/lexgen/main.cpp323
-rw-r--r--util/lexgen/nfa.cpp508
-rw-r--r--util/lexgen/nfa.h127
-rw-r--r--util/lexgen/re2nfa.cpp547
-rw-r--r--util/lexgen/re2nfa.h116
-rw-r--r--util/lexgen/test.lexgen9
-rw-r--r--util/lexgen/tests/testdata/backtrack1/input1
-rw-r--r--util/lexgen/tests/testdata/backtrack1/output1
-rw-r--r--util/lexgen/tests/testdata/backtrack1/rules.lexgen3
-rw-r--r--util/lexgen/tests/testdata/backtrack2/input1
-rw-r--r--util/lexgen/tests/testdata/backtrack2/output2
-rw-r--r--util/lexgen/tests/testdata/backtrack2/rules.lexgen4
-rw-r--r--util/lexgen/tests/testdata/casesensitivity/input1
-rw-r--r--util/lexgen/tests/testdata/casesensitivity/output14
-rw-r--r--util/lexgen/tests/testdata/casesensitivity/rules.lexgen7
-rw-r--r--util/lexgen/tests/testdata/comments/input1
-rw-r--r--util/lexgen/tests/testdata/comments/output2
-rw-r--r--util/lexgen/tests/testdata/comments/rules.lexgen2
-rw-r--r--util/lexgen/tests/testdata/dot/input1
-rw-r--r--util/lexgen/tests/testdata/dot/output2
-rw-r--r--util/lexgen/tests/testdata/dot/rules.lexgen3
-rw-r--r--util/lexgen/tests/testdata/negation/input1
-rw-r--r--util/lexgen/tests/testdata/negation/output2
-rw-r--r--util/lexgen/tests/testdata/negation/rules.lexgen3
-rw-r--r--util/lexgen/tests/testdata/quoteinset/input1
-rw-r--r--util/lexgen/tests/testdata/quoteinset/output1
-rw-r--r--util/lexgen/tests/testdata/quoteinset/rules.lexgen2
-rw-r--r--util/lexgen/tests/testdata/quotes/input1
-rw-r--r--util/lexgen/tests/testdata/quotes/output1
-rw-r--r--util/lexgen/tests/testdata/quotes/rules.lexgen2
-rw-r--r--util/lexgen/tests/testdata/simple/input1
-rw-r--r--util/lexgen/tests/testdata/simple/output2
-rw-r--r--util/lexgen/tests/testdata/simple/rules.lexgen3
-rw-r--r--util/lexgen/tests/testdata/subsets1/input1
-rw-r--r--util/lexgen/tests/testdata/subsets1/output2
-rw-r--r--util/lexgen/tests/testdata/subsets1/rules.lexgen3
-rw-r--r--util/lexgen/tests/testdata/subsets2/input1
-rw-r--r--util/lexgen/tests/testdata/subsets2/output3
-rw-r--r--util/lexgen/tests/testdata/subsets2/rules.lexgen4
-rw-r--r--util/lexgen/tests/tests.pro6
-rw-r--r--util/lexgen/tests/tst_lexgen.cpp285
-rw-r--r--util/lexgen/tokenizer.cpp237
-rw-r--r--util/local_database/README1
-rwxr-xr-xutil/local_database/cldr2qlocalexml.py459
-rw-r--r--util/local_database/enumdata.py428
-rw-r--r--util/local_database/formattags.txt23
-rw-r--r--util/local_database/locale.xml9217
-rwxr-xr-xutil/local_database/qlocalexml2cpp.py503
-rw-r--r--util/local_database/testlocales/localemodel.cpp462
-rw-r--r--util/local_database/testlocales/localemodel.h69
-rw-r--r--util/local_database/testlocales/localewidget.cpp89
-rw-r--r--util/local_database/testlocales/localewidget.h59
-rw-r--r--util/local_database/testlocales/main.cpp51
-rw-r--r--util/local_database/testlocales/testlocales.pro4
-rw-r--r--util/local_database/xpathlite.py107
-rw-r--r--util/normalize/README16
-rw-r--r--util/normalize/main.cpp197
-rw-r--r--util/normalize/normalize.pro9
-rw-r--r--util/plugintest/README3
-rw-r--r--util/plugintest/main.cpp66
-rw-r--r--util/plugintest/plugintest.pro4
-rw-r--r--util/qlalr/.gitignore1
-rw-r--r--util/qlalr/README1
-rw-r--r--util/qlalr/compress.cpp286
-rw-r--r--util/qlalr/compress.h60
-rw-r--r--util/qlalr/cppgenerator.cpp703
-rw-r--r--util/qlalr/cppgenerator.h99
-rw-r--r--util/qlalr/doc/qlalr.qdocconf65
-rw-r--r--util/qlalr/doc/src/classic.css97
-rw-r--r--util/qlalr/doc/src/images/qt-logo.pngbin0 -> 1422 bytes
-rw-r--r--util/qlalr/doc/src/images/trolltech-logo.pngbin0 -> 1512 bytes
-rw-r--r--util/qlalr/doc/src/qlalr.qdoc79
-rw-r--r--util/qlalr/dotgraph.cpp102
-rw-r--r--util/qlalr/dotgraph.h59
-rw-r--r--util/qlalr/examples/dummy-xml/dummy-xml.pro2
-rw-r--r--util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp83
-rw-r--r--util/qlalr/examples/dummy-xml/xml.g202
-rw-r--r--util/qlalr/examples/glsl/build.sh7
-rwxr-xr-xutil/qlalr/examples/glsl/glsl4
-rw-r--r--util/qlalr/examples/glsl/glsl-lex.l201
-rw-r--r--util/qlalr/examples/glsl/glsl.g621
-rw-r--r--util/qlalr/examples/glsl/glsl.pro4
-rw-r--r--util/qlalr/examples/lambda/COMPILE3
-rw-r--r--util/qlalr/examples/lambda/lambda.g41
-rw-r--r--util/qlalr/examples/lambda/lambda.pro3
-rw-r--r--util/qlalr/examples/lambda/main.cpp160
-rw-r--r--util/qlalr/examples/qparser/COMPILE3
-rw-r--r--util/qlalr/examples/qparser/calc.g93
-rw-r--r--util/qlalr/examples/qparser/calc.l20
-rw-r--r--util/qlalr/examples/qparser/qparser.cpp3
-rw-r--r--util/qlalr/examples/qparser/qparser.h111
-rw-r--r--util/qlalr/examples/qparser/qparser.pro4
-rw-r--r--util/qlalr/grammar.cpp123
-rw-r--r--util/qlalr/grammar_p.h119
-rw-r--r--util/qlalr/lalr.cpp783
-rw-r--r--util/qlalr/lalr.g803
-rw-r--r--util/qlalr/lalr.h502
-rw-r--r--util/qlalr/main.cpp185
-rw-r--r--util/qlalr/parsetable.cpp127
-rw-r--r--util/qlalr/parsetable.h59
-rw-r--r--util/qlalr/qlalr.pro21
-rw-r--r--util/qlalr/recognizer.cpp489
-rw-r--r--util/qlalr/recognizer.h111
-rw-r--r--util/qtscriptparser/make-parser.sh15
-rw-r--r--util/s60pixelmetrics/inc/pixel_metrics.h216
-rw-r--r--util/s60pixelmetrics/pixelmetricsmapper/PMMapper.hrh73
-rw-r--r--util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.cpp1045
-rw-r--r--util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.h198
-rw-r--r--util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.cpp376
-rw-r--r--util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.h228
-rw-r--r--util/s60pixelmetrics/src/pixel_metrics.cpp1223
-rwxr-xr-xutil/scripts/make_qfeatures_dot_h118
-rwxr-xr-xutil/scripts/unix_to_dos16
-rw-r--r--util/unicode/README1
-rw-r--r--util/unicode/codecs/big5/BIG514079
-rw-r--r--util/unicode/codecs/big5/big5.pro6
-rw-r--r--util/unicode/codecs/big5/big5.qrc6
-rw-r--r--util/unicode/codecs/big5/main.cpp158
-rw-r--r--util/unicode/data/ArabicShaping.txt338
-rw-r--r--util/unicode/data/BidiMirroring.txt582
-rw-r--r--util/unicode/data/Blocks.txt185
-rw-r--r--util/unicode/data/CaseFolding.txt1093
-rw-r--r--util/unicode/data/CompositionExclusions.txt197
-rw-r--r--util/unicode/data/DerivedAge.txt867
-rw-r--r--util/unicode/data/GraphemeBreakProperty.txt1039
-rw-r--r--util/unicode/data/LineBreak.txt18542
-rw-r--r--util/unicode/data/NormalizationCorrections.txt48
-rw-r--r--util/unicode/data/Scripts.txt1538
-rw-r--r--util/unicode/data/ScriptsCorrections.txt0
-rw-r--r--util/unicode/data/ScriptsInitial.txt0
-rw-r--r--util/unicode/data/SentenceBreakProperty.txt1664
-rw-r--r--util/unicode/data/SpecialCasing.txt264
-rw-r--r--util/unicode/data/UnicodeData.txt17720
-rw-r--r--util/unicode/data/WordBreakProperty.txt677
-rw-r--r--util/unicode/main.cpp2524
-rw-r--r--util/unicode/unicode.pro2
-rwxr-xr-xutil/unicode/writingSystems.sh19
-rw-r--r--util/unicode/x11/encodings.in71
-rwxr-xr-xutil/unicode/x11/makeencodings135
-rwxr-xr-xutil/webkit/mkdist-webkit314
-rw-r--r--util/xkbdatagen/main.cpp478
-rw-r--r--util/xkbdatagen/xkbdatagen.pro3
221 files changed, 100929 insertions, 0 deletions
diff --git a/util/fixnonlatin1/fixnonlatin1.pro b/util/fixnonlatin1/fixnonlatin1.pro
new file mode 100644
index 0000000000..bfc5e7d18d
--- /dev/null
+++ b/util/fixnonlatin1/fixnonlatin1.pro
@@ -0,0 +1,9 @@
+TEMPLATE = app
+TARGET +=
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += main.cpp
+
+QT = core
diff --git a/util/fixnonlatin1/main.cpp b/util/fixnonlatin1/main.cpp
new file mode 100644
index 0000000000..a089959c67
--- /dev/null
+++ b/util/fixnonlatin1/main.cpp
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore/QtCore>
+
+// Scans files for characters >127 and replaces them with the \nnn octal representation
+
+int main(int argc, char *argv[])
+{
+ if (argc <= 1)
+ qFatal("Usage: %s FILES", argc ? argv[0] : "fixnonlatin1");
+ for (int i = 1; i < argc; ++i) {
+
+ QString fileName = QString::fromLocal8Bit(argv[i]);
+ if ( fileName.endsWith(".gif")
+ || fileName.endsWith(".jpg")
+ || fileName.endsWith(".tif")
+ || fileName.endsWith(".tiff")
+ || fileName.endsWith(".png")
+ || fileName.endsWith(".mng")
+ || fileName.endsWith(".ico")
+ || fileName.endsWith(".zip")
+ || fileName.endsWith(".gz")
+ || fileName.endsWith(".qpf")
+ || fileName.endsWith(".ttf")
+ || fileName.endsWith(".pfb")
+ || fileName.endsWith(".exe")
+ || fileName.endsWith(".nib")
+ || fileName.endsWith(".o")
+ )
+ continue;
+
+ QFile file(fileName);
+ if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+ qFatal("Cannot open '%s': %s", argv[i], qPrintable(file.errorString()));
+
+ QByteArray ba = file.readAll();
+ bool mod = false;
+ for (int j = 0; j < ba.count(); ++j) {
+ uchar c = ba.at(j);
+ if (c > 127) {
+ ba[j] = '\\';
+ ba.insert(j + 1, QByteArray::number(c, 8).rightJustified(3, '0', true));
+ j += 3;
+ mod = true;
+ }
+ }
+ file.close();
+
+ if (!mod)
+ continue;
+
+ qWarning("found non-latin1 characters in '%s'", argv[i]);
+ if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ qWarning("Cannot open '%s' for writing: %s", argv[i], qPrintable(file.errorString()));
+ continue;
+ }
+ if (file.write(ba) < 0)
+ qFatal("Error while writing into '%s': %s", argv[i], qPrintable(file.errorString()));
+ file.close();
+ }
+
+ return 0;
+}
+
diff --git a/util/gencmap/Makefile b/util/gencmap/Makefile
new file mode 100644
index 0000000000..a338472984
--- /dev/null
+++ b/util/gencmap/Makefile
@@ -0,0 +1,46 @@
+#############################################################################
+# Qt Makefile - gencmap
+#############################################################################
+
+####### Directories
+
+BASEDIR = $(QTDIR)
+INCDIR = $(BASEDIR)/include
+LIBDIR = $(BASEDIR)/lib
+
+####### Compiler
+
+CFLAGS = -O2
+LFLAGS = -L$(LIBDIR)
+CC = gcc
+
+####### Files
+
+SOURCES = gencmap.cpp
+OBJECTS = gencmap.o
+TARGET = gencmap
+
+####### Implicit rules
+
+.SUFFIXES:
+.SUFFIXES: .cpp $(SUFFIXES)
+
+.cpp.o:
+ $(CC) -c $(CFLAGS) -I$(INCDIR) $<
+
+####### Build rules
+
+all: $(TARGET)
+
+$(TARGET): $(OBJECTS)
+ $(CC) $(OBJECTS) -o $(TARGET) $(LFLAGS)
+
+depend:
+ @makedepend -I$(INCDIR) $(SOURCES) 2> /dev/null
+
+clean:
+ -rm -f *.o *.bak *~ *% #*
+ -rm -f $(TARGET)
+
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/util/gencmap/gencmap.cpp b/util/gencmap/gencmap.cpp
new file mode 100644
index 0000000000..9d0d997ae5
--- /dev/null
+++ b/util/gencmap/gencmap.cpp
@@ -0,0 +1,344 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qcolor.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+
+
+#define APPLE_CMAP 1
+
+struct Col {
+ int r,g,b;
+};
+
+#if SPACE_SEARCH
+#define MAPSIZE 256
+#define ACCURACY 4 // Bits-per-channel
+#define SPACESIZE ((1<<ACCURACY)*(1<<ACCURACY)*(1<<ACCURACY))
+#define R(c) (((c>>(8-ACCURACY)*2)&((1<<ACCURACY)-1))<<ACCURACY)
+#define G(c) (((c>>(8-ACCURACY))&((1<<ACCURACY)-1))<<ACCURACY)
+#define B(c) (((c>>0)&((1<<ACCURACY)-1))<<ACCURACY)
+#define COL(c) (((c.r>>(8-ACCURACY))<<8)|((c.b>>(8-ACCURACY))<<4)|(c.g>>(8-ACCURACY)))
+#elif APPLE_CMAP
+#define SPACESIZE 216
+#define MAPSIZE 216
+#define R(c) ((apple_cmap[c]>>16)&0xff)
+#define G(c) ((apple_cmap[c]>>8)&0xff)
+#define B(c) ((apple_cmap[c]>>0)&0xff)
+#define COL(c) findapple(c)
+static int apple_cmap[216] = {
+0xffffff,
+0xffffcc,
+0xffff99,
+0xffff66,
+0xffff33,
+0xffff00,
+0xffccff,
+0xffcccc,
+0xffcc99,
+0xffcc66,
+0xffcc33,
+0xffcc00,
+0xff99ff,
+0xff99cc,
+0xff9999,
+0xff9966,
+0xff9933,
+0xff9900,
+0xff66ff,
+0xff66cc,
+0xff6699,
+0xff6666,
+0xff6633,
+0xff6600,
+0xff33ff,
+0xff33cc,
+0xff3399,
+0xff3366,
+0xff3333,
+0xff3300,
+0xff00ff,
+0xff00cc,
+0xff0099,
+0xff0066,
+0xff0033,
+0xff0000,
+0xccffff,
+0xccffcc,
+0xccff99,
+0xccff66,
+0xccff33,
+0xccff00,
+0xccccff,
+0xcccccc,
+0xcccc99,
+0xcccc66,
+0xcccc33,
+0xcccc00,
+0xcc99ff,
+0xcc99cc,
+0xcc9999,
+0xcc9966,
+0xcc9933,
+0xcc9900,
+0xcc66ff,
+0xcc66cc,
+0xcc6699,
+0xcc6666,
+0xcc6633,
+0xcc6600,
+0xcc33ff,
+0xcc33cc,
+0xcc3399,
+0xcc3366,
+0xcc3333,
+0xcc3300,
+0xcc00ff,
+0xcc00cc,
+0xcc0099,
+0xcc0066,
+0xcc0033,
+0xcc0000,
+0x99ffff,
+0x99ffcc,
+0x99ff99,
+0x99ff66,
+0x99ff33,
+0x99ff00,
+0x99ccff,
+0x99cccc,
+0x99cc99,
+0x99cc66,
+0x99cc33,
+0x99cc00,
+0x9999ff,
+0x9999cc,
+0x999999,
+0x999966,
+0x999933,
+0x999900,
+0x9966ff,
+0x9966cc,
+0x996699,
+0x996666,
+0x996633,
+0x996600,
+0x9933ff,
+0x9933cc,
+0x993399,
+0x993366,
+0x993333,
+0x993300,
+0x9900ff,
+0x9900cc,
+0x990099,
+0x990066,
+0x990033,
+0x990000,
+0x66ffff,
+0x66ffcc,
+0x66ff99,
+0x66ff66,
+0x66ff33,
+0x66ff00,
+0x66ccff,
+0x66cccc,
+0x66cc99,
+0x66cc66,
+0x66cc33,
+0x66cc00,
+0x6699ff,
+0x6699cc,
+0x669999,
+0x669966,
+0x669933,
+0x669900,
+0x6666ff,
+0x6666cc,
+0x666699,
+0x666666,
+0x666633,
+0x666600,
+0x6633ff,
+0x6633cc,
+0x663399,
+0x663366,
+0x663333,
+0x663300,
+0x6600ff,
+0x6600cc,
+0x660099,
+0x660066,
+0x660033,
+0x660000,
+0x33ffff,
+0x33ffcc,
+0x33ff99,
+0x33ff66,
+0x33ff33,
+0x33ff00,
+0x33ccff,
+0x33cccc,
+0x33cc99,
+0x33cc66,
+0x33cc33,
+0x33cc00,
+0x3399ff,
+0x3399cc,
+0x339999,
+0x339966,
+0x339933,
+0x339900,
+0x3366ff,
+0x3366cc,
+0x336699,
+0x336666,
+0x336633,
+0x336600,
+0x3333ff,
+0x3333cc,
+0x333399,
+0x333366,
+0x333333,
+0x333300,
+0x3300ff,
+0x3300cc,
+0x330099,
+0x330066,
+0x330033,
+0x330000,
+0x00ffff,
+0x00ffcc,
+0x00ff99,
+0x00ff66,
+0x00ff33,
+0x00ff00,
+0x00ccff,
+0x00cccc,
+0x00cc99,
+0x00cc66,
+0x00cc33,
+0x00cc00,
+0x0099ff,
+0x0099cc,
+0x009999,
+0x009966,
+0x009933,
+0x009900,
+0x0066ff,
+0x0066cc,
+0x006699,
+0x006666,
+0x006633,
+0x006600,
+0x0033ff,
+0x0033cc,
+0x003399,
+0x003366,
+0x003333,
+0x003300,
+0x0000ff,
+0x0000cc,
+0x000099,
+0x000066,
+0x000033,
+0x000000,
+};
+int findapple(Col c)
+{
+ for (int i=0; i<216; i++)
+ if (apple_cmap[i]==(c.r<<16)|(c.g<<8)|c.b) return i;
+ abort();
+}
+#endif
+
+#define SQ(x) ((x)*(x))
+#define D(c1,c2) (SQ(R(c1)-R(c2))+SQ(G(c1)-G(c2))+SQ(B(c1)-B(c2)))
+
+main()
+{
+ Col c[256] = {
+ { 0,0,0 },
+ { 255,255,255 },
+ { 255,0,0 }, { 0,255,0 }, { 0,0,255 },
+ { 255,255,0 }, { 0,255,255 }, { 255,0,255 },
+ #define PREALLOC 8
+ { 96,96,96 }, { 192,192,192 },
+ //#define PREALLOC 10
+ };
+ int done[SPACESIZE];
+ for (int a=0; a<SPACESIZE; a++) done[a]=0;
+ for (int a=0; a<PREALLOC; a++) done[COL(c[a])]=1;
+
+ for (int allocated=PREALLOC; allocated<MAPSIZE; allocated++) {
+ int mostdist;
+ int dist=0;
+ for (int a=0; a<SPACESIZE; a++) {
+ if (!done[a]) {
+ int closeness=INT_MAX;
+ for (int b=0; b<SPACESIZE; b++) {
+ if (done[b]) {
+ int d=D(a,b);
+ if (d < closeness) {
+ closeness=d;
+ }
+ }
+ }
+ if (closeness > dist) {
+ mostdist=a;
+ dist=closeness;
+ }
+ }
+ }
+ c[allocated].r=R(mostdist);
+ c[allocated].g=G(mostdist);
+ c[allocated].b=B(mostdist);
+ done[mostdist]=1;
+ fprintf(stderr,"Done %d of %d (%06x dist %d)\n",allocated+1,MAPSIZE,
+ qRgb(c[allocated].r, c[allocated].g, c[allocated].b), dist);
+ }
+
+ for (int i=0; i<256; i++) {
+ printf("0x%06x,%c", qRgb(c[i].r, c[i].g, c[i].b), i%4==3 ? '\n' : ' ');
+ }
+}
diff --git a/util/harfbuzz/update-harfbuzz b/util/harfbuzz/update-harfbuzz
new file mode 100755
index 0000000000..29891b6fe7
--- /dev/null
+++ b/util/harfbuzz/update-harfbuzz
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+set -e
+
+require_clean_work_tree() {
+ # test if working tree is dirty
+ git rev-parse --verify HEAD > /dev/null &&
+ git update-index --refresh &&
+ git diff-files --quiet &&
+ git diff-index --cached --quiet HEAD ||
+ die "Working tree is dirty"
+}
+
+branch=master
+
+if [ $# = 1 ]; then
+ repo=$1
+elif [ $# = 2 ]; then
+ repo=$1
+ branch=$2
+else
+ echo "usage: $0 <path to local harfbuzz repository> [branch]"
+ exit 1
+fi
+
+if [ ! -r $repo/.git ]; then
+ echo "The provided path $repo does not point to a git repository."
+ exit 2
+fi
+
+test -z "$(git rev-parse --show-cdup)" || {
+ exit=$?
+ echo >&2 "You need to run this command from the toplevel of the working tree."
+ exit $exit
+}
+
+require_clean_work_tree
+
+url=`git --git-dir=$repo/.git config remote.origin.url`
+
+git ls-files src/3rdparty/harfbuzz | git update-index --force-remove --stdin
+
+git fetch $repo $branch
+
+commit=`git rev-parse FETCH_HEAD`
+tree=`git cat-file commit FETCH_HEAD|grep "^tree" | awk '{print $2}'`
+
+git read-tree --prefix=src/3rdparty/harfbuzz $tree
+
+git checkout src/3rdparty/harfbuzz
+
+git status
+
+cat >commitlog.txt <<EOT
+Updated Harfbuzz from $url to $commit
+EOT
+
+echo
+echo "Wrote commitlog.txt. Use with"
+echo
+echo " git commit -e -F commitlog.txt"
+echo
+echo "to commit your changes"
diff --git a/util/install/archive/archive.pro b/util/install/archive/archive.pro
new file mode 100644
index 0000000000..e313a4a0e0
--- /dev/null
+++ b/util/install/archive/archive.pro
@@ -0,0 +1,9 @@
+TEMPLATE = lib
+CONFIG += staticlib
+CONFIG += qt x11
+CONFIG -= dll
+TARGET = arq
+
+SOURCES += qarchive.cpp ../keygen/keyinfo.cpp
+HEADERS += qarchive.h
+!zlib:unix:LIBS += -lz
diff --git a/util/install/archive/qarchive.cpp b/util/install/archive/qarchive.cpp
new file mode 100644
index 0000000000..dd51c6518a
--- /dev/null
+++ b/util/install/archive/qarchive.cpp
@@ -0,0 +1,471 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "qarchive.h"
+#include <qdatastream.h>
+#include <qfileinfo.h>
+#include <qdir.h>
+#include <qapplication.h>
+#include "../../../src/3rdparty/zlib/zlib.h"
+#include "../keygen/keyinfo.h"
+#ifdef Q_OS_UNIX
+# include <sys/stat.h>
+# include <unistd.h>
+# include <sys/types.h>
+# include <utime.h>
+#endif
+
+enum ChunkType {
+ ChunkDirectory = 0,
+ ChunkFile = 1,
+ ChunkSymlink = 2,
+ ChunkBeginHeader = 3,
+ ChunkEndHeader = 4
+};
+
+static bool createDir( const QString& fullPath )
+{
+ QStringList hierarchy = QStringList::split( QDir::separator(), fullPath );
+ QString pathComponent, tmpPath;
+ QDir dirTmp;
+#ifdef Q_OS_UNIX
+ dirTmp = "/";
+#endif
+
+ for( QStringList::Iterator it = hierarchy.begin(); it != hierarchy.end(); ++it ) {
+ pathComponent = *it + QDir::separator();
+ tmpPath += pathComponent;
+ if (!dirTmp.exists(tmpPath) && !dirTmp.mkdir(tmpPath))
+ return false;
+ }
+ return true;
+}
+
+QArchive::QArchive( const QString& archivePath )
+{
+ setPath( archivePath );
+
+ bufferSize = 512 * 1024;
+}
+
+QArchive::~QArchive()
+{
+}
+
+void QArchive::setPath( const QString& archivePath )
+{
+ QString fullName = archivePath;
+ if( fullName.right( 4 ) != ".arq" )
+ fullName += ".arq";
+ arcFile.setName( fullName );
+}
+
+bool QArchive::open( int mode )
+{
+ switch( mode ) {
+ case IO_ReadOnly:
+ // Fallthrough intentional
+ case IO_WriteOnly:
+ if( arcFile.open( mode ) )
+ return true;
+ break;
+ }
+ return false;
+}
+
+void QArchive::close()
+{
+ if( arcFile.isOpen() )
+ arcFile.close();
+}
+
+bool QArchive::writeFile( const QString& fileName, const QString& localPath )
+{
+ if( arcFile.isOpen() ) {
+ QDataStream outStream( &arcFile );
+ QFileInfo fi( fileName );
+
+ QFile inFile( fi.absFilePath() );
+ QByteArray inBuffer;
+ QByteArray outBuffer( bufferSize );
+ z_stream ztream;
+ bool continueCompressing;
+
+ if(symbolicLinks() && fi.isSymLink()) {
+ outStream << (int)ChunkSymlink;
+ outStream << fi.fileName().latin1();
+ outStream << fi.readLink().latin1();
+ } else if( inFile.open( IO_ReadOnly ) ) {
+ if( inBuffer.resize( fi.size() ) ) {
+ outStream << (int)ChunkFile;
+ outStream << fi.fileName().latin1();
+ outStream << fi.lastModified();
+ {
+ int perm = -1;
+#ifdef Q_OS_UNIX
+ struct stat st;
+ if(!::stat(fi.filePath().latin1(), &st))
+ perm = (int)st.st_mode;
+#endif
+ outStream << perm;
+ }
+ if( verbosityMode & Source )
+ emit operationFeedback( "Deflating " + fi.absFilePath() + "..." );
+ else if( verbosityMode & Destination )
+ emit operationFeedback( "Deflating " + localPath + "/" + fi.fileName() + "..." );
+ ztream.next_in = (unsigned char*)inBuffer.data();
+ ztream.avail_in = inBuffer.size();
+ ztream.total_in = 0;
+ ztream.next_out = (unsigned char*)outBuffer.data();
+ ztream.avail_out = outBuffer.size();
+ ztream.total_out = 0;
+ ztream.msg = NULL;
+ ztream.zalloc = (alloc_func)NULL;
+ ztream.zfree = (free_func)NULL;
+ ztream.opaque = (voidpf)NULL;
+ ztream.data_type = Z_BINARY;
+ deflateInit( &ztream, 9 );
+ if ( inBuffer.data() )
+ inFile.readBlock( inBuffer.data(), inBuffer.size() );
+
+ continueCompressing = true;
+ while( continueCompressing ) {
+ if(qApp)
+ qApp->processEvents();
+ continueCompressing = ( deflate( &ztream, Z_FINISH ) == Z_OK );
+ if( !ztream.avail_out ) {
+ if( !outBuffer.resize( outBuffer.size() + bufferSize ) )
+ qFatal( "Could not allocate compression buffer!" );
+ ztream.next_out = (unsigned char*)&outBuffer.data()[ ztream.total_out ];
+ ztream.avail_out = bufferSize;
+ }
+ }
+
+ emit operationFeedback( QString( "done. %1 => %2 (%3%)\n" )
+ .arg( ztream.total_in )
+ .arg( ztream.total_out )
+ .arg( int(
+ double( ztream.total_out ) / double( ztream.total_in ) * 100 ) ) );
+ deflateEnd( &ztream );
+ // Now write the compressed data to the output
+ outStream << ztream.total_out;
+ outStream.writeRawBytes( outBuffer.data(), ztream.total_out );
+ }
+ inFile.close();
+ return true;
+ } else {
+ return false;
+ }
+ }
+ return false;
+}
+
+bool QArchive::setDirectory( const QString& dirName )
+{
+ if( arcFile.isOpen() ) {
+ QString fullName = dirName;
+ QDataStream outStream( &arcFile );
+ if( fullName.right( 1 ) != "/" )
+ fullName += "/";
+ outStream << (int)ChunkDirectory;
+ outStream << fullName.latin1();
+ return true;
+ }
+ return false;
+}
+
+bool QArchive::writeHeader( const QArchiveHeader header )
+{
+ if( arcFile.isOpen() ) {
+ QDataStream outStream( &arcFile );
+ outStream << (int)ChunkBeginHeader;
+ outStream << header.mayorVersion();
+ outStream << header.minorVersion();
+ outStream << header.features();
+ outStream << header.description();
+ outStream << header.extraData;
+ outStream << (int)ChunkEndHeader;
+ return true;
+ }
+ return false;
+}
+
+bool QArchive::writeDir( const QString &dirName1, bool includeLastComponent, const QString &localPath1 )
+{
+ if( arcFile.isOpen() ) {
+ QString localPath = localPath1, dirName = dirName1;
+ if(localPath.right(1) == "/")
+ localPath.truncate(localPath.length()-1);
+ if(dirName.right(1) == "/")
+ dirName.truncate(dirName.length()-1);
+
+ QFileInfo fi( dirName );
+
+ if( includeLastComponent )
+ setDirectory( fi.fileName() );
+ QDir dir( dirName );
+ const QFileInfoList* dirEntries = dir.entryInfoList();
+ QFileInfoListIterator dirIter( *dirEntries );
+ QDataStream outStream( &arcFile );
+ QFileInfo* pFi;
+
+ dirIter.toLast();
+ while( ( pFi = dirIter.current() ) ) {
+ if( pFi->fileName() != "." && pFi->fileName() != ".." ) {
+ if( pFi->isDir() )
+ writeDir( pFi->absFilePath(), true, localPath + "/" +
+ pFi->fileName() ); // Subdirs should always get its name in the archive.
+ else
+ writeFile( pFi->absFilePath(), localPath );
+ }
+ --dirIter;
+ }
+ setDirectory( ".." );
+ return true;
+ }
+ return false;
+}
+
+bool QArchive::writeFileList( const QStringList fileList )
+{
+ for( QStringList::ConstIterator it = fileList.begin(); it != fileList.end(); ++it ) {
+ if( !writeFile( (*it) ) )
+ return false;
+ }
+ return true;
+}
+
+bool QArchive::writeDirList( const QStringList dirList, bool includeLastComponent )
+{
+ for( QStringList::ConstIterator it = dirList.begin(); it != dirList.end(); ++it ) {
+ QString lastComponent = (*it).mid( (*it).findRev( "/" ) + 1 );
+ if( !writeDir( (*it), includeLastComponent, lastComponent ) )
+ return false;
+ }
+ return true;
+}
+
+void QArchive::setVerbosity( int verbosity )
+{
+ verbosityMode = verbosity;
+}
+
+QArchiveHeader* QArchive::readArchiveHeader()
+{
+ QDataStream inStream( &arcFile );
+ return readArchiveHeader( &inStream );
+}
+
+/*
+ Reads the archive header and returns it on success. If an error occurs, it
+ returns 0. The caller has to delete the object.
+*/
+QArchiveHeader* QArchive::readArchiveHeader( QDataStream *inStream )
+{
+ int chunktype;
+ QArchiveHeader *header = new QArchiveHeader;
+
+ *inStream >> chunktype;
+ if( chunktype == ChunkBeginHeader ) {
+ *inStream >> header->_mayorVersion;
+ *inStream >> header->_minorVersion;
+ if ( header->mayorVersion()!=1 || header->minorVersion()!=0 ) {
+ emit operationFeedback( "Incompatible package version" );
+ delete header;
+ return 0;
+ }
+ *inStream >> header->_features;
+ *inStream >> header->_description;
+ *inStream >> header->extraData;
+ *inStream >> chunktype;
+ if ( chunktype != ChunkEndHeader ) {
+ emit operationFeedback( "Invalid package header" );
+ delete header;
+ return 0;
+ }
+ } else {
+ emit operationFeedback( "No package header found." );
+ delete header;
+ return 0;
+ }
+ return header;
+}
+
+bool QArchive::readArchive( const QString &outpath, const QString &key )
+{
+ QDataStream inStream( &arcFile );
+ return readArchive( &inStream, outpath, key );
+}
+
+bool QArchive::readArchive( QDataStream *inStream, const QString &outpath, const QString &key )
+{
+ QDataStream outStream;
+ QFile outFile;
+ QDir outDir;
+ QByteArray inBuffer;
+ QByteArray outBuffer( bufferSize );
+ z_stream ztream;
+ bool continueDeCompressing;
+ QString entryName, dirName, symName;
+ int entryLength, chunktype;
+
+ //get the key
+ QArchiveHeader *header = readArchiveHeader( inStream );
+ if ( header == 0 )
+ return false;
+ uint infeatures = featuresForKey( key );
+ if( (header->features() & infeatures) != header->features()) {
+ emit operationFeedback( "Invalid key" );
+ return false;
+ }
+
+ // Set up the initial directory.
+ // If the dir does not exist, try to create it
+ dirName = QDir::toNativeSeparators( outpath );
+ outDir.setPath( dirName );
+ if( !outDir.exists( dirName ) && !createDir( dirName ) )
+ return false;
+ outDir.cd( dirName );
+
+ while( !inStream->atEnd() ) {
+ //get our type
+ *inStream >> chunktype;
+ if(chunktype == ChunkDirectory) {
+ *inStream >> entryLength;
+ inBuffer.resize( entryLength );
+ inStream->readRawBytes( inBuffer.data(), entryLength );
+ entryName = inBuffer.data();
+
+ if( verbosityMode & Source )
+ emit operationFeedback( "Directory " + entryName + "... " );
+ if( entryName == "../" ) {
+ outDir.cdUp();
+ } else {
+ dirName = QDir::toNativeSeparators( outDir.absPath() +
+ QString( "/" ) + entryName.left( entryName.length() - 1 ) );
+ if( verbosityMode & Destination )
+ emit operationFeedback( "Directory " + dirName + "... " );
+
+ if( !outDir.exists( dirName ) && !createDir( dirName ) ) {
+ emit operationFeedback( "Cannot create directory: " + dirName );
+ return false;
+ }
+ outDir.cd( dirName );
+ }
+ } else if(chunktype == ChunkFile) {
+ *inStream >> entryLength;
+ inBuffer.resize( entryLength );
+ inStream->readRawBytes( inBuffer.data(), entryLength );
+ entryName = inBuffer.data();
+
+ int filePerm;
+ QDateTime timeStamp;
+ QString fileName = QDir::toNativeSeparators( outDir.absPath() + QString( "/" ) + entryName );
+ outFile.setName( fileName );
+ if( outFile.open( IO_WriteOnly ) ) {
+ *inStream >> timeStamp; // Get timestamp from the archive
+ *inStream >> filePerm;
+ outStream.setDevice( &outFile );
+ *inStream >> entryLength;
+ if( verbosityMode & Source )
+ emit operationFeedback( "Expanding " + entryName + "..." );
+ else if( verbosityMode & Destination )
+ emit operationFeedback( "Expanding " + fileName + "..." );
+ inBuffer.resize( entryLength );
+ inStream->readRawBytes( inBuffer.data(), entryLength );
+ ztream.next_in = (unsigned char*)inBuffer.data();
+ ztream.avail_in = entryLength;
+ ztream.total_in = 0;
+ ztream.msg = NULL;
+ ztream.zalloc = (alloc_func)0;
+ ztream.zfree = (free_func)0;
+ ztream.opaque = (voidpf)0;
+ ztream.data_type = Z_BINARY;
+ inflateInit( &ztream );
+ continueDeCompressing = true;
+ while( continueDeCompressing ) {
+ ztream.next_out = (unsigned char*)outBuffer.data();
+ ztream.avail_out = outBuffer.size();
+ ztream.total_out = 0;
+ continueDeCompressing = ( inflate( &ztream, Z_NO_FLUSH ) == Z_OK );
+ outStream.writeRawBytes( outBuffer.data(), ztream.total_out );
+ }
+ inflateEnd( &ztream );
+ outFile.close();
+#ifdef Q_OS_UNIX
+ QDateTime t; t.setTime_t(0); //epoch
+ struct utimbuf tb;
+ tb.actime = tb.modtime = t.secsTo(timeStamp);
+ utime(fileName.local8Bit(), &tb);
+ if(filePerm != -1)
+ chmod(fileName.local8Bit(), (mode_t)filePerm);
+#endif
+ } else {
+ emit operationFeedback( "Cannot open: " + fileName );
+ return false;
+ }
+ } else if(chunktype == ChunkSymlink) {
+ *inStream >> entryLength;
+ inBuffer.resize( entryLength );
+ inStream->readRawBytes( inBuffer.data(), entryLength );
+ entryName = inBuffer.data();
+ QString fileName = QDir::toNativeSeparators( outDir.absPath() + QString( "/" ) + entryName );
+
+ *inStream >> entryLength;
+ inBuffer.resize( entryLength );
+ inStream->readRawBytes( inBuffer.data(), entryLength );
+ symName = inBuffer.data();
+ if( verbosityMode & Source )
+ emit operationFeedback( "Linking " + symName + "... " );
+ else if( verbosityMode & Destination )
+ emit operationFeedback( "Linking " + fileName + "... " );
+#ifdef Q_OS_UNIX
+ symlink( symName.local8Bit(), fileName.local8Bit() );
+#endif
+ } else {
+ if( verbosityMode & Source )
+ emit operationFeedback( QString("Unknown chunk: %d") .arg(chunktype) );
+ }
+ if( verbosityMode & Progress )
+ emit operationFeedback( inStream->device()->at() );
+ }
+ return true;
+}
+
diff --git a/util/install/archive/qarchive.h b/util/install/archive/qarchive.h
new file mode 100644
index 0000000000..351a48b4c0
--- /dev/null
+++ b/util/install/archive/qarchive.h
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef QARCHIVE_H
+#define QARCHIVE_H
+
+#include <qstring.h>
+#include <qfile.h>
+#include <qstringlist.h>
+#include <qobject.h>
+
+class QArchiveHeader
+{
+public:
+ QArchiveHeader( uint feat, const QString& desc=QString(), uchar mayorVer = 1, uchar minorVer = 0 )
+ : _features(feat), _description(desc), _mayorVersion(mayorVer), _minorVersion(minorVer)
+ {}
+
+ uint features() const
+ { return _features; }
+
+ QString description() const
+ { return _description; }
+
+ uchar mayorVersion() const
+ { return _mayorVersion; }
+
+ uchar minorVersion() const
+ { return _minorVersion; }
+
+ void addExtraData( const QString& key, const QString& value )
+ { extraData.insert( key, value ); }
+
+ QString findExtraData( const QString& key ) const
+ { return extraData[key]; }
+
+private:
+ QArchiveHeader()
+ {}
+
+ uint _features;
+ QString _description;
+ uchar _mayorVersion;
+ uchar _minorVersion;
+ QMap<QString,QString> extraData;
+
+ friend class QArchive;
+};
+
+class QArchive : public QObject
+{
+ Q_OBJECT
+public:
+ QArchive( const QString& archivePath = QString() );
+ ~QArchive();
+
+ void setPath( const QString& archivePath );
+ void setVerbosity( int verbosity );
+
+ bool symbolicLinks() const { return doSyms; }
+ void setSymbolicLinks(bool b) { doSyms = b; }
+
+ bool open( int mode );
+ void close();
+ bool isOpen() { return arcFile.isOpen(); }
+
+ bool writeHeader( const QArchiveHeader header );
+ bool writeFile( const QString& fileName, const QString& localPath = QString() );
+ bool writeFileList( const QStringList fileList );
+ bool writeDir( const QString& dirName, bool includeLastComponent = false,
+ const QString& localPath = QString() );
+ bool writeDirList( const QStringList dirList, bool includeLastComponent = true );
+
+ QArchiveHeader* readArchiveHeader();
+ QArchiveHeader* readArchiveHeader( QDataStream *inStream );
+
+ bool readArchive( const QString &outpath, const QString &key = QString() );
+ bool readArchive( QDataStream *inStream, const QString &outpath, const QString &key = QString() );
+private:
+ QFile arcFile;
+
+ int bufferSize;
+ int verbosityMode;
+ uint doSyms : 1;
+ bool setDirectory( const QString& dirName );
+signals:
+ void operationFeedback( const QString& );
+ void operationFeedback( int );
+
+public:
+ enum {
+ NoFeedback = 0x00,
+ OnlyNames = 0x01,
+ Verbose = 0x02,
+ Source = 0x10,
+ Destination = 0x20,
+ Progress = 0x40
+ };
+};
+
+#endif
diff --git a/util/install/configure_installer.cache b/util/install/configure_installer.cache
new file mode 100644
index 0000000000..9427b74d23
--- /dev/null
+++ b/util/install/configure_installer.cache
@@ -0,0 +1,30 @@
+-disable-table
+-disable-iconview
+-disable-workspace
+-disable-xml
+-disable-network
+-disable-canvas
+-disable-opengl
+-disable-sql
+-release
+-static
+-lean
+-no-dsp
+-no-thread
+-no-accessibility
+-qt-style-windowsxp
+-no-style-motif
+-no-style-cde
+-no-style-sgi
+-no-style-motifplus
+-no-style-platinum
+-no-big-codecs
+-no-jpeg
+-no-png
+-spec win32-msvc
+-saveconfig installer
+-D QT_NO_COLORNAMES
+-D QT_NO_BEZIER
+-D QT_NO_EFFECTS
+-D QT_NO_DIRECTPAINTER
+-D QT_NO_SVG
diff --git a/util/install/install.pro b/util/install/install.pro
new file mode 100644
index 0000000000..4106453964
--- /dev/null
+++ b/util/install/install.pro
@@ -0,0 +1,9 @@
+TEMPLATE = subdirs
+CONFIG += ordered
+
+SUBDIRS += archive \
+ package \
+ keygen
+
+win32:SUBDIRS += win
+mac:SUBDIRS += mac
diff --git a/util/install/keygen/keygen.pro b/util/install/keygen/keygen.pro
new file mode 100644
index 0000000000..59daf75105
--- /dev/null
+++ b/util/install/keygen/keygen.pro
@@ -0,0 +1,13 @@
+CONFIG += qt console
+SOURCES += keyinfo.cpp
+keychk {
+ TEMPLATE = lib
+ TARGET = keychk
+ DESTDIR = ../../../lib/
+ CONFIG -= shared dll
+ CONFIG += staticlib
+} else {
+ TEMPLATE = app
+ TARGET = keygen
+ SOURCES += main.cpp
+} \ No newline at end of file
diff --git a/util/install/keygen/keyinfo.cpp b/util/install/keygen/keyinfo.cpp
new file mode 100644
index 0000000000..9ad540478f
--- /dev/null
+++ b/util/install/keygen/keyinfo.cpp
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qregexp.h>
+
+#include "keyinfo.h"
+
+// Magic values
+enum {
+ ProductMagic = 0xB292,
+ PlatformMagic = 0x5C7E,
+ LicenseSchemaMagic = 0xE3B,
+ LicenseIDMagic = 0xCE57,
+ FeatureMagic = 0x4D5
+};
+
+static const char Xalphabet[] = "WX9MUEC7AJH3KS6DB4YFG2L5PQRT8VNZ";
+static const int XAlphabetSize = sizeof(Xalphabet) - 1;
+
+static QString encodeBaseX(uint k)
+{
+ QString str;
+ do {
+ str += QChar(Xalphabet[ k % XAlphabetSize ]);
+ k /= XAlphabetSize;
+ } while (k > 0u);
+ return str;
+}
+
+static uint decodeBaseX(const QString &str)
+{
+ uint k = 0;
+ int i = str.length();
+ while (i > 0) {
+ i--;
+ const char *p = strchr(Xalphabet, str[i].unicode());
+ if (p == 0) {
+ return 0;
+ } else {
+ k = (k * XAlphabetSize) + (p - Xalphabet);
+ }
+ }
+ return k;
+}
+
+static const QDate StartDate(2001, 1, 1);
+static const uint MaxDays = 4000;
+
+static QString encodedExpiryDate(const QDate &date)
+{
+ uint days = StartDate.daysTo(date);
+ if (days >= MaxDays)
+ days = MaxDays - 1;
+ uint x = (days << 7) ^ days;
+ return encodeBaseX(x ^ 0x0000beef);
+}
+
+static QDate decodedExpiryDate(const QString &encodedDate)
+{
+ QDate date;
+ uint y = decodeBaseX(encodedDate);
+ uint x = y ^ 0x0000beef;
+ uint days = ( (x >> 7) ^ x ) >> 7;
+ if (days >= MaxDays)
+ return QDate();
+ date = StartDate.addDays( days );
+ if (encodedExpiryDate(date) != encodedDate)
+ return QDate();
+ return date;
+}
+
+bool decodeLicenseKey(const QString &licenseKey,
+ uint *products,
+ uint *platforms,
+ uint *licenseSchema,
+ uint *licenseFeatures,
+ uint *licenseID,
+ QDate *expiryDate)
+{
+ QStringList licenseParts;
+ int dash = -1;
+ do {
+ int start = dash + 1;
+ dash = licenseKey.indexOf('-', start);
+ licenseParts.append(licenseKey.mid(start, dash - start));
+ } while (dash != -1);
+
+ // license keys have 7 fields
+ if (licenseParts.size() != 7) {
+ // invalid key
+ return false;
+ }
+ QString productPart = licenseParts.at(0);
+ QString platformPart = licenseParts.at(1);
+ QString licenseSchemaPart = licenseParts.at(2);
+ QString licenseFeaturesPart = licenseParts.at(3);
+ QString licenseIDPart = licenseParts.at(4);
+ QString expiryDatePart = licenseParts.at(5);
+ QString checksumPart = licenseParts.at(6);
+ QString keyPart = productPart
+ + '-' + platformPart
+ + '-' + licenseSchemaPart
+ + '-' + licenseFeaturesPart
+ + '-' + licenseIDPart
+ + '-' + expiryDatePart;
+
+ // verify the crc
+ QByteArray ba = keyPart.toLatin1();
+ int crc = qChecksum(ba.constData(), ba.size());
+ QString checksumVerification = QString("%1%2")
+ .arg((crc & 0xff),2,16,QChar('0'))
+ .arg((crc >> 8 & 0xff),2,16,QChar('0'))
+ .toUpper();
+ if (checksumPart != checksumVerification) {
+ // invalid checksum
+ return false;
+ }
+
+ *products = decodeBaseX(productPart) ^ ProductMagic;
+ *platforms = decodeBaseX(platformPart) ^ PlatformMagic;
+ *licenseSchema = decodeBaseX(licenseSchemaPart) ^ LicenseSchemaMagic;
+ *licenseFeatures = decodeBaseX(licenseFeaturesPart) ^ FeatureMagic;
+ *licenseID = decodeBaseX(licenseIDPart) ^ LicenseIDMagic;
+ *expiryDate = decodedExpiryDate(expiryDatePart);
+ return true;
+}
diff --git a/util/install/keygen/keyinfo.h b/util/install/keygen/keyinfo.h
new file mode 100644
index 0000000000..9b3687ad9e
--- /dev/null
+++ b/util/install/keygen/keyinfo.h
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef KEYINFO_H
+#define KEYINFO_H
+
+// Products
+enum {
+ // the first 10 bits are reserved for Qt editions
+ QtUniversal = 0x00000001,
+ QtDesktop = 0x00000002,
+ QtDesktopLight = 0x00000004,
+ QtConsole = 0x00000008,
+ QtDesignerOnly = 0x00000010,
+ QtReserved1 = 0x00000020,
+ QtReserved2 = 0x00000040,
+ QtReserved3 = 0x00000080,
+ QtReserved4 = 0x00000100,
+ QtReserved5 = 0x00000200,
+ QtProductMask = 0x000003ff,
+
+ // the next 10 bits are reserved for Qtopia editions
+ QtopiaPDA = 0x00000400,
+ QtopiaPhone = 0x00000800,
+ QtopiaRefboard = 0x00001000,
+ QtopiaReserved1 = 0x00002000,
+ QtopiaReserved2 = 0x00004000,
+ QtopiaReserved3 = 0x00008000,
+ QtopiaReserved4 = 0x00010000,
+ QtopiaReserved5 = 0x00020000,
+ QtopiaReserved6 = 0x00040000,
+ QtopiaReserved7 = 0x00080000,
+
+ // other products get the upper 12 bits
+ Teambuilder = 0x00100000,
+ Solutions = 0x00200000,
+ QSA = 0x00400000,
+ OtherReserved1 = 0x00800000,
+ OtherReserved2 = 0x01000000,
+ OtherReserved3 = 0x02000000,
+ OtherReserved4 = 0x04000000,
+ OtherReserved5 = 0x08000000,
+ OtherReserved6 = 0x10000000,
+ OtherReserved7 = 0x20000000,
+ OtherReserved8 = 0x40000000,
+ OtherReserved9 = 0x80000000,
+};
+
+// Platforms
+enum {
+ PlatformX11 = 0x01,
+ PlatformEmbedded = 0x02,
+ PlatformWindows = 0x04,
+ PlatformMac = 0x08
+};
+
+// LicenseSchema
+enum {
+ SupportedEvaluation = 0x01,
+ UnsupportedEvaluation = 0x02,
+ FullSourceEvaluation = 0x04,
+ FullCommercial = 0x08
+};
+
+// LicenseFeatures
+enum {
+ USCustomer = 0x01
+};
+
+#include <qdatetime.h>
+#include <qstring.h>
+
+/*
+ Decodes the \a licenseKey. This function returns true if 1) decoding
+ was successful and 2) the checksum matches, otherwise it returns false.
+*/
+bool decodeLicenseKey(const QString &licenseKey,
+ uint *products,
+ uint *platforms,
+ uint *licenseSchema,
+ uint *licenseFeatures,
+ uint *licenseID,
+ QDate *expiryDate);
+
+#endif
diff --git a/util/install/keygen/main.cpp b/util/install/keygen/main.cpp
new file mode 100644
index 0000000000..b6eee4192b
--- /dev/null
+++ b/util/install/keygen/main.cpp
@@ -0,0 +1,250 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qfile.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "keyinfo.h"
+
+static void printNewKey( uint features, const QDate& expiryDate )
+{
+ QFile in;
+ QFile out;
+ QString fn;
+ char block[10];
+
+ fn.sprintf( "next.%.2x", features );
+ in.setFileName( fn );
+ if ( !in.open(QFile::ReadOnly) )
+ return;
+ int ent = QString( in.readAll() ).toInt();
+ in.close();
+
+ fn.sprintf( "table.%.2x", features );
+ in.setFileName( fn );
+ if ( !in.open(QFile::ReadOnly) )
+ return;
+ in.seek( ent * 10 );
+ in.read( block, 9 );
+ block[9] = '\0';
+ in.close();
+
+ ent++;
+ if ( ent == (1 << NumRandomBits) )
+ ent = 1; // skip first entry
+
+ fn.sprintf( "next.%.2x", features );
+ out.setFileName( fn );
+ if ( !out.open(QFile::WriteOnly) )
+ return;
+ QString s = QString::number( ent ) + QChar( '\n' );
+ out.write( s.toLocal8Bit(), s.length() );
+ out.close();
+
+ if ( strlen(block) == 9 && block[4] == '-' )
+ printf( "%s%s\n", block, qPrintable(encodedExpiryDate(expiryDate)) );
+}
+
+static QString textForFeatures( uint features )
+{
+ QString text;
+
+ if ( (features & Feature_US) != 0 )
+ text += QString( " -us" );
+ if ( (features & Feature_Enterprise) != 0 )
+ text += QString( " -enterprise" );
+ if ( (features & Feature_Unix) != 0 )
+ text += QString( " -unix" );
+ if ( (features & Feature_Windows) != 0 )
+ text += QString( " -windows" );
+ if ( (features & Feature_Mac) != 0 )
+ text += QString( " -mac" );
+ if ( (features & Feature_Embedded) != 0 )
+ text += QString( " -embedded" );
+ if ( (features & Feature_Extra1) != 0 )
+ text += QString( " -extra1" );
+ if ( (features & Feature_Extra2) != 0 )
+ text += QString( " -extra2" );
+
+ text = text.trimmed();
+ if ( text.isEmpty() )
+ text = QString( "invalid key" );
+ return text;
+}
+
+static QString textForDate( const QDate& date )
+{
+ if ( date.isValid() ) {
+ return date.toString( Qt::ISODate );
+ } else {
+ return QString( "invalid date" );
+ }
+}
+
+static void reset()
+{
+ for ( uint features = 0; features < (1 << NumFeatures); features++ ) {
+ printf( "Resetting 'table.%.2x' and 'next.%.2x' (%s)\n", features,
+ features, qPrintable(textForFeatures(features)) );
+
+ QFile out;
+ QString fn;
+
+ fn.sprintf( "table.%.2x", features );
+ out.setFileName( fn );
+ if ( !out.open(QFile::WriteOnly) ) {
+ fprintf( stderr, "Cannot open '%s' for writing\n", qPrintable(fn) );
+ exit( EXIT_FAILURE );
+ }
+
+ for ( uint bits = 0; bits < (1 << NumRandomBits); bits++ ) {
+ QString k = keyForFeatures( features, bits ) + QChar( '\n' );
+ out.write( k.toLatin1(), k.length() );
+
+ /*
+ We check that the generated keys give access to the
+ correct feature sets. This accounts for most of the
+ processing time of the function.
+ */
+#if 1
+ if ( featuresForKey(k) != features ) {
+ fprintf( stderr, "Internal error in featuresForKey(\"%s\")\n",
+ qPrintable(k.trimmed()) );
+ exit( EXIT_FAILURE );
+ }
+ if ( (features & ~(Feature_US | Feature_Enterprise |
+ Feature_Unix)) == 0 ) {
+ if ( featuresForKeyOnUnix(k) != features ) {
+ fprintf( stderr,
+ "Internal error in featuresForKeyOnUnix(\"%s\")\n",
+ qPrintable(k.trimmed()) );
+ exit( EXIT_FAILURE );
+ }
+ }
+#endif
+ }
+ out.close();
+
+ fn.sprintf( "next.%.2x", features );
+ out.setFileName( fn );
+ if ( !out.open(QFile::WriteOnly) ) {
+ fprintf( stderr, "Cannot open '%s' for writing\n", qPrintable(fn) );
+ exit( EXIT_FAILURE );
+ }
+ out.write( "1\n", 2 ); // skip first key
+ out.close();
+ }
+}
+
+int main( int argc, char **argv )
+{
+ if ( argc == 1 || (strcmp(argv[1], "check") != 0 &&
+ strcmp(argv[1], "new") != 0 &&
+ strcmp(argv[1], "reset") != 0) ) {
+ fprintf( stderr, "Usage:\n"
+ " keygen check <key>\n"
+ " keygen new YYYY-MM-DD [-us] [-enterprise] [-unix]\n"
+ " [-windows] [-mac] [-embedded] [-extra1] [-extra2]\n"
+ " keygen reset\n" );
+ exit( EXIT_FAILURE );
+ }
+
+ if ( strcmp(argv[1], "check") == 0 ) {
+ if ( argc != 3 ) {
+ fprintf( stderr, "Usage:\n"
+ " mkcode check <key>\n" );
+ exit( EXIT_FAILURE );
+ }
+
+ QString key( argv[2] );
+
+ printf("Unix check: %s\n",
+ qPrintable(textForFeatures(featuresForKeyOnUnix(QString(argv[2])))));
+ printf("Full check: %s\n",
+ qPrintable(textForFeatures(featuresForKey(QString(argv[2])))));
+ if ( featuresForKey(QString(argv[2])) != 0 )
+ printf("Expiry date: %s\n",
+ qPrintable(textForDate(decodedExpiryDate(key.mid(9)))));
+ } else if ( strcmp(argv[1], "new") == 0 ) {
+ uint features = 0;
+
+ if ( argc < 3 ) {
+ fprintf( stderr, "Usage:\n"
+ " mkcode new YYYY-MM-DD [features]\n" );
+ exit( EXIT_FAILURE );
+ }
+
+ QDate expiryDate = QDate::fromString( QString(argv[2]), Qt::ISODate );
+ if ( !expiryDate.isValid() ) {
+ fprintf( stderr, "Date '%s' not in YYYY-MM-DD format\n", argv[2] );
+ exit( EXIT_FAILURE );
+ }
+
+ for ( int i = 3; i < argc; i++ ) {
+ if ( strcmp(argv[i], "-us") == 0 ) {
+ features |= Feature_US;
+ } else if ( strcmp(argv[i], "-enterprise") == 0 ) {
+ features |= Feature_Enterprise;
+ } else if ( strcmp(argv[i], "-unix") == 0 ) {
+ features |= Feature_Unix;
+ } else if ( strcmp(argv[i], "-windows") == 0 ) {
+ features |= Feature_Windows;
+ } else if ( strcmp(argv[i], "-mac") == 0 ) {
+ features |= Feature_Mac;
+ } else if ( strcmp(argv[i], "-embedded") == 0 ) {
+ features |= Feature_Embedded;
+ } else if ( strcmp(argv[i], "-extra1") == 0 ) {
+ features |= Feature_Extra1;
+ } else if ( strcmp(argv[i], "-extra2") == 0 ) {
+ features |= Feature_Extra2;
+ } else {
+ fprintf( stderr, "Unknown flag '%s'\n", argv[i] );
+ exit( EXIT_FAILURE );
+ }
+ }
+ printNewKey( features, expiryDate );
+ } else {
+ reset();
+ }
+ return 0;
+}
diff --git a/util/install/mac/licensedlg.ui b/util/install/mac/licensedlg.ui
new file mode 100644
index 0000000000..a20bd44b2b
--- /dev/null
+++ b/util/install/mac/licensedlg.ui
@@ -0,0 +1,134 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>LicenseDialog</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>LicenseDialog</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>582</width>
+ <height>531</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="caption">
+ <string>License Agreement</string>
+ </property>
+ <property name="sizeGripEnabled">
+ <bool>true</bool>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QTextView">
+ <property name="name">
+ <cstring>licenseText</cstring>
+ </property>
+ <property name="text">
+ <string>License text goes here</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer>
+ <property name="name" stdset="0">
+ <cstring>Horizontal Spacing2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonReject</cstring>
+ </property>
+ <property name="text">
+ <string>Reject</string>
+ </property>
+ <property name="accel">
+ <number>0</number>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonAccept</cstring>
+ </property>
+ <property name="text">
+ <string>Accept</string>
+ </property>
+ <property name="accel">
+ <number>0</number>
+ </property>
+ <property name="autoDefault">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>buttonReject</sender>
+ <signal>pressed()</signal>
+ <receiver>LicenseDialog</receiver>
+ <slot>reject()</slot>
+ </connection>
+ <connection>
+ <sender>buttonAccept</sender>
+ <signal>clicked()</signal>
+ <receiver>LicenseDialog</receiver>
+ <slot>reject()</slot>
+ </connection>
+ <connection>
+ <sender>buttonAccept</sender>
+ <signal>pressed()</signal>
+ <receiver>LicenseDialog</receiver>
+ <slot>accept()</slot>
+ </connection>
+</connections>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/mac/licensedlgimpl.cpp b/util/install/mac/licensedlgimpl.cpp
new file mode 100644
index 0000000000..ed2998a62e
--- /dev/null
+++ b/util/install/mac/licensedlgimpl.cpp
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "licensedlgimpl.h"
+#include <qfile.h>
+#include <qtextview.h>
+
+LicenseDialogImpl::LicenseDialogImpl( QWidget *parent )
+ : LicenseDialog( parent )
+{
+}
+
+bool LicenseDialogImpl::showLicense( bool licenseUs )
+{
+ QFile f;
+ QString path = "qt-mac-commercial-3.0.0.app/Contents/Qt/LICENSE";
+ if (licenseUs)
+ path.append( "-US" );
+ f.setName( path );
+ if ( !f.open( IO_ReadOnly ) )
+ return false;
+
+ QTextStream ts( &f );
+ licenseText->setText( ts.read() );
+ return true;
+}
+
+
diff --git a/util/install/mac/licensedlgimpl.h b/util/install/mac/licensedlgimpl.h
new file mode 100644
index 0000000000..90f8809271
--- /dev/null
+++ b/util/install/mac/licensedlgimpl.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef __LICENSEDLGIMPL_H__
+#define __LICENSEDLGIMPL_H__
+
+#include "licensedlg.h"
+
+class LicenseDialogImpl : public LicenseDialog
+{
+ Q_OBJECT
+
+public:
+ LicenseDialogImpl( QWidget* parent = 0 );
+ bool showLicense( bool licenseUs );
+};
+
+#endif /* __LICENSEDLGIMPL_H__ */
diff --git a/util/install/mac/mac.pro b/util/install/mac/mac.pro
new file mode 100644
index 0000000000..ad13bea4ad
--- /dev/null
+++ b/util/install/mac/mac.pro
@@ -0,0 +1,11 @@
+TEMPLATE = app
+TARGET = unpackage
+mac:TARGET = qt-mac-commercial-3.0.0
+mac:RC_FILE = unpackage.icns
+HEADERS = unpackdlgimpl.h licensedlgimpl.h
+SOURCES = main.cpp unpackdlgimpl.cpp licensedlgimpl.cpp
+INTERFACES += unpackdlg.ui licensedlg.ui
+INCLUDEPATH += ../archive ../keygen
+CONFIG += qt
+unix:LIBS += -L$$QT_BUILD_TREE/util/install/archive -larq
+
diff --git a/util/install/mac/main.cpp b/util/install/mac/main.cpp
new file mode 100644
index 0000000000..ede85a6691
--- /dev/null
+++ b/util/install/mac/main.cpp
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "unpackdlgimpl.h"
+#include "qarchive.h"
+#include <qapplication.h>
+#include <qdir.h>
+#include <qfileinfo.h>
+
+class ConsoleOutput : public QObject
+{
+ Q_OBJECT
+public:
+ ConsoleOutput() : QObject() { }
+ ~ConsoleOutput() { }
+public slots:
+ void updateProgress( const QString& str) { qDebug("%s", str.latin1()); }
+};
+#include "main.moc"
+
+static int usage(const char *argv0, const char *un=NULL) {
+ if(un)
+ fprintf(stderr, "Unknown command: %s\n", un);
+ else
+ fprintf(stderr, "Usage:\n");
+ fprintf(stderr, "%s [options] files...\n", argv0);
+
+ fprintf(stderr, "\nOptions:\n");
+ fprintf(stderr, " -k [k] : Use k as the key to open provided files\n");
+ fprintf(stderr, " -s : Quiet mode, will not output process\n");
+ fprintf(stderr, " -h : This help\n");
+ return 665;
+}
+
+int main( int argc, char** argv )
+{
+ QString key;
+ bool output = true;
+ QStringList files;
+ QApplication app( argc, argv );
+ for(int i = 1; i < argc; i++) {
+ //options
+ if(!strcmp(argv[i], "-s"))
+ output = false;
+ else if(!strcmp(argv[i], "-k"))
+ key = argv[++i];
+ else if(!strcmp(argv[i], "-h"))
+ return usage(argv[0]);
+ //files
+ else if(*(argv[i]) != '-')
+ files.append(argv[i]);
+ //unknown
+ else
+ return usage(argv[0], argv[i]);
+ }
+ if(!files.isEmpty()) {
+ QArchive archive;
+ ConsoleOutput out;
+ QObject::connect( &archive, SIGNAL( operationFeedback( const QString& ) ),
+ &out, SLOT( updateProgress( const QString& ) ) );
+ if(output)
+ archive.setVerbosity( QArchive::Destination | QArchive::Verbose );
+ for(QStringList::Iterator it = files.begin(); it != files.end(); ++it) {
+ archive.setPath( (*it) );
+ if( !archive.open( IO_ReadOnly ) ) {
+ qDebug("Failed to open input %s", (*it).latin1());
+ continue;
+ }
+ if(!archive.readArchive( QDir::currentDirPath(), key ))
+ qDebug("Failed to unpack %s", (*it).latin1());
+ archive.close();
+ }
+ } else {
+ UnpackDlgImpl dlg(key);
+ dlg.exec();
+ }
+ return 0;
+}
+
diff --git a/util/install/mac/unpackage.icns b/util/install/mac/unpackage.icns
new file mode 100644
index 0000000000..20139b97ab
--- /dev/null
+++ b/util/install/mac/unpackage.icns
Binary files differ
diff --git a/util/install/mac/unpackdlg.ui b/util/install/mac/unpackdlg.ui
new file mode 100644
index 0000000000..ba4898e81e
--- /dev/null
+++ b/util/install/mac/unpackdlg.ui
@@ -0,0 +1,330 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>UnpackDlg</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>UnpackDlg</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>678</width>
+ <height>337</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Install unpacking tool</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout24</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>pixmapLabel</cstring>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>AlignAuto|AlignTop</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout23</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>headerLabel</cstring>
+ </property>
+ <property name="font">
+ <font>
+ <bold>1</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Open Qt/CD Package</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout22</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout21</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout19</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>destLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Destination path:</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer12</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>1</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>destPath</cstring>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>destButton</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="pixmap">
+ <pixmap>image1</pixmap>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout20</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>License Key:</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer13</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Fixed</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>24</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>srcKey</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QTextView">
+ <property name="name">
+ <cstring>logOutput</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout4</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>unpackButton</cstring>
+ </property>
+ <property name="text">
+ <string>Unpack</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>cancelButton</cstring>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="30371">789cdd7c594f23cbb6e6fbf9155b27de8e5a716d8c01abd50f600633786286abfb105366da608cb10dc657fddf7bc51ac269a04e517b975abbbb5096fd919991b1e62122f98f7ffd71db6bfff1affff8c774666603f7872bcccb1ffff2f3d1e8fd3fffeb7ffdf73ffe59ad54fe88c7d646e58f8d7ffe8f7ffc53cdff707fa80afe43dc4f782762a30457f1bc394b18cfab19e34dbebf9730ddff2e98eeb72b4cf74f19efd0fdd6248ce77d5730df5f3076747d6811aef2fc3d3fbfcaf3b123c43b429f794a98e6f72898c7cf12a6f97519f378669430ddaf05f3fd2a61babfc398e9332661ba7f2998ef6f244cf4df0bdea0f33963a6df0e13a6f17605d378be92309ecf64fe8ec653fc3ce15fe8264ce38d198b7c5f18333de18cb1cce736e26a925fa831e6f3d95ec278de6ac134df704f58e6935f0ba6f3ee2561baff5c30d1631e18f37cf384f9fe5dc63c7f25f7f3fc4c9bf0063fdf0e180bfd743ed16b4e09cbf5ca3296eb0d63799e62ccf717680f1b69fcbc9730c9eb5630db5f83318f97df244cfab2c758e4b1245c93f9bd32e6e76533c63c9ea7f934d2f58eb15c7f9f30e9478db1e8f73963b14f7a5e6393c7731b11d7aae9fa2163996f3f611aff96b0dcaf7cc278de7519cbfc91dfb586dcef2784e5fe2c4b18cf177b8299bf0bc64caf9b264cf67c2698ae57323e3fdf2d13a6f9cbf8c28f9384c93e503f37abc25ff3cc58c6d38465bce25030db4b9b318faf2e1226fa2f05b37fb9215c677ee846c244df1be33af3eb4130dd5ff0fcea0dd63ff4a79b46e6af34639e8fa3f99a3af3d7e78cebec8f9a8c793c95254cf2ed0866fb1d11deaa32fde8bfeb1b222f7b40b8eed97eee046f3470fea784b7aa3cfebd60a66f91309d7f124cfea5088c991fe199313f2f3f466c923ce8fa447f7e4578ab5aabe2f88e318f674e12a6f17605d3f39d67ccfc513b8299bf4a305d9f3f32e6f915fb82f9fa8b84495f3a82f9fe82f036f3c7d884c9fff604d3f5d99c31cfdf22ffb622bf895f0709d3f3d279a6f79031df1f3619376a28bf7cc998e71b2e05f3f3657c4fd79b09e134df8560be7e85f1fac0e36fb33cec3861badf0a667d183166fdcd0682999f7dc1cc4f94d7569257a810deaed27cb30ee33acd27ef0a267db1778c797cbd2d98c6f7af09d3787dc1747fd64d18cfab0563d607fb9030f1775f308d1f2e12267eed08e6f15b8477449efb82597ff1feed9ae89f191016f9e81dc6cc6fffc058ec792998edf55130c7ff3bc2f2bc6012c6f9fa53c1345fb3c198e5998784897fcf82f9fa2663e66f2ef7337f3deacbb615f9e409f3f89631cfd70f09efb07db93bc1ac9f26619acf89e04d7c5ede66ccf32d0ac63c1fbbcb58f8f396305eef2682e9fa624ab8c1f2c85e04d3f5f655305d1fd0de776a22ff901396f9fbbb8489ff4782999f3b8c99ff99dccffcf655c144af4dd76f1a9caf8cc7fc0e0973be7c4138cdff50308f7fc258ec6b9f31cb571582f97c3761a207ed6fc726fadf0927fd538c79fcec5430d1137a09233de1867183ce671b09e3f9ec9c31dba7ca05337d6f82e97e759a30deef7705d7b1fecb1e090b3f4c9f31d39b6f3266fad43861d2b71661c3fc35178299bf3709d3f58e31f3a358264cfc467b83f4899f5f78c6a2af81b03ccfdf32167db109133f268299dfe709233f6c87b161792e04d3f9fc8471e0e769c1747d1809a6f1dd3161bbc1f16e2298ed7f85e9fe5dc1ccdf47c65b9ccf5e274cfe50c6dfe27c82e76f0d3f6f2b61b2df84e9fa8cf8e7c41ecc0d63d68f6c4ad8883fda13ccf6dc14ccfabe4818c7d35b82693c2798e3697ecf98f96d3a8c997f393f5ff851d88469fcba60f607b384c91f9c31667e8553c11c2f2682891e7d2198e7e304b3fd1c3166fe9aed84299f7a124ce3eb56c2943fee0be6e79d0ba6e7b903c681f3f1b784291e2e05f3f8bb09537d91eee7f8ba9d308d5f25ec581ff553c2347e5330d733370913ffe47ad647779d30c5b7b960be5f9e27fa87f1c26c8abf7433c2a23ff65930f9a3d04998ecafce98edd96f3236ac2f2f8c597fc21be1646f23c12ccf9384493f9560f687d78c591fc28660badf5f254cfe54c6dfa2fb2dcf4ff4c1e582391e68c1accf321ed3139a09533c180ae6f9ed30667df13e61f20f9960ce2f5dc224cf3bc13c9f743fe98bee09667e0f0433fd8709e3fc4c9570d2af79c2a45f23c1acbfd384e9fc9160b68f76c2c4ff743dfbf715a6f3db82997f45c2383f2df363fdd579c2f47c2598e7e712a6f30bc1ccaf9784499fdf0573bc64fe3bf617fa24611a6f28989f374998e2f9bd60ce876a8c59deea3661b2bf9660d6b746c2647f581f1927f1d1927c92ffcc170993bd9d0b26fb53ef8c99beec4a30eb7f4d305def041b8e0fb70953fc6f0b66fdae0a66fd3e4b98e27385b1c487ad84e9f9424fa0fb0be27ff267619630f1e34830e7871b09533ebf2d98e3f1306192f75830ebdb0ad37cde04d37c8ccc87f5cdbd0a6679bd254cf2ac08e67cbd9e30c5a7749ee6a7bb0953feb414ccf9c8ad609a8f67fe893eaa03c1ac8f0f09537ce909e67e712b61f217f78259bf9a09d37cae04d37cf44dc2649fc78cc57f05c1cc9fab8469be323ff657f99e60eea76c264cfac6fcf6ec8f544530c7e71bc19cdfa17ddb941f1686b0f87ff79830e97b8f31d3afb61326ff742598ef3f12ccfafe9630f9537ebef85f35104cd7ab4dc2e25fb34230fb9f61c2c41f2f98f3a5c098fda1bd4a98f44f09e67cad9630e53b5dc1dcff90e7b1feb9b9608e17fb09933dcb7cc43f1e244cf2d910ccfab897303d7f2c98fd914b98eca32598f9bdc224af07c1ccffe384e97c9db1c4d7f384c91e847fac9fc52c61ea0f3d0ae678b69130f1c70ae67a2b4f98e63f15ccfeee2c61cacf593e9ee36d3e4898e6772598e3e546c2d43f60fa3cfb138ffec27ad14f7bcd38b03e1e0bde227eed124efef34530fbc346c2144faa82d93f7704d378f96dc2e43feb8c59ffb271c294bf5c0be6783c4898fc515f30e7579782b99e3e14ccf9da5430cd47a5eb693ec51b63d657b59f30d99f16ccfdac79c2a40f35c1eccf3705b37c9b0993fe9d32967ae03561ca1f841f520fbc244ce7df05b3fe9d254cfe2017ccfeba2598f3efc38449fe5b8445df7425617a9e17ccf30909933def09e6fa649130e9df8e60f65f078c255f2b12a6e76582b9de68264cfe4b0b667f83f1c9d545dfb21bc6e2bf2f05b33e9a84c9deb61973bcb32782b93e550993bf7e12cccf3f12ccfa9f274cfa95c6a3e7bb016396afad274cf1aa10ccf1789430c59b3dc1ec5f2e1326fb9f08667b6f274cf27e15ccf9cb7dc234df343fe65743f0760dcfcf098bbeb8938469fe6782595f6cc224df8160b697a384c97fb60573fed34998ecfd5030e71bd70993bc8d60a24f6f0a66fd784f98e8ed31667d34d709d37c653cd6c7fe2c613aff2898eb519730e9d3a960b6c7b384c95ed378ec5fb384293fdf124cf4e4321efb2bdf4e98e6b32f98eda796309d7f16ccfe238dc7fd50a19ff53d7f154cf32b8e0573be72c798f5d9cc1226ff89fec3adfc4f5f30cbc3264cf181f897fc85ad264cfa9109667fdf10ccf5c4b6601e7f9830c9fb4030e973088c25ffd182b93eab08e678db4a98e623e38bfc6cc2444f2198edad9b30c9f75830cdd79f254cfe49e89778b32798ede730619acfb360b69fbb8429fff082397f6a264cf97a4d30d713070913ff7605733c95e74b3edf4f98f46d2698fb8b8d8469be3b82d9bfcaf8e2bfb612267e907ec3edecefb0bfe7933fc813a6f986bae01d9477fece98e553bc0866fa9a82595f1e0493be646dc13b16714f706313e77bcc58facb7dc12cff4230f1cfba8469bee97e7a5efe96303e4f093decfffd4c30dbc366c224cf5bc1f47c5711ccf6f64c38883fde17ccfafb2898f5f14930cf4fee97fa09f3691f84defc5270c321be232ce3db4bc17cfd91601abf3fd34a1badfeeca7b6dac1f1f1f36707dd5b3afeea3c50164afbdf7c846f1cf1ba4ce770fca6e7525cfccb3cc94b47fa3d9eb33f91e96f9249fcfc2d72c97581fc2d1ff4fbdf2def9fcae577f024c9c17c3ecae759562bbb1968f73b9eff1bede5a31df84f32fad1f5ae74cfdfc15e4abee947b2e1e3935dfdedece56b1ff599df24a7e2837dfdddec65283e0b3e1ff4236ace28da027eb7681378c4dfc3e7283e9d3f1ffe66f6e2f5931ec3cca22ce4f311a87ad613b689917e81c3027ed6d3f81da90e7ceddfc75e6630434fb3433cd673b48348e1ab7ec3dfd1aca3df5ac031d5ef48d192a9fa3bd98b476d899a3644cba6dfcd35c598b7282bd4b017bdabf79092056b6213cefd8dec05789feb7da022cefa000ecec970f616671ced66a10ff51150d142b944998cf1bee3dfe5cb7e8b5c4e60462738a338eb5398f1996eeb8eeec2ec7bbaafcfe1b8d097fa4a5feb1b7d0bbfbfd3f72897785fe577f9b2df622ffbba0a335260d51bba0633ddd475bda5b7f58e6e28ad9432cac26194535e0595a95c156aa086fa4e81f5abc7ffabf18562b7c4ef726c9798f1aa976aa4bbea498dd5b39ac0ac5fd454cdf098a979e988bf9bc2d957f5a616ea5d2dd5ae3e52d186c287677cf46f3ff577dfb11778c2091c43d564dda71c6aa4f6d5813a54477aac5aea589da85375a6da30db0ece79a6bafcd9537d38e678ac288ac7b9bad0dbea525da96b75a35fd5adbad34f30f654eda97ba0700972ab94ea2255ce2dfe84bd60ac56d5c833a1466d002535fda636e1b3aeb6d4b6da01593460f6f338b85130fb3eccba7cccf1137fe07ccf18a42ad2a38c35ce78bd3001bcb8070fff883ecf81d62a93e9efe414dfb517960b5343779a181b4c6e0a5d370333340f2403a4e4118e11ccb49b6413bfa34ccc53a4847fb4c8c88ccdb399981733057b6b452a805371c631875896e5f117ed252bd90b1d2706ee34733534afe6cd2c505f70e6c86b91c3ec8b036563de8916f8a6cdc82ccd2e52f462f64c13e4b36f0ed05bc7383506591dfe8a1ffb99bd4459c801387ad13773645ae6d89c9853a06004735ac2ff239e6dd4b4b25cc45e84a2a865ac89789c01654b944f5bef988ee9aa163c1ba85107fad1f47e947bffb9f892342b03ef5ba82373a896a6af1b668c1cc5d9e00c4dc96fad66bfb29fd5b9deca76e02752f30ebf07eb31e7e6c25c9a2b98e113cc70887941f69dbcfa3bf6122d5e6462aee1730094dc80ad47ddea1a93ac7d8e728832e927bbd125fb50289fbed9859f25caa7079f4857f4064cfdd4dc9a3b736f2a603773736daa5fd53c7fd25ec47f88dd0c74d76c40f48b966cd8024630ab51b215f155fd0f3f2b5bead12752326759aeec6c666a60399ba60e165f355b9f7a09f9a7f97d3fbe440f1933156fb6cd11c864c734924f026aac260aac688b42ea66e2bb30de4cd9cf81fb055b5fd1d7b3265d471c204fddb6d63ad5b21ef3b5396a9bd14f36fc457b89f12466816f68271bca20254bd479b48028934883cdc04769f9ad9adadc16aa61dacada0148f25c35387ac28f1db2cdf430d64ca3ada1762ae4d05439fb602eeda32ddb6d8d8ebf908f3d42461f7d4ad4ae1ba6e4294a0564429ad5b3620fa8253607ffe6ec931ddb673bb12fc6d9a99dd9b97db56f76616a4015c9a967dfc9ee8d66fbd1384e0fa95dda5d885f475cd5c5fae74162cc47dff66d7b79b37bb12eb44dbb0f163fa3d89e62f99cf88bf612e7d780391cd8437b645bf6580ded896e8307afdb537d6fcf74d7b66dc7766dcff6416630963d8f1187c763ef069862e8d05ed84ba02670f6142bba55bd937f96cbcfecc55ec108efa662afed0df033ca44a34c6e55274615e0e4083406754a4dec9dbdb7155bb51bb666376d5d3f002762351cabe8784ced9699da6d90d70ee46fe7e4b36d2346a8e401a2d67560b4a903057706a889d967ac8106a6f7b117fd4bf632b457ceea6be7209ecc536c8fb1503c30ccc216a611d7df5ce67257c08ceb7ae40668b5944f57b0ff7282f8c51cb8a17b708f6e14a36d1c0dc6eda16f331c69e7400b48d93db9b17bc67a7481f9f473c977adf5dfbe155f208b50c76e824fed925f8a76021683f6e25ee273ddd4cddcdc1e47db72affd191eb1c68cd573dea75ecd10e354cced82ba710bf76e5ba6e3966e173517e502f18af30763306b38777bfade35dd3ed4a447585d7fd187fb81bdace7a040b73b5075c82c16e82b3bc94ae66c231da4e4d01db996adb96377e20edca99ebb33d4ed68b1f3943bc4fa3e56d219c6f337d554f7ae0dd474d0766664779441a36f1c459fe8baae67725b03d9bc60b5fdb1b6ca3fdb0b1e94933eb87e9c01f8ae421dd8ba3b77179839aeb214e05ab49b2813c87227ee522df5a17b5bd365a93b629efdecae8092a1de77d7b15ae8cfb8fb3a7637a0bdb7ee2e5203f9c03bc7a6197be8c7c84177ef2a2013b07ae0d0c3daf8d917f6427ac7311ecfbee293ab1021eb6adb6dc47c9e231965f0e2c71ac6ba9adb3447d88d7883fb3efa981357d74f989d6ec0358faae5b6dcb6dbd1bbaae91afa006475e68171187d7a6b791be70bde78eb9df7baa20e809a3c1e31eeadd5a25fc9c521f67aae6a3ee8579f9942ed407d12a3631fe36017eb14f2c01d9fdba9db744db04abfaec3c9de6af0f43ec8057c982ffcc00fcdb97fd057ba03b50a7a5875e31ffdc83fb1a6f5487b25af032ddbf56337078f32f2cfd47beb539f54f2c4757b59e95d406b7d420d83ac01f85dc7a8d2659e75390644ad9efa897ff150d1629f0b3b4bcc89728f1fb20f5581dfeffa999ffb57ec059c5bebdfa0d66fd93d770df71de96bbf70cb186739cef456725133ffee97906d0e40c324beacf2c47f2317b86292f0a369f95d947e47ea77ce8b418ffd9e6ffa7d7dc8bd2eeef2f178abdc76df1d80262dfc813ff4471851a217797177eec1b7fcb1aef80079560b6473e2f7906b7db61b3c50171afed49f41b63976afe5f59b28971fd80bd1dbc4fe6306b20990ddb521a249cdd8e17ae5318e0f1ab1035eb806a3beeadcb7c1b65eb93f1c3ef4f35fc13676fd9befc48a2766291e46f43ddfd757ae0d9ca8b8aa3f572d90cd05663752ddb06ca2c7f197fe0a28bfc67cccb2adacf56b3eca85fdcb84fac2a607fa7d13bd3f669233ae4f204d8cb49885bfd5b7661be24995ebcd917e4e7139875a872263ec9dd56026775126d6f87ba0a50299c254195f051fd65637a0655011fb0d5f3398aba1ec4729e644cfd6f69ba02375b47ea2866a5e27f9d95a7c117b71c8570ffc3a055b78c6917bab5e0a771d1af6ce0d21b69ff82d8ce9867b282f3c56116b501ef35d5ff96db013a024d53694dbbfd80568da0e7021cab6114015b87f20754e4fea9a604015dd9a0ffb54bf7c8aa3312fae20ed6dbda926907529e9ad48561eadd1de071fc2aaee13df82b5fabe3e8e72018d7021b39590636cefa53c9fabaea8a9ee2e146e07e45bd10f611086e101ad739ee2ff0873804e78f4fb9019e51885b98e11b994ec25acc518879960fc7e1646d187a56cbe97783a855cb8e20ab0c44ac967d138735d094f668becc7b5c3d82ed0e2a977b694aa2cc65ea4c886e710d76580dfe1c56c3acc2ab99f26fd9b1ed6002f7aea4e308f18fd582ea2e3bcb2e0c8a785a9de420fba92c923ca680e75dfa1ad8659085fac41eeebaa6f433d089484cc8dc31c2999c6f824b5096792317e4c6d115ec31b64afc04de3752f2c4c1b3d739f7d18710146b1d16752a6bada37f0d15e42d2f1f87d17b48c74b2e3fba8bdc29f3e575c51c38eec86b6ee15f5777d0df2186af413ec06dec1ccded1a3a74a9a7361c98d63e6d50ecbb0abcf30568cc25e68725f64955bcca94b13f621c68c29bf13fb4e3d22918bec4f21dec61a215e39801c6b0746eda69e17c9e509463d0887e08d69edd1acc513f202d10b6f8571a078b2aa4b34e5c258ffe8c8f3d0b26ffa1c72805dd4fb03530fc75827cd52a48cf97f23d20279d9d0676cfdd223fa185f5672c9d15e9e5d5c8570fa309cacf5ea492e9017db853d0ea7509f288ec3ebebf96390ed9d3f349370861e76c4d9e8aada22cb9e9953bbf0037b165ef400b21cef6277af65261fe4d2a72810da6e6ce6b4729b8eec47f60287c3fa3aae750d744fe9558715e3f163d4319b878e1b834f99637d62573a8bf6f6a8a721f383701429095dee6f18d632d219ccb3cc69e8f937a89e15f790632c72c0fb138ca95ce5518f07fe9f9a5ae8bbc8ede8cbe479c32fea9750f663c09f0cb2c53e752a520f92e5a21ae1dc9eb8377706b9ebf843fc0dfa28ecf9c37011bd46e8a2adcf57f2e0efd12f15e112b470007695e926f67ab0e60cd370156351eaf3cc531c005b0ad72897951ffbaaae74124bd977cff500bed8d298e2913ba66d8e751beaf89c471baa1a64a2b462a7205778f347d89f8db5dbaa53f4245dc068296e37dc845bb0b9f8ec26e8fd84c601ca0ef59569f3733b29fb47efed2ec31dead000e79a7faa5f441ed3241bf2110b7d6907eb7acb5e32ae971c81740bc871e15a7f4ef527d62eefb692e2c988fd955af531639f42f5c37da884aaadc62e2bd635919a3713ab35d050b389b4248fac648dc0860d35c28a2ce6e68a7de75772615a396b8ffb262e14adf890a58a5c80163b05ef48757cd4f327904b0572e1a52ff455c8a91f917afd7d96498f7a9d51f7432d6c86ba83fc0ae49f61a536d1e3b015edc61c85ed923ecc1225605fe638468275b9acd98be4612297b8badd8c7a6f5fd85ee66b7201fee8d8ef7a028d8add8809d4ed077165cef8b01176205b99829dee52fe51f65da9d3ba5473b76b17a1117ca6dd75a6dcb5012b06b92cd51ef8b44b940bd9a9746823771aba0e7975e4f49473f12fea17c9a522addce574516fb10a5bb37efc3cb7737d1f7d9dd4ed99864aebc0bf6506b36a8331fec92ce3ac4526b246063876d267e6c12e329b454f53852a3aae50417e0eb1edda76504729779ba57c3946e829cbc5fec05ec4ffb8642f16f7af1c41ede2d7ec85bec7dee4ab3d83da9ef28421e8fbd4ec43a5c573b0641bd2fbef97ee979e7e0fbd024497ccab56d452b2393d527ba69285d0c23ae99db8881519dc9d65901390bda8926d7f968b4bb4e2dea1e0f4bb7b5081abafa7922f03bd8358dd056f7c021a36027e36a3efcaf2e849e37a0c75c8b9472c3e6cae646d997cfb082bbb76b8cc0a15fbc5b1eb01f9023cb7930d62af9cf3a555be305517d990fc5869cdeeabfa6525972718d9417cddd5b7d90366aca9eec6181cabbc8e6deb26f820a01c7cd93344c60baab4b86fdfe3da6396a2c3aabfd251abd5898e2dcc4656e87bf44b316f18b8b1da89fd25be66657553d7710f1c5fcaf5d65775a54d7e6c14d75c60f46ef6489911d65f31f3884f889588331dd7a44a1a34e4de0f5126ef19d5e71df263e493b15b2c729aa7be1755da5dccc8c6d91368d61862d4abe9857eacfa639f9a7433c5ff69f69c4df451796fed0fea7d5fb21792d1d29e652f54a1336f7b69d5e5458d6d136b4888d9d934c3d5225ecb33680b86b57cce1e6dc9155869ed2c5597e7d91c624aecb32ccd912a40c273a99295746566669cbd8266bfa3bdacf5f3d6e3cb87ded824f62ea1deaf676f7609baab793dbec73d32f0b9d9227b87ba33a0576e674bf0a253dff515f23d7668a81ad6e4b1c23df2b7875c794c3d96b9f428d5b9996443d0835d37771750d38c582fbbc88579b617bd58d8f04558ed39a73ecc677b29d7d04ddc21528b39ab9f664deebeaed61fe77185c2f6ed04eafddd787d063eccda2841388319b1352c8ba853e350c90e541b65d043cdfab0fe8ff9e73968da21d84303fb4a587db15ce2d51de0df5bb0196958d956febd5ce27e87107517e47397b5386b2f5113addf1676273b768bd879028a3aee363b092d8c92185da43e518dec343bcbda5927eecd40aee8b49eb9ea81c61d3f8dac9bf5b27e94a1ea82bd3c81749eb8dee982269c6717e0911e925c065ff4c7a4672972910a0b6a18d5ca2ed38a0279d7a5e4b9ea2cbb72efd8bb0fba65b7dc83b5907b507f4b6ac653d0c56b5b75adec06b2b4f65ac495b57ed65ad0a4dbec2ebb4fde4e5610694de6d4df6615b39d5591eb71be94937d5cafcccb7d798e3539d4ec55fde2c6fe926c99b30feca5609d77ee46b615ed4ac5cab565cf20d3bfc1fc784e76a26cb611c6b1fef475bb9159a4a6c375ea6a5502e41c3f2daf21dbf89dd7a171ad3a7eeff84bbb1d3b4aa02f2bb92c3ef593cbbde4d551c96a66cb5f679b5907fd8ae1ce03ae609977177d703be647591db2ca273dcbb6eca9bb858ab340df14b5700111745b2b739ded649048678d70b956a74aff6b1ebd0266d0144f9e56392073a5611739a457b1f64c75ac43b97c692f5fadd1c2f7766ec01aa7e099240e477fcbeb24666167fa1ad74162edd2f43bee36b77600740c2037b8ca1ddb2079d0fbdce741d68dd2ea395394728bd5aa2e69d83b543b4bdbd135ea11c5fe9bb9ce33ac81eda7fed8bfdb0bb3e7e6507f377005ff4cc9ea1b652173f3e03a61accf621755dd466af2dc1fe64578cd0b7de176f4301f60cd18f3ad984fdce7431b57fa67f9431c09d76ce71f7e66bc262d786a8bfc517720371ee37e67de97f355dcffc97aa5f3ad7c943fc59eb239438f3ac79c8b346266f37c6c3bfe512f6c8027eceb51fe9c4ff2977c9acf207b1fc7da249f47bd066a9af9ab6de66f26faef6959db64f6a55ee58c8fe819cff385b9d2afae1afba0e5b5b75fdc0f6383cbdff325ae26d18e84954fa3194cf35d3f024ddbc5950bf035fa31df833a6317f78a7bcc748690819e00356f20e7f7bc692631b67247efa35c5639f99cc7dfb7d15756f3038c00e26fffc4fa3e2866dd2f9d46be3d96e2367a68dcfb31ce0ffd223f522d3d7655ebb16e1f415d72e5fa9cad56f29699e1ea858218719f0d7d1fb3a325f6db3ec946aaebf89bfc383ff10d57cd4fb117baaa5dfec4fabedf32f3fc2c6fa7ae9d64f39c57c55cd316609daffadae4b8feeeb1e68c4f8b1d9f937c90774026201f57c59a27f65a1a7937ef7177f58b1fee6dcea0fe9ce833983dad1b0cd7d6773ed52f3f5bdf071b98e7fdec5aeff09a56bfbc36127d90c5d565bfe73bf979d0612fee61716fdaab235ac1cd5b489d41b9c41ed8c86ce617f9657e8571eb0b7b419b8433f9757e93df86a95404257bc97fdd5edc993b7067603377f9bda9513ce6b58719c750ac35719744ecc6297f05b54d17eabf297618e23a7e8d570e21f7d683bc12776ee5d5bccb31fe4b4b61aaa05acb376c3b4cf31aae70ad7a969fde79fae67efe870c94df17f9a69f8864d866651db3c73a1ebd9376f7793ddfb2ceb55c966fd37b30aa15ac6dbaa16965d6f4f31dbf0779d78c7a66dca3e5ff45e6c96e629c6ca865cc1fb06f67535cc9b11a34dfb7173d2d347c8ef34aa1cc5d5ce9a748873b2464ef7479271b3c5d5933b437766c0f0b53d8b8a73ff7852b7c5e140122efb9dc93fce267c994f69a9b36d4b147660a5ee309bc89f48c547acfe9dbf1450fb2a3108a4c5b0741ab2828a78abb7153964879f43b579f1df4b610e1a0fe7d80cc14324e13a93bc5a88254f07e1aea03947b2df33599509c891c3bcf16c5c0e4295f5cbdff97ff4a7cc92b51ba50cb8174a192857cd7d3feaeceaa5faf569dc08f3d97d52751bd4499aa5437764be70c57f6eb72e96176709e0db289e9adadef97d7bfbfb7df12ac1577509df9cccc8b61f1503cc60c4d7520475baed6e1d3a1a973b1c220b1f7555d2c14a34c70df56c956cc67b9c40a0f57fd4c3102aeaef6c39472c8efda4bf1640edd1ba4a5afd8d7b7c5389bd85d3354ab370f64cd57e423bb3ffac98ed6f6c2727642f5c957d1fed39e73c84741678be762f2e3f72fbe135fc02bbfe94198e18ade89aeda601f8b177b01c1f701ede691a36757a5fdc93273a89687f0437d8c1eea3ef668d25adb135fc7ab4df9f5ca76d6fa01408d392fa621d3cbd27af52fc7976266afccb68dd1ead5548b79f15abc4134bcb5b3624135e79a5c64c5a4b4237e8dc7e2f7a45b245dc0598cf1c53bbe75f2c18f41ec2fecd2765d139ebbeae5add6e3be6f2feb07af69066f5e6dc5edb92e76034b3ba4d63cacac3ab0ccb8e2ed49bdc2fe2feee19de6c77692df1605afdca4ddbfe0e121532e96c56eecfbb8abd2bcd6d6afbff9bed8873ddbd8c11ee823b793efe5c322147bf8ce08e51dbd354ad67a2ed8555a96282699a1fee4fbf9893e0bdeb66d0f3ba043eccecca21f377be602df9c1bf3be832fdf77feeefb626bc718fb9a0bc82a5aa0bfdda2e9ad1fbb0d7e07866a68b8d036e0476a51a62cfe1e7e4cb60776d3c1cca7e196c57ebeb04ddf88556f981607be1375379e233afd4d7e84fbfb2771cfc5c7daf717e2cbea28d70bf89661dc03696b7925abb87161fc6b71684eb19335fb20978fbe8adf1b330d7f691750fd76a0d28a6ba49043e73575658f7c07f7484c43cb2efd8d3e044af64a7bc6bf7a9fecdbef579679c1fb8da75071c5aea9cba02cd01093ad0bd5bcee5fc3a35de2cef0cf6fbf51be36552fa696358ba3a265b78b634dbbb6a03e811a3ed30fb666a6c5897d500a65728276f2cefb6c3cf661d6de49ff95f8f28907f8562eee9d7cc1b7d30edc89f7902bb57dcbb4f2bedfb72f763fec17a7a16d6a10552de62f0dbf9765eac27582c95ec3866b9a695681fc5bc55c1a2aad83ac1673ab980b63b5362946104fa6d177018e32996325365e9b4fbe2e979fda4be96f8cd0de08de0bfe8c3dc4d81f3bf0cff6d1d68b335ff719e408d3a8156ea896a15fb4dd65d8283af9c84ef3ad6ce81eec76dc091fee62050db1eb153e1f78a6588fe2f717bd28ba6e1fbd70c03d0443f23af4fed89fb4972ffe860856c0633d51b8a21d77a7d13a7ffc1ebd2444d4b8b30d321e9787eb70a74676c3b5ed861a853b5b8bab54402d7720788d4bdebec6bd9eb8a3788cbb8097f15335b1371af7342fb97bbfeecbbe1f5f3efcfd971ffa384b33e3fd2ab2cf6b547a3772fdefc394df975cffbdfba0176bf7fd689ebf602f3ffefb2eb8a383726afc8cbc9d970ea1eed367ead9afafa5acf759fedddfc658c3bff43ef217b259eb8508ef429a256910bdb35fbeaf1caf655fe62aa7b069afc1577f0ba8ac2b097f3bbee45fcac77f88bbab73eb7f2b21603f7efae93e1977d5835cf556567b3ecbfb6cdc9a4e7c8a31dfccc7f28fb25993cb0ffe46d257f1794d8683d55e8f8fcff918db4a357e19af8dfb4db9145ff0bf2cb3affe3eccc7fb0b5d5e4f7022aff535948fbee9836d7c96c9afd5fbf1f3447f5ea359f1245b7b3756d610e327fdd588d21bc072be7c7cf25bf4bc75b9969e9be402d7153decf7ff8abdacf3f48b7764b42af9a2c873c76fedacbfcffc950c3ffba7b2dd7c96fd4a4e701d50b22697efe6c8bf92b77dd4f9ef9effd1f3beb4a1b2effb7e7cf97fe2f84d7f7fec6ff1f9ff955cfef7fffcc7ff011f3a1368</data>
+ </image>
+ <image name="image1">
+ <data format="XPM.GZ" length="1085">789c5dd0cd6ee2301000e03b4f11911b5ad1189290a8da0324a5e90f29941e2aadf6e0d84ea10d1020849ad5befb7a3cceaa29e2e06f663c33ce55cf7a9dcfacde55e758d16acd2cb6a207abc74f9b8dfcf5fbe79f4e97f896fabb8145ba3f3addbec5ac74b715704ed5d9769c01cb73e0423368f80224c190e53e70091c389e83d98366e83942679f0c43cc7e0087c4f3307b63c8b1d559337459c6810f48df137aab49436c750f748917320f78418e4cf65993fa04b33572c4313b067a039f333de80e39e238680ff4d5d2581c69d2c0c3ad8e0db1f30619127cd1dcd00c7a4452824c80a321359d73cd8c129c1b1b0acc726030a414b31299f9989d1952a4d0ccc23073819f861c973c2133d3b904aacf6ceeda9a8c12bc5b219929de21f9005900a99bf9f8e9a8a159728a5477f5d77847367719305373b1788b14668d4c9337d95b2437ef5d03b9c84df10a28fc866fc05c9522fbf0b369c6b8d0c7ffb1fc6db57effb0bfc68acd7657ee0fedba63599dea73d18a7dca525ec6ed3aa16293a81d2bf232beb1bfc578d58a416731ad641da95381b1e3f496ca939432c9f3bb7b8c450f8fb39994b18c93493a36fda2a7b9aa8ae3e4b278b69b192aa822499dc2d6cddc68b94ff697f46c7fdd255ad6f5e2dbdbfac7c3cbd8ecf7f7baf30f538f0154</data>
+ </image>
+</images>
+<connections>
+ <connection>
+ <sender>cancelButton</sender>
+ <signal>clicked()</signal>
+ <receiver>UnpackDlg</receiver>
+ <slot>reject()</slot>
+ </connection>
+ <connection>
+ <sender>destButton</sender>
+ <signal>clicked()</signal>
+ <receiver>UnpackDlg</receiver>
+ <slot>clickedDestButton()</slot>
+ </connection>
+ <connection>
+ <sender>unpackButton</sender>
+ <signal>clicked()</signal>
+ <receiver>UnpackDlg</receiver>
+ <slot>clickedUnpack()</slot>
+ </connection>
+</connections>
+<slots>
+ <slot>clickedDestButton()</slot>
+ <slot>clickedUnpack()</slot>
+ <slot>destroy()</slot>
+ <slot>init()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/mac/unpackdlgimpl.cpp b/util/install/mac/unpackdlgimpl.cpp
new file mode 100644
index 0000000000..5538f4db05
--- /dev/null
+++ b/util/install/mac/unpackdlgimpl.cpp
@@ -0,0 +1,200 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "unpackdlgimpl.h"
+#include "licensedlgimpl.h"
+#include "keyinfo.h"
+#include <qdir.h>
+#include <qfiledialog.h>
+#include <qlineedit.h>
+#include <qtextview.h>
+#include <qpushbutton.h>
+#include <qarchive.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qapplication.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+UnpackDlgImpl::UnpackDlgImpl( QString key, QWidget* pParent, const char* pName, WindowFlags f ) :
+ UnpackDlg( pParent, pName, f )
+{
+ destPath->setText( QDir::currentDirPath() );
+ if(!key.isNull()) {
+ srcKey->setText(key);
+ } else if(QFile::exists( QDir::homeDirPath() + "/.qt-license")) {
+ QFile lic( QDir::homeDirPath() + "/.qt-license");
+ if( lic.open( IO_ReadOnly ) ) {
+ QString buffer;
+ while( lic.readLine( buffer, 1024 ) != -1 ) {
+ if( buffer[ 0 ] != '#' ) {
+ QStringList components = QStringList::split( '=', buffer );
+ QStringList::Iterator it = components.begin();
+ QString key = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() );
+ if(key.upper() == "LICENSEKEY") {
+ QString value = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() );
+ srcKey->setText(value);
+ }
+ }
+ }
+ lic.close();
+ }
+ }
+ connect( srcKey, SIGNAL( textChanged( const QString& ) ), this, SLOT( licenseKeyChanged() ) );
+ licenseKeyChanged();
+ logOutput->setWordWrap( QTextView::WidgetWidth );
+ logOutput->setWrapPolicy( QTextView::Anywhere );
+}
+
+void UnpackDlgImpl::clickedDestButton()
+{
+ QString dest = QFileDialog::getExistingDirectory( destPath->text(), this, NULL, "Select destination directory" );
+ if (!dest.isNull())
+ destPath->setText( dest );
+}
+
+void UnpackDlgImpl::clickedUnpack()
+{
+ QArchive archive;
+ connect( &archive, SIGNAL( operationFeedback( const QString& ) ), this, SLOT( updateProgress( const QString& ) ) );
+ connect( &archive, SIGNAL( operationFeedback( int ) ), this, SLOT( updateProgress( int ) ) );
+
+ archive.setVerbosity( QArchive::Destination | QArchive::Verbose | QArchive::Progress );
+
+ QString dest = destPath->text(), src="qt-mac-commercial-3.0.0.app/Contents/Qt/qtmac.arq";
+ if(!dest.isEmpty() && dest.right(1) != "/")
+ dest += "/";
+ archive.setPath( src );
+ if( !archive.open( IO_ReadOnly ) ) {
+ QMessageBox::critical( NULL, "Failure", "Failed to open input " + src);
+ return;
+ } else if(!QFile::exists(dest) ) {
+ QDir d;
+ if(!d.mkdir(dest)) {
+ QMessageBox::critical( NULL, "Failure", "Failed to open directory " + dest);
+ return;
+ }
+ }
+ unpackButton->setDisabled( true );
+ srcKey->setDisabled( true );
+ destPath->setDisabled( true );
+ destButton->setDisabled( true );
+ LicenseDialogImpl licenseDialog( this );
+ if((!licenseDialog.showLicense( featuresForKeyOnUnix( srcKey->text() ) & Feature_US )) ||
+ (!licenseDialog.exec())) {
+ QMessageBox::critical( NULL, "Failure", "The license agreement was rejected." );
+ updateProgress( "License rejected" );
+ unpackButton->setDisabled( false );
+ srcKey->setDisabled( false );
+ destPath->setDisabled( false );
+ destButton->setDisabled( false );
+ return;
+ }
+
+ QString srcName = "qt-mac-commercial-3.0.0.app/Contents/Qt/LICENSE";
+ QString destName = "/qt-mac-commercial-3.0.0/.LICENSE";
+ QString srcName2 = srcName;
+ if ( featuresForKeyOnUnix( srcKey->text() ) & Feature_US )
+ srcName2 = srcName2 + "-US";
+ if((!archive.readArchive( dest, srcKey->text() )) ||
+ (!copyFile( srcName, dest + destName )) ||
+ (!copyFile( srcName + "-US", dest + destName + "-US" )) ||
+ (!copyFile( srcName2, dest + "/qt-mac-commercial-3.0.0/LICENSE" )))
+ {
+ QMessageBox::critical( NULL, "Failure", "Failed to unpack " + src);
+ archive.close();
+ }
+ else {
+ QMessageBox::information( NULL, "Archive unpacked", "Qt has been "
+ "extracted to " + dest + "qt-mac-commerical-3.0.0\nPlease read "
+ "the INSTALL.macosx file for installation instructions." );
+ cancelButton->setText( "Quit" );
+ }
+}
+
+bool UnpackDlgImpl::copyFile( const QString& src, const QString& dest )
+{
+ int len;
+ const int buflen = 4096;
+ char buf[buflen];
+ QFileInfo info( src );
+ QFile srcFile( src ), destFile( dest );
+ if (!srcFile.open( IO_ReadOnly ))
+ return false;
+ destFile.remove();
+ if (!destFile.open( IO_WriteOnly )) {
+ srcFile.close();
+ return false;
+ }
+ while (!srcFile.atEnd()) {
+ len = srcFile.readBlock( buf, buflen );
+ if (len <= 0)
+ break;
+ if (destFile.writeBlock( buf, len ) != len)
+ return false;
+ }
+ destFile.flush();
+ return true;
+}
+
+void UnpackDlgImpl::updateProgress( const QString& message )
+{
+ logOutput->append( message );
+}
+
+void UnpackDlgImpl::updateProgress( int )
+{
+ qApp->processEvents();
+}
+
+void UnpackDlgImpl::licenseKeyChanged()
+{
+ QRegExp keyExpr("^....-....-....");
+ if ((keyExpr.search( srcKey->text() ) != -1) &&
+ (featuresForKey( srcKey->text() ) & Feature_Mac))
+ unpackButton->setEnabled( true );
+ else
+ unpackButton->setEnabled( false );
+}
+
+void UnpackDlgImpl::reject()
+{
+ exit( 0 );
+}
diff --git a/util/install/mac/unpackdlgimpl.h b/util/install/mac/unpackdlgimpl.h
new file mode 100644
index 0000000000..11585d7ef8
--- /dev/null
+++ b/util/install/mac/unpackdlgimpl.h
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef UNPACKDLGIMPL_H
+#define UNPACKDLGIMPL_H
+
+#include "unpackdlg.h"
+
+class UnpackDlgImpl : public UnpackDlg
+{
+ Q_OBJECT;
+public:
+ UnpackDlgImpl( QString key = QString(),
+ QWidget* pParent = NULL, const char* pName = NULL, WindowFlags f = 0 );
+
+ virtual void clickedDestButton();
+ virtual void clickedUnpack();
+ virtual bool copyFile( const QString& src, const QString& dest );
+public slots:
+ virtual void updateProgress( const QString& );
+ virtual void updateProgress( int );
+ virtual void licenseKeyChanged();
+ virtual void reject();
+};
+
+#endif
diff --git a/util/install/package/main.cpp b/util/install/package/main.cpp
new file mode 100644
index 0000000000..39c71dbb0c
--- /dev/null
+++ b/util/install/package/main.cpp
@@ -0,0 +1,397 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "qarchive.h"
+#include <qapplication.h>
+#include <qfileinfo.h>
+#include "keyinfo.h"
+#if defined(Q_OS_WIN32)
+#include <windows.h>
+#endif
+
+class ConsoleOutput : public QObject
+{
+ Q_OBJECT
+public:
+ ConsoleOutput() : QObject() { }
+ ~ConsoleOutput() { }
+public slots:
+ void updateProgress( const QString& str) { qDebug("%s", str.latin1()); }
+};
+
+static int usage(const char *argv0, const char *un=NULL) {
+ if(un)
+ fprintf(stderr, "Unknown command: %s\n", un);
+ else
+ fprintf(stderr, "Usage:\n");
+ fprintf(stderr, "%s [options] [keyinfo] files...\n", argv0);
+
+ fprintf(stderr, "\nOptions:\n");
+ fprintf(stderr, " -o file : Outputs archive to file\n");
+ fprintf(stderr, " -n : Follow symbolic links, do not archive the link\n");
+ fprintf(stderr, " -s : Quiet mode, will not output process\n");
+ fprintf(stderr, " -desc text : Add the description text to the archive (e.g. \"Qt 3.0.0\")\n");
+ fprintf(stderr, " -extra k v : Adds the extra value v with the key k to the archive\n");
+ fprintf(stderr, " -h : This help\n");
+
+ fprintf(stderr, "\nKey Info:\n");
+ fprintf(stderr, " -win : Windows Archive\n");
+ fprintf(stderr, " -unix : Unix Archive\n");
+ fprintf(stderr, " -mac : Mac OS X Archive\n");
+ fprintf(stderr, " -embedded : Embedded Archive\n");
+
+ fprintf(stderr, "\nThe following options are not for packaging and can't be\n" );
+ fprintf(stderr, "combined with the options above or any other option:\n\n" );
+ fprintf(stderr, " -unpack file : Unpack the archive file to the current directory\n");
+ fprintf(stderr, " -getdesc file : Print the description text of the archive file\n");
+ fprintf(stderr, " -getextra k file : Print the extra value for the key k of the archive file\n");
+#if defined(Q_OS_WIN32)
+ fprintf(stderr, " -res file1 file2 : Add the archive file1 as the binary resource\n");
+ fprintf(stderr, " QT_ARQ to the excutable file2\n");
+ fprintf(stderr, " -getres file : Get the binary resource QT_ARQ from the executable\n" );
+ fprintf(stderr, " file and store it under qt.arq\n");
+ fprintf(stderr, " -namedres RES_NAME file1 file2:\n");
+ fprintf(stderr, " Add the file1 as the binary resource\n");
+ fprintf(stderr, " RES_NAME to the excutable file2\n");
+ fprintf(stderr, " -license LICENSE file2:\n");
+ fprintf(stderr, " Add the license LICENSE as the binary resource\n");
+ fprintf(stderr, " LICENSE to the excutable file2\n");
+ fprintf(stderr, " -license-us LICENSE-US file2:\n");
+ fprintf(stderr, " Add the license LICENSE-US as the binary resource\n");
+ fprintf(stderr, " LICENSE-US to the excutable file2\n");
+#endif
+ return 665;
+}
+
+static int unpack( const char *filename, bool verbose )
+{
+ QArchive arq( filename );
+ ConsoleOutput output;
+ if ( verbose )
+ output.connect( &arq, SIGNAL(operationFeedback(const QString&)), SLOT(updateProgress(const QString&)) );
+ if ( !arq.open( IO_ReadOnly ) ) {
+ fprintf(stderr, "Can't open the archive %s file to unpack", filename);
+ return 42;
+ }
+ if ( !arq.readArchive( ".", "G87A-QJFE-DQF9" ) ) {
+ fprintf(stderr, "Couldn't unpack the archive %s", filename);
+ return 42;
+ }
+ return 0;
+}
+
+static int getdesc( const char *filename )
+{
+ QArchive arq( filename );
+ ConsoleOutput output;
+ output.connect( &arq, SIGNAL(operationFeedback(const QString&)), SLOT(updateProgress(const QString&)) );
+ if ( !arq.open( IO_ReadOnly ) ) {
+ fprintf(stderr, "Can't open the archive %s file to get description", filename);
+ return 42;
+ }
+ QArchiveHeader *header = arq.readArchiveHeader();
+ if ( !header ) {
+ fprintf(stderr, "Can't find the header in the archive %s file", filename);
+ return 42;
+ }
+ if ( !header->description().isNull() ) {
+ fprintf(stdout, header->description().latin1() );
+ }
+ return 0;
+}
+
+static int getextra( const char *key, const char *filename )
+{
+ QArchive arq( filename );
+ ConsoleOutput output;
+ output.connect( &arq, SIGNAL(operationFeedback(const QString&)), SLOT(updateProgress(const QString&)) );
+ if ( !arq.open( IO_ReadOnly ) ) {
+ fprintf(stderr, "Can't open the archive %s file to get description", filename);
+ return 42;
+ }
+ QArchiveHeader *header = arq.readArchiveHeader();
+ if ( !header ) {
+ fprintf(stderr, "Can't find the header in the archive %s file", filename);
+ return 42;
+ }
+ QString extraData = header->findExtraData(key);
+ if ( !extraData.isNull() ) {
+ fprintf(stdout, extraData.latin1() );
+ }
+ return 0;
+}
+
+
+int main( int argc, char** argv )
+{
+ uint features = 0;
+ bool output = true, doSyms = true;
+ QString desc;
+ QString dest;
+ QMap<QString,QString> extra;
+#if defined(Q_OS_WIN32)
+ QString arq, exe;
+ QString resName;
+ bool doRes = false;
+ bool doLicense = false;
+ bool doLicenseUs = false;
+ bool getRes = false;
+#endif
+ QStringList files;
+ int i;
+ for( i = 1; i < argc; i++ ) {
+ //options
+ if(!strcmp(argv[i], "-o")) {
+ if ( ++i < argc )
+ dest = argv[i];
+ else
+ return usage(argv[0]);
+ } else if(!strcmp(argv[i], "-n")) {
+ doSyms = false;
+ } else if(!strcmp(argv[i], "-s")) {
+ output = false;
+ } else if(!strcmp(argv[i], "-desc")) {
+ if ( ++i < argc )
+ desc = argv[i];
+ else
+ return usage(argv[0]);
+ } else if(!strcmp(argv[i], "-extra")) {
+ QString key, value;
+ if ( ++i < argc )
+ key = argv[i];
+ else
+ return usage(argv[0]);
+ if ( ++i < argc )
+ value = argv[i];
+ else
+ return usage(argv[0]);
+ extra.insert( key, value );
+ } else if(!strcmp(argv[i], "-h")) {
+ return usage(argv[0]);
+ //keyinfo
+ } else if(!strcmp(argv[i], "-unix")) {
+ features |= Feature_Unix;
+ } else if(!strcmp(argv[i], "-win")) {
+ features |= Feature_Windows;
+ } else if(!strcmp(argv[i], "-mac")) {
+ features |= Feature_Mac;
+ } else if(!strcmp(argv[i], "-embedded")) {
+ features |= Feature_Embedded;
+ //unpack
+ } else if(!strcmp(argv[i], "-unpack")) {
+ if ( ++i < argc )
+ return unpack( argv[i], output );
+ //getdesc
+ } else if(!strcmp(argv[i], "-getdesc")) {
+ if ( ++i < argc )
+ return getdesc( argv[i] );
+ //getextra
+ } else if(!strcmp(argv[i], "-getextra")) {
+ if ( ++i < argc ) {
+ if ( ++i < argc )
+ return getextra( argv[i-1], argv[i] );
+ }
+#if defined(Q_OS_WIN32)
+ //res (Windows only)
+ } else if(!strcmp(argv[i], "-res")) {
+ doRes = true;
+ if ( ++i < argc )
+ arq = argv[i];
+ if ( ++i < argc )
+ exe = argv[i];
+ //getres (Windows only)
+ } else if(!strcmp(argv[i], "-getres")) {
+ getRes = true;
+ if ( ++i < argc )
+ exe = argv[i];
+ //res (Windows only)
+ } else if(!strcmp(argv[i], "-namedres")) {
+ doRes = true;
+ if ( ++i < argc )
+ resName = argv[i];
+ if ( ++i < argc )
+ arq = argv[i];
+ if ( ++i < argc )
+ exe = argv[i];
+ //license (Windows only)
+ } else if(!strcmp(argv[i], "-license")) {
+ doLicense = true;
+ if ( ++i < argc )
+ arq = argv[i];
+ if ( ++i < argc )
+ exe = argv[i];
+ //licenseUs (Windows only)
+ } else if(!strcmp(argv[i], "-license-us")) {
+ doLicenseUs = true;
+ if ( ++i < argc )
+ arq = argv[i];
+ if ( ++i < argc )
+ exe = argv[i];
+#endif
+ //files
+ } else if(*(argv[i]) != '-') {
+ files.append(argv[i]);
+ //unknown
+ } else {
+ return usage(argv[0], argv[i]);
+ }
+ }
+#if defined(Q_OS_WIN32)
+ if ( doRes || doLicense || doLicenseUs ) {
+ if ( arq.isEmpty() || exe.isEmpty() )
+ return usage(argv[0], argv[i]);
+ QFile fArq( arq );
+ if ( !fArq.open( IO_ReadOnly ) ) {
+ if ( doRes ) {
+ fprintf(stderr, "Could not open archive %s", arq.latin1() );
+ } else {
+ fprintf(stderr, "Could not open license %s", arq.latin1() );
+ }
+ return -1;
+ }
+ QByteArray ba = fArq.readAll();
+ // ignore wide character versions (this is for internal use only)
+ HANDLE hExe = BeginUpdateResourceA( exe.latin1(), false );
+ if ( hExe == 0 ) {
+ fprintf(stderr, "Could not load executable %s\n", exe.latin1() );
+ qSystemWarning( "" );
+ return -1;
+ }
+ if ( resName.isEmpty() ) {
+ if ( doRes ) {
+ resName = "QT_ARQ";
+ } else if ( doLicense ){
+ resName = "LICENSE";
+ } else {
+ resName = "LICENSE-US";
+ }
+ }
+ if ( !UpdateResourceA(hExe,RT_RCDATA,resName.latin1(),0,ba.data(),ba.count()) ) {
+ EndUpdateResource( hExe, true );
+ fprintf(stderr, "Could not update executable %s\n", exe.latin1() );
+ qSystemWarning( "" );
+ return -1;
+ }
+ if ( !EndUpdateResource(hExe,false) ) {
+ fprintf(stderr, "Could not update executable %s\n", exe.latin1() );
+ qSystemWarning( "" );
+ return -1;
+ }
+ return 0;
+ }
+ if ( getRes ) {
+ if ( exe.isEmpty() )
+ return usage(argv[0], argv[i]);
+ arq = "qt.arq";
+ QFile fArq( arq );
+ if ( !fArq.open( IO_WriteOnly ) ) {
+ fprintf(stderr, "Could not open archive %s\n", arq.latin1() );
+ return -1;
+ }
+ // ignore wide character versions (this is for internal use only)
+ HMODULE hExe = LoadLibraryA( exe.latin1() );
+ if ( hExe == NULL ) {
+ fprintf(stderr, "Could not load executable %s\n", exe.latin1() );
+ qSystemWarning( "" );
+ return -1;
+ }
+ HRSRC resource = FindResource( hExe, "QT_ARQ", RT_RCDATA );
+ HGLOBAL hglobal = LoadResource( hExe, resource );
+ int arSize = SizeofResource( hExe, resource );
+ if ( arSize == 0 ) {
+ fprintf(stderr, "Could not get size of resource\n" );
+ qSystemWarning( "" );
+ return -1;
+ }
+ char *arData = (char*)LockResource( hglobal );
+ if ( arData == 0 ) {
+ fprintf(stderr, "Could not lock resource\n" );
+ qSystemWarning( "" );
+ return -1;
+ }
+ fArq.writeBlock( arData, arSize );
+ FreeLibrary( hExe );
+ return 0;
+ }
+#endif
+ if(!files.isEmpty()) {
+ if(dest.isEmpty()) {
+ qDebug("Please specify an output package");
+ return 666;
+ }
+
+ QArchive archive;
+ ConsoleOutput out;
+ if(output) {
+ QObject::connect( &archive, SIGNAL( operationFeedback( const QString& ) ),
+ &out, SLOT( updateProgress( const QString& ) ) );
+ archive.setVerbosity( QArchive::Destination | QArchive::Verbose );
+ }
+ archive.setSymbolicLinks(doSyms);
+ archive.setPath( dest );
+ if( !archive.open( IO_WriteOnly ) ) {
+ qDebug("Failed to open output %s", dest.latin1());
+ return 666;
+ }
+ QArchiveHeader header( features, desc );
+ QMap<QString,QString>::Iterator exIt;
+ for ( exIt = extra.begin(); exIt != extra.end(); ++exIt ) {
+ header.addExtraData( exIt.key(), exIt.data() );
+ }
+ archive.writeHeader( header );
+ for(QStringList::Iterator it = files.begin(); it != files.end(); ++it) {
+ QFileInfo f((*it));
+ if(!f.exists()) {
+ qDebug("Failed to open %s", (*it).latin1());
+ continue;
+ }
+ if(f.isDir())
+ archive.writeDir( (*it), true, (*it) );
+ else
+ archive.writeFile( (*it), (*it) );
+ }
+ archive.close();
+ } else {
+ return usage(argv[0]);
+ }
+ return 0;
+}
+
+#include "main.moc"
diff --git a/util/install/package/package.pro b/util/install/package/package.pro
new file mode 100644
index 0000000000..4edc96ef14
--- /dev/null
+++ b/util/install/package/package.pro
@@ -0,0 +1,25 @@
+TEMPLATE = app
+SOURCES = main.cpp
+INCLUDEPATH += ../archive $$QT_SOURCE_TREE/include ../keygen
+CONFIG += qt console
+TARGET = package
+win32:DESTDIR = ../../../bin
+unix:LIBS += -L$$QT_BUILD_TREE/util/install/archive -larq
+win32:LIBS += ../archive/arq.lib
+DEFINES -= UNICODE
+
+win32:!shared:SOURCES += \
+ ../../../src/3rdparty/zlib/adler32.c \
+ ../../../src/3rdparty/zlib/compress.c \
+ ../../../src/3rdparty/zlib/crc32.c \
+ ../../../src/3rdparty/zlib/deflate.c \
+ ../../../src/3rdparty/zlib/gzio.c \
+ ../../../src/3rdparty/zlib/infblock.c \
+ ../../../src/3rdparty/zlib/infcodes.c \
+ ../../../src/3rdparty/zlib/inffast.c \
+ ../../../src/3rdparty/zlib/inflate.c \
+ ../../../src/3rdparty/zlib/inftrees.c \
+ ../../../src/3rdparty/zlib/infutil.c \
+ ../../../src/3rdparty/zlib/trees.c \
+ ../../../src/3rdparty/zlib/uncompr.c \
+ ../../../src/3rdparty/zlib/zutil.c
diff --git a/util/install/win/archive.cpp b/util/install/win/archive.cpp
new file mode 100644
index 0000000000..81f8e536f2
--- /dev/null
+++ b/util/install/win/archive.cpp
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "archive.h"
+#include "resource.h"
+#include <qfile.h>
+#include <qmessagebox.h>
+#include <windows.h>
+
+bool addArchive( const QString& name )
+{
+ QByteArray ba ;
+
+ // Copy the install.exe first, since we can't update our own application
+ char aName[512];
+ if ( GetModuleFileNameA( 0, aName, 512 ) == 0 ) { // we don't need wide character versions
+ QMessageBox::critical( 0,
+ "Could not add archive",
+ QString( "Could not add archive %1.\n"
+ "Could not get the name of the application.").arg(name)
+ );
+ return false;
+ }
+ QFile fromFile( aName );
+ if ( !fromFile.open( IO_ReadOnly ) ) {
+ QMessageBox::critical( 0,
+ "Could not add archive",
+ QString("Could not copy executable %1.\n").arg(aName)
+ );
+ return false;
+ }
+ QString destinationName = name;
+ if ( destinationName.right(4) == ".arq" ) {
+ destinationName =destinationName.left( destinationName.length()-4 );
+ }
+ destinationName += ".exe";
+ QFile toFile( destinationName );
+ if ( !toFile.open( IO_WriteOnly ) ) {
+ QMessageBox::critical( 0,
+ "Could not add archive",
+ QString("Could not copy executable %1 to %2.\n").arg(aName).arg(destinationName)
+ );
+ return false;
+ }
+ ba = fromFile.readAll();
+ toFile.writeBlock( ba );
+ toFile.close();
+
+ // load the .arq file
+ QFile fArq( name );
+ if ( !fArq.open( IO_ReadOnly ) ) {
+ QMessageBox::critical( 0,
+ "Could not add archive",
+ QString("Could not open archive %1.\n").arg(name)
+ );
+ return false;
+ }
+ ba = fArq.readAll();
+
+ // update the binary res
+ ResourceSaver res( destinationName );
+ QString errorMsg;
+ if ( !res.setData( "QT_ARQ", ba, &errorMsg ) ) {
+ QMessageBox::critical( 0,
+ "Could not add archive",
+ QString("Could not add archive %1.\n").arg(name) + errorMsg
+ );
+ return false;
+ }
+
+#if 0
+ QMessageBox::information( 0,
+ "Archive added",
+ QString("Added the archive %1.\n").arg(name) + errorMsg
+ );
+#endif
+ return true;
+}
diff --git a/util/install/win/archive.h b/util/install/win/archive.h
new file mode 100644
index 0000000000..d470a2711c
--- /dev/null
+++ b/util/install/win/archive.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef ARCHIVE_H
+#define ARCHIVE_H
+
+#include <qstring.h>
+#include "resource.h"
+
+bool addArchive( const QString &name );
+
+#endif
diff --git a/util/install/win/dialogs/folderdlg.ui b/util/install/win/dialogs/folderdlg.ui
new file mode 100644
index 0000000000..c5427e2f3e
--- /dev/null
+++ b/util/install/win/dialogs/folderdlg.ui
@@ -0,0 +1,184 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>FolderDlg</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>FolderDlg</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>323</width>
+ <height>369</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Select installation folder</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QListView">
+ <column>
+ <property name="text">
+ <string>Start menu folder tree</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizeable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>folderTree</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>nameLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Folder name</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>folderName</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout1</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer>
+ <property name="name" stdset="0">
+ <cstring>Spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>okButton</cstring>
+ </property>
+ <property name="text">
+ <string>Ok</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>cancelButton</cstring>
+ </property>
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name" stdset="0">
+ <cstring>Spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+<connections>
+ <connection>
+ <sender>okButton</sender>
+ <signal>clicked()</signal>
+ <receiver>FolderDlg</receiver>
+ <slot>accept()</slot>
+ </connection>
+ <connection>
+ <sender>cancelButton</sender>
+ <signal>clicked()</signal>
+ <receiver>FolderDlg</receiver>
+ <slot>reject()</slot>
+ </connection>
+ <connection>
+ <sender>folderTree</sender>
+ <signal>expanded(QListViewItem*)</signal>
+ <receiver>FolderDlg</receiver>
+ <slot>expandedDir(QListViewItem*)</slot>
+ </connection>
+ <connection>
+ <sender>folderTree</sender>
+ <signal>collapsed(QListViewItem*)</signal>
+ <receiver>FolderDlg</receiver>
+ <slot>collapsedDir(QListViewItem*)</slot>
+ </connection>
+ <connection>
+ <sender>folderTree</sender>
+ <signal>selectionChanged(QListViewItem*)</signal>
+ <receiver>FolderDlg</receiver>
+ <slot>selectedDir(QListViewItem*)</slot>
+ </connection>
+ <slot access="public" language="C++">collapsedDir( QListViewItem* )</slot>
+ <slot access="protected" language="C++">destroy()</slot>
+ <slot access="public" language="C++">expandedDir( QListViewItem* )</slot>
+ <slot access="public" language="C++">selectedDir( QListViewItem* )</slot>
+ <slot access="protected" language="C++">init()</slot>
+</connections>
+<tabstops>
+ <tabstop>folderTree</tabstop>
+ <tabstop>folderName</tabstop>
+ <tabstop>okButton</tabstop>
+ <tabstop>cancelButton</tabstop>
+</tabstops>
+</UI>
diff --git a/util/install/win/dialogs/folderdlgimpl.cpp b/util/install/win/dialogs/folderdlgimpl.cpp
new file mode 100644
index 0000000000..8c3c27f594
--- /dev/null
+++ b/util/install/win/dialogs/folderdlgimpl.cpp
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "folderdlgimpl.h"
+#include "../shell.h"
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qpixmap.h>
+#include <qdir.h>
+
+FolderDlgImpl::FolderDlgImpl( QWidget* parent, const char* name, bool modal, WindowFlags f ) :
+ FolderDlg( parent, name, modal, f )
+{
+}
+
+void FolderDlgImpl::setup( QString programsFolder, QString folder )
+{
+ folderName->setText( folder );
+ if( programsFolder.length() ) {
+ QString topLevel = programsFolder.mid( programsFolder.findRev( '\\' ) + 1 );
+ QListViewItem* topItem = new QListViewItem( folderTree, topLevel );
+ topItem->setOpen( true );
+ topItem->setPixmap( 0, *WinShell::getOpenFolderImage() );
+
+ ScanFolder( programsFolder, topItem );
+
+ }
+}
+
+void FolderDlgImpl::ScanFolder( QString folderPath, QListViewItem* parent )
+{
+ QDir folderDir( folderPath );
+ folderDir.setFilter( QDir::Dirs );
+ folderDir.setSorting( QDir::Name | QDir::IgnoreCase );
+ const QFileInfoList* fiList = folderDir.entryInfoList();
+ QFileInfoListIterator it( *fiList );
+ QFileInfo* fi;
+
+ while( ( fi = it.current() ) ) {
+ if( fi->fileName()[0] != '.' ) { // Exclude dot-dirs
+ QListViewItem* item = new QListViewItem( parent, fi->fileName() );
+ item->setOpen( false );
+ item->setPixmap( 0, *WinShell::getClosedFolderImage() );
+ ScanFolder( fi->absFilePath(), item );
+ }
+ ++it;
+ }
+}
+
+void FolderDlgImpl::expandedDir( QListViewItem* item )
+{
+ item->setPixmap( 0, *WinShell::getOpenFolderImage() );
+}
+
+void FolderDlgImpl::collapsedDir( QListViewItem* item )
+{
+ item->setPixmap( 0, *WinShell::getClosedFolderImage() );
+}
+
+QString FolderDlgImpl::getFolderName()
+{
+ return folderName->text();
+}
+
+/*
+** This will replace the contents of the folderName lineedit widget.
+**
+** The algoritm will traverse the item tree until it gets to the toplevel
+** item, prepending each name to the folder name as it goes
+*/
+void FolderDlgImpl::selectedDir( QListViewItem* item )
+{
+ QListViewItem* currentItem = item;
+ QString newFolder;
+
+ while( currentItem->parent() ) {
+ newFolder = currentItem->text( 0 ) + QString( "\\" ) + newFolder;
+ currentItem = currentItem->parent();
+ }
+ newFolder.truncate( newFolder.length() - 1 );
+ folderName->setText( newFolder );
+}
diff --git a/util/install/win/dialogs/folderdlgimpl.h b/util/install/win/dialogs/folderdlgimpl.h
new file mode 100644
index 0000000000..25e13b5438
--- /dev/null
+++ b/util/install/win/dialogs/folderdlgimpl.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef FOLDERDLGIMPL_H
+#define FOLDERDLGIMPL_H
+
+#include "folderdlg.h"
+
+class WinShell;
+
+class FolderDlgImpl : public FolderDlg
+{
+ Q_OBJECT
+public:
+ FolderDlgImpl( QWidget* parent = NULL, const char* name = NULL, bool modal = false, WindowFlags f = 0 );
+
+ void setup( QString, QString );
+
+ virtual void expandedDir( QListViewItem* );
+ virtual void collapsedDir( QListViewItem* );
+ virtual void selectedDir( QListViewItem* );
+
+ QString getFolderName();
+private:
+ void ScanFolder( QString folderPath, QListViewItem* parent );
+};
+
+#endif // FOLDERDLGIMPL_H
diff --git a/util/install/win/environment.cpp b/util/install/win/environment.cpp
new file mode 100644
index 0000000000..bbf57194f9
--- /dev/null
+++ b/util/install/win/environment.cpp
@@ -0,0 +1,362 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "environment.h"
+#include <qnamespace.h>
+#include <qfile.h>
+#include <qtextstream.h>
+#include <qfileinfo.h>
+#include <qdir.h>
+#include <qsettings.h>
+#if defined(Q_OS_WIN32)
+#include <windows.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+QString QEnvironment::getEnv( const QString &varName, int envBlock )
+{
+#if defined(Q_OS_WIN32)
+ OSVERSIONINFOA osvi;
+ HKEY hkKey;
+ bool isWinMe = false;
+
+ if( envBlock & GlobalEnv )
+ hkKey = HKEY_LOCAL_MACHINE;
+ else
+ hkKey = HKEY_CURRENT_USER;
+
+ osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFOA );
+ GetVersionExA( &osvi );
+ if( int( qWinVersion() ) & int( Qt::WV_98 ) ) {
+ if( osvi.dwMinorVersion == 90 )
+ isWinMe = true;
+ }
+
+ if( envBlock & PersistentEnv ) {
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ HKEY env;
+ QByteArray buffer;
+ DWORD size( 0 );
+ QString value;
+
+ if( RegOpenKeyExW( hkKey, L"Environment", 0, KEY_READ, &env ) == ERROR_SUCCESS ) {
+ RegQueryValueExW( env, (const wchar_t*) varName.ucs2(), 0, NULL, NULL, &size );
+ buffer.resize( size );
+ RegQueryValueExW( env, (const wchar_t*) varName.ucs2(), 0, NULL, (unsigned char*)buffer.data(), &size );
+ for( int i = 0; i < ( int )buffer.size(); i += 2 ) {
+ QChar c( buffer[ i ], buffer[ i + 1 ] );
+ if( !c.isNull() )
+ value += c;
+ }
+ RegCloseKey( env );
+ return value;
+ }
+ else {
+ return QString();
+ }
+ }
+ else { // Win 9x
+ // Persistent environment on Windows 9x is not fully supported yet.
+ return QString( getenv( varName ) );
+ }
+ }
+ if( envBlock & LocalEnv ) {
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ int size = GetEnvironmentVariableW( (TCHAR*)varName.ucs2(), 0, 0 );
+ if ( size == 0 )
+ return QString();
+ TCHAR *data = new TCHAR[ size ];
+ GetEnvironmentVariableW( (TCHAR*)varName.ucs2(), data, size );
+ QString ret = QString::fromUcs2( data );
+ delete[] data;
+ return ret;
+ } else {
+ QCString varNameL = varName.local8Bit();
+ int size = GetEnvironmentVariableA( varNameL.data(), 0, 0 );
+ if ( size == 0 )
+ return QString();
+ char *data = new char[ size ];
+ GetEnvironmentVariableA( varNameL.data(), data, size );
+ QString ret = QString::fromLocal8Bit( data );
+ delete[] data;
+ return ret;
+ }
+ }
+#elif defined(Q_OS_UNIX)
+// Persistent environment on Unix is not supported yet.
+ if( envBlock & LocalEnv ) {
+ return QString( getenv( varName ) );
+ }
+#endif
+ return QString();
+}
+
+void QEnvironment::putEnv( const QString &varName, const QString &varValue, int envBlock )
+{
+#if defined(Q_OS_WIN32)
+ OSVERSIONINFOA osvi;
+ HKEY hkKey;
+ bool isWinMe = false;
+
+ if( envBlock & GlobalEnv )
+ hkKey = HKEY_LOCAL_MACHINE;
+ else
+ hkKey = HKEY_CURRENT_USER;
+
+ osvi.dwOSVersionInfoSize = sizeof( OSVERSIONINFOA );
+ GetVersionExA( &osvi );
+ if( int( qWinVersion() ) & int( Qt::WV_98 ) ) {
+ if( osvi.dwMinorVersion == 90 )
+ isWinMe = true;
+ }
+
+ if( envBlock & PersistentEnv ) {
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+
+ HKEY env;
+ QByteArray buffer;
+
+ buffer.resize( varValue.length() * 2 + 2 );
+ const QChar *data = varValue.unicode();
+ int i;
+ for ( i = 0; i < (int)varValue.length(); ++i ) {
+ buffer[ 2*i ] = data[ i ].cell();
+ buffer[ (2*i)+1 ] = data[ i ].row();
+ }
+ buffer[ (2*i) ] = 0;
+ buffer[ (2*i)+1 ] = 0;
+
+ if( RegOpenKeyExW( hkKey, L"Environment", 0, KEY_WRITE, &env ) == ERROR_SUCCESS ) {
+ RegSetValueExW( env, (const wchar_t*) varName.ucs2(), 0, REG_EXPAND_SZ, (const unsigned char*)buffer.data(), buffer.size() );
+ RegCloseKey( env );
+ }
+ DWORD res;
+ SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM("Environment"), SMTO_ABORTIFHUNG | SMTO_BLOCK, 1, &res);
+ }
+ else { // Win 9x
+ QFile autoexec( "c:\\autoexec.bat" );
+ QTextStream ostream( &autoexec );
+ ostream.setEncoding( QTextStream::Locale );
+
+ if( autoexec.open( IO_Append | IO_ReadWrite | IO_Translate ) ) {
+ ostream << "set " << varName << "=" << varValue << endl;
+ autoexec.close();
+ }
+ }
+ }
+ if( envBlock & LocalEnv ) {
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ SetEnvironmentVariableW( (TCHAR*)varName.ucs2(), (const wchar_t*) varValue.ucs2() );
+ } else {
+ SetEnvironmentVariableA( varName.local8Bit(), varValue.local8Bit() );
+ }
+ }
+#else
+ if( envBlock & LocalEnv )
+ setenv( varName, varValue, 1 );
+#endif
+}
+
+void QEnvironment::removeEnv( const QString &varName, int envBlock )
+{
+#if defined(Q_OS_WIN32)
+ HKEY hkKey;
+ if( envBlock & GlobalEnv )
+ hkKey = HKEY_LOCAL_MACHINE;
+ else
+ hkKey = HKEY_CURRENT_USER;
+
+ if( envBlock & PersistentEnv ) {
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ HKEY env;
+ if( RegOpenKeyExW( hkKey, L"Environment", 0, KEY_WRITE, &env ) == ERROR_SUCCESS ) {
+ RegDeleteValue( env, (const wchar_t*) varName.ucs2() );
+ RegCloseKey( env );
+ }
+ }
+ else { // Win 9x
+ QFile autoexec( "c:\\autoexec.bat" );
+ QTextStream ostream( &autoexec );
+ ostream.setEncoding( QTextStream::Locale );
+
+ if( autoexec.open( IO_Append | IO_ReadWrite | IO_Translate ) ) {
+ ostream << "set " << varName << "=" << endl;
+ autoexec.close();
+ }
+ }
+ }
+
+ if( envBlock & LocalEnv ) {
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ SetEnvironmentVariableW( (TCHAR*)varName.ucs2(), 0 );
+ } else {
+ SetEnvironmentVariableA( varName.local8Bit(), 0 );
+ }
+ }
+#endif
+}
+
+#if defined(Q_OS_WIN32)
+void QEnvironment::recordUninstall( const QString &displayName, const QString &cmdString )
+{
+ QSettings settings;
+ settings.insertSearchPath(QSettings::Windows, "/Microsoft/Windows/CurrentVersion/Uninstall");
+ settings.beginGroup("/" + displayName);
+ settings.writeEntry("/DisplayName", displayName);
+ settings.writeEntry("/Publisher", "Nokia Corporation and/or its subsidiary(-ies)");
+ settings.writeEntry("/URLInfoAbout", "http://qtsoftware.com");
+ settings.writeEntry("/HelpLink", "http://qtsoftware.com/support");
+ settings.writeEntry("/UninstallString", cmdString);
+ settings.endGroup();
+}
+
+void QEnvironment::removeUninstall( const QString &displayName )
+{
+ QSettings settings;
+ settings.insertSearchPath(QSettings::Windows, "/Microsoft/Windows/CurrentVersion/Uninstall");
+ settings.beginGroup("/" + displayName);
+ settings.removeEntry("/DisplayName");
+ settings.removeEntry("/Publisher");
+ settings.removeEntry("/URLInfoAbout");
+ settings.removeEntry("/DisplayVersion");
+ settings.removeEntry("/HelpLink");
+ settings.removeEntry("/UninstallString");
+ settings.removeEntry("/.");
+ settings.endGroup();
+}
+
+QString QEnvironment::getRegistryString( const QString &keyName, const QString &valueName, int scope )
+{
+ QString value;
+ HKEY scopeKeys[] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE };
+ HKEY key;
+ DWORD valueSize( 0 );
+ QByteArray buffer, expBuffer;
+
+ if( int( qWinVersion() ) & int(Qt::WV_NT_based) ) {
+ if( RegOpenKeyExW( scopeKeys[ scope ], (const wchar_t*) keyName.ucs2(), 0, KEY_READ, &key ) == ERROR_SUCCESS ) {
+ if( RegQueryValueExW( key, (const wchar_t*) valueName.ucs2(), NULL, NULL, NULL, &valueSize ) == ERROR_SUCCESS ) {
+ buffer.resize( valueSize );
+ if( RegQueryValueExW( key, (const wchar_t*) valueName.ucs2(), NULL, NULL, (unsigned char*)buffer.data(), &valueSize ) == ERROR_SUCCESS ) {
+ valueSize = ExpandEnvironmentStringsW( (WCHAR*)buffer.data(), NULL, 0 );
+ expBuffer.resize( valueSize * 2 );
+ ExpandEnvironmentStringsW( (WCHAR*)buffer.data(), (WCHAR*)expBuffer.data(), valueSize );
+ for( int i = 0; i < ( int )expBuffer.size(); i += 2 ) {
+ QChar c( expBuffer[ i ], expBuffer[ i + 1 ] );
+ if ( !c.isNull() )
+ value += c;
+ }
+ }
+ }
+ RegCloseKey( key );
+ }
+ }
+ else {
+ if( RegOpenKeyExA( scopeKeys[ scope ], keyName.local8Bit(), 0, KEY_READ, &key ) == ERROR_SUCCESS ) {
+ if( RegQueryValueExA( key, valueName.local8Bit(), NULL, NULL, NULL, &valueSize ) == ERROR_SUCCESS ) {
+ buffer.resize( valueSize );
+ if( RegQueryValueExA( key, valueName.local8Bit(), NULL, NULL, (unsigned char*)buffer.data(), &valueSize ) == ERROR_SUCCESS ) {
+ valueSize = ExpandEnvironmentStringsA( buffer.data(), NULL, 0 );
+ expBuffer.resize( valueSize );
+ ExpandEnvironmentStringsA( buffer.data(), expBuffer.data(), valueSize );
+ value = expBuffer.data();
+ }
+ }
+ RegCloseKey( key );
+ }
+ }
+ return value;
+}
+#endif
+
+QString QEnvironment::getTempPath()
+{
+#if defined(Q_OS_WIN32)
+ DWORD tmpSize;
+ QByteArray tmp;
+ QString tmpPath;
+
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ tmpSize = GetTempPathW( 0, NULL );
+ tmp.resize( tmpSize * 2 );
+ GetTempPathW( tmpSize, (WCHAR*)tmp.data() );
+ for( int i = 0; i < ( int )tmp.size(); i += 2 ) {
+ QChar c( tmp[ i ], tmp[ i + 1 ] );
+ if( !c.isNull() )
+ tmpPath += c;
+ }
+ }
+ else {
+ tmpSize = GetTempPathA( 0, NULL );
+ tmp.resize( tmpSize * 2 );
+ GetTempPathA( tmpSize, tmp.data() );
+ tmpPath = tmp.data();
+ }
+#elif defined(Q_OS_UNIX)
+ QString tmpPath = "/tmp";
+#endif
+ return tmpPath;
+}
+
+QString QEnvironment::getLastError()
+{
+ return strerror( errno );
+}
+
+QString QEnvironment::getFSFileName( const QString& fileName )
+{
+#if defined(Q_OS_WIN32)
+ QByteArray buffer( MAX_PATH );
+ QString tmp( fileName );
+
+ GetVolumeInformationA( fileName.left( fileName.find( '\\' ) + 1 ).local8Bit(), NULL, NULL, NULL, NULL, NULL, buffer.data(), buffer.size() );
+ if( QString( buffer.data() ) != "NTFS" ) {
+ DWORD dw;
+ dw = GetShortPathNameA( fileName.local8Bit(), (char*)buffer.data(), buffer.size() );
+ if( dw > 0 )
+ tmp = buffer.data();
+ }
+#elif defined(Q_OS_UNIX)
+ QString tmp( fileName );
+#endif
+ return tmp;
+}
diff --git a/util/install/win/environment.h b/util/install/win/environment.h
new file mode 100644
index 0000000000..d0f45e4644
--- /dev/null
+++ b/util/install/win/environment.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef ENVIRONMENT_H
+#define ENVIRONMENT_H
+
+#include <qstring.h>
+
+class QEnvironment
+{
+public:
+ static QString getEnv( const QString &varName, int envBlock = LocalEnv );
+ static void putEnv( const QString &varName, const QString &varValue, int envBlock = LocalEnv );
+ static void removeEnv( const QString &varName, int envBlock = LocalEnv );
+#if defined(Q_OS_WIN32)
+ static QString getRegistryString( const QString &keyName, const QString &valueName, int scope = CurrentUser );
+ static void recordUninstall( const QString &displayName, const QString &cmdString );
+ static void removeUninstall( const QString &displayName );
+#endif
+ static QString getTempPath();
+ static QString getLastError();
+ static QString getFSFileName( const QString& fileName );
+
+ enum {
+ LocalEnv = 1,
+ PersistentEnv = 2,
+ GlobalEnv = 4
+ };
+
+ enum {
+ CurrentUser = 0,
+ LocalMachine = 1
+ };
+};
+
+#endif
diff --git a/util/install/win/globalinformation.cpp b/util/install/win/globalinformation.cpp
new file mode 100644
index 0000000000..a05db1e3fc
--- /dev/null
+++ b/util/install/win/globalinformation.cpp
@@ -0,0 +1,168 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "globalinformation.h"
+
+GlobalInformation::GlobalInformation() :
+ _qtVersionStr( QT_VERSION_STR ),
+ _reconfig( false )
+{
+#if defined(Q_OS_WIN32)
+ _sysId = Other;
+#elif defined(Q_OS_MACX)
+ _sysId = MACX;
+#else
+ _sysId = MingW32;
+#endif
+}
+
+GlobalInformation::~GlobalInformation()
+{
+}
+
+void GlobalInformation::setReconfig( bool r )
+{
+ _reconfig = r;
+}
+
+bool GlobalInformation::reconfig() const
+{
+ return _reconfig;
+}
+
+void GlobalInformation::setQtVersionStr( const QString& qvs )
+{
+ _qtVersionStr = qvs;
+}
+
+QString GlobalInformation::qtVersionStr() const
+{
+ return _qtVersionStr;
+}
+
+#if defined(QSA)
+void GlobalInformation::setQsaVersionStr( const QString& qvs )
+{
+ _qsaVersionStr = qvs;
+}
+
+QString GlobalInformation::qsaVersionStr() const
+{
+ return _qsaVersionStr;
+}
+#endif
+
+void GlobalInformation::setSysId( SysId s )
+{
+ _sysId = s;
+}
+
+GlobalInformation::SysId GlobalInformation::sysId() const
+{
+ return _sysId;
+}
+
+QString GlobalInformation::text(Text t) const
+{
+ QString str;
+
+ switch (_sysId) {
+ case MSVC:
+ if (t == IDE)
+ str = "Microsoft Visual Studio 6.0";
+ else if (t == Mkspec)
+ str = "win32-msvc";
+ else if (t == MakeTool)
+ str = "nmake.exe";
+ break;
+ case MSVCNET:
+ if (t == IDE)
+ str = "Microsoft Visual Studio .NET";
+ else if (t == Mkspec)
+ str = "win32-msvc.net";
+ else if (t == MakeTool)
+ str = "nmake.exe";
+ break;
+ case Watcom:
+ if (t == Mkspec)
+ str = "win32-watcom";
+ else if (t == MakeTool)
+ str = "wmake.exe";
+ break;
+ case Intel:
+ if (t == Mkspec)
+ str = "win32-icc";
+ else if (t == MakeTool)
+ str = "nmake.exe";
+ break;
+ case GCC:
+ if (t == Mkspec)
+ str = "win32-g++";
+ else if (t == MakeTool)
+ str = "gmake.exe";
+ break;
+ case MACX:
+ if (t == Mkspec)
+ str = "mac-g++";
+ else if (t == MakeTool)
+ str = "make";
+ break;
+ case MinGW:
+ if (t == Mkspec)
+ str = "win32-g++";
+ else if (t == MakeTool)
+ str = "mingw32-make.exe";
+ break;
+ case Borland:
+ if (t == Mkspec)
+ str = "win32-borland";
+ else if (t == MakeTool)
+ str = "make.exe";
+ break;
+ default:
+ if (t == Mkspec)
+ str = "Custom";
+ else if (t == MakeTool)
+ str = "make.exe";
+ break;
+ }
+
+ return str;
+}
diff --git a/util/install/win/globalinformation.h b/util/install/win/globalinformation.h
new file mode 100644
index 0000000000..843dac61d5
--- /dev/null
+++ b/util/install/win/globalinformation.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef GLOBALINFORMATION_H
+#define GLOBALINFORMATION_H
+#include <qstring.h>
+
+class GlobalInformation
+{
+public:
+ GlobalInformation();
+ ~GlobalInformation();
+
+ void setReconfig( bool );
+ bool reconfig() const;
+ void setQtVersionStr( const QString& );
+ QString qtVersionStr() const;
+#if defined(QSA)
+ void setQsaVersionStr( const QString& );
+ QString qsaVersionStr() const;
+#endif
+
+ enum SysId {
+ MSVCNET = 0,
+ MSVC = 1,
+ Borland = 2,
+ MinGW = 3,
+ Other = 4,
+ Watcom = 5,
+ Intel = 6,
+ GCC = 7,
+ MACX = 8
+ };
+ void setSysId( SysId );
+ SysId sysId() const;
+
+ enum Text {
+ MakeTool,
+ IDE,
+ Mkspec
+ };
+
+ QString text(Text t) const;
+
+private:
+ bool _reconfig;
+ QString _qtVersionStr;
+#if defined(QSA)
+ QString _qsaVersionStr;
+#endif
+ SysId _sysId;
+};
+
+extern GlobalInformation globalInformation;
+
+#endif // GLOBALINFORMATION_H
diff --git a/util/install/win/install-edu.rc b/util/install/win/install-edu.rc
new file mode 100644
index 0000000000..3e50c1ccf6
--- /dev/null
+++ b/util/install/win/install-edu.rc
@@ -0,0 +1,3 @@
+IDI_ICON1 ICON DISCARDABLE "install.ico"
+LICENSE RCDATA "../../../dist/edu/LICENSE"
+QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install-eval.rc b/util/install/win/install-eval.rc
new file mode 100644
index 0000000000..78f047736e
--- /dev/null
+++ b/util/install/win/install-eval.rc
@@ -0,0 +1,3 @@
+IDI_ICON1 ICON DISCARDABLE "install.ico"
+LICENSE RCDATA "../../../dist/trial/LICENSE"
+QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install-noncommercial.rc b/util/install/win/install-noncommercial.rc
new file mode 100644
index 0000000000..b7d5b7c27f
--- /dev/null
+++ b/util/install/win/install-noncommercial.rc
@@ -0,0 +1,4 @@
+IDI_ICON1 ICON DISCARDABLE "install.ico"
+LICENSE RCDATA "../../../dist/noncommercial/LICENSE"
+LICENSE-US RCDATA "../../../dist/noncommercial/LICENSE-US"
+QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install-qsa.rc b/util/install/win/install-qsa.rc
new file mode 100644
index 0000000000..f971c3f924
--- /dev/null
+++ b/util/install/win/install-qsa.rc
@@ -0,0 +1,5 @@
+IDI_ICON1 ICON DISCARDABLE "install.ico"
+LICENSE RCDATA "../../../dist/trial/LICENSE"
+LICENSE_QSA RCDATA "../../../../qsa/dist/eval/LICENSE.EVAL"
+QT_ARQ RCDATA "qt.arq"
+QSA_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/install.ico b/util/install/win/install.ico
new file mode 100644
index 0000000000..b996fb76b8
--- /dev/null
+++ b/util/install/win/install.ico
Binary files differ
diff --git a/util/install/win/install.rc b/util/install/win/install.rc
new file mode 100644
index 0000000000..321c245f5f
--- /dev/null
+++ b/util/install/win/install.rc
@@ -0,0 +1,4 @@
+IDI_ICON1 ICON DISCARDABLE "install.ico"
+LICENSE RCDATA "../../../dist/commercial/LICENSE"
+LICENSE-US RCDATA "../../../dist/commercial/LICENSE-US"
+QT_ARQ RCDATA "qt.arq"
diff --git a/util/install/win/main.cpp b/util/install/win/main.cpp
new file mode 100644
index 0000000000..0c215239ad
--- /dev/null
+++ b/util/install/win/main.cpp
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qapplication.h>
+#include <qmessagebox.h>
+#include "setupwizardimpl.h"
+#include "resource.h"
+#include "globalinformation.h"
+#include "environment.h"
+
+#if defined Q_OS_WIN32
+#include "archive.h"
+#endif
+
+GlobalInformation globalInformation;
+SetupWizardImpl *wizard = 0;
+
+int main( int argc, char** argv )
+{
+ QApplication app( argc, argv );
+ int res( -1 );
+
+ for( int i = 0; i < app.argc(); i++ ) {
+ if( QString( app.argv()[i] ) == "-reconfig" ) {
+ globalInformation.setReconfig( true );
+
+ QString qmakespec = QEnvironment::getEnv( "QMAKESPEC" );
+ for (int mks = 0; mks <= GlobalInformation::MACX; ++mks) {
+ if (globalInformation.text(GlobalInformation::Mkspec) == qmakespec) {
+ globalInformation.setSysId((GlobalInformation::SysId)mks);
+ break;
+ }
+ }
+
+ if ( ++i < app.argc() ) {
+ globalInformation.setQtVersionStr( app.argv()[i] );
+ }
+ break;
+#if defined(Q_OS_WIN32)
+ } else if ( QString( app.argv()[i] ) == "-add-archive" ) {
+ // -add-archive is an internal option to add the
+ // binary resource QT_ARQ
+ if ( ++i < app.argc() ) {
+ if ( addArchive( app.argv()[i] ) )
+ return 0;
+ }
+ return res;
+#endif
+ }
+ }
+
+ wizard = new SetupWizardImpl( 0, 0, false, Qt::WStyle_NormalBorder | Qt::WStyle_Customize | Qt::WStyle_MinMax | Qt::WStyle_SysMenu | Qt::WStyle_Title );
+ wizard->show();
+
+ app.setMainWidget( wizard );
+ res = app.exec();
+
+ wizard->stopProcesses();
+
+ //### memory leak
+
+ return res;
+}
diff --git a/util/install/win/pages/buildpage.ui b/util/install/win/pages/buildpage.ui
new file mode 100644
index 0000000000..0ab4965043
--- /dev/null
+++ b/util/install/win/pages/buildpage.ui
@@ -0,0 +1,92 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>BuildPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>BuildPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>462</width>
+ <height>276</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form11</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout13</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QTextView">
+ <property name="name">
+ <cstring>outputDisplay</cstring>
+ </property>
+ <property name="font">
+ <font>
+ <family>Courier</family>
+ </font>
+ </property>
+ <property name="vScrollBarMode">
+ <enum>AlwaysOn</enum>
+ </property>
+ <property name="hScrollBarMode">
+ <enum>AlwaysOn</enum>
+ </property>
+ <property name="textFormat">
+ <enum>LogText</enum>
+ </property>
+ <property name="wordWrap">
+ <enum>NoWrap</enum>
+ </property>
+ <property name="autoFormatting">
+ <set>AutoNone</set>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout12</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QProgressBar">
+ <property name="name">
+ <cstring>compileProgress</cstring>
+ </property>
+ <property name="percentageVisible">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>restartBuild</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;Replace&gt;</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/configpage.ui b/util/install/win/pages/configpage.ui
new file mode 100644
index 0000000000..8223d8e073
--- /dev/null
+++ b/util/install/win/pages/configpage.ui
@@ -0,0 +1,474 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>ConfigPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>ConfigPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>460</width>
+ <height>284</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form9</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout3</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QCheckBox" row="1" column="3">
+ <property name="name">
+ <cstring>rebuildInstallation</cstring>
+ </property>
+ <property name="text">
+ <string>Rebuild Qt after reconfiguration</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QTextView" row="0" column="2" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>explainOption</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>5</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>200</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="palette">
+ <palette>
+ <active>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>233</red>
+ <green>231</green>
+ <blue>227</blue>
+ </color>
+ <color>
+ <red>106</red>
+ <green>104</green>
+ <blue>100</blue>
+ </color>
+ <color>
+ <red>141</red>
+ <green>138</green>
+ <blue>133</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>10</red>
+ <green>36</green>
+ <blue>106</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>0</green>
+ <blue>255</blue>
+ </color>
+ </active>
+ <disabled>
+ <color>
+ <red>128</red>
+ <green>128</green>
+ <blue>128</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>243</red>
+ <green>239</green>
+ <blue>230</blue>
+ </color>
+ <color>
+ <red>106</red>
+ <green>104</green>
+ <blue>100</blue>
+ </color>
+ <color>
+ <red>141</red>
+ <green>138</green>
+ <blue>133</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>128</red>
+ <green>128</green>
+ <blue>128</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>10</red>
+ <green>36</green>
+ <blue>106</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>0</green>
+ <blue>255</blue>
+ </color>
+ </disabled>
+ <inactive>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>243</red>
+ <green>239</green>
+ <blue>230</blue>
+ </color>
+ <color>
+ <red>106</red>
+ <green>104</green>
+ <blue>100</blue>
+ </color>
+ <color>
+ <red>141</red>
+ <green>138</green>
+ <blue>133</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>212</red>
+ <green>208</green>
+ <blue>200</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>0</blue>
+ </color>
+ <color>
+ <red>10</red>
+ <green>36</green>
+ <blue>106</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>255</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>0</red>
+ <green>0</green>
+ <blue>255</blue>
+ </color>
+ <color>
+ <red>255</red>
+ <green>0</green>
+ <blue>255</blue>
+ </color>
+ </inactive>
+ </palette>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>currentInstLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Active Qt installation</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>currentInstallation</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape">
+ <enum>StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ </widget>
+ <widget class="QTabWidget" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>configTabs</cstring>
+ </property>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>installTab</cstring>
+ </property>
+ <attribute name="title">
+ <string>Install</string>
+ </attribute>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QListView">
+ <column>
+ <property name="text">
+ <string>Installation options</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizeable">
+ <bool>false</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>installList</cstring>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>generalTab</cstring>
+ </property>
+ <attribute name="title">
+ <string>General</string>
+ </attribute>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QListView" row="0" column="0">
+ <column>
+ <property name="text">
+ <string>Qt Library configuration</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizeable">
+ <bool>false</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>configList</cstring>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>advancedTab</cstring>
+ </property>
+ <attribute name="title">
+ <string>Advanced</string>
+ </attribute>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QListView">
+ <column>
+ <property name="text">
+ <string>Advanced options</string>
+ </property>
+ <property name="clickable">
+ <bool>true</bool>
+ </property>
+ <property name="resizeable">
+ <bool>true</bool>
+ </property>
+ </column>
+ <property name="name">
+ <cstring>advancedList</cstring>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </widget>
+ </grid>
+ </widget>
+ </hbox>
+</widget>
+<tabstops>
+ <tabstop>configTabs</tabstop>
+ <tabstop>configList</tabstop>
+ <tabstop>explainOption</tabstop>
+ <tabstop>rebuildInstallation</tabstop>
+ <tabstop>advancedList</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/finishpage.ui b/util/install/win/pages/finishpage.ui
new file mode 100644
index 0000000000..de6b5f7f89
--- /dev/null
+++ b/util/install/win/pages/finishpage.ui
@@ -0,0 +1,63 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>FinishPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>FinishPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>444</width>
+ <height>284</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form12</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout1</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QTextView">
+ <property name="name">
+ <cstring>finishText</cstring>
+ </property>
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>showReadmeCheck</cstring>
+ </property>
+ <property name="text">
+ <string>Show README file</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/folderspage.ui b/util/install/win/pages/folderspage.ui
new file mode 100644
index 0000000000..ada15f7219
--- /dev/null
+++ b/util/install/win/pages/folderspage.ui
@@ -0,0 +1,259 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>FoldersPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>FoldersPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>443</width>
+ <height>284</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form8</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout15</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QGroupBox" row="0" column="0">
+ <property name="name">
+ <cstring>folderBox</cstring>
+ </property>
+ <property name="title">
+ <string>Folders and paths</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>folderLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Program &amp;folder</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>folderPath</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>Layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>folderPath</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>folderPathButton</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>qtDirLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Set &amp;QTDIR</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>qtDirCheck</cstring>
+ </property>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>devSysLabel</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>&amp;Path</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>devSysPath</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="2" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>Layout3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>devSysPath</cstring>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>devSysPathButton</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>groupLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Folder &amp;group</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>folderGroups</cstring>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="3" column="1" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>folderGroups</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="1" column="1">
+ <property name="name">
+ <cstring>qtDirCheck</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <spacer row="1" column="2">
+ <property name="name" stdset="0">
+ <cstring>Spacer8</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ <spacer row="1" column="0">
+ <property name="name" stdset="0">
+ <cstring>Spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </grid>
+ </widget>
+ </hbox>
+</widget>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="379">789c5d8ecb0a02310c45f7fd8ad0ec069907f531207e82e252101769b5388b51d07121e2bf6b1f195b6f28cd3d24b7ad0ad86dd75054e23ed0d0193067ba41717cf4fd737f58bd846ce6d028984123274296606073bd9c5c8fdf1eeba92b678db36dddaa60c959abec2258cdd62a9fc3424477a50cfdc18cc5d9c0e20eaffbbf90260c2a390f35c54a1823fa9bc39fc63cc3429e4b51cccb5060398a6c5478f7bd141fb90a5251</data>
+ </image>
+</images>
+<tabstops>
+ <tabstop>folderPath</tabstop>
+ <tabstop>folderPathButton</tabstop>
+ <tabstop>qtDirCheck</tabstop>
+ <tabstop>devSysPath</tabstop>
+ <tabstop>devSysPathButton</tabstop>
+ <tabstop>folderGroups</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/licenseagreementpage.ui b/util/install/win/pages/licenseagreementpage.ui
new file mode 100644
index 0000000000..5349e1fd13
--- /dev/null
+++ b/util/install/win/pages/licenseagreementpage.ui
@@ -0,0 +1,202 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>LicenseAgreementPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>LicenseAgreementPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>440</width>
+ <height>284</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form3</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout4</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>countryLayout</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>spacer4</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>31</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>countryLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Please choose your region:</string>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>North or South America</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Anywhere outside North and South America</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>countryCombo</cstring>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>51</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QTextView">
+ <property name="name">
+ <cstring>introText</cstring>
+ </property>
+ <property name="text">
+ <string>The license could not be found in the package. The package might be corrupted.
+Please contact support@trolltech.com to resolve the problem.</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout3</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer1_3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>156</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>licenceButtons</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>NoFrame</enum>
+ </property>
+ <property name="title">
+ <string></string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>acceptLicense</cstring>
+ </property>
+ <property name="text">
+ <string>I agree</string>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>rejectLicense</cstring>
+ </property>
+ <property name="text">
+ <string>I disagree</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer3</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>155</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/licensepage.ui b/util/install/win/pages/licensepage.ui
new file mode 100644
index 0000000000..9c7b98c022
--- /dev/null
+++ b/util/install/win/pages/licensepage.ui
@@ -0,0 +1,264 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>LicensePage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>LicensePage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>445</width>
+ <height>284</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form2</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout6</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel" row="3" column="0">
+ <property name="name">
+ <cstring>licenseeLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Licensee</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="5" column="0">
+ <property name="name">
+ <cstring>expiryLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Support and upgrade expiry</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="5" column="1">
+ <property name="name">
+ <cstring>expiryDate</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="2" column="1">
+ <property name="name">
+ <cstring>licenseID</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="1" column="0">
+ <property name="name">
+ <cstring>customerIDLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Customer ID</string>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="6" column="1">
+ <property name="name">
+ <cstring>key</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="4" column="0">
+ <property name="name">
+ <cstring>productsLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Products</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>productsString</cstring>
+ </property>
+ </widget>
+ <widget class="QLineEdit" row="3" column="1">
+ <property name="name">
+ <cstring>licenseeName</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>licenseInfoHeader</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>1</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Enter the supplied license information here, all fields except Licensee are mandatory.
+Alternatively, the installation wizard may read them from a license file.</string>
+ </property>
+ <property name="alignment">
+ <set>WordBreak|AlignVCenter</set>
+ </property>
+ </widget>
+ <widget class="QComboBox" row="4" column="1">
+ <item>
+ <property name="text">
+ <string>qt-professional</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>qt-enterprise</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>productsString</cstring>
+ </property>
+ </widget>
+ <spacer row="8" column="1">
+ <property name="name">
+ <cstring>Spacer7</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ </spacer>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>licenseIDLabel</cstring>
+ </property>
+ <property name="text">
+ <string>License ID</string>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="7" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>Layout5</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer5</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>readLicenseButton</cstring>
+ </property>
+ <property name="text">
+ <string>Read from file...</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer6</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QLineEdit" row="1" column="1">
+ <property name="name">
+ <cstring>customerID</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ <widget class="QLabel" row="6" column="0">
+ <property name="name">
+ <cstring>keyLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Product key</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </hbox>
+</widget>
+<tabstops>
+ <tabstop>customerID</tabstop>
+ <tabstop>licenseID</tabstop>
+ <tabstop>licenseeName</tabstop>
+ <tabstop>productsString</tabstop>
+ <tabstop>expiryDate</tabstop>
+ <tabstop>key</tabstop>
+ <tabstop>readLicenseButton</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/optionspage.ui b/util/install/win/pages/optionspage.ui
new file mode 100644
index 0000000000..01033d26f4
--- /dev/null
+++ b/util/install/win/pages/optionspage.ui
@@ -0,0 +1,503 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>OptionsPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>OptionsPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>413</width>
+ <height>372</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form7</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout8</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QGroupBox">
+ <property name="name">
+ <cstring>optionsGroup</cstring>
+ </property>
+ <property name="title">
+ <string>Installation options</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>pathLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Destination &amp;path (appr. 1Gb free space required)</string>
+ </property>
+ <property name="buddy" stdset="0">
+ <cstring>installPath</cstring>
+ </property>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>pathLayout</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLineEdit">
+ <property name="name">
+ <cstring>installPath</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>LineEditPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>installPathButton</cstring>
+ </property>
+ <property name="text">
+ <string></string>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QCheckBox" row="2" column="1">
+ <property name="name">
+ <cstring>installExamples</cstring>
+ </property>
+ <property name="text">
+ <string>Build &amp;Examples</string>
+ </property>
+ <property name="accel">
+ <string>Alt+E</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="2" column="0">
+ <property name="name">
+ <cstring>installTools</cstring>
+ </property>
+ <property name="text">
+ <string>Build &amp;Tools</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="3" column="0">
+ <property name="name">
+ <cstring>installExtensions</cstring>
+ </property>
+ <property name="text">
+ <string>Build E&amp;xtensions</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="3" column="1">
+ <property name="name">
+ <cstring>installTutorials</cstring>
+ </property>
+ <property name="text">
+ <string>Build T&amp;utorials</string>
+ </property>
+ <property name="accel">
+ <string>Alt+U</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="4" column="1">
+ <property name="name">
+ <cstring>skipBuild</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Skip Build Step</string>
+ </property>
+ <property name="accel">
+ <string>Alt+S</string>
+ </property>
+ </widget>
+ <widget class="QCheckBox" row="4" column="0">
+ <property name="name">
+ <cstring>installDocs</cstring>
+ </property>
+ <property name="text">
+ <string>Install &amp;documentation</string>
+ </property>
+ <property name="accel">
+ <string>Alt+D</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QButtonGroup">
+ <property name="name">
+ <cstring>sysGroup</cstring>
+ </property>
+ <property name="title">
+ <string>Compiler options</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="1">
+ <property name="name">
+ <cstring>layout13</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QCheckBox">
+ <property name="name">
+ <cstring>installIDEIntegration</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Integrate with IDE</string>
+ </property>
+ <property name="accel">
+ <string></string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="buttonGroupId">
+ <number>99</number>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer7_2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>40</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2">
+ <property name="name">
+ <cstring>layout21</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout20</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>sysOther</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Other</string>
+ </property>
+ <property name="buttonGroupId">
+ <number>4</number>
+ </property>
+ </widget>
+ <widget class="QComboBox">
+ <item>
+ <property name="text">
+ <string>win32-watcom</string>
+ </property>
+ </item>
+ <property name="name">
+ <cstring>sysOtherCombo</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="duplicatesEnabled">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer9</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>121</width>
+ <height>21</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>noteLabel</cstring>
+ </property>
+ <property name="text">
+ <string>Note: The compilers specified in the 'Other' section are not officially supported.</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>layout7</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>sysMsvcNet</cstring>
+ </property>
+ <property name="text">
+ <string>Microsoft Visual C++ .&amp;NET</string>
+ </property>
+ <property name="accel">
+ <string>Alt+N</string>
+ </property>
+ <property name="buttonGroupId">
+ <number>0</number>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>sysMsvc</cstring>
+ </property>
+ <property name="text">
+ <string>Microsoft &amp;Visual C++</string>
+ </property>
+ <property name="accel">
+ <string>Alt+V</string>
+ </property>
+ <property name="buttonGroupId">
+ <number>1</number>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>sysBorland</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Borland C++</string>
+ </property>
+ <property name="accel">
+ <string>Alt+V</string>
+ </property>
+ <property name="buttonGroupId">
+ <number>2</number>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>sysMinGW</cstring>
+ </property>
+ <property name="text">
+ <string>MinGW32</string>
+ </property>
+ <property name="buttonGroupId">
+ <number>3</number>
+ </property>
+ </widget>
+ <widget class="QRadioButton">
+ <property name="name">
+ <cstring>sysIntel</cstring>
+ </property>
+ <property name="text">
+ <string>Intel C++</string>
+ </property>
+ <property name="buttonGroupId">
+ <number>6</number>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+
+ </grid>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer6</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>64</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
+ </hbox>
+</widget>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="379">789c5d8ec10ac2300c86ef7d8ad0dc8a6cad4e3b101f41f1288887b43ae6610a3a0f22bebb766de6e65f4af27f247f9b2bd86dd7a072716fa93d7bf035dd401d1f4df3dc1f562f21cd02cc0ce660e444c80c3c6cae9753e8f1dba3d6bad03a581f6c5994d36829d8ca56365ac7b6b25d0e0b11431932ec2e8e589a8d2cedf07af71772845119e7a1a374068c11fdcde14f7d9e6721cf0d51ca1ba1c8c628b15ef1ddf7527c00b6995250</data>
+ </image>
+</images>
+<connections>
+ <connection>
+ <sender>sysOther</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>sysOtherCombo</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>sysBorland</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installIDEIntegration</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>sysMsvcNet</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installIDEIntegration</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>sysMsvc</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installIDEIntegration</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>sysOther</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installIDEIntegration</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>sysMinGW</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installIDEIntegration</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>sysIntel</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installIDEIntegration</receiver>
+ <slot>setEnabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>skipBuild</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installTools</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>skipBuild</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installTutorials</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>skipBuild</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installExtensions</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+ <connection>
+ <sender>skipBuild</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>installExamples</receiver>
+ <slot>setDisabled(bool)</slot>
+ </connection>
+</connections>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/pages.cpp b/util/install/win/pages/pages.cpp
new file mode 100644
index 0000000000..3ee4093dab
--- /dev/null
+++ b/util/install/win/pages/pages.cpp
@@ -0,0 +1,349 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "pages.h"
+#include "resource.h"
+#include "../environment.h"
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qvalidator.h>
+#include <qdir.h>
+#include <qbuttongroup.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qmultilineedit.h>
+#include <qfiledialog.h>
+#include <qtabwidget.h>
+#include <qmessagebox.h>
+#include <setupwizardimpl.h>
+#include <qtextbrowser.h>
+#include <qtextview.h>
+#include <qlayout.h>
+
+#if defined(Q_OS_WIN32)
+#include <windows.h>
+#endif
+
+extern SetupWizardImpl *wizard;
+
+BuildPageImpl::BuildPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : BuildPage( parent, name, fl )
+{
+}
+
+ConfigPageImpl::ConfigPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : ConfigPage( parent, name, fl )
+{
+ if( globalInformation.reconfig() ) {
+ currentInstLabel->show();
+ currentInstallation->show();
+#if defined(Q_OS_WIN32)
+ // Makes no sense to have the rebuild installation option on DOS based
+ // Windows
+ if ( qWinVersion() & WV_NT_based )
+#endif
+ rebuildInstallation->show();
+#if defined(Q_OS_WIN32)
+ else {
+ rebuildInstallation->setChecked( false );
+ rebuildInstallation->hide();
+ }
+#endif
+ } else {
+ currentInstLabel->hide();
+ currentInstallation->hide();
+ rebuildInstallation->hide();
+ }
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ // ### these pages should probably be included but all options should be
+ // disabled so that the evaluation customer can see how he can configure Qt
+ configTabs->removePage( generalTab );
+ configTabs->removePage( advancedTab );
+#else
+ configTabs->removePage( installTab );
+#endif
+}
+
+FinishPageImpl::FinishPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : FinishPage( parent, name, fl )
+{
+#if !defined(Q_OS_WIN32)
+ showReadmeCheck->hide();
+#endif
+}
+
+FoldersPageImpl::FoldersPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : FoldersPage( parent, name, fl )
+{
+#if defined(Q_OS_WIN32)
+ QByteArray buffer( 256 );
+ unsigned long buffSize( buffer.size() );
+ GetUserNameA( buffer.data(), &buffSize );
+ folderGroups->insertItem( "Anyone who uses this computer (all users)" );
+ folderGroups->insertItem( QString( "Only for me (" ) + QString( buffer.data() ) + ")" );
+#if defined(QSA)
+ folderPath->setText( QString( "QSA " ) + globalInformation.qsaVersionStr() );
+#else
+ folderPath->setText( QString( "Qt " ) + globalInformation.qtVersionStr() );
+#endif
+ if( qWinVersion() & Qt::WV_NT_based ) // On NT we also have a common folder
+ folderGroups->setEnabled( true );
+ else
+ folderGroups->setDisabled( true );
+#elif defined(Q_OS_UNIX)
+ folderGroups->setDisabled( true );
+#endif
+}
+
+LicenseAgreementPageImpl::LicenseAgreementPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : LicenseAgreementPage( parent, name, fl ),
+ titleStr("License agreement")
+{
+#if !defined(NON_COMMERCIAL)
+ countryLabel->hide();
+ countryCombo->hide();
+ delete countryLayout;
+#else
+ connect( countryCombo, SIGNAL(activated(int)), SLOT(countryChanged(int)) );
+#endif
+ connect( licenceButtons, SIGNAL(clicked(int)), SLOT(licenseAction(int)));
+}
+
+void LicenseAgreementPageImpl::licenseAction(int act)
+{
+ if( act )
+ wizard->setNextEnabled( this, false );
+ else
+ wizard->setNextEnabled( this, true );
+}
+
+void LicenseAgreementPageImpl::countryChanged(int index)
+{
+ ResourceLoader *rcLoader;
+ if ( index == 0 )
+ rcLoader = new ResourceLoader( "LICENSE-US" );
+ else
+ rcLoader = new ResourceLoader( "LICENSE" );
+
+ if ( rcLoader->isValid() ) {
+ introText->setText( rcLoader->data() );
+ } else {
+ QMessageBox::critical( this, tr("Package corrupted"),
+ tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
+ }
+}
+
+LicensePageImpl::LicensePageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : LicensePage( parent, name, fl )
+{
+#if defined(Q_OS_MAC)
+ // StyledPanel style looks very windowsish
+ customerID->setFrameShape( QFrame::LineEditPanel );
+#endif
+ customerID->setFocus();
+#if defined(EVAL)
+ // ### improve text
+# if defined(QSA)
+ licenseInfoHeader->setText( tr("Thank you for your interest in QSA.\n"
+ "Please enter the license information you got for this evaluation version of QSA.") );
+# else
+ licenseInfoHeader->setText( tr("Thank you for your interest in Qt.\n"
+ "Please enter the license information you got for this evaluation version of Qt.") );
+# endif
+
+ customerIDLabel->setText( tr("Name") );
+ licenseIDLabel->setText( tr("Company name") );
+ licenseeLabel->setText( tr("Serial number") );
+ evalName = customerID;
+ evalCompany = licenseID;
+ serialNumber = licenseeName;
+
+ expiryLabel->hide();
+ expiryDate->hide();
+ productsLabel->hide();
+ productsString->hide();
+ keyLabel->hide();
+ key->hide();
+ readLicenseButton->hide();
+#elif defined(EDU)
+ licenseInfoHeader->setText( tr("Please enter the license information for the educational edition of Qt.") );
+
+ customerIDLabel->setText( tr("Educational institution") );
+ licenseeLabel->setText( tr("Serial number") );
+ university = customerID;
+ serialNumber = licenseeName;
+
+ licenseIDLabel->hide();
+ licenseID->hide();
+ expiryLabel->hide();
+ expiryDate->hide();
+ productsLabel->hide();
+ productsString->hide();
+ keyLabel->hide();
+ key->hide();
+ readLicenseButton->hide();
+#else
+ licenseID->setValidator( new QIntValidator( -1, 9999999, licenseID ) );
+
+ // expiryDate and productsString comes from the license key
+ expiryDate->setEnabled( false );
+ productsString->setEnabled( false );
+ keyLabel->setText( tr("License key") );
+ licenseInfoHeader->setText( tr("Please enter your license information.\n"
+ "The License key is required to be able to proceed with the installation process.") );
+#endif
+}
+
+QValidator::State InstallPathValidator::validate( QString& input, int& ) const
+{
+ if ( ( globalInformation.sysId() == GlobalInformation::MSVC ||
+ globalInformation.sysId() == GlobalInformation::MSVCNET )
+ && input.contains( QRegExp("\\s") ) ) {
+ QMessageBox::warning( 0, "Invalid directory", "No whitespace is allowed in the directory name due to a limitation with MSVC" );
+ return Intermediate;
+ } else if ( globalInformation.sysId() == GlobalInformation::Borland && input.contains( "-" ) ) {
+ QMessageBox::warning( 0, "Invalid directory", "No '-' characters are allowed in the directory name due to a limitation in the "
+ "Borland linker" );
+ return Intermediate;
+ }
+ return Acceptable;
+}
+
+OptionsPageImpl::OptionsPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : OptionsPage( parent, name, fl ),
+ titleStr("Options"),
+ shortTitleStr("Choose options")
+{
+ connect( installPathButton, SIGNAL(clicked()), SLOT(choosePath()));
+ sysGroup->setButton(globalInformation.sysId());
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ sysOther->hide();
+ sysOtherCombo->hide();
+ noteLabel->hide();
+#endif
+#if defined(Q_OS_WIN32)
+ installPath->setText(
+ QString( "C:\\Qt\\" ) +
+ QString( globalInformation.qtVersionStr() ).replace( QRegExp("\\s"), "" ).replace( QRegExp("-"), "" )
+ );
+ installPath->setValidator( new InstallPathValidator( this ) );
+#elif defined(Q_OS_MAC)
+ // ### the replace for Windows is done because qmake has problems with
+ // spaces and Borland has problems with "-" in the filenames -- I don't
+ // think that there is a need for this on Mac (rms)
+ QString base("QtMac-");
+ base = QDir::homeDirPath() + QDir::separator() + base;
+#if defined(EVAL)
+ base += "Eval-";
+#elif defined(EDU)
+ base += "Edu-";
+#endif
+ installPath->setText(base + QString( globalInformation.qtVersionStr() ).replace( QRegExp("\\s"), "" ));
+ sysGroup->hide();
+#endif
+}
+
+void OptionsPageImpl::choosePath()
+{
+ QDir dir( installPath->text() );
+
+#if defined(Q_OS_WIN32)
+ if( !dir.exists() ) {
+# if defined(QSA)
+ dir.setPath( "C:\\Qt_QSA" );
+# else
+ dir.setPath( "C:\\Qt" );
+#endif
+ }
+
+ QString dest = QFileDialog::getExistingDirectory( installPath->text(), this, NULL, "Select installation directory" );
+ if ( dest.isNull() ) {
+# if defined(QSA)
+ dest = "C:\\Qt_QSA";
+# else
+ dest = "C:\\Qt";
+# endif
+ }
+ if ( dest.right(1) == "\\" ) {
+# if defined(QSA)
+ dest += "Qt_QSA";
+# else
+ dest += "Qt";
+# endif
+ }
+ if ( dest.contains( QRegExp( "\\s" ) ) && !sysBorland->isChecked() )
+ QMessageBox::warning( 0, "Invalid directory", "No whitespace is allowed in the directory name due to a limitation with MSVC" );
+ else if ( dest.contains( "-" ) && sysBorland->isChecked() )
+ QMessageBox::warning( 0, "Invalid directory", "No '-' characters are allowed in the directory name due to a limitation with the Borland linker" );
+ else {
+ dir.setPath( dest );
+ installPath->setText( QDir::toNativeSeparators(dir.absPath()) );
+ }
+#elif defined(Q_OS_MAC)
+ if( !dir.exists() )
+ dir.setPath( "/" );
+
+ QString dest = QFileDialog::getExistingDirectory( installPath->text(), this, NULL, "Select installation directory" );
+ if (!dest.isNull())
+ installPath->setText( dest );
+#endif
+}
+
+ProgressPageImpl::ProgressPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : ProgressPage( parent, name, fl )
+{
+ // ######### At the moment, we show only one line when unpacking. So the
+ // horizontal scrollbar is never shown for now to avoid flickering.
+ filesDisplay->setHScrollBarMode( QScrollView::AlwaysOff );
+}
+
+#if defined(Q_OS_WIN32)
+WinIntroPageImpl::WinIntroPageImpl( QWidget* parent, const char* name, WindowFlags fl )
+ : WinIntroPage( parent, name, fl )
+{
+#if defined(QSA)
+ textBrowser->setText( "<p>This program installs Qt and QSA.</p>" + textBrowser->text() );
+#else
+ textBrowser->setText( "<p>This program installs Qt.</p>" + textBrowser->text() );
+#endif
+}
+#endif
diff --git a/util/install/win/pages/pages.h b/util/install/win/pages/pages.h
new file mode 100644
index 0000000000..8108f427ef
--- /dev/null
+++ b/util/install/win/pages/pages.h
@@ -0,0 +1,226 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef PAGES_H
+#define PAGES_H
+
+#include <qvalidator.h>
+
+#include "buildpage.h"
+#include "configpage.h"
+#include "finishpage.h"
+#include "folderspage.h"
+#include "licenseagreementpage.h"
+#include "licensepage.h"
+#include "optionspage.h"
+#include "progresspage.h"
+#include "winintropage.h"
+#include "../globalinformation.h"
+
+class Page
+{
+public:
+ virtual QString title() const = 0;
+ virtual QString shortTitle() const = 0;
+};
+
+class BuildPageImpl : public BuildPage, public Page
+{
+ Q_OBJECT
+public:
+ BuildPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~BuildPageImpl() {}
+ QString title() const
+ {
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ return "Building Qt Examples and Tutorial";
+#else
+ return "Building Qt";
+#endif
+ }
+ QString shortTitle() const
+ {
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ return "Build Qt Examples";
+#else
+ return "Build Qt";
+#endif
+ }
+};
+
+class ConfigPageImpl : public ConfigPage, public Page
+{
+ Q_OBJECT
+public:
+ ConfigPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~ConfigPageImpl() {}
+ QString title() const
+ {
+ if( globalInformation.reconfig() )
+ return "Reconfigure Qt";
+ else
+ return "Configuration";
+ }
+ QString shortTitle() const
+ { return "Configure Qt"; }
+};
+
+class FinishPageImpl : public FinishPage, public Page
+{
+ Q_OBJECT
+public:
+ FinishPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~FinishPageImpl() {}
+ QString title() const
+ { return "Finished"; }
+ QString shortTitle() const
+ { return "Finish"; }
+};
+
+class FoldersPageImpl : public FoldersPage, public Page
+{
+ Q_OBJECT
+public:
+ FoldersPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~FoldersPageImpl() {}
+ QString title() const
+ { return "Folders"; }
+ QString shortTitle() const
+ { return "Choose folders"; }
+};
+
+class LicenseAgreementPageImpl : public LicenseAgreementPage, public Page
+{
+ Q_OBJECT
+public:
+ LicenseAgreementPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~LicenseAgreementPageImpl() {}
+ QString title() const
+ { return titleStr; }
+ QString shortTitle() const
+ { return titleStr; }
+
+private slots:
+ void licenseAction(int);
+ void countryChanged(int);
+
+public:
+ QString titleStr;
+};
+
+class LicensePageImpl : public LicensePage, public Page
+{
+ Q_OBJECT
+public:
+ LicensePageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~LicensePageImpl() {}
+ QString title() const
+ {
+#if defined(QSA)
+ return QString("License Information to Install QSA %1").arg(globalInformation.qsaVersionStr());
+#else
+ return QString("License Information to Install Qt %1").arg(globalInformation.qtVersionStr());
+#endif
+ }
+ QString shortTitle() const
+ { return "License information"; }
+
+#if defined(EVAL)
+ QLineEdit* evalName;
+ QLineEdit* evalCompany;
+ QLineEdit* serialNumber;
+#elif defined(EDU)
+ QLineEdit* university;
+ QLineEdit* serialNumber;
+#endif
+};
+
+class InstallPathValidator : public QValidator
+{
+public:
+ InstallPathValidator( QObject* parent = 0, const char* name = 0 ) : QValidator( parent, name ) {}
+ ~InstallPathValidator() {}
+ QValidator::State validate( QString& input, int& ) const;
+};
+
+class OptionsPageImpl : public OptionsPage, public Page
+{
+ Q_OBJECT
+public:
+ OptionsPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~OptionsPageImpl() {}
+ QString title() const
+ { return titleStr; }
+ QString shortTitle() const
+ { return shortTitleStr; }
+
+private slots:
+ void choosePath();
+
+public:
+ QString titleStr;
+ QString shortTitleStr;
+};
+
+class ProgressPageImpl : public ProgressPage, public Page
+{
+ Q_OBJECT
+public:
+ ProgressPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~ProgressPageImpl() {}
+ QString title() const
+ { return "Installing"; }
+ QString shortTitle() const
+ { return "Install files"; }
+};
+
+class WinIntroPageImpl : public WinIntroPage, public Page
+{
+ Q_OBJECT
+public:
+ WinIntroPageImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~WinIntroPageImpl() {}
+ QString title() const
+ { return "Introduction"; }
+ QString shortTitle() const
+ { return "Introduction"; }
+};
+
+#endif // PAGES_H
diff --git a/util/install/win/pages/progresspage.ui b/util/install/win/pages/progresspage.ui
new file mode 100644
index 0000000000..927d97522a
--- /dev/null
+++ b/util/install/win/pages/progresspage.ui
@@ -0,0 +1,78 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>ProgressPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>ProgressPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>440</width>
+ <height>286</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form10</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QTextEdit">
+ <property name="name">
+ <cstring>filesDisplay</cstring>
+ </property>
+ <property name="vScrollBarMode">
+ <enum>AlwaysOn</enum>
+ </property>
+ <property name="hScrollBarMode">
+ <enum>AlwaysOff</enum>
+ </property>
+ <property name="textFormat">
+ <enum>LogText</enum>
+ </property>
+ <property name="linkUnderline">
+ <bool>false</bool>
+ </property>
+ <property name="wordWrap">
+ <enum>NoWrap</enum>
+ </property>
+ <property name="undoDepth">
+ <number>0</number>
+ </property>
+ <property name="autoFormatting">
+ <set>AutoNone</set>
+ </property>
+ </widget>
+ <widget class="QProgressBar">
+ <property name="name">
+ <cstring>operationProgress</cstring>
+ </property>
+ <property name="centerIndicator">
+ <bool>false</bool>
+ </property>
+ <property name="percentageVisible">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </hbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/sidedecoration.ui b/util/install/win/pages/sidedecoration.ui
new file mode 100644
index 0000000000..1ea5761065
--- /dev/null
+++ b/util/install/win/pages/sidedecoration.ui
@@ -0,0 +1,108 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>SideDecoration</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>SideDecoration</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>122</width>
+ <height>156</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>logoPixmap</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>AlignTop</set>
+ </property>
+ <property name="vAlign" stdset="0">
+ </property>
+ </widget>
+ <widget class="QLayoutWidget">
+ <property name="name">
+ <cstring>Layout1</cstring>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>versionLabel</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Installing Qt</string>
+ </property>
+ </widget>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>editionLabel</cstring>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>(Clear me)</string>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ </vbox>
+</widget>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="55092">789cccbd47b7eb38b2ef397f9fa2d6e5ecae5e7cf266d0035266cb6da7ed77af1ed07b2f1aa9bf7c83883f704c56d5cd7c75bb5f95d6c9ca5f8a22114044202200f0fccffffcdbe7d3fddffef37ffe8fea625c02eb6f966f947ffb4fbb4e92ebfff57fff9fffcffff88fe160f0b7fecf68389bfe6df41fffc7fff80febf96fd6df9401ff5fcff64232ffde36244f7a762ac953fefd56f29cf35cf2a267f3072ff9f733c906e7836493f35eb2c59fd74ab6797b1f243bfcfb46b2cb7fef0a1e72799c5af2907f7f94cce5732cc963fefd483297cf3a8387d43f992999ffde0c25f3dfb79a64de5f662099dfcfe924cf386f24f3fe4a44ff0fd17e5b327f9e772799dfcfb8078fa87d662499cbebbb9249de6fc9bcbd9d2f99dab795ccc7b31a48e6e3b71a4ae6e315ed25f3f1b04f82a93f0dc1636a9ff32999daf32599f757a54ae6fde17e48e6fae23892b97e78a2bd63ea1f438cef849e97e892f9f7652b99b76f3d91cce53763f0947e6f08fd9c1137b664de5e43c83fc7f53bf0022cf475499c8be719c4f113d824de5cc01671fd0eb6895dbaff50d8ab174ae6f2ad3ac9a47f63c924df4832d73f732a99f777f324998fb73993ccfb5f7f96ccc7df3a49e6e3514592b9bd3aa664ae1fd6bd646eaf9a2b98f4ddf52573fdb58e60d89f6d49e6df9b13c97c3c1d45326fbf634826ffb2934cfee40086fdf88164de7ff65232d9eb9b646e1fa607867e9bbe641a8f816092cf14f2423f4d070c7d8b9f25f3e7bbaf60e89fb791ccfb3b15df43ffe22f30f42f13f240ffea1b18fab716bf877ee967b043dc92bf1f0ea16fdd9af3a8f740bc3dbe64f2f70bc9bcbfcd2fc9bcbfbd4432f90b4730f5cff55e3297bfc9c0187f732899f4772099c6e35b321f7f6b0fc6f8daa6649aff7692f9f3724d32d7f7cb4932ef6ffb4e32e9b302c6f86723c9dcdefc50326f9ff32e99f7975382a10fd75c32d7e795906742fdd3bd49e6df67a2bdd09ff20886beb89164fefcd54932ef9ffa2c98fca72bda0b7d6a9f25f3feb0c4f842bf9a07b0d02fd13fd0afe2090cffd6c660e85b24ae87be05a40f63e1df8277c9bc7debab643e5e575732efef6e2799cb1bfcf89ecbdbed2573fd5cfd781e1fcf952d98fa3b91cf277f74cd24f3fe0f3ec08807ba8d64ae9fc54232e98f27993faff9f13df787ae680ff4d57995cce57103c95c7fac3bc97c7c7c5f308d67b8028bf9f72299cbd3dc49e6f2981f92797fd69664de5f7e2499dbb33b92ccdb6f2dc1d067772099fca72e99b7ff6a49a6f946f437f4b9bd48267934b0d0ef77c9bc7dad68df9cee9fee25f3fe69447fcc31df88f1843eaf6e92f9f3da89649a0fee25f3f1cb85be41ff0331bed07f5f8ca7f0a7d43f13a1df9d2a99f777f32899dfffea80111faeae92b93cee41f090f7effa0c463ce77f48a6f9ee51321fafeb4930f547bb01433fecb164fe7cff5b321f2f2f92ccfb3f93d793bd745b30f421ae2593bfd94be6fd1b2692b93cde4e32b79fda164ced8ddec1d017e74332f9dbb564de5e772899e299140c7dcaa692b93db8df92797fe61d18fe3117e303fd59b792e979b164de3f8918ff05f5cf46f40ff4c715e301fdb9bd80e13f57f792797fad4a30fce906bf17f3f51ae331c4fc19a13d43f89780e693a9f0a7ed028cebfd4e321fafe6198c7cc00b2473f9bc77c95cdf4a4ff0908fc75a5c8f78bfb52553fcf02999ebbfdf08a6f10e5ec1c2bfdc49a6f97c2b99e6ff27c9642f3fbee7fab416f2407fc299643efe912f99ec692099cbd3b492b9bc9ab8ff94c63711fd0bfdb2a792c93e2ac9140f689229df5125f3feed5660e85ffd2a99fce34432efdfee00867e5e14c9941f8ec0d0bfcc904cf9572a99b7a76e25f3fe73c760a1afaa646ebf99e85fe86f2ec61bfaea0b79e11f0ba12f2eda8bfb4b7d267b98897c64dd81a1cfeb503297afbd934cf1d45e30fc93f81ef363b896ccefbf3a4a26793dc1149fae7d30f247ff2a99ea1d3fbee7fed68b05a31eb1924cf9c2083ca5f6076bc9542fd948e6fa900e2473fdbbbc09463d630246be1a6692f9f84481643edef95532b73f5df01cfd7993ccdb7be92453beb5924cf3c14432efbf5cfc7e01fffa2999e6bfb1646e5f9b022ce2cba364de3e37114cfec132c0d047f74d32f9e37b30f26b2f05431f5763c9bc7f42c1d04797e6cf99d0c71be41fc21fa52a18fe24207d9f0bfd5a1d04d3f8570fe009d573dca3642e7fbb054f697ca237c1246f3a944cf53a5b32c5a72f60f81bd796ccaf4f2bc994af2d2593be6f2453bea682e7345eed4e32d5ff14c9bcbf2f57c95cff7dd15ef8a35097ccdb93cd25537e2bfa6b3124fffd055ec2bfcc24537c548045fe518331decda7647ebd2eda6ba37fc478c01f6d44ffb8d43e1ded17e3af3960cc97f5022cf481e257a6dd149fd96bf08cc6ffe64aa6f92604c35eec4032b7efab2799e2375b30e94b2aae5f50ff58aa642e6fe148a67ce1065e927fb80d2553bd2494cc9fdf3e49a6fc45c863c07e1dc97cfcd3a3606a5f7d05633e887682497faf4bb08df8e2030cfb2bc9de17a2ff4bf49f886762f4cf10f666bd80618f3e8dff92f5177f5e914be6ed2f36e005c91b5f24533cf22598ecafeec04be467ae64f28757b041bfaf5f040f29fe68c0268d9726da63917e14a2bdd0c7f424998f5f44fdb314fd91bf83a18f8105467fdc4660e86783e789fee94a30e215e3118c78a3a0f9dc60fd45fa34072f491fc329d8a0f685a964aae7dfc0265d5f2f05537f568f60d86bb091ccfbe36248e6fad988dfbba85f8e24533e48f66f88fe892b30fa67634ba6f97508467f6d1cb0a827435ed11f35fa6388f9c9a7f8c814f157fd065e92fe5f6e6083e42f5cb0897ac417d8227dca3fc036f55fb305431fba77c1747f3b02bba4df3ad9ab29e42f669229df46fb647fe460d8d3aa0243fecd2758d4bbefc0a21eb403a33f2a8a772c263f6fff35055ba827d1f85aa2bf2f1a58f4f70a8cfb252a18febdf1c0f02701f58f2dda7f5d48a6fe9b8071fff21d2cfc83603caf51c1b87fb106433f4b1a1f87fd17eebf1b17ec903efbd43e46b0f71a0c79cb2d58c4e72d18cf2f1bb078be0dc6f3339abf5cd11f8906c6f5de1a8cf846e3f6c1cbe724df068cf6548964ae3f1b130c7f9096608c7f7603a3bde90e8ce7bb2f60b4d77e00c39f075c9f98f639e47fa34832d7e7f84c2c9eb7ba80216ffb08c6f3cc042cd64f1a30e42f9760d88fe382d19e1ced19c11e42aebf0cf17cd306435ecb04a33d610e16f20b16f1470a16ed3981457cf9443c82bdae2660e19f79bc341c8be7d70e18cfd71ec022df8ac178feaa05e379d72bf108e3df70ff369cc8fe1d8345bc9c81d1fe60452cfaeb7a03c3be74ba7e2adbd382f1fbcb3b18e3910dc1689f4df24e657fd4603cafb2c168bffb0cc6f32b1ebf0c67e2fe01e9d34cdcef1283e12faa6f30ee67f860e1ffe660a1efdc7f0ee7e2fed58c58b6e70cc6ef8d002cd6173db0a83f2dc0d0b78edbf77021e5bd078bf6aec1f87d41fabd14f2155bb0f8fd108cdfeb2330da93de83f1fc8ac6d310f2ac1a309ed772ff3734c5fdb48d64ee0fb72e58d4e75ec0f87d7202a33f0d713df4a5237bb7e4782a60b11ee681d15eed112cee1782a1cf158f4f86b6b8bf6581c5fa2af5a733823f762d30eed7d2efdd11f2efcd1d18d76bdc5e468311f2a3c007e379f5082cea75f760e8fbfa8d782cf49dfba3d150fcbebc030b7bdc83a17f099faf472371ffe64c2ceed73460e883cefb6b3416f7ab4fc463e10f2c30e46b8927e279b94b2cee6f6cc1d087ec092cec4930c6f342f24f85fc46442caef75660e8cf85fb93d18cfd9ec783f1162ceaa37cfe19cdc5fd3ceabfb990d79d80d13eeb152cd64fe9fa85f8de7c05a33df9188cf66cbec0d0c7f50d0c7df3b8ff1f2d85bcce002ce227078ceb1d0f2cfca54e3c41fb6f74bd21ef5780f17c5d058bf53beeaf46e618ebd77a2299c77f5bba9f25c6b7f4c1c2bfbd80d19eeb07f104fda1933cb678de2603e37eba01c6ef6f57b0a8ff71ff3d72c6a8b7e8d47faee88fb507c6effd188cdf3bdc1ec67d38c739e2e3c5a63393e21723269e60fde4f22c99d677b93e307577285eb7b8fd8f27ecfe9cf50e0c7d8a79ff8ca7ec7bfefb6b412cc627db81c57e823730ead9eb1158d43fb8bce399b8fe7a0716eb5d7330c663c3fb733c67eda1fa484d2cc6c39a83a11fed193ca57a651282b13e16f3f96ebc9860bdc8d880c5fe810c2cf21bae8fe3e544d4cb23c93c5ed30a30ea071b170cff92d0f81813d443d71730eaed9a07c6f53eb7b7b1c9bee7fa117c49a6f5024b30c5b3760cb6b19ec9e3adb13331e8face93ccfbaf3883f13c23013ba8a72e05d3fd0d1b8c7c734df23b53d8df86facf9da03e7e1b80f1fc82f7e76430813e6d63e229fa3be5e333194e4cd40b52b04ded31b8fe4e4653110ff2fa0a73a736f28d9a788afd67fa180cfd6a1db0588fe3fe7f32610accfb77c3f59721f2c77c493cc5fe0aaf00e37eb731788afa4e059ed1f8361f60d48f6dde1f93d914ebc7460a46bd2fe4fd37994fc7940f6cbec1e89f98cf5f93a578def5013c433d86da6f4c51bf09b9bd4dcce982f2b39cebcbc49a22fff6b83e4dec29ea15d95932adb704c433acffebf43c776ad1fd039d7886f5d315bf3f5356f09acf77d3d1d4a5fa65734f3cc3fe035d134cf7372c30ec355b824dc413dc3fb0e9906574dcdf79c4e2f74501c6fa5b74104cdfb73c3e9d4ea6d6887f7fdb10b3e791bef1f9940ddf1ceb078fe005f5b7c5e7e3e96c86f58f8d0246fd3a76c1f311f9b377b043e31bf07c693a9fa1de19df816dec07f804bb584fa3fe5accc47a86069e517b82002cd6f775b043f39bc6e3dde9923d8eeb7332035bd47f3705ec60ff824d3cc7fecf84ebefd498c19e2faf609bfa2be6f9f0d49c2d51cff5c016e5fb2b176c8f78fb8b15d8a5fa99c9e7d7a93543fdab1b831dfafde6287844f5d10e8cf1af49bfac39c63bff024f499e98ee6fb3fb937f7d023bd4fed407bb435aafb124d37e2d5d30b53f03cf87d43eeb0d8cf5dd7803c67cb7e1f63d75587f707df1e9fece7c30a2fd5d7b30f6b3469f9269fdc792cce5594dc1587fba52ffb84c1edebecd5e326f7f41faebceb19f2cda8271bfa6133ca2e727e0118d4fb2164cfa9c2892f978af4c30eca1f1c19321d7bf2bff7e3660e34ff5e53bb043cfaf5dc174bf6c0076a97fdb929805acfcfb6d0446bdbee4ed9f0d857eddd660f89b6e2298da5f05c4ac3f687e6bc0c311ad87e07a263f9f0fda77f094da537f8067245fc5f569369a1963d29f2b31eb5fdabfe20ba6e7a777e0d188ff3eb9815906c29fa78227d04f053ca3f6b65c3f6663260fd553a93d2cfca4fec91bc95cfeea041e517f5fb8fece2662fcdd023c86ff33c1d31167cd06cf21cf5c308d679d8017d41f0df72fb3e9cc1ef3ebab14ec8c69bfc05432ed47d38885fe5d4cc9b4fe37028fc8fecb37c9649f25784cf6ebbf82e7f47dbc042fe87e05f5cf4ce8936b82e7f4fb36113ca6f17a002fe8f986b8de80fe8bef4dd28fc292cce52fa68269fc4d1effb0db2f49decd0c0c7fdc92fe2ce6131a3f6d2d98fcb7bf02cf49bf370330d68fea5a30fdde38831dfabea3fe59b2fea178b0009bd41e4f03db23aeff37713decb5f00593fc2df5a7c1ee47eb6f2330eadd17156c8ea87ff7609bfc45590b267f78d5c02e714bfa6ab2f1207ff80136c87ef22918f34dfe06c67cd186c48b018dafcee3cd99c5ee47faa48217647f99609bf4c7a0f1b2160392afa3f6da6cfc68bcd69279ff949f6093daef4ec1f067f5817831a4e76de8f70ebb9ece177c806d6abfb3235ec0dfba2bc9b4df9bc6d7ed1376ae5f5c3fe703263f6f4f520a1e53fc99102f66d4be8cf7cf7cc8e4e3d7673e784c7cdd82a7d4de5a03c3fe751e9f3265c2fca09be009d94fc2e397394b87c99f186bf08cfa4fe3fd3b9fb0e7717dacc792e97c0b8f5f58f8bb20d6793d613e5f2cc7b49fc5005bd49e35b56fb1c4fcecf1fe9e2fd9f7743dfdde582ca83f8267b049ed59f3f9686eb2eb69fd782699d62fa83de67244f67de1fa3eb79643b237ef2698f4ab9e8347d4feb0008fc99e1c6a8fbd70d05f4762261e6f9f46e3e730a6f3160618fdbbe6f9c6dc5d0ea8bd0df5bf6b88f89aebdfa25f00a5f8ff4e32edd749c0636aff66019ee17939780e7de2f92a73f643e8bb031e537b7c133c237bf5dec073ba7f44f71f1a225ea3e78f447f79dfe011ddcfe3f22dc68c29feff06e379ba0e9ed2ef0b1effb1747d44f3b1fd0d5ed2f78d0236c65cdf367c7e5fb0009858bf07cfd15f7bf082f4a3492473f96f19d8257b6df8f82e66cb05f55fbe223630ff6f797cbc98b3f67079527afe82319d17e1f6b7581a03fafdc693ccc7d7a0fb194b97da7bbb111b63f2af1bae9f0bd31810eb7cbd61612d1dd2bf94da671943c8cfe7af856d8c69be6e0563be594f2573fdd7b8bd2c1c763ded0f53c01392c7bb4ae6fdd3717d5db8c684fa4bbb134cdfa767f094e28180fba3e5c080fff15fc0b309f5ef9764d24ff13dfc43cae7a3e5d0807d6cf8782d47acbdfcfeed0b783ea1fad50ebca0ef6f3ed82079a32f30f2c5644f6c627f5acce7df655fd0e1e3930460a662dc3f1cc14beaaf40133ca178a8069bf47cdf90ccc74ff3c10e8de78dfa676c8afd09b564daff5982b1ff36a6f64c58ffd2fed40b7836a1fac504bc9c50fd6101c6fc97abc426e2b3700fc67911f3018cf33ac99d643e1edd198cf3176e07463da4fa0063bf8826be47bd53e7fe773965e345fded806db217eb1d8c78f29612b3f6923ea9603cbffb0663bf4949d7b38083c663b3022f68fceb7bb043f6118682a9ff8c02ec92bfcbe9fe7dba49f5c30d18fb636c9e2f2ce7ecf7144f2a6097e4bbe5c4ecf7140fcdc0b0b734018bfde03a784af3c53504cfb15f47dc0ffb0bbb8160ecbffc002fa95e58edc1d8bf1a4dc1163d2f36c1a8575495609c5f1a4aa6f3a134febd83e2ed2f376093faafa3e72fcc01f1f50b3c217ddd5660ac37ad63f00cfe5407cf69beef5230ea35c6026c60bfe55532e55b39d8a4eb6f73b0d8df20ee6f637fe04a32cdff03b043fd757b904cf9d9168c7ae7ed2299ce7b3692697fc898d8c2f99ddb128cf3b317f49f85fa6348f75f1a06d9afb604c37ff817b04dfa1c0ec10ee9bb4ef22ecd015d7fdd8047345eb5079e907e598e60d2d7b40363ffe3762598e2d5750e16e703d692297ffc128cf35768af897afb36108cfaee5c32d56b0f9269fe2e24f3f61731d880ff5125d37ed80558ac974c25d37ec09d64de7fe64132f73fea27d8a2f15732c9b4bea008a6f655a23fb1dfb28c24d3fe470d8c7ae1ed5132e95b2099cf8fa6e82fd4e3c32fc9b4bee3125b38ef7723ff641816d99b7d03dbe48fc22bd8a1f9f95a825d9adf4af28706eb1ede5eaf060fe97aaf133ca1fc5605237e6d8ee009e5bbd5198cf58b4efc1efb6fb71730f67bae66e025c5df8a09c6fecae020998fafd248a6f3ba909fd93b6f4f71025bb0af52329ddf9849e6cf533fc036e993924ba6f96726993f2fcec00ef57ff12e99e2c34a32ed7f0cc1f017d5bb649aef7cc9bc3f22f13c97fa4fc3f859388f5a6d25f3f69443c1d86f3b06e37c4be54ae6edd354c9bc7dd791643aefdc4aa67acf2b18e7f134f13dced325a4ef26d3379affc95f9826e2cb952a99c6f7153ca57835fd0463ff691108267fb579028b78c2001b34dee14532bf7f62814df88b4832d52f2ab085f59d0118eba3752899ecff2699eae307c9b43fb405431f9454329d2fbb97ccdb938cc02ee95b2adaebd2f8b590dfc279e448974ce3f12998e67b4d30ce074713c934ff403e0be72d2dba9fc5e607defeca014fc85f5413f094e2313b954cfea0114cfe467901233fd41792a99e6a49a6f527c198afd71bc9549fb9822dea8fba944cf9502799dad782b17e6d7592c9be6782495fea42321fdff8c7f77cbcb477b043fa1deb9229ff4904e37cc697641a7f0decd27828aa647abfc45032ade7b982495f13b25fcbc2fb0c944032d9cb93606abf5949a6f314cf60bc4fc00a24f3f6b79960d29f5a914cf11dfa53d87bf82999d6df303e16ceb755a4cf369b3fc8ff7660ec3f57de04933ff0f760ac5f665bc114df2b67c1a44f57156c507f5f1cc9b49ff3198cfdc69bab60aac7ac4f601be7fd22c1781fc95132ddaf95ccdbabd492b93e794f60e883229e87fd9ef959326fbf3a964cf9e00318fe5d9d4be6fda192fed916ce83a92f92a93dbe64ca8fd11f229e4c6f92f9f3938164ca1f4f82b1fe994ae6df871f60acf79a6bc9bc7f62f49785f3b1b75230d95775914cf30bfacfc279b22df90f47c413a621995f9f7be011f99b6d2b98e2136d021e4f683d63059e4cb83e7ae2fa19dd4f3b83e734df943118f581f22099cba33c8397549f592dc026d69b8f9279fb6f9f60e453d6156c537f5a63c9644f8160aa47695330fc8dee0aa6e7c5b964f28791648a6fe692297e580aa6fa6628da8bf8c3bc974cf9642118fa38954cf58f89649acf1692e93c27e9936361ffbdd149e6df2b9e609c1f7d96ccf549ad24d37974e887d0676721998f8fba924cf1fa9364b247713df687754f92e9fc672399ea45a23d581f35af92f9f7b9f81eef13885ac1181f4b32d5dfa10f16f6a3044bc974dee9158cfd3f892399fcbb2d993fff26fa6786fd3ba23f711ef146d7bbcc7e283f7b944ce7995ec0639aafab25784af671db0a9e52feb200cfc9fe320f2cec650f5e52beae7d49a6f319e2fe4bd457766083f453bf80b11fa878154cf6b2adc1585f37c4fde0af235530f251717fc45b9e90d7c17ca848a67add5530ad1f74a160aa8f76e279c8e7c34630f97f3b174cf2379a645abf247fe35a781f90ff2818f3c1443297571d49a67cfd4930cd87da1b58e8ff5630ece74b32cd1fa564aaef7982697dc87900633f73694ae6faa0be4aa6fd789a648aa724637fd25a32ed3f79924ceb3d3330f6f325ad64de1fd98364927f2598facbd42553fd3594ccafcf311e16cecbdf22c95c5e652a99de7f267e8ff3c9e1bb641a6f4732bf3efb008bfd812f92297eb32473794b31bec87fa30a2ccea3ee0493ff30f79269bfe23718f53e6b2099ea0377609c7f34be2453fc7b914cf91c1f2f63c0e6478a0fb6e019d58be207c1538aff8fe039e503712b99e6eb5c3297a750c04b1afff22618fb1922c1347fc73bc9b47f4630f2f9eda360b2efab2e98fcd1ea158cfd83452598f47f6b48e6cf8feec1a8b7a40bc1f05f3bc9bcffb61918f596f85d32d5e3447fbaa48ff94030f6ffdc24737bf267c416f6a7ac3f2453fe580bc67e99122cceeb9c24533d6b2299f4ad108cfce30773fd500cc9341f7792a9fe6b0ba6f5da6b2399ce372ec1d85f1d9d25f3efd59b60f89f3bc9bc3fd4a364f22f6f60ec97543792797fa8a960d8c74d32f9932918f61ed49269ff832d99e44d24f3f61a23c1d43f96fc1ef1fe1c8cf763448e645a3f16cfc3fe3d632899e2955832cdafd01f0be7d5ad4a32ad9f3792b9fcc64030ced3d792b93e9723c9b41feb02c6fe67732b99f68b7c4aa6faa3180f9c17f6499ffa032dc46bf098ec5d8f24d3fe08133ca1f530ed049e527eb7f50593ffb83c48a6fd570a7846f7d36b30e6fff25b32d5ab73c1145f28ef82299ed1e660d473b64f92a9def92698fcdd5a3cdf46fd24914cfbcd74c9b43e21e445fda611f7437cb1fe124cf65edcc02edd3f7225d3fb001e05d3fc5ebd108b7879bb93ccfbc72f05937e66a9605abf538e92493f56e021d99f6249a6fa5b2b98fc9f72914cedc3785a789f52f12698e42943c964ef17c9e40fe792697e1849e6f2648e60ac470660bc9f243b4aa6fd3fa1647ebda20826f9d24c32ef0ff55e32d5d7447f60fe2f9f25933f5a4aa6f8e62c18f9502299f40ffa61e1fd4b4a2899f6279492495ed19e29e297028cf795048d64dedef05530e29137c9e47fe4efb19f740cc6fed152134ced0f55c9fcfb488c17dedf74b9934cf64dfa3c326754ffab0cc1643f510ac67a78ba04633e77466083ecb309c026cdffa921998f476582b19fa7ba0aa6f93e5e0ba6fca6188051bf4b447bb1bf4aff00237ff60f92e9fd41f792e9bc7d2599e6f717c1d8cf247e8f7a5d160ba6fecf23c1b4bf21a0f86264e13c72f82499f2fd57c1f06727c954bfcec098df755b30d9ef7a2e98ecdf78974cf54cb447d47b3d5330e2cb0fc9b4df47dc0ffbd12ea9647a9fec1e2cde07f92e99f60b1c05239e3e4ba6f9df974cf9d74932ed9ffff17b2e5f70014f90ef288261df8664b25f5332bd6f0ae36be1fc4ef92499f22d4b3297ff593c0fefb7525dc9e4df3c30de5fa53a9229feb12553bc2ec66f46f2565f92c97f37609ca7b4df25d37e825a32adff89fba39eaafb92293fea24f3ebb7627cb13ebbfd944cfbadbf2453fe37154cf287a664d257d15e715e80fa6fcce673f2af117846f94076075e503d2188c1d88f9a9b82c91f2457c954cf38832df2279ba9647adfe70a8cfaecf62098e2ef6e2699ce27ed04533cb2d5c0d8efaa3c09a6fa46f12199ec5d3c0feba51dcd9f63517f5dbd0886bd3f4be6d76f7f30d59b62c164afde5432d5271f2453bdf0118c7abd77124ced4f1ac914afae2553bd5edc0ff3b9f32498ec6d1308a6f66c55c9341fdd83313f9ba23da8ef46a564dabf664aa6fd21f27b8a37e291643abfe249a6f9ce174cfb13a2028cf78b25b9647a1fd4a364f20fdf92c97f0c25d37a512599d607a03f22bf375ac994ffa49229ff78944cf94a2618fe48fe1ef59e4632bd3f270163becf2ac994bf8beb71fe4b0d2453bd27964cf552d13fa807da2f9269ff612499e627d13ed40f424330b55f13d763bfc6ed4332c50f37c1f0f78a64daff3d964cfb43c578637daf7a138cfd39429f719e6745fa30314df21f590ec6fedd32134cfbb10c5d30f98bcb8b64da2f3c01dbd87fbc174cf5c92001e37c4d25eee760fff1b7605a0fc8b792e9fc81b8bf43f149740263ff68fe2a989eb722fb9c8878201849a6f75f9e25d3f37cc974fee15532bdaf752898ecdd0904d37a475080512faf7e30e9432e18e7f56e82914f5482c91e0bf13ce4ff7e2698c627fb924cebcfe2f7d8ff1b3e80719eaa934cfaee3992491e717ff80f6f2699f22ff13dcecfa753c9e4bf0e92293f394aa6fd139660b2cfc8904cf9df4230e68b4a32add78bf1c0feda740ec6fbebcab3648a8f2792c95fd492299e1848a67ccd164cf25b2d58f887ab64f2379d64de3fea4132bd6f4efc7e8e7827944cfb7f1e2553bd4f134cfa6c799269ffb6781eea8df14432b57f2718ebe591645a2f8b05231f15bfc77e0f652699e229f13cbc7faa9a4ba6f361427fb03f5013fa8cf5e2c495ccbfd73dc924af180fec0fd33e24737922f17c9c6f6cc91ea626f69b5e13f082fccfe64d32d547bfc0385f565ec0886fba1cecd07a663394ccfb237b05633d627b144cf6779949a6f75fd682c93f06349f4dc5fa433d154cfaace982697d721b4aa6f3c11918f585742299fce5bd64aa67958229be5ac560ac27ac12c178bfd79b64da0ff1e37b7adf95fc3dcef70592a95ebb174cfe3a10cf47fda01c08c67e1b5f32bdcfb0134cfde12a92493ed17f585fc81f25d378dc49a6f8e253308d57249e3f417c7a904cfbcd7e30c5d382b11e982592797f24df82b1de954ba67aa6907f4af69baec138af6c8d24533d692f99ea733bc1e4ff3c0b2cde37be944cfe712499f2b1b964b2675732c52bd0670bfb45d54832e58fba64da0fb301e3fd8d4a2499d67f857ee0fc72f82d99be5f81713e3e194aa6fd49e27e588fb89ec1884fae13c9d4ffa27fb0bff0229e67537fae481f66e612fb2d776083ec3debc026eaa53618f18a3b0323fe580f04d3f5c98b64da7f63825df217852e99ce77907c33113f6c4dc134df6f1f24d37c9982b17ee04f05537b9a77c9148f88dfa3deb07a92ccfb7f73168cf365778229be48bf25537d19f28bf501e55e309d4fc94f92c97fcec158cf2b12c1e41fbb4fc9b43e3d104cf3f7f6158cf87ebb170cffe448267942c1e47fba05187f1f455049a6f5614330f4ff0d8cf3b88ab83fde3770d94ba6fafc12bca0f6a557c1c80f6dc9644fb964aa7f1492a99eb1934cf3f718bc44fd632199f2ab67c914bfd782518f16e389f78346a23dd8bfa58c25d379ba4030c95b5f2453fc5c824deacfec2299f6eb6c25d37ae74630e2b94632ad170bf9b13fb87b964cf514713df61bd4aa643a9f0f7bb31cecbf10fa28f6e3f89269bd83e2adb9399f52bd33032fa6fcfef9086cd07e8d95f81eeb1b97a964b2bf0dd8a2f958ff02dbb41fbbbb825d9a3f2eb5608a3fe28560caafb6141fcd45fdb11a83b11e180f05d37e5c5f114cfe669d8051ef6f3dc1a40fab108cf3d9e55a30ce3b1a60d4d78bab649a5fe5f7645f978364dededbb360f247452899ea616730d6e7d6779269fdfb4330f9bbd4148cf8e7058cf5b8e44932bdffe25e30f6835c24d3f9d1b964b27f713decdd16ed9b937fd2f792a99ed2082679a247b0380f33964cf3ab18af05c52f57d1df381f5baf2453bcff0046fcacfe60daaf6a4aa6f9ed4b30ce7fce25d3fedd1918f65f8af1c37e6d4f954cf9cf5a32c927fa17fbede254326faf22aec77c1bd582a9fd971d58ecef3524d3fe5ea1bfd84f97d1f82ec47a83be124cf5c8ca07dba4efbab8de9df2dffba44f0b51afeb5cc1747d32154cf61eecc043ccf74f9269ffd3098cf7495c1e25d3f9c14a30ad9f281f92693de2001ee3bcf34430e94f71114cfe259883f17ef6b52599de2f36144cfaa23c4aa6fafd188cfa79d60a267de832c1345f1786649a3f7e30cd97a2bdc86ff55232c54fb9648a6fc4f367e44fbaa1649a5f669269ffb7f87e4ef6915f2453beaf4ba6f9443c1feb655a2c99e47b944cfb532493ff6bef25d3f86ec1e2bc532318ef1712fa82f3cdc55e32b5ff1b0c7b5acd25d3df9fa04ba67ac25e32bd0f44b4cfc0f95ad13f787f759c08c6fb8f34c9141f6e2453fee80b46fe22fac7c2fbafef24933f17fa8efdf9590dc6fb8d4a8a079626ceb3d513b04bfa5a527cb664f645eb65067848f359fd8369bfec063cc27ae45532d5e31f25f3f15c3d83315f5d12c9544f740553fe1e6592a93f3dc158bfb88127145ffb9560b2873a96cce5d75f25537ce90ba6fa62f283a95e2ae49bd2f82b0f82c93ef385645a6f17ed453d39984aa6fac04c32fdfd5607c1a42ff14a30cdb7b74232e5a76f60e483fe5132cdafb960c4fb5f60c4aba52218ebaf7b30d69fb6e27b9c1f0ceec1d82f962b92c95f1d24537da7148cf93d05239f534f92e9bc8bb81fcefb1547c9544fabc1383fe68af1c67e92f807d3fe43213ff6af7662fcb19fdaa37cc410f5ebfc5e30cd1f6b07ecd2f85a347e06332faa8f1cc0d0efdb17784cf6e91a82499ff44ff004eb318f92693fdebd649adf5f05937efa67c1347fe91618e7bb6e7782112faa60ac8736a1601a8fac00a31ee98c05e37d155bc1347ff8aa647a1fc009bca0f1f21682c99f9ae2fe0b6acf360763fd62bb168cfcb0148cf7790879f1be9ad4954cf53cd17fd8bfe49f24533db1164cfdbd7d07e33cd346fc1efb17b789643a4f300423bf303760bcdfec42f669b27885ee47f38169e1bc977e124cf18d3706e3fd11fa163c22fdda9482a7b43e7805c3ff058660ba9f2b9e87f364d14632d5fb4792e9ef37fe02e33cd926028bf364efe039c9b712f747fdd9ad24d3f58231fee58b601affdb9b648a6f7230dedfe12d25d3fa760a467d3817f218145fd99f9269bda1924cefdf93df23fe7e009b349f98623c2c1a5ffb2298ee97d8609c3f32e6609c3f8b2cc9646f0bc914cf3f4aa6786607c6fe958ee20f8bcdafb43f81e20b165e93fe5c3e25d37e30f13dea3ddd093cc27ede2d18f5983804e3fd1d9a25989ed7168269ff61fa089e223f9e8167d47f862699d6f39e25d3fe68152ce2b70318e7c9ec67c9f4fe12138cf70f252918f1932b9e67507caf08f9f1be9938069b648fc15e308dbf32108cf7df88e7637f627c150cff7a0163ff42f000c6f99c88ec9b4d37a867d1fc62b3f1a3fd3c743f5b8c5ff102463cb2da82117fb4df9269bde12498ec510f25d3fef01c8cfcb8b425d37eaa5232bd5f2506235ed85a9269bda4154ce31d89f6cef17ea8037841f76b447b17d84fb6012fa9fd6b211fea49978b608a4f0c156c423f3bc9b49f3602c31e6f7bc1d0bf4a32c50fe44f6c1bfb3be22918e7e93a6287d907adb70ec063eacfd51b784afdb3d1c0c85f8a5232cd97afe0398ddf652d99fcf75130e5879d09c67c961482c97eae7bb049f74b3ac9349e86649a4f2692b93cb978be8df749b88229be509660eca7f39f24d3f922713dd6afaedf8269bcd690c7c6f9d755001e52bc5b533ceb5a63d29fab2199ce63edc1139a9f82083c25f9f5068cf745dd2cf082c6238d25d3fb1d378229bf503ec178dfce6a0946fce9bd0aa6fe5ccf04e37d0af27aca77ac1bd8a2e747df9229fe2dc136f98ffc4530e9f34a934cf9f10fa6e78be739387f48fde9daa8f7273c3e310716f67b260f9269ffde1318efefb91e24537dcd06e3fd79f6156ca0deb1904cf6a080d1fe6a2199e67b5f303d4fbb801dd8fb0a8cf8f9a611db78ff5dac8211df745f60d413133e7e2c389be17ccc183c27ff97459279ffac4b30de27947e0826f94c4532bd7f5d032fa9fd6d2a784af58e21d8a0f9e1aa48a6f53f5b30d58ffd6730de5f94ad89ed01d9ef86eb2b0b2eb0feac6fc04b92af7525d3fbcd8f6093fccde64532d9cb4d30c57fe1128cfd33eb77c1a41feb028cf7355a1f82e9f9ee1cec62ffea9b60f227892918e785f0bd8dfdafe9b3601a4f270463fda81980f17ea59adbbf3966fd41ef472dc14bf2075b1b6c60fdec4132d50f0bc9944f1cc126c693dad7bf5e9ff2075c6f63bd6b45fd33b1e6549fb8adc0580fdc7682c97fdd5ab035a5f74309c67961e50bec523c1de2f736eaf7f11c3ca4feaba8bfa6d664467fffdc080c7f53b492a97e6f08a6f686776013fab4964cf69982717ed224ff30b5b15fe81608c6fbd3ce60c48b2d8dd78cdd8ff2eb5430c5839b5730f2dff60086be74a4af33d6ff148fdd8391ff6a74bf390b30693de808b6917f64c436ce8fdf1230f6bfb7345e0b6b3a27fbe9c0f319bdaf8bfcc782a5f7e43f0f60cc4705f99f256b3fedf71c826d92ef3625b627349f68dcdf9b2c9f9b927f237d3458ffd1fc5b8327f007241f530f1aaf6b00467cad51ffb2f8674efd41fed5b6711ed0e4fac192cf39b57733022fe97ecf977feda32abf7d8c9f3e26ffa7827fa74fcf0afb9da5daaac3fe58ff6a0be8f3df21cb2f72b9ecf3bb5c0afe9b90afff77f7df5116d62247f5d81ffad87ddba87590cbfd87bfb3f1f9779605f20899fa6be8cfffb79fff167b71e9f393743ffadc1663f4e33aa96fbdedf8eccf3f18b9ffff65e16dfbc90e6009240d1fa9bf2b3bc9439ee0df4d1661eb3f64f9313a3f24f3e4e717cbfa7791e5379fecfefa91d758f05a8e94457a8a7f2b590235542335561335553335570b364ea55aa917b5669f86e951ab76ec7365b2de544dd5d99f15ff9dc67eb1fe379365a3aed827652391a85bf6b963d2ecd43dfbec982c07464726dd91fdfb4e3da9f74cce7bf5817d0c76e53ff4daff5b6479e43dfdc446e699fddb597d515fb94ebda9efea87faa906ec9a9449f8c524f85607ea501da96375a24ed5993a67d2fc1bc9c25a7a5637ec9f91ba607f02d8fd92c9f2cafe6929aafaa4284cc7be15431d2ba662b18fad380af31a8aa7f8ff3d92fcf7cc954aa0844aa4c44aa2a44aa6e44ccf5ca63d2dfbf4b6622a059b45064aa954ca45a9954669954eb92a3745537465a5acffe8b5ff37cab251b6ca9db253cf8aa2ec95036bf1513929f7ca83f2a83c29cfca5979515e9537e55df9503e952ff6dfbf9581325446ca589928d37f23596c65a6cc9505d3b393b26413cd83f261288661b044c0b00dc7700dcff08dc0088dc8888dc4488dccc88dc2288dcab8a87746fddf23c99f9345b58ca6ff23a390df6677a3353ae36adc0ccdd08d95b13636c6d6b83376c69efd391847e364dcb3cf897d8e8c1fd8e7d178329e8db3f162bc1a6fc6bbf1c1b4b0cf02685e757f9b797f9aadfe999ff8af6561527c1a5feccfb7313086c6c818315fd4186363624c8d194b9916c6b2370ad3304dd3326de3683aa68b8fc73ebe19b04f684666c465eaa53a9a31936a6726666a66666e16666956e6c5accdc66ccdcebc9a375333757365aecdcd2f33b1f2eb1cfcd764311a736bde3169becd9db9e7b21ccc8379344fe6bdf9603e9a4fe6b379365fcc57f3cd7c373fcc4ff38b7dbecd8139c467648ed967c23e63736aceccb9b960992a3334e3de322cd3b22cdb722cd7f22cdf0aacd08aacd84aacd4caacdc2aac12b9dc2f91c5ffaa2c56655dac4b3f2e566d0cad5a3d5b8dd55a9d75b56e9666e9d6ca5a5b1bd6d3f7ccd96ead3bd6522689b5b3f61677bfd6019f2393666a9dac7beb817d1ead27ebd93ab351da592fd6abf566bd5b1fd6274b98bf5884b0601e3d61b3e9c0faeea3cf1fd1d1bfa2634cb31a8bfe82f001fff74a89aca135b2c6d6c49a5a336b6e2d7acdb196cc74fa4a9ed18f85b5b34d48f2439643bf4c614e6ddb766cd77ab03ddbb7033bb42326cfc178b4633bb1533bb37336abda766197ea935dd997de92fecce74fc932307756cdc6646055aa67d77663b776675fed9badd9ba71303fec95bdb6376c249ef9676fed9924625414662bcc5e602bf766681bf6d6beb377f6de3eb0cfde3eda27fb9e8debde7eb01fed27fbd93eb319d7b35fec57656fbfb1d1b07efffcafc9f27cb16a66274cb78cc6f8b4df992c1ff6a7fd657fdb037bc8faf3c47a7864bbe6dc1edb137b6a2db924bb7e64fab161ff9cb1f6ce85fd9b91bdb0972c485698ddcc1dc3311d662c8eed384cd2bde33a9ee33b8113b218f5dd89545df17fcdecfe155954d7183ab113333bb1edda499cd4c9ec2f27778a5e0ea7640ff0ed3d6b55653d3b17361acf4cc706cc6216dc6ed8ff3b356b6be3b44ca6b9d3998173756e8e66f7938feeac9cb5b3b1b7ecf78eb365d21c8d9d73e7ec9cbd73708ecec9b9771e7ec9107ecb7a7eb6a03f234b2f09f3c683fe7ecea3f3e43c3b67e7c58cadb33db1ced6b33d6656cc3ece2b6b5dc5dab5c0a7f765ec63cfe9e374f8bc39efbd24f6d20e9d0f66fd47e7d3f9ea7fe954ce379366dffff5f6cec8e9ff5acca933b3eb9fe4f8576599ab9db3b05f9c25fba1e21a6ce2b08c23f34accd3bab6ebb8aebd702a73e17ab66b1f5d9ff9a8931b981fccdacfaca5f76ec86c2ae673e6d18ddcd84d98bde0e3746e6a7acc73b02b594fbcd93336be67377373b7704bb7722f6e6d176e63356e6b358ae67656f3afe8987a70afaaeddeecd6d55cdd5db96b3626cfeec6dd9a43f7ceddb97b3622dbde86dd837bb4576e6031ed331df7e4debb0feea3fbe43e1b817b765fdc472195fbeabeb9efec5707f7c3f9703fdd2ff7db1db84377c474f1c0fe7dec4edca93b73e7eec25daabd2f6091b8a7aa81f70fbdda9f91c533d8f46d79b6e778ae937b9e71b2179eef055ec8e4601fdbf0222ff612e6030eb6d1eb8c977a99977b85577a9577f16aaff15aaff3aedecdd33cdd5b796b36e7c7c6c9db785befce7a70471ebb0b1b5d9dfd3ff36fde8e59cec1db7b07efe89dbc7bb5f01e58467af31ebcc71f5af5bb1ff853b23c79cfded97bf15ebd37a730637362dbde3bd32f2e099368cbe6f229b39ae7de76bd0fefd3fbf2bebd8137f446ded89b78536fe6cdbd85b76441d7a3aff8866ffa966ffb8e71f45ddfb31e7c9ff9e8ad6df8811ff663e547ee8069e4831ffb899ffa198bd6be51bffd523c9189fe75599e2f7eee177ee957fec5af0d6603e6d46f7a49fc967d3aff6acead27ffd6cf77bee6ebfeca5ffb1b7febdff93b7fef1ffca37f62f966a2bef8f78aea3ff88ffe93ffec9ffd17ffd57ff3df8da3bdf03ffc4fff8bf9f485bd30c74ee57ffb037fe88f8cbd3ff627fed49ff9737fa1382c27fd6679f70f597ea97dfc99d8d25f066aa004060b112da65f6aff97c0f7fae5b7811d38fe3570cd0fe31478811f04411844411c24411a64411e14411954c14509839a7d1afb3d68838ee59af3e06a3f07b7400bf460c5fc48ef0d9560ddeb99ad30d906f6c27a0e36ecaedbe02ed8057ba50e0e4a191c8353708f0af54f35ab3f2d8b1d3c048fc153f01c9ccdd829ad73f012bcf6da15bc05ef81137c049fccf38c83afe03b1804c360148c8309fb330d66c19c49b47016c1325443253442d3188416fbc39c71e8865ee88741188651c86cc73a8709f3cb4698f29881c50f61d6fbfc300f8bb00cabf012d661e32fd421d3b41fb2387f94e5e77af6cf63d25f1db661175ec39b19875aa8b3bbafac636f27e13a5c33795e8c7b2f0d37e136bc0b77e13e3c84c7f014de870fe163f8143e8767f52d7c095fc337ab08dfc38ff033fc62d2982c22f6d97ff90e07e1301c8563e3184ed82cb40dd6e1943d63e6ee99fd7c9b53f6dfe7e1225c466aa428456444e68fcacdaf5a46b288ff862c28f1d4c8525fd5d7c88e1c7f19b9e673e41987c8376751c02375a61351c8e2f7cf88e524511c25511a65c62dca8347ab65f369cafe3c4645f01895aa1255d125aaa3266a5910d345d7e8166966678ccc75d4467ab48ad6d126da4677c629da452c82f0039ef778d68ecdb40bf6bc7d74888ed129ba77d2e8217aecefcdabed866af4d1eeaff6f2932c068fb043b77516ca2e7a8a9ea373f4629ea357f6a437e6750d16a79ca37773c2e6e8aad7eae823fa8cbea2ef68a0ce153f1a2aea8f2a2c7f9e1b8da27134096d2b8ca6d1cc8aa379b48896b11a2b56111b319bac629b85166eccbc3d9f73962c7f93b29843e33ef6e3200ea3fb388ae3f081f554cadbcafc5a1f25fe2c0b7ff68f7131d4f8f9e22cd4f73889d3388bf3b888cbb86277bcb0f87111d7d6dedd5b4f7c2639b959dcc46ddcc557ff515dfdb4f662cb3bbaca5875e25bacc5ba3f8b57f13adec4dbf82edec57ba5890fea323ec6a7f83e7e881fe327e3143fb3d866c9bc7380b86e689de373fc120ce2d76011bfc5effd88736b3055a38fdeff992c0ad34726cb6b9cb8adba8a3f4c23fe649db7641ec6b09ee3da665ed3fc0c33f6dcaff83b1ec4c378a456eaca7e51ee94713c862c3c1eecff9dfdb7493c55f57816cfe345bc4c54e3c17e4894c448ccc44aecc449dcc44bfc24484263efde9b3e8bd8d887e7a42c3b65f3d6d17c4da2244e92244db2a84872b1baf07765b1c886f8155b36bbb2fe65914fa2b8499194e69b71f26fd69e8dc9d9b998dff6c13ad953e39054c925a99326d6d5f7beea9db4ccca52f40d55c1d97d95bb385332bb4abae49adc12cd38252ceb4956c93ad924dbe42eba26bb641f1c9243724cd82c657a8ec272014364d94c9b4b2f4dee9387e4d158264f09b34ab146d2e722ff4c96e499f5e198e50e2bf6efe7e4257935dfad3e3f3f276f56ff8afa7df26ece8dfb709c7c249fc957f29d0c143d192a8b64c4abe3bdc7b4fbac8dc9c264b2df93713231de9269324be6c63159d8c76469c6a99a2aa9919aa995daa9e3dfa76eeaa5bef1603a2cbfe1b2f45910cb54b769601cd3308dd2384dd294cbc2d76dfa7cc4180aaff6932c96b0fe3453466e6b97cc8e9d344f8bb4343fd22a4c98f75a5afdfe8687f4621becee75daa46ddaa5d7d451f4a04b6fa996ea91c9fd3f978549c3644957e93adda4dbf42eddb15fedd3837d4c8fe9c9d8a7f7e943fa18fae953642b7a344c9fd373fa92bed2c8902c2ca7db4681719fbea5efe947fa997ef5feb197a56f7f9f5bfd2acb8f91e17a78607dbb5412ff2139a7dfce9069eb673ae86da5f7c54ee5fa696f8f553a4ac7e9249da6b3a4b50b65c3f42c5177fe23ef31361a7d0edad724d379ba4897999a29c63163f971b4efb3e3ccecb3e2649559999d39ea57ea0475e6665ee66781e9fa81a3a06ab0eb675096e1c5599845599c25ce23b3172e8b6af5b9d52fb2889a9add3f99d14efd4a064ccf952c553eb2cc74cc2fe61b077dcecbf477613d982316e37efaeb2ccf8aaccc2a61e7e45b98b34db24b56678d5dc763f53b6bb32ebb662c62f343d6df6ff6c2fd66de9c652c99661ce3a74ccf56d93adb306bd3b36d76e74efa5999c53363a603cf76bfcd8445369691edb23d93e5901db313d31d85db7491ddff268bf28b2ca67a973d3032b24743c99eb82ccc37f67d642ebcc4661146f69c9db397ec357bcbde852c1855577d4bdaec23fb8c9e93419a655fd97736c8d8e866a36cec8eb24936355da7cc66d9bcf7ebacbf17d93257734509552b377233b7723b77d8377d3d6dc29edad74398b7cedddccbfdec900779a828ff4496be024a7dabf8bd36f63edacc23c330ee982cbd97efed70c024619219f7799c27fe364ff32c3c30597eac4172bf95e779919779a556f925aff3266f8d63dee5d75eb7dc613f1ef9cdfdeeb3e25cb316f153aee7ab7cad9eed32dfe4dbfcced67396c1b09879c8729a4bafd9feb7719f29f93e3fe4c73cc88e4c9b1392c52afe812cbd0f559209d332db2ed5263f1926f32baed05ca6678eed5877ecbfbce6f7fe5dfe104cf347a3fd690d92d97afe943f671725cecff94bfe9abfe5ef7dd4937ff49909af719cddaf6cca73628dcd8871fe997fe5dff9404d9cc833f3613ecac7f1579ff1997dbc4c51b4cfee30c9a7f92cc9988e1d59a699f47e377c0bdffe200bb75792259fab7b854d65ea77be302c63cfd2fb1dd5bc481673943bf9b2500b8545f5b3e8814547b6dcabc0575793b1fa919f0ba33059b7d9ac557d2cbfe8f312ebaeb7e4c2e96b1785cb62ad53e1157e111461112923d52ee22229d22233f67d5ec365611ac6aecdd98cb92f8aa22caa3c2459faf6b398f5f597f9e5375958c6b34f6fcc62be8b0b7be4ce74a97227646177ae8ba6688b2e288a6b714bf25f7684303d53fc645268855eac8ab5710835e7b597a5d8b06cabaf6a7ef4d5be60cd243916dbe2aed815fbe2a0d8c5317b284ec57df1503c16cc3efa1a279764614e0b268f7128cec54bf15abcfd248b1aaa7f57164fcab22bde59fe742a3ed894b5efa33c5420875c9645f1597c15dfc5a01806398ba2c90bffd8555114a3625c4c8a692f4931ebd72c989ea8c5bc8f467b5b6677e03163b12cd5ecbb544287c540d7d250c2d22cadd22e9dd2354ebc22c2ae36c7f6a1f498cdc6a55f06e1ae64290dd731f7efc822d654c40cf3adb665c472b053191b2ecbef852cfb5e16f3cb3a9749999659996749745f163f564a7824669465599597b22e9b5e92b2cd34661b565f3b6371dc985bb4e10ffaaca7ecca6b79b3be4acd0a4a9d8d67c4a45995eb72536e992cbabdeda326368e5bebbecf64cabb7257ee7b591425cd7a6d28b552fb45961fd13ef773ea8dcd103b75c56439183e1bebc81c5b7d3d2cb0674e63cfcb63792aefcb87f2b17c6271ce86e527a398c594ca9d5d97cfe5b97c295fcbb7f29d79d12eef32adafee9bb3bebec13f337b5f7eb079bc2c3fcbaff2bb1c985d392c47e5b89c94d3c42d67e5bc5c944be3c45c7d156a7c4c0f665f1939564a655466d06746a7e0d4ef2ab2aadf62fedefb3059d8b7663f36c8d834bbaa2c26cbbd19b2deec97483a264b6b06c6a1b22bc79bc5e3a00996e5c4dc562e538ba86236cfa29545e5574115329fca66bb3ea736471513d73a313946fd9a4515dbdb2aa9d22aabf2aaa84a2bacaaea52d55553b5556745c1b1ba062b362e5ba7a355b57ebda3aff254b74aabf42467b21c83a36ad9f51f641151a5cf6571d488e9e246bd315559556b264bc4662c268b193269f64c96a37bf65a6fae2e2387e9eb5bb5a9b6d55db5abf6cab53a54c7ea54f575e17be6c717d681c5d5233e26a3fe2ebd3d570f4c96c7eaa97af646d5b97ab1aaead5dc556fd57bf5517d565ff128afabef5e966ac07ac2e5f5cf678bddb11a56a36a9ce4ce23c6c5339adf627e4bca6270efba60d1ee539ac5a36a524db98e912c51af654c965335f33a8f656bca3c34ccae9a87af9eaac6ac3f17d5f2a26637f7f5a25cb81fb615f38349d17f26b406c3ee7570377d7e75312fd6c5be38e1cbc5bd78179f8d897f092e6134b8449798c9d2b91fccbadefb159cde673059946a7449823e47f6d9c7fea32ca859283c96225912f549bdbfa4ec9e593fc6fdfa9c6df523d4af3d18a774e75d2fb9925e8ad0c8eefbbcfd525eaacbe5525f9a4b6b9c2edde56a6fcdd1e5165f98bd93244764f10773e445d68e5da55df4cbeab2b6c2cbe6b2bddc5d7655a7b697fde57039ba2fbd2c173633b1d8cde27fd5d684fde2fef27079e4b2a0adfd5add3f95256071f24d29c2faf27479eeb585d61bfb95a07ecd81e9d8a377f35545b3df7975c88ca6feec72bebc5c5ecdc4383afae58daf136d8235f75dbd7e8db92c7c3d96f5f196c5dd5333bebc5f3e2e9f97afcb777cbcf06a13d388e16578195dc66c869ddb6c66cd466c967db5ee7adbbf4c2ed3cb8ccba2f0bcc2fe5d16392f4096545373b5cdcf97f9657159f6eb90bdcdb2d8b85fd50accc08d8c83a7298f8a1fb4c620fca8d55a49b6b5519bc98ac9f9565bb56def1cc38bfaf99ecd8d336ef74cc7b8341e9b3146e6dcdef82cdeac9ddaadbddaaf83484b46e9ad0eeba88eeb84e5ca9fcce3796c6e9db008f4c9dd32590e755a67756e325990875bfd0aeaeff9cbcfb2287eaa2b6e5dd4a5f25557c68149c0bc0fb3dfa8978569716cc69eee2b6aa9cc422bfc8caa9a4590ec7f0d6b5beb7eb84347cdaf2c63af9cd73063f67faa22f6ebdeaff7d27875c746f9cbfc626d5cd6d7fa566bb55eafea35d36ca77c8af27a536fcdd8b9b23cdceb6318d6239bdec2eabb7a57efcb3d932515759e3fe695d8112074cc55efd44370523ae5b13e184cb3597e7f6fdbbc12cfda581f599b4ff57dfde0b6a1556d13b77eac9fea67e3549feb17a65b8bfab59f159cd728b02d1691ceeb37bfb1b7fe376fd994b220ca89acbdfb5abfd71ff56738a8bfeaef7a500fcba01e992ed3c27db17077aec3f29881cb324b63578feb493de5b2507ef20f7264f6a797a59ffb13f6ff0d9bfda7f5ac9ed70b9657b2fc8bc52e5b7b592f9d779bcdc98dda288de13f5a35f3ca1f8dd958c64363db47f6d9374e3f438693be6ed3fbb2c665ff34a2d0def09a9af1cb1ae0d074eb5be3357e1334a1f3d4444ddc244dcafae291e54977eeaec9ac2dfb158b429bbc299ab2a9b8bdd09ca8f42b763fcb42732397c5e4b364aa8cd2cc99c77a7369eaa6316377c3eefb7039352d0b8359d6e186c6aee99a6b738badd0b48a466b74fbc18c9b557aecc7c57c6fd64cdfc76c2c3efa5cbdd9345bebdcdcb9dbbe8283d53fac9c9b5ebfb3a4d935fbe6604d9a63736aee9b0726c363f3d43c3799bbeb6be64c2fe3e6dcbc34afcd9b948559c51f65a1d95ecaa2f1959bb5faa138cd7bf3c1a22ac7ff609e89d973bfa6686f9b4fe3e0dbcd57f31dbae167ad3483669828d60b7bde283359ae356bc66c961b46611f41369366dacc9ab971b296eeb6e1e3815566167d9b9ed3354b63efad5bb5555aa3355bcbe8ebd581396efb15c45d9f2b87ba71689dd66dbdd6ef63181e7719aadfaf09ff365752a5cfa4bdc2fdfa937a8bc76de03dc65d1b1afd4afdb658703fbbed6dba8d8c531bb7499b865ef5de666d9e9fdaa22ddbcad8370fed85595585fce4beaddba66ddbaebd5e5876dfded8bcf3ddd70ee4eabfefed5aaddf1de36baddeaeda755bb35f6dda6df0dede056f5ec89eb7734a63d7eedb437b6c4f52163f38fd41161bd97abff39945bc2c951e313ddbe5b9a2b7f7ed43fbc8b4f7686ffa9d05b5d53ef55adf326fdf9edb97f6d518861f4e5c44ed5bb269df59ccb3cf3b7bc9645ef5f949fbd17eb65fed773b6887eda865b3068b697aed123b19f67e906bf6b69db0acf8d44edb593b6751cb397875ed76d12e3bb59fdbeace38754a67746667c571922779af472c8e39fe4116e75759d84c99a94967770e93e6dab99d67192cd770d89cb063be56ef7c7b5b9f7d3753baa00bbba8da767197746997b1b0b8e8ca7e6dc8db75157bfea5abbbc6df756dd775d7eed6699ddeadfaac8e723b5ec95b326b687b8fe2fb4e65dce75db7ee36eeaedb76776c02d875fbe6397aef0eddb13b75f7dd43f7f8ab2cbfc563b40fdae2fbb87b59fabdb76ef7d43de7cfddb97be95e6bc738b9ae7de8ff1a4166c38eb3eddeba77964f9cba8feeb3fbeabe9d85fad80dba6137eac6d19d195b0b33f6b56ed24dbb5937ef16ddf2aa5e95ab71358d9dfbca7763f9bd1ce6d00ffa99fd6ad97bc7bada4cbe73b7bb322bb18ee1cadd5d5deffdea3109dfaffe35b886d7280fa302b66ffe1d1d13eb0b72bf196a7fdcef5de36b52b2d65d53ebe19ab119ef6c9dddcf7eb5f79ab3ff5a5ccb6bc5e29897ebe55a5bfeb5b9b6d7ee7acd27d7db55bb321d5533b30bdf8da69c5c57d7f57573dde6937efe655aa8f4750ce623a2be06c6f7638dd87c74ecfd38d515ade7de5aaa8171bcde5d77d7bdda3847b5edab2c5993353c07367f9c07f8afd7f89ca7ebe17a8cd953afa7eb3d3dddbf998b6641d1eef5e1fa787dba3e5fcfd797eb6bad3069deaeefd78febe7f5ebfa5d75d74139bc0eafa3eb987d26d7e975769d7b6bd60b8bcccccceb92dba2f5f327f2dd7d73c7fc1c27ebcc52c3a79b7263f955348c4c36f3b9aa6dbf33591cbebef31764b99937eb66df1cd6379ecb66877edf8bad140b2fb9b139d0b8f7b51b0b346f8152ddc25b748bd5db2db9a5b7ec96df8a68d025e15755df4a7377ab6e97f0e3c626c65b5bac6e9db1ef772df0fd16d6af1f5eafb0d86cc4246aee7236b3dcaeb7db4d4bc6d133cb2d44fefb87ddf3ffb52ce6e34dbfad6eeb86c5860d1b0d663515f3f8ecff6d8fc5eecc9fe593dbe6b6bdddd5a5fa62d7cae2b65386b7fdeda0d4ea58dd869f55773bde4eb7fbcbddede1f6787bba3ddfce51623f180fb71733643e7af24759983454afa4fbbfdede54f7f67efb48068a226ac97f7d7d3f2a6e9fb7afdbf76dc02b565f2cb35c58776c86d89a73162f6d6e43e3741bddc6b7c96d9abab759eadce6f1241ef77bf56f8bc80a5fa2eab6d4d4a8d394a85202f5ac199aa9599aadb1b16e5acdedade4e78fbbef3396c82759cc58f3345f0bb4508bf242d1d20ce3f287d3597fc25e1eb5584bb454cbfad981dd7b617e7a119385f624cdedad96f733a75668a5566917ad564325615ed0b65fe289b25322add15aadd3aedacdf84c1dd573979aa6e9da4a5b6b1b7ba16da99af0ebc8b03f2a8bb1ad7667dada9db653bba0b9bddbef2c7f37642dcfa1f8f22fc8926a7beda01db59376af3db008efce9cfa1f2c3bda71eb6451633568f92e43ed517bd29eb5b3f6a2bd46b935d2de8c85f61e4fb40f36269f2c216e94246ccb2767e999da97f6ad0d3436a6edeeefd98bf5dcee2c35f2b59136d6260a8bd955d72eed525db37111f562ef2fcbf2a84db59936d716da52578d7da8318f79673d9993b86e6fecb363518056b6bac26c79a71bbad92a9dab5bc64db77527327457c97596ee844e7fe622ce597e32d4033dd4233dd6133dedc7e0d74f98f5b2447e2f95bbd7333dcfebb2d20bf6fbfe0c84266b797c86ff2b3a16157aa957fa45aff5466ff5aedf11c3f2de39af8f322fa45ffb798faffbfaa6ebbe66817ed3355dd757fa5adfe85bfdcef850bff59dbe77c6d5413fe847fda4dfeb0ffaa3fe14bd07aece722db28dde4ef86e0bf3e78fe9e8e764adbfe8af4aa36ead86cdca34abf4f6eff075c43fbd8724c9f537fdbdb8ea1ffaa7fea57febcc07588affed6ed3ca56a3f7beea637afd3a561f4733895c33d687fa888dd0589fe8537da6cff585be5ca92b6565accc95e5eddd3c7ded778d38d5ca5e39b6e1eec90f0b0ff68b2cae7170dc95bbf2567e3c535f56415f310a4e2cdeea57df6a5a7bfb73b2048fab701505b355bc4a56e92a5be5ed78555807166b6efa5ccb3afe248bc9b28265dee5ceed8565b4b755b9aa5697555dcd568d3e5ab5b1c7f7c23129dcddaaeb76abab395e752c5bbbe3f66e626ef955166f7533e3b261f9d270a5b1f178e335567efeafaf2afd9571311f57fa6ab55a6bb362b8daacb6abbbcbc76ad75767d2a05f79b0b67d0ecf64796372ec983c0adfc570cff7819ef85efea3d8cf6bdcbbdf76e87ff8cd6abf3aac8ead1d7cb84edffa7e9e679aa6b63b6627bfcae2af4eab7b9643ad570fcdfbea919fce727f3a052c4f69fca971795a3dafceab176db67ad5ebd5dbea7df5b1fa8cbff26ef595f615a31fbbddf98749f7c177bc0f9d57f6795b7daf06d17e35147b2cfbbdbccd9339ee7739b58bd5a8d72e173b9358e3acdf65b1ceab717d67ec5693d574355bcd51c3b7708ec1fdf3314c92af16abe55a5d2b6b439badcdb5b5b6d7ceda5d7bc69e45cffb1f7bdefb489eaffb32097a7b62b3105fc7e3fba9f9beea7e36627e6318266b7f1dacc3c0091cbecb91452c6431bd17f85d967e7473dbd8d7efeb681dab77e20c2d9745f9b16be9cff8b1f03198af933c5d5bc1789daeb375be2ed6e5ba5a5fd6b5b5b437741601fbf7fbd5b30fbe57a25f6bb15a16fc34ceba757416dfb3e83e9ce9d77ecd807df6ebceefd6cc62bc50c8d2eeb411f366bfd90bd7d26374b7beadb53573e4b2fee5fed5793f628aba5eaf37ebedfa6ebd5befd787f5717d5adfaf1fd68feba790c5fdd69eef5ac1b8b04fbf9ef76a7e704b3e584bbedb9f5950bffba8f7e2eb7e97fcb1df83b63eaf5f02d736cc28effa73246c8e1feb193f73d2e7373edfafe4b23c69bb7e5dbf35cafa7dfdc1e617c8f2f7f78ffdf38ff3283f69566595d196e7f5e7fa6bfdbd1eac87eb11d335bea38c568b980e4db0afbf8fa6c6acc7cffc04c6b2dfadd7cbe90f7a7bea77569a43967505d5e0a69a713e6171d79d36d1f3f5b8f776eb49bfa3b61f93cb389f38de7aba9eade7eabdd8d32b674be7afc8f2d3d9621ecf798f6a11dcaf179774bdcc5f36ea46d9181bb37faead164ebf368979c230a77db5439cb4602336661ab91436d3dc39174ba1fd0a2caa7f6511e4ae0f0b36569fdfacc6cce59f8ce3c6c9271b77e36dfc4d607da94f56f35b9bfed2b8fc7eb6381a2a9ee2da55972acd26dc449b78936cd24db6c9f9aa0bcb6eac27ffdbf68bbc782effdf76ae6549552488eee733a6f615fdba7dbb6356a899203e5a6db51f3b4444f0c14b1489987f9faa8202a4bd37b457331113b9d010943a661645669d93b6d9e37b5a6207f5ce54d90a7b630ee6244ed8f3c2d4532060d9afca32ad349d280e4d481246103617866ae8b10a11c3b2b36c86248e1fe983506f36cb7bd7f59cde1344592e9dd23decc91c0e90c0115250a0014d680104cf80a691efb672cf7c667bc1191af13a6a6c8d2ed758790ea8a041fba8a546ca6681e23a2c67047dffd9b4a1130fb9e20cbad0833e2ce34747a706bc2c0e85fef98baee722bfd4f4404187dc51957668dcd0c2d0b660004318c12b8c61025378f3347fb13bb0acbe5df0f8ab3a31cdd0e01d3ee0136ee036e9c2ddb1ed7437f7e95459c13d7169c0bcfd003fe0117eb2bb700a4ff08c94def1b9eef5e9337dca1557dfc052a8ea8aefae6ed98c216b9d45ef4ffa485524aebeeaa181333471eeaa5edbb7f71bff47100423b4421517519a70a1686ff7106f632dbe471b97ebe0a027b3a4874ec8a276354cdffc603e255ca59dee228325a4b8c2354b719e8d29bbca113774bcb961e319c8f15c1f6327bd3884873ca043ee1bdcda7dce35430f7d0c30740718e10e636fed2f7ddd7f0cc2861b3aa1161991827b3cecfa8d66ec6112bce2115354f693204dfadb96d559cd6ccab25f967cd21655d61b3627a2d61336b0892d72a03dc20e53978ef868d8fa229f5faee75a7fe935c07eb745b764495b08ec7d0311d5f514356ca3bffd70224ff774bfb3f1822818bb5ad8461d3bd8c5de6e837df6fe0507fb088787258ef015c7d68bd0fa1a7cc79ef3f0a8623d21573237714a0f6bb636061dba66de58d0211dac1b76bfe293ef6039b59ad281736c393795d713791dceebf80ee712f96e3009ddd07544a5d179e13613e6e4967d435ca3ec245389a0cad56bfd58aad7bf7aee9fc122ff178e852391e3f3ba9c7d9399eff23a234758aeb7d96b869def6fe7fb0f468e60216ac18678a2378b9890bd31a42ee18c42f1d27b720dcf09969c1fb0909d7904e76ec356026184f0baafc89d66956e3da5fecbf6f6f369d67545d6b5c5d924df135a7ec542cb5e26e49a7cbfc201afa191da8093df3604f79408ae9ab0ad576031ca9ca3caca1635c83935653d22cfb448ce3bcf6adc752c32e62a9eb9443352aa19aaaae7e288acea1ab4729f2cb50e052bf5d4871cf952b02732ae47d9db635ea9689b453c57bc2062244752ad5f5e84c592fcc3e1ee4c949995795bc152fdbea830d827ffc84c20e9088f91d2fb395e4b665b520152c3422492ebf27dce3a1163b10a2cc60916c11710bad85b6ed69a7320cdc09db863ceee0a1533e20c1ccef6c814cd995eb334f9fc9ecf4b7ebda988b5c23b67b1108e04dff03d63da7fc32f8b9a5f4caeec2fc7c9c7e6f5bc5e154b795ce2e596e3679fca7dd222b624e3bc58134fe3a1e0bbcd199677fcb81c4b3d6a7ea7d6aeb0fb7e71ceb9a3f5738b7cbeda2ba7de3ba79caf57e52fff15fb1fcbbfd3fefcfbaf3ffe0193cc32fd</data>
+ </image>
+</images>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/pages/sidedecorationimpl.cpp b/util/install/win/pages/sidedecorationimpl.cpp
new file mode 100644
index 0000000000..aa25825c40
--- /dev/null
+++ b/util/install/win/pages/sidedecorationimpl.cpp
@@ -0,0 +1,205 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "sidedecorationimpl.h"
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qgrid.h>
+#include <qregexp.h>
+
+/* XPM */
+static char *check_data[] = {
+/* width height num_colors chars_per_pixel */
+" 11 12 4 1",
+/* colors */
+". c #939393",
+"# c #dcdcdc",
+"a c None",
+"b c #191919",
+/* pixels */
+"aaaaaaaaaa#",
+"aaaaaaaaabb",
+"aaaaaaaabba",
+"aaaaaaabbaa",
+"aaaaaabbaaa",
+"a#aaabbaaaa",
+"ab.a.b.aaaa",
+"a#bbbbaaaaa",
+"aabbbaaaaaa",
+"aa#b.aaaaaa",
+"aaa.aaaaaaa",
+"aaaaaaaaaaa"
+};
+
+/* XPM */
+static char *arrow_data[] = {
+/* width height num_colors chars_per_pixel */
+" 11 11 4 1",
+/* colors */
+". c None",
+"# c #b9b9b9",
+"a c #8a8a8a",
+"b c #0d0d0d",
+/* pixels */
+"...##......",
+"...ab#.....",
+"...abb#....",
+"...abbb#...",
+"...abbbb#..",
+"...abbbba..",
+"...abbba...",
+"...abba....",
+"...aba.....",
+"...aa......",
+"..........."
+};
+
+/* XPM */
+static char *cross_data[] = {
+/* width height num_colors chars_per_pixel */
+" 11 11 3 1",
+/* colors */
+". c #cc0000",
+"# c None",
+"a c #fc3464",
+/* pixels */
+"###########",
+"###########",
+"########a.#",
+"##a####a.##",
+"##a.###.###",
+"###a...a###",
+"####...####",
+"####...a###",
+"###.a##..##",
+"##a.####aa#",
+"##.########"
+};
+
+
+SideDecorationImpl::SideDecorationImpl( QWidget* parent, const char* name, WindowFlags fl ) :
+ SideDecoration( parent, name, fl ),
+ checkPix( ( const char** ) check_data ),
+ arrowPix( ( const char** ) arrow_data ),
+ crossPix( ( const char** ) cross_data ),
+ activeBullet( -1 )
+{
+ Q_ASSERT( layout() != 0 );
+ if ( layout()->inherits("QBoxLayout") ) {
+ ((QBoxLayout*)layout())->setMargin( 0 );
+ }
+ setSizePolicy( QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Expanding) );
+ if ( globalInformation.reconfig() ) {
+ versionLabel->setText( "Reconfigure Qt " + globalInformation.qtVersionStr() );
+ } else {
+#if defined(QSA)
+ QString versionStr = globalInformation.qsaVersionStr();
+ versionStr.replace( QRegExp(" Evaluation"), "" );
+ versionLabel->setText( versionLabel->text().replace( "Qt", "QSA" ) + " " + versionStr );
+#elif defined(EVAL)
+ QString versionStr = globalInformation.qtVersionStr();
+ versionStr.replace( QRegExp(" Evaluation"), "" );
+ versionLabel->setText( versionLabel->text() + " " + versionStr );
+#elif defined(NON_COMMERCIAL)
+ QString versionStr = globalInformation.qtVersionStr();
+ versionStr.replace( QRegExp(" Non-Commercial"), "" );
+ versionLabel->setText( versionLabel->text() + " " + versionStr );
+#elif defined(EDU)
+ QString versionStr = globalInformation.qtVersionStr();
+ versionStr.replace( QRegExp(" Educational"), "" );
+ versionLabel->setText( versionLabel->text() + " " + versionStr );
+#else
+ versionLabel->setText( versionLabel->text() + " " + globalInformation.qtVersionStr() );
+#endif
+ }
+#if defined(EVAL)
+ editionLabel->setText( "Evaluation Version" );
+#elif defined(NON_COMMERCIAL)
+ editionLabel->setText( "Non-Commercial Edition" );
+#elif defined(EDU)
+ editionLabel->setText( "Educational Edition" );
+#else
+ editionLabel->setText( "" );
+#endif
+}
+
+SideDecorationImpl::~SideDecorationImpl()
+{
+}
+
+void SideDecorationImpl::wizardPages( const QPtrList<Page>& li )
+{
+ QBoxLayout *lay = 0;
+ Q_ASSERT( layout() != 0 );
+ if ( layout()->inherits("QBoxLayout") ) {
+ lay = (QBoxLayout*)layout();
+ } else {
+ return;
+ }
+ QPtrList<Page> list = li;
+ Page *page;
+ QGrid *grid = new QGrid( 2, this );
+ grid->setSpacing( 2 );
+ for ( page=list.first(); page; page=list.next() ) {
+ QLabel *l = new QLabel( grid );
+ l->setSizePolicy( QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed) );
+ bullets.append( l );
+ l = new QLabel( page->shortTitle(), grid );
+ }
+ lay->insertWidget( -1, grid );
+ lay->insertStretch( -1 );
+}
+
+void SideDecorationImpl::wizardPageShowed( int a )
+{
+ if ( activeBullet>=0 && (uint)activeBullet<bullets.count() ) {
+ if ( a < activeBullet )
+ bullets.at(activeBullet)->clear();
+ else
+ bullets.at(activeBullet)->setPixmap( checkPix );
+ }
+ bullets.at(a)->setPixmap( arrowPix );
+ activeBullet = a;
+}
+
+void SideDecorationImpl::wizardPageFailed( int a )
+{
+ bullets.at(a)->setPixmap( crossPix );
+}
diff --git a/util/install/win/pages/sidedecorationimpl.h b/util/install/win/pages/sidedecorationimpl.h
new file mode 100644
index 0000000000..f39e20445a
--- /dev/null
+++ b/util/install/win/pages/sidedecorationimpl.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef SIDEDECORATIONIMPL_H
+#define SIDEDECORATIONIMPL_H
+
+#include "sidedecoration.h"
+#include "pages.h"
+#include <qpixmap.h>
+#include <qlabel.h>
+
+class SideDecorationImpl : public SideDecoration
+{
+ Q_OBJECT
+
+public:
+ SideDecorationImpl( QWidget* parent = 0, const char* name = 0, WindowFlags fl = 0 );
+ ~SideDecorationImpl();
+
+public slots:
+ void wizardPages( const QPtrList<Page>& );
+ void wizardPageShowed( int );
+ void wizardPageFailed( int );
+
+private:
+ QPixmap checkPix;
+ QPixmap arrowPix;
+ QPixmap crossPix;
+ QPtrList<QLabel> bullets;
+ int activeBullet;
+};
+
+#endif // SIDEDECORATIONIMPL_H
diff --git a/util/install/win/pages/winintropage.ui b/util/install/win/pages/winintropage.ui
new file mode 100644
index 0000000000..ac2545b123
--- /dev/null
+++ b/util/install/win/pages/winintropage.ui
@@ -0,0 +1,39 @@
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>WinIntroPage</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>WinIntroPage</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>387</width>
+ <height>228</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Form1</string>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QTextBrowser">
+ <property name="name">
+ <cstring>textBrowser</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;p&gt;It is strongly recommended that you exit all Windows programs before running this install program.&lt;/p&gt;&lt;p&gt;Click &lt;tt&gt;Cancel&lt;/tt&gt; to quit install and then close any programs you have running.&lt;/p&gt;&lt;p&gt;Click &lt;tt&gt;Next&lt;/tt&gt; to continue with the setup program.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ </hbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/qt.arq b/util/install/win/qt.arq
new file mode 100644
index 0000000000..f3f1ccceff
--- /dev/null
+++ b/util/install/win/qt.arq
@@ -0,0 +1,3 @@
+This is just a dummy file. Use the package program to add the real qt.arq
+file to the package.
+This file must be smaller than 500 bytes.
diff --git a/util/install/win/resource.cpp b/util/install/win/resource.cpp
new file mode 100644
index 0000000000..4ea0ad842f
--- /dev/null
+++ b/util/install/win/resource.cpp
@@ -0,0 +1,162 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "resource.h"
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qapplication.h>
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+/*
+ Tries to load the binary resource \a resourceName. If the resource is
+ smaller than \a minimumSize, the resource is not loaded and isValid()
+ returns false. isValid() returns also false when the loading failed.
+ */
+ResourceLoader::ResourceLoader( char *resourceName, int minimumSize )
+{
+#if defined(Q_OS_WIN32)
+ valid = true;
+
+ HMODULE hmodule = GetModuleHandle( 0 );
+ // we don't need wide character versions
+ HRSRC resource = FindResourceA( hmodule, resourceName, MAKEINTRESOURCEA( 10 ) );
+ HGLOBAL hglobal = LoadResource( hmodule, resource );
+ arSize = SizeofResource( hmodule, resource );
+ if ( arSize == 0 ) {
+ valid = false;
+ return;
+ }
+ if ( arSize < minimumSize ) {
+ valid = false;
+ return;
+ }
+ arData = (char*)LockResource( hglobal );
+ if ( arData == 0 ) {
+ valid = false;
+ return;
+ }
+ ba.setRawData( arData, arSize );
+#elif defined(Q_OS_MAC)
+ valid = false;
+ arSize = 0;
+ arData = 0;
+ QFile f;
+ QString appDir = qApp->argv()[0];
+ int truncpos = appDir.findRev( "/Contents/MacOS/" );
+ if (truncpos != -1)
+ appDir.truncate( truncpos );
+ QString path = appDir + "/Contents/Qt/";
+ path += resourceName;
+ f.setName( path );
+ if (!f.open( IO_ReadOnly ))
+ return;
+ QFileInfo fi(f);
+ arSize = fi.size();
+ arData = new char[arSize];
+ if (f.readBlock( arData, arSize ) != arSize)
+ {
+ delete[] arData;
+ return;
+ }
+ ba.setRawData( arData, arSize );
+ valid = true;
+ return;
+#endif
+}
+
+ResourceLoader::~ResourceLoader()
+{
+ if ( isValid() )
+ ba.resetRawData( arData, arSize );
+#if defined(Q_OS_MAC)
+ delete[] arData;
+#endif
+}
+
+bool ResourceLoader::isValid() const
+{
+ return valid;
+}
+
+QByteArray ResourceLoader::data()
+{
+ return ba;
+}
+
+
+#if defined(Q_OS_WIN32)
+ResourceSaver::ResourceSaver( const QString& appName )
+ : applicationName(appName)
+{
+}
+
+ResourceSaver::~ResourceSaver()
+{
+}
+
+bool ResourceSaver::setData( char *resourceName, const QByteArray &data, QString *errorMessage )
+{
+ // we don't need wide character versions
+ HANDLE hExe = BeginUpdateResourceA( applicationName.latin1(), false );
+ if ( hExe == 0 ) {
+ if ( errorMessage )
+ *errorMessage = QString("Could not load the executable %1.").arg(applicationName);
+ return false;
+ }
+ if ( !UpdateResourceA(hExe,(char*)RT_RCDATA,resourceName,0,data.data(),data.count()) ) {
+ EndUpdateResource( hExe, true );
+ if ( errorMessage )
+ *errorMessage = QString("Could not update the executable %1.").arg(applicationName);
+ return false;
+ }
+ if ( !EndUpdateResource(hExe,false) ) {
+ if ( errorMessage )
+ *errorMessage = QString("Could not update the executable %1.").arg(applicationName);
+ return false;
+ }
+
+ if ( errorMessage )
+ *errorMessage = QString("Updated the executable %1.").arg(applicationName);
+ return true;
+}
+#endif
diff --git a/util/install/win/resource.h b/util/install/win/resource.h
new file mode 100644
index 0000000000..791edfe9d9
--- /dev/null
+++ b/util/install/win/resource.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef RESOURCE_H
+#define RESOURCE_H
+
+#include <qcstring.h>
+#include <qstring.h>
+
+class ResourceLoader
+{
+public:
+ ResourceLoader( char *resourceName, int minimumSize=0 );
+ ~ResourceLoader();
+
+ bool isValid() const;
+ QByteArray data();
+
+private:
+ bool valid;
+ int arSize;
+ char *arData;
+ QByteArray ba;
+};
+
+#if defined(Q_OS_WIN32)
+class ResourceSaver
+{
+public:
+ ResourceSaver( const QString& appName );
+ ~ResourceSaver();
+
+ bool setData( char *resourceName, const QByteArray &data, QString *errorMessage=0 );
+
+private:
+ QString applicationName;
+};
+#endif
+
+#endif // RESOURCE_H
diff --git a/util/install/win/setupwizardimpl.cpp b/util/install/win/setupwizardimpl.cpp
new file mode 100644
index 0000000000..909d9864ee
--- /dev/null
+++ b/util/install/win/setupwizardimpl.cpp
@@ -0,0 +1,2571 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "setupwizardimpl.h"
+#include "environment.h"
+#include <qfiledialog.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qprogressbar.h>
+#include <qtextview.h>
+#include <qmultilineedit.h>
+#include <qbuttongroup.h>
+#include <qsettings.h>
+#include <qlistview.h>
+#include <qlistbox.h>
+#include <qapplication.h>
+#include <qcheckbox.h>
+#include <qtextstream.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qcombobox.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qtabwidget.h>
+#include <qarchive.h>
+#include <qvalidator.h>
+#include <qdatetime.h>
+#include <qlayout.h>
+
+#include <keyinfo.h>
+#if defined(Q_OS_WIN32)
+
+#include <process.h>
+#endif
+
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+#include <check-and-patch.h>
+#endif
+
+#if defined(EVAL)
+# define LICENSE_DEST "LICENSE.EVAL"
+#elif defined(EDU)
+# define LICENSE_DEST "LICENSE.EDU"
+#elif defined(NON_COMMERCIAL)
+# define LICENSE_DEST "LICENSE.NON_COMMERCIAL"
+#else
+# define LICENSE_DEST "LICENSE"
+#endif
+
+#include "resource.h"
+#include "pages/sidedecorationimpl.h"
+
+#define FILESTOCOPY 4582
+
+static const char* const logo_data[] = {
+"32 32 238 2",
+"Qt c None",
+"#u c #000000",
+".# c #020204",
+"a. c #102322",
+"af c #282500",
+"as c #292e26",
+"a8 c #2c686a",
+"ae c #307072",
+"#C c #322a0c",
+"#s c #36320c",
+"am c #3b3d3f",
+"#3 c #3c8082",
+"#f c #3e3a0c",
+"## c #423e0c",
+"#9 c #434341",
+"ad c #438888",
+"aU c #458d8e",
+"#g c #46420c",
+"aM c #46494a",
+"ay c #474948",
+"#D c #4a4328",
+".W c #4a4611",
+"az c #4a4641",
+"a1 c #4a4a49",
+"aH c #4b9e9e",
+"au c #4d9a9f",
+"aS c #4e9a9a",
+"an c #4f4e4a",
+".X c #504e0c",
+"a7 c #51a4a9",
+"#0 c #525250",
+"aT c #55a6a3",
+".Y c #56520c",
+"#a c #5a5604",
+".Z c #5e5a0c",
+".V c #5e5e5c",
+"a0 c #5e5e60",
+"a6 c #5ea0a6",
+".J c #625e0c",
+"bB c #64aaa9",
+"#m c #665e2c",
+"aL c #686867",
+"bw c #68acb2",
+"bo c #696928",
+"ba c #696967",
+"aE c #69aeb2",
+"#z c #6a5614",
+".K c #6a660c",
+"aZ c #6a6a65",
+"bG c #6db4b4",
+".9 c #6e5e24",
+"#. c #6e6a5c",
+"bv c #6fb6b9",
+"bC c #706d28",
+"br c #70bcc5",
+"aQ c #71b7ba",
+".I c #726234",
+".L c #726e0c",
+".0 c #72720c",
+"#w c #746d44",
+"be c #747028",
+"bH c #747428",
+".M c #76720a",
+"aR c #78c1c2",
+"#Z c #797977",
+"a2 c #7a5d3d",
+"#H c #7a6614",
+"#I c #7a760a",
+"#l c #7a7634",
+".1 c #7a7a0c",
+"#e c #7a7a5c",
+"bL c #7bc0c2",
+"b. c #7c7d82",
+"#d c #7e6e34",
+".N c #7e7a0a",
+"bP c #816c20",
+".8 c #82763c",
+"#h c #827a3c",
+".x c #827e0c",
+"#t c #827f4b",
+".O c #828204",
+"#v c #828384",
+".P c #868604",
+"bq c #87d4d9",
+"#k c #89864b",
+"#c c #8a8244",
+".y c #8a8604",
+"#j c #8d8652",
+"al c #8d8d8a",
+"#b c #8e8644",
+".z c #8e8e04",
+"aW c #8f9094",
+"#i c #908952",
+"#Q c #909021",
+"ag c #90d0d2",
+"bO c #916f34",
+"bQ c #91cdd3",
+".7 c #928a44",
+"#p c #928e6c",
+"#P c #947f2f",
+".A c #949204",
+"bh c #949495",
+".6 c #968e4c",
+"aC c #999721",
+".w c #9a8a44",
+"#M c #9a9a99",
+"ap c #9b9b21",
+".5 c #9c924c",
+"#R c #9c9a04",
+"#7 c #9d9d9b",
+"ao c #9e7641",
+".4 c #9e964c",
+"#J c #9e9b21",
+".B c #9e9e04",
+"ac c #9e9e9d",
+"#S c #a09e21",
+"ax c #a0a0a3",
+"aK c #a1a1a2",
+"aX c #a1a1a4",
+".r c #a2a204",
+"#1 c #a2a221",
+"aF c #a2e1dd",
+".3 c #a49a54",
+".2 c #a69e54",
+"bR c #a78446",
+"#6 c #a9a9a8",
+".T c #aaa254",
+".s c #aaaa04",
+"#W c #abaaa6",
+"aN c #ac8861",
+".S c #aea25c",
+".R c #aea65c",
+".t c #aeae04",
+"#L c #b0b0b0",
+"#o c #b2ae94",
+".u c #b2b204",
+"aI c #b2b2b4",
+"b# c #b3b3b2",
+"#X c #b4b4b6",
+"#V c #b5b4b4",
+".Q c #b6aa5c",
+".n c #b6b604",
+"aY c #b6b6b7",
+"bN c #b79658",
+"ah c #b7e5e3",
+"aG c #b7ebe9",
+"ar c #b9d9dc",
+"#8 c #bcbcbe",
+"ab c #bdbdbe",
+".m c #beae5c",
+".F c #beb264",
+"aq c #bef6f6",
+"aB c #c1a470",
+"#F c #c1c1c3",
+".E c #c2b664",
+"at c #c2e9eb",
+"bI c #c39c6a",
+"bs c #c3a366",
+"#U c #c3c3c0",
+"aw c #c3c3c1",
+"#G c #c3c3c7",
+"aD c #c3f1f2",
+"a# c #c6c6c3",
+"#2 c #c7edf3",
+".D c #c8ba6c",
+"bM c #c9a470",
+"#N c #c9c9c4",
+".C c #cabe6c",
+"ak c #cacaca",
+"bx c #cbb076",
+"aa c #cbcbc9",
+"a3 c #ccac7f",
+".H c #ceba54",
+"#E c #ceced0",
+"bi c #cfaf7e",
+"#Y c #cfcfcb",
+"bK c #d1ac80",
+"#5 c #d1d1cf",
+"bu c #d2ae83",
+"bm c #d3b180",
+"bD c #d3b384",
+"bF c #d4b589",
+"aJ c #d4d4d3",
+".j c #d6c664",
+".v c #d6c674",
+"#K c #d6d6d5",
+"bJ c #d7b588",
+"bd c #d8b289",
+"bz c #d8b78d",
+".q c #d8ca74",
+"aj c #d8d8d9",
+"bb c #dabd97",
+"a5 c #dcba91",
+"bE c #dcc097",
+"aA c #ddc292",
+"aP c #dec491",
+".p c #dece75",
+"bk c #dfc79c",
+"av c #e0e0e0",
+"#A c #e2dabc",
+"#O c #e2e2e4",
+"aO c #e3c898",
+"by c #e4c7a1",
+".l c #e6da84",
+"a4 c #e7c7a2",
+"bt c #eacaa5",
+".o c #eede84",
+".G c #eee284",
+".i c #eee294",
+"bn c #efd7b4",
+".k c #f2e69c",
+".e c #f2eaa4",
+"bc c #f3d8b8",
+"bj c #f5e2c8",
+"#r c #f6eea4",
+".f c #f6eeb8",
+".g c #f6f2cc",
+".c c #faf6d4",
+".d c #fafae4",
+".U c #feee95",
+"bA c #fef26c",
+"#q c #fef2ac",
+"#x c #fef2b8",
+"bp c #fef684",
+"bl c #fef690",
+"bg c #fef69c",
+"bf c #fef6a4",
+".a c #fef6b4",
+"#B c #fef6c4",
+"#y c #fef6ce",
+"a9 c #fefaac",
+"aV c #fefab7",
+"ai c #fefac4",
+"#4 c #fefad1",
+"#n c #fefadf",
+".h c #fefaec",
+"#T c #fefee6",
+".b c #fefefa",
+"QtQtQtQtQtQtQtQtQtQtQtQt.#QtQtQtQtQtQt.#QtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQt.#.#.a.#QtQtQtQt.#.b.#.#QtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt.#.#.a.a.a.a.#QtQt.#.c.d.b.b.#.#QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQt.#.#.e.e.e.e.e.e.e.#.#.f.f.g.g.c.h.b.#.#QtQtQtQtQtQt",
+"QtQtQtQt.#.#.i.i.i.i.i.i.i.i.j.j.b.b.k.e.f.f.g.g.c.d.#.#QtQtQtQt",
+"QtQt.#.#.l.l.l.l.l.l.l.l.m.m.n.n.o.o.b.b.k.k.e.f.f.g.g.c.#.#QtQt",
+"Qt.#.p.p.q.p.p.p.p.p.m.m.r.s.t.u.p.q.v.v.b.b.i.i.k.e.f.f.g.g.#Qt",
+"QtQt.#.j.j.j.j.j.w.w.x.y.z.A.B.r.C.C.D.E.E.F.b.b.o.G.k.k.e.#QtQt",
+"QtQtQt.#.H.H.I.I.J.K.L.M.N.O.P.z.Q.Q.Q.R.R.R.S.T.b.b.G.G.#QtQtQt",
+"Qt.#.#.U.V.W.W.W.X.Y.Z.J.K.L.0.1.2.3.3.4.5.5.6.6.7.8.9#..b.#.#Qt",
+"QtQtQt.#.U.U.U.W.W##.W.X.Y#a.J.K.7.7#b#b#b#c#c#d#d.h.h.b.#QtQtQt",
+"QtQtQtQt.##e.U.U.U.W.W#f#g.W.X.Y#h#i#j#k#l#m#m#n#n.h#g.#QtQtQtQt",
+"QtQtQtQt.##o#p#e#q#q#r#f#f#s#f#g#t#u#v#u#w#x#y#y#g#g#z.#QtQtQtQt",
+"QtQtQtQt.#.b#A#o#p#e#B#B#B#C#C#D#u#E#F#G#u#y#g#g#H#I#J#uQtQtQtQt",
+"QtQtQtQt.#.b.h.b#A#o#p#e.d.d.d#u#K#L#M#N#O#u#P#Q#R#S#u#u#uQtQtQt",
+"QtQtQtQt.#.b#T.h#T#n#A#o#p#e#u#U#V#W#X#Y#Z#0#u#1#S#u#2#3#uQtQtQt",
+"QtQtQtQt.##T.h#T#n#T#n#4#A#u#5#6#7#6#8#Z#0#9#u#S#u#2#3a.Qt#u#uQt",
+"QtQtQtQt.##T#n#T#4#4#4#4#u#Oa#aaabac#Z#9#9#u#S#u#2adaeaf#uagah#u",
+"QtQtQtQt.##n#n#4#4#4ai#u#Oajak#Yalamanao#u#Sap#uaqar#3asagatau#u",
+"QtQtQtQt.##T#4#4#4ai#uav#O#OawaxayazaAaB#uapaC#uaDaEaFaGataH#uQt",
+"QtQtQtQt.##4#4aiaiai#uaIaJ#OaKaLaMaNaOaPao#u#uaDaQaRaSaTaU#uQtQt",
+"QtQtQtQt.##4aiaV.aaV#uaWaXaYaZa0a1a2a3a4a5ao#ua6a7a8#u#u#uQtQtQt",
+"QtQtQtQt.#aiaiaiaV.aa9#ub.b#baa0#u#1#ubbbcbdao#ua8#ube.#.#.#.#Qt",
+"QtQtQtQt.#aV.aaVaVbfbfbg#ubhba#u#1.AaC#ubibjbkao#ube#a.#.#.#.#.#",
+"QtQtQtQt.#.aa9.abfa9bgbgbg#u#ubl.AaC#uaD#ubmbna5ao#ubo.#.#.#.#Qt",
+"QtQtQtQt.#.aa9a9bgbgblblblblbpbpaC#uaDbqbr#ubsbtbuao#u.#.#QtQtQt",
+"QtQtQtQtQt.#.#bgbgbgblblbpbpbpbp#uatbvbwa8#u#ubxbybzao#uQtQtQtQt",
+"QtQtQtQtQtQtQt.#.#blblbpbpbAbp#uaDbBbwa8#ubebC#ubDbEbFao#uQtQtQt",
+"QtQtQtQtQtQtQtQtQt.#.#bAbpbA#uaDbGbwa8#ubH.#.#Qt#ubIbJbKao#uQtQt",
+"QtQtQtQtQtQtQtQtQtQtQt.#.##uaDbLbwa8#u.#.#QtQtQtQt#ubMbNbObP#uQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt#ubQbwa8#u.#QtQtQtQtQtQtQt#ubRbO#uQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt#u#u#uQtQtQtQtQtQtQtQtQtQt#u#uQtQtQt"};
+
+static bool findFileInPaths( const QString &fileName, const QStringList &paths )
+{
+ QDir d;
+ for( QStringList::ConstIterator it = paths.begin(); it != paths.end(); ++it ) {
+ // Remove any leading or trailing ", this is commonly used in the environment
+ // variables
+ QString path = (*it);
+ if ( path.startsWith( "\"" ) )
+ path = path.right( path.length() - 1 );
+ if ( path.endsWith( "\"" ) )
+ path = path.left( path.length() - 1 );
+ if( d.exists( path + QDir::separator() + fileName ) )
+ return true;
+ }
+ return false;
+}
+
+bool findFile( const QString &fileName )
+{
+ QString file = fileName.lower();
+ QStringList paths;
+#if defined(Q_OS_WIN32)
+ QRegExp split( "[;,]" );
+#else
+ QRegExp split( "[:]" );
+#endif
+ if ( file.endsWith( ".h" ) ) {
+ if ( globalInformation.sysId() == GlobalInformation::Borland )
+ return true;
+ paths = QStringList::split( split, QEnvironment::getEnv( "INCLUDE" ) );
+ } else if ( file.endsWith( ".lib" ) ) {
+ if ( globalInformation.sysId() == GlobalInformation::Borland )
+ return true;
+ paths = QStringList::split( split, QEnvironment::getEnv( "LIB" ) );
+ } else {
+ paths = QStringList::split( split, QEnvironment::getEnv( "PATH" ) );
+ }
+ return findFileInPaths( file, paths );
+}
+
+static bool createDir( const QString& fullPath )
+{
+ QStringList hierarchy = QStringList::split( QDir::separator(), fullPath );
+ QString pathComponent, tmpPath;
+ QDir dirTmp;
+ bool success = true;
+
+ for( QStringList::Iterator it = hierarchy.begin(); it != hierarchy.end(); ++it ) {
+ pathComponent = *it + QDir::separator();
+ tmpPath += pathComponent;
+#if defined(Q_OS_WIN32)
+ success = dirTmp.mkdir( tmpPath );
+#else
+ success = dirTmp.mkdir( QDir::separator() + tmpPath );
+#endif
+ }
+ return success;
+}
+
+SetupWizardImpl::SetupWizardImpl( QWidget* parent, const char* name, bool modal, WindowFlags flag ) :
+ QWizard( parent, name, modal, flag ),
+ tmpPath( QEnvironment::getTempPath() ),
+ fixedPath(false),
+ filesCopied( false ),
+ filesToCompile( 0 ),
+ filesCompiled( 0 ),
+ licensePage( 0 ),
+ licenseAgreementPage( 0 ),
+ licenseAgreementPageQsa( 0 ),
+ optionsPage( 0 ),
+ optionsPageQsa( 0 ),
+ foldersPage( 0 ),
+ configPage( 0 ),
+ progressPage( 0 ),
+ buildPage( 0 ),
+ finishPage( 0 )
+{
+ // initialize
+ if ( !name )
+ setName( "SetupWizard" );
+ resize( 600, 390 );
+#if defined(QSA)
+ setCaption( trUtf8( "QSA Installation Wizard" ) );
+#else
+ setCaption( trUtf8( "Qt Installation Wizard" ) );
+#endif
+ QPixmap logo( ( const char** ) logo_data );
+ setIcon( logo );
+#if defined(QSA)
+ setIconText( trUtf8( "QSA Installation Wizard" ) );
+#else
+ setIconText( trUtf8( "Qt Installation Wizard" ) );
+#endif
+ QFont f( font() );
+ f.setFamily( "Arial" );
+ f.setPointSize( 12 );
+ f.setBold( true );
+ setTitleFont( f );
+
+ totalFiles = 0;
+
+ // try to read the archive header information and use them instead of
+ // QT_VERSION_STR if possible
+ QArchiveHeader *archiveHeader = 0;
+ ResourceLoader rcLoader( "QT_ARQ", 500 );
+ if ( rcLoader.isValid() ) {
+ // First, try to find qt.arq as a binary resource to the file.
+ QArchive ar;
+ QDataStream ds( rcLoader.data(), IO_ReadOnly );
+ archiveHeader = ar.readArchiveHeader( &ds );
+ } else {
+ // If the resource could not be loaded or is smaller than 500
+ // bytes, we have the dummy qt.arq: try to find and install
+ // from qt.arq in the current directory instead.
+ QArchive ar;
+ QString archiveName = "qt.arq";
+# if defined(Q_OS_MAC)
+ QString appDir = qApp->argv()[0];
+ int truncpos = appDir.findRev( "/Contents/MacOS/" );
+ if (truncpos != -1)
+ appDir.truncate( truncpos );
+ archiveName = appDir + "/Contents/Qt/qtmac.arq";
+# endif
+ ar.setPath( archiveName );
+ if( ar.open( IO_ReadOnly ) ) {
+ archiveHeader = ar.readArchiveHeader();
+ }
+ }
+
+#if defined(QSA)
+ ResourceLoader rcLoaderQsa( "QSA_ARQ", 500 );
+ if ( rcLoaderQsa.isValid() ) {
+ // First, try to find qt.arq as a binary resource to the file.
+ QArchive ar;
+ QDataStream ds( rcLoaderQsa.data(), IO_ReadOnly );
+ QArchiveHeader *archiveHeaderQsa = ar.readArchiveHeader( &ds );
+ if ( archiveHeaderQsa ) {
+ QString qsa_version_str = archiveHeaderQsa->description();
+ if ( !qsa_version_str.isEmpty() )
+ globalInformation.setQsaVersionStr( qsa_version_str );
+ delete archiveHeaderQsa;
+ }
+ }
+#endif
+
+#if defined(Q_OS_WIN32)
+ // First check for MSVC 6.0
+ QString regValue = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual C++", "ProductDir", QEnvironment::LocalMachine );
+ if (!regValue.isEmpty())
+ globalInformation.setSysId(GlobalInformation::MSVC);
+
+ // MSVC.NET 7.0 & 7.1 takes presedence over 6.0
+ regValue = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.0", "InstallDir", QEnvironment::LocalMachine );
+ if (regValue.isEmpty())
+ regValue = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.1", "InstallDir", QEnvironment::LocalMachine );
+ if (!regValue.isEmpty())
+ globalInformation.setSysId(GlobalInformation::MSVCNET);
+
+ while (globalInformation.sysId() == GlobalInformation::Other) {
+ globalInformation.setSysId(GlobalInformation::Borland);
+ if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
+ break;
+ globalInformation.setSysId(GlobalInformation::MSVCNET);
+ if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
+ break;
+ globalInformation.setSysId(GlobalInformation::MinGW);
+ if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
+ break;
+ globalInformation.setSysId(GlobalInformation::Watcom);
+ if (findFile(globalInformation.text(GlobalInformation::MakeTool)))
+ break;
+ }
+#endif
+
+ if ( archiveHeader ) {
+ QString qt_version_str = archiveHeader->description();
+ if ( !qt_version_str.isEmpty() )
+ globalInformation.setQtVersionStr( qt_version_str );
+
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ if ( archiveHeader->findExtraData( "compiler" ) == "borland" )
+ globalInformation.setSysId(GlobalInformation::Borland);
+#endif
+ delete archiveHeader;
+ }
+
+ initPages();
+ initConnections();
+
+ if (optionsPage) {
+#if defined(QSA)
+ optionsPage->installPath->setText(
+ QString( "C:\\Qt_QSA\\Qt" ) +
+ QString( globalInformation.qtVersionStr() ).replace( QRegExp("\\s"), "" ).replace( QRegExp("-"), "" )
+ );
+#endif
+ }
+ if ( optionsPageQsa ) {
+#if defined(QSA)
+ optionsPageQsa->installPath->setText(
+ QString( "C:\\Qt_QSA\\QSA" ) +
+ QString( globalInformation.qsaVersionStr() ).replace( QRegExp("\\s"), "" ).replace( QRegExp("-"), "" )
+ );
+#endif
+ }
+ readLicense( QDir::homeDirPath() + "/.qt-license" );
+}
+
+static bool copyFile( const QString& src, const QString& dest )
+{
+#ifdef Q_WS_WIN
+ QT_WA( {
+ return CopyFileW( (const wchar_t*)src.ucs2(), (const wchar_t*)dest.ucs2(), false );
+ }, {
+ return CopyFileA( src.local8Bit(), dest.local8Bit(), false );
+ } );
+#else
+ int len;
+ const int buflen = 4096;
+ char buf[buflen];
+ QFileInfo info( src );
+ QFile srcFile( src ), destFile( dest );
+ if (!srcFile.open( IO_ReadOnly ))
+ return false;
+ destFile.remove();
+ if (!destFile.open( IO_WriteOnly ))
+ return false;
+
+ while (!srcFile.atEnd()) {
+ len = srcFile.readBlock( buf, buflen );
+ if (len <= 0)
+ break;
+ if (destFile.writeBlock( buf, len ) != len)
+ return false;
+ }
+ destFile.flush();
+ return true;
+#endif
+}
+
+void SetupWizardImpl::initPages()
+{
+#define ADD_PAGE( var, Class ) \
+ { \
+ var = new Class( this, #var ); \
+ SideDecorationImpl *sideDeco = new SideDecorationImpl( var ); \
+ \
+ Q_ASSERT( var->layout() != 0 ); \
+ if ( var->layout()->inherits("QBoxLayout") ) { \
+ ((QBoxLayout*)var->layout())->insertWidget( 0, sideDeco ); \
+ ((QBoxLayout*)var->layout())->insertSpacing( 1, 10 ); \
+ } \
+ \
+ pages.append( var ); \
+ addPage( var, var->title() ); \
+ setHelpEnabled( var, false ); \
+ \
+ connect( this, SIGNAL(wizardPages(const QPtrList<Page>&)), \
+ sideDeco, SLOT(wizardPages(const QPtrList<Page>&)) ); \
+ connect( this, SIGNAL(wizardPageShowed(int)), \
+ sideDeco, SLOT(wizardPageShowed(int)) ); \
+ connect( this, SIGNAL(wizardPageFailed(int)), \
+ sideDeco, SLOT(wizardPageFailed(int)) ); \
+ connect( this, SIGNAL(editionString(const QString&)), \
+ sideDeco->editionLabel, SLOT(setText(const QString&)) ); \
+ }
+
+ QPtrList<Page> pages;
+ if( globalInformation.reconfig() ) {
+ ADD_PAGE( configPage, ConfigPageImpl )
+ ADD_PAGE( buildPage, BuildPageImpl )
+ ADD_PAGE( finishPage, FinishPageImpl )
+ } else {
+#if defined(Q_OS_WIN32)
+ ADD_PAGE( winIntroPage, WinIntroPageImpl )
+#endif
+#if !defined(EVAL_CD) && !defined(NON_COMMERCIAL)
+ ADD_PAGE( licensePage, LicensePageImpl )
+#endif
+ ADD_PAGE( licenseAgreementPage, LicenseAgreementPageImpl)
+#if defined(QSA)
+ ADD_PAGE( licenseAgreementPageQsa, LicenseAgreementPageImpl)
+#endif
+ ADD_PAGE( optionsPage, OptionsPageImpl )
+#if defined(QSA)
+ ADD_PAGE( optionsPageQsa, OptionsPageImpl )
+#endif
+#if !defined(Q_OS_UNIX)
+ ADD_PAGE( foldersPage, FoldersPageImpl )
+#endif
+ ADD_PAGE( configPage, ConfigPageImpl )
+ ADD_PAGE( progressPage, ProgressPageImpl )
+ ADD_PAGE( buildPage, BuildPageImpl )
+ ADD_PAGE( finishPage, FinishPageImpl )
+ }
+#undef ADD_PAGE
+
+ if ( licensePage ) {
+ setNextEnabled( licensePage, false );
+ }
+ if ( licenseAgreementPage ) {
+ setNextEnabled( licenseAgreementPage, false );
+ }
+ if ( licenseAgreementPageQsa ) {
+ setNextEnabled( licenseAgreementPageQsa, false );
+ licenseAgreementPage->titleStr = "License agreement Qt";
+ licenseAgreementPageQsa->titleStr = "License agreement QSA";
+ }
+ if ( optionsPage ) {
+ setBackEnabled( optionsPage, false );
+ }
+ if ( optionsPageQsa ) {
+ optionsPageQsa->installExamples->hide();
+ optionsPageQsa->installTools->hide();
+ optionsPageQsa->installExtensions->hide();
+ optionsPageQsa->installTutorials->hide();
+ optionsPageQsa->skipBuild->hide();
+ optionsPageQsa->installDocs->hide();
+ optionsPageQsa->sysGroup->hide();
+ optionsPageQsa->pathLabel->setText("QSA destination &path");
+
+ optionsPage->titleStr = "Options for Qt";
+ optionsPage->shortTitleStr = "Choose options for Qt";
+ optionsPageQsa->titleStr = "Options for QSA";
+ optionsPageQsa->shortTitleStr = "Choose options for QSA";
+ }
+ if ( configPage )
+ setBackEnabled( configPage, false );
+ if ( progressPage ) {
+ setBackEnabled( progressPage, false );
+ setNextEnabled( progressPage, false );
+ }
+ if ( buildPage ) {
+ setBackEnabled( buildPage, false );
+ setNextEnabled( buildPage, false );
+ }
+ if ( finishPage ) {
+ setBackEnabled( finishPage, false );
+ setFinishEnabled( finishPage, true );
+ }
+ emit wizardPages( pages );
+}
+
+void SetupWizardImpl::initConnections()
+{
+ connect( &autoContTimer, SIGNAL( timeout() ), this, SLOT( timerFired() ) );
+
+ if ( optionsPage ) {
+ connect( optionsPage->sysGroup, SIGNAL(clicked(int)), SLOT(clickedSystem(int)));
+ connect( optionsPage->sysOtherCombo, SIGNAL(activated(int)), SLOT(sysOtherComboChanged(int)));
+ }
+ if ( foldersPage ) {
+ connect( foldersPage->folderPathButton, SIGNAL(clicked()), SLOT(clickedFolderPath()));
+ connect( foldersPage->devSysPathButton, SIGNAL(clicked()), SLOT(clickedDevSysPath()));
+ }
+ if ( licensePage ) {
+ connect( licensePage->readLicenseButton, SIGNAL(clicked()), SLOT(clickedLicenseFile()));
+ connect( licensePage->customerID, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
+ connect( licensePage->licenseID, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
+ connect( licensePage->licenseeName, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
+ connect( licensePage->expiryDate, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
+ connect( licensePage->productsString, SIGNAL(activated(int)), SLOT(licenseChanged()));
+ connect( licensePage->key, SIGNAL(textChanged(const QString&)), SLOT(licenseChanged()));
+ }
+ if ( configPage ) {
+ connect( configPage->configTabs, SIGNAL(currentChanged(QWidget*)), SLOT(configPageChanged()));
+ }
+ if ( buildPage ) {
+ connect( &configure, SIGNAL( processExited() ), this, SLOT( configDone() ) );
+ connect( &configure, SIGNAL( readyReadStdout() ), this, SLOT( readConfigureOutput() ) );
+ connect( &configure, SIGNAL( readyReadStderr() ), this, SLOT( readConfigureError() ) );
+ connect( &make, SIGNAL( processExited() ), this, SLOT( makeDone() ) );
+ connect( &make, SIGNAL( readyReadStdout() ), this, SLOT( readMakeOutput() ) );
+ connect( &make, SIGNAL( readyReadStderr() ), this, SLOT( readMakeError() ) );
+ connect( buildPage->restartBuild, SIGNAL(clicked()), this, SLOT(restartBuild()) );
+ }
+}
+
+void SetupWizardImpl::stopProcesses()
+{
+ if( cleaner.isRunning() )
+ cleaner.kill();
+ if( configure.isRunning() )
+ configure.kill();
+ if( make.isRunning() )
+ make.kill();
+}
+
+void SetupWizardImpl::clickedFolderPath()
+{
+ foldersPage->folderPath->setText( shell.selectFolder( foldersPage->folderPath->text(), ( foldersPage->folderGroups->currentItem() == 0 ) ) );
+}
+
+void SetupWizardImpl::clickedDevSysPath()
+{
+ QDir dir( foldersPage->devSysPath->text() );
+ if( !dir.exists() )
+ dir.setPath( devSysFolder );
+
+ QString dest = QFileDialog::getExistingDirectory( dir.absPath(), this, 0, "Select the path to Microsoft Visual Studio" );
+ if (!dest.isNull())
+ foldersPage->devSysPath->setText( dest );
+}
+
+void SetupWizardImpl::sysOtherComboChanged(int)
+{
+ clickedSystem(GlobalInformation::Other);
+}
+
+static QString getDirectoryList(const char *envvar)
+{
+ QString environment;
+ const char *cpath = getenv(envvar);
+ if (cpath) {
+ environment = QString::fromLocal8Bit(cpath);
+ environment = QStringList::split(QRegExp("[;,]"), environment).join("\n");
+ } else {
+ environment = "<Environment variable empty>";
+ }
+ return environment;
+}
+
+void SetupWizardImpl::clickedSystem( int sys )
+{
+#ifndef Q_OS_MACX
+ if (sys == 99) // This is the Integrate with IDE checkbox
+ return;
+ globalInformation.setSysId( GlobalInformation::SysId(sys) );
+ if (sys == GlobalInformation::Other) {
+ if (optionsPage->sysOtherCombo->currentText() == "win32-watcom")
+ globalInformation.setSysId(GlobalInformation::Watcom);
+ }
+ if (!isVisible())
+ return;
+ QString makeCmd = globalInformation.text(GlobalInformation::MakeTool);
+ QString environment;
+ fixedPath = false;
+ if ( !optionsPage->skipBuild->isChecked() && optionsPage->skipBuild->isEnabled() ) {
+ QString commandTool;
+ environment = getenv("COMSPEC");
+ if( qWinVersion() & WV_DOS_based )
+ commandTool = "command.com";
+ else
+ commandTool = "cmd.exe";
+ if (!environment.isEmpty() && !environment.endsWith(commandTool, false)) {
+ if (QMessageBox::critical(this, "Environment problems",
+ "The 'COMSPEC' environment variable is not set to use\n"
+ "'" + commandTool + "'. This could cause some problems when building.\n"
+ "If you have difficulty then change it to use '" + commandTool + "'\n"
+ "and restart the installation\n\n"
+ "Please contact your local system administration if you have\n"
+ "difficulties finding the file, or if you don't know how to\n"
+ "modify the environment settings on your system.\n\n"
+ "Alternatively, by clicking yes, the installer will try to set\n"
+ "these for you.",
+ QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
+ fixEnvironment("COMSPEC", commandTool);
+ }
+ if( !findFile( makeCmd ) ) {
+ environment = getDirectoryList("PATH");
+ // ### try to adjust environment
+ if (QMessageBox::critical(this, "Environment problems",
+ "The make tool '" + makeCmd + "' could not be located in any\n"
+ "directory listed in the 'PATH' environment variable:"
+ "\n\n" + environment + "\n\n"
+ "Make sure the path to this file is present in the PATH environment\n"
+ "variable and restart the installation.\n"
+ "\n"
+ "You can find the path to the tool using the 'Find' tool\n"
+ "and add the location to the environment settings of your\n"
+ "system. Please contact your local system administration if\n"
+ "you have difficulties finding the files, or if you don't\n"
+ "know how to modifiy the environment settings of your system.\n\n"
+ "Alternatively, by clicking yes, the installer will try to set\n"
+ "these for you.",
+ QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
+ fixEnvironment("PATH", makeCmd);
+ }
+ if (globalInformation.sysId() != GlobalInformation::Borland && globalInformation.sysId() != GlobalInformation::MinGW) {
+ if (!findFile( "string.h" ) ) {
+ environment = getDirectoryList("INCLUDE");
+ // ### try to adjust environment
+ if (QMessageBox::critical(this, "Environment problems",
+ "The file 'string.h' could not be located in any directory\n"
+ "listed in the 'INCLUDE' environment variable:\n\n" + environment + "\n\n"
+ "You might have to install the platform headers, or adjust\n"
+ "the environment variables of your system, and restart the\n"
+ "installation.\n\n"
+ "Please contact your local system administration if you have\n"
+ "difficulties finding the file, or if you don't know how to\n"
+ "modify the environment settings on your system.\n\n"
+ "Alternatively, by clicking yes, the installer will try to set\n"
+ "these for you.",
+ QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
+ fixEnvironment("INCLUDE", "string.h");
+
+ }
+ if (!findFile("ole32.lib")) {
+ environment = getDirectoryList("LIB");
+ // ### try to adjust environment
+ if (QMessageBox::critical(this, "Environment problems",
+ "The file 'ole32.lib' could not be located in any directory\n"
+ "listed in the 'LIB' environment variable:\n\n" + environment + "\n\n"
+ "You might have to install the platform libraries, or adjust\n"
+ "the environment variables of your system, and restart the\n"
+ "installation.\n\n"
+ "Please contact your local system administration if you have\n"
+ "difficulties finding the file, or if you don't know how to\n"
+ "modify the environment settings on your system.\n\n"
+ "Alternatively, by clicking yes, the installer will try to set\n"
+ "these for you.",
+ QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
+ fixEnvironment("LIB", "ole32.lib");
+
+ }
+ bool foundCommonDll = false;
+ QString commonDll;
+ QString commonDllText;
+ QString presentFileText = "Make sure the path to this file is present in the PATH environment\n";
+ if (globalInformation.sysId() == GlobalInformation::MSVC) {
+ commonDll = "mspdb60.dll";
+ foundCommonDll = findFile(commonDll);
+ commonDllText = "The file 'mspdb60.dll' ";
+ } else if(globalInformation.sysId() == GlobalInformation::MSVCNET) {
+ commonDll = "mspdb70.dll";
+ foundCommonDll = findFile(commonDll);
+ if (!foundCommonDll) {
+ commonDll = "mspdb71.dll";
+ foundCommonDll = findFile(commonDll);
+ commonDllText = "The files 'mspdb70.dll' and 'mspdb71.dll' "; // VC 7.0 or VC 7.1
+ presentFileText = "Make sure the path to one of these files is present in the PATH environment\n";
+ }
+ } else {
+ foundCommonDll = true;
+ }
+ if(!foundCommonDll && !fixedPath) {
+ environment = getDirectoryList("PATH");
+ // ### try to adjust environment
+ if (QMessageBox::critical(this, "Environment problems",
+ commonDllText + "could not be located in any\n"
+ "directory listed in the 'PATH' environment variable:"
+ "\n\n" + environment + "\n\n"
+ + presentFileText +
+ "variable and restart the installation.\n"
+ "\n"
+ "You can find the path to the tool using the 'Find' tool\n"
+ "and add the location to the environment settings of your\n"
+ "system. Please contact your local system administration if\n"
+ "you have difficulties finding the files, or if you don't\n"
+ "know how to modifiy the environment settings of your system.\n\n"
+ "Alternatively, by clicking yes, the installer will try to set\n"
+ "these for you.",
+ QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
+ fixEnvironment("PATH", commonDllText);
+
+ }
+ }
+ if (globalInformation.sysId() == GlobalInformation::Intel && !findFile("icl.exe")) {
+ environment = getDirectoryList("PATH");
+ if (QMessageBox::critical(this, "Environment problems",
+ "The Intel C++ compiler (icl.exe) could not be found\n"
+ "in your PATH:\n\n" + environment + "\n\n"
+ "Make sure the path to this file is present in the PATH environment\n"
+ "variable and restart the installation.\n"
+ "\n"
+ "You can find the path to the tool using the 'Find' tool\n"
+ "and add the location to the environment settings of your\n"
+ "system. Please contact your local system administration if\n"
+ "you have difficulties finding the files, or if you don't\n"
+ "know how to modifiy the environment settings of your system.\n\n"
+ "Alternatively, by clicking yes, the installer will try to set\n"
+ "these for you.",
+ QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)
+ fixEnvironment("PATH", "icl.exe");
+
+ }
+ }
+#endif
+}
+
+void SetupWizardImpl::fixEnvironment(const QString &var, const QString &file)
+{
+ if (var == "COMSPEC" || !(globalInformation.sysId() == GlobalInformation::MSVC ||
+ globalInformation.sysId() == GlobalInformation::MSVCNET)) {
+ QString fn = QDir::toNativeSeparators(QFileDialog::getOpenFileName(QString(), QString(), this, 0,
+ "Please find " + file));
+ QString envs = getenv(var);
+ if (var != "COMSPEC") {
+ fn.truncate(fn.findRev("\\") - 1);
+ fn += ";" + envs;
+ }
+ if (!fn.isEmpty())
+ QEnvironment::putEnv(var, fn, QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
+ } else if (globalInformation.sysId() == GlobalInformation::MSVC) {
+ QString visualStudio =
+ QEnvironment::getRegistryString("Software\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual Studio",
+ "ProductDir", QEnvironment::LocalMachine);
+ if (var == "PATH" && !fixedPath) {
+ QString newPaths = visualStudio + "\\vc98\\bin;";
+ newPaths += visualStudio + "\\Common\\MSDev98\\Bin;";
+ if (qWinVersion() & Qt::WV_NT_based)
+ newPaths += visualStudio + "\\Common\\Tools\\WinNT;";
+ else
+ newPaths += visualStudio + "\\Common\\Tools\\Win95;";
+ QEnvironment::putEnv("PATH", newPaths + getenv("PATH"),
+ QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
+ fixedPath = true;
+ } else if (var == "LIB") {
+ QString newPaths = visualStudio + "\\vc98\\lib;";
+ newPaths += visualStudio + "\\vc98\\mfc\\lib;";
+ QEnvironment::putEnv("LIB", newPaths + getenv("LIB"),
+ QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
+ } else if (var == "INCLUDE") {
+ QString newPaths = visualStudio + "\\vc98\\atl\\include;";
+ newPaths += visualStudio + "\\vc98\\include;";
+ newPaths += visualStudio + "\\vc98\\mfc\\include;";
+ QEnvironment::putEnv("INCLUDE", newPaths + getenv("INCLUDE"),
+ QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
+ }
+ } else if (globalInformation.sysId() == GlobalInformation::MSVCNET) {
+ QString visualStudio = QEnvironment::getRegistryString("Software\\Microsoft\\VisualStudio\\7.1\\Setup\\VS",
+ "ProductDir", QEnvironment::LocalMachine);
+ if (visualStudio.isEmpty())
+ visualStudio = QEnvironment::getRegistryString("Software\\Microsoft\\VisualStudio\\7.0\\Setup\\VS",
+ "ProductDir", QEnvironment::LocalMachine);
+ // With .NET this isn't so easily done, we need to read in the vsvars32.bat file
+ // to get this right
+ QFile f(visualStudio + "\\Common7\\Tools\\vsvars32.bat");
+ QString contents;
+ if (f.open(IO_ReadOnly)) {
+ contents = QString(f.readAll());
+ }
+ int vsinstall = contents.find("VSINSTALLDIR=")+13;
+ QString VSINSTALLDIR = contents.mid(vsinstall, contents.find("\n", vsinstall) - vsinstall);
+ int vcinstall = contents.find("VCINSTALLDIR=")+13;
+ QString VCINSTALLDIR = contents.mid(vcinstall, contents.find("\n", vcinstall) - vcinstall);
+ int framework = contents.find("FrameworkDir=")+13;
+ QString FrameworkDir = contents.mid(framework, contents.find("\n", framework) - framework);
+ int frameworkVer = contents.find("FrameworkVersion=")+17;
+ QString FrameworkVer = contents.mid(frameworkVer, contents.find("\n", frameworkVer) - frameworkVer);
+ int frameworkSDK = contents.find("FrameworkSDKDir=")+16;
+ QString FrameworkSDK = contents.mid(frameworkSDK, contents.find("\n", frameworkSDK) - frameworkSDK);
+ if (var == "PATH" && !fixedPath) {
+ QString newPaths = VSINSTALLDIR + ";";
+ newPaths += VCINSTALLDIR + "\\Bin;";
+ newPaths += VCINSTALLDIR + "\\Common7\\Tools;";
+ newPaths += VCINSTALLDIR + "\\Common7\\Tools\\bin\\prerelease;";
+ newPaths += VCINSTALLDIR + "\\Common7\\Tools\\bin;";
+ newPaths += FrameworkSDK + "\\bin;";
+ newPaths += FrameworkSDK + "\\" + FrameworkVer + ";";
+ QEnvironment::putEnv("PATH", newPaths + getenv("PATH"),
+ QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
+ fixedPath = true;
+ } else if (var == "LIB") {
+ QString newPaths = VCINSTALLDIR + "\\ATLMFC\\LIB;";
+ newPaths += VCINSTALLDIR + "\\LIB;";
+ newPaths += VCINSTALLDIR + "\\PlatformSDK\\lib\\prerelease;";
+ newPaths += VCINSTALLDIR + "\\PlatformSDK\\lib;";
+ newPaths += FrameworkSDK + "\\lib;";
+ QEnvironment::putEnv("LIB", newPaths + getenv("LIB"),
+ QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
+ } else if (var == "INCLUDE") {
+ QString newPaths = VCINSTALLDIR + "\\ATLMFC\\INCLUDE;";
+ newPaths += VCINSTALLDIR + "\\INCLUDE;";
+ newPaths += VCINSTALLDIR + "\\PlatformSDK\\include\\prerelease;";
+ newPaths += VCINSTALLDIR + "\\PlatformSDK\\include;";
+ newPaths += FrameworkSDK + "\\include;";
+ QEnvironment::putEnv("INCLUDE", newPaths + getenv("INCLUDE"),
+ QEnvironment::PersistentEnv | QEnvironment::LocalEnv);
+ }
+
+ }
+}
+
+void SetupWizardImpl::readCleanerOutput()
+{
+ updateDisplay( cleaner.readStdout(), currentOLine );
+}
+
+void SetupWizardImpl::readConfigureOutput()
+{
+ updateDisplay( configure.readStdout(), currentOLine );
+}
+
+void SetupWizardImpl::readMakeOutput()
+{
+ updateDisplay( make.readStdout(), currentOLine );
+}
+
+void SetupWizardImpl::readAssistantOutput()
+{
+#if defined(QSA)
+ updateDisplay( assistant.readStdout(), currentOLine );
+#endif
+}
+
+void SetupWizardImpl::readCleanerError()
+{
+ updateDisplay( cleaner.readStderr(), currentELine );
+}
+
+void SetupWizardImpl::readConfigureError()
+{
+ updateDisplay( configure.readStderr(), currentELine );
+}
+
+void SetupWizardImpl::readMakeError()
+{
+ updateDisplay( make.readStderr(), currentELine );
+}
+
+void SetupWizardImpl::readAssistantError()
+{
+#if defined(QSA)
+ updateDisplay( assistant.readStderr(), currentELine );
+#endif
+}
+
+void SetupWizardImpl::updateDisplay( const QString &input, QString &output)
+{
+ const QChar *c = input.unicode();
+ for( int i = 0; i < (int)input.length(); ++i, ++c ) {
+ switch( char( *c ) ) {
+ case '\r':
+ case 0x00:
+ break;
+ case '\t':
+ currentOLine += " "; // Simulate a TAB by using 4 spaces
+ break;
+ case '\n':
+ if( output.length() ) {
+ if ( !globalInformation.reconfig() ) {
+ if ( output.right( 4 ) == ".cpp" ||
+ output.right( 2 ) == ".c" ||
+ output.right( 4 ) == ".pro" ||
+ output.right( 3 ) == ".ui" ) {
+ buildPage->compileProgress->setProgress( ++filesCompiled );
+ }
+ }
+ logOutput( output );
+ output = "";
+ }
+ break;
+ default:
+ output += *c;
+ break;
+ }
+ }
+}
+
+#if defined(Q_OS_WIN32)
+void SetupWizardImpl::installIcons( const QString& iconFolder, const QString& dirName, bool common )
+{
+ QDir dir( dirName );
+
+ dir.setSorting( QDir::Name | QDir::IgnoreCase );
+ const QFileInfoList* filist = dir.entryInfoList();
+ if ( !filist )
+ return;
+ QFileInfoListIterator it( *filist );
+ QFileInfo* fi;
+ while( ( fi = it.current() ) ) {
+ if( fi->fileName()[0] != '.' && // Exclude dot-dirs
+ fi->fileName() != "sql" ) { // Exclude SQL-dir
+ if( fi->isDir() ) {
+ installIcons( iconFolder, fi->absFilePath(), common );
+ } else if( fi->fileName().right( 4 ) == ".exe" ) {
+ shell.createShortcut( iconFolder, common, fi->baseName(), fi->absFilePath() );
+ }
+ }
+ ++it;
+ }
+}
+#endif
+
+void SetupWizardImpl::assistantDone()
+{
+#if defined(QSA)
+ QString contentFile;
+ static int count = 0;
+ if ( count == 0 ) {
+ connect( &assistant, SIGNAL( processExited() ), this, SLOT( assistantDone() ) );
+ connect( &assistant, SIGNAL( readyReadStdout() ), this, SLOT( readAssistantOutput() ) );
+ connect( &assistant, SIGNAL( readyReadStderr() ), this, SLOT( readAssistantError() ) );
+ contentFile = "qsa.xml";
+ } else if ( count == 1 ) {
+ contentFile = "qt-script-for-applications.xml";
+ } else {
+ doIDEIntegration();
+ return;
+ }
+ ++count;
+
+ // install documentation
+ QDir html( optionsPageQsa->installPath->text() );
+ html.cd( "doc/html/" );
+
+ QStringList lst;
+ lst << "assistant";
+ lst << "-addContentFile";
+ lst << QDir::toNativeSeparators( html.filePath( contentFile ) );
+ assistant.setArguments( lst );
+ if( !assistant.start() ) {
+ logOutput( "Installing QSA documentation failed\n" );
+ assistantDone();
+ }
+#else
+ doIDEIntegration();
+#endif
+}
+
+void SetupWizardImpl::doIDEIntegration()
+{
+#if defined(Q_OS_WIN32)
+ QDir installDir( optionsPage->installPath->text() );
+ if ( optionsPage->installIDEIntegration->isChecked() && optionsPage->installIDEIntegration->isEnabled()
+ && !foldersPage->devSysPath->text().isEmpty() ) {
+ // install the precompiled MS integration
+ if ( globalInformation.sysId() == GlobalInformation::MSVC ) {
+ QDir addinsDir( foldersPage->devSysPath->text() );
+ addinsDir.cd( "Common/MSDev98/Addins" );
+ if ( copyFile( installDir.filePath("qmsdev.dll"), addinsDir.filePath("qmsdev.dll") ) ) {
+ installDir.remove( "qmsdev.dll" );
+ }
+ } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET
+ || globalInformation.sysId() == GlobalInformation::Intel){
+ QString filepath = installDir.filePath("QMsNetSetup.msi");
+ filepath = filepath.replace( '/', '\\' );
+
+ int res = _spawnlp( _P_NOWAIT, "msiexec.exe", "msiexec.exe", "-i", filepath.latin1(), NULL );
+ if ( res == -1 ) {
+ //MSIExec is not in path, look up in registry (only works for NT machines)
+ QString msiexec = QEnvironment::getRegistryString( "SYSTEM\\CurrentControlSet\\Services\\MSIServer",
+ "ImagePath",
+ QEnvironment::LocalMachine );
+ if ( !msiexec.isEmpty() )
+ msiexec.remove( " /V" );
+ res = _spawnl( _P_NOWAIT, msiexec.latin1(), msiexec.latin1(), "-i", filepath.latin1(), NULL );
+ }
+
+ if ( res == -1 ) {
+ QMessageBox::warning( this, "Couldn't execute .NET addin installer script",
+ "Microsoft Installer (MSI) was not found on your system.\n"
+ "Please install MSI, then execute the .NET addin installer "
+ "script,\nlocated at " + filepath );
+ }
+ }
+
+ QFile *autoexp = 0;
+ QFile *usertype = 0;
+ switch( globalInformation.sysId() ) {
+ case GlobalInformation::MSVC:
+ autoexp = new QFile( foldersPage->devSysPath->text() + "\\Common\\MsDev98\\bin\\autoexp.dat" );
+ usertype = new QFile( foldersPage->devSysPath->text() + "\\Common\\MsDev98\\bin\\usertype.dat" );
+ break;
+ case GlobalInformation::MSVCNET:
+ autoexp = new QFile( foldersPage->devSysPath->text() + "\\Common7\\Packages\\Debugger\\autoexp.dat" );
+ usertype = new QFile( foldersPage->devSysPath->text() + "\\Common7\\Packages\\Debugger\\usertype.dat" );
+ break;
+ }
+
+ if ( autoexp ) {
+ QString autoExpContents;
+ if ( !autoexp->exists() ) {
+ autoexp->open( IO_WriteOnly );
+ } else {
+ // First try to open the file to search for existing installations
+ autoexp->open( IO_ReadOnly );
+ QByteArray bytes = autoexp->readAll();
+ autoExpContents = QString::fromLatin1(bytes.data(), bytes.size());
+ autoexp->close();
+ if ( autoExpContents.find( "; Trolltech Qt" ) == -1 )
+ autoexp->open(IO_WriteOnly | IO_Translate);
+ }
+ if( autoexp->isOpen() ) {
+ bool written = false;
+ QTextStream outstream( autoexp );
+ QStringList entries = QStringList::split("\r\n", autoExpContents, true);
+ for (QStringList::Iterator entry = entries.begin(); entry != entries.end(); ++entry) {
+ QString e(*entry);
+ outstream << e << endl;
+ if (!written && e.startsWith("[AutoExpand]")) {
+ outstream << endl;
+ outstream << "; Trolltech Qt" << endl;
+ outstream << "QString=<d->unicode,su> len=<d->len,u>" << endl;
+ outstream << "QCString =<shd->data, s>" << endl;
+ outstream << "QPoint =x=<xp> y=<yp>" << endl;
+ outstream << "QRect =x1=<x1> y1=<y1> x2=<x2> y2=<y2>" << endl;
+ outstream << "QSize =width=<wd> height=<ht>" << endl;
+ outstream << "QWMatrix =m11=<_m11> m12=<_m12> m21=<_m21> m22=<_m22> dx=<_dx> dy=<_dy>" << endl;
+ outstream << "QVariant =Type=<d->typ> value=<d->value>" << endl;
+ outstream << "QValueList<*> =Count=<sh->nodes>" << endl;
+ outstream << "QPtrList<*> =Count=<numNodes>" << endl;
+ outstream << "QGuardedPtr<*> =ptr=<priv->obj>" << endl;
+ outstream << "QEvent =type=<t>" << endl;
+ outstream << "QObject =class=<metaObj->classname,s> name=<objname,s>" << endl;
+ written = true;
+ }
+ }
+ autoexp->close();
+ }
+ delete autoexp;
+ }
+
+ if ( usertype ) {
+ if ( !usertype->exists() ) {
+ usertype->open( IO_WriteOnly | IO_Translate );
+ } else {
+ usertype->open( IO_ReadOnly );
+ QString existingUserType = usertype->readAll();
+ usertype->close();
+ if ( existingUserType.find( "Q_OBJECT" ) == -1 )
+ usertype->open(IO_WriteOnly | IO_Append | IO_Translate);
+ }
+ if ( usertype->isOpen() ) {
+ QTextStream outstream( usertype );
+ outstream << endl;
+ outstream << "Q_OBJECT" << endl;
+ outstream << "Q_PROPERTY" << endl;
+ outstream << "Q_ENUMS" << endl;
+ outstream << "Q_SETS" << endl;
+ outstream << "Q_CLASSINFO" << endl;
+ outstream << "emit" << endl;
+ outstream << "TRUE" << endl;
+ outstream << "FALSE" << endl;
+ outstream << "SIGNAL" << endl;
+ outstream << "SLOT" << endl;
+ outstream << "signals:" << endl;
+ outstream << "slots:" << endl;
+ usertype->close();
+ }
+ delete usertype;
+ }
+ }
+
+ if ( globalInformation.sysId() != GlobalInformation::MinGW )
+ installDir.remove( "Makefile.win32-g++" );
+ if (globalInformation.sysId() != GlobalInformation::MSVC)
+ installDir.remove( "qmsdev.dll" );
+ if (globalInformation.sysId() != GlobalInformation::MSVCNET)
+ installDir.remove( "QMsNetSetup.msi" );
+#endif
+
+ doStartMenuIntegration();
+}
+
+void SetupWizardImpl::doStartMenuIntegration()
+{
+#if defined(Q_OS_WIN32)
+ /*
+ ** Set up our icon folder and populate it with shortcuts.
+ ** Then move to the next page.
+ */
+ QString dirName, examplesName, tutorialsName;
+ bool common( foldersPage->folderGroups->currentItem() == 0 );
+ QString qtDir = QEnvironment::getEnv( "QTDIR" );
+
+ dirName = shell.createFolder( foldersPage->folderPath->text(), common );
+ shell.createShortcut( dirName, common, "Qt Designer", qtDir + "\\bin\\designer.exe", "GUI designer", "", qtDir );
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ shell.createShortcut( dirName, common, "Reconfigure Qt",
+ qtDir + "\\bin\\install.exe",
+ "Reconfigure the Qt library",
+ QString("-reconfig \"%1\"").arg(globalInformation.qtVersionStr()),
+ qtDir );
+#endif
+#if defined(QSA)
+ shell.createShortcut( dirName, common, "License agreement for Qt", "notepad.exe", "Review the license agreement",
+ "\"" + qtDir + "\\" LICENSE_DEST "\"" );
+ shell.createShortcut( dirName, common, "Readme for Qt", "notepad.exe", "Important information",
+ "\"" + qtDir + "\\README\"" );
+ shell.createShortcut( dirName, common, "License agreement for QSA", "notepad.exe", "Review the license agreement",
+ "\"" + optionsPageQsa->installPath->text() + "\\" LICENSE_DEST "\"" );
+ shell.createShortcut( dirName, common, "Readme for QSA", "notepad.exe", "Important information",
+ "\"" + optionsPageQsa->installPath->text() + "\\README\"" );
+#else
+ shell.createShortcut( dirName, common, "License agreement", "notepad.exe", "Review the license agreement", "\"" + qtDir + "\\" LICENSE_DEST "\"" );
+ shell.createShortcut( dirName, common, "Readme", "notepad.exe", "Important information", QString( "\"" ) + qtDir + "\\README\"" );
+#endif
+ shell.createShortcut( dirName, common, "Qt Assistant", qtDir + "\\bin\\assistant.exe", "Browse the On-line documentation", "", qtDir );
+ shell.createShortcut( dirName, common, "Qt Linguist", qtDir + "\\bin\\linguist.exe", "Qt translation utility", "", qtDir );
+ shell.createInternetShortcut( dirName, common, "Trolltech.com", "http://qtsoftware.com/" );
+#if defined(EVAL_CD)
+ shell.createInternetShortcut( dirName, common, "Register for Support", "http://qtsoftware.com/products/qt/evaluate.html" );
+#endif
+
+ if ( ( ( !globalInformation.reconfig() && optionsPage->skipBuild->isChecked() )
+ || ( globalInformation.reconfig() && !configPage->rebuildInstallation->isChecked() ) )
+ || qWinVersion() & WV_DOS_based ) {
+ QString description;
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ buildQtShortcutText = "Build Qt Examples and Tutorials";
+ description = "Build the Qt Examples and Tutorials";
+#else
+ buildQtShortcutText = "Build Qt " + globalInformation.qtVersionStr();
+ description = "Build the Qt library";
+#endif
+ shell.createShortcut( dirName, common,
+ buildQtShortcutText,
+ QEnvironment::getEnv( "QTDIR" ) + "\\build.bat",
+ description );
+ }
+
+#if defined(QSA)
+ QString qsaExamplesName;
+ if( qWinVersion() & WV_DOS_based ) {
+ shell.createShortcut( dirName, common,
+ "QSA Examples",
+ optionsPageQsa->installPath->text() + "\\examples" );
+ } else {
+ qsaExamplesName = shell.createFolder( foldersPage->folderPath->text() + "\\QSA Examples", common );
+ installIcons( qsaExamplesName, optionsPageQsa->installPath->text() + "\\examples", common );
+ }
+#endif
+ if( optionsPage->installTutorials->isChecked() ) {
+ if( qWinVersion() & WV_DOS_based ) {
+ shell.createShortcut( dirName, common,
+#if defined(QSA)
+ "Qt Tutorials",
+#else
+ "Tutorials",
+#endif
+ QEnvironment::getEnv( "QTDIR" ) + "\\tutorial" );
+ } else {
+#if defined(QSA)
+ tutorialsName = shell.createFolder( foldersPage->folderPath->text() + "\\Qt Tutorials", common );
+#else
+ tutorialsName = shell.createFolder( foldersPage->folderPath->text() + "\\Tutorials", common );
+#endif
+ installIcons( tutorialsName, QEnvironment::getEnv( "QTDIR" ) + "\\tutorial", common );
+ }
+ }
+ if( optionsPage->installExamples->isChecked() ) {
+ if( qWinVersion() & WV_DOS_based ) {
+ shell.createShortcut( dirName, common,
+#if defined(QSA)
+ "Qt Examples",
+#else
+ "Examples",
+#endif
+ QEnvironment::getEnv( "QTDIR" ) + "\\examples" );
+ } else {
+#if defined(QSA)
+ examplesName = shell.createFolder( foldersPage->folderPath->text() + "\\Qt Examples", common );
+#else
+ examplesName = shell.createFolder( foldersPage->folderPath->text() + "\\Examples", common );
+#endif
+ installIcons( examplesName, QEnvironment::getEnv( "QTDIR" ) + "\\examples", common );
+ }
+ }
+#endif
+#if defined(QSA)
+#endif
+ buildPage->compileProgress->setProgress( buildPage->compileProgress->totalSteps() );
+ setNextEnabled( buildPage, true );
+ logOutput( "The build was successful", true );
+}
+
+void SetupWizardImpl::makeDone()
+{
+ makeDone( !make.normalExit() || make.exitStatus() );
+}
+
+void SetupWizardImpl::makeDone( bool error )
+{
+ if( error ) {
+ if (!backButton()->isEnabled()) {
+ logOutput( "The build process failed!\n" );
+ emit wizardPageFailed( indexOf(currentPage()) );
+ QMessageBox::critical( this, "Error", "The build process failed!\nSee the log for details." );
+ buildPage->restartBuild->setText( "Restart compile" );
+ backButton()->setEnabled(true);
+ }
+ setAppropriate( progressPage, false );
+#if defined(QSA)
+ } else if ( make.workingDirectory() == QEnvironment::getEnv( "QTDIR" ) ) {
+ QStringList args;
+ args << globalInformation.text(GlobalInformation::MakeTool);
+ args << "sub-examples";
+
+ make.setWorkingDirectory( optionsPageQsa->installPath->text() );
+ make.setArguments( args );
+
+ if( !make.start() ) {
+ logOutput( "Could not start make process.\n"
+ "Make sure that your compiler tools are installed\n"
+ "and registered correctly in your PATH environment." );
+ emit wizardPageFailed( indexOf(currentPage()) );
+ backButton()->setEnabled( true );
+ }
+#endif
+ } else {
+ // We still have some more items to do in order to finish all the
+ // integration stuff.
+ if ( !globalInformation.reconfig() ) {
+ logOutput( "Doing the final integration steps..." );
+ assistantDone();
+ } else {
+ setNextEnabled( buildPage, true );
+ logOutput( "The build was successful", true );
+ }
+ buildPage->restartBuild->setText( "Success" );
+ buildPage->restartBuild->setEnabled( false );
+ }
+}
+
+void SetupWizardImpl::configDone()
+{
+ QStringList args;
+
+ if( globalInformation.reconfig() && !configPage->rebuildInstallation->isChecked() )
+ showPage( finishPage );
+
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ if( !configure.normalExit() || configure.exitStatus() ) {
+ logOutput( "The configure process failed.\n" );
+ emit wizardPageFailed( indexOf(currentPage()) );
+ buildPage->restartBuild->setText( "Restart configure" );
+ setAppropriate( progressPage, false );
+ backButton()->setEnabled(true);
+ } else
+#endif
+ {
+ args << globalInformation.text(GlobalInformation::MakeTool);
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ args << "sub-src";
+ args << "sub-plugins";
+ if ( optionsPage ) {
+ if ( optionsPage->installTools->isChecked() )
+ args << "sub-tools";
+ if ( optionsPage->installTutorials->isChecked() )
+ args << "sub-tutorial";
+ if ( optionsPage->installExamples->isChecked() )
+ args << "sub-examples";
+ if ( optionsPage->installExtensions->isChecked() )
+ args << "sub-extensions";
+ } else if (globalInformation.reconfig()) {
+ args << "sub-tools"; // We want to make sure it rebuilds uic etc
+ }
+#elif defined(Q_OS_WIN32)
+ if ( optionsPage ) {
+ if ( optionsPage->installTutorials->isChecked() )
+ args << "sub-tutorial";
+ if ( optionsPage->installExamples->isChecked() )
+ args << "sub-examples";
+#if !defined(NON_COMMERCIAL)
+ if ( optionsPage->installExtensions->isChecked() )
+ args << "sub-extensions";
+#endif
+ }
+ if ( args.count() == 1 ) {
+ make.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
+ makeDone( false );
+ return;
+ }
+#endif
+ if ( globalInformation.sysId() == GlobalInformation::MinGW ) {
+ args << "-fMakefile.win32-g++";
+ }
+
+ make.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
+ make.setArguments( args );
+
+ if( !make.start() ) {
+ logOutput( "Could not start make process.\n"
+ "Make sure that your compiler tools are installed\n"
+ "and registered correctly in your PATH environment." );
+ emit wizardPageFailed( indexOf(currentPage()) );
+ backButton()->setEnabled( true );
+ } else {
+ buildPage->restartBuild->setText( "Stop compilation" );
+ }
+ }
+}
+
+void SetupWizardImpl::restartBuild()
+{
+ if ( configure.isRunning() ||
+ (!configure.isRunning() && (!configure.normalExit() || configure.exitStatus())) ) {
+ if ( configure.isRunning() ) { // Stop configure
+ configure.kill();
+ buildPage->restartBuild->setText( "Restart configure" );
+ logOutput( "\n*** Configure stopped by user...\n" );
+ backButton()->setEnabled( true );
+ } else { // Restart configure
+ emit wizardPageShowed( indexOf(currentPage()) );
+ backButton()->setEnabled( false );
+ cleanDone();
+ buildPage->restartBuild->setText( "Stop configure" );
+ logOutput( "\n*** Configure restarted by user...\n" );
+ }
+ } else if ( make.isRunning() ||
+ (!make.isRunning() && (!make.normalExit() || make.exitStatus())) ) {
+ if ( make.isRunning() ) { // Stop compile
+ buildPage->restartBuild->setText( "Restart compile" );
+ logOutput( "\n*** Compilation stopped by user...\n" );
+ backButton()->setEnabled( true );
+ make.kill();
+ } else { // Restart compile
+ wizardPageShowed( indexOf(currentPage()) );
+ backButton()->setEnabled( false );
+ configDone();
+ buildPage->restartBuild->setText( "Stop compile" );
+ logOutput( "\n*** Compilation restarted by user...\n" );
+ }
+ }
+}
+
+void SetupWizardImpl::saveSettings()
+{
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ QApplication::setOverrideCursor( Qt::waitCursor );
+ saveSet( configPage->configList );
+ saveSet( configPage->advancedList );
+ QApplication::restoreOverrideCursor();
+#endif
+}
+
+void SetupWizardImpl::saveSet( QListView* list )
+{
+ QSettings settings;
+ settings.writeEntry( "/Trolltech/Qt/ResetDefaults", "FALSE" );
+
+ QListViewItemIterator it( list );
+ while ( it.current() ) {
+ QListViewItem *itm = it.current();
+ ++it;
+ if ( itm->rtti() != CheckListItem::RTTI )
+ continue;
+ CheckListItem *item = (CheckListItem*)itm;
+ if ( item->type() == QCheckListItem::RadioButton ) {
+ if ( item->isOn() ) {
+ QString folder;
+ QListViewItem *pItem = item;
+ while ( (pItem = pItem->parent() ) ) {
+ if ( folder.isEmpty() )
+ folder = pItem->text( 0 );
+ else
+ folder = pItem->text(0) + "/" + folder;
+ }
+
+ settings.writeEntry( "/Trolltech/Qt/" + folder, item->text() );
+ }
+ } else if ( item->type() == QCheckListItem::CheckBox ) {
+ QStringList lst;
+ QListViewItem *p = item->parent();
+ if ( p )
+ --it;
+ QString c = p->text( 0 );
+ while ( ( itm = it.current() ) &&
+ itm->rtti() == CheckListItem::RTTI &&
+ item->type() == CheckListItem::CheckBox ) {
+ item = (CheckListItem*)itm;
+ ++it;
+ if ( item->isOn() )
+ lst << item->text( 0 );
+ }
+ if ( lst.count() )
+ settings.writeEntry( "/Trolltech/Qt/" + p->text(0), lst, ',' );
+ else
+ settings.writeEntry( "/Trolltech/Qt/" + p->text(0), "Nothing selected" );
+ }
+ }
+}
+
+void SetupWizardImpl::showPage( QWidget* newPage )
+{
+ if ( currentPage() == configPage && newPage == progressPage && !verifyConfig() ) {
+ if (QMessageBox::warning( this, "Configuration with Warnings",
+ "One or more of the selected options could not be verified by the installer.\n"
+ "Do you want to continue?", "Yes", "No" ))
+ return;
+ }
+
+ QWizard::showPage( newPage );
+ setInstallStep( indexOf(newPage) + 1 );
+
+ if( newPage == licensePage ) {
+ showPageLicense();
+ } else if( newPage == licenseAgreementPage ) {
+ readLicenseAgreement();
+ } else if( newPage == licenseAgreementPageQsa ) {
+ readLicenseAgreement();
+ } else if( newPage == optionsPage ) {
+ showPageOptions();
+ } else if( newPage == foldersPage ) {
+ showPageFolders();
+ } else if( newPage == configPage ) {
+ showPageConfig();
+ } else if( newPage == progressPage ) {
+ showPageProgress();
+ } else if( newPage == buildPage ) {
+ showPageBuild();
+ } else if( newPage == finishPage ) {
+ showPageFinish();
+ }
+}
+
+void SetupWizardImpl::showPageLicense()
+{
+ licenseChanged();
+}
+
+void SetupWizardImpl::showPageOptions()
+{
+ static bool done = false;
+ if (done)
+ return;
+
+ done = true;
+
+ // First make sure that the current license information is saved
+ if( !globalInformation.reconfig() )
+ writeLicense( QDir::homeDirPath() + "/.qt-license" );
+
+ // ### unsupported
+ optionsPage->installDocs->hide();
+
+ bool enterprise = licenseInfo[ "PRODUCTS" ] == "qt-enterprise";
+ optionsPage->installExtensions->setChecked( enterprise );
+ optionsPage->installExtensions->setEnabled( enterprise );
+
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ optionsPage->installDocs->setEnabled( false );
+ optionsPage->skipBuild->setEnabled( false );
+ if ( globalInformation.sysId()==GlobalInformation::Borland ) {
+ optionsPage->sysMsvcNet->setEnabled( false );
+ optionsPage->sysMsvc->setEnabled( false );
+ optionsPage->sysBorland->setEnabled( true );
+ optionsPage->sysMinGW->setEnabled( false );
+ optionsPage->sysIntel->setEnabled( false );
+ optionsPage->sysOther->setEnabled( false );
+ } else {
+ optionsPage->sysMsvcNet->setEnabled( true );
+ optionsPage->sysMsvc->setEnabled( true );
+ optionsPage->sysBorland->setEnabled( false );
+ optionsPage->sysOther->setEnabled( false );
+ optionsPage->sysIntel->setEnabled( false );
+ optionsPage->sysMinGW->setEnabled( false );
+ }
+# if defined(Q_OS_WIN32)
+ optionsPage->installExamples->setEnabled( true );
+ optionsPage->installTutorials->setEnabled( true );
+ optionsPage->installTools->setEnabled( false );
+# if defined(NON_COMMERCIAL)
+ optionsPage->installExtensions->hide();
+# else
+ optionsPage->installExtensions->setChecked( true );
+ optionsPage->installExtensions->setEnabled( true );
+# endif
+# else
+ optionsPage->installExamples->setEnabled( false );
+ optionsPage->installTutorials->setEnabled( false );
+ optionsPage->installExtensions->setChecked( false );
+ optionsPage->installExtensions->setEnabled( false );
+# endif
+#else
+# if defined(Q_OS_WIN32)
+ // No need to offer the option of skipping the build on 9x, it's skipped anyway
+ if ( qWinVersion() & WV_DOS_based )
+ optionsPage->skipBuild->setEnabled( false );
+# endif
+#endif
+
+ // trigger environment test
+ clickedSystem(globalInformation.sysId());
+}
+
+void SetupWizardImpl::showPageFolders()
+{
+ QString ideName = globalInformation.text(GlobalInformation::IDE);
+ foldersPage->devSysLabel->setText( ideName + " path");
+ foldersPage->devSysLabel->setShown(!ideName.isEmpty());
+ foldersPage->devSysPath->setShown(!ideName.isEmpty());
+ foldersPage->devSysPathButton->setShown(!ideName.isEmpty());
+#if defined(Q_OS_WIN32)
+ if( globalInformation.sysId() == GlobalInformation::MSVC ) {
+ QString devPath = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\6.0\\Setup\\Microsoft Visual Studio", "ProductDir", QEnvironment::LocalMachine );
+ if ( devPath.isEmpty() ) {
+ // fallback for Windows 9x
+ QDir msdevDir( QEnvironment::getEnv("MSDEVDIR") );
+ msdevDir.cdUp();
+ msdevDir.cdUp();
+ devPath = QDir::toNativeSeparators( msdevDir.absPath() );
+ }
+ foldersPage->devSysPath->setText( devPath );
+ } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET ) {
+ QString devPath = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.1\\Setup\\VS", "ProductDir", QEnvironment::LocalMachine );
+ if ( !devPath.length() )
+ devPath = QEnvironment::getRegistryString( "Software\\Microsoft\\VisualStudio\\7.0\\Setup\\VS", "ProductDir", QEnvironment::LocalMachine );
+ foldersPage->devSysPath->setText( devPath );
+ }
+#endif
+}
+
+void SetupWizardImpl::showPageProgress()
+{
+ saveSettings();
+ int totalSize = 0;
+ QFileInfo fi;
+ totalRead = 0;
+ bool copySuccessful = true;
+
+ if( !filesCopied ) {
+ createDir( optionsPage->installPath->text() );
+ if (optionsPageQsa)
+ createDir( optionsPageQsa->installPath->text() );
+ progressPage->filesDisplay->append( "Installing files...\n" );
+
+ // install the right LICENSE file
+ QDir installDir( optionsPage->installPath->text() );
+ QFile licenseFile( installDir.filePath( LICENSE_DEST ) );
+ if ( licenseFile.open( IO_WriteOnly ) ) {
+ ResourceLoader *rcLoader;
+#if defined(EVAL) || defined(EDU)
+ rcLoader = new ResourceLoader( "LICENSE" );
+#elif defined(NON_COMMERCIAL)
+ if ( licenseAgreementPage->countryCombo->currentItem() == 0 )
+ rcLoader = new ResourceLoader( "LICENSE-US" );
+ else
+ rcLoader = new ResourceLoader( "LICENSE" );
+#else
+ if ( usLicense ) {
+ rcLoader = new ResourceLoader( "LICENSE-US" );
+ } else {
+ rcLoader = new ResourceLoader( "LICENSE" );
+ }
+#endif
+ if ( rcLoader->isValid() ) {
+ licenseFile.writeBlock( rcLoader->data() );
+ } else {
+ emit wizardPageFailed( indexOf(currentPage()) );
+ QMessageBox::critical( this, tr("Package corrupted"),
+ tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
+ }
+ delete rcLoader;
+ licenseFile.close();
+ } else {
+ // ### error handling -- we could not write the LICENSE file
+ }
+#if defined(QSA)
+ QDir installDirQsa( optionsPageQsa->installPath->text() );
+ QFile licenseFileQsa( installDirQsa.filePath( LICENSE_DEST ) );
+ if ( licenseFileQsa.open( IO_WriteOnly ) ) {
+ ResourceLoader *rcLoader;
+ rcLoader = new ResourceLoader( "LICENSE_QSA" );
+ if ( rcLoader->isValid() ) {
+ licenseFileQsa.writeBlock( rcLoader->data() );
+ } else {
+ emit wizardPageFailed( indexOf(currentPage()) );
+ QMessageBox::critical( this, tr("Package corrupted"),
+ tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
+ }
+ delete rcLoader;
+ licenseFileQsa.close();
+ } else {
+ // ### error handling -- we could not write the LICENSE file
+ }
+#endif
+
+ // Install the files -- use different fallbacks if one method failed.
+ QArchive ar;
+ QString licenseKey;
+#if !defined(EVAL_CD) && !defined(NON_COMMERCIAL)
+ licenseKey = licensePage->key->text();
+#endif
+ ar.setVerbosity( QArchive::Destination | QArchive::Verbose | QArchive::Progress );
+ connect( &ar, SIGNAL( operationFeedback( const QString& ) ), this, SLOT( archiveMsg( const QString& ) ) );
+ connect( &ar, SIGNAL( operationFeedback( int ) ), progressPage->operationProgress, SLOT( setProgress( int ) ) );
+ // First, try to find qt.arq as a binary resource to the file.
+ ResourceLoader rcLoader( "QT_ARQ", 500 );
+ if ( rcLoader.isValid() ) {
+ progressPage->operationProgress->setTotalSteps( rcLoader.data().count() );
+ QDataStream ds( rcLoader.data(), IO_ReadOnly );
+ ar.readArchive( &ds, optionsPage->installPath->text(), licenseKey );
+ } else {
+ // If the resource could not be loaded or is smaller than 500
+ // bytes, we have the dummy qt.arq: try to find and install
+ // from qt.arq in the current directory instead.
+ QString archiveName = "qt.arq";
+#if defined(Q_OS_MAC)
+ QString appDir = qApp->argv()[0];
+ int truncpos = appDir.findRev( "/Contents/MacOS/" );
+ if (truncpos != -1)
+ appDir.truncate( truncpos );
+ archiveName = appDir + "/Contents/Qt/qtmac.arq";
+#endif
+ fi.setFile( archiveName );
+ if( fi.exists() )
+ totalSize = fi.size();
+ progressPage->operationProgress->setTotalSteps( totalSize );
+
+ ar.setPath( archiveName );
+ if( ar.open( IO_ReadOnly ) ) {
+ ar.readArchive( optionsPage->installPath->text(), licenseKey );
+ } else {
+ // We were not able to find any qt.arq -- so assume we have
+ // the old fashioned zip archive and simply copy the files
+ // instead.
+ progressPage->operationProgress->setTotalSteps( FILESTOCOPY );
+ copySuccessful = copyFiles( QDir::currentDirPath(), optionsPage->installPath->text(), true );
+
+ /*These lines are only to be used when changing the filecount estimate
+ QString tmp( "%1" );
+ tmp = tmp.arg( totalFiles );
+ QMessageBox::information( this, tmp, tmp );
+ */
+ progressPage->operationProgress->setProgress( FILESTOCOPY );
+ }
+ }
+
+#if defined(QSA)
+ QArchive arQsa;
+ arQsa.setVerbosity( QArchive::Destination | QArchive::Verbose | QArchive::Progress );
+ connect( &arQsa, SIGNAL( operationFeedback( const QString& ) ), this, SLOT( archiveMsg( const QString& ) ) );
+ connect( &arQsa, SIGNAL( operationFeedback( int ) ), progressPage->operationProgress, SLOT( setProgress( int ) ) );
+ ResourceLoader rcLoaderQsa( "QSA_ARQ", 500 );
+ if ( rcLoaderQsa.isValid() ) {
+ progressPage->operationProgress->setTotalSteps( rcLoaderQsa.data().count() );
+ QDataStream ds( rcLoaderQsa.data(), IO_ReadOnly );
+ arQsa.readArchive( &ds, optionsPageQsa->installPath->text(), licenseKey );
+ } else {
+ // ### error handling
+ }
+#endif
+ filesCopied = copySuccessful;
+
+ timeCounter = 30;
+ if( copySuccessful ) {
+ QDir installDir( optionsPage->installPath->text() );
+#if defined(Q_OS_WIN32)
+ QDir windowsFolderDir( shell.windowsFolderName );
+# if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ {
+ // move $QTDIR/install.exe to $QTDIR/bin/install.exe
+ // This is done because install.exe is also used to reconfigure Qt
+ // (and this expects install.exe in bin). We can't move install.exe
+ // to bin in first place, since for the snapshots, we don't have
+ // the .arq archives.
+ QString inFile( installDir.filePath("install.exe") );
+ copyFile(inFile, installDir.filePath("bin/install.exe"));
+ QFile::remove(inFile);
+ }
+# endif
+ {
+ // move the uninstaller to the Windows directory
+ // This is necessary since the uninstaller deletes all files in
+ // the installation directory (and therefore can't delete
+ // itself).
+ QString inFile( installDir.filePath("bin/quninstall.exe") );
+ copyFile(inFile, windowsFolderDir.filePath("quninstall.exe"));
+ QFile::remove(inFile);
+ }
+#endif
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ QStringList::Iterator it;
+ QDir lib( optionsPage->installPath->text() );
+ lib.cd( "lib" );
+# if !defined(EVAL_CD)
+ // patch qt*.dll
+# if !defined(Q_OS_MAC)
+ QStringList qtDlls = lib.entryList( "qt*.dll" );
+# else
+ QStringList qtDlls = lib.entryList( "libqt-mt-eval.dylib" );
+# endif
+ if ( qtDlls.count() == 0 ) {
+ copySuccessful = false;
+ QMessageBox::critical( this,
+ tr( "Error patching Qt library" ),
+# if defined(EVAL)
+ tr( "Could not patch the Qt library with the evaluation\n"
+ "license information - no Qt DLL was found." )
+# elif defined(EDU)
+ tr( "Could not patch the Qt library with the educational\n"
+ "edition license information - no Qt DLL was found." )
+# else
+ tr( "Could not patch the Qt library the installation\n"
+ "path information - no Qt DLL was found." )
+# endif
+ );
+ }
+ for ( it=qtDlls.begin(); it!=qtDlls.end(); ++it ) {
+ //### add serial number etc. to log
+ logFiles( tr("Patching the Qt library %1.").arg(*it) );
+ int ret = trDoIt( lib.absFilePath(*it),
+# if defined(EVAL)
+ licensePage->evalName->text().latin1(),
+ licensePage->evalCompany->text().latin1(),
+ licensePage->serialNumber->text().latin1(),
+# elif defined(EDU)
+ "",
+ licensePage->university->text().latin1(),
+ licensePage->serialNumber->text().latin1(),
+# endif
+ installDir.absPath()
+ );
+ if ( ret != 0 ) {
+ copySuccessful = false;
+ QMessageBox::critical( this,
+ tr( "Error patching Qt library" ),
+# if defined(EVAL)
+ tr( "Could not patch the Qt library with the evaluation\n"
+ "license information. You will not be able to execute\n"
+ "any program linked against %1. Error %2" ).arg( *it ).arg(ret)
+# elif defined(EDU)
+ tr( "Could not patch the Qt library with the educational\n"
+ "edition license information. You will not be able to\n"
+ "execute any program linked against %1." ).arg( *it )
+# else
+ tr( "Could not patch the Qt library with the installation\n"
+ "path information. You will not be able to execute\n"
+ "some programs linked against %1." ).arg( *it )
+# endif
+ );
+ }
+ }
+# endif
+# if !defined(Q_OS_MAC)
+ // copy lib/*.dll bin/
+ QStringList dlls = lib.entryList( "*.dll" );
+ for ( it=dlls.begin(); it!=dlls.end(); ++it ) {
+ copyFile( lib.absFilePath(*it), QDir::cleanDirPath(lib.absFilePath("../bin/"+*it)) );
+ }
+ // delete the non-wanted database drivers
+ QDir plugins( optionsPage->installPath->text() );
+ plugins.cd( "plugins" );
+ plugins.cd( "sqldrivers" );
+ QDir bin( optionsPage->installPath->text() );
+ bin.cd( "bin" );
+#if defined(NON_COMMERCIAL)
+ if ( sqlitePluginInstall && !sqlitePluginInstall->isOn() ) {
+ plugins.remove( "qsqlite.dll" );
+ }
+#else
+ if ( mysqlPluginInstall && !mysqlPluginInstall->isOn() ) {
+ plugins.remove( "qsqlmysql.dll" );
+ bin.remove( "libmySQL.dll" );
+ }
+ if ( ociPluginInstall && !ociPluginInstall->isOn() ) {
+ plugins.remove( "qsqloci.dll" );
+ }
+ if ( odbcPluginInstall && !odbcPluginInstall->isOn() ) {
+ plugins.remove( "qsqlodbc.dll" );
+ }
+ if ( psqlPluginInstall && !psqlPluginInstall->isOn() ) {
+ plugins.remove( "qsqlpsql.dll" );
+ bin.remove( "libpq.dll" );
+ }
+ if ( tdsPluginInstall && !tdsPluginInstall->isOn() ) {
+ plugins.remove( "qsqltds.dll" );
+ }
+ if ( db2PluginInstall && !db2PluginInstall->isOn() ) {
+ plugins.remove( "qsqldb2.dll" );
+ }
+#endif
+ // patch the .qmake.cache with the correct paths
+ QFile cacheFile( installDir.filePath(".qmake.cache") );
+ if ( cacheFile.open( IO_ReadOnly | IO_Translate ) ) {
+ QTextStream tsIn( &cacheFile );
+ QString cache = tsIn.read();
+ cacheFile.close();
+ if ( cacheFile.open( IO_WriteOnly | IO_Translate ) ) {
+ QTextStream tsOut( &cacheFile );
+ if ( globalInformation.sysId() == GlobalInformation::Borland )
+ tsOut << cache.replace( "C:/QtEvaluation/qtborland", installDir.absPath() );
+ else
+ tsOut << cache.replace( "C:/QtEvaluation/qtmsvc", installDir.absPath() );
+ cacheFile.close();
+ }
+ }
+# endif
+#endif
+ logFiles( tr("All files have been installed.\n"
+ "This log has been saved to the installation directory.\n"
+ "The build will start automatically in 30 seconds."), true );
+ } else {
+ logFiles( tr("One or more errors occurred during file installation.\n"
+ "Please review the log and try to amend the situation.\n"), true );
+ }
+ }
+ if ( copySuccessful ) {
+#if defined(Q_OS_WIN32)
+ /*
+ ** Then record the installation in the registry, and set up the uninstallation
+ */
+ QStringList uninstaller;
+ uninstaller << ( QString("\"") + shell.windowsFolderName + "\\quninstall.exe" + QString("\"") );
+ uninstaller << optionsPage->installPath->text();
+
+ if( foldersPage->folderGroups->currentItem() == 0 )
+ uninstaller << ( QString("\"") + shell.commonProgramsFolderName + QString("\\") + foldersPage->folderPath->text() + QString("\"") );
+ else
+ uninstaller << ( QString("\"") + shell.localProgramsFolderName + QString("\\") + foldersPage->folderPath->text() + QString("\"") );
+
+ uninstaller << ( QString("\"") + globalInformation.qtVersionStr() + QString("\"") );
+
+ QEnvironment::recordUninstall( QString( "Qt " ) + globalInformation.qtVersionStr(), uninstaller.join( " " ) );
+#endif
+ autoContTimer.start( 1000 );
+ }
+ else
+ emit wizardPageFailed( indexOf(currentPage()) );
+ setNextEnabled( progressPage, copySuccessful );
+}
+
+void SetupWizardImpl::showPageFinish()
+{
+ autoContTimer.stop();
+ nextButton()->setText( "Next >" );
+ QString finishMsg;
+ if ( ( ( !globalInformation.reconfig() && !optionsPage->skipBuild->isChecked() )
+ || ( globalInformation.reconfig() && configPage->rebuildInstallation->isChecked() ) )
+#if defined(Q_OS_WIN32)
+ && qWinVersion() & WV_NT_based ) {
+#else
+ ) {
+#endif
+ if( globalInformation.reconfig() ) {
+ finishMsg = "Qt has been reconfigured and rebuilt, and is ready for use.";
+ } else {
+#if defined(Q_OS_MAC)
+ finishMsg = QString( "Qt has been installed to " ) + optionsPage->installPath->text() +
+ " and is ready to use.\n\nPlease try out the developer tools in the bin folder and example "
+ "programs in the examples folder.\n\nFor further information please consult the "
+ "README.txt file included in the installation folder.";
+#else
+ finishMsg = QString( "Qt has been installed to %1 and is ready to use.\n"
+ "You might have to logoff and logon for changes to the environment to have an effect.").
+ arg(optionsPage->installPath->text());
+# if defined(QSA)
+ finishMsg = QString( "\nQSA has been installed to " ) + optionsPageQsa->installPath->text() + " and is ready to use.";
+# endif
+#endif
+ }
+ } else {
+ if( globalInformation.reconfig() ) {
+ finishMsg = "The new configuration has been written.\nThe library needs to be rebuilt to activate the ";
+ finishMsg += "new configuration.";
+#if defined(Q_OS_WIN32)
+ finishMsg += "To rebuild it, use the \"Build Qt ";
+ finishMsg += globalInformation.qtVersionStr();
+ finishMsg += "\" icon in the Qt program group in the start menu.";
+#endif
+ } else {
+ finishMsg = QString( "The Qt files have been installed to " ) + optionsPage->installPath->text() + " and is ready to be compiled.\n";
+#if defined(Q_OS_WIN32)
+ if( persistentEnv && qWinVersion() & WV_DOS_based ) {
+ finishMsg += "The environment variables needed to use Qt have been recorded into your AUTOEXEC.BAT file.\n";
+ finishMsg += "Please review this file, and take action as appropriate depending on your operating system to get them into the persistent environment. (Windows Me users, run MsConfig)\n\n";
+ }
+# if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ finishMsg += QString( "To build the examples and tutorials, use the "
+ "\"Build the Qt Examples and Tutorials\""
+ " icon which has been installed into your Start-Menu." );
+# else
+ finishMsg += QString( "To build Qt, use the "
+ "\"Build Qt " ) + globalInformation.qtVersionStr() + "\""
+ " icon which has been installed into your Start-Menu.";
+# endif
+#endif
+ }
+ }
+#if defined(EVAL_CD)
+ finishMsg += "\n\n"
+ "The Trolltech technical support service is available to "
+ "Qt Professional and Enterprise Edition licensees. As an "
+ "evaluation user, you can register for 30 days of evaluation "
+ "support at\n"
+ "http://qtsoftware.com/products/qt/evaluate.html";
+#endif
+ finishPage->finishText->setText( finishMsg );
+}
+
+void SetupWizardImpl::licenseChanged()
+{
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ int ret = trCheckIt(
+# if defined(EVAL)
+ licensePage->evalName->text().latin1(),
+ licensePage->evalCompany->text().latin1(),
+ licensePage->serialNumber->text().latin1()
+# elif defined(EDU)
+ "",
+ licensePage->university->text().latin1(),
+ licensePage->serialNumber->text().latin1()
+# else
+ "",
+ "",
+ ""
+# endif
+ );
+
+ if ( ret == 0 )
+ setNextEnabled( licensePage, true );
+ else
+ setNextEnabled( licensePage, false );
+ return;
+#else
+ QDate date;
+ uint features;
+ uint testFeature;
+ QString platformString;
+ QString licenseKey = licensePage->key->text().stripWhiteSpace();
+ if ( licenseKey.length() != 14 ) {
+ goto rejectLicense;
+ }
+ features = featuresForKey( licenseKey.upper() );
+ date = decodedExpiryDate( licenseKey.mid(9) );
+ if ( !date.isValid() ) {
+ goto rejectLicense;
+ }
+# if defined(Q_OS_MAC)
+ testFeature = Feature_Mac;
+ platformString = "Mac OS X";
+# elif defined(Q_OS_WIN32)
+ testFeature = Feature_Windows;
+ platformString = "Windows";
+# else
+ testFeature = Feature_Unix;
+ platformString = "UNIX";
+# ifdef Q_CC_GNU
+# warning "What about Qtopia Core?"
+# endif
+# endif
+ if ( !(features&testFeature) && currentPage() == licensePage ) {
+ if ( features & (Feature_Unix|Feature_Windows|Feature_Mac|Feature_Embedded) ) {
+ int ret = QMessageBox::information( this,
+ tr("No %1 license").arg(platformString),
+ tr("You are not licensed for the %1 platform.\n"
+ "Please contact sales@trolltech.com to upgrade\n"
+ "your license to include the Windows platform.").arg(platformString),
+ tr("Try again"),
+ tr("Abort installation")
+ );
+ if ( ret == 1 ) {
+ QApplication::exit();
+ } else {
+ licensePage->key->setText( "" );
+ }
+ }
+ goto rejectLicense;
+ }
+ if ( date < QDate::currentDate() && currentPage() == licensePage ) {
+ static bool alreadyShown = false;
+ if ( !alreadyShown ) {
+ QMessageBox::warning( this,
+ tr("Support and upgrade period has expired"),
+ tr("Your support and upgrade period has expired.\n"
+ "\n"
+ "You may continue to use your last licensed release\n"
+ "of Qt under the terms of your existing license\n"
+ "agreement. But you are not entitled to technical\n"
+ "support, nor are you entitled to use any more recent\n"
+ "Qt releases.\n"
+ "\n"
+ "Please contact sales@trolltech.com to renew your\n"
+ "support and upgrades for this license.")
+ );
+ alreadyShown = true;
+ }
+ }
+ if ( features & Feature_US )
+ usLicense = true;
+ else
+ usLicense = false;
+
+ licensePage->expiryDate->setText( date.toString( Qt::ISODate ) );
+ if( features & Feature_Enterprise ) {
+ licensePage->productsString->setCurrentItem( 1 );
+ emit editionString( "Enterprise Edition" );
+ } else {
+ licensePage->productsString->setCurrentItem( 0 );
+ emit editionString( "Professional Edition" );
+ }
+ setNextEnabled( licensePage, true );
+ return;
+
+rejectLicense:
+ licensePage->expiryDate->setText( "" );
+# if defined(Q_OS_WIN32)
+ //TODO: Is this a bug? It bus errors on MACX, ask rms.
+ // it should work -- if it doesn't this seems to be a bug in the MACX code,
+ // I guess (rms)
+ licensePage->productsString->setCurrentItem( -1 );
+# endif
+ emit editionString( "" );
+ setNextEnabled( licensePage, false );
+ return;
+#endif
+}
+
+void SetupWizardImpl::logFiles( const QString& entry, bool close )
+{
+ if( !fileLog.isOpen() ) {
+ fileLog.setName( optionsPage->installPath->text() + QDir::separator() + "install.log" );
+ if( !fileLog.open( IO_WriteOnly | IO_Translate ) )
+ return;
+ }
+
+#if 1
+ progressPage->filesDisplay->append(entry);
+#else
+ progressPage->filesDisplay->setText( "Installing files...\n" + entry + "\n" );
+#endif
+
+ static QTextStream outstream;
+ outstream.setDevice( &fileLog );
+ outstream << ( entry + "\n" );
+
+ if( close )
+ fileLog.close();
+}
+
+void SetupWizardImpl::logOutput( const QString& entry, bool close )
+{
+ if( !outputLog.isOpen() ) {
+ QDir installDir;
+ if ( optionsPage )
+ installDir.setPath( optionsPage->installPath->text() );
+ else
+ installDir.setPath( QEnvironment::getEnv( "QTDIR" ) );
+ outputLog.setName( installDir.filePath("build.log") );
+ if( !outputLog.open( IO_WriteOnly | IO_Translate ) )
+ return;
+ }
+
+ buildPage->outputDisplay->append(entry);
+
+ static QTextStream outstream;
+ outstream.setDevice( &outputLog );
+ outstream << ( entry + "\n" );
+
+ if( close )
+ outputLog.close();
+}
+
+void SetupWizardImpl::archiveMsg( const QString& msg )
+{
+ if( msg.right( 7 ) == ".cpp..." || msg.right( 5 ) == ".c..." || msg.right( 7 ) == ".pro..." || msg.right( 6 ) == ".ui..." )
+ filesToCompile++;
+ qApp->processEvents();
+ if ( msg.startsWith("Expanding") )
+ // only show the "Expanding" entries to avoid flickering
+ logFiles( msg );
+}
+
+#ifdef Q_WS_WIN
+static HANDLE createFile( const QString &entryName, DWORD attr1, DWORD attr2 )
+{
+ QT_WA({
+ return ::CreateFileW( entryName.ucs2(), attr1, attr2, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
+ }, {
+ return ::CreateFileA( entryName.local8Bit(), attr1, attr2, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
+ })
+}
+#endif
+
+bool SetupWizardImpl::copyFiles( const QString& sourcePath, const QString& destPath, bool topLevel )
+{
+ QDir dir( sourcePath );
+ const QFileInfoList* list = dir.entryInfoList();
+ QFileInfoListIterator it( *list );
+ QFileInfo* fi;
+ bool doCopy;
+
+ while( ( fi = it.current() ) ) {
+ if( fi->fileName()[ 0 ] != '.' ) {
+ QString entryName = sourcePath + QDir::separator() + fi->fileName();
+ QString targetName = destPath + QDir::separator() + fi->fileName();
+ doCopy = true;
+ if( fi->isDir() ) {
+ if( !dir.exists( targetName ) )
+ createDir( targetName );
+ if( topLevel ) {
+ if ( fi->fileName() == "doc" )
+ doCopy = optionsPage->installDocs->isChecked();
+ else if ( fi->fileName() == "tools" )
+ doCopy = optionsPage->installTools->isChecked();
+ else if ( fi->fileName() == "tutorial" )
+ doCopy = optionsPage->installTutorials->isChecked();
+ else if ( fi->fileName() == "examples" )
+ doCopy = optionsPage->installExamples->isChecked();
+ }
+ if( doCopy )
+ if( !copyFiles( entryName, targetName, false ) )
+ return false;
+ } else {
+ if( qApp && isShown() ) {
+ qApp->processEvents();
+ progressPage->operationProgress->setProgress( totalFiles );
+ logFiles( targetName );
+ } else {
+ return false;
+ }
+ if( entryName.right( 4 ) == ".cpp" ||
+ entryName.right( 2 ) == ".c" ||
+ entryName.right( 4 ) == ".pro" ||
+ entryName.right( 3 ) == ".ui" )
+ filesToCompile++;
+ bool res = true;
+ if ( !QFile::exists( targetName ) )
+ res = copyFile( entryName, targetName );
+#if defined(Q_OS_WIN32)
+ if ( res ) {
+ totalFiles++;
+ HANDLE inFile, outFile;
+ if( inFile = createFile( entryName, GENERIC_READ, FILE_SHARE_READ ) ){
+ if( outFile = createFile( targetName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE ) ){
+ FILETIME createTime, accessTime, writeTime;
+ ::GetFileTime( inFile, &createTime, &accessTime, &writeTime );
+ ::SetFileTime( outFile, &createTime, &accessTime, &writeTime );
+ ::CloseHandle( outFile );
+ }
+ ::CloseHandle( inFile );
+ }
+ } else {
+ QString error = QEnvironment::getLastError();
+ logFiles( QString( " ERROR: " ) + error + "\n" );
+ if( QMessageBox::warning( this, "File copy error", entryName + ": " + error, "Continue", "Cancel", QString(), 0 ) )
+ return false;
+ }
+#elif defined( Q_OS_UNIX )
+ // ### TODO: keep file date the same, handle errors
+#endif
+ }
+ }
+ ++it;
+ }
+ return true;
+}
+
+void SetupWizardImpl::setInstallStep( int step )
+{
+ QString captionTxt;
+#if defined(QSA)
+ captionTxt = tr("QSA Evaluation Version Installation Wizard");
+#elif defined(EVAL)
+ captionTxt = tr("Qt Evaluation Version Installation Wizard");
+#elif defined(EDU)
+ captionTxt = tr("Qt Educational Edition Installation Wizard");
+#elif defined(NON_COMMERCIAL)
+ captionTxt = tr("Qt Non-Commercial Edition Installation Wizard");
+#else
+ if( globalInformation.reconfig() )
+ captionTxt = tr("Qt Configuration Wizard");
+ else
+ captionTxt = tr("Qt Installation Wizard");
+#endif
+ setCaption( tr("%1 - Step %2 of %3").arg( captionTxt ).arg( step ).arg( pageCount() ) );
+ emit wizardPageShowed( step-1 );
+}
+
+void SetupWizardImpl::timerFired()
+{
+ QString tmp( "Next %1 >" );
+
+ timeCounter--;
+
+ if( timeCounter )
+ nextButton()->setText( tmp.arg( timeCounter ) );
+ else {
+ next();
+ autoContTimer.stop();
+ }
+}
+
+void SetupWizardImpl::readLicense( QString filePath)
+{
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ QFile licenseFile( filePath );
+
+ if( licenseFile.open( IO_ReadOnly ) ) {
+ QString buffer;
+
+ while( licenseFile.readLine( buffer, 1024 ) != -1 ) {
+ if( buffer[ 0 ] != '#' ) {
+ QStringList components = QStringList::split( '=', buffer );
+ QStringList::Iterator it = components.begin();
+ QString keyString = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() ).upper();
+ QString value = (*it++).stripWhiteSpace().replace( QRegExp( QString( "\"" ) ), QString() );
+
+ licenseInfo[ keyString ] = value;
+ }
+ }
+ licenseFile.close();
+
+ if ( licensePage ) {
+ licensePage->customerID->setText( licenseInfo[ "CUSTOMERID" ] );
+ licensePage->licenseID->setText( licenseInfo[ "LICENSEID" ] );
+ licensePage->licenseeName->setText( licenseInfo[ "LICENSEE" ] );
+ if( licenseInfo[ "PRODUCTS" ] == "qt-enterprise" ) {
+ licensePage->productsString->setCurrentItem( 1 );
+ emit editionString( "Enterprise Edition" );
+ } else {
+ licensePage->productsString->setCurrentItem( 0 );
+ emit editionString( "Professional Edition" );
+ }
+ licensePage->expiryDate->setText( licenseInfo[ "EXPIRYDATE" ] );
+ licensePage->key->setText( licenseInfo[ "LICENSEKEY" ] );
+ }
+ }
+#endif
+}
+
+void SetupWizardImpl::writeLicense( QString filePath )
+{
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ QFile licenseFile( filePath );
+
+ if( licenseFile.open( IO_WriteOnly | IO_Translate ) ) {
+ QTextStream licStream( &licenseFile );
+
+ licenseInfo[ "CUSTOMERID" ] = licensePage->customerID->text();
+ licenseInfo[ "LICENSEID" ] = licensePage->licenseID->text();
+ licenseInfo[ "LICENSEE" ] = licensePage->licenseeName->text();
+ if( licensePage->productsString->currentItem() == 0 ) {
+ licenseInfo[ "PRODUCTS" ] = "qt-professional";
+ emit editionString( "Professional Edition" );
+ } else {
+ licenseInfo[ "PRODUCTS" ] = "qt-enterprise";
+ emit editionString( "Enterprise Edition" );
+ }
+
+ licenseInfo[ "EXPIRYDATE" ] = licensePage->expiryDate->text();
+ licenseInfo[ "LICENSEKEY" ] = licensePage->key->text();
+
+ licStream << "# Toolkit license file" << endl;
+ licStream << "CustomerID=\"" << licenseInfo[ "CUSTOMERID" ].latin1() << "\"" << endl;
+ licStream << "LicenseID=\"" << licenseInfo[ "LICENSEID" ].latin1() << "\"" << endl;
+ licStream << "Licensee=\"" << licenseInfo[ "LICENSEE" ].latin1() << "\"" << endl;
+ licStream << "Products=\"" << licenseInfo[ "PRODUCTS" ].latin1() << "\"" << endl;
+ licStream << "ExpiryDate=" << licenseInfo[ "EXPIRYDATE" ].latin1() << endl;
+ licStream << "LicenseKey=" << licenseInfo[ "LICENSEKEY" ].latin1() << endl;
+
+ licenseFile.close();
+ }
+#endif
+}
+
+void SetupWizardImpl::clickedLicenseFile()
+{
+ QString licensePath = QFileDialog::getOpenFileName( optionsPage->installPath->text(), QString(), this, NULL, "Browse for license file" );
+
+ if( !licensePath.isEmpty() )
+ readLicense( licensePath );
+
+}
+
+void SetupWizardImpl::readLicenseAgreement()
+{
+ // Intropage
+ ResourceLoader *rcLoader;
+#if defined(QSA)
+ LicenseAgreementPageImpl *lap;
+ if ( currentPage() == licenseAgreementPageQsa ) {
+ lap = licenseAgreementPageQsa;
+ rcLoader = new ResourceLoader( "LICENSE_QSA" );
+ } else {
+ lap = licenseAgreementPage;
+ rcLoader = new ResourceLoader( "LICENSE" );
+ }
+#elif defined(EVAL) || defined(EDU)
+ LicenseAgreementPageImpl *lap = licenseAgreementPage;
+ rcLoader = new ResourceLoader( "LICENSE" );
+#elif defined(NON_COMMERCIAL)
+ LicenseAgreementPageImpl *lap = licenseAgreementPage;
+ if ( lap->countryCombo->currentItem() == 0 )
+ rcLoader = new ResourceLoader( "LICENSE-US" );
+ else
+ rcLoader = new ResourceLoader( "LICENSE" );
+#else
+ LicenseAgreementPageImpl *lap = licenseAgreementPage;
+ if ( usLicense ) {
+ rcLoader = new ResourceLoader( "LICENSE-US" );
+ } else {
+ rcLoader = new ResourceLoader( "LICENSE" );
+ }
+#endif
+ if ( rcLoader->isValid() ) {
+ lap->introText->setText( rcLoader->data() );
+ lap->acceptLicense->setEnabled( true );
+ } else {
+ emit wizardPageFailed( indexOf(currentPage()) );
+ QMessageBox::critical( this, tr("Package corrupted"),
+ tr("Could not find the LICENSE file in the package.\nThe package might be corrupted.") );
+ lap->acceptLicense->setEnabled( false );
+ }
+ delete rcLoader;
+}
+
+void SetupWizardImpl::accept()
+{
+#if defined(Q_OS_WIN32)
+ if ( finishPage->showReadmeCheck->isChecked() ) {
+ QProcess proc( QString("notepad.exe") );
+#if defined(QSA)
+ QString qsaDir = optionsPageQsa->installPath->text();
+ proc.addArgument( qsaDir + "\\README" );
+#else
+ QString qtDir = QEnvironment::getEnv( "QTDIR" );
+ proc.addArgument( qtDir + "\\README" );
+#endif
+ proc.start();
+ }
+#endif
+ QDialog::accept();
+}
diff --git a/util/install/win/setupwizardimpl.h b/util/install/win/setupwizardimpl.h
new file mode 100644
index 0000000000..1c86f74f38
--- /dev/null
+++ b/util/install/win/setupwizardimpl.h
@@ -0,0 +1,276 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef SETUPWIZARDIMPL_H
+#define SETUPWIZARDIMPL_H
+
+#include "pages/pages.h"
+#include "shell.h"
+
+#include <qprocess.h>
+#include <qtimer.h>
+#include <qmap.h>
+#include <qptrdict.h>
+#include <qwizard.h>
+#include <qlistview.h>
+
+class QCheckListItem;
+class QListView;
+
+class CheckListItem : public QCheckListItem
+{
+public:
+ CheckListItem(QListView *listview, const QString &text, Type = RadioButtonController);
+ CheckListItem(QCheckListItem *parent, const QString &text, Type = RadioButtonController);
+
+ void setHelpText(const QString &help, QTextView *display);
+ void setWarningText(const QString &warning, CheckListItem *conflict = 0);
+ void addRequiredFiles(const QString &file);
+ void setRequiredFileLocation(const QString &location);
+
+ void setOpen(bool on);
+ void setOn(bool on);
+ void setCritical(bool on);
+
+ int rtti() const;
+ static int RTTI;
+
+ void displayHelp();
+ bool verify() const;
+
+ void paintCell( QPainter *, const QColorGroup & cg, int column, int width, int alignment );
+
+protected:
+ bool testAndWarn();
+ void activate();
+
+private:
+ QString help_text;
+ QString warning_text;
+ QTextView *help_display;
+ QStringList required_files;
+ QString file_location;
+ CheckListItem *conflict_with;
+ bool critical;
+};
+
+class SetupWizardImpl : public QWizard
+{
+ Q_OBJECT
+public:
+ SetupWizardImpl( QWidget* parent = 0, const char* name = NULL, bool modal = false, WindowFlags f = 0 );
+
+ void showPage( QWidget* );
+ void stopProcesses();
+
+ void optionClicked( CheckListItem * );
+
+signals:
+ void wizardPages( const QPtrList<Page>& );
+ void wizardPageShowed( int );
+ void wizardPageFailed( int );
+ void editionString( const QString& );
+
+private:
+ int totalFiles;
+ QProcess configure;
+ QProcess make;
+ QProcess cleaner;
+#if defined(QSA)
+ QProcess assistant;
+#endif
+
+ QString programsFolder;
+ QString devSysFolder;
+ QString tmpPath;
+
+ WinShell shell;
+
+ void saveSettings();
+ void saveSet( QListView* list );
+
+protected slots:
+ void accept(); // reimplemented from QDialog
+
+private slots:
+ void clickedSystem( int );
+ void sysOtherComboChanged( int );
+ void clickedFolderPath();
+ void clickedDevSysPath();
+ void clickedLicenseFile();
+ void cleanDone();
+ void configDone();
+ void makeDone();
+ void assistantDone();
+ void restartBuild();
+ void readConfigureOutput();
+ void readConfigureError();
+ void readCleanerOutput();
+ void readCleanerError();
+ void readMakeOutput();
+ void readMakeError();
+ void readAssistantOutput();
+ void readAssistantError();
+ void timerFired();
+ void configPageChanged();
+ void archiveMsg(const QString &);
+ void licenseChanged();
+ bool verifyConfig();
+
+private:
+ void showPageLicense();
+ void showPageOptions();
+ void showPageFolders();
+ void showPageConfig();
+ void showPageProgress();
+ void showPageBuild();
+ void showPageFinish();
+
+ void initPages();
+ void initConnections();
+
+ void fixEnvironment(const QString &var, const QString &file = QString());
+ void prepareEnvironment();
+
+ void makeDone( bool error );
+
+ void setStaticEnabled( bool se );
+ void setJpegDirect( bool jd );
+ void readLicenseAgreement();
+
+ bool copyFiles( const QString& sourcePath, const QString& destPath, bool topLevel );
+ int totalRead;
+
+ QString buildQtShortcutText;
+ bool fixedPath;
+ bool filesCopied;
+ bool persistentEnv;
+ int filesToCompile;
+ int filesCompiled;
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ bool usLicense;
+#endif
+
+ QString currentOLine;
+ QString currentELine;
+
+ void updateDisplay(const QString &input, QString &output);
+#if defined(Q_OS_WIN32)
+ void installIcons( const QString& iconFolder, const QString& dirName, bool common );
+#endif
+ void doIDEIntegration();
+ void doStartMenuIntegration();
+ void logFiles( const QString& entry, bool close = false );
+ void logOutput( const QString& entry, bool close = false );
+
+ void setInstallStep( int step );
+ void readLicense( QString filePath );
+ void writeLicense( QString filePath );
+
+ QFile fileLog;
+ QFile outputLog;
+ QMap<QString,QString> licenseInfo;
+ QTimer autoContTimer;
+ int timeCounter;
+ QStringList allModules;
+
+ CheckListItem *accOn, *accOff;
+ CheckListItem *bigCodecsOn, *bigCodecsOff;
+ CheckListItem *tabletOn, *tabletOff;
+ CheckListItem *advancedSTL, *advancedExceptions, *advancedRTTI;
+
+ CheckListItem /* *mngPresent, */ *mngDirect, *mngPlugin, *mngOff;
+ CheckListItem /* *jpegPresent, */ *jpegDirect, *jpegPlugin, *jpegOff;
+ CheckListItem /* *pngPresent, */ *pngDirect, *pngPlugin, *pngOff;
+ CheckListItem *gifDirect, *gifOff;
+
+ CheckListItem *sgiDirect, *sgiPlugin, *sgiOff;
+ CheckListItem *cdeDirect, *cdePlugin, *cdeOff;
+ CheckListItem *motifplusDirect, *motifplusPlugin, *motifplusOff;
+ CheckListItem *platinumDirect, *platinumPlugin, *platinumOff;
+ CheckListItem *motifDirect, *motifPlugin, *motifOff;
+ CheckListItem *xpDirect, *xpPlugin, *xpOff;
+
+ CheckListItem *mysqlDirect, *mysqlPlugin, *mysqlOff;
+ CheckListItem *ociDirect, *ociPlugin, *ociOff;
+ CheckListItem *odbcDirect, *odbcPlugin, *odbcOff;
+ CheckListItem *psqlDirect, *psqlPlugin, *psqlOff;
+ CheckListItem *tdsDirect, *tdsPlugin, *tdsOff;
+ CheckListItem *db2Direct, *db2Plugin, *db2Off;
+ CheckListItem *sqliteDirect, *sqlitePlugin, *sqliteOff;
+ CheckListItem *ibaseDirect, *ibasePlugin, *ibaseOff;
+
+ CheckListItem *zlibDirect, *zlibSystem, *zlibOff;
+
+ CheckListItem *dspOff, *dspOn;
+ CheckListItem *vcprojOff, *vcprojOn;
+
+ CheckListItem *staticItem;
+
+#if defined(EVAL) || defined(EDU)
+ CheckListItem *mysqlPluginInstall;
+ CheckListItem *ociPluginInstall;
+ CheckListItem *odbcPluginInstall;
+ CheckListItem *psqlPluginInstall;
+ CheckListItem *tdsPluginInstall;
+ CheckListItem *db2PluginInstall;
+ CheckListItem *sqlitePluginInstall;
+ CheckListItem *ibasePluginInstall;
+#elif defined(NON_COMMERCIAL)
+ CheckListItem *sqlitePluginInstall;
+#endif
+
+ // wizard pages
+ LicenseAgreementPageImpl *licenseAgreementPage;
+ LicenseAgreementPageImpl *licenseAgreementPageQsa;
+ LicensePageImpl *licensePage;
+ OptionsPageImpl *optionsPage;
+ OptionsPageImpl *optionsPageQsa;
+ FoldersPageImpl *foldersPage;
+ ConfigPageImpl *configPage;
+ ProgressPageImpl *progressPage;
+ BuildPageImpl *buildPage;
+ FinishPageImpl *finishPage;
+#if defined(Q_OS_WIN32)
+ WinIntroPageImpl *winIntroPage;
+#endif
+};
+
+#endif
diff --git a/util/install/win/setupwizardimpl_config.cpp b/util/install/win/setupwizardimpl_config.cpp
new file mode 100644
index 0000000000..a5959fb23a
--- /dev/null
+++ b/util/install/win/setupwizardimpl_config.cpp
@@ -0,0 +1,1564 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "setupwizardimpl.h"
+#include "environment.h"
+#include <qfiledialog.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qprogressbar.h>
+#include <qtextview.h>
+#include <qmultilineedit.h>
+#include <qbuttongroup.h>
+#include <qsettings.h>
+#include <qlistview.h>
+#include <qlistbox.h>
+#include <qapplication.h>
+#include <qcheckbox.h>
+#include <qtextstream.h>
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qtabwidget.h>
+#include <qarchive.h>
+#include <qvalidator.h>
+#include <qdatetime.h>
+#include <qpainter.h>
+
+bool findFile(const QString &);
+
+CheckListItem::CheckListItem(QListView *listview, const QString &text, Type type)
+: QCheckListItem(listview, text, type), help_display(0), conflict_with(0), critical(false)
+{
+ if (type == RadioButtonController || type == CheckBoxController)
+ setOpen(true);
+}
+
+CheckListItem::CheckListItem(QCheckListItem *parent, const QString &text, Type type)
+: QCheckListItem(parent, text, type), help_display(0), conflict_with(0), critical(false)
+{
+ if (type == RadioButtonController || type == CheckBoxController)
+ setOpen(true);
+}
+
+int CheckListItem::RTTI = 666;
+
+int CheckListItem::rtti() const
+{
+ return RTTI;
+}
+
+void CheckListItem::setHelpText(const QString &help, QTextView *display)
+{
+ help_text = help;
+ help_display = display;
+}
+
+void CheckListItem::setWarningText(const QString &warning, CheckListItem *conflict)
+{
+ conflict_with = conflict;
+ warning_text = warning;
+}
+
+void CheckListItem::addRequiredFiles(const QString &file)
+{
+ QStringList files = QStringList::split(",", file);
+ for (QStringList::ConstIterator it = files.begin(); it != files.end(); ++it) {
+ QString f(*it);
+ required_files << f;
+ if (!findFile(f)) {
+ if (type() == QCheckListItem::RadioButtonController
+ || type() == QCheckListItem::CheckBoxController) {
+ setOpen(false);
+ } else {
+ setOn(false);
+ setEnabled(false);
+ }
+ }
+ }
+}
+
+void CheckListItem::setRequiredFileLocation(const QString &location)
+{
+ file_location = location;
+}
+
+bool CheckListItem::verify() const
+{
+ if (text(0) == "Off")
+ return true;
+
+ if (!required_files.count()) {
+ if (parent() && parent()->rtti() == RTTI)
+ return ((CheckListItem*)parent())->verify();
+ return true;
+ }
+
+ QStringList::ConstIterator it;
+ for (it = required_files.begin(); it != required_files.end(); ++it) {
+ QString file(*it);
+ if (!findFile(file))
+ return false;
+ }
+ return true;
+}
+
+bool CheckListItem::testAndWarn()
+{
+ if (!warning_text.isEmpty()) {
+ if (!conflict_with || conflict_with->isOn()) {
+ int r = QMessageBox::warning(listView()->window(), "Warning",
+ warning_text + "<br>Select anyway?", "Yes", "No" );
+ return r == 0;
+ } else {
+ return true;
+ }
+ }
+
+ QStringList files(required_files);
+ if (!required_files.count() && text(0) != "Off") {
+ if (parent() && parent()->rtti() == RTTI)
+ return ((CheckListItem*)parent())->testAndWarn();
+ return true;
+ }
+
+ if (!verify()) {
+ QString message = QString("<p>The option '%1' is <b>not verified</b> by the installer. One or more of the following "
+ "files could not be located on the system:"
+ "<p>%2"
+ "<p>Continuing with this option selected might <b>break the installation</b> process.")
+ .arg(text(0)).arg(required_files.join(", "));
+ if (!file_location.isEmpty()) {
+ message += QString("<p>The requested files are %1 and need to be installed "
+ "in the INCLUDE, PATH and LIBS environment as appropriate.").arg(file_location);
+ }
+
+ int r = QMessageBox::warning(listView()->window(), "Option not Verified",
+ message + "<p>Select anyway?", "Yes", "No" );
+ return r == 0;
+ }
+ return true;
+}
+
+void CheckListItem::displayHelp()
+{
+ if (help_display) {
+ help_display->setText(help_text);
+ return;
+ }
+ QListViewItem *p = parent();
+ if (p && p->rtti() == RTTI)
+ ((CheckListItem*)p)->displayHelp();
+}
+
+void CheckListItem::setOn(bool on)
+{
+ if (on && (type() == RadioButton || type() == CheckBox) && !testAndWarn())
+ return;
+ QCheckListItem::setOn(on);
+
+ SetupWizardImpl* wizard = qobject_cast<SetupWizardImpl*>(listView()->window());
+ if (wizard && listView()->isVisible() && listView()->updatesEnabled())
+ wizard->optionClicked(this);
+}
+
+void CheckListItem::activate()
+{
+ displayHelp();
+ QCheckListItem::activate();
+}
+
+void CheckListItem::setOpen(bool on)
+{
+ if (on && listView()->isVisible()) {
+ if (!testAndWarn())
+ return;
+ displayHelp();
+ }
+ QCheckListItem::setOpen(on);
+}
+
+void CheckListItem::setCritical(bool on)
+{
+ if (critical == on)
+ return;
+
+ critical = on;
+ repaint();
+}
+
+void CheckListItem::paintCell( QPainter *p, const QColorGroup & cg, int column, int width, int alignment )
+{
+ QColorGroup group(cg);
+ if (critical)
+ group.setColor(QColorGroup::Text, red);
+ QCheckListItem::paintCell(p, group, column, width, alignment);
+}
+
+
+
+void SetupWizardImpl::setStaticEnabled( bool se )
+{
+ bool enterprise = licenseInfo[ "PRODUCTS" ] == "qt-enterprise";
+ if ( se ) {
+ if ( accOn->isOn() ) {
+ accOn->setOn( false );
+ accOff->setOn( true );
+ }
+ if ( bigCodecsOff->isOn() ) {
+ bigCodecsOn->setOn( true );
+ bigCodecsOff->setOn( false );
+ }
+ if ( mngPlugin->isOn() ) {
+ mngDirect->setOn( true );
+ mngPlugin->setOn( false );
+ mngOff->setOn( false );
+ }
+ if ( pngPlugin->isOn() ) {
+ pngDirect->setOn( true );
+ pngPlugin->setOn( false );
+ pngOff->setOn( false );
+ }
+ if ( jpegPlugin->isOn() ) {
+ jpegDirect->setOn( true );
+ jpegPlugin->setOn( false );
+ jpegOff->setOn( false );
+ }
+ if ( sgiPlugin->isOn() ) {
+ sgiPlugin->setOn( false );
+ sgiDirect->setOn( true );
+ }
+ if ( cdePlugin->isOn() ) {
+ cdePlugin->setOn( false );
+ cdeDirect->setOn( true );
+ }
+ if ( motifplusPlugin->isOn() ) {
+ motifplusPlugin->setOn( false );
+ motifplusDirect->setOn( true );
+ }
+ if ( motifPlugin->isOn() ) {
+ motifPlugin->setOn( false );
+ motifDirect->setOn( true );
+ }
+ if ( platinumPlugin->isOn() ) {
+ platinumPlugin->setOn( false );
+ platinumDirect->setOn( true );
+ }
+ if ( xpPlugin->isOn() ) {
+ xpPlugin->setOn( false );
+ xpOff->setOn( true );
+ }
+ if ( enterprise ) {
+ if ( mysqlPlugin->isOn() ) {
+ mysqlPlugin->setOn( false );
+ mysqlDirect->setOn( true );
+ }
+ if ( ociPlugin->isOn() ) {
+ ociPlugin->setOn( false );
+ ociDirect->setOn( true );
+ }
+ if ( odbcPlugin->isOn() ) {
+ odbcPlugin->setOn( false );
+ odbcDirect->setOn( true );
+ }
+ if ( psqlPlugin->isOn() ) {
+ psqlPlugin->setOn( false );
+ psqlDirect->setOn( true );
+ }
+ if ( tdsPlugin->isOn() ) {
+ tdsPlugin->setOn( false );
+ tdsDirect->setOn( true );
+ }
+ if ( db2Plugin->isOn() ) {
+ db2Plugin->setOn( false );
+ db2Direct->setOn( true );
+ }
+ if ( sqlitePlugin->isOn() ) {
+ sqlitePlugin->setOn( false );
+ sqliteDirect->setOn( true );
+ }
+ if ( ibasePlugin->isOn() ) {
+ ibasePlugin->setOn( false );
+ ibaseDirect->setOn( true );
+ }
+ }
+ accOn->setEnabled( false );
+ bigCodecsOff->setEnabled( false );
+ mngPlugin->setEnabled( false );
+ pngPlugin->setEnabled( false );
+ jpegPlugin->setEnabled( false );
+ sgiPlugin->setEnabled( false );
+ cdePlugin->setEnabled( false );
+ motifPlugin->setEnabled( false );
+ motifplusPlugin->setEnabled( false );
+ motifPlugin->setEnabled( false );
+ platinumPlugin->setEnabled( false );
+ xpPlugin->setEnabled( false );
+ if ( enterprise ) {
+ mysqlPlugin->setEnabled( false );
+ ociPlugin->setEnabled( false );
+ odbcPlugin->setEnabled( false );
+ psqlPlugin->setEnabled( false );
+ tdsPlugin->setEnabled( false );
+ db2Plugin->setEnabled( false );
+ sqlitePlugin->setEnabled( false );
+ ibasePlugin->setEnabled( false );
+ }
+ } else {
+ accOn->setEnabled( true );
+ bigCodecsOff->setEnabled( true );
+ mngPlugin->setEnabled( true );
+ pngPlugin->setEnabled( true );
+ jpegPlugin->setEnabled( true );
+ sgiPlugin->setEnabled( true );
+ cdePlugin->setEnabled( true );
+ motifplusPlugin->setEnabled( true );
+ motifPlugin->setEnabled( true );
+ platinumPlugin->setEnabled( true );
+ xpPlugin->setEnabled( true );
+ if ( enterprise ) {
+ mysqlPlugin->setEnabled( true );
+ ociPlugin->setEnabled( true );
+ odbcPlugin->setEnabled( true );
+ psqlPlugin->setEnabled( true );
+ tdsPlugin->setEnabled( true );
+ db2Plugin->setEnabled( true );
+ sqlitePlugin->setEnabled( true );
+ ibasePlugin->setEnabled( true );
+ }
+ }
+ setJpegDirect( mngDirect->isOn() );
+}
+
+void SetupWizardImpl::setJpegDirect( bool jd )
+{
+ // direct MNG support requires also direct JPEG support
+ if ( jd ) {
+ jpegOff->setOn( false );
+ jpegPlugin->setOn( false );
+ jpegDirect->setOn( true );
+
+ jpegOff->setEnabled( false );
+ jpegPlugin->setEnabled( false );
+ jpegDirect->setEnabled( true );
+ } else {
+ jpegOff->setEnabled( true );
+ if ( !staticItem->isOn() )
+ jpegPlugin->setEnabled( true );
+ jpegDirect->setEnabled( true );
+ }
+}
+
+void SetupWizardImpl::optionClicked( CheckListItem *item )
+{
+ if ( !item || item->type() != CheckListItem::RadioButton )
+ return;
+
+ if ( item->text(0) == "Static" && item->isOn() ) {
+ setStaticEnabled( true );
+ return;
+ } else if ( item->text( 0 ) == "Shared" && item->isOn() ) {
+ setStaticEnabled( false );
+ return;
+ } else if ( item==mngDirect || item==mngPlugin || item==mngOff ) {
+ setJpegDirect( mngDirect->isOn() );
+ } else if ( item==db2Direct && odbcDirect->isOn() ) {
+ if ( odbcPlugin->isEnabled() )
+ odbcPlugin->QCheckListItem::setOn(true);
+ else
+ odbcOff->QCheckListItem::setOn(true);
+ } else if ( item==odbcDirect && db2Direct->isOn() ) {
+ if ( db2Plugin->isEnabled() )
+ db2Plugin->QCheckListItem::setOn(true);
+ else
+ db2Off->QCheckListItem::setOn(true);
+ }
+}
+
+
+void SetupWizardImpl::configPageChanged()
+{
+ if ( configPage->configList->isVisible() ) {
+ configPage->configList->setSelected( configPage->configList->currentItem(), true );
+ } else if ( configPage->advancedList->isVisible() ) {
+ configPage->advancedList->setSelected( configPage->advancedList->currentItem(), true );
+ }
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ else if ( configPage->installList->isVisible() ) {
+ configPage->installList->setSelected( configPage->installList->currentItem(), true );
+ }
+#endif
+}
+
+void SetupWizardImpl::cleanDone()
+{
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ prepareEnvironment();
+# if defined(Q_OS_WIN32)
+ QString qtdir = QEnvironment::getEnv( "QTDIR" );
+
+ // adjust the .qmake.cache
+ QFile qmakeCache( qtdir + "/.qmake.cache" );
+ if ( qmakeCache.open( IO_ReadOnly ) ) {
+ QString content = qmakeCache.readAll();
+ qmakeCache.close();
+ if ( globalInformation.sysId() == GlobalInformation::Borland )
+ content.replace( "C:\\QtEvaluation\\qtborland", qtdir );
+ else
+ content.replace( "C:\\QtEvaluation\\qtmsvc", qtdir );
+
+ if ( qmakeCache.open( IO_WriteOnly ) ) {
+ QTextStream ts( &qmakeCache );
+ ts << content;
+ qmakeCache.close();
+ } else {
+ logOutput( QString("Warning: can't open the .qmake.cache file for writing: %1\n").arg( qmakeCache.errorString() ) );
+ }
+ } else {
+ logOutput( QString("Warning: can't open the .qmake.cache file for reading: %1\n").arg( qmakeCache.errorString() ) );
+ }
+
+ QStringList args;
+ args << ( qtdir + "\\bin\\configure.exe" );
+ args << "-spec";
+ args << globalInformation.text(GlobalInformation::Mkspec);
+ if ( globalInformation.sysId() == GlobalInformation::MSVC )
+ args << "-dsp";
+ else if ( globalInformation.sysId() == GlobalInformation::MSVCNET )
+ args << "-vcproj";
+
+ if( qWinVersion() & WV_NT_based ) {
+ logOutput( "Execute configure...\n" );
+ logOutput( args.join( " " ) + "\n" );
+
+ configure.setWorkingDirectory( qtdir );
+ configure.setArguments( args );
+ // Start the configure process
+ buildPage->compileProgress->setTotalSteps( int(double(filesToCompile) * 2.6) );
+ buildPage->restartBuild->setText( "Stop configure" );
+ buildPage->restartBuild->setEnabled( true );
+ buildPage->restartBuild->show();
+ buildPage->compileProgress->show();
+ if( !configure.start() ) {
+ logOutput( "Could not start configure process" );
+ emit wizardPageFailed( indexOf(currentPage()) );
+ }
+ } else { // no proper process handling on DOS based systems - create a batch file instead
+ logOutput( "Generating batch file...\n" );
+ QDir installDir;
+ if ( optionsPage )
+ installDir.setPath( optionsPage->installPath->text() );
+ else
+ installDir.setPath( qtdir );
+ QFile outFile( installDir.filePath("build.bat") );
+ QTextStream outStream( &outFile );
+
+ if( outFile.open( IO_WriteOnly | IO_Translate ) ) {
+ if ( installDir.absPath()[1] == ':' )
+ outStream << installDir.absPath().left(2) << endl;
+ outStream << "cd %QTDIR%" << endl;
+ outStream << args.join( " " ) << endl;
+ if( !globalInformation.reconfig() ) {
+ outStream << globalInformation.text(GlobalInformation::MakeTool) << endl;
+ }
+ outFile.close();
+ }
+ logOutput( "Doing the final integration steps..." );
+ doIDEIntegration();
+ buildPage->compileProgress->setTotalSteps( buildPage->compileProgress->totalSteps() );
+ showPage( finishPage );
+ }
+# elif defined(Q_OS_UNIX)
+ buildPage->compileProgress->show();
+ buildPage->restartBuild->show();
+
+ buildPage->compileProgress->setProgress( 0 );
+ buildPage->compileProgress->setTotalSteps( int(double(filesToCompile) * 1.8) );
+ configDone();
+# endif
+#else
+ QStringList args;
+ QStringList entries;
+ QSettings settings;
+ QString entry;
+ QStringList::Iterator it;
+ QFile tmpFile;
+ QTextStream tmpStream;
+ bool settingsOK;
+
+# if defined(Q_OS_WIN32)
+ args << ( QEnvironment::getEnv( "QTDIR" ) + "\\bin\\configure.exe" );
+# elif defined(Q_OS_UNIX)
+ args << ( QEnvironment::getEnv( "QTDIR" ) + QDir::separator() + "configure" );
+# endif
+
+ entry = settings.readEntry( "/Trolltech/Qt/Build", "Debug", &settingsOK );
+ if ( entry == "Debug" )
+ args += "-debug";
+ else
+ args += "-release";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Library", "Shared", &settingsOK );
+ if ( entry == "Static" )
+ args += "-static";
+ else
+ args += "-shared";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Threading", QString(), &settingsOK );
+ if ( entry == "Threaded" )
+ args += "-thread";
+ else
+ args += "-no-thread";
+
+ entries = settings.readListEntry( "/Trolltech/Qt/Modules", ',', &settingsOK );
+ for( it = allModules.begin(); it != allModules.end(); ++it ) {
+ entry = *it;
+ if ( entries.find( entry ) != entries.end() )
+ args += QString( "-enable-" ) + entry;
+ else
+ args += QString( "-disable-") + entry;
+ }
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/MySQL", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-mysql";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-mysql";
+ else if ( entry == "Off" )
+ args += "-no-sql-mysql";
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/OCI", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-oci";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-oci";
+ else if ( entry == "Off" )
+ args += "-no-sql-oci";
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/ODBC", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-odbc";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-odbc";
+ else if ( entry == "Off" )
+ args += "-no-sql-odbc";
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/PostgreSQL", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-psql";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-psql";
+ else if ( entry == "Off" )
+ args += "-no-sql-psql";
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/TDS", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-tds";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-tds";
+ else if ( entry == "Off" )
+ args += "-no-sql-tds";
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/DB2", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-db2";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-db2";
+ else if ( entry == "Off" )
+ args += "-no-sql-db2";
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/SQLite", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-sqlite";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-sqlite";
+ else if ( entry == "Off" )
+ args += "-no-sql-sqlite";
+
+ entry = settings.readEntry( "/Trolltech/Qt/SQL Drivers/iBase", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-sql-ibase";
+ else if ( entry == "Plugin" )
+ args += "-plugin-sql-ibase";
+ else if ( entry == "Off" )
+ args += "-no-sql-ibase";
+
+# if defined(Q_OS_WIN32)
+//TODO: Win only, remove these options from wizard on mac?
+ entry = settings.readEntry( "/Trolltech/Qt/Accessibility", "On", &settingsOK );
+ if ( entry == "On" )
+ args += "-accessibility";
+ else
+ args += "-no-accessibility";
+# endif
+
+ entry = settings.readEntry( "/Trolltech/Qt/Big Textcodecs", "On", &settingsOK );
+ if ( entry == "On" )
+ args += "-big-codecs";
+ else
+ args += "-no-big-codecs";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Tablet Support", "Off", &settingsOK );
+ if ( entry == "On" )
+ args += "-tablet";
+ else
+ args += "-no-tablet";
+
+ entries = settings.readListEntry( "/Trolltech/Qt/Advanced C++", ',', &settingsOK );
+ if ( entries.contains( "STL" ) )
+ args += "-stl";
+ else
+ args += "-no-stl";
+ if ( entries.contains( "Exceptions" ) )
+ args += "-exceptions";
+ else
+ args += "-no-exceptions";
+ if ( entries.contains( "RTTI" ) )
+ args += "-rtti";
+ else
+ args += "-no-rtti";
+
+# if defined(Q_OS_WIN32)
+//TODO: Win only, remove these options from wizard on mac?
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/PNG", "Direct", &settingsOK );
+ if ( entry == "Plugin" )
+ args += "-plugin-imgfmt-png";
+ else if ( entry == "Direct" )
+ args += "-qt-imgfmt-png";
+ else if ( entry == "Off" )
+ args += "-no-imgfmt-png";
+ args += "-qt-png";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/JPEG", "Direct", &settingsOK );
+ if ( entry == "Plugin" )
+ args += "-plugin-imgfmt-jpeg";
+ else if ( entry == "Direct" )
+ args += "-qt-imgfmt-jpeg";
+ else if ( entry == "Off" )
+ args += "-no-imgfmt-jpeg";
+ args += "-qt-jpeg";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/MNG", "Direct", &settingsOK );
+ if ( entry == "Plugin" )
+ args += "-plugin-imgfmt-mng";
+ else if ( entry == "Direct" )
+ args += "-qt-imgfmt-mng";
+ else if ( entry == "Off" )
+ args += "-no-imgfmt-mng";
+ args += "-qt-mng";
+# endif
+
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/GIF", "Direct", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-gif";
+ else if ( entry == "Off" )
+ args += "-no-gif";
+
+# if defined(Q_OS_WIN32)
+//TODO: Win only, remove these options from wizard on mac?
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows", "Direct", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-style-windows";
+ else if ( entry == "Plugin" )
+ args += "-plugin-style-windows";
+ else if ( entry == "Off" )
+ args += "-no-style-windows";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows XP", "Off", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-style-windowsxp";
+ else if ( entry == "Plugin" )
+ args += "-plugin-style-windowsxp";
+ else if ( entry == "Off" )
+ args += "-no-style-windowsxp";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Motif", "Plugin", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-style-motif";
+ else if ( entry == "Plugin" )
+ args += "-plugin-style-motif";
+ else if ( entry == "Off" )
+ args += "-no-style-motif";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Platinum", "Plugin", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-style-platinum";
+ else if ( entry == "Plugin" )
+ args += "-plugin-style-platinum";
+ else if ( entry == "Off" )
+ args += "-no-style-platinum";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/MotifPlus", "Plugin", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-style-motifplus";
+ else if ( entry == "Plugin" )
+ args += "-plugin-style-motifplus";
+ else if ( entry == "Off" )
+ args += "-no-style-motifplus";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/CDE", "Plugin", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-style-cde";
+ else if ( entry == "Plugin" )
+ args += "-plugin-style-cde";
+ else if ( entry == "Off" )
+ args += "-no-style-cde";
+
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/SGI", "Plugin", &settingsOK );
+ if ( entry == "Direct" )
+ args += "-qt-style-sgi";
+ else if ( entry == "Plugin" )
+ args += "-plugin-style-sgi";
+ else if ( entry == "Off" )
+ args += "-no-style-sgi";
+# endif
+
+ if ( globalInformation.sysId() == GlobalInformation::MSVC ) {
+ entry = settings.readEntry( "/Trolltech/Qt/DSP Generation", "On", &settingsOK );
+ if ( entry == "On" )
+ args += "-dsp";
+ else if ( entry == "Off" )
+ args += "-no-dsp";
+ } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET ) {
+ entry = settings.readEntry( "/Trolltech/Qt/VCPROJ Generation", "On", &settingsOK );
+ if ( entry == "On" )
+ args += "-vcproj";
+ else if ( entry == "Off" )
+ args += "-no-vcproj";
+ } else if ( globalInformation.sysId() != GlobalInformation::MSVC && globalInformation.sysId() == GlobalInformation::MSVCNET ) {
+ args += "-no-dsp";
+ args += "-no-vcproj";
+ }
+
+ if ( ( ( !globalInformation.reconfig() && !optionsPage->skipBuild->isChecked() )
+ || ( globalInformation.reconfig() && configPage->rebuildInstallation->isChecked() ) )
+# if defined(Q_OS_WIN32)
+ && qWinVersion() & WV_NT_based ) {
+# else
+ ) {
+# endif
+ logOutput( "Execute configure...\n" );
+ logOutput( args.join( " " ) + "\n" );
+
+ configure.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
+ configure.setArguments( args );
+ // Start the configure process
+ buildPage->compileProgress->setTotalSteps( int(double(filesToCompile) * 2.6) );
+ buildPage->restartBuild->setText( "Stop configure" );
+ buildPage->restartBuild->setEnabled( true );
+ buildPage->restartBuild->show();
+ buildPage->compileProgress->show();
+ if( !configure.start() ) {
+ logOutput( "Could not start configure process" );
+ emit wizardPageFailed( indexOf(currentPage()) );
+ }
+ } else { // no proper process handling on DOS based systems - create a batch file instead
+ logOutput( "Generating batch file...\n" );
+ QDir installDir;
+ if ( optionsPage )
+ installDir.setPath( optionsPage->installPath->text() );
+ else
+ installDir.setPath( QEnvironment::getEnv( "QTDIR" ) );
+ QFile outFile( installDir.filePath("build.bat") );
+ QTextStream outStream( &outFile );
+
+ if( outFile.open( IO_WriteOnly | IO_Translate ) ) {
+ if ( installDir.absPath()[1] == ':' )
+ outStream << installDir.absPath().left(2) << endl;
+ outStream << "cd %QTDIR%" << endl;
+
+ if ( globalInformation.reconfig() )
+ outStream << globalInformation.text(GlobalInformation::MakeTool) << " clean" << endl;
+
+ // There is a limitation on Windows 9x regarding the length of the
+ // command line. So rather use the configure.cache than specifying
+ // all configure options on the command line.
+ QFile configureCache( installDir.filePath("configure.cache") );
+ if( configureCache.open( IO_WriteOnly | IO_Translate ) ) {
+ QTextStream confCacheStream( &configureCache );
+ QStringList::Iterator it = args.begin();
+ ++it; // skip args[0] (configure)
+ while ( it != args.end() ) {
+ confCacheStream << *it << endl;
+ ++it;
+ }
+ configureCache.close();
+ outStream << args[0] << " -redo" << endl;
+ } else {
+ outStream << args.join( " " ) << endl;
+ }
+
+ outStream << globalInformation.text(GlobalInformation::MakeTool) << endl;
+ outFile.close();
+ }
+ logOutput( "Doing the final integration steps..." );
+ // No need to redo the integration step
+ if ( !globalInformation.reconfig() )
+ doIDEIntegration();
+ buildPage->compileProgress->setTotalSteps( buildPage->compileProgress->totalSteps() );
+ showPage( finishPage );
+ }
+#endif
+}
+
+void SetupWizardImpl::prepareEnvironment()
+{
+ QByteArray pathBuffer;
+ QStringList path;
+ QString qtDir;
+ int envSpec = QEnvironment::LocalEnv;
+
+ if( globalInformation.reconfig() ) {
+ qtDir = QEnvironment::getEnv( "QTDIR" );
+ if ( configPage ) {
+ configPage->currentInstallation->setText( qtDir );
+ }
+ }
+ else {
+ qtDir = QDir::toNativeSeparators( QEnvironment::getFSFileName( optionsPage->installPath->text() ) );
+ }
+
+#if defined(Q_OS_WIN32)
+ if( qWinVersion() & Qt::WV_NT_based ) {
+ // under Windows 9x, we don't compile from the installer -- so there is
+ // no need to set the local environment; and doing so, results in not
+ // setting the persistent since qtDir\bin is already in the PATH
+ path = QStringList::split( QRegExp("[;,]"), QEnvironment::getEnv( "PATH" ) );
+ if( path.findIndex( qtDir + "\\bin" ) == -1 ) {
+ path.prepend( qtDir + "\\bin" );
+ QEnvironment::putEnv( "PATH", path.join( ";" ) );
+ }
+ }
+#elif defined(Q_OS_UNIX)
+ path = QStringList::split( QRegExp("[:]"), QEnvironment::getEnv( "PATH" ) );
+ if( path.findIndex( qtDir + "/bin" ) == -1 ) {
+ path.prepend( qtDir + "/bin" );
+ QEnvironment::putEnv( "PATH", path.join( ":" ) );
+ }
+ QStringList dyld = QStringList::split( QRegExp("[:]"), QEnvironment::getEnv( "DYLD_LIBRARY_PATH" ) );
+ if( dyld.findIndex( qtDir + "/lib" ) == -1 ) {
+ dyld.prepend( qtDir + "/lib" );
+ QEnvironment::putEnv( "DYLD_LIBRARY_PATH", dyld.join( ":" ) );
+ }
+#endif
+
+#if defined(Q_OS_WIN32)
+ if( foldersPage && foldersPage->qtDirCheck->isChecked() ) {
+ envSpec |= QEnvironment::PersistentEnv;
+/*
+ if( folderGroups->currentItem() == 0 )
+ envSpec |= QEnvironment::GlobalEnv;
+*/
+ path.clear();
+
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ path = QStringList::split( ';', QEnvironment::getEnv( "PATH", QEnvironment::PersistentEnv ) );
+ if( path.findIndex( qtDir + "\\bin" ) == -1 ) {
+ path.prepend( qtDir + "\\bin" );
+ QEnvironment::putEnv( "PATH", path.join( ";" ), QEnvironment::PersistentEnv );
+ }
+ } else {
+ if( path.findIndex( qtDir + "\\bin" ) == -1 ) {
+ QEnvironment::putEnv( "PATH", qtDir + "\\bin;%PATH%", QEnvironment::PersistentEnv );
+ }
+ }
+ }
+#elif defined(Q_OS_UNIX)
+//Persistent environment not supported
+#endif
+
+ QEnvironment::putEnv( "QTDIR", qtDir, envSpec );
+ if ( globalInformation.sysId() != GlobalInformation::Other )
+ QEnvironment::putEnv( "QMAKESPEC", globalInformation.text(GlobalInformation::Mkspec), envSpec );
+ else
+ QEnvironment::putEnv( "QMAKESPEC", optionsPage->sysOtherCombo->currentText(), envSpec );
+#if defined(Q_OS_WIN32)
+ if( qWinVersion() & WV_NT_based ) {
+ SendNotifyMessageA( HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)"Environment" );
+ SendNotifyMessageA( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 );
+ }
+#endif
+}
+
+void SetupWizardImpl::showPageConfig()
+{
+ if (autoContTimer.isActive()) {
+ autoContTimer.stop();
+ timeCounter = 30;
+ nextButton()->setText("Next >");
+ }
+#if defined(EVAL) || defined(EDU) || defined(NON_COMMERCIAL)
+ setBackEnabled( buildPage, false );
+
+ static bool alreadyInitialized = false;
+ if ( !alreadyInitialized ) {
+ configPage->installList->setSorting( -1 );
+ configPage->installList->setUpdatesEnabled(false);
+
+ CheckListItem *item;
+ CheckListItem *folder;
+
+ folder = new CheckListItem( configPage->installList, "Database drivers" );
+
+#if !defined(NON_COMMERCIAL)
+#if !defined(Q_OS_MACX)
+ item = new CheckListItem( folder, "DB2", QCheckListItem::CheckBox );
+ item->addRequiredFiles("db2cli.dll");
+ db2PluginInstall = item;
+ db2PluginInstall->setHelpText( tr(
+ "Installs the DB2 driver. This driver can "
+ "be used to access DB2 databases."
+ "<p><font color=\"red\">Choosing this option requires "
+ "that the DB2 Client is installed and set up. "
+ "The driver depends on the db2cli.dll.</font></p>"
+ ), configPage->explainOption );
+
+ item = new CheckListItem( folder, "TDS", QCheckListItem::CheckBox );
+ item->addRequiredFiles("ntwdblib.dll");
+ tdsPluginInstall = item;
+ tdsPluginInstall->setHelpText( tr(
+ "Installs the TDS driver to access Sybase Adaptive "
+ "Server and Microsoft SQL Server (it is recommended "
+ "to rather use ODBC instead of TDS where applicable). "
+ "<p><font color=\"red\">Choosing this option requires "
+ "that the ntwdblib.dll is available.</font></p>"
+ ), configPage->explainOption );
+
+ item = new CheckListItem( folder, "Oracle (OCI)", QCheckListItem::CheckBox );
+ item->addRequiredFiles( "oci.dll" );
+ ociPluginInstall = item;
+ ociPluginInstall->setHelpText( tr(
+ "<p>Installs the Oracale Call Interface (OCI) driver.</p> "
+ "<p><font color=\"red\">Choosing this option requires "
+ "that the Oracle Client is installed and set up. "
+ "The driver depends on the oci.dll.</font></p>"
+ ), configPage->explainOption );
+#endif
+
+ if ( globalInformation.sysId() != GlobalInformation::Borland ) {
+ // I was not able to make Postgres work with Borland
+ item = new CheckListItem( folder, "PostgreSQL", QCheckListItem::CheckBox );
+#ifndef Q_OS_MACX
+ item->addRequiredFiles( "libpq.dll" );
+#endif
+ item->setOn( item->verify() );
+ psqlPluginInstall = item;
+ psqlPluginInstall->setHelpText( tr(
+ "Installs the PostgreSQL 7.x driver. This driver can "
+ "be used to access PostgreSQL 6 databases as well "
+ "as PostgreSQL 7 databases."
+#ifdef Q_OS_MACX
+ "\n\nRequires a proper PostgreSQL installation."
+#endif
+ ), configPage->explainOption );
+ } else {
+ psqlPluginInstall = 0;
+ }
+
+ item = new CheckListItem( folder, "MySQL", QCheckListItem::CheckBox );
+#ifndef Q_OS_MACX
+ item->addRequiredFiles( "libmySQL.dll" );
+#endif
+ item->setOn( item->verify() );
+ mysqlPluginInstall = item;
+ mysqlPluginInstall->setHelpText( tr(
+ "Installs the MySQL 3.x database driver."
+#ifdef Q_OS_MACX
+ "\n\nRequires a proper MySQL installation."
+#endif
+ ), configPage->explainOption );
+
+#if !defined(Q_OS_MAC)
+ item = new CheckListItem( folder, "ODBC", QCheckListItem::CheckBox );
+ item->setOn( findFile( "odbc32.dll" ) );
+ odbcPluginInstall = item;
+ odbcPluginInstall->setHelpText( tr(
+ "Installs the Open Database Connectivity (ODBC) driver. "
+ "This driver depends on the odbc32.dll which should be "
+ "available on all modern Windows installations."
+ ), configPage->explainOption );
+#endif
+#else
+ item = new CheckListItem( folder, "SQLite", QCheckListItem::CheckBox );
+ item->setOn( true );
+ sqlitePluginInstall = item;
+ sqlitePluginInstall->setHelpText( tr(
+ "Installs the SQLite driver.\n"
+ "This driver is an in-process SQL database "
+ "driver. It is needed for some of the "
+ "examples used in the book."
+ ), configPage->explainOption );
+#endif
+
+ configPage->installList->setUpdatesEnabled(true);
+ alreadyInitialized = true;
+ }
+#else
+
+ prepareEnvironment();
+
+ bool enterprise = licenseInfo[ "PRODUCTS" ] == "qt-enterprise";
+ configPage->configList->setUpdatesEnabled(false);
+ configPage->advancedList->setUpdatesEnabled(false);
+
+ if( configPage->configList->childCount() ) {
+ QListViewItem* current = configPage->configList->firstChild();
+
+ while( current ) {
+ QListViewItem* next = current->nextSibling();
+ delete current;
+ current = next;
+ }
+
+ current = configPage->advancedList->firstChild();
+ while( current ) {
+ QListViewItem* next = current->nextSibling();
+ delete current;
+ current = next;
+ }
+ }
+ QSettings settings;
+ configPage->configList->setSorting( -1 );
+ configPage->advancedList->setSorting( -1 );
+ CheckListItem *item;
+ CheckListItem *folder;
+ QStringList::Iterator it;
+
+ // general
+ folder = new CheckListItem ( configPage->configList, "Modules" );
+ folder->setHelpText(tr("<p>Some of these modules are optional."
+ "<p>You can deselect the modules that you "
+ "don't require for your development."
+ "<p>By default, all modules are selected."), configPage->explainOption);
+ bool settingsOK;
+ QStringList entries = settings.readListEntry( "/Trolltech/Qt/Modules", ',', &settingsOK );
+ QStringList licensedModules = QStringList::split( " ", "network canvas table xml opengl sql" );
+ for( it = licensedModules.begin(); it != licensedModules.end(); ++it ) {
+ item = new CheckListItem( folder, (*it), QCheckListItem::CheckBox );
+ bool on = entries.isEmpty() || entries.find( *it ) != entries.end();
+ item->setOn( enterprise && on );
+ item->setEnabled( enterprise );
+ if ( enterprise )
+ allModules << *it;
+ }
+
+ licensedModules = QStringList::split( " ", "iconview workspace" );
+ for( it = licensedModules.begin(); it != licensedModules.end(); ++it ) {
+ item = new CheckListItem( folder, (*it), QCheckListItem::CheckBox );
+ bool on = entries.isEmpty() || entries.find( *it ) != entries.end();
+ item->setOn( on );
+ allModules << *it;
+ }
+
+ QStringList requiredModules = QStringList::split( " ", "styles dialogs widgets tools kernel" );
+ for( it = requiredModules.begin(); it != requiredModules.end(); ++it ) {
+ item = new CheckListItem( folder, (*it), QCheckListItem::CheckBox );
+ bool on = entries.isEmpty() || entries.find( *it ) != entries.end();
+ item->setOn( on );
+ item->setEnabled( false );
+ allModules << *it;
+ }
+
+ folder = new CheckListItem ( configPage->configList, "Threading" );
+ folder->setHelpText(tr("<p>Build the Qt library with or without thread support."
+ "<p>By default, threading is supported. Some classes will "
+ "not be available without thread support."), configPage->explainOption);
+ QString entry = settings.readEntry( "/Trolltech/Qt/Threading", "Threaded", &settingsOK );
+ item = new CheckListItem( folder, "Threaded", QCheckListItem::RadioButton );
+ item->setOn( entry == "Threaded" );
+ item = new CheckListItem( folder, "Non-threaded", QCheckListItem::RadioButton );
+ item->setOn( entry == "Non-threaded" );
+ CheckListItem *singleThreaded = item;
+
+ folder = new CheckListItem ( configPage->configList, "Library" );
+ folder->setHelpText(tr("<p>Build a shared or a static Qt library."
+ "<p>A shared Qt library makes it necessary to "
+ "distribute the Qt DLL together with your software. "
+ "Applications and libraries linked against a shared Qt library "
+ "are small and can make use of components and plugins."
+ "<p>All applications created with a static "
+ "library will be at least 1.5MB big. "
+ "<font color=\"red\">It is not possible to "
+ "build or use any components or plugins with a "
+ "static Qt library!</font>"), configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Library", "Shared", &settingsOK );
+ staticItem = new CheckListItem( folder, "Static", QCheckListItem::RadioButton );
+ staticItem->setOn( entry == "Static" );
+ staticItem->setWarningText("<p>It will not be possible to build components "
+ "or plugins if you select the static build of the Qt library."
+ "<p>New features, e.g souce code editing in Qt Designer, will not "
+ "be available, and you or users of your software might not be able "
+ "to use all or new features, e.g. new styles.");
+
+ item = new CheckListItem( folder, "Shared", QCheckListItem::RadioButton );
+ item->setOn( entry == "Shared" );
+ item->setWarningText("<p>Single-threaded, shared configurations "
+ "may cause instabilities because of runtime "
+ "library conflicts.", singleThreaded);
+ singleThreaded->setWarningText("<p>Single-threaded, shared configurations "
+ "may cause instabilities because of runtime "
+ "library conflicts.", item);
+
+ folder = new CheckListItem ( configPage->configList, "Build" );
+ folder->setHelpText(tr("<p>Build a Qt library with or without debug symbols."
+ "<p>Use the debug build of the Qt library to enhance "
+ "debugging of your application. The release build "
+ "is both smaller and faster."), configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Build", "Release", &settingsOK );
+ item = new CheckListItem( folder, "Debug", QCheckListItem::RadioButton );
+ item->setOn( entry == "Debug" );
+ item = new CheckListItem( folder, "Release", QCheckListItem::RadioButton );
+ item->setOn( entry == "Release" );
+
+ // Advanced options
+ if ( globalInformation.sysId() == GlobalInformation::MSVC ) {
+ entry = settings.readEntry( "/Trolltech/Qt/DSP Generation", "On", &settingsOK );
+ folder = new CheckListItem( configPage->advancedList, "DSP Generation" );
+ folder->setHelpText(tr("qmake can generate the Visual Studio 6 project files (dsp) as well "
+ "as makefiles when Qt is being configured."),
+ configPage->explainOption);
+ dspOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ dspOff->setOn( entry == "Off" );
+ dspOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
+ dspOn->setOn( entry == "On" );
+ } else if ( globalInformation.sysId() == GlobalInformation::MSVCNET ) {
+ entry = settings.readEntry( "/Trolltech/Qt/VCPROJ Generation", "On", &settingsOK );
+ folder = new CheckListItem( configPage->advancedList, "VCPROJ Generation" );
+ folder->setHelpText(tr("qmake can generate the Visual Studio.NET project files (vcproj) as well "
+ "as makefiles when Qt is being configured."),
+ configPage->explainOption);
+ vcprojOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ vcprojOff->setOn( entry == "Off" );
+ vcprojOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
+ vcprojOn->setOn( entry == "On" );
+ }
+
+ CheckListItem *imfolder = new CheckListItem( configPage->advancedList, "Image Formats" );
+ imfolder->setHelpText(tr("<p>Qt ships with support for a wide range of common image formats. "
+ "<p>Standard formats are always included in Qt, and some more special formats "
+ "can be left out from the Qt library itself and provided by a plugin instead."),
+ configPage->explainOption);
+
+ folder = new CheckListItem( imfolder, "GIF" );
+ folder->setHelpText(tr("<p>Support for GIF images in Qt."
+ "<p><font color=\"red\">If you are in a country "
+ "which recognizes software patents and in which "
+ "Unisys holds a patent on LZW compression and/or "
+ "decompression and you want to use GIF, Unisys "
+ "may require you to license the technology. Such "
+ "countries include Canada, Japan, the USA, "
+ "France, Germany, Italy and the UK.</font>"),
+ configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/GIF", "Off", &settingsOK );
+ gifOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ gifOff->setOn( entry == "Off" );
+ gifDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ gifDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( imfolder, "MNG" );
+ folder->setHelpText(tr("<p>Qt can support the \"Multiple-Image Network Graphics\" format."
+ "<p>MNG support can be compiled into Qt, provided by a plugin ",
+ "or turned off completely."),
+ configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/MNG", "Plugin", &settingsOK );
+#if 0
+ // ### disable using system MNG for now -- please someone take a closer look
+ entryPresent = settings.readEntry( "/Trolltech/Qt/Image Formats/MNG Present", "No", &settingsOK );
+ mngPresent = new CheckListItem( folder, "Present", QCheckListItem::CheckBox );
+ mngPresent->setOn( entry == "Yes" );
+#endif
+ mngOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ mngOff->setOn( entry == "Off" );
+ mngPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ mngPlugin->setOn( entry == "Plugin" );
+ mngDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ mngDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( imfolder, "JPEG" );
+ folder->setHelpText(tr("<p>Qt can support the \"Joint Photographic Experts Group\" format."
+ "<p>JPEG support can be compiled into Qt, provided by a plugin ",
+ "or turned off completely."),
+ configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/JPEG", "Direct", &settingsOK );
+#if 0
+ // ### disable using system JPEG for now -- please someone take a closer look
+ entryPresent = settings.readEntry( "/Trolltech/Qt/Image Formats/JPEG Present", "No", &settingsOK );
+ jpegPresent = new CheckListItem( folder, "Present", QCheckListItem::CheckBox );
+ jpegPresent->setOn( entry == "Yes" );
+#endif
+ jpegOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ jpegOff->setOn( entry == "Off" );
+ jpegPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ jpegPlugin->setOn( entry == "Plugin" );
+ jpegDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ jpegDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( imfolder, "PNG" );
+ folder->setHelpText(tr("<p>Qt can support the \"Portable Network Graphics\" format."
+ "<p>PNG support can be compiled into Qt, provided by a plugin ",
+ "or turned off completely."),
+ configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Image Formats/PNG", "Direct", &settingsOK );
+#if 0
+ // ### disable using system PNG for now -- please someone take a closer look
+ entryPresent = settings.readEntry( "/Trolltech/Qt/Image Formats/PNG Present", "No", &settingsOK );
+ pngPresent = new CheckListItem( folder, "Present", QCheckListItem::CheckBox );
+ pngPresent->setOn( entry == "Yes" );
+#endif
+ pngOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ pngOff->setOn( entry == "Off" );
+ // PNG is required by the build system (ie. we use PNG), so don't allow it to be turned off
+ pngOff->setEnabled( false );
+ pngPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ pngPlugin->setOn( entry == "Plugin" );
+ pngDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ pngDirect->setOn( entry == "Direct" );
+
+ CheckListItem *sqlfolder = new CheckListItem( configPage->advancedList, "Sql Drivers" );
+ sqlfolder->setHelpText(tr("<p>Select the SQL Drivers you want to support."
+ "<p>SQL Drivers can be built into Qt or built as plugins to be more flexible "
+ "for later extensions."
+ "<p><font color=#FF0000>You must have the appropriate client libraries "
+ "and header files installed correctly before you can build the Qt SQL drivers.</font>"),
+ configPage->explainOption);
+
+ folder = new CheckListItem( sqlfolder, "iBase" );
+ folder->addRequiredFiles("ibase.h");
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/iBase", "Off", &settingsOK );
+ ibaseOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ ibaseOff->setOn( true );
+ ibaseOff->setEnabled( enterprise );
+ ibasePlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ ibasePlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ ibasePlugin->setEnabled( enterprise );
+ ibaseDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ ibaseDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
+ ibaseDirect->setEnabled( enterprise );
+ if (globalInformation.sysId() == GlobalInformation::Borland)
+ folder->addRequiredFiles("gds32.lib");
+ else
+ folder->addRequiredFiles("gds32_ms.lib");
+
+ folder = new CheckListItem( sqlfolder, "DB2" );
+ folder->addRequiredFiles("db2cli.lib,sqlcli1.h");
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/DB2", "Off", &settingsOK );
+ db2Off = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ db2Off->setOn( true );
+ db2Off->setEnabled( enterprise );
+ db2Plugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ db2Plugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ db2Plugin->setEnabled( enterprise );
+ db2Direct = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ db2Direct->setOn( entry == "Direct" && folder->verify() && enterprise );
+ db2Direct->setEnabled( enterprise );
+
+ folder = new CheckListItem( sqlfolder, "TDS" );
+ folder->addRequiredFiles("ntwdblib.lib,sqldb.h");
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/TDS", "Off", &settingsOK );
+ tdsOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ tdsOff->setOn( true );
+ tdsOff->setEnabled( enterprise );
+ tdsPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ tdsPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ tdsPlugin->setEnabled( enterprise );
+ tdsDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ tdsDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
+ tdsDirect->setEnabled( enterprise );
+
+ folder = new CheckListItem( sqlfolder, "PostgreSQL" );
+ folder->addRequiredFiles("libpqdll.lib,libpq-fe.h");
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/PostgreSQL", "Off", &settingsOK );
+ psqlOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ psqlOff->setOn( true );
+ psqlOff->setEnabled( enterprise );
+ psqlPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ psqlPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ psqlPlugin->setEnabled( enterprise );
+ psqlDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ psqlDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
+ psqlDirect->setEnabled( enterprise );
+
+ folder = new CheckListItem( sqlfolder, "OCI" );
+ folder->addRequiredFiles("oci.lib,oci.h");
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/OCI", "Off", &settingsOK );
+ ociOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ ociOff->setOn( true );
+ ociOff->setEnabled( enterprise );
+ ociPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ ociPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ ociPlugin->setEnabled( enterprise );
+ ociDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ ociDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
+ ociDirect->setEnabled( enterprise );
+
+ folder = new CheckListItem( sqlfolder, "MySQL" );
+ folder->addRequiredFiles("libmysql.lib,mysql.h");
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/MySQL", "Off", &settingsOK );
+ mysqlOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ mysqlOff->setOn( true );
+ mysqlOff->setEnabled( enterprise );
+ mysqlPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ mysqlPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ mysqlPlugin->setEnabled( enterprise );
+ mysqlDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ mysqlDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
+ mysqlDirect->setEnabled( enterprise );
+
+ folder = new CheckListItem( sqlfolder, "SQLite" );
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/SQLite", "Off", &settingsOK );
+ sqliteOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ sqliteOff->setOn( true );
+ sqliteOff->setEnabled( enterprise );
+ sqlitePlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ sqlitePlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ sqlitePlugin->setEnabled( enterprise );
+ sqliteDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ sqliteDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
+ sqliteDirect->setEnabled( enterprise );
+
+ folder = new CheckListItem( sqlfolder, "ODBC" );
+ folder->addRequiredFiles("odbc32.lib,sql.h");
+ entry = settings.readEntry( "/Trolltech/Qt/Sql Drivers/ODBC", "Off", &settingsOK );
+ odbcOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ odbcOff->setOn( true );
+ odbcOff->setEnabled( enterprise );
+ odbcPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ odbcPlugin->setOn( entry == "Plugin" && folder->verify() && enterprise );
+ odbcPlugin->setEnabled( enterprise );
+ odbcDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ odbcDirect->setOn( entry == "Direct" && folder->verify() && enterprise );
+ odbcDirect->setEnabled( enterprise );
+
+ CheckListItem *stfolder = new CheckListItem( configPage->advancedList, "Styles" );
+ stfolder->setHelpText(tr("Select support for the various GUI styles that Qt supports." ),configPage->explainOption);
+
+ folder = new CheckListItem( stfolder, "SGI" );
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/SGI", "Plugin", &settingsOK );
+ sgiOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ sgiOff->setOn( entry == "Off" );
+ sgiPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ sgiPlugin->setOn( entry == "Plugin" );
+ sgiDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ sgiDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( stfolder, "CDE" );
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/CDE", "Plugin", &settingsOK );
+ cdeOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ cdeOff->setOn( entry == "Off" );
+ cdePlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ cdePlugin->setOn( entry == "Plugin" );
+ cdeDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ cdeDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( stfolder, "MotifPlus" );
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/MotifPlus", "Plugin", &settingsOK );
+ motifplusOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ motifplusOff->setOn( entry == "Off" );
+ motifplusPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ motifplusPlugin->setOn( entry == "Plugin" );
+ motifplusDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ motifplusDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( stfolder, "Platinum" );
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Platinum", "Plugin", &settingsOK );
+ platinumOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ platinumOff->setOn( entry == "Off" );
+ platinumPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ platinumPlugin->setOn( entry == "Plugin" );
+ platinumDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ platinumDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( stfolder, "Motif" );
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Motif", "Plugin", &settingsOK );
+ motifOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ motifOff->setOn( entry == "Off" );
+ motifPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ motifPlugin->setOn( entry == "Plugin" );
+ motifDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ motifDirect->setOn( entry == "Direct" );
+
+ folder = new CheckListItem( stfolder, "Windows XP" );
+ folder->addRequiredFiles("uxtheme.h");
+ folder->setRequiredFileLocation("part of the Microsoft Platform SDK, which is usually available for "
+ "download from the following location:"
+ "<p>http://www.microsoft.com/msdownload/platformsdk/sdkupdate/<p>");
+
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows XP", "Direct", &settingsOK );
+ xpOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ xpOff->setOn( true );
+ xpPlugin = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ xpPlugin->setOn( entry == "Plugin" && folder->verify() );
+ xpPlugin->setEnabled( folder->verify() );
+ xpDirect = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ xpDirect->setOn( entry == "Direct" && folder->verify() );
+ xpDirect->setEnabled( folder->verify() );
+
+ folder = new CheckListItem( stfolder, "Windows" );
+ entry = settings.readEntry( "/Trolltech/Qt/Styles/Windows", "Direct", &settingsOK );
+ item = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ item->setEnabled( false );
+ item->setOn( entry == "Off" );
+ item = new CheckListItem( folder, "Plugin", QCheckListItem::RadioButton );
+ item->setEnabled( false );
+ item->setOn( entry == "Plugin" );
+ item = new CheckListItem( folder, "Direct", QCheckListItem::RadioButton );
+ item->setOn( entry == "Direct" );
+
+ entries = settings.readListEntry( "/Trolltech/Qt/Advanced C++", ',', &settingsOK );
+ folder = new CheckListItem( configPage->advancedList, "Advanced C++" );
+ folder->setHelpText(tr("Qt can be built with exception handling, STL support and RTTI support "
+ "enabled or disabled. Qt itself doesn't use any of those features."
+ "The default is to disable all advanced C++ features."),
+ configPage->explainOption);
+ advancedRTTI = new CheckListItem( folder, "RTTI", QCheckListItem::CheckBox );
+ advancedRTTI->setOn( entries.contains( "RTTI" ) );
+ advancedExceptions = new CheckListItem( folder, "Exceptions", QCheckListItem::CheckBox );
+ advancedExceptions->setOn( entries.contains( "Exceptions" ) );
+ advancedSTL = new CheckListItem( folder, "STL", QCheckListItem::CheckBox );
+ advancedSTL->setOn( entries.contains( "STL" ) );
+
+ folder = new CheckListItem( configPage->advancedList, "Tablet Support" );
+ folder->addRequiredFiles("wintab.h,wintab.lib");
+ folder->setRequiredFileLocation("available at http://www.pointing.com/FTP.HTM");
+ folder->setHelpText(tr("Qt can support the Wacom brand tablet device."), configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Tablet Support", "Off", &settingsOK );
+ tabletOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ tabletOff->setOn( true );
+ tabletOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
+ tabletOn->setOn( entry == "On" && folder->verify() );
+
+ folder = new CheckListItem( configPage->advancedList, "Accessibility" );
+ folder->setHelpText(tr("<p>Accessibility means making software usable and accessible to a wide "
+ "range of users, including those with disabilities."
+ "This feature is only available with a shared Qt library."),
+ configPage->explainOption);
+ entry = settings.readEntry( "/Trolltech/Qt/Accessibility", "On", &settingsOK );
+ accOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ accOff->setOn( entry == "Off" );
+ accOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
+ accOn->setOn( entry == "On" );
+
+ entry = settings.readEntry( "/Trolltech/Qt/Big Textcodecs", "On", &settingsOK );
+ folder = new CheckListItem( configPage->advancedList, "Big Textcodecs" );
+ folder->setHelpText(tr("Textcodecs provide translations between text encodings. For "
+ "languages and script systems with many characters it is necessary "
+ "to have big data tables that provide the translation. Those codecs "
+ "can be left out of the Qt library and will be loaded on demand.\n"
+ "Having the codecs in a plugin is not available with a static Qt "
+ "library."), configPage->explainOption);
+ bigCodecsOff = new CheckListItem( folder, "Off", QCheckListItem::RadioButton );
+ bigCodecsOff->setOn( entry == "Off" );
+ bigCodecsOn = new CheckListItem( folder, "On", QCheckListItem::RadioButton );
+ bigCodecsOn->setOn( entry == "On" );
+
+ setStaticEnabled( staticItem->isOn() );
+ setJpegDirect( mngDirect->isOn() );
+
+ configPage->configList->setUpdatesEnabled(true);
+ configPage->advancedList->setUpdatesEnabled(true);
+
+ // Needed to force the scrollbars to appear on Windows 9x...
+ QListViewItem *dummy = new QListViewItem(configPage->configList, "Dummy Item");
+ delete dummy;
+
+ setBackEnabled( buildPage, false );
+#endif
+}
+
+void SetupWizardImpl::showPageBuild()
+{
+ autoContTimer.stop();
+ nextButton()->setText( "Next >" );
+ saveSettings();
+
+#if defined(Q_OS_WIN32)
+ if( globalInformation.reconfig() && configPage->rebuildInstallation->isChecked() && qWinVersion() & WV_NT_based ) {
+ QStringList args;
+
+ buildPage->compileProgress->hide();
+ buildPage->restartBuild->hide();
+
+ args << globalInformation.text(GlobalInformation::MakeTool) << "clean";
+ logOutput( "Starting cleaning process" );
+ connect( &cleaner, SIGNAL( processExited() ), this, SLOT( cleanDone() ) );
+ connect( &cleaner, SIGNAL( readyReadStdout() ), this, SLOT( readCleanerOutput() ) );
+ connect( &cleaner, SIGNAL( readyReadStderr() ), this, SLOT( readCleanerError() ) );
+ cleaner.setWorkingDirectory( QEnvironment::getEnv( "QTDIR" ) );
+ cleaner.setArguments( args );
+ if( !cleaner.start() ) {
+ logOutput( "Could not start cleaning process" );
+ emit wizardPageFailed( indexOf(currentPage()) );
+ }
+ } else
+#endif
+ cleanDone(); // We're not doing a reconfig, so skip the clean step
+
+}
+
+static bool verifyHelper(QListView *listview, bool result)
+{
+ QListViewItemIterator it(listview);
+ while (it.current()) {
+ QListViewItem *item = it.current();
+ ++it;
+ if (item->rtti() != CheckListItem::RTTI)
+ continue;
+
+ CheckListItem *checkItem = (CheckListItem*)item;
+ if (!checkItem->isOn())
+ continue;
+
+ bool r = checkItem->verify();
+ checkItem->setCritical(!r);
+ if (result) result = r;
+ }
+ return result;
+}
+
+bool SetupWizardImpl::verifyConfig()
+{
+ bool result = true;
+#if !defined(EVAL) && !defined(EDU) && !defined(NON_COMMERCIAL)
+ result = verifyHelper(configPage->configList, result);
+ result = verifyHelper(configPage->advancedList, result);
+#endif
+ return result;
+}
diff --git a/util/install/win/shell.cpp b/util/install/win/shell.cpp
new file mode 100644
index 0000000000..b1303a787a
--- /dev/null
+++ b/util/install/win/shell.cpp
@@ -0,0 +1,472 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "shell.h"
+#include "environment.h"
+#include "dialogs/folderdlgimpl.h"
+#include <qnamespace.h>
+#include <qdir.h>
+#include <qlibrary.h>
+#if defined(Q_OS_WIN32)
+#include <windows.h>
+#include <shlobj.h>
+#else
+#include <sys/param.h>
+#include <sys/mount.h>
+#endif
+
+static const char* folder_closed_xpm[]={
+ "16 16 9 1",
+ "g c #808080",
+ "b c #c0c000",
+ "e c #c0c0c0",
+ "# c #000000",
+ "c c #ffff00",
+ ". c None",
+ "a c #585858",
+ "f c #a0a0a4",
+ "d c #ffffff",
+ "..###...........",
+ ".#abc##.........",
+ ".#daabc#####....",
+ ".#ddeaabbccc#...",
+ ".#dedeeabbbba...",
+ ".#edeeeeaaaab#..",
+ ".#deeeeeeefe#ba.",
+ ".#eeeeeeefef#ba.",
+ ".#eeeeeefeff#ba.",
+ ".#eeeeefefff#ba.",
+ ".##geefeffff#ba.",
+ "...##gefffff#ba.",
+ ".....##fffff#ba.",
+ ".......##fff#b##",
+ ".........##f#b##",
+ "...........####."
+};
+
+static const char* folder_open_xpm[]={
+ "16 16 11 1",
+ "# c #000000",
+ "g c #c0c0c0",
+ "e c #303030",
+ "a c #ffa858",
+ "b c #808080",
+ "d c #a0a0a4",
+ "f c #585858",
+ "c c #ffdca8",
+ "h c #dcdcdc",
+ "i c #ffffff",
+ ". c None",
+ "....#ab##.......",
+ "....###.........",
+ "....#acab####...",
+ "###.#acccccca#..",
+ "#ddefaaaccccca#.",
+ "#bdddbaaaacccab#",
+ ".eddddbbaaaacab#",
+ ".#bddggdbbaaaab#",
+ "..edgdggggbbaab#",
+ "..#bgggghghdaab#",
+ "...ebhggghicfab#",
+ "....#edhhiiidab#",
+ "......#egiiicfb#",
+ "........#egiibb#",
+ "..........#egib#",
+ "............#ee#"
+};
+
+static const char* file_xpm []={
+ "16 16 7 1",
+ "# c #000000",
+ "b c #ffffff",
+ "e c #000000",
+ "d c #404000",
+ "c c #c0c000",
+ "a c #ffffc0",
+ ". c None",
+ "................",
+ ".........#......",
+ "......#.#a##....",
+ ".....#b#bbba##..",
+ "....#b#bbbabbb#.",
+ "...#b#bba##bb#..",
+ "..#b#abb#bb##...",
+ ".#a#aab#bbbab##.",
+ "#a#aaa#bcbbbbbb#",
+ "#ccdc#bcbbcbbb#.",
+ ".##c#bcbbcabb#..",
+ "...#acbacbbbe...",
+ "..#aaaacaba#....",
+ "...##aaaaa#.....",
+ ".....##aa#......",
+ ".......##......."
+};
+
+static const char* info_xpm[] = {
+ "16 16 6 1",
+ "# c #0000ff",
+ "a c #6868ff",
+ "b c #d0d0ff",
+ "c c #ffffff",
+ "- c #000000",
+ ". c none",
+ ".....------.....",
+ "...--######--...",
+ "..-###acca###-..",
+ ".-####cccc####-.",
+ ".-####acca####-.",
+ "-##############-",
+ "-######bcc#####-",
+ "-####ccccc#####-",
+ "-#####cccc#####-",
+ "-#####cccc#####-",
+ "-#####cccc#####-",
+ ".-####cccc####-.",
+ ".-###cccccc###-.",
+ "..-##########-..",
+ "...--#######-...",
+ ".....------....."
+};
+
+static QPixmap* closedImage = NULL;
+static QPixmap* openImage = NULL;
+static QPixmap* fileImage = NULL;
+static QPixmap* infoImage = NULL;
+
+#if defined(Q_OS_WIN32)
+typedef BOOL (WINAPI *PtrSHGetPathFromIDListW)(LPITEMIDLIST,LPWSTR);
+static PtrSHGetPathFromIDListW ptrSHGetPathFromIDListW = 0;
+
+static void resolveLibs()
+{
+ static bool triedResolve = false;
+
+ if ( !triedResolve ) {
+ triedResolve = true;
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ QLibrary lib("shell32");
+ lib.setAutoUnload( false );
+ ptrSHGetPathFromIDListW = (PtrSHGetPathFromIDListW) lib.resolve( "SHGetPathFromIDListW" );
+ }
+ }
+}
+#endif
+
+WinShell::WinShell()
+{
+#if defined(Q_OS_WIN32)
+ HRESULT hr;
+ LPITEMIDLIST item;
+#endif
+
+ localProgramsFolderName.clear();
+ commonProgramsFolderName.clear();
+ windowsFolderName.clear();
+
+#if defined(Q_OS_WIN32)
+ resolveLibs();
+ if( ptrSHGetPathFromIDListW && int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ ushort buffer[MAX_PATH];
+ if( SUCCEEDED( hr = SHGetSpecialFolderLocation( NULL, CSIDL_PROGRAMS, &item ) ) ) {
+ if( ptrSHGetPathFromIDListW( item, (wchar_t*) buffer ) ) {
+ localProgramsFolderName = QString::fromUcs2( buffer );
+ if( SUCCEEDED( hr = SHGetSpecialFolderLocation( NULL, CSIDL_COMMON_PROGRAMS, &item ) ) ) {
+ if( ptrSHGetPathFromIDListW( item, (wchar_t*) buffer ) )
+ commonProgramsFolderName = QString::fromUcs2( buffer );
+ else
+ qDebug( "Could not get name of common programs folder" );
+ }
+ else
+ qDebug( "Could not get common programs folder location" );
+
+ if( GetWindowsDirectoryW( (wchar_t*) buffer, MAX_PATH ) )
+ windowsFolderName = QString::fromUcs2( buffer );
+ else
+ qDebug( "Could not get Windows directory" );
+ }
+ else
+ qDebug( "Could not get name of programs folder" );
+ }
+ else
+ qDebug( "Could not get programs folder location" );
+ }
+ else {
+ QByteArray buffer( MAX_PATH );
+ if( SUCCEEDED( hr = SHGetSpecialFolderLocation( NULL, CSIDL_PROGRAMS, &item ) ) ) {
+ if( SHGetPathFromIDListA( item, buffer.data() ) ) {
+ localProgramsFolderName = buffer.data();
+ commonProgramsFolderName = buffer.data();
+ }
+ else
+ qDebug( "Could not get name of programs folder" );
+ }
+ else
+ qDebug( "Could not get programs folder location" );
+ }
+#endif
+
+ closedImage = new QPixmap( folder_closed_xpm );
+ openImage = new QPixmap( folder_open_xpm );
+ fileImage = new QPixmap( file_xpm );
+ infoImage = new QPixmap( info_xpm );
+}
+
+WinShell::~WinShell()
+{
+}
+
+QString WinShell::selectFolder( QString folderName, bool common )
+{
+ QStringList folders;
+ FolderDlgImpl dlg;
+
+ if( common )
+ dlg.setup( commonProgramsFolderName, folderName );
+ else
+ dlg.setup( localProgramsFolderName, folderName );
+
+ if( dlg.exec() ) {
+ return dlg.getFolderName();
+ }
+ else
+ return folderName;
+}
+
+QString WinShell::createFolder( QString folderName, bool common )
+{
+ QDir folderDir;
+ QString folderPath;
+
+ if( common )
+ folderPath = commonProgramsFolderName + QString( "\\" ) + folderName;
+ else
+ folderPath = localProgramsFolderName + QString( "\\" ) + folderName;
+
+ folderDir.setPath( folderPath );
+
+ if( !folderDir.exists( folderPath ) )
+ if( !createDir( folderPath ) )
+ return QString();
+
+ return folderPath;
+}
+
+
+#if defined(Q_OS_WIN32)
+HRESULT WinShell::createShortcut( QString folderName, bool, QString shortcutName, QString target, QString description, QString arguments, QString wrkDir )
+{
+ IPersistFile* linkFile;
+ HRESULT hr;
+
+ // Add .lnk to shortcut name if needed
+ if( shortcutName.right( 4 ) != ".lnk" )
+ shortcutName += ".lnk";
+
+ folderName = QEnvironment::getFSFileName( folderName );
+ if( int( qWinVersion() ) & int( Qt::WV_NT_based ) ) {
+ IShellLinkW* link;
+ if( SUCCEEDED( hr = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (void**)&link ) ) ) {
+ if( SUCCEEDED( hr = link->QueryInterface( IID_IPersistFile, (void**)&linkFile ) ) ) {
+ link->SetPath( (const wchar_t*) target.ucs2() );
+ QString _wrkDir = wrkDir;
+ if( !_wrkDir.length() ) {
+ _wrkDir = QDir::toNativeSeparators( target );
+ // remove the filename
+ int pos = _wrkDir.findRev( '\\' );
+ if ( pos > 0 )
+ _wrkDir = _wrkDir.left( pos );
+ else
+ _wrkDir = "";
+ }
+
+ link->SetWorkingDirectory( (const wchar_t*) _wrkDir.ucs2() );
+ if( description.length() )
+ link->SetDescription( (const wchar_t*) description.ucs2() );
+ if( arguments.length() )
+ link->SetArguments( (const wchar_t*) arguments.ucs2() );
+
+ hr = linkFile->Save( (const wchar_t*) QString( folderName + QString( "\\" ) + shortcutName ).ucs2(), false );
+
+ linkFile->Release();
+ }
+ else
+ qDebug( "Could not get link file interface" );
+
+ link->Release();
+ }
+ else
+ qDebug( "Could not instantiate link object" );
+ }
+ else {
+ IShellLinkA* link;
+ if( SUCCEEDED( hr = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkA, (void**)&link ) ) ) {
+ if( SUCCEEDED( hr = link->QueryInterface( IID_IPersistFile, (void**)&linkFile ) ) ) {
+ link->SetPath( target.local8Bit().data() );
+ QString wrkDir = QDir::toNativeSeparators( target );
+
+ // remove the filename
+ int pos = wrkDir.findRev( '\\' );
+ if ( pos > 0 )
+ wrkDir = wrkDir.left( pos );
+ else
+ wrkDir = "";
+
+ link->SetWorkingDirectory( wrkDir );
+ if( description.length() )
+ link->SetDescription( description.local8Bit() );
+ if( arguments.length() )
+ link->SetArguments( arguments.local8Bit() );
+
+ hr = linkFile->Save( (const wchar_t*) QString( folderName + QString( "\\" ) + shortcutName ).ucs2(), false );
+
+ linkFile->Release();
+ }
+ else
+ qDebug( "Could not get link file interface" );
+
+ link->Release();
+ }
+ else
+ qDebug( "Could not instantiate link object" );
+ }
+
+ return hr;
+}
+#endif
+
+#if defined(Q_OS_WIN32)
+void WinShell::createInternetShortcut( QString folderName, bool, QString shortcutName, QString url )
+{
+ // Add .url to shortcut name if needed
+ if( shortcutName.right( 4 ) != ".url" )
+ shortcutName += ".url";
+
+ // ### maybe we should use some Microsoft API instead (IShellLink, e.g.)?
+ QDir dir( folderName );
+ QFile f( dir.filePath( shortcutName ) );
+ if ( f.open( IO_WriteOnly | IO_Translate ) ) {
+ QTextStream ts( &f );
+ ts << "[InternetShortcut]" << endl
+ << "URL=" << url;
+ }
+}
+#endif
+
+bool WinShell::createDir( QString fullPath )
+{
+ QStringList hierarchy = QStringList::split( QString( "\\" ), fullPath );
+ QString pathComponent, tmpPath;
+ QDir dirTmp;
+ bool success;
+
+ for( QStringList::Iterator it = hierarchy.begin(); it != hierarchy.end(); ++it ) {
+ pathComponent = *it + "\\";
+ tmpPath += pathComponent;
+ success = dirTmp.mkdir( tmpPath );
+ }
+ return success;
+}
+
+QPixmap* WinShell::getClosedFolderImage()
+{
+ return closedImage;
+}
+
+QPixmap* WinShell::getOpenFolderImage()
+{
+ return openImage;
+}
+
+QPixmap* WinShell::getFileImage()
+{
+ return fileImage;
+}
+
+QPixmap* WinShell::getInfoImage()
+{
+ return infoImage;
+}
+
+#if defined(Q_OS_WIN32)
+QString WinShell::OLESTR2QString( LPOLESTR str )
+{
+ QString tmp;
+
+ for( int i = 0; str[ i ]; i++ )
+ tmp += QChar( str[ i ] );
+
+ return tmp;
+}
+#endif
+
+/*!
+ Returns the free space for the directory. The space is returned in bytes,
+ and should only be considered valid for this particular directory.
+*/
+#if defined(Q_OS_WIN32)
+ULARGE_INTEGER WinShell::dirFreeSpace( QString dirPath )
+{
+ QString drive = dirPath.left( dirPath.find( '\\' ) );
+ ULARGE_INTEGER freeSpace;
+
+ freeSpace.QuadPart = 0;
+
+ if( GetProcAddress( GetModuleHandleA( "kernel32.dll" ), "GetDiskFreeSpaceExA" ) ) {
+ ULARGE_INTEGER ulBytesAvailable, ulBytesTotal;
+ if( GetDiskFreeSpaceExA( drive.local8Bit(), &ulBytesAvailable, &ulBytesTotal, NULL ) )
+ freeSpace = ulBytesAvailable;
+ }
+ else if( GetProcAddress( GetModuleHandleA( "kernel32.dll" ), "GetDiskFreeSpaceA" ) ) {
+ DWORD dwSPC, dwBPS, dwClusters, dwTotalClusters;
+ if( GetDiskFreeSpaceA( drive.local8Bit(), &dwSPC, &dwBPS, &dwClusters, &dwTotalClusters ) )
+ freeSpace.QuadPart = dwSPC * dwBPS * dwClusters;
+ }
+ return freeSpace;
+}
+#elif defined(Q_OS_MAC)
+long WinShell::dirFreeSpace( QString dirPath )
+{
+ struct statfs buf;
+ if (statfs( dirPath.local8Bit(), &buf ) != -1)
+ return buf.f_bavail * buf.f_bsize;
+ return 0;
+}
+#endif
+
diff --git a/util/install/win/shell.h b/util/install/win/shell.h
new file mode 100644
index 0000000000..4d5f9af36e
--- /dev/null
+++ b/util/install/win/shell.h
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef SHELL_H
+#define SHELL_H
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qpixmap.h>
+#if defined(Q_OS_WIN32)
+#include <windows.h>
+#include <shlobj.h>
+#endif
+
+class WinShell
+{
+public:
+ WinShell();
+ ~WinShell();
+
+private:
+ bool createDir( QString fullPath );
+#if defined(Q_OS_WIN32)
+ QString OLESTR2QString( LPOLESTR str );
+#endif
+public:
+ QString localProgramsFolderName;
+ QString commonProgramsFolderName;
+ QString windowsFolderName;
+ QString selectFolder( QString folderName, bool common );
+
+ QString createFolder( QString folderName, bool common );
+
+#if defined(Q_OS_WIN32)
+ HRESULT createShortcut( QString folderName, bool common, QString shortcutName, QString target, QString description = QString(), QString arguments = QString(), QString wrkDir = QString() );
+ void createInternetShortcut( QString folderName, bool common, QString shortcutName, QString url );
+#endif
+
+ static QPixmap* getOpenFolderImage();
+ static QPixmap* getClosedFolderImage();
+ static QPixmap* getFileImage();
+ static QPixmap* getInfoImage();
+#if defined(Q_OS_WIN32)
+ static ULARGE_INTEGER dirFreeSpace( QString dirPath );
+#elif defined(Q_OS_MAC)
+ static long dirFreeSpace( QString dirPath );
+#endif
+};
+
+#endif
diff --git a/util/install/win/uninstaller/quninstall.pro b/util/install/win/uninstaller/quninstall.pro
new file mode 100644
index 0000000000..c64e8d212a
--- /dev/null
+++ b/util/install/win/uninstaller/quninstall.pro
@@ -0,0 +1,7 @@
+TEMPLATE = app
+CONFIG += qt
+HEADERS = ../environment.h uninstallimpl.h
+SOURCES = uninstaller.cpp ../environment.cpp uninstallimpl.cpp
+INTERFACES = uninstall.ui
+TARGET = quninstall
+DESTDIR = ../../../../dist/win/bin
diff --git a/util/install/win/uninstaller/uninstall.ui b/util/install/win/uninstaller/uninstall.ui
new file mode 100644
index 0000000000..88f27a7ea2
--- /dev/null
+++ b/util/install/win/uninstaller/uninstall.ui
@@ -0,0 +1,167 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>UninstallDlg</class>
+<widget class="QDialog">
+ <property name="name">
+ <cstring>UninstallDlg</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>527</width>
+ <height>365</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>Uninstalling Qt</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel" row="0" column="0" rowspan="2" colspan="1">
+ <property name="name">
+ <cstring>sideBar</cstring>
+ </property>
+ <property name="pixmap">
+ <pixmap>image0</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>false</bool>
+ </property>
+ <property name="alignment">
+ <set>AlignTop</set>
+ </property>
+ </widget>
+ <widget class="QGroupBox" row="0" column="1">
+ <property name="name">
+ <cstring>progressBox</cstring>
+ </property>
+ <property name="title">
+ <string>Uninstallation progress</string>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QTextView">
+ <property name="name">
+ <cstring>filesDisplay</cstring>
+ </property>
+ <property name="font">
+ <font>
+ <family>Courier</family>
+ </font>
+ </property>
+ <property name="wordWrap">
+ <enum>NoWrap</enum>
+ </property>
+ </widget>
+ </vbox>
+ </widget>
+ <widget class="QLayoutWidget" row="1" column="1">
+ <property name="name">
+ <cstring>layout2</cstring>
+ </property>
+ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer1</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>90</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>cleanRegButton</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Clean Registry</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>okButton</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>OK</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>Spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>100</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </grid>
+</widget>
+<images>
+ <image name="image0">
+ <data format="XPM.GZ" length="26835">789ced5c595323bb927e3fbfa2e3e8edc6842ed8982526e601b0318bd97726e62125956df0868d59cc8df9ef93ca452e6f34f4e1ccf4c37405747fae2a293fe5a24c49ee7ffee3c7cdc9e18f7ffcf38fa7210ceffd0fdf84c18f7f84e74e67f49ffff51ffffae3cfe5a5a51ff1a7b8b1f1a3f0e7bffdf1a7811ffe8759a23f842b09af13be51bcccf78de015797e27617efe5ab13c6f05afcbf3eb09d3f3f0a0989ff7cd84f9fea360cfef879030dfef335e16f9bd172cf2c125e1f524ef6dc22cef9a62e9ff30616eff4ab0ca5f4d98efaf2a96f7af13e6fb15c122bfbf4f98fbbf532ce355669cf81c27cced9d28e6f68d132cfcec86609117b6044bff8efac7d6a43f7fc358fb0be78af9beeb09d6f1eb0bd6f1180896f6cd2ae382b467af04cbfb595bb0bcef6b84d7f579680896e7c32061e26b2f056bffbb82d53e2e222e2cebfbb02158c7635bb03c6faf1917d5febd6079df497b45ed8fdfdfd0e7c36dc2ac9f4cb0eae342b0f67f2c58ede18d319a1ff747fe541cf7772258f5779430f75767acefdb9b84d93eae0497e4fd52c2743ff4148bbedf046fc8f3649fc5241f5c0bd6f61e12e6fe1e15737b765db0b4679e12e6e797040791ff3c61baef8b8ab9bdb0c1b824fd7b8a072b056dcfef0a96f6fc4ac2ccf75531b707cf8c4bcacf254ccfbb8162f14fe92ff55f4a989fbf51cccf674dc1c2dfde26cccf9f12067d1e7604ebfd57c5c27f59b0f07119e35591cf913d940aa5c0f1213c292e6c90bc7b8c57d53e8e158bbece048b3ce12061eeef50716199da7b16acfadd502cf25c0ad6f1e7f651de22bdefac60b59f9262894f2058ed654bb1c8e7046bfb7a5ff4ebd37d89c79b8a597e77ce784dc7634fb1c8ff9e30bf7fa498df0f6b82d51eb61366794031bfefc9de578bab1b45d6c750b0c8e7cf14cbf8de2ae6f10a59c2f47e28325679a19530b7b7af58f8ae254cefc3bd60912f5414f3f3504a98fb6b286679b28e60d1bfdf51ccedd953c5dc5ea6f2a93ec85f565deaff5eb18c6f2b61eebfad58fad7e7c51e7c3b61e67fa958c6f324616acf6482351e0c1266f9de15cbfbdd84599e3ae3f582f0bd532ccfaf27ccfd51bc5d2beafb6e55b1e8b7c038bd6f13e6f79705aff27dbb9630cb73ad98db83a66090fb778aa5bf15c199d8073fefd2f325c5d25e59b03c6f2e13667b0a8ac5bf1f196fc8f86446b1f02b24ccef8f14f3fbf644b0f009f23e1464fe23fb5a5f49efbf28e6e7fd51c274df2e0996f18243c5624f8d84d93fdf05cb78002816796cc23c5ebb82753cf719abbc7ea458f8937daffbf4fe9260194fbbaa58ee737b1e94af572c7cb384f9f9a160b58fae62d1e75bc26c8f34be1b2bda7e962996f1a80b96f7dd71c22ccfabe215aa2fc263c240f6a2efeb78d6144bff4131bfef5612a6f7dd48b08ecfb26296c79c26ccf755be4cda1b32760589572f8a25de541366be65c5a2ef31e6f6453eb72af9d046c2acef55c532de5630c87c799830c7bf9162997f760567d2de9d62c947683edbf03a7efe5cb1f07d4a98c60f2e04cbf89815c5fc7cc6e3ef95af394a989fef2a16fd5e264cedfb8660198ff09230cb7fa058e66f9f30c707ab58e2db96628907db09b33cfb8a459ee384499e50535ce27af741b08eff5bc21cbf1f154b3e344c98e5bf502cfedb4f98ed6153b1f8632f61bedf129c493ed84b98fbd7f115fdda4ec29c9f14154b7c394898fd27bd2fe3c5f6e57d51fa6b24ccfdd5154b7fed8439dfeb2816ffd84e98f948ff7e4dc6f33e6196f755b1d86b53b093f84df90d94923ddd24ccf6baa698f517fa82355e9d29e6f7cd30618e17d78af97d58162cfa74a058f479a558f455562cfeb49930dbfb4031b7ef2a82459f50502cfeec12e6feb57dd127ec25ccf1f149b1e8f33d6196afa498e5f3a97fe19ffa17f99e19277b6826ccf610148b3db884f9fe9362f1cfd784599e37c5226f2161e673a098e5b535c1623f1612a6fe4e878a451e9330cbd3572ce3b79f30dbc78b62f1c76ac23c1fea7838e97f9030b7ef154bff59c27c5ffb73e28f7b09733c5e532cfdeb78d5a5bfe784d95f54debad8cb56c21c7f78fc83eadf9f2ae6f1846ac26c9f5b8a59ff9eed37a8fe602961d6cf9d6289ffe709b37e2b8ac5df2e12667b2b2a167b6b0b16fd413161f68f8e62c927d3f3228ff62ffab3a384f9be512cfc571266fe0f8a85bff627fa75278a45bff709b37e5f14cb78f512e6f1d8532cf2ed26ccf3d3b362b1f79d8479bcd6154b7cea0a16fbf08f09b37db4148bbc0f09f3fd9a62f1cfa384595e1dffbae46fd58459de03c5920fb0ff8720f1c12d2996f8b5ad58e687a384d9ff68be7125d58f3709f3fcbcaa58f4b3ac78d5d1fd75c132deaea558f2b1f78459fe8e62b18776c23cde5eb1cc27cd84e97e0682653c61a858f4aff2c8f89946c2dcff9962d17735616ebfae58fadf4b98e5bb659cc6b7af58eabf9162d15f2d611e9f65c5325f5d25cce3fd2658fc2bec2816f90b8ae579b22f17923e3a8ad78a844f05bb35ba0fbb8295df49c2cc9fc73fa83c70a658f4bf9130f77f2558ec276c26ccf70f154b7e47f6e05715670f8245dfa7c3bfefb226ff6fbe1206bdbea7afbf9bcb873c7f3b2e6389f2d7d7defbbdb94c4a19fffe2e89ff4e2e3f67b7f0b9e83d2eef51bf1f9769361f3c67be8fc9ff0e97cf58e1efcbe56bec7e372ed6d3ef803f99cdf0771d2f379e51d49a6cc0cf3dfe3408d51167bf1717dbb40dbc82c857174ef77865c22590dc863ee57f33e7f05d4cbe878b7dd091c6bf513fc42b5a4f64d8b22d7a263047d154db76f0a74bd7b7b1f9361b6b3213e2a29ed0144ebda83389c01dfb88bf9dede365488b8ddf870bca1a251e208f28355eb97b461844cf89d23f219721fe76a88ff86c7ceff9b79af7077479b224635f50d627fb6adfec08af77bb89d796ddc6ab6c2b76c756f1d35dbb67f7f1598fef1dfc665c6af610ff756f8f50c6114a7c6c4feca93db3e7f6c25eda2bba2eedb5bdc14f6eed9d5db2cbb6608bf87cb02bdfc3e4735c16cd03b939a28136f3842c4a76d5aed975947a038dcbd08f31902e439f59e38c37c164a66e47a64136e7c62dfe7d5c62eba6893ff78464c6c088da340f76605af8bb6bdaa663baa6671e4ddfe4ffc082cb08ab8179b2a766689e519f6df49f8179c17189712e4687f849dd3e7c3717bceecdab796526e60d6de3017b5ab1c18cccbbd9345b66db9449fa8a5cf359e8dd1d53256c91fdaed933fbe600a5c788877d64e44b6deca7763a34877f0797a9cf7b18938aa88f23736c4e8407a08c1f311973613e207ca2cded99537386fa79b45d8aef4d9a6f8d7dfc3e2e910deae45e6c2c5a345a16feab63cecd85b93457288bdacdce420e7936d7e6062f66738bfab9a3b79d5932cb76db144c112d4bfd9074f37d5c50cfaf631de175883a79428dac989259257d5c9bb54ff198af9fc86c9dc66260363006eedabef4e52503fa543efa152ed44acd0258fb82e200b8e4213acef33d7e9ed5ed4c71b9a127908dbd006f0b6684f6d520368dcfe6d65f995f948b7d4261026424355bd6acacd3e39e8f0855bc7684d10ebd0de91e4637a8e30cf46e62bed68833d7dfc605305a8eec1d348409cbcd32cdf298c479a620acc6ade4e23564d0b465d3c63ebf990bc5e1a8e926c6e2275b817b7b99fa372411244b1beb607a36512daec3c384eceb53fae4c8368016b4a1631ea01b638048d28b59c25fe3821cc0b46c0f7ad8cd9d30614de4b513795ce335b69647bcfa6695b31894af9f63b54eefb39759c910d48bf0137b0d037882a191b99233f158612c92f3937a0914f19d39473f6924bb998cb3636d187844b93378c6b17d81579c81f6f1eac21b8ce01d368d872d923d8ec7383aabff2832b00d65d3414b88594686b3f3540d3a6d6f9fe2d2c339be8133e3ae5d128fbf9e60b233c1a38223ba831caab08b71fb1cf630677e857d9c0563de398203a8c1211cc13132c6c7e184343a393215eac5e233a77046f99ae64e58d1fd152e1883bbd6c1395cc0738ac131285fc2a530d9812bd6075cc30ddcda77b8832558b68f508022e6cf5c6dc68aa58bd21c9906acc02b94306fde9016d76035c727d91db6b786d583c36ca013ab37bcee7f9d0be5f42bb06e2eec19ce27b9a8434c40626a1cc50d4c778d1d3970b1fa8a36d1c46b1c7d6a78c54a07301b2dda5de75d7099ccb69022a17a21406cb7ecea186d7a54c3f5a9aa7b99643266f3192e3163710dd7a45e351ae5628fbb8f4cdc03bcd88a6bd9e0dae38b183562fea31534e7429841765cc7beb9ae3d866bd74b3151a322a47efaeed1ee219b2155a59db4a2b390cbfc3827cfb65c1fedab2e79faa45d9304f0e806ee09da76e886f4fc336924c895f25264508fb646ccf8efccbd9815f74abe63a83dcea04dcab98d7b7358e5a0263be437d98c7c135ca62d0f7b7aa0d5141fad020a98d51f4b5fe319f136f61475027df7ee36cd798c38d33dc41acbdcdb81dbc2485427ddc4567beac7b6e1b63132acb8776403e4339319048fd6b1adbab2abd07a889f9275ca5fe6cda6d4a7c759b78995d6a6db99885e791b2b9b3d3772558c545df6ef311f696980ad34a256dc2e3eb3eff6dcbe3b7035db41dbddc2cfeaf6d59cba43f2c6e90c957a7447ee18ce5dc53dbb13f5405d3f9cf5fd692e512bf89eb72ddb8536565a65b2e44a9a1d53ede14edd1946eb23b29eb13ef2baf1d1e7b0b55e8c86b6e4cedd85bbb4658c4f435a8b69d8babb72d7ee862cd8cce1d2335bb612e389bb8dda1119a7d6d5e771a19991b8c4bf016739ac19c7d589915c9066007707afb680d6554f2b4b7e0e97815bc2df1db7ec0af694d6020670e48a587be13c8e36e863beea565c89e65998b90c4ab082e3e030be371745a9b95ceae358807adc75ab512b3c83249fa7fc1e67e65317d71e7aa293c3b4129bcf0407a8dd1eb5b4e9d6900979b6dd4036eb68391bf8ce3356db43388391e44733191d3ce22099983b2f8eb8f3b990a7504687b1b0e41e482bf9e842f334b60f18abcb927946af68e98aea049798eb764cc315bdc3ead1c4bc05f34be33d66a965f782b3cd7dacefb0af0a3e61139bc405c7d1f86086381a1bd15a66ed6b968be822482dd7b37d38f71945ff9d892c728dc6aaeeebb0ee1b1421984b8357c3a7b99c4629cedc1aadd2ecf8267259f5f7d842c39efa07f49b3aaf7aba1abcd98b592e64dd03dfc2ececf1e75cf29a49b27471a40ad09c8ac540d930c62fdf76719db8e63bc2a541ab0d7569ad46751bb588ba2bfb2ee52beb390b224bf3ce791be71d6cc3d47ccfdba499299f895606058d6193f178924bce4732f1e410ab15bb4e5cf2b912fd1b33c85b8cf96d9c1761721c38eff18fc40545432b2f430b7532ae4fc6d50fd271efb6644698f51d5aeffb7e60af932de73583f5266671059a63781eceb15ac8c5c4bc23fe1b73dc636a79ba468cd9d78e7f722ecf25f95b13a53ac08b2201ce1d177e680624dd0d6998ffac4b1566ec957ff62ff625b680b35419b3ecc789fc42ac0c2539c248f6352e7564136533c8e5842c23af15cecf0798d5df59e432e1191ab70efc2b45af3aeaa4847e32c8555a9c3bdae47b7189fccd8f6c912478c1faeb0533bf692ed827dae3bbdf642e7979177121a61db432e2825e799a7a555fb9a178bcedb76029e691b35cd0ba0e69a6e9da2266ffef34cf82bfcf79b4b6c9bc56fdb62fbb3249807a749b5825cdd10b0ef000e798e698cb22dfcf718933127319619e6f66b8c4569f6117eb93c8a539473387942f9cfb8adfc11a723a1bd55c987e63cdf38e1e5fb5d1b6c13cd8bef37e773a17e7c8e9b19a438f69ce9f2fe772c17a876cdda0e79fcfd14b9c59f6a1ed0f629b5098994f6256d2715564e290c958aaea4c9c35bee687b68439fd3e56270fb427d8c76a744ff492bcd41f92069750a238677c854b866dc6d5a37789f6d35c2afe08abdf3842017f4fed38e2db9477d9d3c8c41f27265593d750b4bb9a3f3117d08bb500e76d3886680de831e5296f21cbb617fef4ab5cf087b8f85e6ef548b950b58715ee1356bf8099deccde2946f2375b82f71835fcf18cb568348eda3d33170e682dbc213b7ed163defc39653aa9c214ebc49c09e7a90baa5703658d33be9f8f07c42748ad14b95c4d8d0f676203d3c5f9ed9eaca919eb13ca7a0632c7efa1846b98ade8cad8e42a66bcee62eeeb2ffd55f439aa64d016503b9e6a9b27bb8d3d68ed92e30f0dcc1eca24a7a3e83c91dde7b950d536ced963fbdb73b850e431fb36f65c8bbb326419547fc69d3e57f6a738330ee4f97c362a6bad1eb3067fe36f3d4525df31affe8e6cac473553166d1b7b48fa1b5fbef6552eb46ad2a4597f5b56c326ed1c6737b38fde4a5a20ff68989669d17acd9e3b8396afcd5421f919ea9a3c6ec92f9b4e8c1f51bba4939e39a4117cb225e132a5196c17ed81463a71996f63b19e652e34ef13177b39870b604f2835ad5c7baec089bfc3aa7c1fbd39669096e693d93a91dbd8211bdb47de7bf63166c9a8df17b2af9e6dc7b97f3e171cd92e2c7dc425f98ae694bc9a15b9948d9fcba58ff9ec1ef6cb5c62dd1e57be767d45ea135d1f9a8c5dd3ad386841d58e5027713e8a7b95b1e73eec432dd9e824976d64cf5ccc4fe6fddc7d64e2ec93b9b03773a290813ec4bdfb5eb4b1681d58b33bb71ce713ca5676644556198ded6b1cd3382b1bf87d8c137bb4e3daa295278c0438c716a03f6399f1ed13cc09f6347e7d860bb61bada66b3b381f1693f7e6e3a9c1883bc2e706317b4349ea581f16a12459fde4eaf26495388eb13b340bf7fd99ddc2da621f47a6c5f9821df91dcad8c66fc93abc5f714517a3f657b8dca3e520175bf5a539352b5601b00907685903b4f506feecdb12fac94098e47763e654bc546d4b4484b8dbb9ec57fd9a6d4bef31db38a33a769a0be6e638ba179c214f3359646314f3a3778dfc3a6513158e3e867328e482f9f729f468ed0be328f41ccf6ed7fe7ac2c6c5c66095b2b87ced32b12b00f77e036b65ac196d0b3a18d3b74d7eb7ad223fb430825e1ce631c9d7c853fe1253f1981d16bc97fa85d7c36505db6e046b77a586ac07e32ec862388baeca1ca9bab9a3dfb713316d3ce3c4bd968d0058b79cd3999f57ff2e33a572d9911f0760474ea3ed4fb8089b40d598b1bd1851a816d35d09b59db84f74845e5b8e953ace8f0781bdfe5ab8b2eda4f8eb6f40a59a7792816a65cc272fcc79f080d970b285c425ae5ea02438ba792e9355ff78dd32c7a54e3b3731bfecdb8209c976930c013f83637835cfe85371a5aee62bc8cda177de8b4759d105c5de90858c6ae4f1a84c44465ac7d8827b3374de0cc9c2c69625f6859f05da594a6b563c23cece95e2757a263272f174f66837d48d31d3e729e2483d864668ba0e9d5979c47cf001eb80be548cb9fac494c3bdbb0e0fa145eb49f35625a4d2c416dba1e34f2447ce5b24a9ce64a6813d8dcf4cb80fb938e16288cb01d6dfbdd095550765531564422f3cba17591b1cba65b70ef7b4bf9cab1931ab3f0b7dcce2dbee0ce792c1148bf1dc110712c2203c996d33b32f12239faf852156076fb2a6c435e34fb968c61c9e914dd756cc13594c75c263aea3ffbbcc75e94cc1033ef74875e4258dbe445168f813a8622edc0c2fb0075564d39f5b01ac139f9b5c9c9bcaf671705f6dc5391b7ce7335c267dc9367ccc2d56dc55e0f520e5c2b6738dd189727fd80f6f9855229f30827358c15af2912d8deb139ea7d1f71ec3bb2be227d367cad4ce62a45ccb696aacb5e87565bf1f36dd068e5a3355b1661197e90897f83d61deb04d5e2d71992c425794eb66c5be9957136b9903f49d57f41b17d751ec15d6f157710e42e1b12e88b5a35f3347762db706336b6bf36dd0982b8ca87b719e10d9682551e3d5ec5c39ffc24cab1178cfe246b9a0fd5634db75a7e6226cdb36fa57b4c93ad6352577e9dfdca5dd76555a9fad637dd2c0bf0fd11ef7423954c6b5b3c4bdc96b5a6fd17de3690f8763a52bbcc265d1fad8222e582776692ffc36ed5d731c208b404b7250735718bf57ec8169d910764235ecfa327a7cdc5fea51ce1635d742a6fbbe1af6bca319787ef59ce724cce038ecbb3e8d869fb49a4539cc022ec139ac998654f3e6aac3fcbc1d0e420d87af432bb787e60df3b322f2883ba571353766f21e3350debb6863b65272716eb733ab60f3195918d85d6ca386d1a8c12bf7f9959fcf7389b52b2c99158c66d32710d9ce622470eec6ad844388b514d52274923c9e637c88a7e87844cd4bccdeb0bdb82fbc82f19b56fd930fceea43d1921b8523db0acf188d7a93fb3b5fd40bf80e143063b6a93e9aae2beea2a59927ac692a389bbd9ceaf96bde278b3bfa8714e978cd08fbc7d8fa168e431b6b5e909c75f6d2334c58f741f4fa1a5d1336f62b5c5cc5b542df94d25afdf45e2fcd8bf612fd20b3dbd833ed286335f0403a1aa41d70a0b5aa26ce1217e1249c86b3dcf8cf6a07d984f370112e319e681696fd35bd60ff4d28842bb34911c08ca5cff9afe159c55e846b33c40a64944eb1c4d3ee9eeacf8c90818e7d05136e3063b99dcbc44cfcee873b5ba27dda8c2cb79ee7b2a8de5f74b9b6bd376f387b8fc29239c9d51ff99ec7d114f9986338c4f93e9e5a3ea7d32c2656f1a68d33c42e3e7401876119f80c703aef30e327a94dac6f8efc168e0e674b8df1ac32c9e753beefa018d78da1034fa1202795389b3126bff39776bba00f0d7b01cfa1c867aeecb6efd9edd00d2b98d91fc3b6ecc6c4eb26c76591ad617e019b7e60ce62a4744bb23ae67e89cb13edb3c4b5e3755b0e258aa6e3b596492e12a5f942bb73e863ab66151a98750e481379b9179f63ce5f96779d7d05e75e23fb152ebf2bfa697f09d089395ddc298022d67e9819718501bca6397bce72d2eea7adb06ac6275fa76bb2ea825c2d66775b7ec716ec4bfefb32bf30bf38bfc967745c0596e13cacc23bd0770fa0924e5c4df63d89afa7e49ec7587fcf5d4fa33d3fccf0c29a1dcaded02fc5319adb5e502385b8328b6c8a61dd3f41597633ccbc3a51fc293fa74eea6c71f6b2e0f31825b156dbc8ec787dff97b8c4dd2f172300fe8df39579806178cf0c5c93fd7f7c823f56fe553927fa310bba1bce17446964622fdc23c6423e3bf4933df1455706e60173ac389ff7dcb3ad650e671c97f970e9ea0b6aab8f477ad2fb75a5c9d05c7221df3a99e0819eff68af83b5551cd37a9ecb97e3d8cc7e646ccb95e10973c447f7f65336d30ca6b954e47b3f4bf0162ec3ddc4c95f5af18d7316bc99675a1b7b9895ead7b9d02ec50b7d93ad688b59b067eec8f5a4ef49df9d97edec4c31a281876318b811d6d17b31878ef50dd612c774d7114b0f712fa39b4e5dc3f770a1959718581eed10f6b12e6e6759d8c25830fe0e0c9d8d356bfe70e6b42eafcfc673b3fcc7e25b57c1857dbb8bb9705c2d7d7345d8a49569cb1e1fbfad8039f879acf778de9f94ec2bfe32c988a3017d5faf4f15ca10f38173730e711ff50933dfc9aa645e54d075166b2fc36bace4ecc8c56f89b4688770689efd80d858ca20b63d3a2c32c17e4deb23097fe57b7c5895189a6f0cd999336ff19c3f46b6badbcce2ca4b3d7df76dba7634921338c8b266768fdaa8640f98a539ac0562a555a34c7868776d296b656dd2c921f9499b7aa66f917c2b178e8a3dfd0eae3b89fbc958e33ca17e3ad0861573e4df61e0f7cc12cab20d0d5ff335cc62b6cd895f811d2c63c09d61e6d9809e8ba7a84dace0a8d2e2d34021ee15da42d6c99a188523932e8d6083f2ca6fb0b1f185759527dddcd3faa6c1eae6c4dde22721bc8417db45569829a0558cc0f8535b7667eecc744d17e5afbaa2f358b19ddb5757768ecf06d82e65f371573ceebcd6716c1ae891fd80c510f42876d573f2f7266dfe6bbe3f473319ed686696ce50b35e62ce879c4e520f58f3a0b50cfd054a5dc62abb0d4bc4009ce373e52a91ec30f08e7da073be4b74a2f881b4dfa3bff99bdb916ff6bd5c26753ca969cb67a29ae3d3d6136fcc7c92eecc9cd4fbf9b746ffba8d7dc4843e6f4e5ed3cfce709f7edf8cbf053bf1e94ffe6f8cefe52265cbc4c8d32e2e5f33e7f0e5d23548c5462bad31afefe2323b72935c663e5fc065fe08d87432339757b8f1897065f01d5ce6dbd124978fff97a485d625dafac8fabe32ce5fe1f2c1fab9997dfe6326b2b7bb405f133afa80d157e3d867b87cae8585f7276a11f120c8e3c5ed86e7f0fc9d5ce6c42133fdd4873d4c7d5f624a83dfc8e5e7e3faddd767fb9b1ec9ffcbff7fecbbafffe7f27b5e7ffef7bffff13fdcf4c93e</data>
+ </image>
+</images>
+<connections>
+ <connection>
+ <sender>okButton</sender>
+ <signal>clicked()</signal>
+ <receiver>UninstallDlg</receiver>
+ <slot>accept()</slot>
+ </connection>
+ <connection>
+ <sender>cleanRegButton</sender>
+ <signal>clicked()</signal>
+ <receiver>UninstallDlg</receiver>
+ <slot>cleanRegistry()</slot>
+ </connection>
+</connections>
+<slots>
+ <slot access="protected">init()</slot>
+ <slot access="protected">destroy()</slot>
+ <slot>cleanRegistry()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/util/install/win/uninstaller/uninstaller.cpp b/util/install/win/uninstaller/uninstaller.cpp
new file mode 100644
index 0000000000..9a7c529546
--- /dev/null
+++ b/util/install/win/uninstaller/uninstaller.cpp
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qapplication.h>
+#include <qlabel.h>
+#include <qdir.h>
+#include <qtextview.h>
+#include <qpushbutton.h>
+#include <qmessagebox.h>
+#include "uninstallimpl.h"
+#include "../environment.h"
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+QApplication* app;
+UninstallDlg* progress;
+
+void rmDirRecursive( const QDir &dir )
+{
+ const QFileInfoList* list = dir.entryInfoList( QDir::All | QDir::System | QDir::Hidden );
+ if ( list ) {
+ QFileInfoListIterator it( *list );
+ QFileInfo* fi;
+
+ while( ( fi = it.current() ) ) {
+ if( ( fi->fileName() != "." ) && ( fi->fileName() != ".." ) ){
+ progress->filesDisplay->append( fi->absFilePath() + "\n" );
+ progress->filesDisplay->scrollToBottom();
+ app->processEvents();
+ if( fi->isDir() )
+ rmDirRecursive( QDir(fi->absFilePath()) );
+ else
+ QFile::remove( fi->absFilePath() );
+ }
+ ++it;
+ }
+ }
+ // Remove this dir as well
+ dir.rmdir( dir.absPath() );
+}
+
+int main( int argc, char** argv )
+{
+ app = new QApplication( argc, argv );
+ progress = new UninstallDlgImpl( 0, 0, 0, Qt::WStyle_Customize|Qt::WStyle_NormalBorder|Qt::WStyle_Title);
+
+ if( argc != 4 )
+ qFatal( "Incorrect parameters" );
+
+ if( !QMessageBox::information( 0,
+ QString( "Uninstalling Qt %1" ).arg(argv[3]),
+ QString("Are you sure you want to uninstall Qt %1?\n"
+ "This will remove the directory this version\n"
+ "of Qt was installed to, along with ALL its contents.").arg(argv[3]),
+ "Yes", "No" ) )
+ {
+ progress->setCaption( QString( "Uninstalling Qt " ) + argv[ 3 ] );
+ progress->show();
+
+ app->setMainWidget( progress );
+
+ // Delete the two directories we have written files to during the installation.
+ // The OK button is disabled at this point.
+ // Messages will be processed during the delete process.
+
+ // Check if moc.exe exists, if not this could potentially be a
+ // corrupted registry setting
+
+ if ( QFile::exists( QString( argv[1] ) + QString( "\\bin\\moc.exe" ) ) )
+ rmDirRecursive( QDir(argv[1]) );
+ else
+ QMessageBox::warning( 0, "Uninstalling failed", "Qt could not be uninstalled, you will "
+ "need to remove Qt manually" );
+
+ rmDirRecursive( QDir(argv[2]) );
+
+ progress->okButton->setEnabled( true );
+ progress->cleanRegButton->setEnabled( true );
+ /*
+ ** Just hang around until someone clicks the "OK" button
+ */
+ app->exec();
+#if defined(Q_OS_WIN32)
+ QEnvironment::removeUninstall( QString( "Qt " ) + argv[ 3 ] );
+ QString qtEnv = QEnvironment::getEnv( "QTDIR", QEnvironment::LocalEnv );
+ QString pathEnv = QEnvironment::getEnv( "PATH", QEnvironment::PersistentEnv );
+ if ( qtEnv == QString(argv[1]) )
+ QEnvironment::removeEnv( "QTDIR", QEnvironment::LocalEnv | QEnvironment::PersistentEnv );
+ else
+ qtEnv = argv[1];
+
+ qtEnv.append("\\bin;");
+ pathEnv.replace( qtEnv, "" );
+ QEnvironment::putEnv( "PATH", pathEnv, QEnvironment::PersistentEnv );
+ if( qWinVersion() & Qt::WV_NT_based ) {
+ SendNotifyMessageA( HWND_BROADCAST, WM_WININICHANGE, 0, (LPARAM)"Environment" );
+ SendNotifyMessageA( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 );
+ }
+#endif
+ }
+
+ return 0;
+}
diff --git a/util/install/win/uninstaller/uninstallimpl.cpp b/util/install/win/uninstaller/uninstallimpl.cpp
new file mode 100644
index 0000000000..d30358b7b1
--- /dev/null
+++ b/util/install/win/uninstaller/uninstallimpl.cpp
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "uninstallimpl.h"
+#include <qsettings.h>
+#include <qmessagebox.h>
+
+UninstallDlgImpl::UninstallDlgImpl( QWidget* parent, const char* name, bool modal, WindowFlags f )
+ : UninstallDlg( parent, name, modal, f )
+{
+}
+
+UninstallDlgImpl::~UninstallDlgImpl()
+{
+}
+
+void UninstallDlgImpl::cleanRegistry()
+{
+ cleanRegistryHelper( "/Trolltech/Qt" );
+ cleanRegistryHelper( "/Trolltech/Qt Designer" );
+ cleanRegistryHelper( "/Trolltech/Qt Assistant" );
+ cleanRegistryHelper( "/Trolltech/Qt Linguist" );
+}
+
+void UninstallDlgImpl::cleanRegistryHelper( const QString& key )
+{
+ QSettings settings;
+ QStringList::Iterator it;
+ QStringList keys = settings.subkeyList( key );
+ for ( it = keys.begin(); it != keys.end(); ++it ) {
+ cleanRegistryHelper( key + "/" + *it );
+ }
+ QStringList entries = settings.entryList( key );
+ for ( it = entries.begin(); it != entries.end(); ++it ) {
+ settings.removeEntry( key + "/" + *it );
+ }
+ settings.removeEntry( key + "/." );
+}
diff --git a/util/install/win/uninstaller/uninstallimpl.h b/util/install/win/uninstaller/uninstallimpl.h
new file mode 100644
index 0000000000..b3bff36546
--- /dev/null
+++ b/util/install/win/uninstaller/uninstallimpl.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "uninstall.h"
+
+class UninstallDlgImpl : public UninstallDlg
+{
+ Q_OBJECT
+public:
+ UninstallDlgImpl( QWidget* parent = 0, const char* name = 0, bool modal = false, WindowFlags fl = 0 );
+ ~UninstallDlgImpl();
+public slots:
+ void cleanRegistry();
+private:
+ void cleanRegistryHelper( const QString& key );
+
+};
diff --git a/util/install/win/win.pro b/util/install/win/win.pro
new file mode 100644
index 0000000000..470fa03516
--- /dev/null
+++ b/util/install/win/win.pro
@@ -0,0 +1,136 @@
+TEMPLATE = app
+CONFIG += windows qt
+
+HEADERS = globalinformation.h \
+ setupwizardimpl.h \
+ environment.h \
+ shell.h \
+ resource.h \
+ dialogs/folderdlgimpl.h \
+ pages/pages.h \
+ pages/sidedecorationimpl.h
+
+SOURCES = main.cpp \
+ globalinformation.cpp \
+ setupwizardimpl.cpp \
+ setupwizardimpl_config.cpp \
+ environment.cpp \
+ shell.cpp \
+ resource.cpp \
+ dialogs/folderdlgimpl.cpp \
+ pages/pages.cpp \
+ pages/sidedecorationimpl.cpp
+
+INTERFACES = dialogs/folderdlg.ui \
+ pages/buildpage.ui \
+ pages/configpage.ui \
+ pages/finishpage.ui \
+ pages/folderspage.ui \
+ pages/licenseagreementpage.ui \
+ pages/licensepage.ui \
+ pages/optionspage.ui \
+ pages/progresspage.ui \
+ pages/sidedecoration.ui \
+ pages/winintropage.ui
+
+win32 {
+ SOURCES += archive.cpp
+ HEADERS += archive.h
+}
+
+TARGET = install
+DESTDIR = ../../../dist/win
+INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty $$QT_SOURCE_TREE/util/install/archive
+
+win32:RC_FILE = install.rc
+
+# Comment out one of the following lines to build the installer for:
+#
+# - a Qt/Windows evaluation version (eval),
+# - a Qt/Windows evaluation version that can be burned on CD and
+# distributed on tradeshows (eval-cd)
+# - the QSA evaluation version (qsa)
+# - educational version (edu)
+# - non-commercial version (noncommercial)
+#
+#CONFIG += eval
+#CONFIG += eval-cd
+#CONFIG += qsa
+#CONFIG += edu
+#CONFIG += noncommercial
+
+
+unix:LIBS += -L$$QT_BUILD_TREE/util/install/archive -larq
+win32:LIBS += ../archive/arq.lib
+INCLUDEPATH += ../keygen
+
+# We have the following dependencies on config:
+#
+# qsa -> eval
+# eval-cd -> eval
+# eval -> (none)
+# edu -> (none)
+# noncommercial -> (none)
+#
+# For the code this means that the following defines are defined:
+#
+# eval : EVAL
+# eval-cd : EVAL, EVAL_CD
+# qsa : EVAL, QSA
+# edu : EDU
+# noncommercial: NON_COMMERCIAL
+#
+
+qsa {
+ CONFIG += eval
+ DEFINES += QSA
+}
+
+eval-cd {
+ CONFIG += eval
+ DEFINES += EVAL_CD
+}
+
+eval {
+ !exists($(QTEVAL)/src) {
+ error(You must set the QTEVAL environment variable to the directory where you checked out //depot/qteval/main in order to be able to build the evaluation version of install.)
+ }
+ DEFINES += EVAL
+ qsa {
+ win32:RC_FILE = install-qsa.rc
+ } else {
+ win32:RC_FILE = install-eval.rc
+ }
+ mac:RC_FILE = ../../../tools/designer/app/designer.icns
+ SOURCES += $(QTEVAL)/src/check-and-patch.cpp
+ INCLUDEPATH += $(QTEVAL)/src
+ DESTDIR = ../../../bin
+}
+
+edu {
+ !exists($(QTEVAL)/src) {
+ error(You must set the QTEVAL environment variable to the directory where you checked out //depot/qteval/main in order to be able to build the evaluation version of install.)
+ }
+ DEFINES += EDU
+ win32:RC_FILE = install-edu.rc
+ SOURCES += $(QTEVAL)/src/check-and-patch.cpp
+ INCLUDEPATH += $(QTEVAL)/src
+ DESTDIR = ../../../bin
+}
+
+noncommercial {
+ !exists($(QTEVAL)/src) {
+ error(You must set the QTEVAL environment variable to the directory where you checked out //depot/qteval/main in order to be able to build the evaluation version of install.)
+ }
+ DEFINES += NON_COMMERCIAL
+ win32:RC_FILE = install-noncommercial.rc
+ SOURCES += $(QTEVAL)/src/check-and-patch.cpp
+ INCLUDEPATH += $(QTEVAL)/src
+ DESTDIR = ../../../bin
+}
+
+mystaticconfig {
+ QMAKE_LIBS_QT =
+ QMAKE_LIBS_QT_THREAD =
+ LIBS += ../../../lib/libqt-mt.a -lz -framework Carbon
+}
diff --git a/util/lexgen/README b/util/lexgen/README
new file mode 100644
index 0000000000..b8e927787f
--- /dev/null
+++ b/util/lexgen/README
@@ -0,0 +1,16 @@
+Lexgen
+------
+
+This is a little tool to generate lexical scanners from a rather simplistic
+configuration file. We use it internally in Qt to generate the scanner for the
+CSS parser that is built into the toolkit (used for the widget styling and the
+HTML import into QTextDocument).
+
+Beware, it's very slow (in generating the code) and it may not generate what
+you want. But I like that it generates code that operates on QChar and friends.
+
+Use at your own risk ;-)
+
+
+--
+Simon Hausmann <simon@trolltech.com>
diff --git a/util/lexgen/configfile.cpp b/util/lexgen/configfile.cpp
new file mode 100644
index 0000000000..8d776896eb
--- /dev/null
+++ b/util/lexgen/configfile.cpp
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "configfile.h"
+
+#include <QFile>
+
+ConfigFile::SectionMap ConfigFile::parse(const QString &fileName)
+{
+ QFile f(fileName);
+ if (!f.open(QIODevice::ReadOnly))
+ return ConfigFile::SectionMap();
+ return parse(&f);
+}
+
+ConfigFile::SectionMap ConfigFile::parse(QIODevice *dev)
+{
+ SectionMap sections;
+ SectionMap::Iterator currentSection = sections.end();
+
+ ConfigFile::SectionMap result;
+ int currentLineNumber = 0;
+ while (!dev->atEnd()) {
+ QString line = QString::fromUtf8(dev->readLine()).trimmed();
+ ++currentLineNumber;
+
+ if (line.isEmpty() || line.startsWith(QLatin1Char('#')))
+ continue;
+
+ if (line.startsWith(QLatin1Char('['))) {
+ if (!line.endsWith(']')) {
+ qWarning("Syntax error at line %d: Missing ']' at start of new section.", currentLineNumber);
+ return SectionMap();
+ }
+ line.remove(0, 1);
+ line.chop(1);
+ const QString sectionName = line;
+ currentSection = sections.insert(sectionName, Section());
+ continue;
+ }
+
+ if (currentSection == sections.end()) {
+ qWarning("Syntax error at line %d: Entry found outside of any section.", currentLineNumber);
+ return SectionMap();
+ }
+
+ Entry e;
+ e.lineNumber = currentLineNumber;
+
+ int equalPos = line.indexOf(QLatin1Char('='));
+ if (equalPos == -1) {
+ e.key = line;
+ } else {
+ e.key = line;
+ e.key.truncate(equalPos);
+ e.key = e.key.trimmed();
+ e.value = line.mid(equalPos + 1).trimmed();
+ }
+ currentSection->append(e);
+ }
+ return sections;
+}
diff --git a/util/lexgen/configfile.h b/util/lexgen/configfile.h
new file mode 100644
index 0000000000..7bf3389ae1
--- /dev/null
+++ b/util/lexgen/configfile.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef CONFIGFILE_H
+#define CONFIGFILE_H
+
+#include <QStringList>
+#include <QMap>
+#include <QVector>
+
+struct ConfigFile
+{
+ struct Entry
+ {
+ inline Entry() : lineNumber(-1) {}
+ int lineNumber;
+ QString key;
+ QString value;
+ };
+ struct Section : public QVector<Entry>
+ {
+ inline bool contains(const QString &key) const
+ {
+ for (int i = 0; i < count(); ++i)
+ if (at(i).key == key)
+ return true;
+ return false;
+ }
+ inline QString value(const QString &key, const QString &defaultValue = QString()) const
+ {
+ for (int i = 0; i < count(); ++i)
+ if (at(i).key == key)
+ return at(i).value;
+ return defaultValue;
+ }
+ };
+ typedef QMap<QString, Section> SectionMap;
+
+ static SectionMap parse(const QString &fileName);
+ static SectionMap parse(QIODevice *dev);
+};
+
+#endif // CONFIGFILE_H
+
diff --git a/util/lexgen/css2-simplified.lexgen b/util/lexgen/css2-simplified.lexgen
new file mode 100644
index 0000000000..3976632651
--- /dev/null
+++ b/util/lexgen/css2-simplified.lexgen
@@ -0,0 +1,93 @@
+[Options]
+case-insensitive
+classname = QCssScanner_Generated
+
+[Code Generator Options]
+MapToCode[a-z] = (ch.unicode() >= 'a' && ch.unicode() <= 'z') || ch.unicode() >= 256
+TokenPrefix = QCss::
+FileHeader = ../moc/licenseheader.txt
+
+[Macros]
+escape = \\[^\r\n\f0-9a-f]
+nmstart = [_a-z]|{escape}
+nmchar = [_a-z0-9-]|{escape}
+nl = \n|\r\n|\r|\f
+string1 = \"([^\n\r\f\\"]|\\{nl}|{escape})*\"
+string2 = \'([^\n\r\f\\']|\\{nl}|{escape})*\'
+invalid1 = \"([^\n\r\f\\"]|\\{nl}|{escape})*
+invalid2 = \'([^\n\r\f\\']|\\{nl}|{escape})*
+
+ident = -?{nmstart}{nmchar}*
+name = {nmchar}+
+num = [0-9]+|[0-9]*"."[0-9]+
+string = {string1}|{string2}
+invalid = {invalid1}|{invalid2}
+url = ([!#$%&*-~]|{escape})*
+s = [ \t\r\n\f]
+w = {s}*
+
+[Tokens]
+
+S = {s}+
+
+handleCommentStart() = \/\*
+
+CDO = "<!--"
+CDC = "-->"
+INCLUDES = "~="
+DASHMATCH = "|="
+
+LBRACE = {w}"{"
+PLUS = {w}"+"
+GREATER = {w}">"
+COMMA = {w}","
+
+STRING = {string}
+INVALID = {invalid}
+
+IDENT = {ident}
+
+HASH = "#"{name}
+
+ATKEYWORD_SYM = "@"{ident}
+
+EXCLAMATION_SYM = "!"
+
+#EMS = {num}em
+#EXS = {num}ex
+#LENGTH = {num}px
+#LENGTH = {num}cm
+#LENGTH = {num}mm
+#LENGTH = {num}in
+#LENGTH = {num}pt
+#LENGTH = {num}pc
+#ANGLE = {num}deg
+#ANGLE = {num}rad
+#ANGLE = {num}grad
+#TIME = {num}ms
+#TIME = {num}s
+#FREQ = {num}hz
+#FREQ = {num}khz
+#DIMENSION = {num}{ident}
+LENGTH = {num}{ident}
+
+PERCENTAGE = {num}%
+NUMBER = {num}
+
+#URI = "url("{w}{string}{w}")"
+#URI = "url("{w}{url}{w}")"
+FUNCTION = {ident}"("
+
+COLON = :
+SEMICOLON = ;
+RBRACE = \}
+SLASH = /
+MINUS = -
+DOT = \.
+STAR = \*
+LBRACKET = \[
+RBRACKET = \]
+EQUAL = \=
+LPAREN = \(
+RPAREN = \)
+OR = \|
diff --git a/util/lexgen/generator.cpp b/util/lexgen/generator.cpp
new file mode 100644
index 0000000000..a3c63f2d21
--- /dev/null
+++ b/util/lexgen/generator.cpp
@@ -0,0 +1,532 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "generator.h"
+
+#include <QFile>
+
+void Function::printDeclaration(CodeBlock &block, const QString &funcNamePrefix) const
+{
+ block << (iline ? "inline " : "") << signature(funcNamePrefix) << (iline ? QLatin1String(" {") : QLatin1String(";"));
+ if (!iline)
+ return;
+
+ block.indent();
+ QString tmp = body;
+ if (tmp.endsWith(QLatin1Char('\n')))
+ tmp.chop(1);
+ foreach (QString line, tmp.split(QLatin1Char('\n')))
+ block << line;
+ block.outdent();
+ block << "}";
+}
+
+QString Function::signature(const QString &funcNamePrefix) const
+{
+ QString sig;
+ if (!rtype.isEmpty()) {
+ sig += rtype;
+ sig += QLatin1Char(' ');
+ }
+ sig += funcNamePrefix;
+ sig += fname;
+ if (cnst)
+ sig += " const";
+ return sig;
+}
+
+QString Function::definition() const
+{
+ if (iline)
+ return QString();
+
+ QString result;
+ result += signature();
+ result += QLatin1String("\n{\n");
+
+ QString tmp = body;
+
+ if (tmp.endsWith(QLatin1Char('\n')))
+ tmp.chop(1);
+ if (!tmp.startsWith(QLatin1Char('\n')))
+ tmp.prepend(" ");
+
+ tmp.replace(QLatin1Char('\n'), QLatin1String("\n "));
+
+ result += tmp;
+
+ result += QLatin1String("\n}\n");
+
+ return result;
+}
+
+void Class::Section::printDeclaration(const Class *klass, CodeBlock &block) const
+{
+ foreach (Function ctor, constructors)
+ ctor.printDeclaration(block, klass->name());
+
+ if (!constructors.isEmpty())
+ block.addNewLine();
+
+ foreach (Function func, functions)
+ func.printDeclaration(block);
+
+ if (!functions.isEmpty())
+ block.addNewLine();
+
+ foreach (QString var, variables)
+ block << var << ';';
+}
+
+void Class::addConstructor(Access access, const QString &body, const QString &_args)
+{
+ Function ctor;
+ QString args = _args;
+ if (!args.startsWith(QLatin1Char('('))
+ && !args.endsWith(QLatin1Char(')'))) {
+ args.prepend('(');
+ args.append(')');
+ }
+ ctor.setName(args);
+ ctor.addBody(body);
+ sections[access].constructors.append(ctor);
+}
+
+QString Class::Section::definition(const Class *klass) const
+{
+ QString result;
+
+ foreach (Function ctor, constructors) {
+ ctor.setName(klass->name() + "::" + klass->name() + ctor.name());
+ result += ctor.definition();
+ result += QLatin1Char('\n');
+ }
+
+ foreach (Function func, functions) {
+ if (!func.hasBody()) continue;
+ func.setName(klass->name() + "::" + func.name());
+ result += func.definition();
+ result += QLatin1Char('\n');
+ }
+
+ return result;
+}
+
+QString Class::declaration() const
+{
+ CodeBlock block;
+
+ block << QLatin1String("class ") << cname;
+ block << "{";
+
+ if (!sections[PublicMember].isEmpty()) {
+ block << "public:";
+ block.indent();
+ sections[PublicMember].printDeclaration(this, block);
+ block.outdent();
+ }
+
+ if (!sections[ProtectedMember].isEmpty()) {
+ block << "protected:";
+ block.indent();
+ sections[ProtectedMember].printDeclaration(this, block);
+ block.outdent();
+ }
+
+ if (!sections[PrivateMember].isEmpty()) {
+ block << "private:";
+ block.indent();
+ sections[PrivateMember].printDeclaration(this, block);
+ block.outdent();
+ }
+
+ block << "};";
+ block.addNewLine();
+
+ return block.toString();
+}
+
+QString Class::definition() const
+{
+ return sections[PrivateMember].definition(this)
+ + sections[ProtectedMember].definition(this)
+ + sections[PublicMember].definition(this);
+}
+
+Generator::Generator(const DFA &_dfa, const Config &config)
+ : dfa(_dfa), cfg(config)
+{
+ QList<InputType> lst = cfg.maxInputSet.toList();
+ qSort(lst);
+ minInput = lst.first();
+ maxInput = lst.last();
+
+ ConfigFile::Section section = config.configSections.value("Code Generator Options");
+
+ foreach (ConfigFile::Entry entry, section) {
+ if (!entry.key.startsWith(QLatin1String("MapToCode["))
+ || !entry.key.endsWith(QLatin1Char(']')))
+ continue;
+ QString range = entry.key;
+ range.remove(0, qstrlen("MapToCode["));
+ range.chop(1);
+ if (range.length() != 3
+ || range.at(1) != QLatin1Char('-')) {
+ qWarning("Invalid range for char mapping function: %s", qPrintable(range));
+ continue;
+ }
+ TransitionSequence seq;
+ seq.first = range.at(0).unicode();
+ seq.last = range.at(2).unicode();
+ seq.testFunction = entry.value;
+ charFunctionRanges.append(seq);
+ }
+
+ QString tokenPrefix = section.value("TokenPrefix");
+ if (!tokenPrefix.isEmpty()) {
+ for (int i = 0; i < dfa.count(); ++i)
+ if (!dfa.at(i).symbol.isEmpty()
+ && !dfa.at(i).symbol.endsWith(QLatin1String("()")))
+ dfa[i].symbol.prepend(tokenPrefix);
+ }
+
+ headerFileName = section.value("FileHeader");
+}
+
+static inline bool adjacentKeys(int left, int right) { return left + 1 == right; }
+//static inline bool adjacentKeys(const InputType &left, const InputType &right)
+//{ return left.val + 1 == right.val; }
+
+static QVector<Generator::TransitionSequence> convertToSequences(const TransitionMap &transitions)
+{
+ QVector<Generator::TransitionSequence> sequences;
+ if (transitions.isEmpty())
+ return sequences;
+
+ QList<InputType> keys = transitions.keys();
+ qSort(keys);
+ int i = 0;
+ Generator::TransitionSequence sequence;
+ sequence.first = keys.at(0);
+ ++i;
+ for (; i < keys.count(); ++i) {
+ if (adjacentKeys(keys.at(i - 1), keys.at(i))
+ && transitions.value(keys.at(i)) == transitions.value(keys.at(i - 1))) {
+ continue;
+ }
+ sequence.last = keys.at(i - 1);
+ sequence.transition = transitions.value(sequence.last);
+ sequences.append(sequence);
+
+ sequence.first = keys.at(i);
+ }
+ sequence.last = keys.at(i - 1);
+ sequence.transition = transitions.value(sequence.last);
+ sequences.append(sequence);
+
+ return sequences;
+}
+
+QDebug &operator<<(QDebug &debug, const Generator::TransitionSequence &seq)
+{
+ return debug << "[first:" << seq.first << "; last:" << seq.last << "; transition:" << seq.transition
+ << (seq.testFunction.isEmpty() ? QString() : QString(QString("; testfunction:" + seq.testFunction)))
+ << "]";
+}
+
+bool Generator::isSingleReferencedFinalState(int i) const
+{
+ return backReferenceMap.value(i) == 1
+ && dfa.at(i).transitions.isEmpty()
+ && !dfa.at(i).symbol.isEmpty();
+}
+
+void Generator::generateTransitions(CodeBlock &body, const TransitionMap &transitions)
+{
+ if (transitions.isEmpty())
+ return;
+
+ QVector<TransitionSequence> sequences = convertToSequences(transitions);
+
+ bool needsCharFunction = false;
+ if (!charFunctionRanges.isEmpty()) {
+ int i = 0;
+ while (i < sequences.count()) {
+ const TransitionSequence &seq = sequences.at(i);
+ if (!seq.testFunction.isEmpty()) {
+ ++i;
+ continue;
+ }
+
+ foreach (TransitionSequence range, charFunctionRanges)
+ if (range.first >= seq.first && range.last <= seq.last) {
+ needsCharFunction = true;
+
+ TransitionSequence left, middle, right;
+
+ left.first = seq.first;
+ left.last = range.first - 1;
+ left.transition = seq.transition;
+
+ middle = range;
+ middle.transition = seq.transition;
+
+ right.first = range.last + 1;
+ right.last = seq.last;
+ right.transition = seq.transition;
+
+ sequences.remove(i);
+ if (left.last >= left.first) {
+ sequences.insert(i, left);
+ ++i;
+ }
+ sequences.insert(i, middle);
+ ++i;
+ if (right.last >= right.first) {
+ sequences.insert(i, right);
+ ++i;
+ }
+
+ i = -1;
+ break;
+ }
+
+ ++i;
+ }
+ }
+
+ //qDebug() << "sequence count" << sequences.count();
+ //qDebug() << sequences;
+
+ if (sequences.count() < 10
+ || sequences.last().last == maxInput
+ || needsCharFunction) {
+ foreach (TransitionSequence seq, sequences) {
+ const bool embedFinalState = isSingleReferencedFinalState(seq.transition);
+
+ QString brace;
+ if (embedFinalState)
+ brace = " {";
+
+ if (!seq.testFunction.isEmpty()) {
+ body << "if (" << seq.testFunction << ")" << brace;
+ } else if (seq.first == seq.last) {
+ body << "if (ch.unicode() == " << seq.first << ")" << brace;
+ } else {
+ if (seq.last < maxInput)
+ body << "if (ch.unicode() >= " << seq.first
+ << " && ch.unicode() <= " << seq.last << ")" << brace;
+ else
+ body << "if (ch.unicode() >= " << seq.first << ")" << brace;
+ }
+ body.indent();
+ if (embedFinalState) {
+ body << "token = " << dfa.at(seq.transition).symbol << ";";
+ body << "goto found;";
+
+ body.outdent();
+ body << "}";
+ } else {
+ body << "goto state_" << seq.transition << ";";
+ body.outdent();
+ }
+ }
+ } else {
+ QList<InputType> keys = transitions.keys();
+ qSort(keys);
+
+ body << "switch (ch.unicode()) {";
+ body.indent();
+ for (int k = 0; k < keys.count(); ++k) {
+ const InputType key = keys.at(k);
+ const int trans = transitions.value(key);
+
+ QString keyStr;
+ if (key == '\\')
+ keyStr = QString("\'\\\\\'");
+ else if (key >= 48 && key < 127)
+ keyStr = QString('\'') + QChar::fromLatin1(char(key)) + QChar('\'');
+ else
+ keyStr = QString::number(key);
+
+ if (k < keys.count() - 1
+ && transitions.value(keys.at(k + 1)) == trans) {
+ body << "case " << keyStr << ":";
+ } else {
+ if (isSingleReferencedFinalState(trans)) {
+ body << "case " << keyStr << ": token = " << dfa.at(trans).symbol << "; goto found;";
+ } else {
+ body << "case " << keyStr << ": goto state_" << trans << ";";
+ }
+ }
+ }
+ body.outdent();
+ body << "}";
+ }
+}
+
+QString Generator::generate()
+{
+ Class klass(cfg.className);
+
+ klass.addMember(Class::PublicMember, "QString input");
+ klass.addMember(Class::PublicMember, "int pos");
+ klass.addMember(Class::PublicMember, "int lexemStart");
+ klass.addMember(Class::PublicMember, "int lexemLength");
+
+ {
+ CodeBlock body;
+ body << "input = inp;";
+ body << "pos = 0;";
+ body << "lexemStart = 0;";
+ body << "lexemLength = 0;";
+ klass.addConstructor(Class::PublicMember, body, "const QString &inp");
+ }
+
+ {
+ Function next("QChar", "next()");
+ next.setInline(true);
+ if (cfg.caseSensitivity == Qt::CaseSensitive)
+ next.addBody("return (pos < input.length()) ? input.at(pos++) : QChar();");
+ else
+ next.addBody("return (pos < input.length()) ? input.at(pos++).toLower() : QChar();");
+ klass.addMember(Class::PublicMember, next);
+ }
+
+ /*
+ {
+ Function lexem("QString", "lexem()");
+ lexem.setConst(true);
+ lexem.setInline(true);
+ lexem.addBody("return input.mid(lexemStart, lexemLength);");
+ klass.addMember(Class::PublicMember, lexem);
+ }
+ */
+
+ for (int i = 0; i < dfa.count(); ++i)
+ if (dfa.at(i).symbol.endsWith(QLatin1String("()"))) {
+ Function handlerFunc("int", dfa.at(i).symbol);
+ klass.addMember(Class::PublicMember, handlerFunc);
+ }
+
+ Function lexFunc;
+ lexFunc.setReturnType("int");
+ lexFunc.setName("lex()");
+
+ CodeBlock body;
+ body << "lexemStart = pos;";
+ body << "lexemLength = 0;";
+ body << "int lastAcceptingPos = -1;";
+ body << "int token = -1;";
+ body << "QChar ch;";
+ body.addNewLine();
+
+ backReferenceMap.clear();
+ foreach (State s, dfa)
+ foreach (int state, s.transitions)
+ backReferenceMap[state]++;
+
+ bool haveSingleReferencedFinalState = false;
+
+ for (int i = 0; i < dfa.count(); ++i) {
+ if (isSingleReferencedFinalState(i)) {
+ haveSingleReferencedFinalState = true;
+ continue;
+ }
+
+ if (i > 0)
+ body << "state_" << i << ":";
+ else
+ body << "// initial state";
+
+ body.indent();
+
+ if (!dfa.at(i).symbol.isEmpty()) {
+ body << "lastAcceptingPos = pos;";
+ body << "token = " << dfa.at(i).symbol << ";";
+ }
+
+ body.outdent();
+
+ body.indent();
+
+ if (!dfa.at(i).transitions.isEmpty()) {
+ body << "ch = next();";
+ generateTransitions(body, dfa.at(i).transitions);
+ }
+
+ body << "goto out;";
+
+ body.outdent();
+ }
+
+ if (haveSingleReferencedFinalState) {
+ body << "found:";
+ body << "lastAcceptingPos = pos;";
+ body.addNewLine();
+ }
+
+ body << "out:";
+ body << "if (lastAcceptingPos != -1) {";
+ body.indent();
+ body << "lexemLength = lastAcceptingPos - lexemStart;";
+ body << "pos = lastAcceptingPos;";
+ body.outdent();
+ body << "}";
+ body << "return token;";
+
+ lexFunc.addBody(body);
+
+ klass.addMember(Class::PublicMember, lexFunc);
+
+ QString header;
+ QFile headerFile(headerFileName);
+ if (!headerFileName.isEmpty()
+ && headerFile.exists()
+ && headerFile.open(QIODevice::ReadOnly)) {
+ header = QString::fromUtf8(headerFile.readAll());
+ }
+
+ header += QLatin1String("// auto generated. DO NOT EDIT.\n");
+
+ return header + klass.declaration() + klass.definition();
+}
+
diff --git a/util/lexgen/generator.h b/util/lexgen/generator.h
new file mode 100644
index 0000000000..047378b20b
--- /dev/null
+++ b/util/lexgen/generator.h
@@ -0,0 +1,221 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef GENERATOR_H
+#define GENERATOR_H
+
+#include <QTextStream>
+#include <QStringList>
+
+#include "nfa.h"
+
+class LineStream
+{
+private:
+ struct SharedStream
+ {
+ int ref;
+ QTextStream *stream;
+ };
+
+public:
+ LineStream(QTextStream *textStream)
+ {
+ shared = new SharedStream;
+ shared->ref = 1;
+ shared->stream = textStream;
+ }
+ LineStream(const LineStream &other)
+ {
+ shared = other.shared;
+ shared->ref++;
+ }
+ LineStream &operator=(const LineStream &other)
+ {
+ if (this == &other)
+ return *this;
+ LineStream copy(other); // keep refcount up
+ qSwap(*shared, *other.shared);
+ return *this;
+ }
+ ~LineStream()
+ {
+ if (!--shared->ref) {
+ (*shared->stream) << endl;
+ delete shared;
+ }
+ }
+
+ template <typename T>
+ LineStream &operator<<(const T &value)
+ { (*shared->stream) << value; return *this; }
+
+ SharedStream *shared;
+};
+
+class CodeBlock
+{
+public:
+ inline CodeBlock() { stream.setString(&output, QIODevice::WriteOnly); }
+
+ inline void indent() { indentStr += QLatin1String(" "); }
+ inline void outdent() { indentStr.remove(0, 4); }
+
+ template <typename T>
+ LineStream operator<<(const T &value)
+ { stream << indentStr; stream << value; return LineStream(&stream); }
+
+ inline void addNewLine() { stream << endl; }
+
+ inline QString toString() const { stream.flush(); return output; }
+
+private:
+ QString output;
+ mutable QTextStream stream;
+ QString indentStr;
+};
+
+class Function
+{
+public:
+ inline Function(const QString &returnType, const QString &name)
+ : rtype(returnType), fname(name), iline(false), cnst(false) {}
+ inline Function() : iline(false), cnst(false) {}
+
+ inline void setName(const QString &name) { fname = name; }
+ inline QString name() const { return fname; }
+
+ inline void setInline(bool i) { iline = i; }
+ inline bool isInline() const { return iline; }
+
+ inline void setReturnType(const QString &type) { rtype = type; }
+ inline QString returnType() const { return rtype; }
+
+ inline void addBody(const QString &_body) { body += _body; }
+ inline void addBody(const CodeBlock &block) { body += block.toString(); }
+ inline bool hasBody() const { return !body.isEmpty(); }
+
+ inline void setConst(bool konst) { cnst = konst; }
+ inline bool isConst() const { return cnst; }
+
+ void printDeclaration(CodeBlock &block, const QString &funcNamePrefix = QString()) const;
+ QString definition() const;
+
+private:
+ QString signature(const QString &funcNamePrefix = QString()) const;
+
+ QString rtype;
+ QString fname;
+ QString body;
+ bool iline;
+ bool cnst;
+};
+
+class Class
+{
+public:
+ enum Access { PublicMember, ProtectedMember, PrivateMember };
+
+ inline Class(const QString &name) : cname(name) {}
+
+ inline void setName(const QString &name) { cname = name; }
+ inline QString name() const { return cname; }
+
+ inline void addMember(Access access, const QString &name)
+ { sections[access].variables.append(name); }
+ inline void addMember(Access access, const Function &func)
+ { sections[access].functions.append(func); }
+
+ void addConstructor(Access access, const QString &body, const QString &args = QString());
+ inline void addConstructor(Access access, const CodeBlock &body, const QString &args = QString())
+ { addConstructor(access, body.toString(), args); }
+
+ QString declaration() const;
+ QString definition() const;
+
+private:
+ QString cname;
+ struct Section
+ {
+ QVector<Function> functions;
+ QStringList variables;
+ QVector<Function> constructors;
+
+ inline bool isEmpty() const
+ { return functions.isEmpty() && variables.isEmpty() && constructors.isEmpty(); }
+
+ void printDeclaration(const Class *klass, CodeBlock &block) const;
+ QString definition(const Class *klass) const;
+ };
+
+ Section sections[3];
+};
+
+class Generator
+{
+public:
+ Generator(const DFA &dfa, const Config &config);
+
+ QString generate();
+
+private:
+ void generateTransitions(CodeBlock &body, const TransitionMap &transitions);
+ bool isSingleReferencedFinalState(int i) const;
+
+ DFA dfa;
+ Config cfg;
+ InputType minInput;
+ InputType maxInput;
+ QHash<int, int> backReferenceMap;
+ QString headerFileName;
+public:
+ struct TransitionSequence
+ {
+ inline TransitionSequence() : first(-1), last(-1), transition(-1) {}
+ InputType first;
+ InputType last;
+ int transition;
+ QString testFunction;
+ };
+private:
+ QVector<TransitionSequence> charFunctionRanges;
+};
+
+#endif
diff --git a/util/lexgen/global.h b/util/lexgen/global.h
new file mode 100644
index 0000000000..01f915d523
--- /dev/null
+++ b/util/lexgen/global.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef GLOBAL_H
+#define GLOBAL_H
+
+#include <QHash>
+#include <QDataStream>
+#include <QSet>
+
+#include "configfile.h"
+
+#if 1
+typedef int InputType;
+
+enum SpecialInputType {
+ DigitInput,
+ SpaceInput,
+ Letter
+};
+
+#else
+
+enum SpecialInputType {
+ NoSpecialInput = 0,
+ DigitInput,
+ SpaceInput,
+ LetterOrNumberInput
+};
+
+struct InputType
+{
+ inline InputType() : val(0), specialInput(NoSpecialInput) {}
+ inline InputType(const int &val) : val(val), specialInput(NoSpecialInput) {}
+
+ inline operator int() const { return val; }
+
+ inline bool operator==(const InputType &other) const
+ { return val == other.val; }
+ inline bool operator!=(const InputType &other) const
+ { return val != other.val; }
+
+ int val;
+ SpecialInputType specialInput;
+};
+
+inline int qHash(const InputType &t) { return qHash(t.val); }
+
+inline QDataStream &operator<<(QDataStream &stream, const InputType &i)
+{
+ return stream << i;
+}
+
+inline QDataStream &operator>>(QDataStream &stream, InputType &i)
+{
+ return stream >> i;
+}
+
+#endif
+
+const InputType Epsilon = -1;
+
+struct Config
+{
+ inline Config() : caseSensitivity(Qt::CaseSensitive), debug(false), cache(false) {}
+ QSet<InputType> maxInputSet;
+ Qt::CaseSensitivity caseSensitivity;
+ QString className;
+ bool debug;
+ bool cache;
+ QString ruleFile;
+ ConfigFile::SectionMap configSections;
+};
+
+#endif // GLOBAL_H
diff --git a/util/lexgen/lexgen.lexgen b/util/lexgen/lexgen.lexgen
new file mode 100644
index 0000000000..33efb8b39b
--- /dev/null
+++ b/util/lexgen/lexgen.lexgen
@@ -0,0 +1,24 @@
+[Options]
+case-sensitive
+classname = RegExpTokenizer
+
+[Code Generator Options]
+TokenPrefix = RE2NFA::
+
+[Macros]
+Escape = \\.{1}
+
+[Tokens]
+TOK_QUOTED_STRING = \"[^\"]*\"
+TOK_STRING = [^\{\}\(\)\,\*\|\?\.\+\[]|{Escape}
+TOK_SEQUENCE = \[([^\]]|(\\\]))*\]
+TOK_LBRACE = \{
+TOK_RBRACE = \}
+TOK_LPAREN = \(
+TOK_RPAREN = \)
+TOK_COMMA = \,
+TOK_STAR = \*
+TOK_OR = \|
+TOK_QUESTION = \?
+TOK_DOT = \.
+TOK_PLUS = \+
diff --git a/util/lexgen/lexgen.pri b/util/lexgen/lexgen.pri
new file mode 100644
index 0000000000..b36e00ea62
--- /dev/null
+++ b/util/lexgen/lexgen.pri
@@ -0,0 +1,3 @@
+VPATH += $$PWD
+SOURCES += nfa.cpp configfile.cpp re2nfa.cpp
+INCLUDEPATH += $$PWD
diff --git a/util/lexgen/lexgen.pro b/util/lexgen/lexgen.pro
new file mode 100644
index 0000000000..89ac84de06
--- /dev/null
+++ b/util/lexgen/lexgen.pro
@@ -0,0 +1,6 @@
+TEMPLATE = app
+TARGET = lexgen
+include(lexgen.pri)
+SOURCES += main.cpp \
+ generator.cpp
+QT = core
diff --git a/util/lexgen/main.cpp b/util/lexgen/main.cpp
new file mode 100644
index 0000000000..b7b529a6f3
--- /dev/null
+++ b/util/lexgen/main.cpp
@@ -0,0 +1,323 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "nfa.h"
+#include "re2nfa.h"
+#include "configfile.h"
+#include "generator.h"
+
+#include <QFile>
+#include <QCoreApplication>
+#include <QFileInfo>
+#include <QDateTime>
+
+struct Symbol
+{
+ QString token;
+ QString lexem;
+};
+
+static QList<Symbol> tokenize(const DFA &dfa, const QString &input, Config *cfg, bool *ok = 0)
+{
+ QList<Symbol> symbols;
+ Symbol lastSymbol;
+ int state = 0;
+ int lastAcceptingState = -1;
+ QString lastAcceptingLexem;
+ int lastAcceptingPos = -1;
+ for (int i = 0; i < input.length(); ++i) {
+ QChar ch = input.at(i);
+ QChar chForInput = ch;
+ if (cfg->caseSensitivity == Qt::CaseInsensitive)
+ chForInput = chForInput.toLower();
+ int next = dfa.at(state).transitions.value(chForInput.unicode());
+ if (cfg->debug)
+ qDebug() << "input" << input.at(i) << "leads to state" << next;
+ if (next) {
+ lastSymbol.lexem.append(input.at(i));
+ lastSymbol.token = dfa.at(next).symbol;
+ if (!lastSymbol.token.isEmpty()) {
+ lastAcceptingState = next;
+ lastAcceptingLexem = lastSymbol.lexem;
+ lastAcceptingPos = i;
+ }
+ state = next;
+ } else {
+ if (lastAcceptingState != -1) {
+ if (cfg->debug)
+ qDebug() << "adding" << dfa.at(lastAcceptingState).symbol << "and backtracking to" << lastAcceptingPos;
+ Symbol s;
+ s.token = dfa.at(lastAcceptingState).symbol;
+ s.lexem = lastAcceptingLexem;
+ symbols << s;
+ lastSymbol = Symbol();
+ state = 0;
+ i = lastAcceptingPos;
+ lastAcceptingPos = -1;
+ lastAcceptingState = -1;
+ continue;
+ }
+ if (state == 0 || lastSymbol.token.isEmpty()) {
+ if (cfg->debug)
+ qDebug() << "invalid input";
+ if (ok)
+ *ok = false;
+ return symbols;
+ }
+ if (cfg->debug)
+ qDebug() << "appending symbol with token" << lastSymbol.token;
+ symbols << lastSymbol;
+ lastSymbol = Symbol();
+ state = 0;
+ lastAcceptingState = -1;
+ --i;
+ }
+ }
+ if (!lastSymbol.token.isEmpty()) {
+ if (cfg->debug)
+ qDebug() << "appending (last) symbol with token" << lastSymbol.token;
+ symbols << lastSymbol;
+ } else if (lastAcceptingState != -1) {
+ if (cfg->debug)
+ qDebug() << "appending last accepting state with token" << dfa.at(lastAcceptingState).symbol;
+ Symbol s;
+ s.lexem = lastAcceptingLexem;
+ s.token = dfa.at(lastAcceptingState).symbol;
+ symbols << s;
+ }
+ if (ok)
+ *ok = true;
+ return symbols;
+}
+
+static QSet<InputType> determineMaxInputSet(const ConfigFile::Section &section)
+{
+ QSet<InputType> set;
+
+ QString inputTypeName;
+
+ foreach (const ConfigFile::Entry &entry, section)
+ if (entry.key == QLatin1String("InputType")) {
+ if (!inputTypeName.isEmpty()) {
+ qWarning("Error: InputType field specified multiple times in config file");
+ return QSet<InputType>();
+ }
+ inputTypeName = entry.value;
+ }
+
+ if (inputTypeName.isEmpty())
+ inputTypeName = "quint8";
+
+ if (inputTypeName == "quint8") {
+ for (int i = 1; i < 256; ++i)
+ set.insert(i);
+ } /* else if ### */
+ else {
+ qWarning("Error: Unknown input type '%s'", qPrintable(inputTypeName));
+ return QSet<InputType>();
+ }
+
+ return set;
+}
+
+static bool loadConfig(const QString &ruleFile, Config *cfg)
+{
+ ConfigFile::SectionMap sections = ConfigFile::parse(ruleFile);
+ if (sections.isEmpty()) {
+ qWarning("Error parsing %s", qPrintable(ruleFile));
+ return false;
+ }
+
+ QSet<InputType> maxInputSet = determineMaxInputSet(sections.value("Options"));
+ if (maxInputSet.isEmpty())
+ return false;
+
+ Qt::CaseSensitivity cs = Qt::CaseInsensitive;
+ if (sections.value("Options").contains("case-sensitive"))
+ cs = Qt::CaseSensitive;
+
+ cfg->configSections = sections;
+ cfg->caseSensitivity = cs;
+ cfg->className = sections.value("Options").value("classname", "Scanner");
+ cfg->maxInputSet = maxInputSet;
+ cfg->ruleFile = ruleFile;
+ return true;
+}
+
+static DFA generateMachine(const Config &cfg)
+{
+ if (cfg.cache) {
+ QFileInfo ruleInfo(cfg.ruleFile);
+ QFileInfo cacheInfo(ruleInfo.baseName() + ".dfa");
+ if (cacheInfo.exists()
+ && cacheInfo.lastModified() > ruleInfo.lastModified()) {
+ QFile f(cacheInfo.absoluteFilePath());
+ f.open(QIODevice::ReadOnly);
+ QDataStream stream(&f);
+ DFA machine;
+ stream >> machine;
+ return machine;
+ }
+ }
+
+ QMap<QString, NFA> macros;
+ foreach (ConfigFile::Entry e, cfg.configSections.value("Macros")) {
+ int errCol = 0;
+ if (cfg.debug)
+ qDebug() << "parsing" << e.value;
+ NFA nfa = RE2NFA(macros, cfg.maxInputSet, cfg.caseSensitivity).parse(e.value, &errCol);
+ if (nfa.isEmpty()) {
+ qWarning("Parse error in line %d column %d", e.lineNumber, errCol);
+ return DFA();
+ }
+ macros.insert(e.key, nfa);
+ }
+
+ if (!cfg.configSections.contains("Tokens")) {
+ qWarning("Rule file does not contain a [Tokens] section!");
+ return DFA();
+ }
+
+ QVector<NFA> tokens;
+
+ foreach (ConfigFile::Entry e, cfg.configSections.value("Tokens")) {
+ int errCol = 0;
+ if (cfg.debug)
+ qDebug() << "parsing" << e.value;
+ NFA tok = RE2NFA(macros, cfg.maxInputSet, cfg.caseSensitivity).parse(e.value, &errCol);
+ if (tok.isEmpty()) {
+ qWarning("Parse error in line %d column %d while parsing token %s", e.lineNumber, errCol, e.key.toLocal8Bit().constData());
+ return DFA();
+ }
+ tok.setTerminationSymbol(e.key);
+ tokens.append(tok);
+ }
+
+ NFA giganticStateMachine;
+ foreach (NFA nfa, tokens)
+ if (giganticStateMachine.isEmpty())
+ giganticStateMachine = nfa;
+ else
+ giganticStateMachine = NFA::createAlternatingNFA(giganticStateMachine, nfa);
+
+ DFA result = giganticStateMachine.toDFA().minimize();
+ if (cfg.cache) {
+ QFileInfo ruleInfo(cfg.ruleFile);
+ QFileInfo cacheInfo(ruleInfo.baseName() + ".dfa");
+ QFile f(cacheInfo.absoluteFilePath());
+ f.open(QIODevice::WriteOnly | QIODevice::Truncate);
+ QDataStream stream(&f);
+ stream << result;
+ }
+ return result;
+}
+
+#if !defined(AUTOTEST)
+int main(int argc, char **argv)
+{
+ QCoreApplication app(argc, argv);
+ QString ruleFile;
+ Config cfg;
+
+ const QStringList arguments = app.arguments().mid(1);
+ cfg.debug = arguments.contains("-debug");
+ const bool testRules = arguments.contains("-test");
+ cfg.cache = arguments.contains("-cache");
+
+ foreach (const QString &arg, arguments)
+ if (!arg.startsWith(QLatin1Char('-'))) {
+ ruleFile = arg;
+ break;
+ }
+
+ if (ruleFile.isEmpty()) {
+ qWarning("usage: lexgen [-test rulefile");
+ qWarning(" ");
+ qWarning(" the -test option will cause lexgen to interpret standard input");
+ qWarning(" according to the specified rules and print out pairs of token and");
+ qWarning(" lexical element");
+ return 1;
+ }
+
+ if (!loadConfig(ruleFile, &cfg))
+ return 1;
+
+ DFA machine = generateMachine(cfg);
+ if (machine.isEmpty())
+ return 1;
+
+ if (testRules) {
+ qWarning("Testing:");
+ QString input = QTextStream(stdin).readAll();
+ /*
+ qDebug() << "NFA has" << machine.stateCount() << "states";
+ qDebug() << "Converting to DFA... (this may take a while)";
+ DFA dfa = machine.toDFA();
+ qDebug() << "DFA has" << dfa.count() << "states";
+ qDebug() << "Minimizing...";
+ dfa = dfa.minimize();
+ qDebug() << "Minimized DFA has" << dfa.count() << "states";
+ */
+ DFA dfa = machine;
+ if (cfg.debug)
+ qDebug() << "tokenizing" << input;
+ bool ok = false;
+ QList<Symbol> symbols = tokenize(dfa, input, &cfg, &ok);
+ if (symbols.isEmpty()) {
+ qWarning("No tokens produced!");
+ } else {
+ foreach (Symbol s, symbols)
+ qDebug() << s.token << ":" << s.lexem;
+ }
+ if (ok)
+ qDebug() << symbols.count() << "tokens produced.";
+ else
+ qDebug() << "Error while tokenizing!";
+ } else {
+ Generator gen(machine, cfg);
+ QTextStream(stdout)
+ << gen.generate();
+ }
+
+ return 0;
+}
+#endif
+
diff --git a/util/lexgen/nfa.cpp b/util/lexgen/nfa.cpp
new file mode 100644
index 0000000000..701a5e0ef0
--- /dev/null
+++ b/util/lexgen/nfa.cpp
@@ -0,0 +1,508 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "nfa.h"
+#include <QSet>
+#include <limits.h>
+
+NFA NFA::createSingleInputNFA(InputType input)
+{
+ NFA result;
+ result.initialize(2);
+ result.addTransition(result.initialState, input, result.finalState);
+ return result;
+}
+
+NFA NFA::createSymbolNFA(const QString &symbol)
+{
+ NFA result = NFA::createSingleInputNFA(Epsilon);
+ result.states[result.finalState].symbol = symbol;
+ return result;
+}
+
+void NFA::initialize(int size)
+{
+ states.resize(size);
+ states.fill(State());
+ initialState = 0;
+ finalState = size - 1;
+}
+
+void NFA::addTransition(int from, InputType input, int to)
+{
+ assertValidState(from);
+ assertValidState(to);
+
+ states[from].transitions.insertMulti(input, to);
+}
+
+void NFA::copyFrom(const NFA &other, int baseState)
+{
+ assertValidState(baseState);
+ assertValidState(baseState + other.states.count() - 1);
+
+ for (int i = 0; i < other.states.count(); ++i) {
+ State s = other.states.at(i);
+
+ for (TransitionMap::Iterator it = s.transitions.begin(),
+ end = s.transitions.end(); it != end; ++it)
+ *it += baseState;
+
+ states[baseState + i] = s;
+ }
+}
+
+void NFA::initializeFromPair(const NFA &a, const NFA &b,
+ int *initialA, int *finalA,
+ int *initialB, int *finalB)
+{
+ initialize(a.states.count() + b.states.count() + 2);
+
+ int baseIdxA = 1;
+ int baseIdxB = 1 + a.states.count();
+
+ *initialA = a.initialState + baseIdxA;
+ *finalA = a.finalState + baseIdxA;
+
+ *initialB = b.initialState + baseIdxB;
+ *finalB = b.finalState + baseIdxB;
+
+ copyFrom(a, baseIdxA);
+ copyFrom(b, baseIdxB);
+}
+
+NFA NFA::createAlternatingNFA(const NFA &a, const NFA &b)
+{
+ NFA result;
+
+ int newInitialA, newFinalA,
+ newInitialB, newFinalB;
+
+ result.initializeFromPair(a, b, &newInitialA, &newFinalA,
+ &newInitialB, &newFinalB);
+
+ result.addTransition(result.initialState, Epsilon, newInitialA);
+ result.addTransition(result.initialState, Epsilon, newInitialB);
+
+ result.addTransition(newFinalA, Epsilon, result.finalState);
+ result.addTransition(newFinalB, Epsilon, result.finalState);
+
+ return result;
+}
+
+NFA NFA::createConcatenatingNFA(const NFA &a, const NFA &b)
+{
+ NFA result;
+
+ int initialA, finalA,
+ initialB, finalB;
+
+ result.initializeFromPair(a, b, &initialA, &finalA, &initialB, &finalB);
+
+ result.addTransition(result.initialState, Epsilon, initialA);
+ result.addTransition(finalA, Epsilon, initialB);
+ result.addTransition(finalB, Epsilon, result.finalState);
+ return result;
+}
+
+NFA NFA::createOptionalNFA(const NFA &a)
+{
+ NFA result;
+
+ result.initialize(a.states.count() + 2);
+
+ int baseIdxA = 1;
+ int initialA = a.initialState + baseIdxA;
+ int finalA = a.finalState + baseIdxA;
+
+ result.copyFrom(a, baseIdxA);
+
+ result.addTransition(result.initialState, Epsilon, initialA);
+ result.addTransition(result.initialState, Epsilon, result.finalState);
+
+ result.addTransition(finalA, Epsilon, initialA);
+ result.addTransition(finalA, Epsilon, result.finalState);
+
+ return result;
+}
+
+NFA NFA::createStringNFA(const QByteArray &str)
+{
+ NFA result;
+ foreach (char c, str) {
+ NFA ch = NFA::createSingleInputNFA(c);
+ if (result.isEmpty())
+ result = ch;
+ else
+ result = NFA::createConcatenatingNFA(result, ch);
+ }
+ return result;
+}
+
+NFA NFA::createSetNFA(const QSet<InputType> &set)
+{
+ NFA result;
+ result.initialize(set.count() + 2);
+
+ int state = 1;
+ for (QSet<InputType>::ConstIterator it = set.constBegin(), end = set.constEnd();
+ it != end; ++it, ++state) {
+ result.addTransition(result.initialState, Epsilon, state);
+ result.addTransition(state, *it, result.finalState);
+ }
+
+ /*
+ foreach (InputType input, set) {
+ NFA ch = NFA::createSingleInputNFA(input);
+ if (result.isEmpty())
+ result = ch;
+ else
+ result = NFA::createAlternatingNFA(result, ch);
+ }
+ */
+ return result;
+}
+
+NFA NFA::createZeroOrOneNFA(const NFA &a)
+{
+ NFA epsilonNFA = createSingleInputNFA(Epsilon);
+ return NFA::createAlternatingNFA(a, epsilonNFA);
+}
+
+NFA NFA::applyQuantity(const NFA &a, int minOccurrences, int maxOccurrences)
+{
+ NFA result = a;
+ NFA epsilonNFA = createSingleInputNFA(Epsilon);
+
+ if (minOccurrences == 0) {
+ result = NFA::createAlternatingNFA(result, epsilonNFA);
+ } else {
+ minOccurrences--;
+ }
+ maxOccurrences--;
+
+ for (int i = 0; i < minOccurrences; ++i)
+ result = NFA::createConcatenatingNFA(result, a);
+
+ for (int i = minOccurrences; i < maxOccurrences; ++i)
+ result = NFA::createConcatenatingNFA(result, NFA::createAlternatingNFA(a, epsilonNFA));
+
+ return result;
+}
+
+void NFA::debug()
+{
+ qDebug() << "NFA has" << states.count() << "states";
+ qDebug() << "initial state is" << initialState;
+ qDebug() << "final state is" << finalState;
+
+ for (int i = 0; i < states.count(); ++i) {
+ const State &s = states.at(i);
+ for (TransitionMap::ConstIterator it = s.transitions.constBegin(),
+ end = s.transitions.constEnd(); it != end; ++it)
+ qDebug() << "transition from state" << i << "to" << it.value() << "through"
+ << (it.key() == Epsilon ? QString("Epsilon") : QString(char(it.key())));
+ if (!s.symbol.isEmpty())
+ qDebug() << "State" << i << "leads to symbol" << s.symbol;
+ }
+}
+
+// helper
+typedef QSet<int> DFAState;
+
+// that's a bad hash, but it's good enough for us
+// and it allows us to use the nice QHash API :)
+inline uint qHash(const DFAState &state)
+{
+ uint val = 0;
+ foreach (int s, state)
+ val |= qHash(s);
+ return val;
+}
+
+DFA NFA::toDFA() const
+{
+ DFA result;
+ result.reserve(states.count());
+
+ QHash<QString, int> symbolReferenceCounts;
+ {
+ QSet<int> symbolStates;
+ for (int i = 0; i < states.count(); ++i)
+ if (!states.at(i).symbol.isEmpty())
+ symbolStates.insert(i);
+
+ QHash<int, QString> epsilonStates;
+ for (int i = 0; i < states.count(); ++i) {
+ const State &s = states.at(i);
+ for (TransitionMap::ConstIterator transition = s.transitions.constBegin(), end = s.transitions.constEnd();
+ transition != end; ++transition)
+ if (transition.key() == Epsilon && symbolStates.contains(transition.value()))
+ epsilonStates.insert(i, states.at(transition.value()).symbol);
+ }
+
+ int lastCount;
+ do {
+ lastCount = epsilonStates.count();
+ for (int i = 0; i < states.count(); ++i) {
+ const State &s = states.at(i);
+ for (TransitionMap::ConstIterator transition = s.transitions.constBegin(), end = s.transitions.constEnd();
+ transition != end; ++transition)
+ if (transition.key() == Epsilon && epsilonStates.contains(transition.value()))
+ epsilonStates.insert(i, epsilonStates.value(transition.value()));
+ }
+
+ } while (lastCount != epsilonStates.count());
+
+ for (int i = 0; i < states.count(); ++i) {
+ const State &s = states.at(i);
+ for (TransitionMap::ConstIterator transition = s.transitions.constBegin(), end = s.transitions.constEnd();
+ transition != end; ++transition) {
+ if (transition.key() == Epsilon)
+ continue;
+ if (symbolStates.contains(transition.value())) {
+ const QString symbol = states.at(transition.value()).symbol;
+ symbolReferenceCounts[symbol]++;
+ } else if (epsilonStates.contains(transition.value())) {
+ const QString symbol = epsilonStates.value(transition.value());
+ symbolReferenceCounts[symbol]++;
+ }
+ }
+ }
+ /*
+ for (QHash<QString, int>::ConstIterator symIt = symbolReferenceCounts.constBegin(), symEnd = symbolReferenceCounts.constEnd();
+ symIt != symEnd; ++symIt)
+ qDebug() << "symbol" << symIt.key() << "is reached" << symIt.value() << "times";
+ */
+ }
+
+
+ QSet<InputType> validInput;
+ foreach (const State &s, states)
+ for (TransitionMap::ConstIterator it = s.transitions.constBegin(),
+ end = s.transitions.constEnd(); it != end; ++it)
+ if (it.key() != Epsilon)
+ validInput.insert(it.key());
+
+ // A DFA state can consist of multiple NFA states.
+ // the dfaStateMap maps from these to the actual
+ // state index within the resulting DFA vector
+ QHash<DFAState, int> dfaStateMap;
+ QStack<DFAState> pendingDFAStates;
+
+ DFAState startState = epsilonClosure(QSet<int>() << initialState);
+
+ result.resize(1);
+ dfaStateMap.insert(startState, 0);
+
+ pendingDFAStates.push(startState);
+
+ while (!pendingDFAStates.isEmpty()) {
+ DFAState state = pendingDFAStates.pop();
+// qDebug() << "processing" << state << "from the stack of pending states";
+
+ foreach (InputType input, validInput) {
+
+ QSet<int> reachableStates;
+
+ foreach (int nfaState, state) {
+ const TransitionMap &transitions = states.at(nfaState).transitions;
+ TransitionMap::ConstIterator it = transitions.find(input);
+ while (it != transitions.constEnd() && it.key() == input) {
+ reachableStates.insert(it.value());
+ ++it;
+ }
+ }
+
+ if (reachableStates.isEmpty())
+ continue;
+
+// qDebug() << "can reach" << reachableStates << "from input" << char(input);
+
+ QSet<int> closure = epsilonClosure(reachableStates);
+
+// qDebug() << "closure is" << closure;
+
+ if (!dfaStateMap.contains(closure)) {
+ int dfaState = result.count();
+ result.append(State());
+
+ QString symbol;
+ int refCount = INT_MAX;
+ foreach (int nfaState, closure)
+ if (!states.at(nfaState).symbol.isEmpty()) {
+// qDebug() << "closure also contains symbol" << states.at(nfaState).symbol;
+ QString candidate = states.at(nfaState).symbol;
+ int candidateRefCount =symbolReferenceCounts.value(candidate, INT_MAX);
+ if (candidateRefCount < refCount) {
+ refCount = candidateRefCount;
+ symbol = candidate;
+ }
+ }
+ if (!symbol.isEmpty())
+ result.last().symbol = symbol;
+
+ dfaStateMap.insert(closure, dfaState);
+
+ Q_ASSERT(!pendingDFAStates.contains(closure));
+ pendingDFAStates.prepend(closure);
+ }
+
+ result[dfaStateMap.value(state)].transitions.insert(input, dfaStateMap.value(closure));
+ }
+ }
+
+ return result;
+}
+
+QSet<int> NFA::epsilonClosure(const QSet<int> &initialClosure) const
+{
+ QSet<int> closure = initialClosure;
+ closure.reserve(closure.count() * 4);
+
+ QStack<int> stateStack;
+ stateStack.resize(closure.count());
+ qCopy(closure.constBegin(), closure.constEnd(), stateStack.begin());
+
+ while (!stateStack.isEmpty()) {
+ int t = stateStack.pop();
+ const TransitionMap &transitions = states.at(t).transitions;
+ TransitionMap::ConstIterator it = transitions.find(Epsilon);
+ while (it != transitions.constEnd() && it.key() == Epsilon) {
+ const int u = it.value();
+ if (!closure.contains(u)) {
+ closure.insert(u);
+ stateStack.push(u);
+ }
+ ++it;
+ }
+ }
+
+ return closure;
+}
+
+void NFA::setTerminationSymbol(const QString &symbol)
+{
+ states[finalState].symbol = symbol;
+}
+
+void DFA::debug() const
+{
+ qDebug() << "DFA has" << count() << "states";
+
+ for (int i = 0; i < count(); ++i) {
+ const State &s = at(i);
+ if (s.transitions.isEmpty()) {
+ qDebug() << "State" << i << "has no transitions";
+ } else {
+ for (TransitionMap::ConstIterator it = s.transitions.constBegin(),
+ end = s.transitions.constEnd(); it != end; ++it)
+ qDebug() << "transition from state" << i << "to" << it.value() << "through"
+ << (it.key() == Epsilon ? QString("Epsilon") : QString(char(it.key())));
+ }
+ if (!s.symbol.isEmpty())
+ qDebug() << "State" << i << "leads to symbol" << s.symbol;
+ }
+
+}
+
+DFA DFA::minimize() const
+{
+ QVector<bool> inequivalentStates(count() * count());
+ inequivalentStates.fill(false);
+
+ for (int i = 0; i < count(); ++i)
+ for (int j = 0; j < i; ++j) {
+ if (i != j && at(i).symbol != at(j).symbol)
+ inequivalentStates[i * count() + j] = true;
+ }
+
+ bool done;
+ do {
+ done = true;
+ for (int i = 0; i < count(); ++i)
+ for (int j = 0; j < count(); ++j) {
+ if (i == j)
+ continue;
+
+ if (inequivalentStates[i * count() + j])
+ continue;
+
+ if (at(i).transitions.keys() != at(j).transitions.keys()) {
+ inequivalentStates[i * count() + j] = true;
+ done = false;
+ continue;
+ }
+
+ foreach (InputType a, at(i).transitions.keys()) {
+ int r = at(i).transitions.value(a, -1);
+ if (r == -1)
+ continue;
+ int s = at(j).transitions.value(a, -1);
+ if (s == -1)
+ continue;
+
+ if (inequivalentStates[r * count() + s]
+ || r == s) {
+ inequivalentStates[i * count() + j] = true;
+ done = false;
+ break;
+ }
+ }
+ }
+ } while (!done);
+
+ QHash<int, int> statesToEliminate;
+ for (int i = 0; i < count(); ++i)
+ for (int j = 0; j < i; ++j)
+ if (!inequivalentStates[i * count() + j]) {
+ statesToEliminate.insertMulti(i, j);
+ }
+
+ /*
+ qDebug() << "states to eliminiate:" << statesToEliminate.count();;
+ qDebug() << "merging" << statesToEliminate;
+ debug();
+ */
+
+ return *this;
+}
+
+
diff --git a/util/lexgen/nfa.h b/util/lexgen/nfa.h
new file mode 100644
index 0000000000..1f25071b44
--- /dev/null
+++ b/util/lexgen/nfa.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef NFA_H
+#define NFA_H
+
+#include <QMap>
+#include <QHash>
+#include <QString>
+#include <QVector>
+#include <QDebug>
+#include <QStack>
+#include <QByteArray>
+
+#include "global.h"
+
+typedef QHash<InputType, int> TransitionMap;
+
+struct State
+{
+ QString symbol;
+ TransitionMap transitions;
+};
+
+inline QDataStream &operator<<(QDataStream &stream, const State &state)
+{
+ return stream << state.symbol << state.transitions;
+}
+
+inline QDataStream &operator>>(QDataStream &stream, State &state)
+{
+ return stream >> state.symbol >> state.transitions;
+}
+
+struct DFA : public QVector<State>
+{
+ void debug() const;
+ DFA minimize() const;
+};
+
+class NFA
+{
+public:
+ static NFA createSingleInputNFA(InputType input);
+ static NFA createSymbolNFA(const QString &symbol);
+ static NFA createAlternatingNFA(const NFA &a, const NFA &b);
+ static NFA createConcatenatingNFA(const NFA &a, const NFA &b);
+ static NFA createOptionalNFA(const NFA &a);
+
+ // convenience
+ static NFA createStringNFA(const QByteArray &str);
+ static NFA createSetNFA(const QSet<InputType> &set);
+ static NFA createZeroOrOneNFA(const NFA &a);
+ static NFA applyQuantity(const NFA &a, int minOccurrences, int maxOccurrences);
+
+ void setTerminationSymbol(const QString &symbol);
+
+ DFA toDFA() const;
+
+ inline bool isEmpty() const { return states.isEmpty(); }
+ inline int stateCount() const { return states.count(); }
+
+ void debug();
+
+private:
+ void initialize(int size);
+ void addTransition(int from, InputType input, int to);
+ void copyFrom(const NFA &other, int baseState);
+
+ void initializeFromPair(const NFA &a, const NFA &b,
+ int *initialA, int *finalA,
+ int *initialB, int *finalB);
+
+ QSet<int> epsilonClosure(const QSet<int> &initialClosure) const;
+
+ inline void assertValidState(int state)
+ { Q_UNUSED(state); Q_ASSERT(state >= 0); Q_ASSERT(state < states.count()); }
+
+#if defined(AUTOTEST)
+public:
+#endif
+ int initialState;
+ int finalState;
+
+ QVector<State> states;
+};
+
+#endif // NFA_H
+
diff --git a/util/lexgen/re2nfa.cpp b/util/lexgen/re2nfa.cpp
new file mode 100644
index 0000000000..ed58d50b7d
--- /dev/null
+++ b/util/lexgen/re2nfa.cpp
@@ -0,0 +1,547 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "re2nfa.h"
+#include "tokenizer.cpp"
+
+RE2NFA::RE2NFA(const QMap<QString, NFA> &macros, const QSet<InputType> &maxInputSet, Qt::CaseSensitivity cs)
+ : macros(macros), index(0), errorColumn(-1), maxInputSet(maxInputSet), caseSensitivity(cs)
+{
+}
+
+NFA RE2NFA::parse(const QString &expression, int *errCol)
+{
+ tokenize(expression);
+
+ if (symbols.isEmpty())
+ return NFA();
+
+ index = 0;
+
+ NFA result = parseExpr();
+ if (result.isEmpty()) {
+ if (errCol)
+ *errCol = errorColumn;
+ }
+ return result;
+}
+
+NFA RE2NFA::parseExpr()
+{
+ NFA value = parseBranch();
+ while (test(TOK_OR)) {
+ NFA rhs = parseBranch();
+ value = NFA::createAlternatingNFA(value, rhs);
+ }
+ return value;
+}
+
+NFA RE2NFA::parseBranch()
+{
+ NFA value = parsePiece();
+ if (!hasNext())
+ return value;
+ NFA next;
+ do {
+ next = parsePiece();
+ if (!next.isEmpty())
+ value = NFA::createConcatenatingNFA(value, next);
+ } while (!next.isEmpty() && hasNext());
+ return value;
+}
+
+NFA RE2NFA::parsePiece()
+{
+ NFA atom = parseAtom();
+ if (atom.isEmpty() || !hasNext())
+ return atom;
+ return parseMaybeQuantifier(atom);
+}
+
+NFA RE2NFA::parseAtom()
+{
+ // ####
+ switch (next()) {
+ case TOK_STRING:
+ return createCharNFA();
+ case TOK_LPAREN: {
+ NFA subExpr = parseExpr();
+ next(TOK_RPAREN);
+ return subExpr;
+ }
+ case TOK_LBRACE: {
+ QString macroName = lexemUntil(TOK_RBRACE);
+ QMap<QString, NFA>::ConstIterator macro = macros.find(macroName);
+ if (macro == macros.end()) {
+ qWarning("Unknown macro '%s' - probably used before defined", qPrintable(macroName));
+ return NFA();
+ }
+ return *macro;
+ }
+ case TOK_LBRACKET: {
+ NFA set = parseSet();
+ next(TOK_RBRACKET);
+ return set;
+ }
+ case TOK_SEQUENCE:
+ return parseSet2();
+ case TOK_DOT:
+ return NFA::createSetNFA(maxInputSet);
+ default:
+ prev();
+ return NFA();
+ }
+}
+
+NFA RE2NFA::parseMaybeQuantifier(const NFA &nfa)
+{
+ // ####
+ switch (next()) {
+ case TOK_STAR:
+ return NFA::createOptionalNFA(nfa);
+ case TOK_QUESTION:
+ return NFA::createZeroOrOneNFA(nfa);
+ case TOK_PLUS:
+ return NFA::createConcatenatingNFA(nfa, NFA::createOptionalNFA(nfa));
+ case TOK_LBRACE: {
+ const int rewind = index - 1;
+
+ QString lexemBeforeComma;
+ QString lexemAfterComma;
+ bool seenComma = false;
+ forever {
+ if (test(TOK_COMMA)) {
+ if (seenComma) {
+ errorColumn = symbol().column;
+ return NFA();
+ }
+ seenComma = true;
+ } else if (test(TOK_RBRACE)) {
+ break;
+ } else {
+ next(TOK_STRING);
+ if (seenComma)
+ lexemAfterComma += symbol().lexem;
+ else
+ lexemBeforeComma += symbol().lexem;
+ }
+ }
+ bool isNumber = false;
+ int min = lexemBeforeComma.toInt(&isNumber);
+ if (!isNumber) {
+ index = rewind;
+ return nfa;
+ }
+ int max = min;
+ if (seenComma) {
+ max = lexemAfterComma.toInt(&isNumber);
+ if (!isNumber) {
+ errorColumn = symbol().column;
+ return NFA();
+ }
+ }
+ return NFA::applyQuantity(nfa, min, max);
+ }
+ default:
+ prev();
+ return nfa;
+ }
+}
+
+NFA RE2NFA::parseSet()
+{
+ QSet<InputType> set;
+ bool negate = false;
+
+ next(TOK_STRING);
+
+ do {
+ Q_ASSERT(symbol().lexem.length() == 1);
+ // ###
+ QChar ch = symbol().lexem.at(0);
+ if (set.isEmpty() && ch == QLatin1Char('^')) {
+ negate = true;
+ continue;
+ }
+
+ // look ahead for ranges like a-z
+ bool rangeFound = false;
+ if (test(TOK_STRING)) {
+ if (symbol().lexem.length() == 1
+ && symbol().lexem.at(0) == QLatin1Char('-')) {
+ next(TOK_STRING);
+ Q_ASSERT(symbol().lexem.length() == 1);
+ QChar last = symbol().lexem.at(0);
+
+ if (ch.unicode() > last.unicode())
+ qSwap(ch, last);
+
+ for (ushort i = ch.unicode(); i <= last.unicode(); ++i) {
+ if (caseSensitivity == Qt::CaseInsensitive) {
+ set.insert(QChar(i).toLower().unicode());
+ } else {
+ set.insert(i);
+ }
+ }
+
+ rangeFound = true;
+ } else {
+ prev();
+ }
+ }
+
+ if (!rangeFound) {
+ if (caseSensitivity == Qt::CaseInsensitive) {
+ set.insert(ch.toLower().unicode());
+ } else {
+ set.insert(ch.unicode());
+ }
+ }
+ } while (test(TOK_STRING));
+
+ if (negate) {
+ QSet<InputType> negatedSet = maxInputSet;
+ negatedSet.subtract(set);
+ set = negatedSet;
+ }
+
+ return NFA::createSetNFA(set);
+}
+
+NFA RE2NFA::parseSet2()
+{
+ QSet<InputType> set;
+ bool negate = false;
+
+ QString str = symbol().lexem;
+ // strip off brackets
+ str.chop(1);
+ str.remove(0, 1);
+
+ int i = 0;
+ while (i < str.length()) {
+ // ###
+ QChar ch = str.at(i++);
+ if (set.isEmpty() && ch == QLatin1Char('^')) {
+ negate = true;
+ continue;
+ }
+
+ // look ahead for ranges like a-z
+ bool rangeFound = false;
+ if (i < str.length() - 1 && str.at(i) == QLatin1Char('-')) {
+ ++i;
+ QChar last = str.at(i++);
+
+ if (ch.unicode() > last.unicode())
+ qSwap(ch, last);
+
+ for (ushort i = ch.unicode(); i <= last.unicode(); ++i) {
+ if (caseSensitivity == Qt::CaseInsensitive) {
+ set.insert(QChar(i).toLower().unicode());
+ } else {
+ set.insert(i);
+ }
+ }
+
+ rangeFound = true;
+ }
+
+ if (!rangeFound) {
+ if (caseSensitivity == Qt::CaseInsensitive) {
+ set.insert(ch.toLower().unicode());
+ } else {
+ set.insert(ch.unicode());
+ }
+ }
+ }
+
+ if (negate) {
+ QSet<InputType> negatedSet = maxInputSet;
+ negatedSet.subtract(set);
+ set = negatedSet;
+ }
+
+ return NFA::createSetNFA(set);
+}
+NFA RE2NFA::createCharNFA()
+{
+ NFA nfa;
+ // ####
+ if (caseSensitivity == Qt::CaseInsensitive) {
+ nfa = NFA::createStringNFA(symbol().lexem.toLower().toLatin1());
+ } else {
+ nfa = NFA::createStringNFA(symbol().lexem.toLatin1());
+ }
+ return nfa;
+}
+
+static inline int skipQuote(const QString &str, int pos)
+{
+ while (pos < str.length()
+ && str.at(pos) != QLatin1Char('"')) {
+ if (str.at(pos) == QLatin1Char('\\')) {
+ ++pos;
+ if (pos >= str.length())
+ break;
+ }
+ ++pos;
+ }
+ if (pos < str.length())
+ ++pos;
+ return pos;
+}
+
+#if 0
+static const char*tokStr(Token t)
+{
+ switch (t) {
+ case TOK_INVALID: return "TOK_INVALID";
+ case TOK_STRING: return "TOK_STRING";
+ case TOK_LBRACE: return "TOK_LBRACE";
+ case TOK_RBRACE: return "TOK_RBRACE";
+ case TOK_LBRACKET: return "TOK_LBRACKET";
+ case TOK_RBRACKET: return "TOK_RBRACKET";
+ case TOK_LPAREN: return "TOK_LPAREN";
+ case TOK_RPAREN: return "TOK_RPAREN";
+ case TOK_COMMA: return "TOK_COMMA";
+ case TOK_STAR: return "TOK_STAR";
+ case TOK_OR: return "TOK_OR";
+ case TOK_QUESTION: return "TOK_QUESTION";
+ case TOK_DOT: return "TOK_DOT";
+ case TOK_PLUS: return "TOK_PLUS";
+ case TOK_SEQUENCE: return "TOK_SEQUENCE";
+ case TOK_QUOTED_STRING: return "TOK_QUOTED_STRING";
+ }
+ return "";
+}
+#endif
+
+void RE2NFA::tokenize(const QString &input)
+{
+ symbols.clear();
+#if 1
+ RegExpTokenizer tokenizer(input);
+ Symbol sym;
+ int tok = tokenizer.lex();
+ while (tok != -1) {
+ Symbol sym;
+ sym.token = static_cast<Token>(tok);
+ sym.lexem = input.mid(tokenizer.lexemStart, tokenizer.lexemLength);
+
+ if (sym.token == TOK_QUOTED_STRING) {
+ sym.lexem.chop(1);
+ sym.lexem.remove(0, 1);
+ sym.token = TOK_STRING;
+ }
+
+ if (sym.token == TOK_STRING || sym.token == TOK_SEQUENCE) {
+ for (int i = 0; i < sym.lexem.length(); ++i) {
+ if (sym.lexem.at(i) == '\\') {
+ if (i >= sym.lexem.length() - 1)
+ break;
+ QChar ch = sym.lexem.at(i + 1);
+ if (ch == QLatin1Char('n')) {
+ ch = '\n';
+ } else if (ch == QLatin1Char('r')) {
+ ch = '\r';
+ } else if (ch == QLatin1Char('t')) {
+ ch = '\t';
+ } else if (ch == QLatin1Char('f')) {
+ ch = '\f';
+ }
+ sym.lexem.replace(i, 2, ch);
+ }
+ }
+ }
+
+ /*
+ if (sym.token == TOK_SEQUENCE) {
+ Symbol s;
+ s.token = TOK_LBRACKET;
+ s.lexem = "[";
+ symbols.append(s);
+
+ for (int i = 1; i < sym.lexem.length() - 1; ++i) {
+ s.token = TOK_STRING;
+ s.lexem = sym.lexem.at(i);
+ symbols.append(s);
+ }
+
+ s.token = TOK_RBRACKET;
+ s.lexem = "]";
+ symbols.append(s);
+
+ tok = tokenizer.lex();
+ continue;
+ }
+ */
+
+ symbols.append(sym);
+ tok = tokenizer.lex();
+ }
+#else
+ int pos = 0;
+ bool insideSet = false;
+ while (pos < input.length()) {
+ QChar ch = input.at(pos);
+
+ Symbol sym;
+ sym.column = pos;
+ sym.token = TOK_INVALID;
+ sym.lexem = QString(ch);
+ switch (ch.toLatin1()) {
+ case '"': {
+ if (insideSet) {
+ sym.token = TOK_STRING;
+ sym.lexem = QString(ch);
+ symbols += sym;
+ ++pos;
+ continue;
+ }
+ if (pos + 1 >= input.length())
+ return;
+ int quoteEnd = skipQuote(input, pos + 1);
+ sym.token = TOK_STRING;
+ sym.lexem = input.mid(pos + 1, quoteEnd - pos - 2);
+ symbols += sym;
+ pos = quoteEnd;
+ continue;
+ }
+ case '{':
+ sym.token = (insideSet ? TOK_STRING : TOK_LBRACE);
+ break;
+ case '}':
+ sym.token = (insideSet ? TOK_STRING : TOK_RBRACE);
+ break;
+ case '[':
+ insideSet = true;
+ sym.token = TOK_LBRACKET;
+ break;
+ case ']':
+ insideSet = false;
+ sym.token = TOK_RBRACKET;
+ break;
+ case '(':
+ sym.token = (insideSet ? TOK_STRING : TOK_LPAREN);
+ break;
+ case ')':
+ sym.token = (insideSet ? TOK_STRING : TOK_RPAREN);
+ break;
+ case ',':
+ sym.token = (insideSet ? TOK_STRING : TOK_COMMA);
+ break;
+ case '*':
+ sym.token = (insideSet ? TOK_STRING : TOK_STAR);
+ break;
+ case '|':
+ sym.token = (insideSet ? TOK_STRING : TOK_OR);
+ break;
+ case '?':
+ sym.token = (insideSet ? TOK_STRING : TOK_QUESTION);
+ break;
+ case '.':
+ sym.token = (insideSet ? TOK_STRING : TOK_DOT);
+ break;
+ case '+':
+ sym.token = (insideSet ? TOK_STRING : TOK_PLUS);
+ break;
+ case '\\':
+ ++pos;
+ if (pos >= input.length())
+ return;
+ ch = input.at(pos);
+ if (ch == QLatin1Char('n')) {
+ ch = '\n';
+ } else if (ch == QLatin1Char('r')) {
+ ch = '\r';
+ } else if (ch == QLatin1Char('t')) {
+ ch = '\t';
+ } else if (ch == QLatin1Char('f')) {
+ ch = '\f';
+ }
+ // fall through
+ default:
+ sym.token = TOK_STRING;
+ sym.lexem = QString(ch);
+ symbols += sym;
+ ++pos;
+ continue;
+ }
+ symbols += sym;
+ ++pos;
+ }
+#endif
+#if 0
+ foreach (Symbol s, symbols) {
+ qDebug() << "Tok" << tokStr(s.token) << "lexem" << s.lexem;
+ }
+#endif
+}
+
+bool RE2NFA::next(Token t)
+{
+ if (hasNext() && next() == t)
+ return true;
+ errorColumn = symbol().column;
+ Q_ASSERT(false);
+ return false;
+}
+
+bool RE2NFA::test(Token t)
+{
+ if (index >= symbols.count())
+ return false;
+ if (symbols.at(index).token == t) {
+ ++index;
+ return true;
+ }
+ return false;
+}
+
+QString RE2NFA::lexemUntil(Token t)
+{
+ QString lexem;
+ while (hasNext() && next() != t)
+ lexem += symbol().lexem;
+ return lexem;
+}
+
diff --git a/util/lexgen/re2nfa.h b/util/lexgen/re2nfa.h
new file mode 100644
index 0000000000..fc10bea770
--- /dev/null
+++ b/util/lexgen/re2nfa.h
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef RE2NFA_H
+#define RE2NFA_H
+
+#include "nfa.h"
+#include <QSet>
+
+class RE2NFA
+{
+public:
+ RE2NFA(const QMap<QString, NFA> &macros, const QSet<InputType> &maxInputSet, Qt::CaseSensitivity cs);
+
+ NFA parse(const QString &expression, int *errorColumn = 0);
+
+private:
+ NFA parseExpr();
+ NFA parseBranch();
+ NFA parsePiece();
+ NFA parseAtom();
+ NFA parseMaybeQuantifier(const NFA &nfa);
+ NFA parseSet();
+ NFA parseSet2();
+
+ NFA createCharNFA();
+
+private:
+ friend class RegExpTokenizer;
+
+ enum Token {
+ TOK_INVALID,
+ TOK_STRING,
+ TOK_LBRACE, // {
+ TOK_RBRACE, // }
+ TOK_LBRACKET, // [
+ TOK_RBRACKET, // ]
+ TOK_LPAREN, // (
+ TOK_RPAREN, // )
+ TOK_COMMA,
+ TOK_STAR,
+ TOK_OR,
+ TOK_QUESTION,
+ TOK_DOT,
+ TOK_PLUS,
+ TOK_SEQUENCE,
+ TOK_QUOTED_STRING
+ };
+
+ struct Symbol
+ {
+ inline Symbol() : token(TOK_INVALID), column(-1) {}
+ inline Symbol(Token t, const QString &l = QString()) : token(t), lexem(l), column(-1) {}
+ Token token;
+ QString lexem;
+ int column;
+ };
+
+ inline bool hasNext() const { return index < symbols.count(); }
+ inline Token next() { return symbols.at(index++).token; }
+ bool next(Token t);
+ bool test(Token t);
+ inline void prev() { index--; }
+ inline const Symbol &symbol() const { return symbols.at(index - 1); }
+ QString lexemUntil(Token t);
+
+ void tokenize(const QString &input);
+
+ QMap<QString, NFA> macros;
+ QVector<Symbol> symbols;
+ int index;
+ int errorColumn;
+ const QSet<InputType> maxInputSet;
+ Qt::CaseSensitivity caseSensitivity;
+};
+
+#endif // RE2NFA_H
+
diff --git a/util/lexgen/test.lexgen b/util/lexgen/test.lexgen
new file mode 100644
index 0000000000..fd532fd549
--- /dev/null
+++ b/util/lexgen/test.lexgen
@@ -0,0 +1,9 @@
+[Options]
+case-insensitive
+classname = TestScanner
+
+[Tokens]
+TOK_C = [abcd]
+TOK_B = [bc]
+TOK_A = a
+
diff --git a/util/lexgen/tests/testdata/backtrack1/input b/util/lexgen/tests/testdata/backtrack1/input
new file mode 100644
index 0000000000..f5099b509d
--- /dev/null
+++ b/util/lexgen/tests/testdata/backtrack1/input
@@ -0,0 +1 @@
+LETX
diff --git a/util/lexgen/tests/testdata/backtrack1/output b/util/lexgen/tests/testdata/backtrack1/output
new file mode 100644
index 0000000000..6893deb014
--- /dev/null
+++ b/util/lexgen/tests/testdata/backtrack1/output
@@ -0,0 +1 @@
+TOK_LET|LET
diff --git a/util/lexgen/tests/testdata/backtrack1/rules.lexgen b/util/lexgen/tests/testdata/backtrack1/rules.lexgen
new file mode 100644
index 0000000000..ade8a15546
--- /dev/null
+++ b/util/lexgen/tests/testdata/backtrack1/rules.lexgen
@@ -0,0 +1,3 @@
+[Tokens]
+TOK_LET = LET
+TOK_LETXX = LETXX
diff --git a/util/lexgen/tests/testdata/backtrack2/input b/util/lexgen/tests/testdata/backtrack2/input
new file mode 100644
index 0000000000..59ff5b7301
--- /dev/null
+++ b/util/lexgen/tests/testdata/backtrack2/input
@@ -0,0 +1 @@
+LETXTRA
diff --git a/util/lexgen/tests/testdata/backtrack2/output b/util/lexgen/tests/testdata/backtrack2/output
new file mode 100644
index 0000000000..348b382818
--- /dev/null
+++ b/util/lexgen/tests/testdata/backtrack2/output
@@ -0,0 +1,2 @@
+TOK_LET|LET
+TOK_XTRA|XTRA
diff --git a/util/lexgen/tests/testdata/backtrack2/rules.lexgen b/util/lexgen/tests/testdata/backtrack2/rules.lexgen
new file mode 100644
index 0000000000..6f16986e83
--- /dev/null
+++ b/util/lexgen/tests/testdata/backtrack2/rules.lexgen
@@ -0,0 +1,4 @@
+[Tokens]
+TOK_LET = LET
+TOK_LETXX = LETXX
+TOK_XTRA = XTRA
diff --git a/util/lexgen/tests/testdata/casesensitivity/input b/util/lexgen/tests/testdata/casesensitivity/input
new file mode 100644
index 0000000000..72b7f4869c
--- /dev/null
+++ b/util/lexgen/tests/testdata/casesensitivity/input
@@ -0,0 +1 @@
+abcdAbcDABCDeFgEFGefgEfghiHIHihI
diff --git a/util/lexgen/tests/testdata/casesensitivity/output b/util/lexgen/tests/testdata/casesensitivity/output
new file mode 100644
index 0000000000..3a4e819060
--- /dev/null
+++ b/util/lexgen/tests/testdata/casesensitivity/output
@@ -0,0 +1,14 @@
+TOK_AB|ab
+TOK_CD|cd
+TOK_AB|Ab
+TOK_CD|cD
+TOK_AB|AB
+TOK_CD|CD
+TOK_EFG|eFg
+TOK_EFG|EFG
+TOK_EFG|efg
+TOK_EFG|Efg
+TOK_HI|hi
+TOK_HI|HI
+TOK_HI|Hi
+TOK_HI|hI
diff --git a/util/lexgen/tests/testdata/casesensitivity/rules.lexgen b/util/lexgen/tests/testdata/casesensitivity/rules.lexgen
new file mode 100644
index 0000000000..3347587ffe
--- /dev/null
+++ b/util/lexgen/tests/testdata/casesensitivity/rules.lexgen
@@ -0,0 +1,7 @@
+[Options]
+case-insensitive
+[Tokens]
+TOK_AB = ab
+TOK_CD = cd
+TOK_EFG = [e-g]{3}
+TOK_HI = [hi]{2}
diff --git a/util/lexgen/tests/testdata/comments/input b/util/lexgen/tests/testdata/comments/input
new file mode 100644
index 0000000000..03873e044a
--- /dev/null
+++ b/util/lexgen/tests/testdata/comments/input
@@ -0,0 +1 @@
+/* comment with stuff *//*another comment with * stars * inside*/
diff --git a/util/lexgen/tests/testdata/comments/output b/util/lexgen/tests/testdata/comments/output
new file mode 100644
index 0000000000..2395ad1873
--- /dev/null
+++ b/util/lexgen/tests/testdata/comments/output
@@ -0,0 +1,2 @@
+TOK_COMMENT|/* comment with stuff */
+TOK_COMMENT|/*another comment with * stars * inside*/
diff --git a/util/lexgen/tests/testdata/comments/rules.lexgen b/util/lexgen/tests/testdata/comments/rules.lexgen
new file mode 100644
index 0000000000..490c759cc5
--- /dev/null
+++ b/util/lexgen/tests/testdata/comments/rules.lexgen
@@ -0,0 +1,2 @@
+[Tokens]
+TOK_COMMENT = \/\*[^*]*\*+([^/*][^*]*\*+)*\/
diff --git a/util/lexgen/tests/testdata/dot/input b/util/lexgen/tests/testdata/dot/input
new file mode 100644
index 0000000000..e5b0ad6e91
--- /dev/null
+++ b/util/lexgen/tests/testdata/dot/input
@@ -0,0 +1 @@
+afbcxd
diff --git a/util/lexgen/tests/testdata/dot/output b/util/lexgen/tests/testdata/dot/output
new file mode 100644
index 0000000000..6a9afd4ced
--- /dev/null
+++ b/util/lexgen/tests/testdata/dot/output
@@ -0,0 +1,2 @@
+TOK_AB|afb
+TOK_CD|cxd
diff --git a/util/lexgen/tests/testdata/dot/rules.lexgen b/util/lexgen/tests/testdata/dot/rules.lexgen
new file mode 100644
index 0000000000..03873a71bf
--- /dev/null
+++ b/util/lexgen/tests/testdata/dot/rules.lexgen
@@ -0,0 +1,3 @@
+[Tokens]
+TOK_AB = a.b
+TOK_CD = c.d
diff --git a/util/lexgen/tests/testdata/negation/input b/util/lexgen/tests/testdata/negation/input
new file mode 100644
index 0000000000..9447b8005d
--- /dev/null
+++ b/util/lexgen/tests/testdata/negation/input
@@ -0,0 +1 @@
+aycabd
diff --git a/util/lexgen/tests/testdata/negation/output b/util/lexgen/tests/testdata/negation/output
new file mode 100644
index 0000000000..0b73263fb9
--- /dev/null
+++ b/util/lexgen/tests/testdata/negation/output
@@ -0,0 +1,2 @@
+TOK_A|ayc
+TOK_B|abd
diff --git a/util/lexgen/tests/testdata/negation/rules.lexgen b/util/lexgen/tests/testdata/negation/rules.lexgen
new file mode 100644
index 0000000000..179810b3a0
--- /dev/null
+++ b/util/lexgen/tests/testdata/negation/rules.lexgen
@@ -0,0 +1,3 @@
+[Tokens]
+TOK_A = a[^b]c
+TOK_B = abd
diff --git a/util/lexgen/tests/testdata/quoteinset/input b/util/lexgen/tests/testdata/quoteinset/input
new file mode 100644
index 0000000000..5a9b6804a9
--- /dev/null
+++ b/util/lexgen/tests/testdata/quoteinset/input
@@ -0,0 +1 @@
+"a
diff --git a/util/lexgen/tests/testdata/quoteinset/output b/util/lexgen/tests/testdata/quoteinset/output
new file mode 100644
index 0000000000..7ba8890d5d
--- /dev/null
+++ b/util/lexgen/tests/testdata/quoteinset/output
@@ -0,0 +1 @@
+TOK_QUOTEA|"a
diff --git a/util/lexgen/tests/testdata/quoteinset/rules.lexgen b/util/lexgen/tests/testdata/quoteinset/rules.lexgen
new file mode 100644
index 0000000000..9838276a7e
--- /dev/null
+++ b/util/lexgen/tests/testdata/quoteinset/rules.lexgen
@@ -0,0 +1,2 @@
+[Tokens]
+TOK_QUOTEA = ["]a
diff --git a/util/lexgen/tests/testdata/quotes/input b/util/lexgen/tests/testdata/quotes/input
new file mode 100644
index 0000000000..ac5445055d
--- /dev/null
+++ b/util/lexgen/tests/testdata/quotes/input
@@ -0,0 +1 @@
+quotedstring
diff --git a/util/lexgen/tests/testdata/quotes/output b/util/lexgen/tests/testdata/quotes/output
new file mode 100644
index 0000000000..c538e32d75
--- /dev/null
+++ b/util/lexgen/tests/testdata/quotes/output
@@ -0,0 +1 @@
+TOK_STR|quotedstring
diff --git a/util/lexgen/tests/testdata/quotes/rules.lexgen b/util/lexgen/tests/testdata/quotes/rules.lexgen
new file mode 100644
index 0000000000..d528cdd589
--- /dev/null
+++ b/util/lexgen/tests/testdata/quotes/rules.lexgen
@@ -0,0 +1,2 @@
+[Tokens]
+TOK_STR = "quotedstring"
diff --git a/util/lexgen/tests/testdata/simple/input b/util/lexgen/tests/testdata/simple/input
new file mode 100644
index 0000000000..acbe86c7c8
--- /dev/null
+++ b/util/lexgen/tests/testdata/simple/input
@@ -0,0 +1 @@
+abcd
diff --git a/util/lexgen/tests/testdata/simple/output b/util/lexgen/tests/testdata/simple/output
new file mode 100644
index 0000000000..a37a58ea31
--- /dev/null
+++ b/util/lexgen/tests/testdata/simple/output
@@ -0,0 +1,2 @@
+TOK_AB|ab
+TOK_CD|cd
diff --git a/util/lexgen/tests/testdata/simple/rules.lexgen b/util/lexgen/tests/testdata/simple/rules.lexgen
new file mode 100644
index 0000000000..5d958c429a
--- /dev/null
+++ b/util/lexgen/tests/testdata/simple/rules.lexgen
@@ -0,0 +1,3 @@
+[Tokens]
+TOK_AB = ab
+TOK_CD = cd
diff --git a/util/lexgen/tests/testdata/subsets1/input b/util/lexgen/tests/testdata/subsets1/input
new file mode 100644
index 0000000000..47f66d1c94
--- /dev/null
+++ b/util/lexgen/tests/testdata/subsets1/input
@@ -0,0 +1 @@
+abaf
diff --git a/util/lexgen/tests/testdata/subsets1/output b/util/lexgen/tests/testdata/subsets1/output
new file mode 100644
index 0000000000..75dd9361bc
--- /dev/null
+++ b/util/lexgen/tests/testdata/subsets1/output
@@ -0,0 +1,2 @@
+TOK_AB|ab
+TOK_AZ|af
diff --git a/util/lexgen/tests/testdata/subsets1/rules.lexgen b/util/lexgen/tests/testdata/subsets1/rules.lexgen
new file mode 100644
index 0000000000..94f51a91e2
--- /dev/null
+++ b/util/lexgen/tests/testdata/subsets1/rules.lexgen
@@ -0,0 +1,3 @@
+[Tokens]
+TOK_AB = ab
+TOK_AZ = a[a-z]
diff --git a/util/lexgen/tests/testdata/subsets2/input b/util/lexgen/tests/testdata/subsets2/input
new file mode 100644
index 0000000000..4d0dc3ad82
--- /dev/null
+++ b/util/lexgen/tests/testdata/subsets2/input
@@ -0,0 +1 @@
+abd
diff --git a/util/lexgen/tests/testdata/subsets2/output b/util/lexgen/tests/testdata/subsets2/output
new file mode 100644
index 0000000000..d5a7bc5bb7
--- /dev/null
+++ b/util/lexgen/tests/testdata/subsets2/output
@@ -0,0 +1,3 @@
+TOK_A|a
+TOK_B|b
+TOK_D|d
diff --git a/util/lexgen/tests/testdata/subsets2/rules.lexgen b/util/lexgen/tests/testdata/subsets2/rules.lexgen
new file mode 100644
index 0000000000..e0a76294bc
--- /dev/null
+++ b/util/lexgen/tests/testdata/subsets2/rules.lexgen
@@ -0,0 +1,4 @@
+[Tokens]
+TOK_D = [abcd]
+TOK_B = [bc]
+TOK_A = a
diff --git a/util/lexgen/tests/tests.pro b/util/lexgen/tests/tests.pro
new file mode 100644
index 0000000000..eb04439a13
--- /dev/null
+++ b/util/lexgen/tests/tests.pro
@@ -0,0 +1,6 @@
+CONFIG += qtestlib
+SOURCES += tst_lexgen.cpp
+TARGET = tst_lexgen
+include(../lexgen.pri)
+QT = core
+DEFINES += SRCDIR=\\\"$$PWD\\\"
diff --git a/util/lexgen/tests/tst_lexgen.cpp b/util/lexgen/tests/tst_lexgen.cpp
new file mode 100644
index 0000000000..6e50b15d76
--- /dev/null
+++ b/util/lexgen/tests/tst_lexgen.cpp
@@ -0,0 +1,285 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#define AUTOTEST
+#include "../main.cpp"
+
+class tst_LexGen : public QObject
+{
+ Q_OBJECT
+private slots:
+ void nfa_singleInput();
+ void nfa_alternating();
+ void nfa_concatenating();
+ void nfa_optional();
+ void nfa_toDFA_data();
+ void nfa_toDFA();
+ void lexgen_data();
+ void lexgen();
+};
+
+void tst_LexGen::nfa_singleInput()
+{
+ NFA nfa = NFA::createSingleInputNFA('a');
+
+ QCOMPARE(nfa.initialState, 0);
+ QCOMPARE(nfa.finalState, 1);
+
+ QCOMPARE(nfa.states.count(), 2);
+
+ QCOMPARE(nfa.states.at(0).transitions.count(), 1);
+ QVERIFY(nfa.states.at(0).transitions.contains('a'));
+ QCOMPARE(nfa.states.at(0).transitions.values('a').count(), 1);
+ QCOMPARE(nfa.states.at(0).transitions.value('a'), nfa.finalState);
+
+ QVERIFY(nfa.states.at(1).transitions.isEmpty());
+}
+
+void tst_LexGen::nfa_alternating()
+{
+ NFA a = NFA::createSingleInputNFA('a');
+ NFA b = NFA::createSingleInputNFA('b');
+ NFA nfa = NFA::createAlternatingNFA(a, b);
+
+ const int initialA = 1;
+ const int finalA = 2;
+
+ const int initialB = 3;
+ const int finalB = 4;
+
+ QCOMPARE(nfa.states.count(), 6);
+
+ QCOMPARE(nfa.initialState, 0);
+ QCOMPARE(nfa.finalState, 5);
+
+ QList<int> initialTransitions = nfa.states.at(0).transitions.values(Epsilon);
+ QCOMPARE(initialTransitions.count(), 2);
+ QVERIFY(initialTransitions.contains(initialA));
+ QVERIFY(initialTransitions.contains(initialB));
+
+ // no need to test the individual a and b NFAs, the other
+ // autotest already takes care of that. Just check whether
+ // the epsilon transitions to the final state exist.
+
+ QCOMPARE(nfa.states.at(finalA).transitions.count(), 1);
+ QCOMPARE(nfa.states.at(finalA).transitions.values(Epsilon).count(), 1);
+ QCOMPARE(nfa.states.at(finalA).transitions.value(Epsilon), nfa.finalState);
+
+ QCOMPARE(nfa.states.at(finalB).transitions.count(), 1);
+ QCOMPARE(nfa.states.at(finalB).transitions.values(Epsilon).count(), 1);
+ QCOMPARE(nfa.states.at(finalB).transitions.value(Epsilon), nfa.finalState);
+}
+
+void tst_LexGen::nfa_concatenating()
+{
+ NFA a = NFA::createSingleInputNFA('a');
+ NFA b = NFA::createSingleInputNFA('b');
+ NFA nfa = NFA::createConcatenatingNFA(a, b);
+
+ const int initialA = 1;
+ const int finalA = 2;
+
+ const int initialB = 3;
+ const int finalB = 4;
+
+ QCOMPARE(nfa.states.count(), 6);
+
+ QCOMPARE(nfa.initialState, 0);
+ QCOMPARE(nfa.finalState, 5);
+
+ QCOMPARE(nfa.states.at(0).transitions.count(), 1);
+ QCOMPARE(nfa.states.at(0).transitions.values(Epsilon).count(), 1);
+ QCOMPARE(nfa.states.at(0).transitions.value(Epsilon), initialA);
+
+ QCOMPARE(nfa.states.at(finalA).transitions.values(Epsilon).count(), 1);
+ QCOMPARE(nfa.states.at(finalA).transitions.value(Epsilon), initialB);
+
+ QCOMPARE(nfa.states.at(finalB).transitions.values(Epsilon).count(), 1);
+ QCOMPARE(nfa.states.at(finalB).transitions.value(Epsilon), nfa.finalState);
+}
+
+void tst_LexGen::nfa_optional()
+{
+ NFA a = NFA::createSingleInputNFA('a');
+ NFA nfa = NFA::createOptionalNFA(a);
+
+ const int initialA = 1;
+ const int finalA = 2;
+
+ QCOMPARE(nfa.states.count(), 4);
+
+ QCOMPARE(nfa.initialState, 0);
+ QCOMPARE(nfa.finalState, 3);
+
+ QCOMPARE(nfa.states.at(0).transitions.count(), 2);
+ QList<int> initialTransitions = nfa.states.at(0).transitions.values(Epsilon);
+ QVERIFY(initialTransitions.contains(nfa.finalState));
+ QVERIFY(initialTransitions.contains(initialA));
+
+ QList<int> finalEpsilonATransitions = nfa.states.at(finalA).transitions.values(Epsilon);
+ QVERIFY(finalEpsilonATransitions.contains(initialA));
+ QVERIFY(finalEpsilonATransitions.contains(nfa.finalState));
+}
+
+Q_DECLARE_METATYPE(NFA);
+Q_DECLARE_METATYPE(DFA);
+
+void tst_LexGen::nfa_toDFA_data()
+{
+ QTest::addColumn<NFA>("nfa");
+ QTest::addColumn<DFA>("expectedDFA");
+
+ NFA a = NFA::createSingleInputNFA('a');
+ NFA b = NFA::createSingleInputNFA('b');
+ NFA c = NFA::createSingleInputNFA('c');
+
+ NFA nfa;
+ DFA dfa;
+
+ dfa.clear();
+ dfa.resize(3);
+ dfa[0].transitions.insert('a', 1);
+ dfa[1].transitions.insert('b', 2);
+
+ nfa = NFA::createConcatenatingNFA(a, b);
+
+ QTest::newRow("simple concat") << nfa << dfa;
+
+ dfa.clear();
+ dfa.resize(3);
+ dfa[0].transitions.insert('a', 1);
+ dfa[0].transitions.insert('b', 2);
+
+ nfa = NFA::createAlternatingNFA(a, b);
+
+ QTest::newRow("simple alternate") << nfa << dfa;
+
+}
+
+void tst_LexGen::nfa_toDFA()
+{
+ QFETCH(NFA, nfa);
+ QFETCH(DFA, expectedDFA);
+
+ DFA dfa = nfa.toDFA();
+
+ QCOMPARE(dfa.count(), expectedDFA.count());
+ for (int i = 0; i < dfa.count(); ++i) {
+ if (dfa.at(i).transitions != expectedDFA.at(i).transitions) {
+ qDebug() << "DFAs differ in state" << i;
+ qDebug() << "NFA:";
+ nfa.debug();
+ qDebug() << "Actual DFA:";
+ dfa.debug();
+ qDebug() << "Expected DFA:";
+ expectedDFA.debug();
+ QVERIFY(false);
+ }
+ }
+}
+
+void tst_LexGen::lexgen_data()
+{
+ QTest::addColumn<QString>("ruleFile");
+ QTest::addColumn<QString>("input");
+ QTest::addColumn<QString>("expectedOutput");
+
+ QDir d(QString(SRCDIR));
+ d.cd("testdata");
+ foreach (QString test, d.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
+ QString dir = d.absoluteFilePath(test) + '/';
+ QTest::newRow(qPrintable(test))
+ << dir + "rules.lexgen"
+ << dir + "input"
+ << dir + "output"
+ ;
+ }
+}
+
+void tst_LexGen::lexgen()
+{
+ QFETCH(QString, ruleFile);
+ QFETCH(QString, input);
+ QFETCH(QString, expectedOutput);
+
+ Config conf;
+ QVERIFY(loadConfig(ruleFile, &conf));
+ DFA dfa = generateMachine(conf);
+ QVERIFY(!dfa.isEmpty());
+ conf.debug = true;
+
+ QFile f(input);
+ QVERIFY(f.open(QIODevice::ReadOnly));
+ input = QString::fromUtf8(f.readAll());
+ f.close();
+ if (input.endsWith(QLatin1Char('\n')))
+ input.chop(1);
+// machine.debug();
+ bool ok = false;
+ QList<Symbol> symbols = tokenize(dfa, input, &conf, &ok);
+ QVERIFY(ok);
+ f.setFileName(expectedOutput);
+ QVERIFY(f.open(QIODevice::ReadOnly));
+ QStringList lines;
+ while (!f.atEnd()) {
+ QString line = QString::fromUtf8(f.readLine());
+ if (line.endsWith(QLatin1Char('\n')))
+ line.chop(1);
+ lines << line;
+ }
+ f.close();
+
+// dfa.debug();
+ QCOMPARE(lines.count(), symbols.count());
+
+ for (int i = 0; i < lines.count(); ++i) {
+ QStringList l = lines.at(i).split(QChar::fromLatin1('|'));
+ QCOMPARE(l.count(), 2);
+ QString expectedToken = l.at(0);
+ QString expectedLexem = l.at(1);
+ QCOMPARE(symbols.at(i).token, expectedToken);
+ QCOMPARE(symbols.at(i).lexem, expectedLexem);
+ }
+}
+
+QTEST_MAIN(tst_LexGen)
+#include "tst_lexgen.moc"
diff --git a/util/lexgen/tokenizer.cpp b/util/lexgen/tokenizer.cpp
new file mode 100644
index 0000000000..401fa921bc
--- /dev/null
+++ b/util/lexgen/tokenizer.cpp
@@ -0,0 +1,237 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+// auto generated. DO NOT EDIT.
+class RegExpTokenizer
+{
+public:
+ RegExpTokenizer(const QString &inp);
+
+ inline QChar next() {
+ return (pos < input.length()) ? input.at(pos++) : QChar();
+ }
+ int lex();
+
+ QString input;
+ int pos;
+ int lexemStart;
+ int lexemLength;
+};
+
+RegExpTokenizer::RegExpTokenizer(const QString &inp)
+{
+ input = inp;
+ pos = 0;
+ lexemStart = 0;
+ lexemLength = 0;
+}
+
+
+int RegExpTokenizer::lex()
+{
+ lexemStart = pos;
+ lexemLength = 0;
+ int lastAcceptingPos = -1;
+ int token = -1;
+ QChar ch;
+
+ // initial state
+ ch = next();
+ if (ch.unicode() >= 1 && ch.unicode() <= 33)
+ goto state_1;
+ if (ch.unicode() == 34)
+ goto state_2;
+ if (ch.unicode() >= 35 && ch.unicode() <= 39)
+ goto state_1;
+ if (ch.unicode() == 40) {
+ token = RE2NFA::TOK_LPAREN;
+ goto found;
+ }
+ if (ch.unicode() == 41) {
+ token = RE2NFA::TOK_RPAREN;
+ goto found;
+ }
+ if (ch.unicode() == 42) {
+ token = RE2NFA::TOK_STAR;
+ goto found;
+ }
+ if (ch.unicode() == 43) {
+ token = RE2NFA::TOK_PLUS;
+ goto found;
+ }
+ if (ch.unicode() == 44) {
+ token = RE2NFA::TOK_COMMA;
+ goto found;
+ }
+ if (ch.unicode() == 45)
+ goto state_1;
+ if (ch.unicode() == 46) {
+ token = RE2NFA::TOK_DOT;
+ goto found;
+ }
+ if (ch.unicode() >= 47 && ch.unicode() <= 62)
+ goto state_1;
+ if (ch.unicode() == 63) {
+ token = RE2NFA::TOK_QUESTION;
+ goto found;
+ }
+ if (ch.unicode() >= 64 && ch.unicode() <= 90)
+ goto state_1;
+ if (ch.unicode() == 91)
+ goto state_10;
+ if (ch.unicode() == 92)
+ goto state_11;
+ if (ch.unicode() >= 93 && ch.unicode() <= 122)
+ goto state_1;
+ if (ch.unicode() == 123) {
+ token = RE2NFA::TOK_LBRACE;
+ goto found;
+ }
+ if (ch.unicode() == 124) {
+ token = RE2NFA::TOK_OR;
+ goto found;
+ }
+ if (ch.unicode() == 125) {
+ token = RE2NFA::TOK_RBRACE;
+ goto found;
+ }
+ if (ch.unicode() >= 126)
+ goto state_1;
+ goto out;
+ state_1:
+ lastAcceptingPos = pos;
+ token = RE2NFA::TOK_STRING;
+ goto out;
+ state_2:
+ lastAcceptingPos = pos;
+ token = RE2NFA::TOK_STRING;
+ ch = next();
+ if (ch.unicode() >= 1 && ch.unicode() <= 33)
+ goto state_15;
+ if (ch.unicode() == 34)
+ goto state_16;
+ if (ch.unicode() >= 35)
+ goto state_15;
+ goto out;
+ state_10:
+ ch = next();
+ if (ch.unicode() >= 1 && ch.unicode() <= 91)
+ goto state_17;
+ if (ch.unicode() == 92)
+ goto state_18;
+ if (ch.unicode() == 93)
+ goto state_19;
+ if (ch.unicode() >= 94)
+ goto state_17;
+ goto out;
+ state_11:
+ lastAcceptingPos = pos;
+ token = RE2NFA::TOK_STRING;
+ ch = next();
+ if (ch.unicode() >= 1)
+ goto state_20;
+ goto out;
+ state_15:
+ ch = next();
+ if (ch.unicode() >= 1 && ch.unicode() <= 33)
+ goto state_15;
+ if (ch.unicode() == 34)
+ goto state_16;
+ if (ch.unicode() >= 35)
+ goto state_15;
+ goto out;
+ state_16:
+ lastAcceptingPos = pos;
+ token = RE2NFA::TOK_QUOTED_STRING;
+ goto out;
+ state_17:
+ ch = next();
+ if (ch.unicode() >= 1 && ch.unicode() <= 91)
+ goto state_17;
+ if (ch.unicode() == 92)
+ goto state_18;
+ if (ch.unicode() == 93)
+ goto state_19;
+ if (ch.unicode() >= 94)
+ goto state_17;
+ goto out;
+ state_18:
+ ch = next();
+ if (ch.unicode() >= 1 && ch.unicode() <= 91)
+ goto state_17;
+ if (ch.unicode() == 92)
+ goto state_18;
+ if (ch.unicode() == 93)
+ goto state_21;
+ if (ch.unicode() >= 94)
+ goto state_17;
+ goto out;
+ state_19:
+ lastAcceptingPos = pos;
+ token = RE2NFA::TOK_SEQUENCE;
+ goto out;
+ state_20:
+ lastAcceptingPos = pos;
+ token = RE2NFA::TOK_STRING;
+ goto out;
+ state_21:
+ lastAcceptingPos = pos;
+ token = RE2NFA::TOK_SEQUENCE;
+ ch = next();
+ if (ch.unicode() >= 1 && ch.unicode() <= 91)
+ goto state_17;
+ if (ch.unicode() == 92)
+ goto state_18;
+ if (ch.unicode() == 93)
+ goto state_19;
+ if (ch.unicode() >= 94)
+ goto state_17;
+ goto out;
+ found:
+ lastAcceptingPos = pos;
+
+ out:
+ if (lastAcceptingPos != -1) {
+ lexemLength = lastAcceptingPos - lexemStart;
+ pos = lastAcceptingPos;
+ }
+ return token;
+}
+
diff --git a/util/local_database/README b/util/local_database/README
new file mode 100644
index 0000000000..23b6a33ad8
--- /dev/null
+++ b/util/local_database/README
@@ -0,0 +1 @@
+local_database is used to generate qlocale data from the Common Locale Data Repository (The database for localized names (like date formats, country names etc)).
diff --git a/util/local_database/cldr2qlocalexml.py b/util/local_database/cldr2qlocalexml.py
new file mode 100755
index 0000000000..e4446c4590
--- /dev/null
+++ b/util/local_database/cldr2qlocalexml.py
@@ -0,0 +1,459 @@
+#! /usr/bin/python
+
+import os
+import sys
+import enumdata
+import xpathlite
+from xpathlite import DraftResolution
+import re
+
+findEntry = xpathlite.findEntry
+
+def ordStr(c):
+ if len(c) == 1:
+ return str(ord(c))
+ return "##########"
+
+# the following functions are supposed to fix the problem with QLocale
+# returning a character instead of strings for QLocale::exponential()
+# and others. So we fallback to default values in these cases.
+def fixOrdStrExp(c):
+ if len(c) == 1:
+ return str(ord(c))
+ return str(ord('e'))
+def fixOrdStrPercent(c):
+ if len(c) == 1:
+ return str(ord(c))
+ return str(ord('%'))
+def fixOrdStrList(c):
+ if len(c) == 1:
+ return str(ord(c))
+ return str(ord(';'))
+
+def generateLocaleInfo(path):
+ (dir_name, file_name) = os.path.split(path)
+
+ exp = re.compile(r"([a-z]+)_([A-Z]{2})\.xml")
+ m = exp.match(file_name)
+ if not m:
+ return {}
+
+ language_code = m.group(1)
+ country_code = m.group(2)
+
+ language_id = enumdata.languageCodeToId(language_code)
+ if language_id == -1:
+ sys.stderr.write("unnknown language code \"" + language_code + "\"\n")
+ return {}
+ language = enumdata.language_list[language_id][0]
+
+ country_id = enumdata.countryCodeToId(country_code)
+ if country_id == -1:
+ sys.stderr.write("unnknown country code \"" + country_code + "\"\n")
+ return {}
+ country = enumdata.country_list[country_id][0]
+
+ base = dir_name + "/" + language_code + "_" + country_code
+
+ result = {}
+ result['base'] = base
+
+ result['language'] = language
+ result['country'] = country
+ result['language_id'] = language_id
+ result['country_id'] = country_id
+ result['decimal'] = findEntry(base, "numbers/symbols/decimal")
+ result['group'] = findEntry(base, "numbers/symbols/group")
+ result['list'] = findEntry(base, "numbers/symbols/list")
+ result['percent'] = findEntry(base, "numbers/symbols/percentSign")
+ result['zero'] = findEntry(base, "numbers/symbols/nativeZeroDigit")
+ result['minus'] = findEntry(base, "numbers/symbols/minusSign")
+ result['plus'] = findEntry(base, "numbers/symbols/plusSign")
+ result['exp'] = findEntry(base, "numbers/symbols/exponential").lower()
+ result['am'] = findEntry(base, "dates/calendars/calendar[gregorian]/am", draft=DraftResolution.approved)
+ result['pm'] = findEntry(base, "dates/calendars/calendar[gregorian]/pm", draft=DraftResolution.approved)
+ result['longDateFormat'] = findEntry(base, "dates/calendars/calendar[gregorian]/dateFormats/dateFormatLength[full]/dateFormat/pattern")
+ result['shortDateFormat'] = findEntry(base, "dates/calendars/calendar[gregorian]/dateFormats/dateFormatLength[short]/dateFormat/pattern")
+ result['longTimeFormat'] = findEntry(base, "dates/calendars/calendar[gregorian]/timeFormats/timeFormatLength[full]/timeFormat/pattern")
+ result['shortTimeFormat'] = findEntry(base, "dates/calendars/calendar[gregorian]/timeFormats/timeFormatLength[short]/timeFormat/pattern")
+
+ standalone_long_month_path = "dates/calendars/calendar[gregorian]/months/monthContext[stand-alone]/monthWidth[wide]/month"
+ result['standaloneLongMonths'] \
+ = findEntry(base, standalone_long_month_path + "[1]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[2]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[3]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[4]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[5]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[6]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[7]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[8]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[9]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[10]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[11]") + ";" \
+ + findEntry(base, standalone_long_month_path + "[12]") + ";"
+
+ standalone_short_month_path = "dates/calendars/calendar[gregorian]/months/monthContext[stand-alone]/monthWidth[abbreviated]/month"
+ result['standaloneShortMonths'] \
+ = findEntry(base, standalone_short_month_path + "[1]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[2]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[3]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[4]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[5]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[6]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[7]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[8]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[9]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[10]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[11]") + ";" \
+ + findEntry(base, standalone_short_month_path + "[12]") + ";"
+
+ standalone_narrow_month_path = "dates/calendars/calendar[gregorian]/months/monthContext[stand-alone]/monthWidth[narrow]/month"
+ result['standaloneNarrowMonths'] \
+ = findEntry(base, standalone_narrow_month_path + "[1]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[2]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[3]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[4]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[5]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[6]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[7]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[8]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[9]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[10]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[11]") + ";" \
+ + findEntry(base, standalone_narrow_month_path + "[12]") + ";"
+
+ long_month_path = "dates/calendars/calendar[gregorian]/months/monthContext[format]/monthWidth[wide]/month"
+ result['longMonths'] \
+ = findEntry(base, long_month_path + "[1]") + ";" \
+ + findEntry(base, long_month_path + "[2]") + ";" \
+ + findEntry(base, long_month_path + "[3]") + ";" \
+ + findEntry(base, long_month_path + "[4]") + ";" \
+ + findEntry(base, long_month_path + "[5]") + ";" \
+ + findEntry(base, long_month_path + "[6]") + ";" \
+ + findEntry(base, long_month_path + "[7]") + ";" \
+ + findEntry(base, long_month_path + "[8]") + ";" \
+ + findEntry(base, long_month_path + "[9]") + ";" \
+ + findEntry(base, long_month_path + "[10]") + ";" \
+ + findEntry(base, long_month_path + "[11]") + ";" \
+ + findEntry(base, long_month_path + "[12]") + ";"
+
+ short_month_path = "dates/calendars/calendar[gregorian]/months/monthContext[format]/monthWidth[abbreviated]/month"
+ result['shortMonths'] \
+ = findEntry(base, short_month_path + "[1]") + ";" \
+ + findEntry(base, short_month_path + "[2]") + ";" \
+ + findEntry(base, short_month_path + "[3]") + ";" \
+ + findEntry(base, short_month_path + "[4]") + ";" \
+ + findEntry(base, short_month_path + "[5]") + ";" \
+ + findEntry(base, short_month_path + "[6]") + ";" \
+ + findEntry(base, short_month_path + "[7]") + ";" \
+ + findEntry(base, short_month_path + "[8]") + ";" \
+ + findEntry(base, short_month_path + "[9]") + ";" \
+ + findEntry(base, short_month_path + "[10]") + ";" \
+ + findEntry(base, short_month_path + "[11]") + ";" \
+ + findEntry(base, short_month_path + "[12]") + ";"
+
+ narrow_month_path = "dates/calendars/calendar[gregorian]/months/monthContext[format]/monthWidth[narrow]/month"
+ result['narrowMonths'] \
+ = findEntry(base, narrow_month_path + "[1]") + ";" \
+ + findEntry(base, narrow_month_path + "[2]") + ";" \
+ + findEntry(base, narrow_month_path + "[3]") + ";" \
+ + findEntry(base, narrow_month_path + "[4]") + ";" \
+ + findEntry(base, narrow_month_path + "[5]") + ";" \
+ + findEntry(base, narrow_month_path + "[6]") + ";" \
+ + findEntry(base, narrow_month_path + "[7]") + ";" \
+ + findEntry(base, narrow_month_path + "[8]") + ";" \
+ + findEntry(base, narrow_month_path + "[9]") + ";" \
+ + findEntry(base, narrow_month_path + "[10]") + ";" \
+ + findEntry(base, narrow_month_path + "[11]") + ";" \
+ + findEntry(base, narrow_month_path + "[12]") + ";"
+
+ long_day_path = "dates/calendars/calendar[gregorian]/days/dayContext[format]/dayWidth[wide]/day"
+ result['longDays'] \
+ = findEntry(base, long_day_path + "[sun]") + ";" \
+ + findEntry(base, long_day_path + "[mon]") + ";" \
+ + findEntry(base, long_day_path + "[tue]") + ";" \
+ + findEntry(base, long_day_path + "[wed]") + ";" \
+ + findEntry(base, long_day_path + "[thu]") + ";" \
+ + findEntry(base, long_day_path + "[fri]") + ";" \
+ + findEntry(base, long_day_path + "[sat]") + ";"
+
+ short_day_path = "dates/calendars/calendar[gregorian]/days/dayContext[format]/dayWidth[abbreviated]/day"
+ result['shortDays'] \
+ = findEntry(base, short_day_path + "[sun]") + ";" \
+ + findEntry(base, short_day_path + "[mon]") + ";" \
+ + findEntry(base, short_day_path + "[tue]") + ";" \
+ + findEntry(base, short_day_path + "[wed]") + ";" \
+ + findEntry(base, short_day_path + "[thu]") + ";" \
+ + findEntry(base, short_day_path + "[fri]") + ";" \
+ + findEntry(base, short_day_path + "[sat]") + ";"
+
+ narrow_day_path = "dates/calendars/calendar[gregorian]/days/dayContext[format]/dayWidth[narrow]/day"
+ result['narrowDays'] \
+ = findEntry(base, narrow_day_path + "[sun]") + ";" \
+ + findEntry(base, narrow_day_path + "[mon]") + ";" \
+ + findEntry(base, narrow_day_path + "[tue]") + ";" \
+ + findEntry(base, narrow_day_path + "[wed]") + ";" \
+ + findEntry(base, narrow_day_path + "[thu]") + ";" \
+ + findEntry(base, narrow_day_path + "[fri]") + ";" \
+ + findEntry(base, narrow_day_path + "[sat]") + ";"
+
+ standalone_long_day_path = "dates/calendars/calendar[gregorian]/days/dayContext[stand-alone]/dayWidth[wide]/day"
+ result['standaloneLongDays'] \
+ = findEntry(base, standalone_long_day_path + "[sun]") + ";" \
+ + findEntry(base, standalone_long_day_path + "[mon]") + ";" \
+ + findEntry(base, standalone_long_day_path + "[tue]") + ";" \
+ + findEntry(base, standalone_long_day_path + "[wed]") + ";" \
+ + findEntry(base, standalone_long_day_path + "[thu]") + ";" \
+ + findEntry(base, standalone_long_day_path + "[fri]") + ";" \
+ + findEntry(base, standalone_long_day_path + "[sat]") + ";"
+
+ standalone_short_day_path = "dates/calendars/calendar[gregorian]/days/dayContext[stand-alone]/dayWidth[abbreviated]/day"
+ result['standaloneShortDays'] \
+ = findEntry(base, standalone_short_day_path + "[sun]") + ";" \
+ + findEntry(base, standalone_short_day_path + "[mon]") + ";" \
+ + findEntry(base, standalone_short_day_path + "[tue]") + ";" \
+ + findEntry(base, standalone_short_day_path + "[wed]") + ";" \
+ + findEntry(base, standalone_short_day_path + "[thu]") + ";" \
+ + findEntry(base, standalone_short_day_path + "[fri]") + ";" \
+ + findEntry(base, standalone_short_day_path + "[sat]") + ";"
+
+ standalone_narrow_day_path = "dates/calendars/calendar[gregorian]/days/dayContext[stand-alone]/dayWidth[narrow]/day"
+ result['standaloneNarrowDays'] \
+ = findEntry(base, standalone_narrow_day_path + "[sun]") + ";" \
+ + findEntry(base, standalone_narrow_day_path + "[mon]") + ";" \
+ + findEntry(base, standalone_narrow_day_path + "[tue]") + ";" \
+ + findEntry(base, standalone_narrow_day_path + "[wed]") + ";" \
+ + findEntry(base, standalone_narrow_day_path + "[thu]") + ";" \
+ + findEntry(base, standalone_narrow_day_path + "[fri]") + ";" \
+ + findEntry(base, standalone_narrow_day_path + "[sat]") + ";"
+
+
+ return result
+
+def addEscapes(s):
+ result = ''
+ for c in s:
+ n = ord(c)
+ if n < 128:
+ result += c
+ else:
+ result += "\\x"
+ result += "%02x" % (n)
+ return result
+
+def unicodeStr(s):
+ utf8 = s.encode('utf-8')
+ return "<size>" + str(len(utf8)) + "</size><data>" + addEscapes(utf8) + "</data>"
+
+def usage():
+ print "Usage: cldr2qlocalexml.py <path-to-cldr-main>"
+ sys.exit()
+
+if len(sys.argv) != 2:
+ usage()
+
+cldr_dir = sys.argv[1]
+
+if not os.path.isdir(cldr_dir):
+ usage()
+
+cldr_files = os.listdir(cldr_dir)
+
+locale_database = {}
+for file in cldr_files:
+ l = generateLocaleInfo(cldr_dir + "/" + file)
+ if not l:
+ sys.stderr.write("skipping file \"" + file + "\"\n")
+ continue
+
+ locale_database[(l['language_id'], l['country_id'])] = l
+
+locale_keys = locale_database.keys()
+locale_keys.sort()
+
+print "<localeDatabase>"
+print " <languageList>"
+for id in enumdata.language_list:
+ l = enumdata.language_list[id]
+ print " <language>"
+ print " <name>" + l[0] + "</name>"
+ print " <id>" + str(id) + "</id>"
+ print " <code>" + l[1] + "</code>"
+ print " </language>"
+print " </languageList>"
+
+print " <countryList>"
+for id in enumdata.country_list:
+ l = enumdata.country_list[id]
+ print " <country>"
+ print " <name>" + l[0] + "</name>"
+ print " <id>" + str(id) + "</id>"
+ print " <code>" + l[1] + "</code>"
+ print " </country>"
+print " </countryList>"
+
+print \
+" <defaultCountryList>\n\
+ <defaultCountry>\n\
+ <language>Afrikaans</language>\n\
+ <country>SouthAfrica</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Afan</language>\n\
+ <country>Ethiopia</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Afar</language>\n\
+ <country>Djibouti</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Arabic</language>\n\
+ <country>SaudiArabia</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Chinese</language>\n\
+ <country>China</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Dutch</language>\n\
+ <country>Netherlands</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>English</language>\n\
+ <country>UnitedStates</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>French</language>\n\
+ <country>France</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>German</language>\n\
+ <country>Germany</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Greek</language>\n\
+ <country>Greece</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Italian</language>\n\
+ <country>Italy</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Malay</language>\n\
+ <country>Malaysia</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Portuguese</language>\n\
+ <country>Portugal</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Russian</language>\n\
+ <country>RussianFederation</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Serbian</language>\n\
+ <country>SerbiaAndMontenegro</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>SerboCroatian</language>\n\
+ <country>SerbiaAndMontenegro</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Somali</language>\n\
+ <country>Somalia</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Spanish</language>\n\
+ <country>Spain</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Swahili</language>\n\
+ <country>Kenya</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Swedish</language>\n\
+ <country>Sweden</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Tigrinya</language>\n\
+ <country>Eritrea</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Uzbek</language>\n\
+ <country>Uzbekistan</country>\n\
+ </defaultCountry>\n\
+ <defaultCountry>\n\
+ <language>Persian</language>\n\
+ <country>Iran</country>\n\
+ </defaultCountry>\n\
+ </defaultCountryList>"
+
+print " <localeList>"
+print \
+" <locale>\n\
+ <language>C</language>\n\
+ <country>AnyCountry</country>\n\
+ <decimal>46</decimal>\n\
+ <group>44</group>\n\
+ <list>59</list>\n\
+ <percent>37</percent>\n\
+ <zero>48</zero>\n\
+ <minus>45</minus>\n\
+ <plus>43</plus>\n\
+ <exp>101</exp>\n\
+ <am>AM</am>\n\
+ <pm>PM</pm>\n\
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>\n\
+ <shortDateFormat>d MMM yyyy</shortDateFormat>\n\
+ <longTimeFormat>HH:mm:ss z</longTimeFormat>\n\
+ <shortTimeFormat>HH:mm:ss</shortTimeFormat>\n\
+ <standaloneLongMonths>January;February;March;April;May;June;July;August;September;October;November;December;</standaloneLongMonths>\n\
+ <standaloneShortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</standaloneShortMonths>\n\
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>\n\
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>\n\
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>\n\
+ <narrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</narrowMonths>\n\
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>\n\
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>\n\
+ <narrowDays>7;1;2;3;4;5;6;</narrowDays>\n\
+ <standaloneLongDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</standaloneLongDays>\n\
+ <standaloneShortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</standaloneShortDays>\n\
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>\n\
+ </locale>"
+
+for key in locale_keys:
+ l = locale_database[key]
+
+ print " <locale>"
+# print " <source>" + l['base'] + "</source>"
+ print " <language>" + l['language'] + "</language>"
+ print " <country>" + l['country'] + "</country>"
+ print " <decimal>" + ordStr(l['decimal']) + "</decimal>"
+ print " <group>" + ordStr(l['group']) + "</group>"
+ print " <list>" + fixOrdStrList(l['list']) + "</list>"
+ print " <percent>" + fixOrdStrPercent(l['percent']) + "</percent>"
+ print " <zero>" + ordStr(l['zero']) + "</zero>"
+ print " <minus>" + ordStr(l['minus']) + "</minus>"
+ print " <plus>" + ordStr(l['plus']) + "</plus>"
+ print " <exp>" + fixOrdStrExp(l['exp']) + "</exp>"
+ print " <am>" + l['am'].encode('utf-8') + "</am>"
+ print " <pm>" + l['pm'].encode('utf-8') + "</pm>"
+ print " <longDateFormat>" + l['longDateFormat'].encode('utf-8') + "</longDateFormat>"
+ print " <shortDateFormat>" + l['shortDateFormat'].encode('utf-8') + "</shortDateFormat>"
+ print " <longTimeFormat>" + l['longTimeFormat'].encode('utf-8') + "</longTimeFormat>"
+ print " <shortTimeFormat>" + l['shortTimeFormat'].encode('utf-8') + "</shortTimeFormat>"
+ print " <standaloneLongMonths>" + l['standaloneLongMonths'].encode('utf-8') + "</standaloneLongMonths>"
+ print " <standaloneShortMonths>"+ l['standaloneShortMonths'].encode('utf-8') + "</standaloneShortMonths>"
+ print " <standaloneNarrowMonths>"+ l['standaloneNarrowMonths'].encode('utf-8') + "</standaloneNarrowMonths>"
+ print " <longMonths>" + l['longMonths'].encode('utf-8') + "</longMonths>"
+ print " <shortMonths>" + l['shortMonths'].encode('utf-8') + "</shortMonths>"
+ print " <narrowMonths>" + l['narrowMonths'].encode('utf-8') + "</narrowMonths>"
+ print " <longDays>" + l['longDays'].encode('utf-8') + "</longDays>"
+ print " <shortDays>" + l['shortDays'].encode('utf-8') + "</shortDays>"
+ print " <narrowDays>" + l['narrowDays'].encode('utf-8') + "</narrowDays>"
+ print " <standaloneLongDays>" + l['standaloneLongDays'].encode('utf-8') + "</standaloneLongDays>"
+ print " <standaloneShortDays>" + l['standaloneShortDays'].encode('utf-8') + "</standaloneShortDays>"
+ print " <standaloneNarrowDays>" + l['standaloneNarrowDays'].encode('utf-8') + "</standaloneNarrowDays>"
+ print " </locale>"
+print " </localeList>"
+print "</localeDatabase>"
diff --git a/util/local_database/enumdata.py b/util/local_database/enumdata.py
new file mode 100644
index 0000000000..b0ab848b86
--- /dev/null
+++ b/util/local_database/enumdata.py
@@ -0,0 +1,428 @@
+# langugae_list and country_list reflect the current values of enums in qlocale.h
+# If new xml language files are available in CLDR, these languages and countries
+# need to be *appended* to this list.
+
+language_list = {
+ 1 : [ "C", " " ],
+ 2 : [ "Abkhazian", "ab" ],
+ 3 : [ "Afan", "om" ],
+ 4 : [ "Afar", "aa" ],
+ 5 : [ "Afrikaans", "af" ],
+ 6 : [ "Albanian", "sq" ],
+ 7 : [ "Amharic", "am" ],
+ 8 : [ "Arabic", "ar" ],
+ 9 : [ "Armenian", "hy" ],
+ 10 : [ "Assamese", "as" ],
+ 11 : [ "Aymara", "ay" ],
+ 12 : [ "Azerbaijani", "az" ],
+ 13 : [ "Bashkir", "ba" ],
+ 14 : [ "Basque", "eu" ],
+ 15 : [ "Bengali", "bn" ],
+ 16 : [ "Bhutani", "dz" ],
+ 17 : [ "Bihari", "bh" ],
+ 18 : [ "Bislama", "bi" ],
+ 19 : [ "Breton", "br" ],
+ 20 : [ "Bulgarian", "bg" ],
+ 21 : [ "Burmese", "my" ],
+ 22 : [ "Byelorussian", "be" ],
+ 23 : [ "Cambodian", "km" ],
+ 24 : [ "Catalan", "ca" ],
+ 25 : [ "Chinese", "zh" ],
+ 26 : [ "Corsican", "co" ],
+ 27 : [ "Croatian", "hr" ],
+ 28 : [ "Czech", "cs" ],
+ 29 : [ "Danish", "da" ],
+ 30 : [ "Dutch", "nl" ],
+ 31 : [ "English", "en" ],
+ 32 : [ "Esperanto", "eo" ],
+ 33 : [ "Estonian", "et" ],
+ 34 : [ "Faroese", "fo" ],
+ 35 : [ "Fiji", "fj" ],
+ 36 : [ "Finnish", "fi" ],
+ 37 : [ "French", "fr" ],
+ 38 : [ "Frisian", "fy" ],
+ 39 : [ "Gaelic", "gd" ],
+ 40 : [ "Galician", "gl" ],
+ 41 : [ "Georgian", "ka" ],
+ 42 : [ "German", "de" ],
+ 43 : [ "Greek", "el" ],
+ 44 : [ "Greenlandic", "kl" ],
+ 45 : [ "Guarani", "gn" ],
+ 46 : [ "Gujarati", "gu" ],
+ 47 : [ "Hausa", "ha" ],
+ 48 : [ "Hebrew", "he" ],
+ 49 : [ "Hindi", "hi" ],
+ 50 : [ "Hungarian", "hu" ],
+ 51 : [ "Icelandic", "is" ],
+ 52 : [ "Indonesian", "id" ],
+ 53 : [ "Interlingua", "ia" ],
+ 54 : [ "Interlingue", "ie" ],
+ 55 : [ "Inuktitut", "iu" ],
+ 56 : [ "Inupiak", "ik" ],
+ 57 : [ "Irish", "ga" ],
+ 58 : [ "Italian", "it" ],
+ 59 : [ "Japanese", "ja" ],
+ 60 : [ "Javanese", "jv" ],
+ 61 : [ "Kannada", "kn" ],
+ 62 : [ "Kashmiri", "ks" ],
+ 63 : [ "Kazakh", "kk" ],
+ 64 : [ "Kinyarwanda", "rw" ],
+ 65 : [ "Kirghiz", "ky" ],
+ 66 : [ "Korean", "ko" ],
+ 67 : [ "Kurdish", "ku" ],
+ 68 : [ "Kurundi", "rn" ],
+ 69 : [ "Laothian", "lo" ],
+ 70 : [ "Latin", "la" ],
+ 71 : [ "Latvian", "lv" ],
+ 72 : [ "Lingala", "ln" ],
+ 73 : [ "Lithuanian", "lt" ],
+ 74 : [ "Macedonian", "mk" ],
+ 75 : [ "Malagasy", "mg" ],
+ 76 : [ "Malay", "ms" ],
+ 77 : [ "Malayalam", "ml" ],
+ 78 : [ "Maltese", "mt" ],
+ 79 : [ "Maori", "mi" ],
+ 80 : [ "Marathi", "mr" ],
+ 81 : [ "Moldavian", "mo" ],
+ 82 : [ "Mongolian", "mn" ],
+ 83 : [ "Nauru", "na" ],
+ 84 : [ "Nepali", "ne" ],
+ 85 : [ "Norwegian", "nb" ],
+ 86 : [ "Occitan", "oc" ],
+ 87 : [ "Oriya", "or" ],
+ 88 : [ "Pashto", "ps" ],
+ 89 : [ "Persian", "fa" ],
+ 90 : [ "Polish", "pl" ],
+ 91 : [ "Portuguese", "pt" ],
+ 92 : [ "Punjabi", "pa" ],
+ 93 : [ "Quechua", "qu" ],
+ 94 : [ "RhaetoRomance", "rm" ],
+ 95 : [ "Romanian", "ro" ],
+ 96 : [ "Russian", "ru" ],
+ 97 : [ "Samoan", "sm" ],
+ 98 : [ "Sangho", "sg" ],
+ 99 : [ "Sanskrit", "sa" ],
+ 100 : [ "Serbian", "sr" ],
+ 101 : [ "SerboCroatian", "sh" ],
+ 102 : [ "Sesotho", "st" ],
+ 103 : [ "Setswana", "tn" ],
+ 104 : [ "Shona", "sn" ],
+ 105 : [ "Sindhi", "sd" ],
+ 106 : [ "Singhalese", "si" ],
+ 107 : [ "Siswati", "ss" ],
+ 108 : [ "Slovak", "sk" ],
+ 109 : [ "Slovenian", "sl" ],
+ 110 : [ "Somali", "so" ],
+ 111 : [ "Spanish", "es" ],
+ 112 : [ "Sundanese", "su" ],
+ 113 : [ "Swahili", "sw" ],
+ 114 : [ "Swedish", "sv" ],
+ 115 : [ "Tagalog", "tl" ],
+ 116 : [ "Tajik", "tg" ],
+ 117 : [ "Tamil", "ta" ],
+ 118 : [ "Tatar", "tt" ],
+ 119 : [ "Telugu", "te" ],
+ 120 : [ "Thai", "th" ],
+ 121 : [ "Tibetan", "bo" ],
+ 122 : [ "Tigrinya", "ti" ],
+ 123 : [ "Tonga", "to" ],
+ 124 : [ "Tsonga", "ts" ],
+ 125 : [ "Turkish", "tr" ],
+ 126 : [ "Turkmen", "tk" ],
+ 127 : [ "Twi", "tw" ],
+ 128 : [ "Uigur", "ug" ],
+ 129 : [ "Ukrainian", "uk" ],
+ 130 : [ "Urdu", "ur" ],
+ 131 : [ "Uzbek", "uz" ],
+ 132 : [ "Vietnamese", "vi" ],
+ 133 : [ "Volapuk", "vo" ],
+ 134 : [ "Welsh", "cy" ],
+ 135 : [ "Wolof", "wo" ],
+ 136 : [ "Xhosa", "xh" ],
+ 137 : [ "Yiddish", "yi" ],
+ 138 : [ "Yoruba", "yo" ],
+ 139 : [ "Zhuang", "za" ],
+ 140 : [ "Zulu", "zu" ],
+ 141 : [ "Nynorsk", "nn" ],
+ 142 : [ "Bosnian", "bs" ],
+ 143 : [ "Divehi", "dv" ],
+ 144 : [ "Manx", "gv" ],
+ 145 : [ "Cornish", "kw" ],
+ 146 : [ "Akan", "ak" ],
+ 147 : [ "Konkani", "kok" ],
+ 148 : [ "Ga", "gaa" ],
+ 149 : [ "Igbo", "ig" ],
+ 150 : [ "Kamba", "kam" ],
+ 151 : [ "Syriac", "syr" ],
+ 152 : [ "Blin", "byn" ],
+ 153 : [ "Geez", "gez" ],
+ 154 : [ "Koro", "kfo" ],
+ 155 : [ "Sidamo", "sid" ],
+ 156 : [ "Atsam", "cch" ],
+ 157 : [ "Tigre", "tig" ],
+ 158 : [ "Jju", "kaj" ],
+ 159 : [ "Friulian", "fur" ],
+ 160 : [ "Venda", "ve" ],
+ 161 : [ "Ewe", "ee" ],
+ 162 : [ "Walamo", "wa" ],
+ 163 : [ "Hawaiian", "haw" ],
+ 164 : [ "Tyap", "kcg" ],
+ 165 : [ "Chewa", "ny" ]
+}
+
+country_list = {
+ 0 : [ "AnyCountry", " " ],
+ 1 : [ "Afghanistan", "AF" ],
+ 2 : [ "Albania", "AL" ],
+ 3 : [ "Algeria", "DZ" ],
+ 4 : [ "AmericanSamoa", "AS" ],
+ 5 : [ "Andorra", "AD" ],
+ 6 : [ "Angola", "AO" ],
+ 7 : [ "Anguilla", "AI" ],
+ 8 : [ "Antarctica", "AQ" ],
+ 9 : [ "AntiguaAndBarbuda", "AG" ],
+ 10 : [ "Argentina", "AR" ],
+ 11 : [ "Armenia", "AM" ],
+ 12 : [ "Aruba", "AW" ],
+ 13 : [ "Australia", "AU" ],
+ 14 : [ "Austria", "AT" ],
+ 15 : [ "Azerbaijan", "AZ" ],
+ 16 : [ "Bahamas", "BS" ],
+ 17 : [ "Bahrain", "BH" ],
+ 18 : [ "Bangladesh", "BD" ],
+ 19 : [ "Barbados", "BB" ],
+ 20 : [ "Belarus", "BY" ],
+ 21 : [ "Belgium", "BE" ],
+ 22 : [ "Belize", "BZ" ],
+ 23 : [ "Benin", "BJ" ],
+ 24 : [ "Bermuda", "BM" ],
+ 25 : [ "Bhutan", "BT" ],
+ 26 : [ "Bolivia", "BO" ],
+ 27 : [ "BosniaAndHerzegowina", "BA" ],
+ 28 : [ "Botswana", "BW" ],
+ 29 : [ "BouvetIsland", "BV" ],
+ 30 : [ "Brazil", "BR" ],
+ 31 : [ "BritishIndianOceanTerritory", "IO" ],
+ 32 : [ "BruneiDarussalam", "BN" ],
+ 33 : [ "Bulgaria", "BG" ],
+ 34 : [ "BurkinaFaso", "BF" ],
+ 35 : [ "Burundi", "BI" ],
+ 36 : [ "Cambodia", "KH" ],
+ 37 : [ "Cameroon", "CM" ],
+ 38 : [ "Canada", "CA" ],
+ 39 : [ "CapeVerde", "CV" ],
+ 40 : [ "CaymanIslands", "KY" ],
+ 41 : [ "CentralAfricanRepublic", "CF" ],
+ 42 : [ "Chad", "TD" ],
+ 43 : [ "Chile", "CL" ],
+ 44 : [ "China", "CN" ],
+ 45 : [ "ChristmasIsland", "CX" ],
+ 46 : [ "CocosIslands", "CC" ],
+ 47 : [ "Colombia", "CO" ],
+ 48 : [ "Comoros", "KM" ],
+ 49 : [ "DemocraticRepublicOfCongo", "CD" ],
+ 50 : [ "PeoplesRepublicOfCongo", "CG" ],
+ 51 : [ "CookIslands", "CK" ],
+ 52 : [ "CostaRica", "CR" ],
+ 53 : [ "IvoryCoast", "CI" ],
+ 54 : [ "Croatia", "HR" ],
+ 55 : [ "Cuba", "CU" ],
+ 56 : [ "Cyprus", "CY" ],
+ 57 : [ "CzechRepublic", "CZ" ],
+ 58 : [ "Denmark", "DK" ],
+ 59 : [ "Djibouti", "DJ" ],
+ 60 : [ "Dominica", "DM" ],
+ 61 : [ "DominicanRepublic", "DO" ],
+ 62 : [ "EastTimor", "TL" ],
+ 63 : [ "Ecuador", "EC" ],
+ 64 : [ "Egypt", "EG" ],
+ 65 : [ "ElSalvador", "SV" ],
+ 66 : [ "EquatorialGuinea", "GQ" ],
+ 67 : [ "Eritrea", "ER" ],
+ 68 : [ "Estonia", "EE" ],
+ 69 : [ "Ethiopia", "ET" ],
+ 70 : [ "FalklandIslands", "FK" ],
+ 71 : [ "FaroeIslands", "FO" ],
+ 72 : [ "Fiji", "FJ" ],
+ 73 : [ "Finland", "FI" ],
+ 74 : [ "France", "FR" ],
+ 75 : [ "MetropolitanFrance", "FX" ],
+ 76 : [ "FrenchGuiana", "GF" ],
+ 77 : [ "FrenchPolynesia", "PF" ],
+ 78 : [ "FrenchSouthernTerritories", "TF" ],
+ 79 : [ "Gabon", "GA" ],
+ 80 : [ "Gambia", "GM" ],
+ 81 : [ "Georgia", "GE" ],
+ 82 : [ "Germany", "DE" ],
+ 83 : [ "Ghana", "GH" ],
+ 84 : [ "Gibraltar", "GI" ],
+ 85 : [ "Greece", "GR" ],
+ 86 : [ "Greenland", "GL" ],
+ 87 : [ "Grenada", "GD" ],
+ 88 : [ "Guadeloupe", "GP" ],
+ 89 : [ "Guam", "GU" ],
+ 90 : [ "Guatemala", "GT" ],
+ 91 : [ "Guinea", "GN" ],
+ 92 : [ "GuineaBissau", "GW" ],
+ 93 : [ "Guyana", "GY" ],
+ 94 : [ "Haiti", "HT" ],
+ 95 : [ "HeardAndMcDonaldIslands", "HM" ],
+ 96 : [ "Honduras", "HN" ],
+ 97 : [ "HongKong", "HK" ],
+ 98 : [ "Hungary", "HU" ],
+ 99 : [ "Iceland", "IS" ],
+ 100 : [ "India", "IN" ],
+ 101 : [ "Indonesia", "ID" ],
+ 102 : [ "Iran", "IR" ],
+ 103 : [ "Iraq", "IQ" ],
+ 104 : [ "Ireland", "IE" ],
+ 105 : [ "Israel", "IL" ],
+ 106 : [ "Italy", "IT" ],
+ 107 : [ "Jamaica", "JM" ],
+ 108 : [ "Japan", "JP" ],
+ 109 : [ "Jordan", "JO" ],
+ 110 : [ "Kazakhstan", "KZ" ],
+ 111 : [ "Kenya", "KE" ],
+ 112 : [ "Kiribati", "KI" ],
+ 113 : [ "DemocraticRepublicOfKorea", "KP" ],
+ 114 : [ "RepublicOfKorea", "KR" ],
+ 115 : [ "Kuwait", "KW" ],
+ 116 : [ "Kyrgyzstan", "KG" ],
+ 117 : [ "Lao", "LA" ],
+ 118 : [ "Latvia", "LV" ],
+ 119 : [ "Lebanon", "LB" ],
+ 120 : [ "Lesotho", "LS" ],
+ 121 : [ "Liberia", "LR" ],
+ 122 : [ "LibyanArabJamahiriya", "LY" ],
+ 123 : [ "Liechtenstein", "LI" ],
+ 124 : [ "Lithuania", "LT" ],
+ 125 : [ "Luxembourg", "LU" ],
+ 126 : [ "Macau", "MO" ],
+ 127 : [ "Macedonia", "MK" ],
+ 128 : [ "Madagascar", "MG" ],
+ 129 : [ "Malawi", "MW" ],
+ 130 : [ "Malaysia", "MY" ],
+ 131 : [ "Maldives", "MV" ],
+ 132 : [ "Mali", "ML" ],
+ 133 : [ "Malta", "MT" ],
+ 134 : [ "MarshallIslands", "MH" ],
+ 135 : [ "Martinique", "MQ" ],
+ 136 : [ "Mauritania", "MR" ],
+ 137 : [ "Mauritius", "MU" ],
+ 138 : [ "Mayotte", "YT" ],
+ 139 : [ "Mexico", "MX" ],
+ 140 : [ "Micronesia", "FM" ],
+ 141 : [ "Moldova", "MD" ],
+ 142 : [ "Monaco", "MC" ],
+ 143 : [ "Mongolia", "MN" ],
+ 144 : [ "Montserrat", "MS" ],
+ 145 : [ "Morocco", "MA" ],
+ 146 : [ "Mozambique", "MZ" ],
+ 147 : [ "Myanmar", "MM" ],
+ 148 : [ "Namibia", "NA" ],
+ 149 : [ "Nauru", "NR" ],
+ 150 : [ "Nepal", "NP" ],
+ 151 : [ "Netherlands", "NL" ],
+ 152 : [ "NetherlandsAntilles", "AN" ],
+ 153 : [ "NewCaledonia", "NC" ],
+ 154 : [ "NewZealand", "NZ" ],
+ 155 : [ "Nicaragua", "NI" ],
+ 156 : [ "Niger", "NE" ],
+ 157 : [ "Nigeria", "NG" ],
+ 158 : [ "Niue", "NU" ],
+ 159 : [ "NorfolkIsland", "NF" ],
+ 160 : [ "NorthernMarianaIslands", "MP" ],
+ 161 : [ "Norway", "NO" ],
+ 162 : [ "Oman", "OM" ],
+ 163 : [ "Pakistan", "PK" ],
+ 164 : [ "Palau", "PW" ],
+ 165 : [ "PalestinianTerritory", "PS" ],
+ 166 : [ "Panama", "PA" ],
+ 167 : [ "PapuaNewGuinea", "PG" ],
+ 168 : [ "Paraguay", "PY" ],
+ 169 : [ "Peru", "PE" ],
+ 170 : [ "Philippines", "PH" ],
+ 171 : [ "Pitcairn", "PN" ],
+ 172 : [ "Poland", "PL" ],
+ 173 : [ "Portugal", "PT" ],
+ 174 : [ "PuertoRico", "PR" ],
+ 175 : [ "Qatar", "QA" ],
+ 176 : [ "Reunion", "RE" ],
+ 177 : [ "Romania", "RO" ],
+ 178 : [ "RussianFederation", "RU" ],
+ 179 : [ "Rwanda", "RW" ],
+ 180 : [ "SaintKittsAndNevis", "KN" ],
+ 181 : [ "StLucia", "LC" ],
+ 182 : [ "StVincentAndTheGrenadines", "VC" ],
+ 183 : [ "Samoa", "WS" ],
+ 184 : [ "SanMarino", "SM" ],
+ 185 : [ "SaoTomeAndPrincipe", "ST" ],
+ 186 : [ "SaudiArabia", "SA" ],
+ 187 : [ "Senegal", "SN" ],
+ 188 : [ "Seychelles", "SC" ],
+ 189 : [ "SierraLeone", "SL" ],
+ 190 : [ "Singapore", "SG" ],
+ 191 : [ "Slovakia", "SK" ],
+ 192 : [ "Slovenia", "SI" ],
+ 193 : [ "SolomonIslands", "SB" ],
+ 194 : [ "Somalia", "SO" ],
+ 195 : [ "SouthAfrica", "ZA" ],
+ 196 : [ "SouthGeorgiaAndTheSouthSandwichIslands", "GS" ],
+ 197 : [ "Spain", "ES" ],
+ 198 : [ "SriLanka", "LK" ],
+ 199 : [ "StHelena", "SH" ],
+ 200 : [ "StPierreAndMiquelon", "PM" ],
+ 201 : [ "Sudan", "SD" ],
+ 202 : [ "Suriname", "SR" ],
+ 203 : [ "SvalbardAndJanMayenIslands", "SJ" ],
+ 204 : [ "Swaziland", "SZ" ],
+ 205 : [ "Sweden", "SE" ],
+ 206 : [ "Switzerland", "CH" ],
+ 207 : [ "SyrianArabRepublic", "SY" ],
+ 208 : [ "Taiwan", "TW" ],
+ 209 : [ "Tajikistan", "TJ" ],
+ 210 : [ "Tanzania", "TZ" ],
+ 211 : [ "Thailand", "TH" ],
+ 212 : [ "Togo", "TG" ],
+ 213 : [ "Tokelau", "TK" ],
+ 214 : [ "Tonga", "TO" ],
+ 215 : [ "TrinidadAndTobago", "TT" ],
+ 216 : [ "Tunisia", "TN" ],
+ 217 : [ "Turkey", "TR" ],
+ 218 : [ "Turkmenistan", "TM" ],
+ 219 : [ "TurksAndCaicosIslands", "TC" ],
+ 220 : [ "Tuvalu", "TV" ],
+ 221 : [ "Uganda", "UG" ],
+ 222 : [ "Ukraine", "UA" ],
+ 223 : [ "UnitedArabEmirates", "AE" ],
+ 224 : [ "UnitedKingdom", "GB" ],
+ 225 : [ "UnitedStates", "US" ],
+ 226 : [ "UnitedStatesMinorOutlyingIslands", "UM" ],
+ 227 : [ "Uruguay", "UY" ],
+ 228 : [ "Uzbekistan", "UZ" ],
+ 229 : [ "Vanuatu", "VU" ],
+ 230 : [ "VaticanCityState", "VA" ],
+ 231 : [ "Venezuela", "VE" ],
+ 232 : [ "VietNam", "VN" ],
+ 233 : [ "BritishVirginIslands", "VG" ],
+ 234 : [ "USVirginIslands", "VI" ],
+ 235 : [ "WallisAndFutunaIslands", "WF" ],
+ 236 : [ "WesternSahara", "EH" ],
+ 237 : [ "Yemen", "YE" ],
+ 238 : [ "Yugoslavia", "YU" ],
+ 239 : [ "Zambia", "ZM" ],
+ 240 : [ "Zimbabwe", "ZW" ],
+ 241 : [ "SerbiaAndMontenegro", "CS" ]
+}
+
+def countryCodeToId(code):
+ for country_id in country_list:
+ if country_list[country_id][1] == code:
+ return country_id
+ return -1
+
+def languageCodeToId(code):
+ for language_id in language_list:
+ if language_list[language_id][1] == code:
+ return language_id
+ return -1
diff --git a/util/local_database/formattags.txt b/util/local_database/formattags.txt
new file mode 100644
index 0000000000..5138c37a81
--- /dev/null
+++ b/util/local_database/formattags.txt
@@ -0,0 +1,23 @@
+d
+dd
+ddd
+dddd
+M
+MM
+MMM
+MMMM
+yy
+yyyy
+h the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)
+hh the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)
+H the hour without a leading zero (0 to 23, even with AM/PM display)
+HH the hour with a leading zero (00 to 23, even with AM/PM display)
+m
+mm
+s
+ss
+z the milliseconds without leading zeroes (0 to 999)
+zzz the milliseconds with leading zeroes (000 to 999)
+AP or A interpret as an AM/PM time. AP must be either "AM" or "PM"
+ap or a Interpret as an AM/PM time. ap must be either "am" or "pm"
+t time zone
diff --git a/util/local_database/locale.xml b/util/local_database/locale.xml
new file mode 100644
index 0000000000..cb0b3a2b61
--- /dev/null
+++ b/util/local_database/locale.xml
@@ -0,0 +1,9217 @@
+<localeDatabase>
+ <languageList>
+ <language>
+ <name>C</name>
+ <id>1</id>
+ <code> </code>
+ </language>
+ <language>
+ <name>Abkhazian</name>
+ <id>2</id>
+ <code>ab</code>
+ </language>
+ <language>
+ <name>Afan</name>
+ <id>3</id>
+ <code>om</code>
+ </language>
+ <language>
+ <name>Afar</name>
+ <id>4</id>
+ <code>aa</code>
+ </language>
+ <language>
+ <name>Afrikaans</name>
+ <id>5</id>
+ <code>af</code>
+ </language>
+ <language>
+ <name>Albanian</name>
+ <id>6</id>
+ <code>sq</code>
+ </language>
+ <language>
+ <name>Amharic</name>
+ <id>7</id>
+ <code>am</code>
+ </language>
+ <language>
+ <name>Arabic</name>
+ <id>8</id>
+ <code>ar</code>
+ </language>
+ <language>
+ <name>Armenian</name>
+ <id>9</id>
+ <code>hy</code>
+ </language>
+ <language>
+ <name>Assamese</name>
+ <id>10</id>
+ <code>as</code>
+ </language>
+ <language>
+ <name>Aymara</name>
+ <id>11</id>
+ <code>ay</code>
+ </language>
+ <language>
+ <name>Azerbaijani</name>
+ <id>12</id>
+ <code>az</code>
+ </language>
+ <language>
+ <name>Bashkir</name>
+ <id>13</id>
+ <code>ba</code>
+ </language>
+ <language>
+ <name>Basque</name>
+ <id>14</id>
+ <code>eu</code>
+ </language>
+ <language>
+ <name>Bengali</name>
+ <id>15</id>
+ <code>bn</code>
+ </language>
+ <language>
+ <name>Bhutani</name>
+ <id>16</id>
+ <code>dz</code>
+ </language>
+ <language>
+ <name>Bihari</name>
+ <id>17</id>
+ <code>bh</code>
+ </language>
+ <language>
+ <name>Bislama</name>
+ <id>18</id>
+ <code>bi</code>
+ </language>
+ <language>
+ <name>Breton</name>
+ <id>19</id>
+ <code>br</code>
+ </language>
+ <language>
+ <name>Bulgarian</name>
+ <id>20</id>
+ <code>bg</code>
+ </language>
+ <language>
+ <name>Burmese</name>
+ <id>21</id>
+ <code>my</code>
+ </language>
+ <language>
+ <name>Byelorussian</name>
+ <id>22</id>
+ <code>be</code>
+ </language>
+ <language>
+ <name>Cambodian</name>
+ <id>23</id>
+ <code>km</code>
+ </language>
+ <language>
+ <name>Catalan</name>
+ <id>24</id>
+ <code>ca</code>
+ </language>
+ <language>
+ <name>Chinese</name>
+ <id>25</id>
+ <code>zh</code>
+ </language>
+ <language>
+ <name>Corsican</name>
+ <id>26</id>
+ <code>co</code>
+ </language>
+ <language>
+ <name>Croatian</name>
+ <id>27</id>
+ <code>hr</code>
+ </language>
+ <language>
+ <name>Czech</name>
+ <id>28</id>
+ <code>cs</code>
+ </language>
+ <language>
+ <name>Danish</name>
+ <id>29</id>
+ <code>da</code>
+ </language>
+ <language>
+ <name>Dutch</name>
+ <id>30</id>
+ <code>nl</code>
+ </language>
+ <language>
+ <name>English</name>
+ <id>31</id>
+ <code>en</code>
+ </language>
+ <language>
+ <name>Esperanto</name>
+ <id>32</id>
+ <code>eo</code>
+ </language>
+ <language>
+ <name>Estonian</name>
+ <id>33</id>
+ <code>et</code>
+ </language>
+ <language>
+ <name>Faroese</name>
+ <id>34</id>
+ <code>fo</code>
+ </language>
+ <language>
+ <name>Fiji</name>
+ <id>35</id>
+ <code>fj</code>
+ </language>
+ <language>
+ <name>Finnish</name>
+ <id>36</id>
+ <code>fi</code>
+ </language>
+ <language>
+ <name>French</name>
+ <id>37</id>
+ <code>fr</code>
+ </language>
+ <language>
+ <name>Frisian</name>
+ <id>38</id>
+ <code>fy</code>
+ </language>
+ <language>
+ <name>Gaelic</name>
+ <id>39</id>
+ <code>gd</code>
+ </language>
+ <language>
+ <name>Galician</name>
+ <id>40</id>
+ <code>gl</code>
+ </language>
+ <language>
+ <name>Georgian</name>
+ <id>41</id>
+ <code>ka</code>
+ </language>
+ <language>
+ <name>German</name>
+ <id>42</id>
+ <code>de</code>
+ </language>
+ <language>
+ <name>Greek</name>
+ <id>43</id>
+ <code>el</code>
+ </language>
+ <language>
+ <name>Greenlandic</name>
+ <id>44</id>
+ <code>kl</code>
+ </language>
+ <language>
+ <name>Guarani</name>
+ <id>45</id>
+ <code>gn</code>
+ </language>
+ <language>
+ <name>Gujarati</name>
+ <id>46</id>
+ <code>gu</code>
+ </language>
+ <language>
+ <name>Hausa</name>
+ <id>47</id>
+ <code>ha</code>
+ </language>
+ <language>
+ <name>Hebrew</name>
+ <id>48</id>
+ <code>he</code>
+ </language>
+ <language>
+ <name>Hindi</name>
+ <id>49</id>
+ <code>hi</code>
+ </language>
+ <language>
+ <name>Hungarian</name>
+ <id>50</id>
+ <code>hu</code>
+ </language>
+ <language>
+ <name>Icelandic</name>
+ <id>51</id>
+ <code>is</code>
+ </language>
+ <language>
+ <name>Indonesian</name>
+ <id>52</id>
+ <code>id</code>
+ </language>
+ <language>
+ <name>Interlingua</name>
+ <id>53</id>
+ <code>ia</code>
+ </language>
+ <language>
+ <name>Interlingue</name>
+ <id>54</id>
+ <code>ie</code>
+ </language>
+ <language>
+ <name>Inuktitut</name>
+ <id>55</id>
+ <code>iu</code>
+ </language>
+ <language>
+ <name>Inupiak</name>
+ <id>56</id>
+ <code>ik</code>
+ </language>
+ <language>
+ <name>Irish</name>
+ <id>57</id>
+ <code>ga</code>
+ </language>
+ <language>
+ <name>Italian</name>
+ <id>58</id>
+ <code>it</code>
+ </language>
+ <language>
+ <name>Japanese</name>
+ <id>59</id>
+ <code>ja</code>
+ </language>
+ <language>
+ <name>Javanese</name>
+ <id>60</id>
+ <code>jv</code>
+ </language>
+ <language>
+ <name>Kannada</name>
+ <id>61</id>
+ <code>kn</code>
+ </language>
+ <language>
+ <name>Kashmiri</name>
+ <id>62</id>
+ <code>ks</code>
+ </language>
+ <language>
+ <name>Kazakh</name>
+ <id>63</id>
+ <code>kk</code>
+ </language>
+ <language>
+ <name>Kinyarwanda</name>
+ <id>64</id>
+ <code>rw</code>
+ </language>
+ <language>
+ <name>Kirghiz</name>
+ <id>65</id>
+ <code>ky</code>
+ </language>
+ <language>
+ <name>Korean</name>
+ <id>66</id>
+ <code>ko</code>
+ </language>
+ <language>
+ <name>Kurdish</name>
+ <id>67</id>
+ <code>ku</code>
+ </language>
+ <language>
+ <name>Kurundi</name>
+ <id>68</id>
+ <code>rn</code>
+ </language>
+ <language>
+ <name>Laothian</name>
+ <id>69</id>
+ <code>lo</code>
+ </language>
+ <language>
+ <name>Latin</name>
+ <id>70</id>
+ <code>la</code>
+ </language>
+ <language>
+ <name>Latvian</name>
+ <id>71</id>
+ <code>lv</code>
+ </language>
+ <language>
+ <name>Lingala</name>
+ <id>72</id>
+ <code>ln</code>
+ </language>
+ <language>
+ <name>Lithuanian</name>
+ <id>73</id>
+ <code>lt</code>
+ </language>
+ <language>
+ <name>Macedonian</name>
+ <id>74</id>
+ <code>mk</code>
+ </language>
+ <language>
+ <name>Malagasy</name>
+ <id>75</id>
+ <code>mg</code>
+ </language>
+ <language>
+ <name>Malay</name>
+ <id>76</id>
+ <code>ms</code>
+ </language>
+ <language>
+ <name>Malayalam</name>
+ <id>77</id>
+ <code>ml</code>
+ </language>
+ <language>
+ <name>Maltese</name>
+ <id>78</id>
+ <code>mt</code>
+ </language>
+ <language>
+ <name>Maori</name>
+ <id>79</id>
+ <code>mi</code>
+ </language>
+ <language>
+ <name>Marathi</name>
+ <id>80</id>
+ <code>mr</code>
+ </language>
+ <language>
+ <name>Moldavian</name>
+ <id>81</id>
+ <code>mo</code>
+ </language>
+ <language>
+ <name>Mongolian</name>
+ <id>82</id>
+ <code>mn</code>
+ </language>
+ <language>
+ <name>Nauru</name>
+ <id>83</id>
+ <code>na</code>
+ </language>
+ <language>
+ <name>Nepali</name>
+ <id>84</id>
+ <code>ne</code>
+ </language>
+ <language>
+ <name>Norwegian</name>
+ <id>85</id>
+ <code>nb</code>
+ </language>
+ <language>
+ <name>Occitan</name>
+ <id>86</id>
+ <code>oc</code>
+ </language>
+ <language>
+ <name>Oriya</name>
+ <id>87</id>
+ <code>or</code>
+ </language>
+ <language>
+ <name>Pashto</name>
+ <id>88</id>
+ <code>ps</code>
+ </language>
+ <language>
+ <name>Persian</name>
+ <id>89</id>
+ <code>fa</code>
+ </language>
+ <language>
+ <name>Polish</name>
+ <id>90</id>
+ <code>pl</code>
+ </language>
+ <language>
+ <name>Portuguese</name>
+ <id>91</id>
+ <code>pt</code>
+ </language>
+ <language>
+ <name>Punjabi</name>
+ <id>92</id>
+ <code>pa</code>
+ </language>
+ <language>
+ <name>Quechua</name>
+ <id>93</id>
+ <code>qu</code>
+ </language>
+ <language>
+ <name>RhaetoRomance</name>
+ <id>94</id>
+ <code>rm</code>
+ </language>
+ <language>
+ <name>Romanian</name>
+ <id>95</id>
+ <code>ro</code>
+ </language>
+ <language>
+ <name>Russian</name>
+ <id>96</id>
+ <code>ru</code>
+ </language>
+ <language>
+ <name>Samoan</name>
+ <id>97</id>
+ <code>sm</code>
+ </language>
+ <language>
+ <name>Sangho</name>
+ <id>98</id>
+ <code>sg</code>
+ </language>
+ <language>
+ <name>Sanskrit</name>
+ <id>99</id>
+ <code>sa</code>
+ </language>
+ <language>
+ <name>Serbian</name>
+ <id>100</id>
+ <code>sr</code>
+ </language>
+ <language>
+ <name>SerboCroatian</name>
+ <id>101</id>
+ <code>sh</code>
+ </language>
+ <language>
+ <name>Sesotho</name>
+ <id>102</id>
+ <code>st</code>
+ </language>
+ <language>
+ <name>Setswana</name>
+ <id>103</id>
+ <code>tn</code>
+ </language>
+ <language>
+ <name>Shona</name>
+ <id>104</id>
+ <code>sn</code>
+ </language>
+ <language>
+ <name>Sindhi</name>
+ <id>105</id>
+ <code>sd</code>
+ </language>
+ <language>
+ <name>Singhalese</name>
+ <id>106</id>
+ <code>si</code>
+ </language>
+ <language>
+ <name>Siswati</name>
+ <id>107</id>
+ <code>ss</code>
+ </language>
+ <language>
+ <name>Slovak</name>
+ <id>108</id>
+ <code>sk</code>
+ </language>
+ <language>
+ <name>Slovenian</name>
+ <id>109</id>
+ <code>sl</code>
+ </language>
+ <language>
+ <name>Somali</name>
+ <id>110</id>
+ <code>so</code>
+ </language>
+ <language>
+ <name>Spanish</name>
+ <id>111</id>
+ <code>es</code>
+ </language>
+ <language>
+ <name>Sundanese</name>
+ <id>112</id>
+ <code>su</code>
+ </language>
+ <language>
+ <name>Swahili</name>
+ <id>113</id>
+ <code>sw</code>
+ </language>
+ <language>
+ <name>Swedish</name>
+ <id>114</id>
+ <code>sv</code>
+ </language>
+ <language>
+ <name>Tagalog</name>
+ <id>115</id>
+ <code>tl</code>
+ </language>
+ <language>
+ <name>Tajik</name>
+ <id>116</id>
+ <code>tg</code>
+ </language>
+ <language>
+ <name>Tamil</name>
+ <id>117</id>
+ <code>ta</code>
+ </language>
+ <language>
+ <name>Tatar</name>
+ <id>118</id>
+ <code>tt</code>
+ </language>
+ <language>
+ <name>Telugu</name>
+ <id>119</id>
+ <code>te</code>
+ </language>
+ <language>
+ <name>Thai</name>
+ <id>120</id>
+ <code>th</code>
+ </language>
+ <language>
+ <name>Tibetan</name>
+ <id>121</id>
+ <code>bo</code>
+ </language>
+ <language>
+ <name>Tigrinya</name>
+ <id>122</id>
+ <code>ti</code>
+ </language>
+ <language>
+ <name>Tonga</name>
+ <id>123</id>
+ <code>to</code>
+ </language>
+ <language>
+ <name>Tsonga</name>
+ <id>124</id>
+ <code>ts</code>
+ </language>
+ <language>
+ <name>Turkish</name>
+ <id>125</id>
+ <code>tr</code>
+ </language>
+ <language>
+ <name>Turkmen</name>
+ <id>126</id>
+ <code>tk</code>
+ </language>
+ <language>
+ <name>Twi</name>
+ <id>127</id>
+ <code>tw</code>
+ </language>
+ <language>
+ <name>Uigur</name>
+ <id>128</id>
+ <code>ug</code>
+ </language>
+ <language>
+ <name>Ukrainian</name>
+ <id>129</id>
+ <code>uk</code>
+ </language>
+ <language>
+ <name>Urdu</name>
+ <id>130</id>
+ <code>ur</code>
+ </language>
+ <language>
+ <name>Uzbek</name>
+ <id>131</id>
+ <code>uz</code>
+ </language>
+ <language>
+ <name>Vietnamese</name>
+ <id>132</id>
+ <code>vi</code>
+ </language>
+ <language>
+ <name>Volapuk</name>
+ <id>133</id>
+ <code>vo</code>
+ </language>
+ <language>
+ <name>Welsh</name>
+ <id>134</id>
+ <code>cy</code>
+ </language>
+ <language>
+ <name>Wolof</name>
+ <id>135</id>
+ <code>wo</code>
+ </language>
+ <language>
+ <name>Xhosa</name>
+ <id>136</id>
+ <code>xh</code>
+ </language>
+ <language>
+ <name>Yiddish</name>
+ <id>137</id>
+ <code>yi</code>
+ </language>
+ <language>
+ <name>Yoruba</name>
+ <id>138</id>
+ <code>yo</code>
+ </language>
+ <language>
+ <name>Zhuang</name>
+ <id>139</id>
+ <code>za</code>
+ </language>
+ <language>
+ <name>Zulu</name>
+ <id>140</id>
+ <code>zu</code>
+ </language>
+ <language>
+ <name>Nynorsk</name>
+ <id>141</id>
+ <code>nn</code>
+ </language>
+ <language>
+ <name>Bosnian</name>
+ <id>142</id>
+ <code>bs</code>
+ </language>
+ <language>
+ <name>Divehi</name>
+ <id>143</id>
+ <code>dv</code>
+ </language>
+ <language>
+ <name>Manx</name>
+ <id>144</id>
+ <code>gv</code>
+ </language>
+ <language>
+ <name>Cornish</name>
+ <id>145</id>
+ <code>kw</code>
+ </language>
+ <language>
+ <name>Akan</name>
+ <id>146</id>
+ <code>ak</code>
+ </language>
+ <language>
+ <name>Konkani</name>
+ <id>147</id>
+ <code>kok</code>
+ </language>
+ <language>
+ <name>Ga</name>
+ <id>148</id>
+ <code>gaa</code>
+ </language>
+ <language>
+ <name>Igbo</name>
+ <id>149</id>
+ <code>ig</code>
+ </language>
+ <language>
+ <name>Kamba</name>
+ <id>150</id>
+ <code>kam</code>
+ </language>
+ <language>
+ <name>Syriac</name>
+ <id>151</id>
+ <code>syr</code>
+ </language>
+ <language>
+ <name>Blin</name>
+ <id>152</id>
+ <code>byn</code>
+ </language>
+ <language>
+ <name>Geez</name>
+ <id>153</id>
+ <code>gez</code>
+ </language>
+ <language>
+ <name>Koro</name>
+ <id>154</id>
+ <code>kfo</code>
+ </language>
+ <language>
+ <name>Sidamo</name>
+ <id>155</id>
+ <code>sid</code>
+ </language>
+ <language>
+ <name>Atsam</name>
+ <id>156</id>
+ <code>cch</code>
+ </language>
+ <language>
+ <name>Tigre</name>
+ <id>157</id>
+ <code>tig</code>
+ </language>
+ <language>
+ <name>Jju</name>
+ <id>158</id>
+ <code>kaj</code>
+ </language>
+ <language>
+ <name>Friulian</name>
+ <id>159</id>
+ <code>fur</code>
+ </language>
+ <language>
+ <name>Venda</name>
+ <id>160</id>
+ <code>ve</code>
+ </language>
+ <language>
+ <name>Ewe</name>
+ <id>161</id>
+ <code>ee</code>
+ </language>
+ <language>
+ <name>Walamo</name>
+ <id>162</id>
+ <code>wa</code>
+ </language>
+ <language>
+ <name>Hawaiian</name>
+ <id>163</id>
+ <code>haw</code>
+ </language>
+ <language>
+ <name>Tyap</name>
+ <id>164</id>
+ <code>kcg</code>
+ </language>
+ <language>
+ <name>Chewa</name>
+ <id>165</id>
+ <code>ny</code>
+ </language>
+ </languageList>
+ <countryList>
+ <country>
+ <name>AnyCountry</name>
+ <id>0</id>
+ <code> </code>
+ </country>
+ <country>
+ <name>Afghanistan</name>
+ <id>1</id>
+ <code>AF</code>
+ </country>
+ <country>
+ <name>Albania</name>
+ <id>2</id>
+ <code>AL</code>
+ </country>
+ <country>
+ <name>Algeria</name>
+ <id>3</id>
+ <code>DZ</code>
+ </country>
+ <country>
+ <name>AmericanSamoa</name>
+ <id>4</id>
+ <code>AS</code>
+ </country>
+ <country>
+ <name>Andorra</name>
+ <id>5</id>
+ <code>AD</code>
+ </country>
+ <country>
+ <name>Angola</name>
+ <id>6</id>
+ <code>AO</code>
+ </country>
+ <country>
+ <name>Anguilla</name>
+ <id>7</id>
+ <code>AI</code>
+ </country>
+ <country>
+ <name>Antarctica</name>
+ <id>8</id>
+ <code>AQ</code>
+ </country>
+ <country>
+ <name>AntiguaAndBarbuda</name>
+ <id>9</id>
+ <code>AG</code>
+ </country>
+ <country>
+ <name>Argentina</name>
+ <id>10</id>
+ <code>AR</code>
+ </country>
+ <country>
+ <name>Armenia</name>
+ <id>11</id>
+ <code>AM</code>
+ </country>
+ <country>
+ <name>Aruba</name>
+ <id>12</id>
+ <code>AW</code>
+ </country>
+ <country>
+ <name>Australia</name>
+ <id>13</id>
+ <code>AU</code>
+ </country>
+ <country>
+ <name>Austria</name>
+ <id>14</id>
+ <code>AT</code>
+ </country>
+ <country>
+ <name>Azerbaijan</name>
+ <id>15</id>
+ <code>AZ</code>
+ </country>
+ <country>
+ <name>Bahamas</name>
+ <id>16</id>
+ <code>BS</code>
+ </country>
+ <country>
+ <name>Bahrain</name>
+ <id>17</id>
+ <code>BH</code>
+ </country>
+ <country>
+ <name>Bangladesh</name>
+ <id>18</id>
+ <code>BD</code>
+ </country>
+ <country>
+ <name>Barbados</name>
+ <id>19</id>
+ <code>BB</code>
+ </country>
+ <country>
+ <name>Belarus</name>
+ <id>20</id>
+ <code>BY</code>
+ </country>
+ <country>
+ <name>Belgium</name>
+ <id>21</id>
+ <code>BE</code>
+ </country>
+ <country>
+ <name>Belize</name>
+ <id>22</id>
+ <code>BZ</code>
+ </country>
+ <country>
+ <name>Benin</name>
+ <id>23</id>
+ <code>BJ</code>
+ </country>
+ <country>
+ <name>Bermuda</name>
+ <id>24</id>
+ <code>BM</code>
+ </country>
+ <country>
+ <name>Bhutan</name>
+ <id>25</id>
+ <code>BT</code>
+ </country>
+ <country>
+ <name>Bolivia</name>
+ <id>26</id>
+ <code>BO</code>
+ </country>
+ <country>
+ <name>BosniaAndHerzegowina</name>
+ <id>27</id>
+ <code>BA</code>
+ </country>
+ <country>
+ <name>Botswana</name>
+ <id>28</id>
+ <code>BW</code>
+ </country>
+ <country>
+ <name>BouvetIsland</name>
+ <id>29</id>
+ <code>BV</code>
+ </country>
+ <country>
+ <name>Brazil</name>
+ <id>30</id>
+ <code>BR</code>
+ </country>
+ <country>
+ <name>BritishIndianOceanTerritory</name>
+ <id>31</id>
+ <code>IO</code>
+ </country>
+ <country>
+ <name>BruneiDarussalam</name>
+ <id>32</id>
+ <code>BN</code>
+ </country>
+ <country>
+ <name>Bulgaria</name>
+ <id>33</id>
+ <code>BG</code>
+ </country>
+ <country>
+ <name>BurkinaFaso</name>
+ <id>34</id>
+ <code>BF</code>
+ </country>
+ <country>
+ <name>Burundi</name>
+ <id>35</id>
+ <code>BI</code>
+ </country>
+ <country>
+ <name>Cambodia</name>
+ <id>36</id>
+ <code>KH</code>
+ </country>
+ <country>
+ <name>Cameroon</name>
+ <id>37</id>
+ <code>CM</code>
+ </country>
+ <country>
+ <name>Canada</name>
+ <id>38</id>
+ <code>CA</code>
+ </country>
+ <country>
+ <name>CapeVerde</name>
+ <id>39</id>
+ <code>CV</code>
+ </country>
+ <country>
+ <name>CaymanIslands</name>
+ <id>40</id>
+ <code>KY</code>
+ </country>
+ <country>
+ <name>CentralAfricanRepublic</name>
+ <id>41</id>
+ <code>CF</code>
+ </country>
+ <country>
+ <name>Chad</name>
+ <id>42</id>
+ <code>TD</code>
+ </country>
+ <country>
+ <name>Chile</name>
+ <id>43</id>
+ <code>CL</code>
+ </country>
+ <country>
+ <name>China</name>
+ <id>44</id>
+ <code>CN</code>
+ </country>
+ <country>
+ <name>ChristmasIsland</name>
+ <id>45</id>
+ <code>CX</code>
+ </country>
+ <country>
+ <name>CocosIslands</name>
+ <id>46</id>
+ <code>CC</code>
+ </country>
+ <country>
+ <name>Colombia</name>
+ <id>47</id>
+ <code>CO</code>
+ </country>
+ <country>
+ <name>Comoros</name>
+ <id>48</id>
+ <code>KM</code>
+ </country>
+ <country>
+ <name>DemocraticRepublicOfCongo</name>
+ <id>49</id>
+ <code>CD</code>
+ </country>
+ <country>
+ <name>PeoplesRepublicOfCongo</name>
+ <id>50</id>
+ <code>CG</code>
+ </country>
+ <country>
+ <name>CookIslands</name>
+ <id>51</id>
+ <code>CK</code>
+ </country>
+ <country>
+ <name>CostaRica</name>
+ <id>52</id>
+ <code>CR</code>
+ </country>
+ <country>
+ <name>IvoryCoast</name>
+ <id>53</id>
+ <code>CI</code>
+ </country>
+ <country>
+ <name>Croatia</name>
+ <id>54</id>
+ <code>HR</code>
+ </country>
+ <country>
+ <name>Cuba</name>
+ <id>55</id>
+ <code>CU</code>
+ </country>
+ <country>
+ <name>Cyprus</name>
+ <id>56</id>
+ <code>CY</code>
+ </country>
+ <country>
+ <name>CzechRepublic</name>
+ <id>57</id>
+ <code>CZ</code>
+ </country>
+ <country>
+ <name>Denmark</name>
+ <id>58</id>
+ <code>DK</code>
+ </country>
+ <country>
+ <name>Djibouti</name>
+ <id>59</id>
+ <code>DJ</code>
+ </country>
+ <country>
+ <name>Dominica</name>
+ <id>60</id>
+ <code>DM</code>
+ </country>
+ <country>
+ <name>DominicanRepublic</name>
+ <id>61</id>
+ <code>DO</code>
+ </country>
+ <country>
+ <name>EastTimor</name>
+ <id>62</id>
+ <code>TL</code>
+ </country>
+ <country>
+ <name>Ecuador</name>
+ <id>63</id>
+ <code>EC</code>
+ </country>
+ <country>
+ <name>Egypt</name>
+ <id>64</id>
+ <code>EG</code>
+ </country>
+ <country>
+ <name>ElSalvador</name>
+ <id>65</id>
+ <code>SV</code>
+ </country>
+ <country>
+ <name>EquatorialGuinea</name>
+ <id>66</id>
+ <code>GQ</code>
+ </country>
+ <country>
+ <name>Eritrea</name>
+ <id>67</id>
+ <code>ER</code>
+ </country>
+ <country>
+ <name>Estonia</name>
+ <id>68</id>
+ <code>EE</code>
+ </country>
+ <country>
+ <name>Ethiopia</name>
+ <id>69</id>
+ <code>ET</code>
+ </country>
+ <country>
+ <name>FalklandIslands</name>
+ <id>70</id>
+ <code>FK</code>
+ </country>
+ <country>
+ <name>FaroeIslands</name>
+ <id>71</id>
+ <code>FO</code>
+ </country>
+ <country>
+ <name>Fiji</name>
+ <id>72</id>
+ <code>FJ</code>
+ </country>
+ <country>
+ <name>Finland</name>
+ <id>73</id>
+ <code>FI</code>
+ </country>
+ <country>
+ <name>France</name>
+ <id>74</id>
+ <code>FR</code>
+ </country>
+ <country>
+ <name>MetropolitanFrance</name>
+ <id>75</id>
+ <code>FX</code>
+ </country>
+ <country>
+ <name>FrenchGuiana</name>
+ <id>76</id>
+ <code>GF</code>
+ </country>
+ <country>
+ <name>FrenchPolynesia</name>
+ <id>77</id>
+ <code>PF</code>
+ </country>
+ <country>
+ <name>FrenchSouthernTerritories</name>
+ <id>78</id>
+ <code>TF</code>
+ </country>
+ <country>
+ <name>Gabon</name>
+ <id>79</id>
+ <code>GA</code>
+ </country>
+ <country>
+ <name>Gambia</name>
+ <id>80</id>
+ <code>GM</code>
+ </country>
+ <country>
+ <name>Georgia</name>
+ <id>81</id>
+ <code>GE</code>
+ </country>
+ <country>
+ <name>Germany</name>
+ <id>82</id>
+ <code>DE</code>
+ </country>
+ <country>
+ <name>Ghana</name>
+ <id>83</id>
+ <code>GH</code>
+ </country>
+ <country>
+ <name>Gibraltar</name>
+ <id>84</id>
+ <code>GI</code>
+ </country>
+ <country>
+ <name>Greece</name>
+ <id>85</id>
+ <code>GR</code>
+ </country>
+ <country>
+ <name>Greenland</name>
+ <id>86</id>
+ <code>GL</code>
+ </country>
+ <country>
+ <name>Grenada</name>
+ <id>87</id>
+ <code>GD</code>
+ </country>
+ <country>
+ <name>Guadeloupe</name>
+ <id>88</id>
+ <code>GP</code>
+ </country>
+ <country>
+ <name>Guam</name>
+ <id>89</id>
+ <code>GU</code>
+ </country>
+ <country>
+ <name>Guatemala</name>
+ <id>90</id>
+ <code>GT</code>
+ </country>
+ <country>
+ <name>Guinea</name>
+ <id>91</id>
+ <code>GN</code>
+ </country>
+ <country>
+ <name>GuineaBissau</name>
+ <id>92</id>
+ <code>GW</code>
+ </country>
+ <country>
+ <name>Guyana</name>
+ <id>93</id>
+ <code>GY</code>
+ </country>
+ <country>
+ <name>Haiti</name>
+ <id>94</id>
+ <code>HT</code>
+ </country>
+ <country>
+ <name>HeardAndMcDonaldIslands</name>
+ <id>95</id>
+ <code>HM</code>
+ </country>
+ <country>
+ <name>Honduras</name>
+ <id>96</id>
+ <code>HN</code>
+ </country>
+ <country>
+ <name>HongKong</name>
+ <id>97</id>
+ <code>HK</code>
+ </country>
+ <country>
+ <name>Hungary</name>
+ <id>98</id>
+ <code>HU</code>
+ </country>
+ <country>
+ <name>Iceland</name>
+ <id>99</id>
+ <code>IS</code>
+ </country>
+ <country>
+ <name>India</name>
+ <id>100</id>
+ <code>IN</code>
+ </country>
+ <country>
+ <name>Indonesia</name>
+ <id>101</id>
+ <code>ID</code>
+ </country>
+ <country>
+ <name>Iran</name>
+ <id>102</id>
+ <code>IR</code>
+ </country>
+ <country>
+ <name>Iraq</name>
+ <id>103</id>
+ <code>IQ</code>
+ </country>
+ <country>
+ <name>Ireland</name>
+ <id>104</id>
+ <code>IE</code>
+ </country>
+ <country>
+ <name>Israel</name>
+ <id>105</id>
+ <code>IL</code>
+ </country>
+ <country>
+ <name>Italy</name>
+ <id>106</id>
+ <code>IT</code>
+ </country>
+ <country>
+ <name>Jamaica</name>
+ <id>107</id>
+ <code>JM</code>
+ </country>
+ <country>
+ <name>Japan</name>
+ <id>108</id>
+ <code>JP</code>
+ </country>
+ <country>
+ <name>Jordan</name>
+ <id>109</id>
+ <code>JO</code>
+ </country>
+ <country>
+ <name>Kazakhstan</name>
+ <id>110</id>
+ <code>KZ</code>
+ </country>
+ <country>
+ <name>Kenya</name>
+ <id>111</id>
+ <code>KE</code>
+ </country>
+ <country>
+ <name>Kiribati</name>
+ <id>112</id>
+ <code>KI</code>
+ </country>
+ <country>
+ <name>DemocraticRepublicOfKorea</name>
+ <id>113</id>
+ <code>KP</code>
+ </country>
+ <country>
+ <name>RepublicOfKorea</name>
+ <id>114</id>
+ <code>KR</code>
+ </country>
+ <country>
+ <name>Kuwait</name>
+ <id>115</id>
+ <code>KW</code>
+ </country>
+ <country>
+ <name>Kyrgyzstan</name>
+ <id>116</id>
+ <code>KG</code>
+ </country>
+ <country>
+ <name>Lao</name>
+ <id>117</id>
+ <code>LA</code>
+ </country>
+ <country>
+ <name>Latvia</name>
+ <id>118</id>
+ <code>LV</code>
+ </country>
+ <country>
+ <name>Lebanon</name>
+ <id>119</id>
+ <code>LB</code>
+ </country>
+ <country>
+ <name>Lesotho</name>
+ <id>120</id>
+ <code>LS</code>
+ </country>
+ <country>
+ <name>Liberia</name>
+ <id>121</id>
+ <code>LR</code>
+ </country>
+ <country>
+ <name>LibyanArabJamahiriya</name>
+ <id>122</id>
+ <code>LY</code>
+ </country>
+ <country>
+ <name>Liechtenstein</name>
+ <id>123</id>
+ <code>LI</code>
+ </country>
+ <country>
+ <name>Lithuania</name>
+ <id>124</id>
+ <code>LT</code>
+ </country>
+ <country>
+ <name>Luxembourg</name>
+ <id>125</id>
+ <code>LU</code>
+ </country>
+ <country>
+ <name>Macau</name>
+ <id>126</id>
+ <code>MO</code>
+ </country>
+ <country>
+ <name>Macedonia</name>
+ <id>127</id>
+ <code>MK</code>
+ </country>
+ <country>
+ <name>Madagascar</name>
+ <id>128</id>
+ <code>MG</code>
+ </country>
+ <country>
+ <name>Malawi</name>
+ <id>129</id>
+ <code>MW</code>
+ </country>
+ <country>
+ <name>Malaysia</name>
+ <id>130</id>
+ <code>MY</code>
+ </country>
+ <country>
+ <name>Maldives</name>
+ <id>131</id>
+ <code>MV</code>
+ </country>
+ <country>
+ <name>Mali</name>
+ <id>132</id>
+ <code>ML</code>
+ </country>
+ <country>
+ <name>Malta</name>
+ <id>133</id>
+ <code>MT</code>
+ </country>
+ <country>
+ <name>MarshallIslands</name>
+ <id>134</id>
+ <code>MH</code>
+ </country>
+ <country>
+ <name>Martinique</name>
+ <id>135</id>
+ <code>MQ</code>
+ </country>
+ <country>
+ <name>Mauritania</name>
+ <id>136</id>
+ <code>MR</code>
+ </country>
+ <country>
+ <name>Mauritius</name>
+ <id>137</id>
+ <code>MU</code>
+ </country>
+ <country>
+ <name>Mayotte</name>
+ <id>138</id>
+ <code>YT</code>
+ </country>
+ <country>
+ <name>Mexico</name>
+ <id>139</id>
+ <code>MX</code>
+ </country>
+ <country>
+ <name>Micronesia</name>
+ <id>140</id>
+ <code>FM</code>
+ </country>
+ <country>
+ <name>Moldova</name>
+ <id>141</id>
+ <code>MD</code>
+ </country>
+ <country>
+ <name>Monaco</name>
+ <id>142</id>
+ <code>MC</code>
+ </country>
+ <country>
+ <name>Mongolia</name>
+ <id>143</id>
+ <code>MN</code>
+ </country>
+ <country>
+ <name>Montserrat</name>
+ <id>144</id>
+ <code>MS</code>
+ </country>
+ <country>
+ <name>Morocco</name>
+ <id>145</id>
+ <code>MA</code>
+ </country>
+ <country>
+ <name>Mozambique</name>
+ <id>146</id>
+ <code>MZ</code>
+ </country>
+ <country>
+ <name>Myanmar</name>
+ <id>147</id>
+ <code>MM</code>
+ </country>
+ <country>
+ <name>Namibia</name>
+ <id>148</id>
+ <code>NA</code>
+ </country>
+ <country>
+ <name>Nauru</name>
+ <id>149</id>
+ <code>NR</code>
+ </country>
+ <country>
+ <name>Nepal</name>
+ <id>150</id>
+ <code>NP</code>
+ </country>
+ <country>
+ <name>Netherlands</name>
+ <id>151</id>
+ <code>NL</code>
+ </country>
+ <country>
+ <name>NetherlandsAntilles</name>
+ <id>152</id>
+ <code>AN</code>
+ </country>
+ <country>
+ <name>NewCaledonia</name>
+ <id>153</id>
+ <code>NC</code>
+ </country>
+ <country>
+ <name>NewZealand</name>
+ <id>154</id>
+ <code>NZ</code>
+ </country>
+ <country>
+ <name>Nicaragua</name>
+ <id>155</id>
+ <code>NI</code>
+ </country>
+ <country>
+ <name>Niger</name>
+ <id>156</id>
+ <code>NE</code>
+ </country>
+ <country>
+ <name>Nigeria</name>
+ <id>157</id>
+ <code>NG</code>
+ </country>
+ <country>
+ <name>Niue</name>
+ <id>158</id>
+ <code>NU</code>
+ </country>
+ <country>
+ <name>NorfolkIsland</name>
+ <id>159</id>
+ <code>NF</code>
+ </country>
+ <country>
+ <name>NorthernMarianaIslands</name>
+ <id>160</id>
+ <code>MP</code>
+ </country>
+ <country>
+ <name>Norway</name>
+ <id>161</id>
+ <code>NO</code>
+ </country>
+ <country>
+ <name>Oman</name>
+ <id>162</id>
+ <code>OM</code>
+ </country>
+ <country>
+ <name>Pakistan</name>
+ <id>163</id>
+ <code>PK</code>
+ </country>
+ <country>
+ <name>Palau</name>
+ <id>164</id>
+ <code>PW</code>
+ </country>
+ <country>
+ <name>PalestinianTerritory</name>
+ <id>165</id>
+ <code>PS</code>
+ </country>
+ <country>
+ <name>Panama</name>
+ <id>166</id>
+ <code>PA</code>
+ </country>
+ <country>
+ <name>PapuaNewGuinea</name>
+ <id>167</id>
+ <code>PG</code>
+ </country>
+ <country>
+ <name>Paraguay</name>
+ <id>168</id>
+ <code>PY</code>
+ </country>
+ <country>
+ <name>Peru</name>
+ <id>169</id>
+ <code>PE</code>
+ </country>
+ <country>
+ <name>Philippines</name>
+ <id>170</id>
+ <code>PH</code>
+ </country>
+ <country>
+ <name>Pitcairn</name>
+ <id>171</id>
+ <code>PN</code>
+ </country>
+ <country>
+ <name>Poland</name>
+ <id>172</id>
+ <code>PL</code>
+ </country>
+ <country>
+ <name>Portugal</name>
+ <id>173</id>
+ <code>PT</code>
+ </country>
+ <country>
+ <name>PuertoRico</name>
+ <id>174</id>
+ <code>PR</code>
+ </country>
+ <country>
+ <name>Qatar</name>
+ <id>175</id>
+ <code>QA</code>
+ </country>
+ <country>
+ <name>Reunion</name>
+ <id>176</id>
+ <code>RE</code>
+ </country>
+ <country>
+ <name>Romania</name>
+ <id>177</id>
+ <code>RO</code>
+ </country>
+ <country>
+ <name>RussianFederation</name>
+ <id>178</id>
+ <code>RU</code>
+ </country>
+ <country>
+ <name>Rwanda</name>
+ <id>179</id>
+ <code>RW</code>
+ </country>
+ <country>
+ <name>SaintKittsAndNevis</name>
+ <id>180</id>
+ <code>KN</code>
+ </country>
+ <country>
+ <name>StLucia</name>
+ <id>181</id>
+ <code>LC</code>
+ </country>
+ <country>
+ <name>StVincentAndTheGrenadines</name>
+ <id>182</id>
+ <code>VC</code>
+ </country>
+ <country>
+ <name>Samoa</name>
+ <id>183</id>
+ <code>WS</code>
+ </country>
+ <country>
+ <name>SanMarino</name>
+ <id>184</id>
+ <code>SM</code>
+ </country>
+ <country>
+ <name>SaoTomeAndPrincipe</name>
+ <id>185</id>
+ <code>ST</code>
+ </country>
+ <country>
+ <name>SaudiArabia</name>
+ <id>186</id>
+ <code>SA</code>
+ </country>
+ <country>
+ <name>Senegal</name>
+ <id>187</id>
+ <code>SN</code>
+ </country>
+ <country>
+ <name>Seychelles</name>
+ <id>188</id>
+ <code>SC</code>
+ </country>
+ <country>
+ <name>SierraLeone</name>
+ <id>189</id>
+ <code>SL</code>
+ </country>
+ <country>
+ <name>Singapore</name>
+ <id>190</id>
+ <code>SG</code>
+ </country>
+ <country>
+ <name>Slovakia</name>
+ <id>191</id>
+ <code>SK</code>
+ </country>
+ <country>
+ <name>Slovenia</name>
+ <id>192</id>
+ <code>SI</code>
+ </country>
+ <country>
+ <name>SolomonIslands</name>
+ <id>193</id>
+ <code>SB</code>
+ </country>
+ <country>
+ <name>Somalia</name>
+ <id>194</id>
+ <code>SO</code>
+ </country>
+ <country>
+ <name>SouthAfrica</name>
+ <id>195</id>
+ <code>ZA</code>
+ </country>
+ <country>
+ <name>SouthGeorgiaAndTheSouthSandwichIslands</name>
+ <id>196</id>
+ <code>GS</code>
+ </country>
+ <country>
+ <name>Spain</name>
+ <id>197</id>
+ <code>ES</code>
+ </country>
+ <country>
+ <name>SriLanka</name>
+ <id>198</id>
+ <code>LK</code>
+ </country>
+ <country>
+ <name>StHelena</name>
+ <id>199</id>
+ <code>SH</code>
+ </country>
+ <country>
+ <name>StPierreAndMiquelon</name>
+ <id>200</id>
+ <code>PM</code>
+ </country>
+ <country>
+ <name>Sudan</name>
+ <id>201</id>
+ <code>SD</code>
+ </country>
+ <country>
+ <name>Suriname</name>
+ <id>202</id>
+ <code>SR</code>
+ </country>
+ <country>
+ <name>SvalbardAndJanMayenIslands</name>
+ <id>203</id>
+ <code>SJ</code>
+ </country>
+ <country>
+ <name>Swaziland</name>
+ <id>204</id>
+ <code>SZ</code>
+ </country>
+ <country>
+ <name>Sweden</name>
+ <id>205</id>
+ <code>SE</code>
+ </country>
+ <country>
+ <name>Switzerland</name>
+ <id>206</id>
+ <code>CH</code>
+ </country>
+ <country>
+ <name>SyrianArabRepublic</name>
+ <id>207</id>
+ <code>SY</code>
+ </country>
+ <country>
+ <name>Taiwan</name>
+ <id>208</id>
+ <code>TW</code>
+ </country>
+ <country>
+ <name>Tajikistan</name>
+ <id>209</id>
+ <code>TJ</code>
+ </country>
+ <country>
+ <name>Tanzania</name>
+ <id>210</id>
+ <code>TZ</code>
+ </country>
+ <country>
+ <name>Thailand</name>
+ <id>211</id>
+ <code>TH</code>
+ </country>
+ <country>
+ <name>Togo</name>
+ <id>212</id>
+ <code>TG</code>
+ </country>
+ <country>
+ <name>Tokelau</name>
+ <id>213</id>
+ <code>TK</code>
+ </country>
+ <country>
+ <name>Tonga</name>
+ <id>214</id>
+ <code>TO</code>
+ </country>
+ <country>
+ <name>TrinidadAndTobago</name>
+ <id>215</id>
+ <code>TT</code>
+ </country>
+ <country>
+ <name>Tunisia</name>
+ <id>216</id>
+ <code>TN</code>
+ </country>
+ <country>
+ <name>Turkey</name>
+ <id>217</id>
+ <code>TR</code>
+ </country>
+ <country>
+ <name>Turkmenistan</name>
+ <id>218</id>
+ <code>TM</code>
+ </country>
+ <country>
+ <name>TurksAndCaicosIslands</name>
+ <id>219</id>
+ <code>TC</code>
+ </country>
+ <country>
+ <name>Tuvalu</name>
+ <id>220</id>
+ <code>TV</code>
+ </country>
+ <country>
+ <name>Uganda</name>
+ <id>221</id>
+ <code>UG</code>
+ </country>
+ <country>
+ <name>Ukraine</name>
+ <id>222</id>
+ <code>UA</code>
+ </country>
+ <country>
+ <name>UnitedArabEmirates</name>
+ <id>223</id>
+ <code>AE</code>
+ </country>
+ <country>
+ <name>UnitedKingdom</name>
+ <id>224</id>
+ <code>GB</code>
+ </country>
+ <country>
+ <name>UnitedStates</name>
+ <id>225</id>
+ <code>US</code>
+ </country>
+ <country>
+ <name>UnitedStatesMinorOutlyingIslands</name>
+ <id>226</id>
+ <code>UM</code>
+ </country>
+ <country>
+ <name>Uruguay</name>
+ <id>227</id>
+ <code>UY</code>
+ </country>
+ <country>
+ <name>Uzbekistan</name>
+ <id>228</id>
+ <code>UZ</code>
+ </country>
+ <country>
+ <name>Vanuatu</name>
+ <id>229</id>
+ <code>VU</code>
+ </country>
+ <country>
+ <name>VaticanCityState</name>
+ <id>230</id>
+ <code>VA</code>
+ </country>
+ <country>
+ <name>Venezuela</name>
+ <id>231</id>
+ <code>VE</code>
+ </country>
+ <country>
+ <name>VietNam</name>
+ <id>232</id>
+ <code>VN</code>
+ </country>
+ <country>
+ <name>BritishVirginIslands</name>
+ <id>233</id>
+ <code>VG</code>
+ </country>
+ <country>
+ <name>USVirginIslands</name>
+ <id>234</id>
+ <code>VI</code>
+ </country>
+ <country>
+ <name>WallisAndFutunaIslands</name>
+ <id>235</id>
+ <code>WF</code>
+ </country>
+ <country>
+ <name>WesternSahara</name>
+ <id>236</id>
+ <code>EH</code>
+ </country>
+ <country>
+ <name>Yemen</name>
+ <id>237</id>
+ <code>YE</code>
+ </country>
+ <country>
+ <name>Yugoslavia</name>
+ <id>238</id>
+ <code>YU</code>
+ </country>
+ <country>
+ <name>Zambia</name>
+ <id>239</id>
+ <code>ZM</code>
+ </country>
+ <country>
+ <name>Zimbabwe</name>
+ <id>240</id>
+ <code>ZW</code>
+ </country>
+ <country>
+ <name>SerbiaAndMontenegro</name>
+ <id>241</id>
+ <code>CS</code>
+ </country>
+ </countryList>
+ <defaultCountryList>
+ <defaultCountry>
+ <language>Afrikaans</language>
+ <country>SouthAfrica</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Afan</language>
+ <country>Ethiopia</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Afar</language>
+ <country>Djibouti</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Arabic</language>
+ <country>SaudiArabia</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Chinese</language>
+ <country>China</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Dutch</language>
+ <country>Netherlands</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>English</language>
+ <country>UnitedStates</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>French</language>
+ <country>France</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>German</language>
+ <country>Germany</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Greek</language>
+ <country>Greece</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Italian</language>
+ <country>Italy</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Malay</language>
+ <country>Malaysia</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Portuguese</language>
+ <country>Portugal</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Russian</language>
+ <country>RussianFederation</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Serbian</language>
+ <country>SerbiaAndMontenegro</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>SerboCroatian</language>
+ <country>SerbiaAndMontenegro</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Somali</language>
+ <country>Somalia</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Spanish</language>
+ <country>Spain</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Swahili</language>
+ <country>Kenya</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Swedish</language>
+ <country>Sweden</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Tigrinya</language>
+ <country>Eritrea</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Uzbek</language>
+ <country>Uzbekistan</country>
+ </defaultCountry>
+ <defaultCountry>
+ <language>Persian</language>
+ <country>Iran</country>
+ </defaultCountry>
+ </defaultCountryList>
+ <localeList>
+ <locale>
+ <language>C</language>
+ <country>AnyCountry</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d MMM yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss z</longTimeFormat>
+ <shortTimeFormat>HH:mm:ss</shortTimeFormat>
+ <standaloneLongMonths>January;February;March;April;May;June;July;August;September;October;November;December;</standaloneLongMonths>
+ <standaloneShortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>7;1;2;3;4;5;6;</narrowDays>
+ <standaloneLongDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</standaloneLongDays>
+ <standaloneShortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Afan</language>
+ <country>Ethiopia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Amajjii;Guraandhala;Bitooteessa;Elba;Caamsa;Waxabajjii;Adooleessa;Hagayya;Fuulbana;Onkololeessa;Sadaasa;Muddee;</longMonths>
+ <shortMonths>Ama;Gur;Bit;Elb;Cam;Wax;Ado;Hag;Ful;Onk;Sad;Mud;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Dilbata;Wiixata;Qibxata;Roobii;Kamiisa;Jimaata;Sanbata;</longDays>
+ <shortDays>Dil;Wix;Qib;Rob;Kam;Jim;San;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Afan</language>
+ <country>Kenya</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Amajjii;Guraandhala;Bitooteessa;Elba;Caamsa;Waxabajjii;Adooleessa;Hagayya;Fuulbana;Onkololeessa;Sadaasa;Muddee;</longMonths>
+ <shortMonths>Ama;Gur;Bit;Elb;Cam;Wax;Ado;Hag;Ful;Onk;Sad;Mud;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Dilbata;Wiixata;Qibxata;Roobii;Kamiisa;Jimaata;Sanbata;</longDays>
+ <shortDays>Dil;Wix;Qib;Rob;Kam;Jim;San;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Afar</language>
+ <country>Djibouti</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Q;N;C;A;C;Q;Q;L;W;D;X;K;</standaloneNarrowMonths>
+ <longMonths>Qunxa Garablu;Naharsi Kudo;Ciggilta Kudo;Agda Baxisso;Caxah Alsa;Qasa Dirri;Qado Dirri;Leqeeni;Waysu;Diteli;Ximoli;Kaxxa Garablu;</longMonths>
+ <shortMonths>Qun;Nah;Cig;Agd;Cax;Qas;Qad;Leq;Way;Dit;Xim;Kax;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Acaada;Etleeni;Talaata;Arbaqa;Kamiisi;Gumqata;Sabti;</longDays>
+ <shortDays>Aca;Etl;Tal;Arb;Kam;Gum;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>A;E;T;A;K;G;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Afar</language>
+ <country>Eritrea</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Q;N;C;A;C;Q;Q;L;W;D;X;K;</standaloneNarrowMonths>
+ <longMonths>Qunxa Garablu;Kudo;Ciggilta Kudo;Agda Baxis;Caxah Alsa;Qasa Dirri;Qado Dirri;Liiqen;Waysu;Diteli;Ximoli;Kaxxa Garablu;</longMonths>
+ <shortMonths>Qun;Nah;Cig;Agd;Cax;Qas;Qad;Leq;Way;Dit;Xim;Kax;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Acaada;Etleeni;Talaata;Arbaqa;Kamiisi;Gumqata;Sabti;</longDays>
+ <shortDays>Aca;Etl;Tal;Arb;Kam;Gum;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>A;E;T;A;K;G;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Afar</language>
+ <country>Ethiopia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Q;N;C;A;C;Q;Q;L;W;D;X;K;</standaloneNarrowMonths>
+ <longMonths>Qunxa Garablu;Kudo;Ciggilta Kudo;Agda Baxis;Caxah Alsa;Qasa Dirri;Qado Dirri;Liiqen;Waysu;Diteli;Ximoli;Kaxxa Garablu;</longMonths>
+ <shortMonths>Qun;Nah;Cig;Agd;Cax;Qas;Qad;Leq;Way;Dit;Xim;Kax;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Acaada;Etleeni;Talaata;Arbaqa;Kamiisi;Gumqata;Sabti;</longDays>
+ <shortDays>Aca;Etl;Tal;Arb;Kam;Gum;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>A;E;T;A;K;G;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Afrikaans</language>
+ <country>Namibia</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vm.</am>
+ <pm>nm.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januarie;Februarie;Maart;April;Mei;Junie;Julie;Augustus;September;Oktober;November;Desember;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;Mei;Jun;Jul;Aug;Sep;Okt;Nov;Des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sondag;Maandag;Dinsdag;Woensdag;Donderdag;Vrydag;Saterdag;</longDays>
+ <shortDays>So;Ma;Di;Wo;Do;Vr;Sa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Afrikaans</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vm.</am>
+ <pm>nm.</pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>yyyy/MM/dd</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januarie;Februarie;Maart;April;Mei;Junie;Julie;Augustus;September;Oktober;November;Desember;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;Mei;Jun;Jul;Aug;Sep;Okt;Nov;Des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sondag;Maandag;Dinsdag;Woensdag;Donderdag;Vrydag;Saterdag;</longDays>
+ <shortDays>So;Ma;Di;Wo;Do;Vr;Sa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Albanian</language>
+ <country>Albania</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>PD</am>
+ <pm>MD</pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>yy-MM-dd</shortDateFormat>
+ <longTimeFormat>h.mm.ss.a v</longTimeFormat>
+ <shortTimeFormat>h.mm.a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;S;M;P;M;Q;K;G;S;T;N;D;</standaloneNarrowMonths>
+ <longMonths>janar;shkurt;mars;prill;maj;qershor;korrik;gusht;shtator;tetor;nëntor;dhjetor;</longMonths>
+ <shortMonths>Jan;Shk;Mar;Pri;Maj;Qer;Kor;Gsh;Sht;Tet;Nën;Dhj;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>e diel;e hënë;e martë;e mërkurë;e enjte;e premte;e shtunë;</longDays>
+ <shortDays>Die;Hën;Mar;Mër;Enj;Pre;Sht;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;H;M;M;E;P;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Amharic</language>
+ <country>Ethiopia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE፣ dd MMMM ቀን yyyy G</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ጃ;ፌ;ማ;ኤ;ሜ;ጁ;ጁ;ኦ;ሴ;ኦ;ኖ;ዲ;</standaloneNarrowMonths>
+ <longMonths>ጃንዩወሪ;ፌብሩወሪ;ማርች;ኤፕረል;ሜይ;ጁን;ጁላይ;ኦገስት;ሴፕቴምበር;ኦክተውበር;ኖቬምበር;ዲሴምበር;</longMonths>
+ <shortMonths>ጃንዩ;ፌብሩ;ማርች;ኤፕረ;ሜይ;ጁን;ጁላይ;ኦገስ;ሴፕቴ;ኦክተ;ኖቬም;ዲሴም;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>እሑድ;ሰኞ;ማክሰኞ;ረቡዕ;ሐሙስ;ዓርብ;ቅዳሜ;</longDays>
+ <shortDays>እሑድ;ሰኞ;ማክሰ;ረቡዕ;ሐሙስ;ዓርብ;ቅዳሜ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>እ;ሰ;ማ;ረ;ሐ;ዓ;ቅ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Algeria</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Bahrain</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Egypt</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Iraq</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Jordan</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>كانون الثاني;شباط;آذار;نيسان;أيار;حزيران;تموز;آب;أيلول;تشرين الأول;تشرين الثاني;كانون الأول;</longMonths>
+ <shortMonths>كانون الثاني;شباط;آذار;نيسان;أيار;حزيران;تموز;آب;أيلول;تشرين الأول;تشرين الثاني;كانون الأول;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Kuwait</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Lebanon</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>كانون الثاني;شباط;آذار;نيسان;نوار;حزيران;تموز;آب;أيلول;تشرين الأول;تشرين الثاني;كانون الأول;</longMonths>
+ <shortMonths>كانون الثاني;شباط;آذار;نيسان;نوار;حزيران;تموز;آب;أيلول;تشرين الأول;تشرين الثاني;كانون الأول;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>LibyanArabJamahiriya</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Morocco</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Oman</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Qatar</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>SaudiArabia</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Sudan</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>SyrianArabRepublic</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>كانون الثاني;شباط;آذار;نيسان;نوار;حزيران;تموز;آب;أيلول;تشرين الأول;تشرين الثاني;كانون الأول;</longMonths>
+ <shortMonths>كانون الثاني;شباط;آذار;نيسان;نوار;حزيران;تموز;آب;أيلول;تشرين الأول;تشرين الثاني;كانون الأول;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Tunisia</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>UnitedArabEmirates</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>ح;ن;ث;ر;خ;ج;س;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Arabic</language>
+ <country>Yemen</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ص</am>
+ <pm>م</pm>
+ <longDateFormat>EEEE، d MMMM، yyyy</longDateFormat>
+ <shortDateFormat>d‏/M‏/yyyy</shortDateFormat>
+ <longTimeFormat>v h:mm:ss a</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ي;ف;م;أ;و;ن;ل;غ;س;ك;ب;د;</standaloneNarrowMonths>
+ <longMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</longMonths>
+ <shortMonths>يناير;فبراير;مارس;أبريل;مايو;يونيو;يوليو;أغسطس;سبتمبر;أكتوبر;نوفمبر;ديسمبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</longDays>
+ <shortDays>الأحد;الاثنين;الثلاثاء;الأربعاء;الخميس;الجمعة;السبت;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>أحد;اثنين;ثلاثاء;أربعاء;خميس;جمعة;سبت;</standaloneShortDays>
+ <standaloneNarrowDays>ح;ن;ث;ر;خ;ج;س;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Armenian</language>
+ <country>Armenia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>Առ․</am>
+ <pm>Եր․</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>MM/dd/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Յունուար;Փետրուար;Մարտ;Ապրիլ;Մայիս;Յունիս;Յուլիս;Օգոստոս;Սեպտեմբեր;Հոկտեմբեր;Նոյեմբեր;Դեկտեմբեր;</longMonths>
+ <shortMonths>Յնր;Փտր;Մրտ;Ապր;Մյս;Յնս;Յլս;Օգս;Սեպ;Հոկ;Նոյ;Դեկ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Կիրակի;Երկուշաբթի;Երեքշաբթի;Չորեքշաբթի;Հինգշաբթի;Ուրբաթ;Շաբաթ;</longDays>
+ <shortDays>Կիր;Երկ;Երք;Չոր;Հնգ;Ուր;Շաբ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Assamese</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>পূৰ্বা</am>
+ <pm>অপ</pm>
+ <longDateFormat>EEEE, d MMMM, yyyy</longDateFormat>
+ <shortDateFormat>d-M-yyyy</shortDateFormat>
+ <longTimeFormat>h.mm.ss a v</longTimeFormat>
+ <shortTimeFormat>h.mm. a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>জানুয়াৰী;ফেব্ৰুয়াৰী;মাৰ্চ;এপ্ৰিল;মে;জুন;জুলাই;আগষ্ট;সেপ্টেম্বৰ;অক্টোবৰ;নভেম্বৰ;ডিসেম্বৰ;</longMonths>
+ <shortMonths>জানু;ফেব্ৰু;মাৰ্চ;এপ্ৰিল;মে;জুন;জুলাই;আগ;সেপ্ট;অক্টো;নভে;ডিসে;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>দেওবাৰ;সোমবাৰ;মঙ্গলবাৰ;বুধবাৰ;বৃহষ্পতিবাৰ;শুক্ৰবাৰ;শনিবাৰ;</longDays>
+ <shortDays>ৰবি;সোম;মঙ্গল;বুধ;বৃহষ্পতি;শুক্ৰ;শনি;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Azerbaijani</language>
+ <country>Azerbaijan</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Yanvar;Fevral;Mart;Aprel;May;İyun;İyul;Avqust;Sentyabr;Oktyabr;Noyabr;Dekabr;</longMonths>
+ <shortMonths>yan;fev;mar;apr;may;iyn;iyl;avq;sen;okt;noy;dek;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>bazar;bazar ertəsi;çərşənbə axşamı;çərşənbə;cümə axşamı;cümə;şənbə;</longDays>
+ <shortDays>B.;B.E.;Ç.A.;Ç.;C.A.;C;Ş.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>7;1;2;3;4;5;6;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Basque</language>
+ <country>Spain</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy'eko' MMMM'ren' dd'a'</longDateFormat>
+ <shortDateFormat>yy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>urtarrila;otsaila;martxoa;apirila;maiatza;ekaina;uztaila;abuztua;iraila;urria;azaroa;abendua;</longMonths>
+ <shortMonths>urt;ots;mar;api;mai;eka;uzt;abu;ira;urr;aza;abe;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>igandea;astelehena;asteartea;asteazkena;osteguna;ostirala;larunbata;</longDays>
+ <shortDays>ig;al;as;az;og;or;lr;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Bengali</language>
+ <country>Bangladesh</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2534</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>পূর্বাহ্ণ</am>
+ <pm>অপরাহ্ণ</pm>
+ <longDateFormat>EEEE, d MMMM, yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>জা;ফে;মা;এ;মে;জুন;জু;আ;সে;অ;ন;ডি;</standaloneNarrowMonths>
+ <longMonths>জানুয়ারী;ফেব্রুয়ারী;মার্চ;এপ্রিল;মে;জুন;জুলাই;আগস্ট;সেপ্টেম্বর;অক্টোবর;নভেম্বর;ডিসেম্বর;</longMonths>
+ <shortMonths>জানুয়ারী;ফেব্রুয়ারী;মার্চ;এপ্রিল;মে;জুন;জুলাই;আগস্ট;সেপ্টেম্বর;অক্টোবর;নভেম্বর;ডিসেম্বর;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>রবিবার;সোমবার;মঙ্গলবার;বুধবার;বৃহষ্পতিবার;শুক্রবার;শনিবার;</longDays>
+ <shortDays>রবি;সোম;মঙ্গল;বুধ;বৃহস্পতি;শুক্র;শনি;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>র;সো;ম;বু;বৃ;শু;শ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Bengali</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2534</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>পূর্বাহ্ণ</am>
+ <pm>অপরাহ্ণ</pm>
+ <longDateFormat>EEEE, d MMMM, yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>জা;ফে;মা;এ;মে;জুন;জু;আ;সে;অ;ন;ডি;</standaloneNarrowMonths>
+ <longMonths>জানুয়ারী;ফেব্রুয়ারী;মার্চ;এপ্রিল;মে;জুন;জুলাই;আগস্ট;সেপ্টেম্বর;অক্টোবর;নভেম্বর;ডিসেম্বর;</longMonths>
+ <shortMonths>জানুয়ারী;ফেব্রুয়ারী;মার্চ;এপ্রিল;মে;জুন;জুলাই;আগস্ট;সেপ্টেম্বর;অক্টোবর;নভেম্বর;ডিসেম্বর;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>রবিবার;সোমবার;মঙ্গলবার;বুধবার;বৃহষ্পতিবার;শুক্রবার;শনিবার;</longDays>
+ <shortDays>রবি;সোম;মঙ্গল;বুধ;বৃহস্পতি;শুক্র;শনি;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>র;সো;ম;বু;বৃ;শু;শ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Bhutani</language>
+ <country>Bhutan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>3872</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>སྤྱི་ལོ་yyyy ཟླ་ MMMM ཚེས་ dd</longDateFormat>
+ <shortDateFormat>སྤྱི་ལོ་ yyyy ཟླ་ MM ཚེས་ dd</shortDateFormat>
+ <longTimeFormat>ཆུ་ཚོད་ h སྐར་མ་ mm སྐར་ཆཱ་ ss a vvvv</longTimeFormat>
+ <shortTimeFormat>ཆུ་ཚོད་ h སྐར་མ་ mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>སྤྱི་ཟླཝ་དངཔ་;སྤྱི་ཟླཝ་གཉིས་པ་;སྤྱི་ཟླཝ་གསུམ་པ་;སྤྱི་ཟླཝ་བཞི་པ་;སྤྱི་ཟླཝ་ལྔ་པ་;སྤྱི་ཟླཝ་དྲུག་པ་;སྤྱི་ཟླཝ་བདུན་པ་;སྤྱི་ཟླཝ་བརྒྱད་པ་;སྤྱི་ཟླཝ་དགུ་པ་;སྤྱི་ཟླཝ་བཅུ་པ་;སྤྱི་ཟླཝ་བཅུ་གཅིག་པ་;སྤྱི་ཟླཝ་བཅུ་གཉིས་པ་;</longMonths>
+ <shortMonths>ཟླ་ ༡;ཟླ་ ༢;ཟླ་ ༣;ཟླ་ ༤;ཟླ་ ༥;ཟླ་ ༦;ཟླ་ ༧;ཟླ་ ༨;ཟླ་ ༩;ཟླ་ ༡༠;ཟླ་ ༡༡;ཟླ་ ༡༢;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>གཟའ་ཟླ་བ་;གཟའ་མིག་དམར་;གཟའ་ལྷག་པ་;གཟའ་ཕུར་བུ་;གཟའ་པ་སངས་;གཟའ་སྤེན་པ་;གཟའ་ཉི་མ་;</longDays>
+ <shortDays>ཟླ་;མིར་;ལྷག་;ཕུར་;སངས་;སྤེན་;ཉི་;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Bulgarian</language>
+ <country>Bulgaria</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>пр. об.</am>
+ <pm>сл. об.</pm>
+ <longDateFormat>dd MMMM yyyy, EEEE</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>я;ф;м;а;м;ю;ю;а;с;о;н;д;</standaloneNarrowMonths>
+ <longMonths>януари;февруари;март;април;май;юни;юли;август;септември;октомври;ноември;декември;</longMonths>
+ <shortMonths>ян.;февр.;март;апр.;май;юни;юли;авг.;септ.;окт.;ноем.;дек.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>неделя;понеделник;вторник;сряда;четвъртък;петък;събота;</longDays>
+ <shortDays>нд;пн;вт;ср;чт;пт;сб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>н;п;в;с;ч;п;с;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Burmese</language>
+ <country>Myanmar</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>4170</list>
+ <percent>37</percent>
+ <zero>4160</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ဇ;ဖ;မ;ဧ;မ;ဇ;ဇ;ဩ;စ;အ;န;ဒ;</standaloneNarrowMonths>
+ <longMonths>ဇန်နဝါရီ;ဖေဖော်ဝါရီ;မတ်;ဧပြီ;မေ;ဇွန်;ဇူလိုင်;ဩဂုတ်;စက်တင်ဘာ;အောက်တိုဘာ;နိုဝင်ဘာ;ဒီဇင်ဘာ;</longMonths>
+ <shortMonths>ဇန်;ဖေ;မတ်;ဧ;မေ;ဇွန်;ဇူ;ဩ;စက်;အောက်;နို;ဒီ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>တနင်္ဂနွေ;တနင်္လာ;အင်္ဂါ;ဗုဒ္ဓဟူး;ကြာသပတေး;သောကြာ;စနေ;</longDays>
+ <shortDays>နွေ;လာ;ဂါ;ဟူး;တေး;ကြာ;နေ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>တ;တ;အ;ဗ;က;သ;စ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Byelorussian</language>
+ <country>Belarus</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>да палудня</am>
+ <pm>пасля палудня</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d.M.yy</shortDateFormat>
+ <longTimeFormat>HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;травень;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;тра;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>с;л;с;к;м;ч;л;ж;в;к;л;с;</standaloneNarrowMonths>
+ <longMonths>студзень;люты;сакавік;красавік;май;чэрвень;ліпень;жнівень;верасень;кастрычнік;лістапад;снежань;</longMonths>
+ <shortMonths>сту;лют;сак;кра;май;чэр;ліп;жні;вер;кас;ліс;сне;</shortMonths>
+ <narrowMonths>;;;;т;;;;;;;;</narrowMonths>
+ <longDays>нядзеля;панядзелак;аўторак;серада;чацвер;пятніца;субота;</longDays>
+ <shortDays>нд;пн;аў;ср;чц;пт;сб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>н;п;а;с;ч;п;с;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Cambodian</language>
+ <country>Cambodia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ព្រឹក</am>
+ <pm>ល្ងាច</pm>
+ <longDateFormat>EEEE ថ្ងៃ d ខែ MMMM ឆ្នាំ yyyy</longDateFormat>
+ <shortDateFormat>d/M/yyyy</shortDateFormat>
+ <longTimeFormat>H ម៉ោង m នាទី ss វិនាទី​ v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>មករា;កុម្ភៈ;មិនា;មេសា;ឧសភា;មិថុនា;កក្កដា;សីហា;កញ្ញា;តុលា;វិច្ឆិកា;ធ្នូ;</longMonths>
+ <shortMonths>១;២;៣;៤;៥;៦;៧;៨;៩;១០;១១;១២;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ថ្ងៃអាទិត្យ;​ថ្ងៃច័ន្ទ;ថ្ងៃអង្គារ;ថ្ងៃពុធ;ថ្ងៃព្រហស្បតិ៍;ថ្ងៃសុក្រ;ថ្ងៃសៅរ៍;</longDays>
+ <shortDays>អា;ច;អ;ពុ;ព្រ;សុ;ស;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Catalan</language>
+ <country>Spain</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>H:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>g;f;m;a;m;j;j;a;s;o;n;d;</standaloneNarrowMonths>
+ <longMonths>gener;febrer;març;abril;maig;juny;juliol;agost;setembre;octubre;novembre;desembre;</longMonths>
+ <shortMonths>gen.;febr.;març;abr.;maig;juny;jul.;ag.;set.;oct.;nov.;des.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>diumenge;dilluns;dimarts;dimecres;dijous;divendres;dissabte;</longDays>
+ <shortDays>dg.;dl.;dt.;dc.;dj.;dv.;ds.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>dg;dl;dt;dc;dj;dv;ds;</standaloneShortDays>
+ <standaloneNarrowDays>g;l;t;c;j;v;s;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Chinese</language>
+ <country>China</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>上午</am>
+ <pm>下午</pm>
+ <longDateFormat>yyyy年M月d日EEEE</longDateFormat>
+ <shortDateFormat>yy-M-d</shortDateFormat>
+ <longTimeFormat>ahh时mm分ss秒v</longTimeFormat>
+ <shortTimeFormat>ah:mm</shortTimeFormat>
+ <standaloneLongMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneLongMonths>
+ <standaloneShortMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneShortMonths>
+ <standaloneNarrowMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</standaloneNarrowMonths>
+ <longMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</longMonths>
+ <shortMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>星期日;星期一;星期二;星期三;星期四;星期五;星期六;</longDays>
+ <shortDays>周日;周一;周二;周三;周四;周五;周六;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>日;一;二;三;四;五;六;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Chinese</language>
+ <country>HongKong</country>
+ <decimal>46</decimal>
+ <group>65292</group>
+ <list>65307</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>上午</am>
+ <pm>下午</pm>
+ <longDateFormat>yyyy年M月d日EEEE</longDateFormat>
+ <shortDateFormat>yy年M月d日</shortDateFormat>
+ <longTimeFormat>ahh时mm分ss秒v</longTimeFormat>
+ <shortTimeFormat>ah:mm</shortTimeFormat>
+ <standaloneLongMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneLongMonths>
+ <standaloneShortMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneShortMonths>
+ <standaloneNarrowMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</standaloneNarrowMonths>
+ <longMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</longMonths>
+ <shortMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>星期日;星期一;星期二;星期三;星期四;星期五;星期六;</longDays>
+ <shortDays>周日;周一;周二;周三;周四;周五;周六;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>日;一;二;三;四;五;六;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Chinese</language>
+ <country>Macau</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>上午</am>
+ <pm>下午</pm>
+ <longDateFormat>yyyy年MM月dd日EEEE</longDateFormat>
+ <shortDateFormat>yy年M月d日</shortDateFormat>
+ <longTimeFormat>ahh时mm分ss秒v</longTimeFormat>
+ <shortTimeFormat>ah:mm</shortTimeFormat>
+ <standaloneLongMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneLongMonths>
+ <standaloneShortMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneShortMonths>
+ <standaloneNarrowMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</standaloneNarrowMonths>
+ <longMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</longMonths>
+ <shortMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>星期日;星期一;星期二;星期三;星期四;星期五;星期六;</longDays>
+ <shortDays>周日;周一;周二;周三;周四;周五;周六;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>日;一;二;三;四;五;六;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Chinese</language>
+ <country>Singapore</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>上午</am>
+ <pm>下午</pm>
+ <longDateFormat>yyyy年M月d日EEEE</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>ahh时mm分ss秒v</longTimeFormat>
+ <shortTimeFormat>ahh:mm</shortTimeFormat>
+ <standaloneLongMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneLongMonths>
+ <standaloneShortMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneShortMonths>
+ <standaloneNarrowMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</standaloneNarrowMonths>
+ <longMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</longMonths>
+ <shortMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>星期日;星期一;星期二;星期三;星期四;星期五;星期六;</longDays>
+ <shortDays>周日;周一;周二;周三;周四;周五;周六;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>日;一;二;三;四;五;六;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Chinese</language>
+ <country>Taiwan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>上午</am>
+ <pm>下午</pm>
+ <longDateFormat>yyyy年M月d日EEEE</longDateFormat>
+ <shortDateFormat>yy-M-d</shortDateFormat>
+ <longTimeFormat>ahh时mm分ss秒v</longTimeFormat>
+ <shortTimeFormat>ah:mm</shortTimeFormat>
+ <standaloneLongMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneLongMonths>
+ <standaloneShortMonths>一月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月;</standaloneShortMonths>
+ <standaloneNarrowMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</standaloneNarrowMonths>
+ <longMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</longMonths>
+ <shortMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>星期日;星期一;星期二;星期三;星期四;星期五;星期六;</longDays>
+ <shortDays>周日;周一;周二;周三;周四;周五;周六;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>日;一;二;三;四;五;六;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Croatian</language>
+ <country>Croatia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d. MMMM yyyy.</longDateFormat>
+ <shortDateFormat>dd.MM.yyyy.</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>siječanj;veljača;ožujak;travanj;svibanj;lipanj;srpanj;kolovoz;rujan;listopad;studeni;prosinac;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>s;v;o;t;s;l;s;k;r;l;s;p;</standaloneNarrowMonths>
+ <longMonths>siječnja;veljače;ožujka;travnja;svibnja;lipnja;srpnja;kolovoza;rujna;listopada;studenoga;prosinca;</longMonths>
+ <shortMonths>sij;vel;ožu;tra;svi;lip;srp;kol;ruj;lis;stu;pro;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>nedjelja;ponedjeljak;utorak;srijeda;četvrtak;petak;subota;</longDays>
+ <shortDays>ned;pon;uto;sri;čet;pet;sub;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>n;p;u;s;č;p;s;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Czech</language>
+ <country>CzechRepublic</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>dop.</am>
+ <pm>odp.</pm>
+ <longDateFormat>EEEE, d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>d.M.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>leden;únor;březen;duben;květen;červen;červenec;srpen;září;říjen;listopad;prosinec;</standaloneLongMonths>
+ <standaloneShortMonths>1.;2.;3.;4.;5.;6.;7.;8.;9.;10.;11.;12.;</standaloneShortMonths>
+ <standaloneNarrowMonths>l;ú;b;d;k;č;č;s;z;ř;l;p;</standaloneNarrowMonths>
+ <longMonths>ledna;února;března;dubna;května;června;července;srpna;září;října;listopadu;prosince;</longMonths>
+ <shortMonths>1;2;3;4;5;6;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>neděle;pondělí;úterý;středa;čtvrtek;pátek;sobota;</longDays>
+ <shortDays>ne;po;út;st;čt;pá;so;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>N;P;Ú;S;Č;P;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Danish</language>
+ <country>Denmark</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>44</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>f.m.</am>
+ <pm>e.m.</pm>
+ <longDateFormat>EEEE 'den' d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>januar;februar;marts;april;maj;juni;juli;august;september;oktober;november;december;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;aug;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>søndag;mandag;tirsdag;onsdag;torsdag;fredag;lørdag;</longDays>
+ <shortDays>søn;man;tir;ons;tor;fre;lør;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;O;T;F;L;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Dutch</language>
+ <country>Belgium</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>januari;februari;maart;april;mei;juni;juli;augustus;september;oktober;november;december;</longMonths>
+ <shortMonths>jan;feb;mrt;apr;mei;jun;jul;aug;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>zondag;maandag;dinsdag;woensdag;donderdag;vrijdag;zaterdag;</longDays>
+ <shortDays>zo;ma;di;wo;do;vr;za;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Z;M;D;W;D;V;Z;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Dutch</language>
+ <country>Netherlands</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd-MM-yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>januari;februari;maart;april;mei;juni;juli;augustus;september;oktober;november;december;</longMonths>
+ <shortMonths>jan;feb;mrt;apr;mei;jun;jul;aug;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>zondag;maandag;dinsdag;woensdag;donderdag;vrijdag;zaterdag;</longDays>
+ <shortDays>zo;ma;di;wo;do;vr;za;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Z;M;D;W;D;V;Z;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>AmericanSamoa</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Australia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Belgium</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH 'h' mm 'min' ss 's' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Belize</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Botswana</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Canada</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>yy-MM-dd</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Guam</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>HongKong</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Ireland</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Jamaica</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Malta</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>MarshallIslands</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Namibia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>NewZealand</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>NorthernMarianaIslands</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Pakistan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Philippines</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Singapore</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>a hh:mm:ss v</longTimeFormat>
+ <shortTimeFormat>a hh:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>yyyy/MM/dd</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>TrinidadAndTobago</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>UnitedKingdom</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>UnitedStates</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>UnitedStatesMinorOutlyingIslands</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>USVirginIslands</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, MMMM d, yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>English</language>
+ <country>Zimbabwe</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/M/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday;</longDays>
+ <shortDays>Sun;Mon;Tue;Wed;Thu;Fri;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;W;T;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Estonian</language>
+ <country>Estonia</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, d, MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>H:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>jaanuar;veebruar;märts;aprill;mai;juuni;juuli;august;september;oktoober;november;detsember;</longMonths>
+ <shortMonths>jaan;veebr;märts;apr;mai;juuni;juuli;aug;sept;okt;nov;dets;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>pühapäev;esmaspäev;teisipäev;kolmapäev;neljapäev;reede;laupäev;</longDays>
+ <shortDays>P;E;T;K;N;R;L;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Faroese</language>
+ <country>FaroeIslands</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd-MM-yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>januar;februar;mars;apríl;mai;juni;juli;august;september;oktober;november;desember;</longMonths>
+ <shortMonths>jan;feb;mar;apr;mai;jun;jul;aug;sep;okt;nov;des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>sunnudagur;mánadagur;týsdagur;mikudagur;hósdagur;fríggjadagur;leygardagur;</longDays>
+ <shortDays>sun;mán;týs;mik;hós;frí;ley;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Finnish</language>
+ <country>Finland</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ap.</am>
+ <pm>ip.</pm>
+ <longDateFormat>EEEE d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>d.M.yyyy</shortDateFormat>
+ <longTimeFormat>H.mm.ss v</longTimeFormat>
+ <shortTimeFormat>H.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>T;H;M;H;T;K;H;E;S;L;M;J;</standaloneNarrowMonths>
+ <longMonths>tammikuuta;helmikuuta;maaliskuuta;huhtikuuta;toukokuuta;kesäkuuta;heinäkuuta;elokuuta;syyskuuta;lokakuuta;marraskuuta;joulukuuta;</longMonths>
+ <shortMonths>tammi;helmi;maalis;huhti;touko;kesä;heinä;elo;syys;loka;marras;joulu;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>sunnuntaina;maanantaina;tiistaina;keskiviikkona;torstaina;perjantaina;lauantaina;</longDays>
+ <shortDays>su;ma;ti;ke;to;pe;la;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;K;T;P;L;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>French</language>
+ <country>Belgium</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>H 'h' mm 'min' ss 's' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre;</longMonths>
+ <shortMonths>janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>dimanche;lundi;mardi;mercredi;jeudi;vendredi;samedi;</longDays>
+ <shortDays>dim.;lun.;mar.;mer.;jeu.;ven.;sam.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>French</language>
+ <country>Canada</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>yy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH 'h' mm 'min' ss 's' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre;</longMonths>
+ <shortMonths>janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>dimanche;lundi;mardi;mercredi;jeudi;vendredi;samedi;</longDays>
+ <shortDays>dim.;lun.;mar.;mer.;jeu.;ven.;sam.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>French</language>
+ <country>France</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre;</longMonths>
+ <shortMonths>janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>dimanche;lundi;mardi;mercredi;jeudi;vendredi;samedi;</longDays>
+ <shortDays>dim.;lun.;mar.;mer.;jeu.;ven.;sam.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>French</language>
+ <country>Luxembourg</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre;</longMonths>
+ <shortMonths>janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>dimanche;lundi;mardi;mercredi;jeudi;vendredi;samedi;</longDays>
+ <shortDays>dim.;lun.;mar.;mer.;jeu.;ven.;sam.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>French</language>
+ <country>Monaco</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre;</longMonths>
+ <shortMonths>janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>dimanche;lundi;mardi;mercredi;jeudi;vendredi;samedi;</longDays>
+ <shortDays>dim.;lun.;mar.;mer.;jeu.;ven.;sam.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>French</language>
+ <country>Senegal</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre;</longMonths>
+ <shortMonths>janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>dimanche;lundi;mardi;mercredi;jeudi;vendredi;samedi;</longDays>
+ <shortDays>dim.;lun.;mar.;mer.;jeu.;ven.;sam.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>French</language>
+ <country>Switzerland</country>
+ <decimal>46</decimal>
+ <group>39</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH.mm:ss 'h' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre;</longMonths>
+ <shortMonths>janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>dimanche;lundi;mardi;mercredi;jeudi;vendredi;samedi;</longDays>
+ <shortDays>dim.;lun.;mar.;mer.;jeu.;ven.;sam.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Galician</language>
+ <country>Spain</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>X;F;M;A;M;X;X;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Xaneiro;Febreiro;Marzo;Abril;Maio;Xuño;Xullo;Agosto;Setembro;Outubro;Novembro;Decembro;</longMonths>
+ <shortMonths>Xan;Feb;Mar;Abr;Mai;Xuñ;Xul;Ago;Set;Out;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Domingo;Luns;Martes;Mércores;Xoves;Venres;Sábado;</longDays>
+ <shortDays>Dom;Lun;Mar;Mér;Xov;Ven;Sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;X;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Georgian</language>
+ <country>Georgia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ი;თ;მ;ა;მ;ი;ი;ა;ს;ო;ნ;დ;</standaloneNarrowMonths>
+ <longMonths>იანვარი;თებერვალი;მარტი;აპრილი;მაისი;ივნისი;ივლისი;აგვისტო;სექტემბერი;ოქტომბერი;ნოემბერი;დეკემბერი;</longMonths>
+ <shortMonths>იან;თებ;მარ;აპრ;მაი;ივნ;ივლ;აგვ;სექ;ოქტ;ნოე;დეკ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>კვირა;ორშაბათი;სამშაბათი;ოთხშაბათი;ხუთშაბათი;პარასკევი;შაბათი;</longDays>
+ <shortDays>კვი;ორშ;სამ;ოთხ;ხუთ;პარ;შაბ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>კ;ო;ს;ო;ხ;პ;შ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>German</language>
+ <country>Austria</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vorm.</am>
+ <pm>nachm.</pm>
+ <longDateFormat>EEEE, dd. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;Mär;;;;Jul;Aug;Sep;Okt;Nov;Dez;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Jänner;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember;</longMonths>
+ <shortMonths>Jän;Feb;Mär;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonntag;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag;</longDays>
+ <shortDays>So.;Mo.;Di.;Mi.;Do.;Fr.;Sa.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;D;M;D;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>German</language>
+ <country>Belgium</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vorm.</am>
+ <pm>nachm.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>HH 'h' mm 'min' ss 's' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;Mär;;;;Jul;Aug;Sep;Okt;Nov;Dez;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember;</longMonths>
+ <shortMonths>Jan;Feb;Mär;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonntag;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag;</longDays>
+ <shortDays>Son;Mon;Die;Mit;Don;Fre;Sam;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;D;M;D;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>German</language>
+ <country>Germany</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vorm.</am>
+ <pm>nachm.</pm>
+ <longDateFormat>EEEE, d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;Mär;;;;Jul;Aug;Sep;Okt;Nov;Dez;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember;</longMonths>
+ <shortMonths>Jan;Feb;Mrz;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonntag;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag;</longDays>
+ <shortDays>So.;Mo.;Di.;Mi.;Do.;Fr.;Sa.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;D;M;D;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>German</language>
+ <country>Liechtenstein</country>
+ <decimal>46</decimal>
+ <group>39</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vorm.</am>
+ <pm>nachm.</pm>
+ <longDateFormat>EEEE, d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;Mär;;;;Jul;Aug;Sep;Okt;Nov;Dez;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember;</longMonths>
+ <shortMonths>Jan;Feb;Mrz;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonntag;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag;</longDays>
+ <shortDays>So.;Mo.;Di.;Mi.;Do.;Fr.;Sa.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;D;M;D;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>German</language>
+ <country>Luxembourg</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vorm.</am>
+ <pm>nachm.</pm>
+ <longDateFormat>EEEE, d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;Mär;;;;Jul;Aug;Sep;Okt;Nov;Dez;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember;</longMonths>
+ <shortMonths>Jan;Feb;Mrz;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonntag;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag;</longDays>
+ <shortDays>So.;Mo.;Di.;Mi.;Do.;Fr.;Sa.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;D;M;D;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>German</language>
+ <country>Switzerland</country>
+ <decimal>46</decimal>
+ <group>39</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>vorm.</am>
+ <pm>nachm.</pm>
+ <longDateFormat>EEEE, d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;Mär;;;;Jul;Aug;Sep;Okt;Nov;Dez;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Januar;Februar;März;April;Mai;Juni;Juli;August;September;Oktober;November;Dezember;</longMonths>
+ <shortMonths>Jan;Feb;Mrz;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonntag;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag;</longDays>
+ <shortDays>So.;Mo.;Di.;Mi.;Do.;Fr.;Sa.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;D;M;D;F;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Greek</language>
+ <country>Cyprus</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>π.μ.</am>
+ <pm>μ.μ.</pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>Ιανουάριος;Φεβρουάριος;Μάρτιος;Απρίλιος;Μάιος;Ιούνιος;Ιούλιος;Αύγουστος;Σεπτέμβριος;Οκτώβριος;Νοέμβριος;Δεκέμβριος;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Ι;Φ;Μ;Α;Μ;Ι;Ι;Α;Σ;Ο;Ν;Δ;</standaloneNarrowMonths>
+ <longMonths>Ιανουαρίου;Φεβρουαρίου;Μαρτίου;Απριλίου;Μαΐου;Ιουνίου;Ιουλίου;Αυγούστου;Σεπτεμβρίου;Οκτωβρίου;Νοεμβρίου;Δεκεμβρίου;</longMonths>
+ <shortMonths>Ιαν;Φεβ;Μαρ;Απρ;Μαϊ;Ιουν;Ιουλ;Αυγ;Σεπ;Οκτ;Νοε;Δεκ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Κυριακή;Δευτέρα;Τρίτη;Τετάρτη;Πέμπτη;Παρασκευή;Σάββατο;</longDays>
+ <shortDays>Κυρ;Δευ;Τρι;Τετ;Πεμ;Παρ;Σαβ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Κ;Δ;Τ;Τ;Π;Π;Σ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Greek</language>
+ <country>Greece</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>π.μ.</am>
+ <pm>μ.μ.</pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>Ιανουάριος;Φεβρουάριος;Μάρτιος;Απρίλιος;Μάιος;Ιούνιος;Ιούλιος;Αύγουστος;Σεπτέμβριος;Οκτώβριος;Νοέμβριος;Δεκέμβριος;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Ι;Φ;Μ;Α;Μ;Ι;Ι;Α;Σ;Ο;Ν;Δ;</standaloneNarrowMonths>
+ <longMonths>Ιανουαρίου;Φεβρουαρίου;Μαρτίου;Απριλίου;Μαΐου;Ιουνίου;Ιουλίου;Αυγούστου;Σεπτεμβρίου;Οκτωβρίου;Νοεμβρίου;Δεκεμβρίου;</longMonths>
+ <shortMonths>Ιαν;Φεβ;Μαρ;Απρ;Μαϊ;Ιουν;Ιουλ;Αυγ;Σεπ;Οκτ;Νοε;Δεκ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Κυριακή;Δευτέρα;Τρίτη;Τετάρτη;Πέμπτη;Παρασκευή;Σάββατο;</longDays>
+ <shortDays>Κυρ;Δευ;Τρι;Τετ;Πεμ;Παρ;Σαβ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Κ;Δ;Τ;Τ;Π;Π;Σ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Greenlandic</language>
+ <country>Greenland</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>januari;februari;martsi;aprili;maji;juni;juli;augustusi;septemberi;oktoberi;novemberi;decemberi;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;aug;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>sabaat;ataasinngorneq;marlunngorneq;pingasunngorneq;sisamanngorneq;tallimanngorneq;arfininngorneq;</longDays>
+ <shortDays>sab;ata;mar;pin;sis;tal;arf;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Gujarati</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2790</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>પૂર્વ મધ્યાહ્ન</am>
+ <pm>ઉત્તર મધ્યાહ્ન</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-MM-yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>hh:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>જાન્યુઆરી;ફેબ્રુઆરી;માર્ચ;એપ્રિલ;મે;જૂન;જુલાઈ;ઑગસ્ટ;સપ્ટેમ્બર;ઑક્ટ્બર;નવેમ્બર;ડિસેમ્બર;</longMonths>
+ <shortMonths>જાન્યુ;ફેબ્રુ;માર્ચ;એપ્રિલ;મે;જૂન;જુલાઈ;ઑગસ્ટ;સપ્ટે;ઑક્ટો;નવે;ડિસે;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>રવિવાર;સોમવાર;મંગળવાર;બુધવાર;ગુરુવાર;શુક્રવાર;શનિવાર;</longDays>
+ <shortDays>રવિ;સોમ;મંગળ;બુધ;ગુરુ;શુક્ર;શનિ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hausa</language>
+ <country>Ghana</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM, yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;Y;Y;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Janairu;Fabrairu;Maris;Afrilu;Mayu;Yuni;Yuli;Augusta;Satumba;Oktoba;Nuwamba;Disamba;</longMonths>
+ <shortMonths>Jan;Fab;Mar;Afr;May;Yun;Yul;Aug;Sat;Okt;Nuw;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lahadi;Litini;Talata;Laraba;Alhamis;Jumma'a;Asabar;</longDays>
+ <shortDays>Lah;Lit;Tal;Lar;Alh;Jum;Asa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>L;L;T;L;A;J;A;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hausa</language>
+ <country>Niger</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM, yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;Y;Y;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Janairu;Fabrairu;Maris;Afrilu;Mayu;Yuni;Yuli;Augusta;Satumba;Oktoba;Nuwamba;Disamba;</longMonths>
+ <shortMonths>Jan;Fab;Mar;Afr;May;Yun;Yul;Aug;Sat;Okt;Nuw;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lahadi;Litini;Talata;Laraba;Alhamis;Jumma'a;Asabar;</longDays>
+ <shortDays>Lah;Lit;Tal;Lar;Alh;Jum;Asa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>L;L;T;L;A;J;A;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hausa</language>
+ <country>Nigeria</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM, yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;Y;Y;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Janairu;Fabrairu;Maris;Afrilu;Mayu;Yuni;Yuli;Augusta;Satumba;Oktoba;Nuwamba;Disamba;</longMonths>
+ <shortMonths>Jan;Fab;Mar;Afr;May;Yun;Yul;Aug;Sat;Okt;Nuw;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lahadi;Litini;Talata;Laraba;Alhamis;Jumma'a;Asabar;</longDays>
+ <shortDays>Lah;Lit;Tal;Lar;Alh;Jum;Asa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>L;L;T;L;A;J;A;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hausa</language>
+ <country>Sudan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM, yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;Y;Y;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Janairu;Fabrairu;Maris;Afrilu;Mayu;Yuni;Yuli;Augusta;Satumba;Oktoba;Nuwamba;Disamba;</longMonths>
+ <shortMonths>Jan;Fab;Mar;Afr;May;Yun;Yul;Aug;Sat;Okt;Nuw;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lahadi;Litini;Talata;Laraba;Alhamis;Jumma'a;Asabar;</longDays>
+ <shortDays>Lah;Lit;Tal;Lar;Alh;Jum;Asa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>L;L;T;L;A;J;A;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hebrew</language>
+ <country>Israel</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>לפנה"צ</am>
+ <pm>אחה"צ</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;מרס;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;מרס;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>ינואר;פברואר;מרץ;אפריל;מאי;יוני;יולי;אוגוסט;ספטמבר;אוקטובר;נובמבר;דצמבר;</longMonths>
+ <shortMonths>ינו;פבר;מרץ;אפר;מאי;יונ;יול;אוג;ספט;אוק;נוב;דצמ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>יום ראשון;יום שני;יום שלישי;יום רביעי;יום חמישי;יום שישי;שבת;</longDays>
+ <shortDays>א;ב;ג;ד;ה;ו;ש;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>א;ב;ג;ד;ה;ו;ש;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hindi</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2406</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>पूर्वाह्न</am>
+ <pm>अपराह्न</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-M-yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>जनवरी;फरवरी;मार्च;अप्रैल;मई;जून;जुलाई;अगस्त;सितम्बर;अक्तूबर;नवम्बर;दिसम्बर;</longMonths>
+ <shortMonths>जनवरी;फरवरी;मार्च;अप्रैल;मई;जून;जुलाई;अगस्त;सितम्बर;अक्तूबर;नवम्बर;दिसम्बर;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>रविवार;सोमवार;मंगलवार;बुधवार;गुरुवार;शुक्रवार;शनिवार;</longDays>
+ <shortDays>रवि;सोम;मंगल;बुध;गुरु;शुक्र;शनि;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>र;2;मं;4;गु;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hungarian</language>
+ <country>Hungary</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>de.</am>
+ <pm>du.</pm>
+ <longDateFormat>yyyy. MMMM d.</longDateFormat>
+ <shortDateFormat>yyyy.MM.dd.</shortDateFormat>
+ <longTimeFormat>H:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;Á;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>január;február;március;április;május;június;július;augusztus;szeptember;október;november;december;</longMonths>
+ <shortMonths>jan.;febr.;márc.;ápr.;máj.;jún.;júl.;aug.;szept.;okt.;nov.;dec.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>vasárnap;hétfő;kedd;szerda;csütörtök;péntek;szombat;</longDays>
+ <shortDays>V;H;K;Sze;Cs;P;Szo;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>V;H;K;S;C;P;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Icelandic</language>
+ <country>Iceland</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>d.M.yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>j;f;m;a;m;j;j;á;s;o;n;d;</standaloneNarrowMonths>
+ <longMonths>janúar;febrúar;mars;apríl;maí;júní;júlí;ágúst;september;október;nóvember;desember;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maí;jún;júl;ágú;sep;okt;nóv;des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>sunnudagur;mánudagur;þriðjudagur;miðvikudagur;fimmtudagur;föstudagur;laugardagur;</longDays>
+ <shortDays>sun;mán;þri;mið;fim;fös;lau;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>s;m;þ;m;f;f;l;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Indonesian</language>
+ <country>Indonesia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>H:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januari;Februari;Maret;April;Mei;Juni;Juli;Agustus;September;Oktober;November;Desember;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;Mei;Jun;Jul;Agu;Sep;Okt;Nov;Des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Minggu;Senin;Selasa;Rabu;Kamis;Jumat;Sabtu;</longDays>
+ <shortDays>Min;Sen;Sel;Rab;Kam;Jum;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Irish</language>
+ <country>Ireland</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;B;M;I;L;M;D;S;N;</standaloneNarrowMonths>
+ <longMonths>Eanáir;Feabhra;Márta;Aibreán;Bealtaine;Meitheamh;Iúil;Lúnasa;Meán Fómhair;Deireadh Fómhair;Samhain;Nollaig;</longMonths>
+ <shortMonths>Ean;Feabh;Márta;Aib;Beal;Meith;Iúil;Lún;MFómh;DFómh;Samh;Noll;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Dé Domhnaigh;Dé Luain;Dé Máirt;Dé Céadaoin;Déardaoin;Dé hAoine;Dé Sathairn;</longDays>
+ <shortDays>Domh;Luan;Máirt;Céad;Déar;Aoine;Sath;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;C;D;A;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Italian</language>
+ <country>Italy</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>m.</am>
+ <pm>p.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>Gennaio;Febbraio;Marzo;Aprile;Maggio;Giugno;Luglio;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>G;F;M;A;M;G;L;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>gennaio;febbraio;marzo;aprile;maggio;giugno;Luglio;agosto;settembre;ottobre;novembre;dicembre;</longMonths>
+ <shortMonths>gen;feb;mar;apr;mag;giu;lug;ago;set;ott;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domenica;lunedì;martedì;mercoledì;giovedì;venerdì;sabato;</longDays>
+ <shortDays>dom;lun;mar;mer;gio;ven;sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>Domenica;Lunedì;Martedì;Mercoledì;Giovedì;Venerdì;Sabato;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;G;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Italian</language>
+ <country>Switzerland</country>
+ <decimal>46</decimal>
+ <group>39</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>m.</am>
+ <pm>p.</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH.mm:ss 'h' v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>Gennaio;Febbraio;Marzo;Aprile;Maggio;Giugno;Luglio;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>G;F;M;A;M;G;L;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>gennaio;febbraio;marzo;aprile;maggio;giugno;Luglio;agosto;settembre;ottobre;novembre;dicembre;</longMonths>
+ <shortMonths>gen;feb;mar;apr;mag;giu;lug;ago;set;ott;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domenica;lunedì;martedì;mercoledì;giovedì;venerdì;sabato;</longDays>
+ <shortDays>dom;lun;mar;mer;gio;ven;sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>Domenica;Lunedì;Martedì;Mercoledì;Giovedì;Venerdì;Sabato;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;G;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Japanese</language>
+ <country>Japan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>午前</am>
+ <pm>午後</pm>
+ <longDateFormat>yyyy年M月d日EEEE</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>H時mm分ss秒v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</longMonths>
+ <shortMonths>1月;2月;3月;4月;5月;6月;7月;8月;9月;10月;11月;12月;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>日曜日;月曜日;火曜日;水曜日;木曜日;金曜日;土曜日;</longDays>
+ <shortDays>日;月;火;水;木;金;土;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>日;月;火;水;木;金;土;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Kannada</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ಪೂರ್ವಾಹ್ನ</am>
+ <pm>ಅಪರಾಹ್ನ</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-M-yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>hh:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>ಜನವರೀ;ಫೆಬ್ರವರೀ;ಮಾರ್ಚ್;ಎಪ್ರಿಲ್;ಮೆ;ಜೂನ್;ಜುಲೈ;ಆಗಸ್ಟ್;ಸಪ್ಟೆಂಬರ್;ಅಕ್ಟೋಬರ್;ನವೆಂಬರ್;ಡಿಸೆಂಬರ್;</longMonths>
+ <shortMonths>ಜನವರೀ;ಫೆಬ್ರವರೀ;ಮಾರ್ಚ್;ಎಪ್ರಿಲ್;ಮೆ;ಜೂನ್;ಜುಲೈ;ಆಗಸ್ಟ್;ಸಪ್ಟೆಂಬರ್;ಅಕ್ಟೋಬರ್;ನವೆಂಬರ್;ಡಿಸೆಂಬರ್;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ರವಿವಾರ;ಸೋಮವಾರ;ಮಂಗಳವಾರ;ಬುಧವಾರ;ಗುರುವಾರ;ಶುಕ್ರವಾರ;ಶನಿವಾರ;</longDays>
+ <shortDays>ರ.;ಸೋ.;ಮಂ.;ಬು.;ಗು.;ಶು.;ಶನಿ.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Kazakh</language>
+ <country>Kazakhstan</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, d MMMM yyyy 'ж'.</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>қаңтар;ақпан;наурыз;сәуір;мамыр;маусым;шілде;тамыз;қыркүйек;қазан;қараша;желтоқсан;</longMonths>
+ <shortMonths>қаң.;ақп.;нау.;сәу.;мам.;мау.;шіл.;там.;қыр.;қаз.;қар.;желт.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>жексені;дуйсенбі;сейсенбі;сәренбі;бейсенбі;жұма;сенбі;</longDays>
+ <shortDays>жс.;дс.;сс.;ср.;бс.;жм.;сһ.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Kinyarwanda</language>
+ <country>Rwanda</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Mutarama;Gashyantare;Werurwe;Mata;Gicuransi;Kamena;Nyakanga;Kanama;Nzeli;Ukwakira;Ugushyingo;Ukuboza;</longMonths>
+ <shortMonths>mut.;gas.;wer.;mat.;gic.;kam.;nya.;kan.;nze.;ukw.;ugu.;uku.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Ku cyumweru;Kuwa mbere;Kuwa kabiri;Kuwa gatatu;Kuwa kane;Kuwa gatanu;Kuwa gatandatu;</longDays>
+ <shortDays>cyu.;mbe.;kab.;gtu.;kan.;gnu.;gnd.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Kirghiz</language>
+ <country>Kyrgyzstan</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1;2;3;4;5;6;7;8;9;10;11;12;</longMonths>
+ <shortMonths>1;2;3;4;5;6;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Korean</language>
+ <country>RepublicOfKorea</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>오전</am>
+ <pm>오후</pm>
+ <longDateFormat>yyyy년 M월 d일 EEEE</longDateFormat>
+ <shortDateFormat>yy. M. d.</shortDateFormat>
+ <longTimeFormat>a hh시 mm분 ss초 v</longTimeFormat>
+ <shortTimeFormat>a h:mm</shortTimeFormat>
+ <standaloneLongMonths>1월;2월;3월;4월;5월;6월;7월;8월;9월;10월;11월;12월;</standaloneLongMonths>
+ <standaloneShortMonths>1월;2월;3월;4월;5월;6월;7월;8월;9월;10월;11월;12월;</standaloneShortMonths>
+ <standaloneNarrowMonths>1월;2월;3월;4월;5월;6월;7월;8월;9월;10월;11월;12월;</standaloneNarrowMonths>
+ <longMonths>1월;2월;3월;4월;5월;6월;7월;8월;9월;10월;11월;12월;</longMonths>
+ <shortMonths>1월;2월;3월;4월;5월;6월;7월;8월;9월;10월;11월;12월;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>일요일;월요일;화요일;수요일;목요일;금요일;토요일;</longDays>
+ <shortDays>일;월;화;수;목;금;토;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>일;월;화;수;목;금;토;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Kurdish</language>
+ <country>Turkey</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1;2;3;4;5;6;7;8;9;10;11;12;</longMonths>
+ <shortMonths>;;;;;;;;;;;;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>;;;;;;;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Laothian</language>
+ <country>Lao</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEEທີ d MMMM G yyyy</longDateFormat>
+ <shortDateFormat>d/M/yyyy</shortDateFormat>
+ <longTimeFormat>Hໂມງ mນາທີ ss ວິນາທີv</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>ມັງກອນ;ກຸມພາ;ມີນາ;ເມສາ;ພຶດສະພາ;ມິຖຸນາ;ກໍລະກົດ;ສິງຫາ;ກັນຍາ;ຕຸລາ;ພະຈິກ;ທັນວາ;</longMonths>
+ <shortMonths>ມ.ກ.;ກ.ພ.;ມີ.ນ.;ມ.ສ..;ພ.ພ.;ມິ.ຖ.;ກ.ລ.;ສ.ຫ.;ກ.ຍ.;ຕ.ລ.;ພ.ຈ.;ທ.ວ.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ວັນອາທິດ;ວັນຈັນ;ວັນອັງຄານ;ວັນພຸດ;ວັນພະຫັດ;ວັນສຸກ;ວັນເສົາ;</longDays>
+ <shortDays>ອາ.;ຈ.;ອ.;ພ.;ພຫ.;ສກ.;ສ.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Latvian</language>
+ <country>Latvia</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy. 'gada' d. MMMM</longDateFormat>
+ <shortDateFormat>yy.d.M</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janvāris;februāris;marts;aprīlis;maijs;jūnijs;jūlijs;augusts;septembris;oktobris;novembris;decembris;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;Mai;Jūn;Jūl;Aug;Sep;Okt;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>svētdiena;pirmdiena;otrdiena;trešdiena;ceturtdiena;piektdiena;sestdiena;</longDays>
+ <shortDays>Sv;P;O;T;C;Pk;S;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;Pr;ot;Tr;Ce;pk;Se;</standaloneShortDays>
+ <standaloneNarrowDays>S;P;O;T;C;P;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Lingala</language>
+ <country>DemocraticRepublicOfCongo</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>sánzá ya yambo;sánzá ya míbalé;sánzá ya mísáto;sánzá ya mínei;sánzá ya mítáno;sánzá ya motóbá;sánzá ya nsambo;sánzá ya mwambe;sánzá ya libwa;sánzá ya zómi;sánzá ya zómi na mɔ̌kɔ́;sánzá ya zómi na míbalé;</longMonths>
+ <shortMonths>s1;s2;s3;s4;s5;s6;s7;s8;s9;s10;s11;s12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>eyenga;mokɔlɔ ya libosó;mokɔlɔ ya míbalé;mokɔlɔ ya mísáto;mokɔlɔ ya mínéi;mokɔlɔ ya mítáno;mpɔ́sɔ;</longDays>
+ <shortDays>eye;m1;m2;m3;m4;m5;mps;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Lingala</language>
+ <country>PeoplesRepublicOfCongo</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>sánzá ya yambo;sánzá ya míbalé;sánzá ya mísáto;sánzá ya mínei;sánzá ya mítáno;sánzá ya motóbá;sánzá ya nsambo;sánzá ya mwambe;sánzá ya libwa;sánzá ya zómi;sánzá ya zómi na mɔ̌kɔ́;sánzá ya zómi na míbalé;</longMonths>
+ <shortMonths>s1;s2;s3;s4;s5;s6;s7;s8;s9;s10;s11;s12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>eyenga;mokɔlɔ ya libosó;mokɔlɔ ya míbalé;mokɔlɔ ya mísáto;mokɔlɔ ya mínéi;mokɔlɔ ya mítáno;mpɔ́sɔ;</longDays>
+ <shortDays>eye;m1;m2;m3;m4;m5;mps;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Lithuanian</language>
+ <country>Lithuania</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>priešpiet</am>
+ <pm>popiet</pm>
+ <longDateFormat>yyyy 'm'. MMMM d 'd'.,EEEE</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>Sausis;Vasaris;Kovas;Balandis;Gegužė;Birželis;Liepa;Rugpjūtis;Rugsėjis;Spalis;Lapkritis;Gruodis;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>S;V;K;B;G;B;L;R;R;S;L;G;</standaloneNarrowMonths>
+ <longMonths>sausio;vasario;kovo;balandžio;gegužės;birželio;liepos;rugpjūčio;rugsėjo;spalio;lapkričio;gruodžio;</longMonths>
+ <shortMonths>Sau;Vas;Kov;Bal;Geg;Bir;Lie;Rgp;Rgs;Spl;Lap;Grd;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>sekmadienis;pirmadienis;antradienis;trečiadienis;ketvirtadienis;penktadienis;šeštadienis;</longDays>
+ <shortDays>Sk;Pr;An;Tr;Kt;Pn;Št;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;P;A;T;K;P;Š;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Macedonian</language>
+ <country>Macedonia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.M.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ј;ф;м;а;м;ј;ј;а;с;о;н;д;</standaloneNarrowMonths>
+ <longMonths>јануари;февруари;март;април;мај;јуни;јули;август;септември;октомври;ноември;декември;</longMonths>
+ <shortMonths>јан.;фев.;мар.;апр.;мај;јун.;јул.;авг.;септ.;окт.;ноем.;декем.;</shortMonths>
+ <narrowMonths>;;;;;;;;с;;н;;</narrowMonths>
+ <longDays>недела;понеделник;вторник;среда;четврток;петок;сабота;</longDays>
+ <shortDays>нед.;пон.;вт.;сре.;чет.;пет.;саб.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>н;п;в;с;ч;п;с;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Malay</language>
+ <country>BruneiDarussalam</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss aa v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januari;Februari;Mac;April;Mei;Jun;Julai;Ogos;September;Oktober;November;Disember;</longMonths>
+ <shortMonths>Jan;Feb;Mac;Apr;Mei;Jun;Jul;Ogos;Sep;Okt;Nov;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Ahad;Isnin;Selasa;Rabu;Khamis;Jumaat;Sabtu;</longDays>
+ <shortDays>Ahd;Isn;Sel;Rab;Kha;Jum;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Malay</language>
+ <country>Malaysia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE dd MMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januari;Februari;Mac;April;Mei;Jun;Julai;Ogos;September;Oktober;November;Disember;</longMonths>
+ <shortMonths>Jan;Feb;Mac;Apr;Mei;Jun;Jul;Ogos;Sep;Okt;Nov;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Ahad;Isnin;Selasa;Rabu;Khamis;Jumaat;Sabtu;</longDays>
+ <shortDays>Ahd;Isn;Sel;Rab;Kha;Jum;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Malayalam</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>yyyy, MMMM d, EEEE</longDateFormat>
+ <shortDateFormat>dd-MM-yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ജ;ഫെ;മ;ഏ;മേ;ജൂ;ജൂ;ആ;സെ;ഒ;ന;ഡി;</standaloneNarrowMonths>
+ <longMonths>ജനുവരി;ഫെബ്രുവരി;മാര്‍ച്ച്;ഏപ്രില്‍;മേയ്;ജൂണ്‍;ജൂലൈ;ഓഗസ്റ്റ്;സെപ്റ്റംബര്‍;ഒക്ടോബര്‍;നവംബര്‍;ഡിസംബര്‍;</longMonths>
+ <shortMonths>ജനു;ഫെബ്രു;മാര്‍;ഏപ്രി;മേയ്;ജൂണ്‍;ജൂലൈ;ആഗ;സെപ്റ്റം;ഒക്ടോ;നവം;ഡിസം;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ഞായര്‍;തിങ്കള്‍;ചൊവ്വ;ബുധന്‍;വ്യാഴം;വെള്ളി;ശനി;</longDays>
+ <shortDays>ഞാ;തി;ചൊ;ബു;വ്യാ;വെ;ശ;</shortDays>
+ <narrowDays>;;ചൊ;;;;;</narrowDays>
+ <standaloneLongDays>;തിങ്കളാഴ്ച;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ഞ;ത;ച;ബ;വ;വ;ശ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Maltese</language>
+ <country>Malta</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>QN</am>
+ <pm>WN</pm>
+ <longDateFormat>EEEE, d 'ta'’ MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;Ġ;L;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Jannar;Frar;Marzu;April;Mejju;Ġunju;Lulju;Awissu;Settembru;Ottubru;Novembru;Diċembru;</longMonths>
+ <shortMonths>Jan;Fra;Mar;Apr;Mej;Ġun;Lul;Awi;Set;Ott;Nov;Diċ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Il-Ħadd;It-Tnejn;It-Tlieta;L-Erbgħa;Il-Ħamis;Il-Ġimgħa;Is-Sibt;</longDays>
+ <shortDays>Ħad;Tne;Tli;Erb;Ħam;Ġim;Sib;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Ħ;T;T;E;Ħ;Ġ;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Marathi</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>म.पू.</am>
+ <pm>म.नं.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-M-yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>जानेवारी;फेब्रुवारी;मार्च;एप्रिल;मे;जून;जुलै;ओगस्ट;सेप्टेंबर;ओक्टोबर;नोव्हेंबर;डिसेंबर;</longMonths>
+ <shortMonths>जानेवारी;फेब्रुवारी;मार्च;एप्रिल;मे;जून;जुलै;ओगस्ट;सेप्टेंबर;ओक्टोबर;नोव्हेंबर;डिसेंबर;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>रविवार;सोमवार;मंगळवार;बुधवार;गुरुवार;शुक्रवार;शनिवार;</longDays>
+ <shortDays>रवि;सोम;मंगळ;बुध;गुरु;शुक्र;शनि;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Mongolian</language>
+ <country>China</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Хулгана;Үхэр;Бар;Туулай;Луу;Могой;Морь;Хонь;Бич;Тахиа;Нохой;Гахай;</longMonths>
+ <shortMonths>хул;үхэ;бар;туу;луу;мог;мор;хон;бич;тах;нох;гах;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ням;даваа;мягмар;лхагва;пүрэв;баасан;бямба;</longDays>
+ <shortDays>Ня;Да;Мя;Лх;Пү;Ба;Бя;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Mongolian</language>
+ <country>Mongolia</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Хулгана;Үхэр;Бар;Туулай;Луу;Могой;Морь;Хонь;Бич;Тахиа;Нохой;Гахай;</longMonths>
+ <shortMonths>хул;үхэ;бар;туу;луу;мог;мор;хон;бич;тах;нох;гах;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ням;даваа;мягмар;лхагва;пүрэв;баасан;бямба;</longDays>
+ <shortDays>Ня;Да;Мя;Лх;Пү;Ба;Бя;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Nepali</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2406</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>१;२;३;४;५;६;७;८;९;१०;११;१२;</standaloneNarrowMonths>
+ <longMonths>जनवरी;फेब्रुअरी;मार्च;अप्रिल;मे;जुन;जुलाई;अगस्त;सेप्टेम्बर;अक्टोबर;नोभेम्बर;डिसेम्बर;</longMonths>
+ <shortMonths>जन;फेब;मार्च;अप्रि;मे;जुन;जुला;अग;सेप्ट;अक्टो;नोभे;डिसे;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>आइतबार;सोमबार;मङ्गलबार;बुधबार;बिहीबार;शुक्रबार;शनिबार;</longDays>
+ <shortDays>आइत;सोम;मङ्गल;बुध;बिही;शुक्र;शनि;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>१;२;३;४;५;६;७;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Nepali</language>
+ <country>Nepal</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2406</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>१;२;३;४;५;६;७;८;९;१०;११;१२;</standaloneNarrowMonths>
+ <longMonths>जनवरी;फेब्रुअरी;मार्च;अप्रिल;मे;जुन;जुलाई;अगस्त;सेप्टेम्बर;अक्टोबर;नोभेम्बर;डिसेम्बर;</longMonths>
+ <shortMonths>जन;फेब;मार्च;अप्रि;मे;जुन;जुला;अग;सेप्ट;अक्टो;नोभे;डिसे;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>आइतबार;सोमबार;मङ्गलबार;बुधबार;बिहीबार;शुक्रबार;शनिबार;</longDays>
+ <shortDays>आइत;सोम;मङ्गल;बुध;बिही;शुक्र;शनि;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>१;२;३;४;५;६;७;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Norwegian</language>
+ <country>Norway</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>formiddag</am>
+ <pm>ettermiddag</pm>
+ <longDateFormat>EEEE d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>'kl'. HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>januar;februar;mars;april;mai;juni;juli;august;september;oktober;november;desember;</longMonths>
+ <shortMonths>jan.;feb.;mars;apr.;mai;juni;juli;aug.;sep.;okt.;nov.;des.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>søndag;mandag;tirsdag;onsdag;torsdag;fredag;lørdag;</longDays>
+ <shortDays>søn.;man.;tir.;ons.;tor.;fre.;lør.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;O;T;F;L;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Oriya</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2918</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>MMMM d,EEEE, yyyy</longDateFormat>
+ <shortDateFormat>dd-MM-yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>ଜାନୁଆରୀ;ଫେବ୍ରୁୟାରୀ;ମାର୍ଚ୍ଚ;ଅପ୍ରେଲ;ମେ;ଜୁନ;ଜୁଲାଇ;ଅଗଷ୍ଟ;ସେପ୍ଟେମ୍ବର;ଅକ୍ଟୋବର;ନଭେମ୍ବର;ଡିସେମ୍ବର;</longMonths>
+ <shortMonths>ଜାନୁଆରୀ;ଫେବ୍ରୁୟାରୀ;ମାର୍ଚ୍ଚ;ଅପ୍ରେଲ;ମେ;ଜୁନ;ଜୁଲାଇ;ଅଗଷ୍ଟ;ସେପ୍ଟେମ୍ବର;ଅକ୍ଟୋବର;ନଭେମ୍ବର;ଡିସେମ୍ବର;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ରବିବାର;ସୋମବାର;ମଙ୍ଗଳବାର;ବୁଧବାର;ଗୁରୁବାର;ଶୁକ୍ରବାର;ଶନିବାର;</longDays>
+ <shortDays>ରବି;ସୋମ;ମଙ୍ଗଳ;ବୁଧ;ଗୁରୁ;ଶୁକ୍ର;ଶନି;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Pashto</language>
+ <country>Afghanistan</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>59</list>
+ <percent>1642</percent>
+ <zero>1776</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>غ.م.</am>
+ <pm>غ.و.</pm>
+ <longDateFormat>EEEE د yyyy د MMMM d</longDateFormat>
+ <shortDateFormat>yyyy/M/d</shortDateFormat>
+ <longTimeFormat>H:mm:ss (v)</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>جنوري;فبروري;مارچ;اپریل;می;جون;جولای;اګست;سپتمبر;اکتوبر;نومبر;دسمبر;</longMonths>
+ <shortMonths>1;2;3;4;مـی;جون;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>یکشنبه;دوشنبه;سه‌شنبه;چهارشنبه;پنجشنبه;جمعه;شنبه;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Persian</language>
+ <country>Afghanistan</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1776</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>قبل از ظهر</am>
+ <pm>بعد از ظهر</pm>
+ <longDateFormat>EEEE d MMMM yyyy GGGG</longDateFormat>
+ <shortDateFormat>yy/M/d</shortDateFormat>
+ <longTimeFormat>H:mm:ss (vvvv)</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>ژانویه;فوریه;مارس;آوریل;مه;ژوئن;ژوئیه;اوت;سپتامبر;اکتبر;نوامبر;دسامبر;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ج;ف;م;ا;م;ج;ج;ا;س;ا;ن;د;</standaloneNarrowMonths>
+ <longMonths>جنوری;فبروری;مارچ;اپریل;می;جون;جولای;اگست;سپتمبر;اکتوبر;نومبر;دسمبر;</longMonths>
+ <shortMonths>جنو;فوریهٔ;مارس;آوریل;مـی;جون;جول;اوت;سپتامبر;اکتبر;نوامبر;دسم;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>یکشنبه;دوشنبه;سه‌شنبه;چهارشنبه;پنجشنبه;جمعه;شنبه;</longDays>
+ <shortDays>یکشنبه;دوشنبه;سه‌شنبه;چهارشنبه;پنجشنبه;جمعه;شنبه;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ی;د;س;چ;پ;ج;ش;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Persian</language>
+ <country>Iran</country>
+ <decimal>1643</decimal>
+ <group>1644</group>
+ <list>1563</list>
+ <percent>1642</percent>
+ <zero>1776</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>قبل از ظهر</am>
+ <pm>بعد از ظهر</pm>
+ <longDateFormat>EEEE d MMMM yyyy GGGG</longDateFormat>
+ <shortDateFormat>yy/M/d</shortDateFormat>
+ <longTimeFormat>H:mm:ss (vvvv)</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>ژانویه;فوریه;مارس;آوریل;مه;ژوئن;ژوئیه;اوت;سپتامبر;اکتبر;نوامبر;دسامبر;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ژ;ف;م;آ;م;ژ;ژ;ا;س;ا;ن;د;</standaloneNarrowMonths>
+ <longMonths>ژانویهٔ;فوریهٔ;مارس;آوریل;مهٔ;ژوئن;ژوئیهٔ;اوت;سپتامبر;اکتبر;نوامبر;دسامبر;</longMonths>
+ <shortMonths>ژانویهٔ;فوریهٔ;مارس;آوریل;مهٔ;ژوئن;ژوئیهٔ;اوت;سپتامبر;اکتبر;نوامبر;دسامبر;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>یکشنبه;دوشنبه;سه‌شنبه;چهارشنبه;پنجشنبه;جمعه;شنبه;</longDays>
+ <shortDays>یکشنبه;دوشنبه;سه‌شنبه;چهارشنبه;پنجشنبه;جمعه;شنبه;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ی;د;س;چ;پ;ج;ش;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Polish</language>
+ <country>Poland</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>yy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>styczeń;luty;marzec;kwiecień;maj;czerwiec;lipiec;sierpień;wrzesień;październik;listopad;grudzień;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>s;l;m;k;m;c;l;s;w;p;l;g;</standaloneNarrowMonths>
+ <longMonths>stycznia;lutego;marca;kwietnia;maja;czerwca;lipca;sierpnia;września;października;listopada;grudnia;</longMonths>
+ <shortMonths>sty;lut;mar;kwi;maj;cze;lip;sie;wrz;paź;lis;gru;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>niedziela;poniedziałek;wtorek;środa;czwartek;piątek;sobota;</longDays>
+ <shortDays>niedz.;pon.;wt.;śr.;czw.;pt.;sob.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>N;P;W;Ś;C;P;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Portuguese</language>
+ <country>Brazil</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH'h'mm'min'ss's' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>janeiro;fevereiro;março;abril;maio;junho;julho;agosto;setembro;outubro;novembro;dezembro;</longMonths>
+ <shortMonths>jan;fev;mar;abr;mai;jun;jul;ago;set;out;nov;dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;segunda-feira;terça-feira;quarta-feira;quinta-feira;sexta-feira;sábado;</longDays>
+ <shortDays>dom;seg;ter;qua;qui;sex;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;S;T;Q;Q;S;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Portuguese</language>
+ <country>Portugal</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>Antes do meio-dia</am>
+ <pm>Depois do meio-dia</pm>
+ <longDateFormat>EEEE, d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH'H'mm'm'ss's' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Janeiro;Fevereiro;Março;Abril;Maio;Junho;Julho;Agosto;Setembro;Outubro;Novembro;Dezembro;</longMonths>
+ <shortMonths>Jan;Fev;Mar;Abr;Mai;Jun;Jul;Ago;Set;Out;Nov;Dez;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;segunda-feira;terça-feira;quarta-feira;quinta-feira;sexta-feira;sábado;</longDays>
+ <shortDays>dom;seg;ter;qua;qui;sex;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;S;T;Q;Q;S;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Punjabi</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2662</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ਸਵੇਰੇ</am>
+ <pm>ਸ਼ਾਮ</pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ਜ;ਫ;ਮਾ;ਅ;ਮ;ਜੂ;ਜੁ;ਅ;ਸ;ਅ;ਨ;ਦ;</standaloneNarrowMonths>
+ <longMonths>ਜਨਵਰੀ;ਫ਼ਰਵਰੀ;ਮਾਰਚ;ਅਪ੍ਰੈਲ;ਮਈ;ਜੂਨ;ਜੁਲਾਈ;ਅਗਸਤ;ਸਤੰਬਰ;ਅਕਤੂਬਰ;ਨਵੰਬਰ;ਦਸੰਬਰ;</longMonths>
+ <shortMonths>ਜਨਵਰੀ;ਫ਼ਰਵਰੀ;ਮਾਰਚ;ਅਪ੍ਰੈਲ;ਮਈ;ਜੂਨ;ਜੁਲਾਈ;ਅਗਸਤ;ਸਤੰਬਰ;ਅਕਤੂਬਰ;ਨਵੰਬਰ;ਦਸੰਬਰ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ਐਤਵਾਰ;ਸੋਮਵਾਰ;ਮੰਗਲਵਾਰ;ਬੁਧਵਾਰ;ਵੀਰਵਾਰ;ਸ਼ੁੱਕਰਵਾਰ;ਸ਼ਨੀਚਰਵਾਰ;</longDays>
+ <shortDays>ਐਤ.;ਸੋਮ.;ਮੰਗਲ.;ਬੁਧ.;ਵੀਰ.;ਸ਼ੁਕਰ.;ਸ਼ਨੀ.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ਐ;ਸੋ;ਮੰ;ਬੁੱ;ਵੀ;ਸ਼ੁੱ;ਸ਼;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Punjabi</language>
+ <country>Pakistan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2662</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ਸਵੇਰੇ</am>
+ <pm>ਸ਼ਾਮ</pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ਜ;ਫ;ਮਾ;ਅ;ਮ;ਜੂ;ਜੁ;ਅ;ਸ;ਅ;ਨ;ਦ;</standaloneNarrowMonths>
+ <longMonths>ਜਨਵਰੀ;ਫ਼ਰਵਰੀ;ਮਾਰਚ;ਅਪ੍ਰੈਲ;ਮਈ;ਜੂਨ;ਜੁਲਾਈ;ਅਗਸਤ;ਸਤੰਬਰ;ਅਕਤੂਬਰ;ਨਵੰਬਰ;ਦਸੰਬਰ;</longMonths>
+ <shortMonths>ਜਨਵਰੀ;ਫ਼ਰਵਰੀ;ਮਾਰਚ;ਅਪ੍ਰੈਲ;ਮਈ;ਜੂਨ;ਜੁਲਾਈ;ਅਗਸਤ;ਸਤੰਬਰ;ਅਕਤੂਬਰ;ਨਵੰਬਰ;ਦਸੰਬਰ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ਐਤਵਾਰ;ਸੋਮਵਾਰ;ਮੰਗਲਵਾਰ;ਬੁਧਵਾਰ;ਵੀਰਵਾਰ;ਸ਼ੁੱਕਰਵਾਰ;ਸ਼ਨੀਚਰਵਾਰ;</longDays>
+ <shortDays>ਐਤ.;ਸੋਮ.;ਮੰਗਲ.;ਬੁਧ.;ਵੀਰ.;ਸ਼ੁਕਰ.;ਸ਼ਨੀ.;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ਐ;ਸੋ;ਮੰ;ਬੁੱ;ਵੀ;ਸ਼ੁੱ;ਸ਼;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Romanian</language>
+ <country>Moldova</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>I;F;M;A;M;I;I;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>ianuarie;februarie;martie;aprilie;mai;iunie;iulie;august;septembrie;octombrie;noiembrie;decembrie;</longMonths>
+ <shortMonths>ian.;feb.;mar.;apr.;mai;iun.;iul.;aug.;sept.;oct.;nov.;dec.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>duminică;luni;marți;miercuri;joi;vineri;sâmbătă;</longDays>
+ <shortDays>D;L;Ma;Mi;J;V;S;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;sâmbătă;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Romanian</language>
+ <country>Romania</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>I;F;M;A;M;I;I;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>ianuarie;februarie;martie;aprilie;mai;iunie;iulie;august;septembrie;octombrie;noiembrie;decembrie;</longMonths>
+ <shortMonths>ian.;feb.;mar.;apr.;mai;iun.;iul.;aug.;sept.;oct.;nov.;dec.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>duminică;luni;marți;miercuri;joi;vineri;sâmbătă;</longDays>
+ <shortDays>D;L;Ma;Mi;J;V;S;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;sâmbătă;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Russian</language>
+ <country>RussianFederation</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy 'г'.</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>H:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>Январь;Февраль;Март;Апрель;Май;Июнь;Июль;Август;Сентябрь;Октябрь;Ноябрь;Декабрь;</standaloneLongMonths>
+ <standaloneShortMonths>янв.;февр.;март;апр.;май;июнь;июль;авг.;сент.;окт.;нояб.;дек.;</standaloneShortMonths>
+ <standaloneNarrowMonths>Я;Ф;М;А;М;И;И;А;С;О;Н;Д;</standaloneNarrowMonths>
+ <longMonths>января;февраля;марта;апреля;мая;июня;июля;августа;сентября;октября;ноября;декабря;</longMonths>
+ <shortMonths>янв.;февр.;марта;апр.;мая;июня;июля;авг.;сент.;окт.;нояб.;дек.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>воскресенье;понедельник;вторник;среда;четверг;пятница;суббота;</longDays>
+ <shortDays>Вс;Пн;Вт;Ср;Чт;Пт;Сб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>Воскресенье;Понедельник;Вторник;Среда;Четверг;Пятница;Суббота;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>В;П;В;С;Ч;П;С;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Russian</language>
+ <country>Ukraine</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, d MMMM yyyy 'г'.</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>Январь;Февраль;Март;Апрель;Май;Июнь;Июль;Август;Сентябрь;Октябрь;Ноябрь;Декабрь;</standaloneLongMonths>
+ <standaloneShortMonths>янв.;февр.;март;апр.;май;июнь;июль;авг.;сент.;окт.;нояб.;дек.;</standaloneShortMonths>
+ <standaloneNarrowMonths>Я;Ф;М;А;М;И;И;А;С;О;Н;Д;</standaloneNarrowMonths>
+ <longMonths>января;февраля;марта;апреля;мая;июня;июля;августа;сентября;октября;ноября;декабря;</longMonths>
+ <shortMonths>янв.;февр.;марта;апр.;мая;июня;июля;авг.;сент.;окт.;нояб.;дек.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>воскресенье;понедельник;вторник;среда;четверг;пятница;суббота;</longDays>
+ <shortDays>Вс;Пн;Вт;Ср;Чт;Пт;Сб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>Воскресенье;Понедельник;Вторник;Среда;Четверг;Пятница;Суббота;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>В;П;В;С;Ч;П;С;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Sanskrit</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>2406</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-MM-yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>hh:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1;2;3;4;5;6;7;8;9;10;11;12;</longMonths>
+ <shortMonths>1;2;3;4;5;6;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Serbian</language>
+ <country>BosniaAndHerzegowina</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>1077</exp>
+ <am>преподне</am>
+ <pm>поподне</pm>
+ <longDateFormat>EEEE, dd. MMMM yyyy.</longDateFormat>
+ <shortDateFormat>yy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH 'часова', mm 'минута', ss 'секунди' v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ј;ф;м;а;м;ј;ј;а;с;о;н;д;</standaloneNarrowMonths>
+ <longMonths>јануар;фебруар;март;април;мај;јуни;јули;август;септембар;октобар;новембар;децембар;</longMonths>
+ <shortMonths>јан;феб;мар;апр;мај;јун;јул;авг;сеп;окт;нов;дец;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>недеља;понедељак;уторак;сриједа;четвртак;петак;субота;</longDays>
+ <shortDays>нед;пон;уто;сри;чет;пет;суб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>н;п;у;с;ч;п;с;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Serbian</language>
+ <country>Yugoslavia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>1077</exp>
+ <am>преподне</am>
+ <pm>поподне</pm>
+ <longDateFormat>EEEE, dd. MMMM yyyy.</longDateFormat>
+ <shortDateFormat>d.M.yy.</shortDateFormat>
+ <longTimeFormat>HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ј;ф;м;а;м;ј;ј;а;с;о;н;д;</standaloneNarrowMonths>
+ <longMonths>јануар;фебруар;март;април;мај;јун;јул;август;септембар;октобар;новембар;децембар;</longMonths>
+ <shortMonths>јан;феб;мар;апр;мај;јун;јул;авг;сеп;окт;нов;дец;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>недеља;понедељак;уторак;среда;четвртак;петак;субота;</longDays>
+ <shortDays>нед;пон;уто;сре;чет;пет;суб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>н;п;у;с;ч;п;с;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Serbian</language>
+ <country>SerbiaAndMontenegro</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>1077</exp>
+ <am>преподне</am>
+ <pm>поподне</pm>
+ <longDateFormat>EEEE, dd. MMMM yyyy.</longDateFormat>
+ <shortDateFormat>d.M.yy.</shortDateFormat>
+ <longTimeFormat>HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ј;ф;м;а;м;ј;ј;а;с;о;н;д;</standaloneNarrowMonths>
+ <longMonths>јануар;фебруар;март;април;мај;јун;јул;август;септембар;октобар;новембар;децембар;</longMonths>
+ <shortMonths>јан;феб;мар;апр;мај;јун;јул;авг;сеп;окт;нов;дец;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>недеља;понедељак;уторак;среда;четвртак;петак;субота;</longDays>
+ <shortDays>нед;пон;уто;сре;чет;пет;суб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>н;п;у;с;ч;п;с;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>SerboCroatian</language>
+ <country>BosniaAndHerzegowina</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>j;f;m;a;m;j;j;a;s;o;n;d;</standaloneNarrowMonths>
+ <longMonths>januar;februar;mart;april;maj;jun;jul;avgust;septembar;oktobar;novembar;decembar;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;avg;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>nedelja;ponedeljak;utorak;sreda;četvrtak;petak;subota;</longDays>
+ <shortDays>ned;pon;uto;sre;čet;pet;sub;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>n;p;u;s;č;p;s;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>SerboCroatian</language>
+ <country>Yugoslavia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>j;f;m;a;m;j;j;a;s;o;n;d;</standaloneNarrowMonths>
+ <longMonths>januar;februar;mart;april;maj;jun;jul;avgust;septembar;oktobar;novembar;decembar;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;avg;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>nedelja;ponedeljak;utorak;sreda;četvrtak;petak;subota;</longDays>
+ <shortDays>ned;pon;uto;sre;čet;pet;sub;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>n;p;u;s;č;p;s;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>SerboCroatian</language>
+ <country>SerbiaAndMontenegro</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>j;f;m;a;m;j;j;a;s;o;n;d;</standaloneNarrowMonths>
+ <longMonths>januar;februar;mart;april;maj;jun;jul;avgust;septembar;oktobar;novembar;decembar;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;avg;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>nedelja;ponedeljak;utorak;sreda;četvrtak;petak;subota;</longDays>
+ <shortDays>ned;pon;uto;sre;čet;pet;sub;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>n;p;u;s;č;p;s;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Sesotho</language>
+ <country>Lesotho</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Phesekgong;Hlakola;Hlakubele;Mmese;Motsheanong;Phupjane;Phupu;Phata;Leotshe;Mphalane;Pundungwane;Tshitwe;</longMonths>
+ <shortMonths>Phe;Kol;Ube;Mme;Mot;Jan;Upu;Pha;Leo;Mph;Pun;Tsh;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sontaha;Mmantaha;Labobedi;Laboraru;Labone;Labohlane;Moqebelo;</longDays>
+ <shortDays>Son;Mma;Bed;Rar;Ne;Hla;Moq;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Sesotho</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Phesekgong;Hlakola;Hlakubele;Mmese;Motsheanong;Phupjane;Phupu;Phata;Leotshe;Mphalane;Pundungwane;Tshitwe;</longMonths>
+ <shortMonths>Phe;Kol;Ube;Mme;Mot;Jan;Upu;Pha;Leo;Mph;Pun;Tsh;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sontaha;Mmantaha;Labobedi;Laboraru;Labone;Labohlane;Moqebelo;</longDays>
+ <shortDays>Son;Mma;Bed;Rar;Ne;Hla;Moq;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Setswana</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Ferikgong;Tlhakole;Mopitlo;Moranang;Motsheganang;Seetebosigo;Phukwi;Phatwe;Lwetse;Diphalane;Ngwanatsele;Sedimonthole;</longMonths>
+ <shortMonths>Fer;Tlh;Mop;Mor;Mot;See;Phu;Pha;Lwe;Dip;Ngw;Sed;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Tshipi;Mosopulogo;Labobedi;Laboraro;Labone;Labotlhano;Matlhatso;</longDays>
+ <shortDays>Tsh;Mos;Bed;Rar;Ne;Tla;Mat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Singhalese</language>
+ <country>SriLanka</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>පෙ.ව.</am>
+ <pm>ප.ව.</pm>
+ <longDateFormat>EEEE, yyyy MMMM d</longDateFormat>
+ <shortDateFormat>yyyy/MM/dd</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ජ;පෙ;මා;අ;මැ;ජූ;ජූ;අ;සැ;ඔ;නො;දෙ;</standaloneNarrowMonths>
+ <longMonths>ජනවාර;පෙබරවාර;මාර්ත;අප්‍රේල්;මැයි;ජූන;ජූලි;අගෝස්තු;සැප්තැම්බර්;ඔක්තෝබර්;නොවැම්බර්;දෙසැම්බර්;</longMonths>
+ <shortMonths>ජන;පෙබ;මාර්ත;අප්‍රේල;මැය;ජූන;ජූල;අගෝ;සැප;ඔක;නොවැ;දෙසැ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ඉරිදා;සඳුදා;අඟහරුවාදා;බදාදා;බ්‍රහස්පතින්දා;සිකුරාදා;සෙනසුරාදා;</longDays>
+ <shortDays>ඉරි;සඳු;අඟ;බදා;බ්‍රහ;සිකු;සෙන;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ඉ;ස;අ;බ;බ්‍ර;සි;සෙ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Siswati</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Bhimbidvwane;iNdlovana;iNdlovu-lenkhulu;Mabasa;iNkhwekhweti;iNhlaba;Kholwane;iNgci;iNyoni;iMphala;Lweti;iNgongoni;</longMonths>
+ <shortMonths>Bhi;Van;Vol;Mab;Nkh;Nhl;Kho;Ngc;Nyo;Mph;Lwe;Ngo;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lisontfo;uMsombuluko;Lesibili;Lesitsatfu;Lesine;Lesihlanu;uMgcibelo;</longDays>
+ <shortDays>Son;Mso;Bil;Tsa;Ne;Hla;Mgc;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Siswati</language>
+ <country>Swaziland</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Bhimbidvwane;iNdlovana;iNdlovu-lenkhulu;Mabasa;iNkhwekhweti;iNhlaba;Kholwane;iNgci;iNyoni;iMphala;Lweti;iNgongoni;</longMonths>
+ <shortMonths>Bhi;Van;Vol;Mab;Nkh;Nhl;Kho;Ngc;Nyo;Mph;Lwe;Ngo;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lisontfo;uMsombuluko;Lesibili;Lesitsatfu;Lesine;Lesihlanu;uMgcibelo;</longDays>
+ <shortDays>Son;Mso;Bil;Tsa;Ne;Hla;Mgc;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Slovak</language>
+ <country>Slovakia</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>d.M.yyyy</shortDateFormat>
+ <longTimeFormat>H:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>j;f;m;a;m;j;j;a;s;o;n;d;</standaloneNarrowMonths>
+ <longMonths>január;február;marec;apríl;máj;jún;júl;august;september;október;november;december;</longMonths>
+ <shortMonths>jan;feb;mar;apr;máj;jún;júl;aug;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Nedeľa;Pondelok;Utorok;Streda;Štvrtok;Piatok;Sobota;</longDays>
+ <shortDays>Ne;Po;Ut;St;Št;Pi;So;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>N;P;U;S;Š;P;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Slovenian</language>
+ <country>Slovenia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, dd. MMMM yyyy</longDateFormat>
+ <shortDateFormat>d.M.yy</shortDateFormat>
+ <longTimeFormat>H:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>j;f;m;a;m;j;j;a;s;o;n;d;</standaloneNarrowMonths>
+ <longMonths>januar;februar;marec;april;maj;junij;julij;avgust;september;oktober;november;december;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;avg;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>nedelja;ponedeljek;torek;sreda;četrtek;petek;sobota;</longDays>
+ <shortDays>ned;pon;tor;sre;čet;pet;sob;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>n;p;t;s;č;p;s;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Somali</language>
+ <country>Djibouti</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>sn</am>
+ <pm>gn</pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>K;L;S;A;S;L;T;S;S;T;K;L;</standaloneNarrowMonths>
+ <longMonths>Bisha Koobaad;Bisha Labaad;Bisha Saddexaad;Bisha Afraad;Bisha Shanaad;Bisha Lixaad;Bisha Todobaad;Bisha Sideedaad;Bisha Sagaalaad;Bisha Tobnaad;Bisha Kow iyo Tobnaad;Bisha Laba iyo Tobnaad;</longMonths>
+ <shortMonths>Kob;Lab;Sad;Afr;Sha;Lix;Tod;Sid;Sag;Tob;KIT;LIT;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Axad;Isniin;Salaaso;Arbaco;Khamiis;Jimco;Sabti;</longDays>
+ <shortDays>Axa;Isn;Sal;Arb;Kha;Jim;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>A;I;S;A;K;J;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Somali</language>
+ <country>Ethiopia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>sn</am>
+ <pm>gn</pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>K;L;S;A;S;L;T;S;S;T;K;L;</standaloneNarrowMonths>
+ <longMonths>Bisha Koobaad;Bisha Labaad;Bisha Saddexaad;Bisha Afraad;Bisha Shanaad;Bisha Lixaad;Bisha Todobaad;Bisha Sideedaad;Bisha Sagaalaad;Bisha Tobnaad;Bisha Kow iyo Tobnaad;Bisha Laba iyo Tobnaad;</longMonths>
+ <shortMonths>Kob;Lab;Sad;Afr;Sha;Lix;Tod;Sid;Sag;Tob;KIT;LIT;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Axad;Isniin;Salaaso;Arbaco;Khamiis;Jimco;Sabti;</longDays>
+ <shortDays>Axa;Isn;Sal;Arb;Kha;Jim;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>A;I;S;A;K;J;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Somali</language>
+ <country>Kenya</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>sn</am>
+ <pm>gn</pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>K;L;S;A;S;L;T;S;S;T;K;L;</standaloneNarrowMonths>
+ <longMonths>Bisha Koobaad;Bisha Labaad;Bisha Saddexaad;Bisha Afraad;Bisha Shanaad;Bisha Lixaad;Bisha Todobaad;Bisha Sideedaad;Bisha Sagaalaad;Bisha Tobnaad;Bisha Kow iyo Tobnaad;Bisha Laba iyo Tobnaad;</longMonths>
+ <shortMonths>Kob;Lab;Sad;Afr;Sha;Lix;Tod;Sid;Sag;Tob;KIT;LIT;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Axad;Isniin;Salaaso;Arbaco;Khamiis;Jimco;Sabti;</longDays>
+ <shortDays>Axa;Isn;Sal;Arb;Kha;Jim;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>A;I;S;A;K;J;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Somali</language>
+ <country>Somalia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>sn</am>
+ <pm>gn</pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>K;L;S;A;S;L;T;S;S;T;K;L;</standaloneNarrowMonths>
+ <longMonths>Bisha Koobaad;Bisha Labaad;Bisha Saddexaad;Bisha Afraad;Bisha Shanaad;Bisha Lixaad;Bisha Todobaad;Bisha Sideedaad;Bisha Sagaalaad;Bisha Tobnaad;Bisha Kow iyo Tobnaad;Bisha Laba iyo Tobnaad;</longMonths>
+ <shortMonths>Kob;Lab;Sad;Afr;Sha;Lix;Tod;Sid;Sag;Tob;KIT;LIT;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Axad;Isniin;Salaaso;Arbaco;Khamiis;Jimco;Sabti;</longDays>
+ <shortDays>Axa;Isn;Sal;Arb;Kha;Jim;Sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>A;I;S;A;K;J;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Argentina</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH'h'''mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Bolivia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Chile</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd-MM-yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Colombia</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>CostaRica</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>DominicanRepublic</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Ecuador</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>ElSalvador</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Guatemala</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Honduras</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE dd 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Mexico</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Nicaragua</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Panama</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>MM/dd/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Paraguay</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Peru</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>HH'H'mm''ss" v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>PuertoRico</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>MM/dd/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Spain</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>UnitedStates</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>M/d/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Uruguay</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Spanish</language>
+ <country>Venezuela</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d 'de' MMMM 'de' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>E;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>enero;febrero;marzo;abril;mayo;junio;julio;agosto;septiembre;octubre;noviembre;diciembre;</longMonths>
+ <shortMonths>ene;feb;mar;abr;may;jun;jul;ago;sep;oct;nov;dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domingo;lunes;martes;miércoles;jueves;viernes;sábado;</longDays>
+ <shortDays>dom;lun;mar;mié;jue;vie;sáb;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Swahili</language>
+ <country>Kenya</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januari;Februari;Machi;Aprili;Mei;Juni;Julai;Agosti;Septemba;Oktoba;Novemba;Desemba;</longMonths>
+ <shortMonths>Jan;Feb;Mac;Apr;Mei;Jun;Jul;Ago;Sep;Okt;Nov;Des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Jumapili;Jumatatu;Jumanne;Jumatano;Alhamisi;Ijumaa;Jumamosi;</longDays>
+ <shortDays>Jpi;Jtt;Jnn;Jtn;Alh;Iju;Jmo;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Swahili</language>
+ <country>Tanzania</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januari;Februari;Machi;Aprili;Mei;Juni;Julai;Agosti;Septemba;Oktoba;Novemba;Desemba;</longMonths>
+ <shortMonths>Jan;Feb;Mac;Apr;Mei;Jun;Jul;Ago;Sep;Okt;Nov;Des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Jumapili;Jumatatu;Jumanne;Jumatano;Alhamisi;Ijumaa;Jumamosi;</longDays>
+ <shortDays>Jpi;Jtt;Jnn;Jtn;Alh;Iju;Jmo;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Swedish</language>
+ <country>Finland</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>fm</am>
+ <pm>em</pm>
+ <longDateFormat>EEEE 'den' d MMMM yyyy</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>'kl'. HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>januari;februari;mars;april;maj;juni;juli;augusti;september;oktober;november;december;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;aug;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>söndag;måndag;tisdag;onsdag;torsdag;fredag;lördag;</longDays>
+ <shortDays>sön;mån;tis;ons;tors;fre;lör;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;O;T;F;L;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Swedish</language>
+ <country>Sweden</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>fm</am>
+ <pm>em</pm>
+ <longDateFormat>EEEE 'den' d MMMM yyyy</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>'kl'. HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>januari;februari;mars;april;maj;juni;juli;augusti;september;oktober;november;december;</longMonths>
+ <shortMonths>jan;feb;mar;apr;maj;jun;jul;aug;sep;okt;nov;dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>söndag;måndag;tisdag;onsdag;torsdag;fredag;lördag;</longDays>
+ <shortDays>sön;mån;tis;ons;tors;fre;lör;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;O;T;F;L;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tajik</language>
+ <country>Tajikistan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Январ;Феврал;Март;Апрел;Май;Июн;Июл;Август;Сентябр;Октябр;Ноябр;Декабр;</longMonths>
+ <shortMonths>Янв;Фев;Мар;Апр;Май;Июн;Июл;Авг;Сен;Окт;Ноя;Дек;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Якшанбе;Душанбе;Сешанбе;Чоршанбе;Панҷшанбе;Ҷумъа;Шанбе;</longDays>
+ <shortDays>Яшб;Дшб;Сшб;Чшб;Пшб;Ҷмъ;Шнб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tamil</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>காலை</am>
+ <pm>மாலை</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-M-yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>ஜனவரி;பிப்ரவரி;மார்ச்;ஏப்ரல்;மே;ஜூன்;ஜூலை;ஆகஸ்ட்;செப்டம்பர்;அக்டோபர்;நவம்பர்;டிசம்பர்;</longMonths>
+ <shortMonths>ஜன.;பிப்.;மார்.;ஏப்.;மே;ஜூன்;ஜூலை;ஆக.;செப்.;அக்.;நவ.;டிச.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ஞாயிறு;திங்கள்;செவ்வாய்;புதன்;வியாழன்;வெள்ளி;சனி;</longDays>
+ <shortDays>ஞா;தி;செ;பு;வி;வெ;ச;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tatar</language>
+ <country>RussianFederation</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1;2;3;4;5;6;7;8;9;10;11;12;</longMonths>
+ <shortMonths>1;2;3;4;5;6;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Telugu</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>3174</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>పూర్వాహ్నం</am>
+ <pm>అపరాహ్నం</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd-MM-yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>జ;ఫి;మ;ఎ;మె;జు;జు;ఆ;సె;అ;న;డి;</standaloneNarrowMonths>
+ <longMonths>జనవరి;ఫిబ్రవరి;మార్చి;ఏప్రిల్;మే;జూన్;జూలై;ఆగస్టు;సెప్టెంబర్;అక్టోబర్;నవంబర్;డిసెంబర్;</longMonths>
+ <shortMonths>జనవరి;ఫిబ్రవరి;మార్చి;ఏప్రిల్;మే;జూన్;జూలై;ఆగస్టు;సెప్టెంబర్;అక్టోబర్;నవంబర్;డిసెంబర్;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ఆదివారం;సోమవారం;మంగళవారం;బుధవారం;గురువారం;శుక్రవారం;శనివారం;</longDays>
+ <shortDays>ఆది;సోమ;మంగళ;బుధ;గురు;శుక్ర;శని;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ఆ;2;సొ;భు;గు;శు;శ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Thai</language>
+ <country>Thailand</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ก่อนเที่ยง</am>
+ <pm>หลังเที่ยง</pm>
+ <longDateFormat>EEEEที่ d MMMM G yyyy</longDateFormat>
+ <shortDateFormat>d/M/yyyy</shortDateFormat>
+ <longTimeFormat>H นาฬิกา m นาที ss วินาที v</longTimeFormat>
+ <shortTimeFormat>H:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ม.ค.;ก.พ.;มี.ค.;เม.ย.;พ.ค.;มิ.ย.;ก.ค.;ส.ค.;ก.ย.;ต.ค.;พ.ย.;ธ.ค.;</standaloneNarrowMonths>
+ <longMonths>มกราคม;กุมภาพันธ์;มีนาคม;เมษายน;พฤษภาคม;มิถุนายน;กรกฎาคม;สิงหาคม;กันยายน;ตุลาคม;พฤศจิกายน;ธันวาคม;</longMonths>
+ <shortMonths>ม.ค.;ก.พ.;มี.ค.;เม.ย.;พ.ค.;มิ.ย.;ก.ค.;ส.ค.;ก.ย.;ต.ค.;พ.ย.;ธ.ค.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>วันอาทิตย์;วันจันทร์;วันอังคาร;วันพุธ;วันพฤหัสบดี;วันศุกร์;วันเสาร์;</longDays>
+ <shortDays>อา.;จ.;อ.;พ.;พฤ.;ศ.;ส.;</shortDays>
+ <narrowDays>;;;;พฤ;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>อ;จ;อ;พ;พ;ศ;ส;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tigrinya</language>
+ <country>Eritrea</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ንጉሆ ሰዓተ</am>
+ <pm>ድሕር ሰዓት</pm>
+ <longDateFormat>EEEE፡ dd MMMM መዓልቲ yyyy G</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ጃ;ፌ;ማ;ኤ;ሜ;ጁ;ጁ;ኦ;ሴ;ኦ;ኖ;ዲ;</standaloneNarrowMonths>
+ <longMonths>ጥሪ;ለካቲት;መጋቢት;ሚያዝያ;ግንቦት;ሰነ;ሓምለ;ነሓሰ;መስከረም;ጥቅምቲ;ሕዳር;ታሕሳስ;</longMonths>
+ <shortMonths>ጥሪ;ለካቲ;መጋቢ;ሚያዝ;ግንቦ;ሰነ;ሓምለ;ነሓሰ;መስከ;ጥቅም;ሕዳር;ታሕሳ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ሰንበት;ሰኑይ;ሰሉስ;ረቡዕ;ሓሙስ;ዓርቢ;ቀዳም;</longDays>
+ <shortDays>ሰንበ;ሰኑይ;ሰሉስ;ረቡዕ;ሓሙስ;ዓርቢ;ቀዳም;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ሰ;ሰ;ሠ;ረ;ኃ;ዓ;ቀ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tigrinya</language>
+ <country>Ethiopia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>ንጉሆ ሰዓተ</am>
+ <pm>ድሕር ሰዓት</pm>
+ <longDateFormat>EEEE፣ dd MMMM መዓልቲ yyyy G</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ጃ;ፌ;ማ;ኤ;ሜ;ጁ;ጁ;ኦ;ሴ;ኦ;ኖ;ዲ;</standaloneNarrowMonths>
+ <longMonths>ጃንዩወሪ;ፌብሩወሪ;ማርች;ኤፕረል;ሜይ;ጁን;ጁላይ;ኦገስት;ሴፕቴምበር;ኦክተውበር;ኖቬምበር;ዲሴምበር;</longMonths>
+ <shortMonths>ጃንዩ;ፌብሩ;ማርች;ኤፕረ;ሜይ;ጁን;ጁላይ;ኦገስ;ሴፕቴ;ኦክተ;ኖቬም;ዲሴም;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ሰንበት;ሰኑይ;ሠሉስ;ረቡዕ;ኃሙስ;ዓርቢ;ቀዳም;</longDays>
+ <shortDays>ሰንበ;ሰኑይ;ሠሉስ;ረቡዕ;ኃሙስ;ዓርቢ;ቀዳም;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ሰ;ሰ;ሠ;ረ;ኃ;ዓ;ቀ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tonga</language>
+ <country>Tonga</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd-MM-yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>S;F;M;E;M;S;S;A;S;O;N;T;</standaloneNarrowMonths>
+ <longMonths>Sānuali;Fēpueli;Maʻasi;ʻEpeleli;Mē;Sune;Siulai;ʻAokosi;Sēpitema;ʻOkatopa;Nōvema;Tisema;</longMonths>
+ <shortMonths>Sān;Fēp;Maʻa;ʻEpe;Mē;Sun;Siu;ʻAok;Sēp;ʻOka;Nōv;Tis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sāpate;Mōnite;Tusite;Pulelulu;Tuʻapulelulu;Falaite;Tokonaki;</longDays>
+ <shortDays>Sāp;Mōn;Tus;Pul;Tuʻa;Fal;Tok;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;P;T;F;T;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tsonga</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Sunguti;Nyenyenyani;Nyenyankulu;Dzivamisoko;Mudyaxihi;Khotavuxika;Mawuwani;Mhawuri;Ndzhati;Nhlangula;Hukuri;N'wendzamhala;</longMonths>
+ <shortMonths>Sun;Yan;Kul;Dzi;Mud;Kho;Maw;Mha;Ndz;Nhl;Huk;N'w;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonto;Musumbhunuku;Ravumbirhi;Ravunharhu;Ravumune;Ravuntlhanu;Mugqivela;</longDays>
+ <shortDays>Son;Mus;Bir;Har;Ne;Tlh;Mug;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Turkish</language>
+ <country>Turkey</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>AM</am>
+ <pm>PM</pm>
+ <longDateFormat>dd MMMM yyyy EEEE</longDateFormat>
+ <shortDateFormat>dd.MM.yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>O;Ş;M;N;M;H;T;A;E;E;K;A;</standaloneNarrowMonths>
+ <longMonths>Ocak;Şubat;Mart;Nisan;Mayıs;Haziran;Temmuz;Ağustos;Eylül;Ekim;Kasım;Aralık;</longMonths>
+ <shortMonths>Oca;Şub;Mar;Nis;May;Haz;Tem;Ağu;Eyl;Eki;Kas;Ara;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Pazar;Pazartesi;Salı;Çarşamba;Perşembe;Cuma;Cumartesi;</longDays>
+ <shortDays>Paz;Pzt;Sal;Çar;Per;Cum;Cmt;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>P;P;S;Ç;P;C;C;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Uigur</language>
+ <country>China</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1;2;3;4;5;6;7;8;9;10;11;12;</longMonths>
+ <shortMonths>1;2;3;4;5;6;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Ukrainian</language>
+ <country>Ukraine</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>дп</am>
+ <pm>пп</pm>
+ <longDateFormat>EEEE, d MMMM yyyy 'р'.</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>Січень;Лютий;Березень;Квітень;Травень;Червень;Липень;Серпень;Вересень;Жовтень;Листопад;Грудень;</standaloneLongMonths>
+ <standaloneShortMonths>Січ;Лют;Бер;Кві;Тра;Чер;Лип;Сер;Вер;Жов;Лис;Гру;</standaloneShortMonths>
+ <standaloneNarrowMonths>С;Л;Б;К;Т;Ч;Л;С;В;Ж;Л;Г;</standaloneNarrowMonths>
+ <longMonths>січня;лютого;березня;квітня;травня;червня;липня;серпня;вересня;жовтня;листопада;грудня;</longMonths>
+ <shortMonths>січ.;лют.;бер.;квіт.;трав.;черв.;лип.;серп.;вер.;жовт.;лист.;груд.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Неділя;Понеділок;Вівторок;Середа;Четвер;Пʼятниця;Субота;</longDays>
+ <shortDays>Нд;Пн;Вт;Ср;Чт;Пт;Сб;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Н;П;В;С;Ч;П;С;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Urdu</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>1602</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, d, MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ج;ف;م;ا;م;ج;ج;ا;س;ا;ن;د;</standaloneNarrowMonths>
+ <longMonths>جنوری;فروری;مار چ;اپريل;مئ;جون;جولائ;اگست;ستمبر;اکتوبر;نومبر;دسمبر;</longMonths>
+ <shortMonths>;;;;;;;;;;;;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>اتوار;پير;منگل;بده;جمعرات;جمعہ;ہفتہ;</longDays>
+ <shortDays>;;;;;;;</shortDays>
+ <narrowDays>ا;پ;م;ب;ج;ج;ہ;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Urdu</language>
+ <country>Pakistan</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>1602</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, d, MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ج;ف;م;ا;م;ج;ج;ا;س;ا;ن;د;</standaloneNarrowMonths>
+ <longMonths>جنوری;فروری;مار چ;اپريل;مئ;جون;جولائ;اگست;ستمبر;اکتوبر;نومبر;دسمبر;</longMonths>
+ <shortMonths>;;;;;;;;;;;;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>اتوار;پير;منگل;بده;جمعرات;جمعہ;ہفتہ;</longDays>
+ <shortDays>;;;;;;;</shortDays>
+ <narrowDays>ا;پ;م;ب;ج;ج;ہ;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Uzbek</language>
+ <country>Afghanistan</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Я;Ф;М;А;М;И;И;А;С;О;Н;Д;</standaloneNarrowMonths>
+ <longMonths>Муҳаррам;Сафар;Рабиул-аввал;Рабиул-охир;Жумодиул-уло;Жумодиул-ухро;Ражаб;Шаъбон;Рамазон;Шаввол;Зил-қаъда;Зил-ҳижжа;</longMonths>
+ <shortMonths>Янв;Фев;Мар;Апр;Май;Июн;Июл;Авг;Сен;Окт;Ноя;Дек;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>якшанба;душанба;сешанба;чоршанба;пайшанба;жума;шанба;</longDays>
+ <shortDays>Якш;Душ;Сеш;Чор;Пай;Жум;Шан;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Я;Д;С;Ч;П;Ж;Ш;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Uzbek</language>
+ <country>Uzbekistan</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Я;Ф;М;А;М;И;И;А;С;О;Н;Д;</standaloneNarrowMonths>
+ <longMonths>Муҳаррам;Сафар;Рабиул-аввал;Рабиул-охир;Жумодиул-уло;Жумодиул-ухро;Ражаб;Шаъбон;Рамазон;Шаввол;Зил-қаъда;Зил-ҳижжа;</longMonths>
+ <shortMonths>Янв;Фев;Мар;Апр;Май;Июн;Июл;Авг;Сен;Окт;Ноя;Дек;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>якшанба;душанба;сешанба;чоршанба;пайшанба;жума;шанба;</longDays>
+ <shortDays>Якш;Душ;Сеш;Чор;Пай;Жум;Шан;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>Я;Д;С;Ч;П;Ж;Ш;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Vietnamese</language>
+ <country>VietNam</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>SA</am>
+ <pm>CH</pm>
+ <longDateFormat>EEEE, 'ngày' dd MMMM 'năm' yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>tháng một;tháng hai;tháng ba;tháng tư;tháng năm;tháng sáu;tháng bảy;tháng tám;tháng chín;tháng mười;tháng mười một;tháng mười hai;</longMonths>
+ <shortMonths>thg 1;thg 2;thg 3;thg 4;thg 5;thg 6;thg 7;thg 8;thg 9;thg 10;thg 11;thg 12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Chủ nhật;Thứ hai;Thứ ba;Thứ tư;Thứ năm;Thứ sáu;Thứ bảy;</longDays>
+ <shortDays>CN;Th 2;Th 3;Th 4;Th 5;Th 6;Th 7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Welsh</language>
+ <country>UnitedKingdom</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;Gorffennaf;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;Chwe;Maw;Ebr;;;Gor;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>I;C;M;E;M;M;G;A;M;H;T;R;</standaloneNarrowMonths>
+ <longMonths>Ionawr;Chwefror;Mawrth;Ebrill;Mai;Mehefin;Gorffenaf;Awst;Medi;Hydref;Tachwedd;Rhagfyr;</longMonths>
+ <shortMonths>Ion;Chwef;Mawrth;Ebrill;Mai;Meh;Gorff;Awst;Medi;Hyd;Tach;Rhag;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Dydd Sul;Dydd Llun;Dydd Mawrth;Dydd Mercher;Dydd Iau;Dydd Gwener;Dydd Sadwrn;</longDays>
+ <shortDays>Sul;Llun;Maw;Mer;Iau;Gwen;Sad;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;Gwe;;</standaloneShortDays>
+ <standaloneNarrowDays>S;L;M;M;I;G;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Wolof</language>
+ <country>Senegal</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1;2;3;4;5;6;7;8;9;10;11;12;</longMonths>
+ <shortMonths>1;2;3;4;5;6;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Xhosa</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Janyuwari;Februwari;Matshi;Epreli;Meyi;Juni;Julayi;Agasti;Septemba;Okthoba;Novemba;Disemba;</longMonths>
+ <shortMonths>Jan;Feb;Mat;Epr;Mey;Jun;Jul;Aga;Sep;Okt;Nov;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Cawe;Mvulo;Lwesibini;Lwesithathu;Lwesine;Lwesihlanu;Mgqibelo;</longDays>
+ <shortDays>Caw;Mvu;Bin;Tha;Sin;Hla;Mgq;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Yoruba</language>
+ <country>Nigeria</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>àárọ̀</am>
+ <pm>ọ̀sán</pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Oṣù Ṣẹ́rẹ́;Oṣù Èrèlè;Oṣù Ẹrẹ̀nà;Oṣù Ìgbé;Oṣù Ẹ̀bibi;Oṣù Òkúdu;Oṣù Agẹmọ;Oṣù Ògún;Oṣù Owewe;Oṣù Ọ̀wàrà;Oṣù Bélú;Oṣù Ọ̀pẹ̀;</longMonths>
+ <shortMonths>Ṣẹ́rẹ́;Èrèlè;Ẹrẹ̀nà;Ìgbé;Ẹ̀bibi;Òkúdu;Agẹmọ;Ògún;Owewe;Ọ̀wàrà;Bélú;Ọ̀pẹ̀;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Ọjọ́ Àìkú;Ọjọ́ Ajé;Ọjọ́ Ìsẹ́gun;Ọjọ́rú;Ọjọ́ Àṣẹ̀ṣẹ̀dáiyé;Ọjọ́ Ẹtì;Ọjọ́ Àbámẹ́ta;</longDays>
+ <shortDays>Àìkú;Ajé;Ìsẹ́gun;Ọjọ́rú;Àṣẹ̀ṣẹ̀dáiyé;Ẹtì;Àbámẹ́ta;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Zulu</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>yyyy-MM-dd</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>uJanuwari;uFebruwari;uMashi;u-Apreli;uMeyi;uJuni;uJulayi;uAgasti;uSepthemba;u-Okthoba;uNovemba;uDisemba;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Januwari;Februwari;Mashi;Apreli;Meyi;Juni;Julayi;Agasti;Septhemba;Okthoba;Novemba;Disemba;</longMonths>
+ <shortMonths>Jan;Feb;Mas;Apr;Mey;Jun;Jul;Aga;Sep;Okt;Nov;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sonto;Msombuluko;Lwesibili;Lwesithathu;uLwesine;Lwesihlanu;Mgqibelo;</longDays>
+ <shortDays>Son;Mso;Bil;Tha;Sin;Hla;Mgq;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;B;T;S;H;M;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Nynorsk</language>
+ <country>Norway</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>8722</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>formiddag</am>
+ <pm>ettermiddag</pm>
+ <longDateFormat>EEEE d. MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd.MM.yy</shortDateFormat>
+ <longTimeFormat>'kl'. HH.mm.ss v</longTimeFormat>
+ <shortTimeFormat>HH.mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>januar;februar;mars;april;mai;juni;juli;august;september;oktober;november;desember;</longMonths>
+ <shortMonths>jan;feb;mar;apr;mai;jun;jul;aug;sep;okt;nov;des;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>søndag;måndag;tysdag;onsdag;torsdag;fredag;laurdag;</longDays>
+ <shortDays>sø.;må;ty;on;to;fr;la;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;må.;;;;;la.;</standaloneShortDays>
+ <standaloneNarrowDays>S;M;T;O;T;F;L;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Bosnian</language>
+ <country>BosniaAndHerzegowina</country>
+ <decimal>44</decimal>
+ <group>46</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januar;Februar;Mart;April;Maj;Juni;Juli;Avgust;Septembar;Oktobar;Novembar;Decembar;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;Maj;Jun;Jul;Avg;Sep;Okt;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Nedjelja;Ponedjeljak;Utorak;Srijeda;Četvrtak;Petak;Subota;</longDays>
+ <shortDays>Ned;Pon;Uto;Sri;Čet;Pet;Sub;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Divehi</language>
+ <country>Maldives</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>1548</list>
+ <percent>37</percent>
+ <zero>1632</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-M-yy</shortDateFormat>
+ <longTimeFormat>hh:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>hh:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>1;2;3;4;5;6;7;8;9;10;11;12;</longMonths>
+ <shortMonths>1;2;3;4;5;6;7;8;9;10;11;12;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Manx</language>
+ <country>UnitedKingdom</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE dd MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Jerrey-geuree;Toshiaght-arree;Mayrnt;Averil;Boaldyn;Mean-souree;Jerrey-souree;Luanistyn;Mean-fouyir;Jerrey-fouyir;Mee Houney;Mee ny Nollick;</longMonths>
+ <shortMonths>J-guer;T-arree;Mayrnt;Avrril;Boaldyn;M-souree;J-souree;Luanistyn;M-fouyir;J-fouyir;M.Houney;M.Nollick;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Jedoonee;Jelhein;Jemayrt;Jercean;Jerdein;Jeheiney;Jesarn;</longDays>
+ <shortDays>Jed;Jel;Jem;Jerc;Jerd;Jeh;Jes;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Cornish</language>
+ <country>UnitedKingdom</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>a.m.</am>
+ <pm>p.m.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Mys Genver;Mys Whevrel;Mys Merth;Mys Ebrel;Mys Me;Mys Efan;Mys Gortheren;Mye Est;Mys Gwyngala;Mys Hedra;Mys Du;Mys Kevardhu;</longMonths>
+ <shortMonths>Gen;Whe;Mer;Ebr;Me;Efn;Gor;Est;Gwn;Hed;Du;Kev;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>De Sul;De Lun;De Merth;De Merher;De Yow;De Gwener;De Sadorn;</longDays>
+ <shortDays>Sul;Lun;Mth;Mhr;Yow;Gwe;Sad;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Akan</language>
+ <country>Ghana</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Sanda-Ɔpɛpɔn;Kwakwar-Ɔgyefuo;Ebɔw-Ɔbenem;Ebɔbira-Oforisuo;Esusow Aketseaba-Kɔtɔnimba;Obirade-Ayɛwohomumu;Ayɛwoho-Kitawonsa;Difuu-Ɔsandaa;Fankwa-Ɛbɔ;Ɔbɛsɛ-Ahinime;Ɔberɛfɛw-Obubuo;Mumu-Ɔpɛnimba;</longMonths>
+ <shortMonths>S-Ɔ;K-Ɔ;E-Ɔ;E-O;E-K;O-A;A-K;D-Ɔ;F-Ɛ;Ɔ-A;Ɔ-O;M-Ɔ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Kwesida;Dwowda;Benada;Wukuda;Yawda;Fida;Memeneda;</longDays>
+ <shortDays>Kwe;Dwo;Ben;Wuk;Yaw;Fia;Mem;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>K;D;B;W;Y;F;M;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Konkani</language>
+ <country>India</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am>म.पू.</am>
+ <pm>म.नं.</pm>
+ <longDateFormat>EEEE d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d-M-yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>जानेवारी;फेब्रुवारी;मार्च;एप्रिल;मे;जून;जुलै;ओगस्ट;सेप्टेंबर;ओक्टोबर;नोव्हेंबर;डिसेंबर;</longMonths>
+ <shortMonths>जानेवारी;फेबृवारी;मार्च;एप्रिल;मे;जून;जुलै;ओगस्ट;सेप्टेंबर;ओक्टोबर;नोव्हेंबर;डिसेंबर;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>आदित्यवार;सोमवार;मंगळार;बुधवार;गुरुवार;शुक्रवार;शनिवार;</longDays>
+ <shortDays>रवि;सोम;मंगळ;बुध;गुरु;शुक्र;शनि;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Ga</language>
+ <country>Ghana</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Aharabata;Oflo;Ochokrikri;Abeibee;Agbeinaa;Otukwadan;Maawe;Manyawale;Gbo;Anton;Alemle;Afuabee;</longMonths>
+ <shortMonths>Aha;Ofl;Och;Abe;Agb;Otu;Maa;Man;Gbo;Ant;Ale;Afu;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Hogbaa;Dzu;Dzufo;Sho;Soo;Sohaa;Ho;</longDays>
+ <shortDays>Ho;Dzu;Dzf;Sho;Soo;Soh;Ho;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Igbo</language>
+ <country>Nigeria</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Jenụwarị;Febrụwarị;Maachị;Eprel;Mee;Juun;Julaị;Ọgọọst;Septemba;Ọktoba;Novemba;Disemba;</longMonths>
+ <shortMonths>Jen;Feb;Maa;Epr;Mee;Juu;Jul;Ọgọ;Sep;Ọkt;Nov;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Mbọsị Ụka;Mọnde;Tiuzdee;Wenezdee;Tọọzdee;Fraịdee;Satọdee;</longDays>
+ <shortDays>Ụka;Mọn;Tiu;Wen;Tọọ;Fraị;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Kamba</language>
+ <country>Kenya</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Mwei wa mbee;Mwei wa keli;Mwei wa katatu;Mwei wa kanne;Mwei wa katano;Mwei wa thanthatu;Mwei wa muonza;Mwei wa nyanya;Mwei wa kenda;Mwei wa ikumi;Mwei wa ikumi na imwe;Mwei wa ikumi na ili;</longMonths>
+ <shortMonths>Mwei wa mbee;Mwei wa keli;Mwei wa katatu;Mwei wa kanne;Mwei wa katano;Mwei wa thanthatu;Mwei wa muonza;Mwei wa nyanya;Mwei wa kenda;Mwei wa ikumi;Mwei wa ikumi na imwe;Mwei wa ikumi na ili;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Jumapili;Jumatatu;Jumanne;Jumatano;Alamisi;Ijumaa;Jumamosi;</longDays>
+ <shortDays>Jpl;Jtt;Jnn;Jtn;Alh;Ijm;Jms;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Syriac</language>
+ <country>SyrianArabRepublic</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>dd MMMM, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yyyy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>܏ܟܢ ܏ܒ;ܫܒܛ;ܐܕܪ;ܢܝܣܢ;ܐܝܪ;ܚܙܝܪܢ;ܬܡܘܙ;ܐܒ;ܐܝܠܘܠ;܏ܬܫ ܏ܐ;܏ܬܫ ܏ܒ;܏ܟܢ ܏ܐ;</longMonths>
+ <shortMonths>܏ܟܢ ܏ܒ;ܫܒܛ;ܐܕܪ;ܢܝܣܢ;ܐܝܪ;ܚܙܝܪܢ;ܬܡܘܙ;ܐܒ;ܐܝܠܘܠ;܏ܬܫ ܏ܐ;܏ܬܫ ܏ܒ;܏ܟܢ ܏ܐ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>1;2;3;4;5;6;7;</longDays>
+ <shortDays>1;2;3;4;5;6;7;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Blin</language>
+ <country>Eritrea</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE፡ dd MMMM ግርጋ yyyy G</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ል;ካ;ክ;ፋ;ክ;ም;ኰ;ማ;ያ;መ;ም;ተ;</standaloneNarrowMonths>
+ <longMonths>ልደትሪ;ካብኽብቲ;ክብላ;ፋጅኺሪ;ክቢቅሪ;ምኪኤል ትጟኒሪ;ኰርኩ;ማርያም ትሪ;ያኸኒ መሳቅለሪ;መተሉ;ምኪኤል መሽወሪ;ተሕሳስሪ;</longMonths>
+ <shortMonths>ልደት;ካብኽ;ክብላ;ፋጅኺ;ክቢቅ;ም/ት;ኰር;ማርያ;ያኸኒ;መተሉ;ም/ም;ተሕሳ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ሰንበር ቅዳዅ;ሰኑ;ሰሊጝ;ለጓ ወሪ ለብዋ;ኣምድ;ኣርብ;ሰንበር ሽጓዅ;</longDays>
+ <shortDays>ሰ/ቅ;ሰኑ;ሰሊጝ;ለጓ;ኣምድ;ኣርብ;ሰ/ሽ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ሰ;ሰ;ሰ;ለ;ኣ;ኣ;ሰ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Geez</language>
+ <country>Eritrea</country>
+ <decimal>46</decimal>
+ <group>4808</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE፥ dd MMMM መዓልት yyyy G</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ጠ;ከ;መ;አ;ግ;ሠ;ሐ;ነ;ከ;ጠ;ኀ;ኀ;</standaloneNarrowMonths>
+ <longMonths>ጠሐረ;ከተተ;መገበ;አኀዘ;ግንባት;ሠንየ;ሐመለ;ነሐሰ;ከረመ;ጠቀመ;ኀደረ;ኀሠሠ;</longMonths>
+ <shortMonths>ጠሐረ;ከተተ;መገበ;አኀዘ;ግንባ;ሠንየ;ሐመለ;ነሐሰ;ከረመ;ጠቀመ;ኀደረ;ኀሠሠ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>እኁድ;ሰኑይ;ሠሉስ;ራብዕ;ሐሙስ;ዓርበ;ቀዳሚት;</longDays>
+ <shortDays>እኁድ;ሰኑይ;ሠሉስ;ራብዕ;ሐሙስ;ዓርበ;ቀዳሚ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>እ;ሰ;ሠ;ራ;ሐ;ዓ;ቀ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Geez</language>
+ <country>Ethiopia</country>
+ <decimal>46</decimal>
+ <group>4808</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE፥ dd MMMM መዓልት yyyy G</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ጠ;ከ;መ;አ;ግ;ሠ;ሐ;ነ;ከ;ጠ;ኀ;ኀ;</standaloneNarrowMonths>
+ <longMonths>ጠሐረ;ከተተ;መገበ;አኀዘ;ግንባት;ሠንየ;ሐመለ;ነሐሰ;ከረመ;ጠቀመ;ኀደረ;ኀሠሠ;</longMonths>
+ <shortMonths>ጠሐረ;ከተተ;መገበ;አኀዘ;ግንባ;ሠንየ;ሐመለ;ነሐሰ;ከረመ;ጠቀመ;ኀደረ;ኀሠሠ;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>እኁድ;ሰኑይ;ሠሉስ;ራብዕ;ሐሙስ;ዓርበ;ቀዳሚት;</longDays>
+ <shortDays>እኁድ;ሰኑይ;ሠሉስ;ራብዕ;ሐሙስ;ዓርበ;ቀዳሚ;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>እ;ሰ;ሠ;ራ;ሐ;ዓ;ቀ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Koro</language>
+ <country>IvoryCoast</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Fai Weyene;Fai Fani;Fai Tataka;Fai Nangra;Fai Tuyo;Fai Tsoyi;Fai Tafaka;Fai Warachi;Fai Kunobok;Fai Bansok;Fai Kom;Fai Sauk;</longMonths>
+ <shortMonths>Wey;Fan;Tat;Nan;Tuy;Tso;Taf;War;Kun;Ban;Kom;Sau;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lahadi;Je-Kubacha;Je-Gbai;Tansati;Je-Yei;Je-Koye;Sati;</longDays>
+ <shortDays>Lah;Kub;Gba;Tan;Yei;Koy;Sat;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Sidamo</language>
+ <country>Ethiopia</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, MMMM dd, yyyy</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>J;F;M;A;M;J;J;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>January;February;March;April;May;June;July;August;September;October;November;December;</longMonths>
+ <shortMonths>Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Sambata;Sanyo;Maakisanyo;Roowe;Hamuse;Arbe;Qidaame;</longDays>
+ <shortDays>Sam;San;Mak;Row;Ham;Arb;Qid;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>S;S;M;R;H;A;Q;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Atsam</language>
+ <country>Nigeria</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Pen Dyon;Pen Ba'a;Pen Atat;Pen Anas;Pen Atyon;Pen Achirim;Pen Atariba;Pen Awurr;Pen Shadon;Pen Shakur;Pen Kur Naba;Pen Kur Natat;</longMonths>
+ <shortMonths>Dyon;Baa;Atat;Anas;Atyo;Achi;Atar;Awur;Shad;Shak;Naba;Nata;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Wai Yoka Bawai;Wai Tunga;Toki Gitung;Tsam Kasuwa;Wai Na Nas;Wai Na Tiyon;Wai Na Chirim;</longDays>
+ <shortDays>Yok;Tung;T. Tung;Tsan;Nas;Nat;Chir;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tigre</language>
+ <country>Eritrea</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE፡ dd MMMM ዮም yyyy G</longDateFormat>
+ <shortDateFormat>dd/MM/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>ጃ;ፌ;ማ;ኤ;ሜ;ጁ;ጁ;ኦ;ሴ;ኦ;ኖ;ዲ;</standaloneNarrowMonths>
+ <longMonths>ጃንዩወሪ;ፌብሩወሪ;ማርች;ኤፕረል;ሜይ;ጁን;ጁላይ;ኦገስት;ሴፕቴምበር;ኦክተውበር;ኖቬምበር;ዲሴምበር;</longMonths>
+ <shortMonths>ጃንዩ;ፌብሩ;ማርች;ኤፕረ;ሜይ;ጁን;ጁላይ;ኦገስ;ሴፕቴ;ኦክተ;ኖቬም;ዲሴም;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>ሰንበት ዓባይ;ሰኖ;ታላሸኖ;ኣረርባዓ;ከሚሽ;ጅምዓት;ሰንበት ንኢሽ;</longDays>
+ <shortDays>ሰ/ዓ;ሰኖ;ታላሸ;ኣረር;ከሚሽ;ጅምዓ;ሰ/ን;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>ሰ;ሰ;ታ;ኣ;ከ;ጅ;ሰ;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Jju</language>
+ <country>Nigeria</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Hywan A̱yrnig;Hywan A̱hwa;Hywan A̱tat;Hywan A̱naai;Hywan A̱pfwon;Hywan A̱kitat;Hywan A̱tyirin;Hywan A̱ninai;Hywan A̱kumviriyin;Hywan Swak;Hywan Swak B'a̱yrnig;Hywan Swak B'a̱hwa;</longMonths>
+ <shortMonths>A̱yr;A̱hw;A̱ta;A̱na;A̱pf;A̱ki;A̱ty;A̱ni;A̱ku;Swa;Sby;Sbh;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Ladi;Lintani;Talata;Larba;Lamit;Juma;Asabar;</longDays>
+ <shortDays>Lad;Lin;Tal;Lar;Lam;Jum;Asa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Friulian</language>
+ <country>Italy</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE d 'di' MMMM 'dal' yyyy</longDateFormat>
+ <shortDateFormat>d/MM/yy</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>Z;F;M;A;M;J;L;A;S;O;N;D;</standaloneNarrowMonths>
+ <longMonths>Zenâr;Fevrâr;Març;Avrîl;Mai;Jugn;Lui;Avost;Setembar;Otubar;Novembar;Dicembar;</longMonths>
+ <shortMonths>Zen;Fev;Mar;Avr;Mai;Jug;Lui;Avo;Set;Otu;Nov;Dic;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>domenie;lunis;martars;miercus;joibe;vinars;sabide;</longDays>
+ <shortDays>dom;lun;mar;mie;joi;vin;sab;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>D;L;M;M;J;V;S;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Venda</language>
+ <country>SouthAfrica</country>
+ <decimal>44</decimal>
+ <group>160</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Phando;Luhuhi;Ṱhafamuhwe;Lambamai;Shundunthule;Fulwi;Fulwana;Ṱhangule;Khubvumedzi;Tshimedzi;Ḽara;Nyendavhusiku;</longMonths>
+ <shortMonths>Pha;Luh;Ṱha;Lam;Shu;Lwi;Lwa;Ṱha;Khu;Tsh;Ḽar;Nye;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Swondaha;Musumbuluwo;Ḽavhuvhili;Ḽavhuraru;Ḽavhuṋa;Ḽavhuṱanu;Mugivhela;</longDays>
+ <shortDays>Swo;Mus;Vhi;Rar;Ṋa;Ṱan;Mug;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Ewe</language>
+ <country>Ghana</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>D;D;T;A;D;M;S;D;A;K;A;D;</standaloneNarrowMonths>
+ <longMonths>Dzove;Dzodze;Tedoxe;Afɔfiɛ;Dama;Masa;Siamlɔm;Deasiamime;Anyɔnyɔ;Kele;Adeɛmekpɔxe;Dzome;</longMonths>
+ <shortMonths>Dzv;Dzd;Ted;Afɔ;Dam;Mas;Sia;Dea;Any;Kel;Ade;Dzm;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Kɔsiɖa;Dzoɖa;Braɖa;Kuɖa;Yawoɖa;Fiɖa;Memleɖa;</longDays>
+ <shortDays>Kɔs Kwe;Dzo;Bra;Kuɖ;Yaw;Fiɖ;Mem;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>K;D;B;K;Y;F;M;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Ewe</language>
+ <country>Togo</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>D;D;T;A;D;M;S;D;A;K;A;D;</standaloneNarrowMonths>
+ <longMonths>Dzove;Dzodze;Tedoxe;Afɔfiɛ;Dama;Masa;Siamlɔm;Deasiamime;Anyɔnyɔ;Kele;Adeɛmekpɔxe;Dzome;</longMonths>
+ <shortMonths>Dzv;Dzd;Ted;Afɔ;Dam;Mas;Sia;Dea;Any;Kel;Ade;Dzm;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Kɔsiɖa;Dzoɖa;Braɖa;Kuɖa;Yawoɖa;Fiɖa;Memleɖa;</longDays>
+ <shortDays>Kɔs Kwe;Dzo;Bra;Kuɖ;Yaw;Fiɖ;Mem;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>K;D;B;K;Y;F;M;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Hawaiian</language>
+ <country>UnitedStates</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, d MMMM yyyy</longDateFormat>
+ <shortDateFormat>d/M/yy</shortDateFormat>
+ <longTimeFormat>h:mm:ss a v</longTimeFormat>
+ <shortTimeFormat>h:mm a</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Ianuali;Pepeluali;Malaki;ʻApelila;Mei;Iune;Iulai;ʻAukake;Kepakemapa;ʻOkakopa;Nowemapa;Kekemapa;</longMonths>
+ <shortMonths>Ian.;Pep.;Mal.;ʻAp.;Mei;Iun.;Iul.;ʻAu.;Kep.;ʻOk.;Now.;Kek.;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lāpule;Poʻakahi;Poʻalua;Poʻakolu;Poʻahā;Poʻalima;Poʻaono;</longDays>
+ <shortDays>LP;P1;P2;P3;P4;P5;P6;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Tyap</language>
+ <country>Nigeria</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Zwat Juwung;Zwat Swiyang;Zwat Tsat;Zwat Nyai;Zwat Tswon;Zwat Ataah;Zwat Anatat;Zwat Arinai;Zwat Akubunyung;Zwat Swag;Zwat Mangjuwang;Zwat Swag-Ma-Suyang;</longMonths>
+ <shortMonths>Juw;Swi;Tsa;Nya;Tsw;Ata;Ana;Ari;Aku;Swa;Man;Mas;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Ladi;Tanii;Talata;Larba;Lamit;Juma;Asabat;</longDays>
+ <shortDays>Lad;Tan;Tal;Lar;Lam;Jum;Asa;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ <locale>
+ <language>Chewa</language>
+ <country>Malawi</country>
+ <decimal>46</decimal>
+ <group>44</group>
+ <list>59</list>
+ <percent>37</percent>
+ <zero>48</zero>
+ <minus>45</minus>
+ <plus>43</plus>
+ <exp>101</exp>
+ <am></am>
+ <pm></pm>
+ <longDateFormat>EEEE, yyyy MMMM dd</longDateFormat>
+ <shortDateFormat>yy/MM/dd</shortDateFormat>
+ <longTimeFormat>HH:mm:ss v</longTimeFormat>
+ <shortTimeFormat>HH:mm</shortTimeFormat>
+ <standaloneLongMonths>;;;;;;;;;;;;</standaloneLongMonths>
+ <standaloneShortMonths>;;;;;;;;;;;;</standaloneShortMonths>
+ <standaloneNarrowMonths>1;2;3;4;5;6;7;8;9;10;11;12;</standaloneNarrowMonths>
+ <longMonths>Januwale;Febuluwale;Malichi;Epulo;Mei;Juni;Julai;Ogasiti;Seputemba;Okutoba;Novemba;Disemba;</longMonths>
+ <shortMonths>Jan;Feb;Mal;Epu;Mei;Jun;Jul;Oga;Sep;Oku;Nov;Dis;</shortMonths>
+ <narrowMonths>;;;;;;;;;;;;</narrowMonths>
+ <longDays>Lamulungu;Lolemba;Lachiwiri;Lachitatu;Lachinayi;Lachisanu;Loweruka;</longDays>
+ <shortDays>Mul;Lem;Wir;Tat;Nai;San;Wer;</shortDays>
+ <narrowDays>;;;;;;;</narrowDays>
+ <standaloneLongDays>;;;;;;;</standaloneLongDays>
+ <standaloneShortDays>;;;;;;;</standaloneShortDays>
+ <standaloneNarrowDays>1;2;3;4;5;6;7;</standaloneNarrowDays>
+ </locale>
+ </localeList>
+</localeDatabase>
diff --git a/util/local_database/qlocalexml2cpp.py b/util/local_database/qlocalexml2cpp.py
new file mode 100755
index 0000000000..a9abe2267b
--- /dev/null
+++ b/util/local_database/qlocalexml2cpp.py
@@ -0,0 +1,503 @@
+#! /usr/bin/python
+
+import sys
+import xml.dom.minidom
+
+def check_static_char_array_length(name, array):
+ # some compilers like VC6 doesn't allow static arrays more than 64K bytes size.
+ size = reduce(lambda x, y: x+len(escapedString(y)), array, 0)
+ if size > 65535:
+ print "\n\n\n#error Array %s is too long! " % name
+ sys.stderr.write("\n\n\nERROR: the content of the array '%s' is too long: %d > 65535 " % (name, size))
+ sys.exit(1)
+
+def wrap_list(lst):
+ def split(lst, size):
+ for i in range(len(lst)/size+1):
+ yield lst[i*size:(i+1)*size]
+ return ",\n".join(map(lambda x: ", ".join(x), split(lst, 20)))
+
+def firstChildElt(parent, name):
+ child = parent.firstChild
+ while child:
+ if child.nodeType == parent.ELEMENT_NODE \
+ and (not name or child.nodeName == name):
+ return child
+ child = child.nextSibling
+ return False
+
+def nextSiblingElt(sibling, name):
+ sib = sibling.nextSibling
+ while sib:
+ if sib.nodeType == sibling.ELEMENT_NODE \
+ and (not name or sib.nodeName == name):
+ return sib
+ sib = sib.nextSibling
+ return False
+
+def eltText(elt):
+ result = ""
+ child = elt.firstChild
+ while child:
+ if child.nodeType == elt.TEXT_NODE:
+ if result:
+ result += " "
+ result += child.nodeValue
+ child = child.nextSibling
+ return result
+
+def loadLanguageMap(doc):
+ result = {}
+
+ language_list_elt = firstChildElt(doc.documentElement, "languageList")
+ language_elt = firstChildElt(language_list_elt, "language")
+ while language_elt:
+ language_id = int(eltText(firstChildElt(language_elt, "id")))
+ language_name = eltText(firstChildElt(language_elt, "name"))
+ language_code = eltText(firstChildElt(language_elt, "code"))
+ result[language_id] = (language_name, language_code)
+ language_elt = nextSiblingElt(language_elt, "language")
+
+ return result
+
+def loadCountryMap(doc):
+ result = {}
+
+ country_list_elt = firstChildElt(doc.documentElement, "countryList")
+ country_elt = firstChildElt(country_list_elt, "country")
+ while country_elt:
+ country_id = int(eltText(firstChildElt(country_elt, "id")))
+ country_name = eltText(firstChildElt(country_elt, "name"))
+ country_code = eltText(firstChildElt(country_elt, "code"))
+ result[country_id] = (country_name, country_code)
+ country_elt = nextSiblingElt(country_elt, "country")
+
+ return result
+
+def loadDefaultMap(doc):
+ result = {}
+
+ list_elt = firstChildElt(doc.documentElement, "defaultCountryList")
+ elt = firstChildElt(list_elt, "defaultCountry")
+ while elt:
+ country = eltText(firstChildElt(elt, "country"));
+ language = eltText(firstChildElt(elt, "language"));
+ result[language] = country;
+ elt = nextSiblingElt(elt, "defaultCountry");
+ return result
+
+def fixedCountryName(name, dupes):
+ if name in dupes:
+ return name + "Country"
+ return name
+
+def fixedLanguageName(name, dupes):
+ if name in dupes:
+ return name + "Language"
+ return name
+
+def findDupes(country_map, language_map):
+ country_set = set([ v[0] for a, v in country_map.iteritems() ])
+ language_set = set([ v[0] for a, v in language_map.iteritems() ])
+ return country_set & language_set
+
+def languageNameToId(name, language_map):
+ for key in language_map.keys():
+ if language_map[key][0] == name:
+ return key
+ return -1
+
+def countryNameToId(name, country_map):
+ for key in country_map.keys():
+ if country_map[key][0] == name:
+ return key
+ return -1
+
+def convertFormat(format):
+ result = ""
+ i = 0
+ while i < len(format):
+ if format[i] == "'":
+ result += "'"
+ i += 1
+ while i < len(format) and format[i] != "'":
+ result += format[i]
+ i += 1
+ if i < len(format):
+ result += "'"
+ i += 1
+ else:
+ s = format[i:]
+ if s.startswith("EEEE"):
+ result += "dddd"
+ i += 4
+ elif s.startswith("EEE"):
+ result += "ddd"
+ i += 3
+ elif s.startswith("a"):
+ result += "AP"
+ i += 1
+ elif s.startswith("z"):
+ result += "t"
+ i += 1
+ elif s.startswith("v"):
+ i += 1
+ else:
+ result += format[i]
+ i += 1
+
+ return result
+
+class Locale:
+ def __init__(self, elt):
+ self.language = eltText(firstChildElt(elt, "language"))
+ self.country = eltText(firstChildElt(elt, "country"))
+ self.decimal = int(eltText(firstChildElt(elt, "decimal")))
+ self.group = int(eltText(firstChildElt(elt, "group")))
+ self.listDelim = int(eltText(firstChildElt(elt, "list")))
+ self.percent = int(eltText(firstChildElt(elt, "percent")))
+ self.zero = int(eltText(firstChildElt(elt, "zero")))
+ self.minus = int(eltText(firstChildElt(elt, "minus")))
+ self.plus = int(eltText(firstChildElt(elt, "plus")))
+ self.exp = int(eltText(firstChildElt(elt, "exp")))
+ self.am = eltText(firstChildElt(elt, "am"))
+ self.pm = eltText(firstChildElt(elt, "pm"))
+ self.longDateFormat = convertFormat(eltText(firstChildElt(elt, "longDateFormat")))
+ self.shortDateFormat = convertFormat(eltText(firstChildElt(elt, "shortDateFormat")))
+ self.longTimeFormat = convertFormat(eltText(firstChildElt(elt, "longTimeFormat")))
+ self.shortTimeFormat = convertFormat(eltText(firstChildElt(elt, "shortTimeFormat")))
+ self.standaloneLongMonths = eltText(firstChildElt(elt, "standaloneLongMonths"))
+ self.standaloneShortMonths = eltText(firstChildElt(elt, "standaloneShortMonths"))
+ self.standaloneNarrowMonths = eltText(firstChildElt(elt, "standaloneNarrowMonths"))
+ self.longMonths = eltText(firstChildElt(elt, "longMonths"))
+ self.shortMonths = eltText(firstChildElt(elt, "shortMonths"))
+ self.narrowMonths = eltText(firstChildElt(elt, "narrowMonths"))
+ self.standaloneLongDays = eltText(firstChildElt(elt, "standaloneLongDays"))
+ self.standaloneShortDays = eltText(firstChildElt(elt, "standaloneShortDays"))
+ self.standaloneNarrowDays = eltText(firstChildElt(elt, "standaloneNarrowDays"))
+ self.longDays = eltText(firstChildElt(elt, "longDays"))
+ self.shortDays = eltText(firstChildElt(elt, "shortDays"))
+ self.narrowDays = eltText(firstChildElt(elt, "narrowDays"))
+
+def loadLocaleMap(doc, language_map, country_map):
+ result = {}
+
+ locale_list_elt = firstChildElt(doc.documentElement, "localeList")
+ locale_elt = firstChildElt(locale_list_elt, "locale")
+ while locale_elt:
+ locale = Locale(locale_elt)
+ language_id = languageNameToId(locale.language, language_map)
+ country_id = countryNameToId(locale.country, country_map)
+ result[(language_id, country_id)] = locale
+
+ locale_elt = nextSiblingElt(locale_elt, "locale")
+
+ return result
+
+def compareLocaleKeys(key1, key2):
+ if key1 == key2:
+ return 0
+
+ if key1[0] == key2[0]:
+ l1 = compareLocaleKeys.locale_map[key1]
+ l2 = compareLocaleKeys.locale_map[key2]
+
+ if l1.language in compareLocaleKeys.default_map:
+ default = compareLocaleKeys.default_map[l1.language]
+ if l1.country == default:
+ return -1
+ if l2.country == default:
+ return 1
+ else:
+ return key1[0] - key2[0]
+
+ return key1[1] - key2[1]
+
+
+def languageCount(language_id, locale_map):
+ result = 0
+ for key in locale_map.keys():
+ if key[0] == language_id:
+ result += 1
+ return result
+
+class StringDataToken:
+ def __init__(self, index, length):
+ self.index = index
+ self.length = length
+ def __str__(self):
+ return " %d,%d " % (self.index, self.length)
+
+class StringData:
+ def __init__(self):
+ self.data = []
+ self.hash = {}
+ def append(self, s):
+ if s in self.hash:
+ return self.hash[s]
+
+ lst = map(lambda x: hex(ord(x)), s)
+ token = StringDataToken(len(self.data), len(lst))
+ self.hash[s] = token
+ self.data += lst
+ return token
+
+def escapedString(s):
+ result = ""
+ i = 0
+ while i < len(s):
+ if s[i] == '"':
+ result += '\\"'
+ i += 1
+ else:
+ result += s[i]
+ i += 1
+ s = result
+
+ line = ""
+ need_escape = False
+ result = ""
+ for c in s:
+ if ord(c) < 128 and (not need_escape or ord(c.lower()) < ord('a') or ord(c.lower()) > ord('f')):
+ line += c
+ need_escape = False
+ else:
+ line += "\\x%02x" % (ord(c))
+ need_escape = True
+ if len(line) > 80:
+ result = result + "\n" + "\"" + line + "\""
+ line = ""
+ line += "\\0"
+ result = result + "\n" + "\"" + line + "\""
+ if result[0] == "\n":
+ result = result[1:]
+ return result
+
+def printEscapedString(s):
+ print escapedString(s);
+
+
+def main():
+ doc = xml.dom.minidom.parse("locale.xml")
+ language_map = loadLanguageMap(doc)
+ country_map = loadCountryMap(doc)
+ default_map = loadDefaultMap(doc)
+ locale_map = loadLocaleMap(doc, language_map, country_map)
+ dupes = findDupes(language_map, country_map)
+
+ # Language enum
+ print "enum Language {"
+ language = ""
+ for key in language_map.keys():
+ language = fixedLanguageName(language_map[key][0], dupes)
+ print " " + language + " = " + str(key) + ","
+ print " LastLanguage = " + language
+ print "};"
+
+ print
+
+ # Country enum
+ print "enum Country {"
+ country = ""
+ for key in country_map.keys():
+ country = fixedCountryName(country_map[key][0], dupes)
+ print " " + country + " = " + str(key) + ","
+ print " LastCountry = " + country
+ print "};"
+
+ print
+
+ # Locale index
+ print "static const uint locale_index[] = {"
+ print " 0, // unused"
+ index = 0
+ for key in language_map.keys():
+ i = 0
+ count = languageCount(key, locale_map)
+ if count > 0:
+ i = index
+ index += count
+ print "%6d, // %s" % (i, language_map[key][0])
+ print " 0 // trailing 0"
+ print "};"
+
+ print
+
+ date_format_data = StringData()
+ time_format_data = StringData()
+ months_data = StringData()
+ standalone_months_data = StringData()
+ days_data = StringData()
+ am_data = StringData()
+ pm_data = StringData()
+
+ # Locale data
+ print "static const QLocalePrivate locale_data[] = {"
+ print "// lang terr dec group list prcnt zero minus plus exp sDtFmt lDtFmt sTmFmt lTmFmt ssMonth slMonth sMonth lMonth sDays lDays am,len pm,len"
+
+ locale_keys = locale_map.keys()
+ compareLocaleKeys.default_map = default_map
+ compareLocaleKeys.locale_map = locale_map
+ locale_keys.sort(compareLocaleKeys)
+
+ for key in locale_keys:
+ l = locale_map[key]
+
+ print " { %6d,%6d,%6d,%6d,%6d,%6d,%6d,%6d,%6d,%6d,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s }, // %s/%s" \
+ % (key[0], key[1],
+ l.decimal,
+ l.group,
+ l.listDelim,
+ l.percent,
+ l.zero,
+ l.minus,
+ l.plus,
+ l.exp,
+ date_format_data.append(l.shortDateFormat),
+ date_format_data.append(l.longDateFormat),
+ time_format_data.append(l.shortTimeFormat),
+ time_format_data.append(l.longTimeFormat),
+ standalone_months_data.append(l.standaloneShortMonths),
+ standalone_months_data.append(l.standaloneLongMonths),
+ standalone_months_data.append(l.standaloneNarrowMonths),
+ months_data.append(l.shortMonths),
+ months_data.append(l.longMonths),
+ months_data.append(l.narrowMonths),
+ days_data.append(l.standaloneShortDays),
+ days_data.append(l.standaloneLongDays),
+ days_data.append(l.standaloneNarrowDays),
+ days_data.append(l.shortDays),
+ days_data.append(l.longDays),
+ days_data.append(l.narrowDays),
+ am_data.append(l.am),
+ pm_data.append(l.pm),
+ l.language,
+ l.country)
+ print " { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 } // trailing 0s"
+ print "};"
+
+ print
+
+ # Date format data
+ #check_static_char_array_length("date_format", date_format_data.data)
+ print "static const ushort date_format_data[] = {"
+ print wrap_list(date_format_data.data)
+ print "};"
+
+ print
+
+ # Time format data
+ #check_static_char_array_length("time_format", time_format_data.data)
+ print "static const ushort time_format_data[] = {"
+ print wrap_list(time_format_data.data)
+ print "};"
+
+ print
+
+ # Months data
+ #check_static_char_array_length("months", months_data.data)
+ print "static const ushort months_data[] = {"
+ print wrap_list(months_data.data)
+ print "};"
+
+ print
+
+ # Standalone months data
+ #check_static_char_array_length("standalone_months", standalone_months_data.data)
+ print "static const ushort standalone_months_data[] = {"
+ print wrap_list(standalone_months_data.data)
+ print "};"
+
+ print
+
+ # Days data
+ #check_static_char_array_length("days", days_data.data)
+ print "static const ushort days_data[] = {"
+ print wrap_list(days_data.data)
+ print "};"
+
+ print
+
+ # AM data
+ #check_static_char_array_length("am", am_data.data)
+ print "static const ushort am_data[] = {"
+ print wrap_list(am_data.data)
+ print "};"
+
+ print
+
+ # PM data
+ #check_static_char_array_length("pm", am_data.data)
+ print "static const ushort pm_data[] = {"
+ print wrap_list(pm_data.data)
+ print "};"
+
+ print
+
+ # Language name list
+ print "static const char language_name_list[] ="
+ print "\"Default\\0\""
+ for key in language_map.keys():
+ print "\"" + language_map[key][0] + "\\0\""
+ print ";"
+
+ print
+
+ # Language name index
+ print "static const uint language_name_index[] = {"
+ print " 0, // Unused"
+ index = 8
+ for key in language_map.keys():
+ language = language_map[key][0]
+ print "%6d, // %s" % (index, language)
+ index += len(language) + 1
+ print "};"
+
+ print
+
+ # Country name list
+ print "static const char country_name_list[] ="
+ print "\"Default\\0\""
+ for key in country_map.keys():
+ if key == 0:
+ continue
+ print "\"" + country_map[key][0] + "\\0\""
+ print ";"
+
+ print
+
+ # Country name index
+ print "static const uint country_name_index[] = {"
+ print " 0, // AnyCountry"
+ index = 8
+ for key in country_map.keys():
+ if key == 0:
+ continue
+ country = country_map[key][0]
+ print "%6d, // %s" % (index, country)
+ index += len(country) + 1
+ print "};"
+
+ print
+
+ # Language code list
+ print "static const unsigned char language_code_list[] ="
+ print "\" \\0\" // Unused"
+ for key in language_map.keys():
+ code = language_map[key][1]
+ if len(code) == 2:
+ code += r"\0"
+ print "\"%2s\" // %s" % (code, language_map[key][0])
+ print ";"
+
+ print
+
+ # Country code list
+ print "static const unsigned char country_code_list[] ="
+ for key in country_map.keys():
+ print "\"%2s\" // %s" % (country_map[key][1], country_map[key][0])
+ print ";"
+
+
+if __name__ == "__main__":
+ main()
diff --git a/util/local_database/testlocales/localemodel.cpp b/util/local_database/testlocales/localemodel.cpp
new file mode 100644
index 0000000000..87722076f1
--- /dev/null
+++ b/util/local_database/testlocales/localemodel.cpp
@@ -0,0 +1,462 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "localemodel.h"
+
+#include <QLocale>
+#include <QDate>
+#include <qdebug.h>
+
+static const int g_model_cols = 6;
+
+struct LocaleListItem
+{
+ int language;
+ int country;
+};
+
+const LocaleListItem g_locale_list[] = {
+ { 1, 0 }, // C/AnyCountry
+ { 3, 69 }, // Afan/Ethiopia
+ { 3, 111 }, // Afan/Kenya
+ { 4, 59 }, // Afar/Djibouti
+ { 4, 67 }, // Afar/Eritrea
+ { 4, 69 }, // Afar/Ethiopia
+ { 5, 195 }, // Afrikaans/SouthAfrica
+ { 5, 148 }, // Afrikaans/Namibia
+ { 6, 2 }, // Albanian/Albania
+ { 7, 69 }, // Amharic/Ethiopia
+ { 8, 186 }, // Arabic/SaudiArabia
+ { 8, 3 }, // Arabic/Algeria
+ { 8, 17 }, // Arabic/Bahrain
+ { 8, 64 }, // Arabic/Egypt
+ { 8, 103 }, // Arabic/Iraq
+ { 8, 109 }, // Arabic/Jordan
+ { 8, 115 }, // Arabic/Kuwait
+ { 8, 119 }, // Arabic/Lebanon
+ { 8, 122 }, // Arabic/LibyanArabJamahiriya
+ { 8, 145 }, // Arabic/Morocco
+ { 8, 162 }, // Arabic/Oman
+ { 8, 175 }, // Arabic/Qatar
+ { 8, 201 }, // Arabic/Sudan
+ { 8, 207 }, // Arabic/SyrianArabRepublic
+ { 8, 216 }, // Arabic/Tunisia
+ { 8, 223 }, // Arabic/UnitedArabEmirates
+ { 8, 237 }, // Arabic/Yemen
+ { 9, 11 }, // Armenian/Armenia
+ { 10, 100 }, // Assamese/India
+ { 12, 15 }, // Azerbaijani/Azerbaijan
+ { 14, 197 }, // Basque/Spain
+ { 15, 18 }, // Bengali/Bangladesh
+ { 15, 100 }, // Bengali/India
+ { 16, 25 }, // Bhutani/Bhutan
+ { 20, 33 }, // Bulgarian/Bulgaria
+ { 22, 20 }, // Byelorussian/Belarus
+ { 23, 36 }, // Cambodian/Cambodia
+ { 24, 197 }, // Catalan/Spain
+ { 25, 44 }, // Chinese/China
+ { 25, 97 }, // Chinese/HongKong
+ { 25, 126 }, // Chinese/Macau
+ { 25, 190 }, // Chinese/Singapore
+ { 25, 208 }, // Chinese/Taiwan
+ { 27, 54 }, // Croatian/Croatia
+ { 28, 57 }, // Czech/CzechRepublic
+ { 29, 58 }, // Danish/Denmark
+ { 30, 151 }, // Dutch/Netherlands
+ { 30, 21 }, // Dutch/Belgium
+ { 31, 225 }, // English/UnitedStates
+ { 31, 4 }, // English/AmericanSamoa
+ { 31, 13 }, // English/Australia
+ { 31, 21 }, // English/Belgium
+ { 31, 22 }, // English/Belize
+ { 31, 28 }, // English/Botswana
+ { 31, 38 }, // English/Canada
+ { 31, 89 }, // English/Guam
+ { 31, 97 }, // English/HongKong
+ { 31, 100 }, // English/India
+ { 31, 104 }, // English/Ireland
+ { 31, 107 }, // English/Jamaica
+ { 31, 133 }, // English/Malta
+ { 31, 134 }, // English/MarshallIslands
+ { 31, 148 }, // English/Namibia
+ { 31, 154 }, // English/NewZealand
+ { 31, 160 }, // English/NorthernMarianaIslands
+ { 31, 163 }, // English/Pakistan
+ { 31, 170 }, // English/Philippines
+ { 31, 190 }, // English/Singapore
+ { 31, 195 }, // English/SouthAfrica
+ { 31, 215 }, // English/TrinidadAndTobago
+ { 31, 224 }, // English/UnitedKingdom
+ { 31, 226 }, // English/UnitedStatesMinorOutlyingIslands
+ { 31, 234 }, // English/USVirginIslands
+ { 31, 240 }, // English/Zimbabwe
+ { 33, 68 }, // Estonian/Estonia
+ { 34, 71 }, // Faroese/FaroeIslands
+ { 36, 73 }, // Finnish/Finland
+ { 37, 74 }, // French/France
+ { 37, 21 }, // French/Belgium
+ { 37, 38 }, // French/Canada
+ { 37, 125 }, // French/Luxembourg
+ { 37, 142 }, // French/Monaco
+ { 37, 206 }, // French/Switzerland
+ { 40, 197 }, // Galician/Spain
+ { 41, 81 }, // Georgian/Georgia
+ { 42, 82 }, // German/Germany
+ { 42, 14 }, // German/Austria
+ { 42, 21 }, // German/Belgium
+ { 42, 123 }, // German/Liechtenstein
+ { 42, 125 }, // German/Luxembourg
+ { 42, 206 }, // German/Switzerland
+ { 43, 85 }, // Greek/Greece
+ { 43, 56 }, // Greek/Cyprus
+ { 44, 86 }, // Greenlandic/Greenland
+ { 46, 100 }, // Gujarati/India
+ { 47, 83 }, // Hausa/Ghana
+ { 47, 156 }, // Hausa/Niger
+ { 47, 157 }, // Hausa/Nigeria
+ { 48, 105 }, // Hebrew/Israel
+ { 49, 100 }, // Hindi/India
+ { 50, 98 }, // Hungarian/Hungary
+ { 51, 99 }, // Icelandic/Iceland
+ { 52, 101 }, // Indonesian/Indonesia
+ { 57, 104 }, // Irish/Ireland
+ { 58, 106 }, // Italian/Italy
+ { 58, 206 }, // Italian/Switzerland
+ { 59, 108 }, // Japanese/Japan
+ { 61, 100 }, // Kannada/India
+ { 63, 110 }, // Kazakh/Kazakhstan
+ { 64, 179 }, // Kinyarwanda/Rwanda
+ { 65, 116 }, // Kirghiz/Kyrgyzstan
+ { 66, 114 }, // Korean/RepublicOfKorea
+ { 67, 102 }, // Kurdish/Iran
+ { 67, 103 }, // Kurdish/Iraq
+ { 67, 207 }, // Kurdish/SyrianArabRepublic
+ { 67, 217 }, // Kurdish/Turkey
+ { 69, 117 }, // Laothian/Lao
+ { 71, 118 }, // Latvian/Latvia
+ { 72, 49 }, // Lingala/DemocraticRepublicOfCongo
+ { 72, 50 }, // Lingala/PeoplesRepublicOfCongo
+ { 73, 124 }, // Lithuanian/Lithuania
+ { 74, 127 }, // Macedonian/Macedonia
+ { 76, 130 }, // Malay/Malaysia
+ { 76, 32 }, // Malay/BruneiDarussalam
+ { 77, 100 }, // Malayalam/India
+ { 78, 133 }, // Maltese/Malta
+ { 80, 100 }, // Marathi/India
+ { 82, 143 }, // Mongolian/Mongolia
+ { 84, 150 }, // Nepali/Nepal
+ { 85, 161 }, // Norwegian/Norway
+ { 87, 100 }, // Oriya/India
+ { 88, 1 }, // Pashto/Afghanistan
+ { 89, 102 }, // Persian/Iran
+ { 89, 1 }, // Persian/Afghanistan
+ { 90, 172 }, // Polish/Poland
+ { 91, 173 }, // Portuguese/Portugal
+ { 91, 30 }, // Portuguese/Brazil
+ { 92, 100 }, // Punjabi/India
+ { 92, 163 }, // Punjabi/Pakistan
+ { 95, 177 }, // Romanian/Romania
+ { 96, 178 }, // Russian/RussianFederation
+ { 96, 222 }, // Russian/Ukraine
+ { 99, 100 }, // Sanskrit/India
+ { 100, 241 }, // Serbian/SerbiaAndMontenegro
+ { 100, 27 }, // Serbian/BosniaAndHerzegowina
+ { 100, 238 }, // Serbian/Yugoslavia
+ { 101, 241 }, // SerboCroatian/SerbiaAndMontenegro
+ { 101, 27 }, // SerboCroatian/BosniaAndHerzegowina
+ { 101, 238 }, // SerboCroatian/Yugoslavia
+ { 102, 195 }, // Sesotho/SouthAfrica
+ { 103, 195 }, // Setswana/SouthAfrica
+ { 107, 195 }, // Siswati/SouthAfrica
+ { 108, 191 }, // Slovak/Slovakia
+ { 109, 192 }, // Slovenian/Slovenia
+ { 110, 194 }, // Somali/Somalia
+ { 110, 59 }, // Somali/Djibouti
+ { 110, 69 }, // Somali/Ethiopia
+ { 110, 111 }, // Somali/Kenya
+ { 111, 197 }, // Spanish/Spain
+ { 111, 10 }, // Spanish/Argentina
+ { 111, 26 }, // Spanish/Bolivia
+ { 111, 43 }, // Spanish/Chile
+ { 111, 47 }, // Spanish/Colombia
+ { 111, 52 }, // Spanish/CostaRica
+ { 111, 61 }, // Spanish/DominicanRepublic
+ { 111, 63 }, // Spanish/Ecuador
+ { 111, 65 }, // Spanish/ElSalvador
+ { 111, 90 }, // Spanish/Guatemala
+ { 111, 96 }, // Spanish/Honduras
+ { 111, 139 }, // Spanish/Mexico
+ { 111, 155 }, // Spanish/Nicaragua
+ { 111, 166 }, // Spanish/Panama
+ { 111, 168 }, // Spanish/Paraguay
+ { 111, 169 }, // Spanish/Peru
+ { 111, 174 }, // Spanish/PuertoRico
+ { 111, 225 }, // Spanish/UnitedStates
+ { 111, 227 }, // Spanish/Uruguay
+ { 111, 231 }, // Spanish/Venezuela
+ { 113, 111 }, // Swahili/Kenya
+ { 113, 210 }, // Swahili/Tanzania
+ { 114, 205 }, // Swedish/Sweden
+ { 114, 73 }, // Swedish/Finland
+ { 116, 209 }, // Tajik/Tajikistan
+ { 117, 100 }, // Tamil/India
+ { 118, 178 }, // Tatar/RussianFederation
+ { 119, 100 }, // Telugu/India
+ { 120, 211 }, // Thai/Thailand
+ { 122, 67 }, // Tigrinya/Eritrea
+ { 122, 69 }, // Tigrinya/Ethiopia
+ { 124, 195 }, // Tsonga/SouthAfrica
+ { 125, 217 }, // Turkish/Turkey
+ { 129, 222 }, // Ukrainian/Ukraine
+ { 130, 100 }, // Urdu/India
+ { 130, 163 }, // Urdu/Pakistan
+ { 131, 228 }, // Uzbek/Uzbekistan
+ { 131, 1 }, // Uzbek/Afghanistan
+ { 132, 232 }, // Vietnamese/VietNam
+ { 134, 224 }, // Welsh/UnitedKingdom
+ { 136, 195 }, // Xhosa/SouthAfrica
+ { 138, 157 }, // Yoruba/Nigeria
+ { 140, 195 }, // Zulu/SouthAfrica
+ { 141, 161 }, // Nynorsk/Norway
+ { 142, 27 }, // Bosnian/BosniaAndHerzegowina
+ { 143, 131 }, // Divehi/Maldives
+ { 144, 224 }, // Manx/UnitedKingdom
+ { 145, 224 }, // Cornish/UnitedKingdom
+ { 146, 83 }, // Akan/Ghana
+ { 147, 100 }, // Konkani/India
+ { 148, 83 }, // Ga/Ghana
+ { 149, 157 }, // Igbo/Nigeria
+ { 150, 111 }, // Kamba/Kenya
+ { 151, 207 }, // Syriac/SyrianArabRepublic
+ { 152, 67 }, // Blin/Eritrea
+ { 153, 67 }, // Geez/Eritrea
+ { 153, 69 }, // Geez/Ethiopia
+ { 154, 157 }, // Koro/Nigeria
+ { 155, 69 }, // Sidamo/Ethiopia
+ { 156, 157 }, // Atsam/Nigeria
+ { 157, 67 }, // Tigre/Eritrea
+ { 158, 157 }, // Jju/Nigeria
+ { 159, 106 }, // Friulian/Italy
+ { 160, 195 }, // Venda/SouthAfrica
+ { 161, 83 }, // Ewe/Ghana
+ { 161, 212 }, // Ewe/Togo
+ { 163, 225 }, // Hawaiian/UnitedStates
+ { 164, 157 }, // Tyap/Nigeria
+ { 165, 129 }, // Chewa/Malawi
+};
+static const int g_locale_list_count = sizeof(g_locale_list)/sizeof(g_locale_list[0]);
+
+LocaleModel::LocaleModel(QObject *parent)
+ : QAbstractItemModel(parent)
+{
+ m_data_list.append(1234.5678);
+ m_data_list.append(QDate::currentDate());
+ m_data_list.append(QDate::currentDate());
+ m_data_list.append(QTime::currentTime());
+ m_data_list.append(QTime::currentTime());
+}
+
+QVariant LocaleModel::data(const QModelIndex &index, int role) const
+{
+ if (!index.isValid()
+ || role != Qt::DisplayRole && role != Qt::EditRole && role != Qt::ToolTipRole
+ || index.column() >= g_model_cols
+ || index.row() >= g_locale_list_count + 2)
+ return QVariant();
+
+ QVariant data;
+ if (index.column() < g_model_cols - 1)
+ data = m_data_list.at(index.column());
+
+ if (index.row() == 0) {
+ if (role == Qt::ToolTipRole)
+ return QVariant();
+ switch (index.column()) {
+ case 0:
+ return data.toDouble();
+ case 1:
+ return data.toDate();
+ case 2:
+ return data.toDate();
+ case 3:
+ return data.toTime();
+ case 4:
+ return data.toTime();
+ case 5:
+ return QVariant();
+ default:
+ break;
+ }
+ } else {
+ QLocale locale;
+ if (index.row() == 1) {
+ locale = QLocale::system();
+ } else {
+ LocaleListItem item = g_locale_list[index.row() - 2];
+ locale = QLocale((QLocale::Language)item.language, (QLocale::Country)item.country);
+ }
+
+ switch (index.column()) {
+ case 0:
+ if (role == Qt::ToolTipRole)
+ return QVariant();
+ return locale.toString(data.toDouble());
+ case 1:
+ if (role == Qt::ToolTipRole)
+ return locale.dateFormat(QLocale::LongFormat);
+ return locale.toString(data.toDate(), QLocale::LongFormat);
+ case 2:
+ if (role == Qt::ToolTipRole)
+ return locale.dateFormat(QLocale::ShortFormat);
+ return locale.toString(data.toDate(), QLocale::ShortFormat);
+ case 3:
+ if (role == Qt::ToolTipRole)
+ return locale.timeFormat(QLocale::LongFormat);
+ return locale.toString(data.toTime(), QLocale::LongFormat);
+ case 4:
+ if (role == Qt::ToolTipRole)
+ return locale.timeFormat(QLocale::ShortFormat);
+ return locale.toString(data.toTime(), QLocale::ShortFormat);
+ case 5:
+ if (role == Qt::ToolTipRole)
+ return QVariant();
+ return locale.name();
+ default:
+ break;
+ }
+ }
+
+ return QVariant();
+}
+
+QVariant LocaleModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ if (role != Qt::DisplayRole)
+ return QVariant();
+
+ if (orientation == Qt::Horizontal) {
+ switch (section) {
+ case 0:
+ return QLatin1String("Double");
+ case 1:
+ return QLatin1String("Long Date");
+ case 2:
+ return QLatin1String("Short Date");
+ case 3:
+ return QLatin1String("Long Time");
+ case 4:
+ return QLatin1String("Short Time");
+ case 5:
+ return QLatin1String("Name");
+ default:
+ break;
+ }
+ } else {
+ if (section >= g_locale_list_count + 2)
+ return QVariant();
+ if (section == 0) {
+ return QLatin1String("Input");
+ } else if (section == 1) {
+ return QLatin1String("System");
+ } else {
+ LocaleListItem item = g_locale_list[section - 2];
+ return QLocale::languageToString((QLocale::Language)item.language)
+ + QLatin1Char('/')
+ + QLocale::countryToString((QLocale::Country)item.country);
+ }
+ }
+
+ return QVariant();
+}
+
+QModelIndex LocaleModel::index(int row, int column,
+ const QModelIndex &parent) const
+{
+ if (parent.isValid()
+ || row >= g_locale_list_count + 2
+ || column >= g_model_cols)
+ return QModelIndex();
+
+ return createIndex(row, column);
+}
+
+QModelIndex LocaleModel::parent(const QModelIndex&) const
+{
+ return QModelIndex();
+}
+
+int LocaleModel::columnCount(const QModelIndex&) const
+{
+ return g_model_cols;
+}
+
+int LocaleModel::rowCount(const QModelIndex &parent) const
+{
+ if (parent.isValid())
+ return 0;
+ return g_locale_list_count + 2;
+}
+
+Qt::ItemFlags LocaleModel::flags(const QModelIndex &index) const
+{
+ if (!index.isValid())
+ return 0;
+ if (index.row() == 0 && index.column() == g_model_cols - 1)
+ return 0;
+ if (index.row() == 0)
+ return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;
+ return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
+}
+
+bool LocaleModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+ if (!index.isValid()
+ || index.row() != 0
+ || index.column() >= g_model_cols - 1
+ || role != Qt::EditRole
+ || m_data_list.at(index.column()).type() != value.type())
+ return false;
+
+ m_data_list[index.column()] = value;
+ emit dataChanged(createIndex(1, index.column()),
+ createIndex(g_locale_list_count, index.column()));
+
+ return true;
+}
diff --git a/util/local_database/testlocales/localemodel.h b/util/local_database/testlocales/localemodel.h
new file mode 100644
index 0000000000..16512decf2
--- /dev/null
+++ b/util/local_database/testlocales/localemodel.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef LOCALEMODEL_H
+#define LOCALEMODEL_H
+
+#include <QAbstractItemModel>
+#include <QList>
+#include <QVariant>
+
+class LocaleModel : public QAbstractItemModel
+{
+ Q_OBJECT
+public:
+ LocaleModel(QObject *parent = 0);
+
+ virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
+ virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+ virtual QModelIndex index(int row, int column,
+ const QModelIndex &parent = QModelIndex()) const;
+ virtual QModelIndex parent(const QModelIndex &index) const;
+ virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ virtual QVariant headerData(int section, Qt::Orientation orientation,
+ int role = Qt::DisplayRole ) const;
+ virtual Qt::ItemFlags flags(const QModelIndex &index) const;
+ virtual bool setData(const QModelIndex &index, const QVariant &value,
+ int role = Qt::EditRole);
+private:
+ QList<QVariant> m_data_list;
+};
+
+#endif // LOCALEMODEL_H
diff --git a/util/local_database/testlocales/localewidget.cpp b/util/local_database/testlocales/localewidget.cpp
new file mode 100644
index 0000000000..d6b23a9ec1
--- /dev/null
+++ b/util/local_database/testlocales/localewidget.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QTableView>
+#include <QVBoxLayout>
+#include <QItemDelegate>
+#include <QItemEditorFactory>
+#include <QDoubleSpinBox>
+
+#include "localewidget.h"
+#include "localemodel.h"
+
+class DoubleEditorCreator : public QItemEditorCreatorBase
+{
+public:
+ QWidget *createWidget(QWidget *parent) const {
+ QDoubleSpinBox *w = new QDoubleSpinBox(parent);
+ w->setDecimals(4);
+ w->setRange(-10000.0, 10000.0);
+ return w;
+ }
+ virtual QByteArray valuePropertyName() const {
+ return QByteArray("value");
+ }
+};
+
+class EditorFactory : public QItemEditorFactory
+{
+public:
+ EditorFactory() {
+ static DoubleEditorCreator double_editor_creator;
+ registerEditor(QVariant::Double, &double_editor_creator);
+ }
+};
+
+LocaleWidget::LocaleWidget(QWidget *parent)
+ : QWidget(parent)
+{
+ m_model = new LocaleModel(this);
+ m_view = new QTableView(this);
+
+ QItemDelegate *delegate = qobject_cast<QItemDelegate*>(m_view->itemDelegate());
+ Q_ASSERT(delegate != 0);
+ static EditorFactory editor_factory;
+ delegate->setItemEditorFactory(&editor_factory);
+
+ m_view->setModel(m_model);
+
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ layout->setMargin(0);
+ layout->addWidget(m_view);
+}
diff --git a/util/local_database/testlocales/localewidget.h b/util/local_database/testlocales/localewidget.h
new file mode 100644
index 0000000000..834e10c021
--- /dev/null
+++ b/util/local_database/testlocales/localewidget.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef LOCALEWIDGET_H
+#define LOCALEWIDGET_H
+
+#include <QWidget>
+
+class LocaleModel;
+class QTableView;
+
+class LocaleWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ LocaleWidget(QWidget *parent = 0);
+private:
+ LocaleModel *m_model;
+ QTableView *m_view;
+};
+
+#endif // LOCALEWIDGET_H
diff --git a/util/local_database/testlocales/main.cpp b/util/local_database/testlocales/main.cpp
new file mode 100644
index 0000000000..ba4e678d7c
--- /dev/null
+++ b/util/local_database/testlocales/main.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QApplication>
+
+#include "localewidget.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ LocaleWidget wgt;
+ wgt.show();
+ return app.exec();
+}
diff --git a/util/local_database/testlocales/testlocales.pro b/util/local_database/testlocales/testlocales.pro
new file mode 100644
index 0000000000..a9a6247f96
--- /dev/null
+++ b/util/local_database/testlocales/testlocales.pro
@@ -0,0 +1,4 @@
+TARGET = testlocales
+CONFIG += debug
+SOURCES += localemodel.cpp localewidget.cpp main.cpp
+HEADERS += localemodel.h localewidget.h \ No newline at end of file
diff --git a/util/local_database/xpathlite.py b/util/local_database/xpathlite.py
new file mode 100644
index 0000000000..6e4dd71fd8
--- /dev/null
+++ b/util/local_database/xpathlite.py
@@ -0,0 +1,107 @@
+import sys
+import os
+import xml.dom.minidom
+
+doc_cache = {}
+
+class DraftResolution:
+ # See http://www.unicode.org/cldr/process.html for description
+ unconfirmed = 'unconfirmed'
+ provisional = 'provisional'
+ contributed = 'contributed'
+ approved = 'approved'
+
+
+def findChild(parent, tag_name, arg_value, draft=None):
+ for node in parent.childNodes:
+ if node.nodeType != node.ELEMENT_NODE:
+ continue
+ if node.nodeName != tag_name:
+ continue
+ if arg_value:
+ if not node.attributes.has_key('type'):
+ continue
+ if node.attributes['type'].nodeValue != arg_value:
+ continue
+ if draft:
+ if node.attributes.has_key('draft'):
+ if node.attributes['draft'].nodeValue != draft:
+ continue
+ elif draft != DraftResolution.approved:
+ continue
+ return node
+ return False
+
+def _findEntry(file, path, draft=None):
+ doc = False
+ if doc_cache.has_key(file):
+ doc = doc_cache[file]
+ else:
+ doc = xml.dom.minidom.parse(file)
+ doc_cache[file] = doc
+
+ elt = doc.documentElement
+ tag_spec_list = path.split("/")
+ last_entry = None
+ if draft is not None:
+ last_entry = tag_spec_list[-1]
+ tag_spec_list = tag_spec_list[:-1]
+ for tag_spec in tag_spec_list:
+ tag_name = tag_spec
+ arg_value = ''
+ left_bracket = tag_spec.find('[')
+ if left_bracket != -1:
+ tag_name = tag_spec[:left_bracket]
+ arg_value = tag_spec[left_bracket+1:-1]
+ elt = findChild(elt, tag_name, arg_value)
+ if not elt:
+ return ""
+ if last_entry is not None:
+ elt = findChild(elt, last_entry, '', draft)
+ if not elt:
+ return ""
+ return elt.firstChild.nodeValue
+
+def findAlias(file):
+ doc = doc_cache[file]
+ alias_elt = findChild(doc.documentElement, "alias", "")
+ if not alias_elt:
+ return False
+ if not alias_elt.attributes.has_key('source'):
+ return False
+ return alias_elt.attributes['source'].nodeValue
+
+def findEntry(base, path, draft=None):
+ file = base + ".xml"
+
+ if os.path.isfile(file):
+ result = _findEntry(file, path, draft)
+ if result:
+ return result
+
+ alias = findAlias(file)
+ if alias:
+ file = os.path.dirname(base) + "/" + alias + ".xml"
+ if os.path.isfile(file):
+ result = _findEntry(file, path, draft)
+ if result:
+ return result
+
+ file = base[:-3] + ".xml"
+ if os.path.isfile(file):
+ result = _findEntry(file, path, draft)
+ if result:
+ return result
+ alias = findAlias(file)
+ if alias:
+ file = os.path.dirname(base) + "/" + alias + ".xml"
+ if os.path.isfile(file):
+ result = _findEntry(file, path, draft)
+ if result:
+ return result
+
+ if not draft:
+ file = os.path.dirname(base) + "/root.xml"
+ result = _findEntry(file, path, draft)
+ return result
+
diff --git a/util/normalize/README b/util/normalize/README
new file mode 100644
index 0000000000..55c921025f
--- /dev/null
+++ b/util/normalize/README
@@ -0,0 +1,16 @@
+This tool greps through files for SIGNAL() or SLOT() macros and pipes the signals/slots
+through QMetaObject::normalizedSignature().
+
+Rationale: In connect statements, you'll get a micro-speed update when passing in normalized
+signatures for signals and slots.
+
+Run it without any arguments to see the command line parameters.
+
+Typical usage on Qt:
+
+# find all files with non-normalized signal/slot connections and p4 edit them
+normalize $QTDIR/src | xargs p4 edit
+# replace all non-normalized signal/slots
+normalize --modify $QTDIR/src
+# p4 diff to see that everything is OK then submit :)
+p4 submit $QTDIR/src/...
diff --git a/util/normalize/main.cpp b/util/normalize/main.cpp
new file mode 100644
index 0000000000..905c1ec9f9
--- /dev/null
+++ b/util/normalize/main.cpp
@@ -0,0 +1,197 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qcoreapplication.h>
+#include <qdir.h>
+#include <qfile.h>
+#include <qmetaobject.h>
+#include <qstring.h>
+#include <qtextstream.h>
+
+#include <qdebug.h>
+
+#include <limits.h>
+#include <stdio.h>
+
+static bool printFilename = true;
+static bool modify = false;
+
+QString signature(const QString &line, int pos)
+{
+ int start = pos;
+ // find first open parentheses
+ while (start < line.length() && line.at(start) != QLatin1Char('('))
+ ++start;
+ int i = ++start;
+ int par = 1;
+ // find matching closing parentheses
+ while (i < line.length() && par > 0) {
+ if (line.at(i) == QLatin1Char('('))
+ ++par;
+ else if (line.at(i) == QLatin1Char(')'))
+ --par;
+ ++i;
+ }
+ if (par == 0)
+ return line.mid(start, i - start - 1);
+ return QString();
+}
+
+bool checkSignature(const QString &fileName, QString &line, const char *sig)
+{
+ static QStringList fileList;
+
+ int idx = -1;
+ bool found = false;
+ while ((idx = line.indexOf(sig, ++idx)) != -1) {
+ const QByteArray sl(signature(line, idx).toLocal8Bit());
+ QByteArray nsl(QMetaObject::normalizedSignature(sl.constData()));
+ if (sl != nsl) {
+ found = true;
+ if (printFilename && !fileList.contains(fileName)) {
+ fileList.prepend(fileName);
+ printf("%s\n", fileName.toLocal8Bit().constData());
+ }
+ if (modify)
+ line.replace(sl, nsl);
+ //qDebug("expected '%s', got '%s'", nsl.data(), sl.data());
+ }
+ }
+ return found;
+}
+
+void writeChanges(const QString &fileName, const QStringList &lines)
+{
+ QFile file(fileName);
+ if (!file.open(QIODevice::WriteOnly)) {
+ qDebug("unable to open file '%s' for writing (%s)", fileName.toLocal8Bit().constData(), file.errorString().toLocal8Bit().constData());
+ return;
+ }
+ QTextStream stream(&file);
+ for (int i = 0; i < lines.count(); ++i)
+ stream << lines.at(i);
+ file.close();
+}
+
+void check(const QString &fileName)
+{
+ QFile file(fileName);
+ if (!file.open(QIODevice::ReadOnly)) {
+ qDebug("unable to open file: '%s' (%s)", fileName.toLocal8Bit().constData(), file.errorString().toLocal8Bit().constData());
+ return;
+ }
+ QStringList lines;
+ bool found = false;
+ while (true) {
+ QByteArray bline = file.readLine(16384);
+ if (bline.isEmpty())
+ break;
+ QString line = QString::fromLocal8Bit(bline);
+ Q_ASSERT_X(line.endsWith("\n"), "check()", fileName.toLocal8Bit().constData());
+ found |= checkSignature(fileName, line, "SLOT");
+ found |= checkSignature(fileName, line, "SIGNAL");
+ if (modify)
+ lines << line;
+ }
+ file.close();
+
+ if (found && modify) {
+ printf("Modifying file: '%s'\n", fileName.toLocal8Bit().constData());
+ writeChanges(fileName, lines);
+ }
+}
+
+void traverse(const QString &path)
+{
+ QDir dir(path);
+ dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoSymLinks);
+
+ const QFileInfoList list = dir.entryInfoList();
+ for (int i = 0; i < list.count(); ++i) {
+ const QFileInfo fi = list.at(i);
+ if (fi.fileName() == QLatin1String(".") || fi.fileName() == QLatin1String(".."))
+ continue;
+ if (fi.fileName().endsWith(".cpp"))
+ check(path + fi.fileName());
+ if (fi.isDir())
+ traverse(path + fi.fileName() + "/"); // recurse
+ }
+}
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ if (app.argc() < 2 || (app.argc() == 2 && (app.argv()[1][0] == '-'))) {
+ printf("usage: normalize [--modify] <path>\n");
+ printf(" <path> can be a single file or a directory (default: look for *.cpp recursively)");
+ printf(" Outputs all filenames that contain non-normalized SIGNALs and SLOTs\n");
+ printf(" with --modify: fix all occurences of non-normalized SIGNALs and SLOTs\n");
+ return 1;
+ }
+
+ QString path;
+ if (qstrcmp(app.argv()[1], "--modify") == 0) {
+ printFilename = false;
+ modify = true;
+ path = app.argv()[2];
+ } else {
+ path = app.argv()[1];
+ }
+
+ if (path.startsWith("-")) {
+ qWarning("unknown parameter: %s", path.toLocal8Bit().constData());
+ return 1;
+ }
+
+ QFileInfo fi(path);
+ if (fi.isFile()) {
+ check(path);
+ } else if (fi.isDir()) {
+ if (!path.endsWith("/"))
+ path.append("/");
+ traverse(path);
+ } else {
+ qWarning("Don't know what to do with '%s'", path.toLocal8Bit().constData());
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/util/normalize/normalize.pro b/util/normalize/normalize.pro
new file mode 100644
index 0000000000..cff3f05f63
--- /dev/null
+++ b/util/normalize/normalize.pro
@@ -0,0 +1,9 @@
+TEMPLATE = app
+CONFIG -= moc
+
+# Input
+SOURCES += main.cpp
+
+QT = core
+CONFIG += warn_on console
+mac:CONFIG -= app_bundle
diff --git a/util/plugintest/README b/util/plugintest/README
new file mode 100644
index 0000000000..2cd9c35927
--- /dev/null
+++ b/util/plugintest/README
@@ -0,0 +1,3 @@
+Attempts to load a Qt plugin, and shows the error message if the plugin could not be loaded.
+
+Use this tool to check why your database driver is not there, or why that style doesn't show.
diff --git a/util/plugintest/main.cpp b/util/plugintest/main.cpp
new file mode 100644
index 0000000000..eabcbb0b7a
--- /dev/null
+++ b/util/plugintest/main.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore/QtCore>
+
+#include <stdio.h>
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ const QStringList args = app.arguments().mid(1);
+ if (args.isEmpty()) {
+ printf("Usage: ./plugintest libplugin.so...\nThis tool loads a plugin and displays whether QPluginLoader could load it or not.\nIf the plugin could not be loaded, it'll display the error string.\n");
+ return 1;
+ }
+
+ foreach (QString plugin, args) {
+ printf("%s: ", qPrintable(plugin));
+ QPluginLoader loader(plugin);
+ if (loader.load())
+ printf("success!\n");
+ else
+ printf("failure: %s\n", qPrintable(loader.errorString()));
+ }
+
+ return 0;
+}
+
diff --git a/util/plugintest/plugintest.pro b/util/plugintest/plugintest.pro
new file mode 100644
index 0000000000..94faf0387a
--- /dev/null
+++ b/util/plugintest/plugintest.pro
@@ -0,0 +1,4 @@
+TEMPLATE = app
+TARGET = plugintest
+SOURCES += main.cpp
+QT = core
diff --git a/util/qlalr/.gitignore b/util/qlalr/.gitignore
new file mode 100644
index 0000000000..ce75745f6a
--- /dev/null
+++ b/util/qlalr/.gitignore
@@ -0,0 +1 @@
+qlalr
diff --git a/util/qlalr/README b/util/qlalr/README
new file mode 100644
index 0000000000..b186fa1b51
--- /dev/null
+++ b/util/qlalr/README
@@ -0,0 +1 @@
+qlalr is used to generate parsers for QXmlStream and QtScript.
diff --git a/util/qlalr/compress.cpp b/util/qlalr/compress.cpp
new file mode 100644
index 0000000000..f1daac8daf
--- /dev/null
+++ b/util/qlalr/compress.cpp
@@ -0,0 +1,286 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QtDebug>
+#include <QtCore/QList>
+
+#include <algorithm>
+#include <iterator>
+#include <iostream>
+#include "compress.h"
+
+#define QLALR_NO_CHECK_SORTED_TABLE
+
+struct _Fit: public std::binary_function<int, int, bool>
+{
+ inline bool operator () (int a, int b) const
+ {
+ return a == 0 || b == 0 || a == b;
+ }
+};
+
+struct _PerfectMatch: public std::binary_function<int, int, bool>
+{
+ inline bool operator () (int a, int b) const
+ { return a == b; }
+};
+
+struct _GenerateCheck
+{
+ QVector<int>::const_iterator iterator;
+ int initial;
+
+ _GenerateCheck (QVector<int>::const_iterator it, int i):
+ iterator (it),
+ initial (i) {}
+
+ inline int operator () ()
+ {
+ int check = initial++;
+ return *iterator++ ? check : -1;
+ }
+};
+
+class UncompressedRow
+{
+public:
+ typedef const int *const_iterator;
+ typedef const int *iterator;
+
+public:
+ inline UncompressedRow ():
+ _M_index (0),
+ _M_begin (0),
+ _M_end (0),
+ _M_beginNonZeros (0),
+ _M_endNonZeros (0) {}
+
+ inline UncompressedRow (int index, const_iterator begin, const_iterator end)
+ { assign (index, begin, end); }
+
+ inline int index () const { return _M_index; }
+ inline const_iterator begin () const { return _M_begin; }
+ inline const_iterator end () const { return _M_end; }
+
+ inline void assign (int index, const_iterator begin, const_iterator end)
+ {
+ _M_index = index;
+ _M_begin = begin;
+ _M_end = end;
+
+ _M_beginNonZeros = _M_begin;
+ _M_endNonZeros = _M_end;
+
+ for (_M_beginNonZeros = _M_begin; _M_beginNonZeros != _M_end && ! _M_beginNonZeros [0]; ++_M_beginNonZeros)
+ /*continue*/ ;
+
+#if 0
+ for (_M_endNonZeros = _M_end; _M_endNonZeros != _M_beginNonZeros && ! _M_endNonZeros [-1]; --_M_endNonZeros)
+ /*continue*/ ;
+#endif
+ }
+
+ inline int at (int index) const
+ { return _M_begin [index]; }
+
+ inline bool isEmpty () const
+ { return _M_begin == _M_end; }
+
+ inline int size () const
+ { return _M_end - _M_begin; }
+
+ inline int nonZeroElements () const
+ { return _M_endNonZeros - _M_beginNonZeros; }
+
+ inline int count (int value) const
+ { return std::count (begin (), end (), value); }
+
+ inline const_iterator beginNonZeros () const
+ { return _M_beginNonZeros; }
+
+ inline const_iterator endNonZeros () const
+ { return _M_endNonZeros; }
+
+private:
+ int _M_index;
+ const_iterator _M_begin;
+ const_iterator _M_end;
+ const_iterator _M_beginNonZeros;
+ const_iterator _M_endNonZeros;
+};
+
+struct _SortUncompressedRow: public std::binary_function<UncompressedRow, UncompressedRow, bool>
+{
+ inline bool operator () (const UncompressedRow &a, const UncompressedRow &b) const
+ { return a.count (0) > b.count (0); }
+};
+
+Compress::Compress ()
+{
+}
+
+void Compress::operator () (int *table, int row_count, int column_count)
+{
+ index.clear ();
+ info.clear ();
+ check.clear ();
+
+ QVector<UncompressedRow> sortedTable (row_count);
+
+ for (int i = 0; i < row_count; ++i)
+ {
+ int *begin = &table [i * column_count];
+ int *end = begin + column_count;
+
+ sortedTable [i].assign (i, begin, end);
+ }
+
+ qSort (sortedTable.begin (), sortedTable.end (), _SortUncompressedRow ());
+
+#ifndef QLALR_NO_CHECK_SORTED_TABLE
+ int previous_zeros = INT_MAX;
+
+ foreach (UncompressedRow row, sortedTable)
+ {
+ int zeros = row.count (0);
+
+ Q_ASSERT (zeros <= previous_zeros);
+ zeros = previous_zeros;
+ qDebug () << "OK!";
+ }
+#endif
+
+ index.fill (-999999, row_count);
+
+ foreach (UncompressedRow row, sortedTable)
+ {
+ int first_token = std::distance (row.begin (), row.beginNonZeros ());
+ QVector<int>::iterator pos = info.begin ();
+
+ while (pos != info.end ())
+ {
+ if (pos == info.begin ())
+ {
+ // try to find a perfect match
+ QVector<int>::iterator pm = std::search (pos, info.end (), row.beginNonZeros (), row.endNonZeros (), _PerfectMatch ());
+
+ if (pm != info.end ())
+ {
+ pos = pm;
+ break;
+ }
+ }
+
+ pos = std::search (pos, info.end (), row.beginNonZeros (), row.endNonZeros (), _Fit ());
+
+ if (pos == info.end ())
+ break;
+
+ int idx = std::distance (info.begin (), pos) - first_token;
+ bool conflict = false;
+
+ for (int j = 0; ! conflict && j < row.size (); ++j)
+ {
+ if (row.at (j) == 0)
+ conflict |= idx + j >= 0 && check [idx + j] == j;
+
+ else
+ conflict |= check [idx + j] == j;
+ }
+
+ if (! conflict)
+ break;
+
+ ++pos;
+ }
+
+ if (pos == info.end ())
+ {
+ int size = info.size ();
+
+ info.resize (info.size () + row.nonZeroElements ());
+ check.resize (info.size ());
+
+ std::fill (check.begin () + size, check.end (), -1);
+ pos = info.begin () + size;
+ }
+
+ int offset = std::distance (info.begin (), pos);
+ index [row.index ()] = offset - first_token;
+
+ for (const int *it = row.beginNonZeros (); it != row.endNonZeros (); ++it, ++pos)
+ {
+ if (*it)
+ *pos = *it;
+ }
+
+ int i = row.index ();
+
+ for (int j = 0; j < row.size (); ++j)
+ {
+ if (row.at (j) == 0)
+ continue;
+
+ check [index [i] + j] = j;
+ }
+ }
+
+#if 0
+ foreach (UncompressedRow row, sortedTable)
+ {
+ int i = row.index ();
+ Q_ASSERT (i < sortedTable.size ());
+
+ for (int j = 0; j < row.size (); ++j)
+ {
+ if (row.at (j) == 0)
+ {
+ Q_ASSERT (index [i] + j < 0 || check [index [i] + j] != j);
+ continue;
+ }
+
+ Q_ASSERT ( info [index [i] + j] == row.at (j));
+ Q_ASSERT (check [index [i] + j] == j);
+ }
+ }
+#endif
+}
diff --git a/util/qlalr/compress.h b/util/qlalr/compress.h
new file mode 100644
index 0000000000..8b7ac60bc1
--- /dev/null
+++ b/util/qlalr/compress.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef COMPRESS_H
+#define COMPRESS_H
+
+#include <QtCore/QVector>
+
+class Compress
+{
+public:
+ Compress ();
+
+ void operator () (int *table, int row_count, int column_count);
+
+public:
+ QVector<int> index;
+ QVector<int> info;
+ QVector<int> check;
+};
+
+#endif // COMPRESS_H
diff --git a/util/qlalr/cppgenerator.cpp b/util/qlalr/cppgenerator.cpp
new file mode 100644
index 0000000000..9bfc1a9200
--- /dev/null
+++ b/util/qlalr/cppgenerator.cpp
@@ -0,0 +1,703 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QtCore>
+
+#include "cppgenerator.h"
+#include "lalr.h"
+#include "recognizer.h"
+
+QString CppGenerator::trollCopyrightHeader() const
+{
+ return QLatin1String(
+ "/****************************************************************************\n"
+ "**\n"
+ "** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).\n"
+ "**\n"
+ "** This file is part of the $MODULE$ of the Qt Toolkit.\n"
+ "**\n"
+ "** $TROLLTECH_DUAL_LICENSE$\n"
+ "**\n"
+ "** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n"
+ "** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n"
+ "**\n"
+ "****************************************************************************/\n"
+ "\n");
+}
+
+QString CppGenerator::trollPrivateCopyrightHeader() const
+{
+ return QLatin1String(
+ "//\n"
+ "// W A R N I N G\n"
+ "// -------------\n"
+ "//\n"
+ "// This file is not part of the Qt API. It exists for the convenience\n"
+ "// of other Qt classes. This header file may change from version to\n"
+ "// version without notice, or even be removed.\n"
+ "//\n"
+ "// We mean it.\n"
+ "//\n");
+}
+
+QString CppGenerator::startIncludeGuard(const QString &fileName)
+{
+ const QString normalized(QString(fileName).replace(QLatin1Char('.'), QLatin1Char('_')).toUpper());
+
+ return QString::fromLatin1("#ifndef %1\n"
+ "#define %2\n").arg(normalized, normalized);
+}
+
+QString CppGenerator::endIncludeGuard(const QString &fileName)
+{
+ const QString normalized(QString(fileName).replace(QLatin1Char('.'), QLatin1Char('_')).toUpper());
+
+ return QString::fromLatin1("#endif // %1\n").arg(normalized);
+}
+
+void CppGenerator::operator () ()
+{
+ // action table...
+ state_count = aut.states.size ();
+ terminal_count = grammar.terminals.size ();
+ non_terminal_count = grammar.non_terminals.size ();
+
+#define ACTION(i, j) table [(i) * terminal_count + (j)]
+#define GOTO(i, j) pgoto [(i) * non_terminal_count + (j)]
+
+ int *table = new int [state_count * terminal_count];
+ ::memset (table, 0, state_count * terminal_count * sizeof (int));
+
+ int *pgoto = new int [state_count * non_terminal_count];
+ ::memset (pgoto, 0, state_count * non_terminal_count * sizeof (int));
+
+ accept_state = -1;
+ int shift_reduce_conflict_count = 0;
+ int reduce_reduce_conflict_count = 0;
+
+ for (StatePointer state = aut.states.begin (); state != aut.states.end (); ++state)
+ {
+ int q = aut.id (state);
+
+ for (Bundle::iterator a = state->bundle.begin (); a != state->bundle.end (); ++a)
+ {
+ int symbol = aut.id (a.key ());
+ int r = aut.id (a.value ());
+
+ Q_ASSERT (r < state_count);
+
+ if (grammar.isNonTerminal (a.key ()))
+ {
+ Q_ASSERT (symbol >= terminal_count && symbol < grammar.names.size ());
+ GOTO (q, symbol - terminal_count) = r;
+ }
+
+ else
+ ACTION (q, symbol) = r;
+ }
+
+ for (ItemPointer item = state->closure.begin (); item != state->closure.end (); ++item)
+ {
+ if (item->dot != item->end_rhs ())
+ continue;
+
+ int r = aut.id (item->rule);
+
+ NameSet lookaheads = aut.lookaheads.value (item);
+
+ if (item->rule == grammar.goal)
+ accept_state = q;
+
+ foreach (Name s, lookaheads)
+ {
+ int &u = ACTION (q, aut.id (s));
+
+ if (u == 0)
+ u = - r;
+
+ else if (u < 0)
+ {
+ if (verbose)
+ qout << "*** Warning. Found a reduce/reduce conflict in state " << q << " on token ``" << s << "'' between rule "
+ << r << " and " << -u << endl;
+
+ ++reduce_reduce_conflict_count;
+
+ u = qMax (u, -r);
+
+ if (verbose)
+ qout << "\tresolved using rule " << -u << endl;
+ }
+
+ else if (u > 0)
+ {
+ if (item->rule->prec != grammar.names.end() && grammar.token_info.contains (s))
+ {
+ Grammar::TokenInfo info_r = grammar.token_info.value (item->rule->prec);
+ Grammar::TokenInfo info_s = grammar.token_info.value (s);
+
+ if (info_r.prec > info_s.prec)
+ u = -r;
+ else if (info_r.prec == info_s.prec)
+ {
+ switch (info_r.assoc) {
+ case Grammar::Left:
+ u = -r;
+ break;
+ case Grammar::Right:
+ // shift... nothing to do
+ break;
+ case Grammar::NonAssoc:
+ u = 0;
+ break;
+ } // switch
+ }
+ }
+
+ else
+ {
+ ++shift_reduce_conflict_count;
+
+ if (verbose)
+ qout << "*** Warning. Found a shift/reduce conflict in state " << q << " on token ``" << s << "'' with rule " << r << endl;
+ }
+ }
+ }
+ }
+ }
+
+ if (shift_reduce_conflict_count || reduce_reduce_conflict_count)
+ {
+ if (shift_reduce_conflict_count != grammar.expected_shift_reduce
+ || reduce_reduce_conflict_count != grammar.expected_reduce_reduce)
+ qerr << "*** Conflicts: " << shift_reduce_conflict_count << " shift/reduce, " << reduce_reduce_conflict_count << " reduce/reduce" << endl;
+
+ if (verbose)
+ qout << endl << "*** Conflicts: " << shift_reduce_conflict_count << " shift/reduce, " << reduce_reduce_conflict_count << " reduce/reduce" << endl
+ << endl;
+ }
+
+ QBitArray used_rules (grammar.rules.count ());
+
+ int q = 0;
+ for (StatePointer state = aut.states.begin (); state != aut.states.end (); ++state, ++q)
+ {
+ for (int j = 0; j < terminal_count; ++j)
+ {
+ int &u = ACTION (q, j);
+
+ if (u < 0)
+ used_rules.setBit (-u - 1);
+ }
+ }
+
+ for (int i = 0; i < used_rules.count (); ++i)
+ {
+ if (! used_rules.testBit (i))
+ {
+ RulePointer rule = grammar.rules.begin () + i;
+
+ if (rule != grammar.goal)
+ qerr << "*** Warning: Rule ``" << *rule << "'' is useless!" << endl;
+ }
+ }
+
+ q = 0;
+ for (StatePointer state = aut.states.begin (); state != aut.states.end (); ++state, ++q)
+ {
+ for (int j = 0; j < terminal_count; ++j)
+ {
+ int &u = ACTION (q, j);
+
+ if (u >= 0)
+ continue;
+
+ RulePointer rule = grammar.rules.begin () + (- u - 1);
+
+ if (state->defaultReduce == rule)
+ u = 0;
+ }
+ }
+
+ // ... compress the goto table
+ defgoto.resize (non_terminal_count);
+ for (int j = 0; j < non_terminal_count; ++j)
+ {
+ count.fill (0, state_count);
+
+ int &mx = defgoto [j];
+
+ for (int i = 0; i < state_count; ++i)
+ {
+ int r = GOTO (i, j);
+
+ if (! r)
+ continue;
+
+ ++count [r];
+
+ if (count [r] > count [mx])
+ mx = r;
+ }
+ }
+
+ for (int i = 0; i < state_count; ++i)
+ {
+ for (int j = 0; j < non_terminal_count; ++j)
+ {
+ int &r = GOTO (i, j);
+
+ if (r == defgoto [j])
+ r = 0;
+ }
+ }
+
+ compressed_action (table, state_count, terminal_count);
+ compressed_goto (pgoto, state_count, non_terminal_count);
+
+ delete[] table;
+ table = 0;
+
+ delete[] pgoto;
+ pgoto = 0;
+
+#undef ACTION
+#undef GOTO
+
+ if (! grammar.merged_output.isEmpty())
+ {
+ QFile f(grammar.merged_output);
+ if (! f.open (QFile::WriteOnly))
+ {
+ fprintf (stderr, "*** cannot create %s\n", qPrintable(grammar.merged_output));
+ return;
+ }
+
+ QTextStream out (&f);
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
+ if (troll_copyright)
+ {
+ out << trollCopyrightHeader()
+ << trollPrivateCopyrightHeader()
+ << endl;
+ }
+
+ out << startIncludeGuard(grammar.merged_output) << endl;
+
+ generateDecl (out);
+ generateImpl (out);
+ out << p.decls();
+ out << p.impls();
+ out << endl;
+
+ out << endIncludeGuard(grammar.merged_output) << endl;
+
+ return;
+ }
+
+ // default behaviour
+ QString declFileName = grammar.table_name.toLower () + QLatin1String("_p.h");
+ QString bitsFileName = grammar.table_name.toLower () + QLatin1String(".cpp");
+
+ { // decls...
+ QFile f (declFileName);
+ f.open (QFile::WriteOnly);
+ QTextStream out (&f);
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
+ QString prot = declFileName.toUpper ().replace (QLatin1Char ('.'), QLatin1Char ('_'));
+
+ if (troll_copyright)
+ {
+ out << trollCopyrightHeader()
+ << trollPrivateCopyrightHeader()
+ << endl;
+ }
+
+ out << "#ifndef " << prot << endl
+ << "#define " << prot << endl
+ << endl;
+
+ generateDecl (out);
+
+ out << "#endif // " << prot << endl << endl;
+ } // end decls
+
+ { // bits...
+ QFile f (bitsFileName);
+ f.open (QFile::WriteOnly);
+ QTextStream out (&f);
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+
+ if (troll_copyright)
+ out << trollCopyrightHeader();
+
+ out << "#include \"" << declFileName << "\"" << endl << endl;
+ generateImpl(out);
+
+ } // end bits
+
+ if (! grammar.decl_file_name.isEmpty ())
+ {
+ QFile f (grammar.decl_file_name);
+ f.open (QFile::WriteOnly);
+ QTextStream out (&f);
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+ out << p.decls();
+ }
+
+ if (! grammar.impl_file_name.isEmpty ())
+ {
+ QFile f (grammar.impl_file_name);
+ f.open (QFile::WriteOnly);
+ QTextStream out (&f);
+ out << "// This file was generated by qlalr - DO NOT EDIT!\n";
+ out << p.impls();
+ }
+}
+
+QString CppGenerator::debugInfoProt() const
+{
+ QString prot = QLatin1String("QLALR_NO_");
+ prot += grammar.table_name.toUpper();
+ prot += QLatin1String("_DEBUG_INFO");
+ return prot;
+}
+
+void CppGenerator::generateDecl (QTextStream &out)
+{
+ out << "class " << grammar.table_name << endl
+ << "{" << endl
+ << "public:" << endl
+ << " enum {" << endl;
+
+ foreach (Name t, grammar.terminals)
+ {
+ QString name = *t;
+ int value = std::distance (grammar.names.begin (), t);
+
+ if (name == QLatin1String ("$end"))
+ name = QLatin1String ("EOF_SYMBOL");
+
+ else if (name == QLatin1String ("$accept"))
+ name = QLatin1String ("ACCEPT_SYMBOL");
+
+ else
+ name.prepend (grammar.token_prefix);
+
+ out << " " << name << " = " << value << "," << endl;
+ }
+
+ out << endl
+ << " ACCEPT_STATE = " << accept_state << "," << endl
+ << " RULE_COUNT = " << grammar.rules.size () << "," << endl
+ << " STATE_COUNT = " << state_count << "," << endl
+ << " TERMINAL_COUNT = " << terminal_count << "," << endl
+ << " NON_TERMINAL_COUNT = " << non_terminal_count << "," << endl
+ << endl
+ << " GOTO_INDEX_OFFSET = " << compressed_action.index.size () << "," << endl
+ << " GOTO_INFO_OFFSET = " << compressed_action.info.size () << "," << endl
+ << " GOTO_CHECK_OFFSET = " << compressed_action.check.size () << endl
+ << " };" << endl
+ << endl
+ << " static const char *const spell [];" << endl
+ << " static const int lhs [];" << endl
+ << " static const int rhs [];" << endl;
+
+ if (debug_info)
+ {
+ QString prot = debugInfoProt();
+
+ out << endl << "#ifndef " << prot << endl
+ << " static const int rule_index [];" << endl
+ << " static const int rule_info [];" << endl
+ << "#endif // " << prot << endl << endl;
+ }
+
+ out << " static const int goto_default [];" << endl
+ << " static const int action_default [];" << endl
+ << " static const int action_index [];" << endl
+ << " static const int action_info [];" << endl
+ << " static const int action_check [];" << endl
+ << endl
+ << " static inline int nt_action (int state, int nt)" << endl
+ << " {" << endl
+ << " const int *const goto_index = &action_index [GOTO_INDEX_OFFSET];" << endl
+ << " const int *const goto_check = &action_check [GOTO_CHECK_OFFSET];" << endl
+ << endl
+ << " const int yyn = goto_index [state] + nt;" << endl
+ << endl
+ << " if (yyn < 0 || goto_check [yyn] != nt)" << endl
+ << " return goto_default [nt];" << endl
+ << endl
+ << " const int *const goto_info = &action_info [GOTO_INFO_OFFSET];" << endl
+ << " return goto_info [yyn];" << endl
+ << " }" << endl
+ << endl
+ << " static inline int t_action (int state, int token)" << endl
+ << " {" << endl
+ << " const int yyn = action_index [state] + token;" << endl
+ << endl
+ << " if (yyn < 0 || action_check [yyn] != token)" << endl
+ << " return - action_default [state];" << endl
+ << endl
+ << " return action_info [yyn];" << endl
+ << " }" << endl
+ << "};" << endl
+ << endl
+ << endl;
+}
+
+void CppGenerator::generateImpl (QTextStream &out)
+{
+ int idx = 0;
+
+ out << "const char *const " << grammar.table_name << "::spell [] = {";
+ idx = 0;
+
+ QMap<Name, int> name_ids;
+ bool first_nt = true;
+
+ for (Name t = grammar.names.begin (); t != grammar.names.end (); ++t, ++idx)
+ {
+ bool terminal = grammar.isTerminal (t);
+
+ if (! (debug_info || terminal))
+ break;
+
+ name_ids.insert (t, idx);
+
+ if (idx)
+ out << ", ";
+
+ if (! (idx % 10))
+ out << endl << " ";
+
+ if (terminal)
+ {
+ QString spell = grammar.spells.value (t);
+
+ if (spell.isEmpty ())
+ out << "0";
+ else
+ out << "\"" << spell << "\"";
+ }
+ else
+ {
+ if (first_nt)
+ {
+ first_nt = false;
+ QString prot = debugInfoProt();
+ out << endl << "#ifndef " << prot << endl;
+ }
+ out << "\"" << *t << "\"";
+ }
+ }
+
+ if (debug_info)
+ out << endl << "#endif // " << debugInfoProt() << endl;
+
+ out << "};" << endl << endl;
+
+ out << "const int " << grammar.table_name << "::lhs [] = {";
+ idx = 0;
+ for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
+ {
+ if (idx)
+ out << ", ";
+
+ if (! (idx % 10))
+ out << endl << " ";
+
+ out << aut.id (rule->lhs);
+ }
+ out << "};" << endl << endl;
+
+ out << "const int " << grammar.table_name << ":: rhs[] = {";
+ idx = 0;
+ for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
+ {
+ if (idx)
+ out << ", ";
+
+ if (! (idx % 10))
+ out << endl << " ";
+
+ out << rule->rhs.size ();
+ }
+ out << "};" << endl << endl;
+
+ if (debug_info)
+ {
+ QString prot = debugInfoProt();
+
+ out << endl << "#ifndef " << prot << endl;
+ out << "const int " << grammar.table_name << "::rule_info [] = {";
+ idx = 0;
+ for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
+ {
+ out << endl << " ";
+
+ if (idx)
+ out << ", ";
+ else
+ out << " ";
+
+ out << name_ids.value(rule->lhs);
+
+ foreach (Name n, rule->rhs)
+ out << ", " << name_ids.value (n);
+ }
+ out << "};" << endl << endl;
+
+ out << "const int " << grammar.table_name << "::rule_index [] = {";
+ idx = 0;
+ int offset = 0;
+ for (RulePointer rule = grammar.rules.begin (); rule != grammar.rules.end (); ++rule, ++idx)
+ {
+ if (idx)
+ out << ", ";
+
+ if (! (idx % 10))
+ out << endl << " ";
+
+ out << offset;
+ offset += rule->rhs.size () + 1;
+ }
+ out << "};" << endl
+ << "#endif // " << prot << endl << endl;
+ }
+
+ out << "const int " << grammar.table_name << "::action_default [] = {";
+ idx = 0;
+ for (StatePointer state = aut.states.begin (); state != aut.states.end (); ++state, ++idx)
+ {
+ if (state != aut.states.begin ())
+ out << ", ";
+
+ if (! (idx % 10))
+ out << endl << " ";
+
+ if (state->defaultReduce != grammar.rules.end ())
+ out << aut.id (state->defaultReduce);
+ else
+ out << "0";
+ }
+ out << "};" << endl << endl;
+
+ out << "const int " << grammar.table_name << "::goto_default [] = {";
+ for (int i = 0; i < defgoto.size (); ++i)
+ {
+ if (i)
+ out << ", ";
+
+ if (! (i % 10))
+ out << endl << " ";
+
+ out << defgoto [i];
+ }
+ out << "};" << endl << endl;
+
+ out << "const int " << grammar.table_name << "::action_index [] = {";
+ for (int i = 0; i < compressed_action.index.size (); ++i)
+ {
+ if (! (i % 10))
+ out << endl << " ";
+
+ out << compressed_action.index [i] << ", ";
+ }
+ out << endl;
+ for (int i = 0; i < compressed_goto.index.size (); ++i)
+ {
+ if (i)
+ out << ", ";
+
+ if (! (i % 10))
+ out << endl << " ";
+
+ out << compressed_goto.index [i];
+ }
+ out << "};" << endl << endl;
+
+ out << "const int " << grammar.table_name << "::action_info [] = {";
+ for (int i = 0; i < compressed_action.info.size (); ++i)
+ {
+ if (! (i % 10))
+ out << endl << " ";
+
+ out << compressed_action.info [i] << ", ";
+ }
+ out << endl;
+ for (int i = 0; i < compressed_goto.info.size (); ++i)
+ {
+ if (i)
+ out << ", ";
+
+ if (! (i % 10))
+ out << endl << " ";
+
+ out << compressed_goto.info [i];
+ }
+ out << "};" << endl << endl;
+
+ out << "const int " << grammar.table_name << "::action_check [] = {";
+ for (int i = 0; i < compressed_action.check.size (); ++i)
+ {
+ if (! (i % 10))
+ out << endl << " ";
+
+ out << compressed_action.check [i] << ", ";
+ }
+ out << endl;
+ for (int i = 0; i < compressed_goto.check.size (); ++i)
+ {
+ if (i)
+ out << ", ";
+
+ if (! (i % 10))
+ out << endl << " ";
+
+ out << compressed_goto.check [i];
+ }
+ out << "};" << endl << endl;
+}
diff --git a/util/qlalr/cppgenerator.h b/util/qlalr/cppgenerator.h
new file mode 100644
index 0000000000..dd3241375d
--- /dev/null
+++ b/util/qlalr/cppgenerator.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CPPGENERATOR_H
+#define CPPGENERATOR_H
+
+#include "lalr.h"
+#include "compress.h"
+
+class Grammar;
+class Automaton;
+class Recognizer;
+
+class CppGenerator
+{
+public:
+ CppGenerator(const Recognizer &p, Grammar &grammar, Automaton &aut, bool verbose):
+ p (p),
+ grammar (grammar),
+ aut (aut),
+ verbose (verbose),
+ debug_info (false),
+ troll_copyright (false) {}
+
+ void operator () ();
+
+ bool debugInfo () const { return debug_info; }
+ void setDebugInfo (bool d) { debug_info = d; }
+
+ bool trollCopyright () const { return troll_copyright; }
+ void setTrollCopyright (bool t) { troll_copyright = t; }
+
+private:
+ void generateDecl (QTextStream &out);
+ void generateImpl (QTextStream &out);
+
+ QString debugInfoProt() const;
+ QString trollCopyrightHeader() const;
+ QString trollPrivateCopyrightHeader() const;
+
+private:
+ static QString startIncludeGuard(const QString &fileName);
+ static QString endIncludeGuard(const QString &fileName);
+
+ const Recognizer &p;
+ Grammar &grammar;
+ Automaton &aut;
+ bool verbose;
+ int accept_state;
+ int state_count;
+ int terminal_count;
+ int non_terminal_count;
+ bool debug_info;
+ bool troll_copyright;
+ Compress compressed_action;
+ Compress compressed_goto;
+ QVector<int> count;
+ QVector<int> defgoto;
+};
+
+#endif // CPPGENERATOR_H
diff --git a/util/qlalr/doc/qlalr.qdocconf b/util/qlalr/doc/qlalr.qdocconf
new file mode 100644
index 0000000000..d97ff7d217
--- /dev/null
+++ b/util/qlalr/doc/qlalr.qdocconf
@@ -0,0 +1,65 @@
+# Run qdoc from the directory that contains this file.
+
+project = qlalr
+description = qlalr Reference Documentation
+url = http://doc.trolltech.com/
+
+language = Cpp
+
+# sourcedirs = $PWD/src
+sourcedirs = src
+sources.fileextensions = "*.qdoc"
+
+exampledirs = ../examples
+
+imagedirs = src/images
+outputdir = html
+codeindent = 1
+extraimages.HTML = qt-logo \
+ trolltech-logo
+
+macro.key = "\\bold"
+macro.menu = "\\bold"
+macro.gui = "\\bold"
+macro.reg.HTML = "<sup>&reg;</sup>"
+macro.raisedaster.HTML = "<sup>*</sup>"
+macro.BR.HTML = "<br />"
+macro.br.HTML = "<br />"
+macro.QD = "\\e{Qt Designer}"
+macro.QA = "\\e{Qt Assistant}"
+macro.eacute.HTML = "&eacute;"
+macro.aring.HTML = "&aring;"
+macro.oslash.HTML = "&oslash;"
+macro.ouml.HTML = "&ouml;"
+macro.Auml.HTML = "&Auml;"
+macro.uuml.HTML = "&uuml;"
+
+HTML.stylesheets = src/classic.css
+HTML.postheader = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n" \
+ "<tr>\n" \
+ "<td align=\"left\" valign=\"top\" width=\"32\">" \
+ "<a href=\"http://qtsoftware.com/products/qt\"><img src=\"images/qt-logo.png\" align=\"left\" width=\"32\" height=\"32\" border=\"0\" /></a>" \
+ "</td>\n" \
+ "<td width=\"1\">&nbsp;&nbsp;</td>" \
+ "<td class=\"postheader\" valign=\"center\">" \
+ "<a href=\"index.html\">" \
+ "<font color=\"#004faf\">Home</font></a>&nbsp;&middot;" \
+ " <a href=\"classes.html\">" \
+ "<font color=\"#004faf\">All&nbsp;Classes</font></a>&nbsp;&middot;" \
+ " <a href=\"mainclasses.html\">" \
+ "<font color=\"#004faf\">Main&nbsp;Classes</font></a>&nbsp;&middot;" \
+ " <a href=\"groups.html\">" \
+ "<font color=\"#004faf\">Grouped&nbsp;Classes</font></a>&nbsp;&middot;" \
+ " <a href=\"modules.html\">" \
+ "<font color=\"#004faf\">Modules</font></a>&nbsp;&middot;" \
+ " <a href=\"functions.html\">" \
+ "<font color=\"#004faf\">Functions</font></a>" \
+ "</td>\n" \
+ "<td align=\"right\" valign=\"top\" width=\"230\"><a href=\"http://qtsoftware.com\"><img src=\"images/trolltech-logo.png\" align=\"right\" width=\"203\" height=\"32\" border=\"0\" /></a></td></tr></table>"
+
+HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
+ "<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
+ "<td width=\"30%\">Copyright &copy; \$THISYEAR\$ <a href=\"trolltech.html\">Trolltech</a></td>\n" \
+ "<td width=\"40%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
+ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt \\version</div></td>\n" \
+ "</tr></table></div></address>"
diff --git a/util/qlalr/doc/src/classic.css b/util/qlalr/doc/src/classic.css
new file mode 100644
index 0000000000..afc66d548a
--- /dev/null
+++ b/util/qlalr/doc/src/classic.css
@@ -0,0 +1,97 @@
+h3.fn,span.fn
+{
+ margin-left: 1cm;
+ text-indent: -1cm;
+}
+
+a:link
+{
+ color: #004faf;
+ text-decoration: none
+}
+
+a:visited
+{
+ color: #672967;
+ text-decoration: none
+}
+
+td.postheader
+{
+ font-family: sans-serif
+}
+
+tr.address
+{
+ font-family: sans-serif
+}
+
+body
+{
+ background: #ffffff;
+ color: black
+}
+
+table tr.odd {
+ background: #f0f0f0;
+ color: black;
+}
+
+table tr.even {
+ background: #e4e4e4;
+ color: black;
+}
+
+table.annotated {
+ border-spacing: 0px;
+}
+
+table.annotated th {
+ font-weight: bold;
+ padding: 3px;
+ text-align: left
+}
+
+table.annotated td {
+ padding: 3px;
+}
+
+table tr pre
+{
+ padding-top: none;
+ padding-bottom: none;
+ padding-left: none;
+ padding-right: none;
+ border: none;
+ background: none
+}
+
+tr.qt-style
+{
+ background: #a2c511;
+ color: black
+}
+
+body pre
+{
+ padding: 0.2em;
+ border: #e7e7e7 1px solid;
+ background: #f1f1f1;
+ color: black
+}
+
+span.preprocessor, span.preprocessor a
+{
+ color: darkblue;
+}
+
+span.comment
+{
+ color: darkred;
+ font-style: italic
+}
+
+span.string,span.char
+{
+ color: darkgreen;
+}
diff --git a/util/qlalr/doc/src/images/qt-logo.png b/util/qlalr/doc/src/images/qt-logo.png
new file mode 100644
index 0000000000..2dc67161c1
--- /dev/null
+++ b/util/qlalr/doc/src/images/qt-logo.png
Binary files differ
diff --git a/util/qlalr/doc/src/images/trolltech-logo.png b/util/qlalr/doc/src/images/trolltech-logo.png
new file mode 100644
index 0000000000..19e3789d50
--- /dev/null
+++ b/util/qlalr/doc/src/images/trolltech-logo.png
Binary files differ
diff --git a/util/qlalr/doc/src/qlalr.qdoc b/util/qlalr/doc/src/qlalr.qdoc
new file mode 100644
index 0000000000..313c7a42aa
--- /dev/null
+++ b/util/qlalr/doc/src/qlalr.qdoc
@@ -0,0 +1,79 @@
+/*!
+ \page qlalr.html
+ \title qlalr
+ \nextpage qlalr - Writing Grammars
+
+ \section1 Table of Contents
+
+ \list
+ \o \l{qlalr - Writing Grammars}
+ \tableofcontents{1 qlalr - Writing Grammars}
+ \o \l{qlalr - Generating Code from Grammar Specifications}
+ \tableofcontents{1 qlalr - Generating Code from Grammar Specifications}
+ \o \l{qlalr - qlalr Grammar Specification}
+ \tableofcontents{1 qlalr - qlalr Grammar Specification}
+ \o \l{qlalr - Handling Conflicts}
+ \tableofcontents{1 qlalr - Handling Conflicts}
+ \o \l{qlalr - Error Handling and Recovery}
+ \tableofcontents{1 qlalr - Error Handling and Recovery}
+ \o \l{qlalr - References to External Information}
+ \tableofcontents{1 qlalr - References to External Information}
+ \endlist
+
+*/
+
+/*!
+ \page qlalr-files.html
+ \title qlalr - Writing Grammars
+
+ \contentspage qlalr
+ \previouspage qlalr
+ \nextpage qlalr - Generating Code from Grammar Specifications
+
+*/
+
+/*!
+ \page qlalr-generating.html
+ \title qlalr - Generating Code from Grammar Specifications
+
+ \contentspage qlalr
+ \previouspage qlalr - Writing Grammars
+ \nextpage qlalr - qlalr Grammar Specification
+*/
+
+/*!
+ \page qlalr-grammar-specification.html
+ \title qlalr - qlalr Grammar Specification
+
+ \contentspage qlalr
+ \previouspage qlalr - Generating Code from Grammar Specifications
+ \nextpage qlalr - Handling Conflicts
+
+*/
+
+/*!
+ \page qlalr-handling-conflicts.html
+ \title qlalr - Handling Conflicts
+
+ \contentspage qlalr
+ \previouspage qlalr - qlalr Grammar Specification
+ \nextpage qlalr - Error Handling and Recovery
+*/
+
+/*!
+ \page qlalr-handling-errors.html
+ \title qlalr - Error Handling and Recovery
+
+ \contentspage qlalr
+ \previouspage qlalr - Handling Conflicts
+ \nextpage qlalr - References to External Information
+*/
+
+/*!
+ \page qlalr-external-references.html
+ \title qlalr - References to External Information
+
+ \contentspage qlalr
+ \previouspage qlalr - Error Handling and Recovery
+*/
+
diff --git a/util/qlalr/dotgraph.cpp b/util/qlalr/dotgraph.cpp
new file mode 100644
index 0000000000..641ed01910
--- /dev/null
+++ b/util/qlalr/dotgraph.cpp
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QTextStream>
+
+#include "lalr.h"
+#include "dotgraph.h"
+
+DotGraph::DotGraph(QTextStream &o):
+ out (o)
+{
+}
+
+void DotGraph::operator () (Automaton *aut)
+{
+ Grammar *g = aut->_M_grammar;
+
+ out << "digraph {" << endl << endl;
+
+ out << "subgraph Includes {" << endl;
+ for (Automaton::IncludesGraph::iterator incl = Automaton::IncludesGraph::begin_nodes ();
+ incl != Automaton::IncludesGraph::end_nodes (); ++incl)
+ {
+ for (Automaton::IncludesGraph::edge_iterator edge = incl->begin (); edge != incl->end (); ++edge)
+ {
+ out << "\t\"(" << aut->id (incl->data.state) << ", " << incl->data.nt << ")\"";
+ out << "\t->\t";
+ out << "\"(" << aut->id ((*edge)->data.state) << ", " << (*edge)->data.nt << ")\"\t";
+ out << "[label=\"" << incl->data.state->follows [incl->data.nt] << "\"]";
+ out << endl;
+ }
+ }
+ out << "}" << endl << endl;
+
+
+ out << "subgraph LRA {" << endl;
+ //out << "node [shape=record];" << endl << endl;
+
+ for (StatePointer q = aut->states.begin (); q != aut->states.end (); ++q)
+ {
+ int state = aut->id (q);
+
+ out << "\t" << state << "\t[shape=record,label=\"{";
+
+ out << "<0> State " << state;
+
+ int index = 1;
+ for (ItemPointer item = q->kernel.begin (); item != q->kernel.end (); ++item)
+ out << "| <" << index++ << "> " << *item;
+
+ out << "}\"]" << endl;
+
+ for (Bundle::iterator a = q->bundle.begin (); a != q->bundle.end (); ++a)
+ {
+ const char *clr = g->isTerminal (a.key ()) ? "blue" : "red";
+ out << "\t" << state << "\t->\t" << aut->id (*a) << "\t[color=\"" << clr << "\",label=\"" << a.key () << "\"]" << endl;
+ }
+ out << endl;
+ }
+
+ out << "}" << endl;
+ out << endl << endl << "}" << endl;
+}
diff --git a/util/qlalr/dotgraph.h b/util/qlalr/dotgraph.h
new file mode 100644
index 0000000000..e308b74cc8
--- /dev/null
+++ b/util/qlalr/dotgraph.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DOTGRAPH_H
+#define DOTGRAPH_H
+
+QT_FORWARD_DECLARE_CLASS(QTextStream);
+class Automaton;
+
+class DotGraph
+{
+public:
+ DotGraph (QTextStream &out);
+
+ void operator () (Automaton *a);
+
+private:
+ QTextStream &out;
+};
+
+#endif // DOTGRAPH_H
diff --git a/util/qlalr/examples/dummy-xml/dummy-xml.pro b/util/qlalr/examples/dummy-xml/dummy-xml.pro
new file mode 100644
index 0000000000..e54512d6c9
--- /dev/null
+++ b/util/qlalr/examples/dummy-xml/dummy-xml.pro
@@ -0,0 +1,2 @@
+HEADERS += xmltable_p.h
+SOURCES += xmlreader.cpp xmltable.cpp
diff --git a/util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp b/util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp
new file mode 100644
index 0000000000..54f5e0e29f
--- /dev/null
+++ b/util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp
@@ -0,0 +1,83 @@
+
+#include <cstdlib>
+#include <cstdio>
+
+enum Token {
+ EOF_SYMBOL,
+ LEFT_ANGLE,
+ RIGHT_ANGLE,
+ ANY,
+};
+
+static int current_char;
+static int yytoken;
+static bool in_tag = false;
+
+bool parseXmlStream();
+bool parseTagOrWord();
+bool parseTagName();
+
+inline int nextToken()
+{
+ current_char = fgetc(stdin);
+ if (current_char == EOF) {
+ return (yytoken = EOF_SYMBOL);
+ } else if (current_char == '<') {
+ in_tag = true;
+ return (yytoken = LEFT_ANGLE);
+ } else if (in_tag && current_char == '>') {
+ in_tag = false;
+ return (yytoken = RIGHT_ANGLE);
+ }
+ return (yytoken = ANY);
+}
+
+bool parse()
+{
+ nextToken();
+ return parseXmlStream();
+}
+
+bool parseXmlStream()
+{
+ while (parseTagOrWord())
+ ;
+
+ return true;
+}
+
+bool parseTagOrWord()
+{
+ if (yytoken == LEFT_ANGLE) {
+ nextToken();
+ if (! parseTagName())
+ return false;
+ if (yytoken != RIGHT_ANGLE)
+ return false;
+ nextToken();
+
+ fprintf (stderr, "*** found a tag\n");
+
+ } else if (yytoken == ANY) {
+ nextToken();
+ } else {
+ return false;
+ }
+ return true;
+}
+
+bool parseTagName()
+{
+ while (yytoken == ANY)
+ nextToken();
+
+ return true;
+}
+
+int main()
+{
+ if (parse())
+ printf("OK\n");
+ else
+ printf("KO\n");
+}
diff --git a/util/qlalr/examples/dummy-xml/xml.g b/util/qlalr/examples/dummy-xml/xml.g
new file mode 100644
index 0000000000..212c8297c8
--- /dev/null
+++ b/util/qlalr/examples/dummy-xml/xml.g
@@ -0,0 +1,202 @@
+
+%parser XMLTable
+
+%impl xmlreader.cpp
+
+%token LEFT_ANGLE
+%token RIGHT_ANGLE
+%token ANY
+
+%start XmlStream
+
+/.
+#ifndef XMLREADER_H
+#define XMLREADER_H
+
+#include <QtCore>
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include "$header"
+
+class XMLReader: protected $table
+{
+public:
+ XMLReader(const QByteArray &bytes);
+ ~XMLReader();
+
+ bool parse();
+
+ inline int nextToken()
+ {
+ switch (*bufptr++) {
+ case '\0':
+ return EOF_SYMBOL;
+
+ case '<':
+ in_tag = true;
+ return LEFT_ANGLE;
+
+ case '>':
+ if (! in_tag)
+ break;
+ in_tag = false;
+ return RIGHT_ANGLE;
+ break;
+
+ } // switch
+
+ return ANY;
+ }
+
+protected:
+ inline void reallocateStack();
+
+ inline int &sym(int index)
+ { return stack [tos + index - 1].ival; }
+
+protected:
+ int tos;
+ int stack_size;
+
+ struct StackItem {
+ int state;
+ int ival;
+ };
+
+ QVarLengthArray<StackItem> stack;
+ unsigned in_tag: 1;
+ QByteArray bytes;
+ const char *bufptr;
+};
+
+inline void XMLReader::reallocateStack()
+{
+ if (! stack_size)
+ stack_size = 128;
+ else
+ stack_size <<= 1;
+
+ stack.resize (stack_size);
+}
+
+#endif // XMLREADER_H
+
+XMLReader::XMLReader(const QByteArray &bytes):
+ tos(0),
+ stack_size(0),
+ bytes(bytes)
+{
+ bufptr = bytes.constData();
+}
+
+XMLReader::~XMLReader()
+{
+}
+
+bool XMLReader::parse()
+{
+ const int INITIAL_STATE = 0;
+
+ in_tag = 0;
+ bufptr = bytes.constData();
+
+ int yytoken = -1;
+ reallocateStack();
+
+ tos = 0;
+ stack [++tos].state = INITIAL_STATE;
+
+ while (true)
+ {
+ const int state = stack [tos].state;
+
+ if (yytoken == -1 && - TERMINAL_COUNT != action_index [state])
+ yytoken = nextToken();
+
+ int act = t_action (state, yytoken);
+
+ if (act == ACCEPT_STATE)
+ return true;
+
+ else if (act > 0)
+ {
+ if (++tos == stack_size)
+ reallocateStack();
+
+ stack [tos].ival = *bufptr; // ### save the token value here
+ stack [tos].state = act;
+ yytoken = -1;
+ }
+
+ else if (act < 0)
+ {
+ int r = - act - 1;
+
+ tos -= rhs [r];
+ act = stack [tos++].state;
+
+ switch (r) {
+./
+
+
+
+
+XmlStream: TagOrWord ;
+XmlStream: XmlStream TagOrWord ;
+
+TagOrWord: Tag ;
+TagOrWord: ANY ;
+
+Tag: LEFT_ANGLE TagName RIGHT_ANGLE ;
+/.
+ case $rule_number: {
+ fprintf (stderr, "*** found a tag\n");
+ } break;
+./
+
+TagName: ANY ;
+TagName: TagName ANY ;
+
+
+/.
+ } // switch
+
+ stack [tos].state = nt_action (act, lhs [r] - TERMINAL_COUNT);
+ }
+
+ else
+ {
+ // ### ERROR RECOVERY HERE
+ break;
+ }
+ }
+
+ return false;
+}
+
+
+
+/////////////////////////////
+// entry point
+/////////////////////////////
+int main(int, char *argv[])
+{
+ QFile f (argv[1]);
+
+ if (f.open(QFile::ReadOnly)) {
+ QByteArray contents = f.readAll();
+ XMLReader parser (contents);
+
+ if (parser.parse())
+ printf ("OK\n");
+ else
+ printf ("KO\n");
+ }
+}
+
+
+
+
+./
+
diff --git a/util/qlalr/examples/glsl/build.sh b/util/qlalr/examples/glsl/build.sh
new file mode 100644
index 0000000000..031691152e
--- /dev/null
+++ b/util/qlalr/examples/glsl/build.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+${FLEX-flex} -oglsl-lex.incl glsl-lex.l
+${QLALR-qlalr} glsl.g
+
+qmake
+make
diff --git a/util/qlalr/examples/glsl/glsl b/util/qlalr/examples/glsl/glsl
new file mode 100755
index 0000000000..c19018f985
--- /dev/null
+++ b/util/qlalr/examples/glsl/glsl
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+me=$(dirname $0)
+${CPP-cpp} -nostdinc $* | $me/glsl.bin
diff --git a/util/qlalr/examples/glsl/glsl-lex.l b/util/qlalr/examples/glsl/glsl-lex.l
new file mode 100644
index 0000000000..1e07c3b71e
--- /dev/null
+++ b/util/qlalr/examples/glsl/glsl-lex.l
@@ -0,0 +1,201 @@
+
+%{
+#include <cassert>
+#define YY_DECL int GLSLParser::nextToken()
+%}
+
+%option noyywrap
+
+hex [0-9a-fA-F]
+dec [1-9][0-9]*
+oct [0-7]
+digit [0-9]
+
+fract {digit}*\.{digit}+|{digit}+\.
+exp [eE][+-]?{digit}+
+
+hexfract {hex}*\.{hex}+|{hex}+\.
+binexp [pP][+-]?{digit}+
+
+icst ({dec}|0{oct}*|0[xX]{hex}+)
+
+%%
+
+[\n] { ++context.line; }
+[ \t\r]+ { /* skip */ }
+
+"+=" { return ADD_ASSIGN; }
+"&" { return AMPERSAND; }
+"&=" { return AND_ASSIGN; }
+"&&" { return AND_OP; }
+"attribute" { return ATTRIBUTE; }
+"!" { return BANG; }
+"bool" { return BOOL; }
+"true" { return BOOLCONSTANT; }
+"false" { return BOOLCONSTANT; }
+"break" { return BREAK; }
+"bvec2" { return BVEC2; }
+"bvec3" { return BVEC3; }
+"bvec4" { return BVEC4; }
+":" { return COLON; }
+"," { return COMMA; }
+"const" { return CONST; }
+"continue" { return CONTINUE; }
+"-" { return DASH; }
+"--" { return DEC_OP; }
+"discard" { return DISCARD; }
+"/=" { return DIV_ASSIGN; }
+"do" { return DO; }
+"." { return DOT; }
+"else" { return ELSE; }
+"=" { return EQUAL; }
+"==" { return EQ_OP; }
+"float" { return FLOAT; }
+"for" { return FOR; }
+">=" { return GE_OP; }
+"if" { return IF; }
+"in" { return IN; }
+"++" { return INC_OP; }
+"inout" { return INOUT; }
+"int" { return INT; }
+"ivec2" { return IVEC2; }
+"ivec3" { return IVEC3; }
+"ivec4" { return IVEC4; }
+"<" { return LEFT_ANGLE; }
+"<<=" { return LEFT_ASSIGN; }
+"{" { return LEFT_BRACE; }
+"[" { return LEFT_BRACKET; }
+"<<" { return LEFT_OP; }
+"(" { return LEFT_PAREN; }
+"<=" { return LE_OP; }
+"mat2" { return MAT2; }
+"mat3" { return MAT3; }
+"mat4" { return MAT4; }
+"%=" { return MOD_ASSIGN; }
+"*=" { return MUL_ASSIGN; }
+"!=" { return NE_OP; }
+"|=" { return OR_ASSIGN; }
+"||" { return OR_OP; }
+"out" { return OUT; }
+"%" { return PERCENT; }
+"+" { return PLUS; }
+"?" { return QUESTION; }
+"return" { return RETURN; }
+">" { return RIGHT_ANGLE; }
+">>=" { return RIGHT_ASSIGN; }
+"}" { return RIGHT_BRACE; }
+"]" { return RIGHT_BRACKET; }
+">>" { return RIGHT_OP; }
+")" { return RIGHT_PAREN; }
+"sampler1D" { return SAMPLER1D; }
+"sampler1DShadow" { return SAMPLER1DSHADOW; }
+"sampler2D" { return SAMPLER2D; }
+"sampler2DShadow" { return SAMPLER2DSHADOW; }
+"sampler3D" { return SAMPLER3D; }
+"samplerCube" { return SAMPLERCUBE; }
+";" { return SEMICOLON; }
+"/" { return SLASH; }
+"*" { return STAR; }
+"struct" { return STRUCT; }
+"-=" { return SUB_ASSIGN; }
+"~" { return TILDE; }
+"uniform" { return UNIFORM; }
+"varying" { return VARYING; }
+"vec2" { return VEC2; }
+"vec3" { return VEC3; }
+"vec4" { return VEC4; }
+"|" { return VERTICAL_BAR; }
+"void" { return VOID; }
+"while" { return WHILE; }
+"^=" { return XOR_ASSIGN; }
+"^" { return XOR_OP; }
+
+#[ \t]+[0-9]+.* {
+ char *eptr = 0;
+ context.line = (int) strtod(&yytext[1], &eptr);
+ QString fn = QString::fromUtf8(eptr).trimmed();
+ if (fn.length() > 2)
+ context.fileName = fn.mid(1, fn.length()-2);
+}
+
+#.* {
+ /* skip */
+}
+
+[_a-zA-Z][_a-zA-Z0-9]* {
+ yylval.s = intern (yytext);
+
+ if (isTypename (yylval.s))
+ return TYPE_NAME;
+
+ return IDENTIFIER;
+}
+
+{icst} {
+ yylval.i = (int) strtol (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{icst}[uU] {
+ yylval.u = (unsigned) strtoul (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{icst}[uU][lL] {
+ yylval.ul = strtoul (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{icst}[lL][uU] {
+ yylval.ul = strtoul (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{icst}[lL] {
+ yylval.l = strtol (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{icst}[uU](ll|LL) {
+ yylval.l = strtoull (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{icst}(ll|LL) {
+ yylval.l = strtoll (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{icst}(ll|LL)[uU] {
+ yylval.l = strtoull (yytext, 0, 0);
+ return INTCONSTANT;
+}
+
+{fract}{exp}?[flFL]? {
+ yylval.f = strtof (yytext, 0);
+ return FLOATCONSTANT;
+}
+
+{digit}+{exp}[flFL]? {
+ yylval.f = strtof (yytext, 0);
+ return FLOATCONSTANT;
+}
+
+0[xX]{hexfract}{binexp}[flFL]? {
+ yylval.f = strtof (yytext, 0);
+ return FLOATCONSTANT;
+}
+
+0[xX]{hex}+{binexp}[flFL]? {
+ yylval.f = strtof (yytext, 0);
+ return FLOATCONSTANT;
+}
+
+. {
+ fprintf (stderr, "invalid char: %d\n", yytext [0]);
+ return ERROR;
+}
+
+
+%%
+
diff --git a/util/qlalr/examples/glsl/glsl.g b/util/qlalr/examples/glsl/glsl.g
new file mode 100644
index 0000000000..3f3a3ad573
--- /dev/null
+++ b/util/qlalr/examples/glsl/glsl.g
@@ -0,0 +1,621 @@
+
+%parser GLSLParserTable
+%merged_output glsl.cpp
+
+%token ADD_ASSIGN
+%token AMPERSAND
+%token AND_ASSIGN
+%token AND_OP
+%token ATTRIBUTE
+%token BANG
+%token BOOL
+%token BOOLCONSTANT
+%token BREAK
+%token BVEC2
+%token BVEC3
+%token BVEC4
+%token CARET
+%token COLON
+%token COMMA
+%token CONST
+%token CONTINUE
+%token DASH
+%token DEC_OP
+%token DISCARD
+%token DIV_ASSIGN
+%token DO
+%token DOT
+%token ELSE
+%token EQUAL
+%token EQ_OP
+%token FLOAT
+%token FLOATCONSTANT
+%token FOR
+%token GE_OP
+%token IDENTIFIER
+%token IF
+%token IN
+%token INC_OP
+%token INOUT
+%token INT
+%token INTCONSTANT
+%token IVEC2
+%token IVEC3
+%token IVEC4
+%token LEFT_ANGLE
+%token LEFT_ASSIGN
+%token LEFT_BRACE
+%token LEFT_BRACKET
+%token LEFT_OP
+%token LEFT_PAREN
+%token LE_OP
+%token MAT2
+%token MAT3
+%token MAT4
+%token MOD_ASSIGN
+%token MUL_ASSIGN
+%token NE_OP
+%token OR_ASSIGN
+%token OR_OP
+%token OUT
+%token PERCENT
+%token PLUS
+%token QUESTION
+%token RETURN
+%token RIGHT_ANGLE
+%token RIGHT_ASSIGN
+%token RIGHT_BRACE
+%token RIGHT_BRACKET
+%token RIGHT_OP
+%token RIGHT_PAREN
+%token SAMPLER1D
+%token SAMPLER1DSHADOW
+%token SAMPLER2D
+%token SAMPLER2DSHADOW
+%token SAMPLER3D
+%token SAMPLERCUBE
+%token SEMICOLON
+%token SLASH
+%token STAR
+%token STRUCT
+%token SUB_ASSIGN
+%token TILDE
+%token TYPE_NAME
+%token UNIFORM
+%token VARYING
+%token VEC2
+%token VEC3
+%token VEC4
+%token VERTICAL_BAR
+%token VOID
+%token WHILE
+%token XOR_ASSIGN
+%token XOR_OP
+%token ERROR
+%start translation_unit
+
+
+/:
+
+#include <QtCore>
+
+class GLSLParser: protected $table
+{
+public:
+ union Value {
+ int i;
+ unsigned u;
+ unsigned long ul;
+ unsigned long long ull;
+ long l;
+ double d;
+ float f;
+ const QString *s;
+ // ### more...
+ };
+
+public:
+ GLSLParser();
+ ~GLSLParser();
+
+ bool parse();
+
+protected:
+ inline void reallocateStack();
+
+ inline Value &sym(int index)
+ { return sym_stack [tos + index - 1]; }
+
+ int nextToken();
+
+ bool isTypename(const QString *s) const
+ {
+ return types.contains(s);
+ }
+
+ inline const QString *intern(const QString &s)
+ { return &*string_repository.insert(s); }
+
+protected:
+ int tos;
+ int stack_size;
+ Value *sym_stack;
+ int *state_stack;
+ Value yylval;
+ QSet<QString> string_repository;
+ QSet<const QString*> types;
+
+ struct /*Context*/ {
+ int line;
+ const QString *function_name;
+ QString fileName;
+
+ void init()
+ {
+ line = 1;
+ function_name = 0;
+ fileName.clear();
+ }
+ } context;
+};
+
+inline void GLSLParser::reallocateStack()
+{
+ if (! stack_size)
+ stack_size = 128;
+ else
+ stack_size <<= 1;
+
+ sym_stack = reinterpret_cast<Value*> (qRealloc(sym_stack, stack_size * sizeof(Value)));
+ state_stack = reinterpret_cast<int*> (qRealloc(state_stack, stack_size * sizeof(int)));
+}
+
+:/
+
+
+/.
+
+GLSLParser::GLSLParser():
+ tos(0),
+ stack_size(0),
+ sym_stack(0),
+ state_stack(0)
+{
+}
+
+GLSLParser::~GLSLParser()
+{
+ if (stack_size) {
+ qFree(sym_stack);
+ qFree(state_stack);
+ }
+}
+
+bool GLSLParser::parse()
+{
+ const int INITIAL_STATE = 0;
+
+ int yytoken = -1;
+
+ reallocateStack();
+
+ context.init();
+ tos = 0;
+ state_stack[++tos] = INITIAL_STATE;
+
+ while (true)
+ {
+ if (yytoken == -1 && - TERMINAL_COUNT != action_index [state_stack [tos]])
+ yytoken = nextToken();
+
+ int act = t_action (state_stack [tos], yytoken);
+
+ if (act == ACCEPT_STATE) {
+ return true;
+ }
+
+ else if (act > 0)
+ {
+ if (++tos == stack_size)
+ reallocateStack();
+
+ sym_stack [tos] = yylval;
+ state_stack [tos] = act;
+ yytoken = -1;
+ }
+
+ else if (act < 0)
+ {
+ int r = - act - 1;
+
+ int ridx = rule_index [r];
+ printf ("*** reduce using rule %d %s ::=", r + 1, spell[rule_info [ridx]]);
+ ++ridx;
+ for (int i = ridx; i < ridx + rhs [r]; ++i)
+ {
+ int symbol = rule_info [i];
+ if (const char *name = spell [symbol])
+ printf (" %s", name);
+ else
+ printf (" #%d", symbol);
+ }
+ printf ("\n");
+
+ tos -= rhs [r];
+ act = state_stack [tos++];
+
+ switch (r) {
+./
+
+
+translation_unit ::= external_declaration ;
+translation_unit ::= translation_unit external_declaration ;
+
+variable_identifier ::= IDENTIFIER ;
+
+primary_expression ::= variable_identifier ;
+primary_expression ::= INTCONSTANT ;
+primary_expression ::= FLOATCONSTANT ;
+primary_expression ::= BOOLCONSTANT ;
+primary_expression ::= LEFT_PAREN expression RIGHT_PAREN ;
+
+
+postfix_expression ::= primary_expression ;
+postfix_expression ::= postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET ;
+postfix_expression ::= function_call ;
+postfix_expression ::= postfix_expression DOT IDENTIFIER ;
+postfix_expression ::= postfix_expression DOT TYPE_NAME ;
+postfix_expression ::= postfix_expression INC_OP ;
+postfix_expression ::= postfix_expression DEC_OP ;
+
+
+integer_expression ::= expression ;
+
+function_call ::= function_call_generic ;
+
+function_call_generic ::= function_call_header_with_parameters RIGHT_PAREN ;
+function_call_generic ::= function_call_header_no_parameters RIGHT_PAREN ;
+
+function_call_header_no_parameters ::= function_call_header VOID ;
+function_call_header_no_parameters ::= function_call_header ;
+
+
+function_call_header_with_parameters ::= function_call_header assignment_expression ;
+function_call_header_with_parameters ::= function_call_header_with_parameters COMMA assignment_expression ;
+
+function_call_header ::= function_identifier LEFT_PAREN ;
+
+function_identifier ::= constructor_identifier ;
+function_identifier ::= IDENTIFIER ;
+
+
+constructor_identifier ::= FLOAT ;
+constructor_identifier ::= INT ;
+constructor_identifier ::= BOOL ;
+constructor_identifier ::= VEC2 ;
+constructor_identifier ::= VEC3 ;
+constructor_identifier ::= VEC4 ;
+constructor_identifier ::= BVEC2 ;
+constructor_identifier ::= BVEC3 ;
+constructor_identifier ::= BVEC4 ;
+constructor_identifier ::= IVEC2 ;
+constructor_identifier ::= IVEC3 ;
+constructor_identifier ::= IVEC4 ;
+constructor_identifier ::= MAT2 ;
+constructor_identifier ::= MAT3 ;
+constructor_identifier ::= MAT4 ;
+constructor_identifier ::= TYPE_NAME ;
+
+unary_expression ::= postfix_expression ;
+unary_expression ::= INC_OP unary_expression ;
+unary_expression ::= DEC_OP unary_expression ;
+unary_expression ::= unary_operator unary_expression ;
+
+-- Grammar Note: No traditional style type casts.
+
+unary_operator ::= PLUS ;
+unary_operator ::= DASH ;
+unary_operator ::= BANG ;
+unary_operator ::= TILDE ; -- reserved
+
+-- Grammar Note: No '*' or '&' unary ops. Pointers are not supported.
+
+multiplicative_expression ::= unary_expression ;
+multiplicative_expression ::= multiplicative_expression STAR unary_expression ;
+multiplicative_expression ::= multiplicative_expression SLASH unary_expression ;
+multiplicative_expression ::= multiplicative_expression PERCENT unary_expression ; -- reserved
+
+
+additive_expression ::= multiplicative_expression ;
+additive_expression ::= additive_expression PLUS multiplicative_expression ;
+additive_expression ::= additive_expression DASH multiplicative_expression ;
+
+shift_expression ::= additive_expression ;
+shift_expression ::= shift_expression LEFT_OP additive_expression ; -- reserved
+shift_expression ::= shift_expression RIGHT_OP additive_expression ; -- reserved
+
+relational_expression ::= shift_expression ;
+relational_expression ::= relational_expression LEFT_ANGLE shift_expression ;
+relational_expression ::= relational_expression RIGHT_ANGLE shift_expression ;
+relational_expression ::= relational_expression LE_OP shift_expression ;
+relational_expression ::= relational_expression GE_OP shift_expression ;
+
+equality_expression ::= relational_expression ;
+equality_expression ::= equality_expression EQ_OP relational_expression ;
+equality_expression ::= equality_expression NE_OP relational_expression ;
+
+and_expression ::= equality_expression ;
+and_expression ::= and_expression AMPERSAND equality_expression ; -- reserved
+
+exclusive_or_expression ::= and_expression ;
+exclusive_or_expression ::= exclusive_or_expression CARET and_expression ; -- reserved
+
+inclusive_or_expression ::= exclusive_or_expression ;
+inclusive_or_expression ::= inclusive_or_expression VERTICAL_BAR exclusive_or_expression ; -- reserved
+
+logical_and_expression ::= inclusive_or_expression ;
+logical_and_expression ::= logical_and_expression AND_OP inclusive_or_expression ;
+
+logical_xor_expression ::= logical_and_expression ;
+logical_xor_expression ::= logical_xor_expression XOR_OP logical_and_expression ;
+
+logical_or_expression ::= logical_xor_expression ;
+logical_or_expression ::= logical_or_expression OR_OP logical_xor_expression ;
+
+conditional_expression ::= logical_or_expression ;
+conditional_expression ::= logical_or_expression QUESTION expression COLON conditional_expression ;
+
+assignment_expression ::= conditional_expression ;
+assignment_expression ::= unary_expression assignment_operator assignment_expression ;
+
+assignment_operator ::= EQUAL ;
+assignment_operator ::= MUL_ASSIGN ;
+assignment_operator ::= DIV_ASSIGN ;
+assignment_operator ::= MOD_ASSIGN ; -- reserved
+assignment_operator ::= ADD_ASSIGN ;
+assignment_operator ::= SUB_ASSIGN ;
+assignment_operator ::= LEFT_ASSIGN ; -- reserved
+assignment_operator ::= RIGHT_ASSIGN ; -- reserved
+assignment_operator ::= AND_ASSIGN ; -- reserved
+assignment_operator ::= XOR_ASSIGN ; -- reserved
+assignment_operator ::= OR_ASSIGN ; -- reserved
+
+expression ::= assignment_expression ;
+expression ::= expression COMMA assignment_expression ;
+
+constant_expression ::= conditional_expression ;
+
+declaration ::= function_prototype SEMICOLON ;
+declaration ::= init_declarator_list SEMICOLON ;
+
+function_prototype ::= function_declarator RIGHT_PAREN ;
+
+function_declarator ::= function_header ;
+function_declarator ::= function_header_with_parameters ;
+
+function_header_with_parameters ::= function_header parameter_declaration ;
+function_header_with_parameters ::= function_header_with_parameters COMMA parameter_declaration ;
+
+function_header ::= fully_specified_type IDENTIFIER LEFT_PAREN ;
+/.
+case $rule_number: {
+ context.function_name = sym(2).s;
+} break;
+./
+
+parameter_declarator ::= type_specifier IDENTIFIER ;
+parameter_declarator ::= type_specifier IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ;
+
+parameter_declaration ::= type_qualifier parameter_qualifier parameter_declarator ;
+parameter_declaration ::= parameter_qualifier parameter_declarator ;
+parameter_declaration ::= type_qualifier parameter_qualifier parameter_type_specifier ;
+parameter_declaration ::= parameter_qualifier parameter_type_specifier ;
+
+parameter_qualifier ::= ;
+parameter_qualifier ::= IN ;
+parameter_qualifier ::= OUT ;
+parameter_qualifier ::= INOUT ;
+
+parameter_type_specifier ::= type_specifier ;
+parameter_type_specifier ::= type_specifier LEFT_BRACKET constant_expression RIGHT_BRACKET ;
+
+init_declarator_list ::= single_declaration ;
+init_declarator_list ::= init_declarator_list COMMA IDENTIFIER ;
+init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ;
+init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression ;
+init_declarator_list ::= RIGHT_BRACKET ;
+init_declarator_list ::= init_declarator_list COMMA IDENTIFIER EQUAL initializer ;
+
+single_declaration ::= fully_specified_type ;
+single_declaration ::= fully_specified_type IDENTIFIER ;
+single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ;
+single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ;
+single_declaration ::= fully_specified_type IDENTIFIER EQUAL initializer ;
+
+-- Grammar Note: No 'enum', or 'typedef'.
+
+--fully_specified_type ::= type_specifier ;
+--fully_specified_type ::= type_qualifier type_specifier ;
+
+fully_specified_type ::= type_specifier ;
+fully_specified_type ::= type_qualifier ;
+fully_specified_type ::= fully_specified_type type_specifier ;
+fully_specified_type ::= fully_specified_type type_qualifier ;
+
+type_qualifier ::= CONST ;
+type_qualifier ::= ATTRIBUTE ; -- Vertex only.
+type_qualifier ::= VARYING ;
+type_qualifier ::= UNIFORM ;
+
+type_specifier ::= VOID ;
+type_specifier ::= FLOAT ;
+type_specifier ::= INT ;
+type_specifier ::= BOOL ;
+type_specifier ::= VEC2 ;
+type_specifier ::= VEC3 ;
+type_specifier ::= VEC4 ;
+type_specifier ::= BVEC2 ;
+type_specifier ::= BVEC3 ;
+type_specifier ::= BVEC4 ;
+type_specifier ::= IVEC2 ;
+type_specifier ::= IVEC3 ;
+type_specifier ::= IVEC4 ;
+type_specifier ::= MAT2 ;
+type_specifier ::= MAT3 ;
+type_specifier ::= MAT4 ;
+type_specifier ::= SAMPLER1D ;
+type_specifier ::= SAMPLER2D ;
+type_specifier ::= SAMPLER3D ;
+type_specifier ::= SAMPLERCUBE ;
+type_specifier ::= SAMPLER1DSHADOW ;
+type_specifier ::= SAMPLER2DSHADOW ;
+type_specifier ::= struct_specifier ;
+type_specifier ::= TYPE_NAME ;
+
+struct_specifier ::= STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE ;
+/.
+case $rule_number: {
+ types.insert(sym(2).s);
+} break;
+./
+
+struct_specifier ::= STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE ;
+
+struct_declaration_list ::= struct_declaration ;
+struct_declaration_list ::= struct_declaration_list struct_declaration ;
+
+struct_declaration ::= type_specifier struct_declarator_list SEMICOLON ;
+
+struct_declarator_list ::= struct_declarator ;
+struct_declarator_list ::= struct_declarator_list COMMA struct_declarator ;
+
+struct_declarator ::= IDENTIFIER ;
+struct_declarator ::= IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ;
+
+initializer ::= assignment_expression ;
+
+declaration_statement ::= declaration ;
+
+statement ::= compound_statement ;
+statement ::= simple_statement ;
+
+-- Grammar Note: No labeled statements; 'goto' is not supported.
+
+simple_statement ::= declaration_statement ;
+simple_statement ::= expression_statement ;
+simple_statement ::= selection_statement ;
+simple_statement ::= iteration_statement ;
+simple_statement ::= jump_statement ;
+
+compound_statement ::= LEFT_BRACE RIGHT_BRACE ;
+compound_statement ::= LEFT_BRACE statement_list RIGHT_BRACE ;
+
+statement_no_new_scope ::= compound_statement_no_new_scope ;
+statement_no_new_scope ::= simple_statement ;
+
+compound_statement_no_new_scope ::= LEFT_BRACE RIGHT_BRACE ;
+compound_statement_no_new_scope ::= LEFT_BRACE statement_list RIGHT_BRACE ;
+
+statement_list ::= statement ;
+statement_list ::= statement_list statement ;
+
+expression_statement ::= SEMICOLON ;
+expression_statement ::= expression SEMICOLON ;
+
+selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN statement ELSE statement ;
+selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN statement ;
+
+-- Grammar Note: No 'switch'. Switch statements not supported.
+
+condition ::= expression ;
+condition ::= fully_specified_type IDENTIFIER EQUAL initializer ;
+
+iteration_statement ::= WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope ;
+iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON ;
+iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope ;
+
+for_init_statement ::= expression_statement ;
+for_init_statement ::= declaration_statement ;
+
+conditionopt ::= ;
+conditionopt ::= condition ;
+
+for_rest_statement ::= conditionopt SEMICOLON ;
+for_rest_statement ::= conditionopt SEMICOLON expression ;
+
+jump_statement ::= CONTINUE SEMICOLON ;
+jump_statement ::= BREAK SEMICOLON ;
+jump_statement ::= RETURN SEMICOLON ;
+jump_statement ::= RETURN expression SEMICOLON ;
+jump_statement ::= DISCARD SEMICOLON ; -- Fragment shader only.
+
+-- Grammar Note: No 'goto'. Gotos are not supported.
+
+external_declaration ::= function_definition ;
+external_declaration ::= declaration ;
+
+function_definition ::= function_prototype compound_statement_no_new_scope ;
+/.
+ case $rule_number: { // $rule_name
+ qDebug() << "--> function" << *context.function_name;
+ } break;
+./
+
+
+
+
+
+/.
+ } // switch
+
+ state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT);
+ }
+
+ else
+ {
+ // ### ERROR RECOVERY HERE
+ break;
+ }
+ }
+
+ fprintf (stderr, "%s:%d: Syntax Error\n", qPrintable(context.fileName), context.line);
+
+ return false;
+}
+
+#include "glsl-lex.incl"
+
+
+/////////////////////////////
+// entry point
+/////////////////////////////
+int main()
+{
+#if 0 // dump the GLSL grammar
+ for (int r = 0; r < GLSLParserTable::RULE_COUNT; ++r)
+ {
+ int ridx = GLSLParserTable::rule_index [r];
+ int rhs = GLSLParserTable::rhs [r];
+ printf ("%3d) %s ::=", r + 1, GLSLParserTable::spell[GLSLParserTable::rule_info [ridx]]);
+ ++ridx;
+ for (int i = ridx; i < ridx + rhs; ++i)
+ {
+ int symbol = GLSLParserTable::rule_info [i];
+ if (const char *name = GLSLParserTable::spell [symbol])
+ printf (" %s", name);
+ else
+ printf (" #%d", symbol);
+ }
+ printf ("\n");
+ }
+#endif
+
+ GLSLParser parser;
+
+ if (parser.parse())
+ qDebug() << "OK";
+ else
+ qDebug() << "KO";
+}
+
+./
diff --git a/util/qlalr/examples/glsl/glsl.pro b/util/qlalr/examples/glsl/glsl.pro
new file mode 100644
index 0000000000..8ac775f21d
--- /dev/null
+++ b/util/qlalr/examples/glsl/glsl.pro
@@ -0,0 +1,4 @@
+QT = core
+TARGET = glsl.bin
+SOURCES += glsl.cpp
+
diff --git a/util/qlalr/examples/lambda/COMPILE b/util/qlalr/examples/lambda/COMPILE
new file mode 100644
index 0000000000..3226ec95fa
--- /dev/null
+++ b/util/qlalr/examples/lambda/COMPILE
@@ -0,0 +1,3 @@
+qlalr lambda.g
+qmake
+make
diff --git a/util/qlalr/examples/lambda/lambda.g b/util/qlalr/examples/lambda/lambda.g
new file mode 100644
index 0000000000..2fb95940fd
--- /dev/null
+++ b/util/qlalr/examples/lambda/lambda.g
@@ -0,0 +1,41 @@
+
+-- lambda calculus
+
+%decl lambda.h
+
+%token LPAREN
+%token RPAREN
+%token ID
+%token FUN
+%token DOT
+
+%nonassoc SHIFT_THERE
+%nonassoc LPAREN RPAREN ID FUN DOT
+%nonassoc REDUCE_HERE
+
+%start Expr
+
+/:
+enum {
+:/
+
+
+Expr ::= ID %prec SHIFT_THERE ;
+/: Symbol = $rule_number,
+:/
+
+Expr ::= LPAREN Expr RPAREN %prec SHIFT_THERE ;
+/: SubExpression = $rule_number,
+:/
+
+Expr ::= Expr Expr %prec REDUCE_HERE ;
+/: Appl = $rule_number,
+:/
+
+Expr ::= FUN ID DOT Expr %prec SHIFT_THERE ;
+/: Abstr = $rule_number,
+:/
+
+/:};
+:/
+
diff --git a/util/qlalr/examples/lambda/lambda.pro b/util/qlalr/examples/lambda/lambda.pro
new file mode 100644
index 0000000000..dfe4824027
--- /dev/null
+++ b/util/qlalr/examples/lambda/lambda.pro
@@ -0,0 +1,3 @@
+HEADERS += lambda.h parser_table_p.h
+SOURCES += main.cpp parser_table.cpp
+QT = core
diff --git a/util/qlalr/examples/lambda/main.cpp b/util/qlalr/examples/lambda/main.cpp
new file mode 100644
index 0000000000..c70f9a5bdb
--- /dev/null
+++ b/util/qlalr/examples/lambda/main.cpp
@@ -0,0 +1,160 @@
+
+#include "lambda.h"
+
+
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include "parser_table_p.h"
+
+class Parser: protected parser_table
+{
+public:
+ union Value {
+ int ival;
+ // ### more...
+ };
+
+public:
+ Parser();
+ ~Parser();
+
+ bool parse();
+
+protected:
+ inline void reallocateStack();
+
+ inline Value &sym(int index)
+ { return sym_stack [tos + index - 1]; }
+
+ int nextToken();
+ void consumeRule(int ruleno);
+
+protected:
+ int tos;
+ int stack_size;
+ Value *sym_stack;
+ int *state_stack;
+ int current_char;
+ unsigned in_tag: 1;
+};
+
+inline void Parser::reallocateStack()
+{
+ if (! stack_size)
+ stack_size = 128;
+ else
+ stack_size <<= 1;
+
+ sym_stack = reinterpret_cast<Value*> (::realloc(sym_stack, stack_size * sizeof(Value)));
+ state_stack = reinterpret_cast<int*> (::realloc(state_stack, stack_size * sizeof(int)));
+}
+
+Parser::Parser():
+ tos(0),
+ stack_size(0),
+ sym_stack(0),
+ state_stack(0)
+{
+}
+
+Parser::~Parser()
+{
+ if (stack_size) {
+ ::free(sym_stack);
+ ::free(state_stack);
+ }
+}
+
+bool Parser::parse()
+{
+ const int INITIAL_STATE = 0;
+
+ current_char = 0;
+ in_tag = 0;
+
+ int yytoken = -1;
+ reallocateStack();
+
+ tos = 0;
+ state_stack[++tos] = INITIAL_STATE;
+
+ while (true)
+ {
+ if (yytoken == -1 && - TERMINAL_COUNT != action_index [state_stack [tos]])
+ yytoken = nextToken();
+
+ int act = t_action (state_stack [tos], yytoken);
+
+ if (act == ACCEPT_STATE) {
+ return true;
+ }
+
+ else if (act > 0)
+ {
+ if (++tos == stack_size)
+ reallocateStack();
+
+ sym_stack [tos].ival = current_char; // ### save the token value here
+ state_stack [tos] = act;
+ yytoken = -1;
+ }
+
+ else if (act < 0)
+ {
+ int r = - act - 1;
+
+ tos -= rhs [r];
+ act = state_stack [tos++];
+ consumeRule (r);
+ state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT);
+ }
+
+ else
+ break;
+ }
+
+ return false;
+}
+
+
+int Parser::nextToken()
+{
+ static int tokens[] = { ID, ID, ID, EOF_SYMBOL };
+ static int *tk = tokens;
+
+ return *tk++;
+}
+
+void Parser::consumeRule(int ruleno)
+{
+ switch (ruleno) {
+ case Symbol:
+ printf("symbol\n");
+ break;
+ case SubExpression:
+ printf("sub-expr\n");
+ break;
+ case Appl:
+ printf("appl\n");
+ break;
+ case Abstr:
+ printf("abstr\n");
+ break;
+ }
+}
+
+/////////////////////////////
+// entry point
+/////////////////////////////
+int main()
+{
+ Parser parser;
+
+ if (parser.parse())
+ printf ("OK\n");
+ else
+ printf ("KO\n");
+}
+
+
diff --git a/util/qlalr/examples/qparser/COMPILE b/util/qlalr/examples/qparser/COMPILE
new file mode 100644
index 0000000000..4aad300a9f
--- /dev/null
+++ b/util/qlalr/examples/qparser/COMPILE
@@ -0,0 +1,3 @@
+qlalr calc.g
+qmake
+make
diff --git a/util/qlalr/examples/qparser/calc.g b/util/qlalr/examples/qparser/calc.g
new file mode 100644
index 0000000000..24371d48b7
--- /dev/null
+++ b/util/qlalr/examples/qparser/calc.g
@@ -0,0 +1,93 @@
+
+%parser calc_grammar
+%decl calc_parser.h
+%impl calc_parser.cpp
+
+%token_prefix Token_
+%token number
+%token lparen
+%token rparen
+%token plus
+%token minus
+
+%start Goal
+
+/:
+#ifndef CALC_PARSER_H
+#define CALC_PARSER_H
+
+#include "qparser.h"
+#include "calc_grammar_p.h"
+
+class CalcParser: public QParser<CalcParser, $table>
+{
+public:
+ int nextToken();
+ void consumeRule(int ruleno);
+};
+
+#endif // CALC_PARSER_H
+:/
+
+
+
+
+
+/.
+#include "calc_parser.h"
+
+#include <QtDebug>
+#include <cstdlib>
+
+void CalcParser::consumeRule(int ruleno)
+ {
+ switch (ruleno) {
+./
+
+Goal: Expression ;
+/.
+case $rule_number:
+ qDebug() << "value:" << sym(1);
+ break;
+./
+
+PrimaryExpression: number ;
+PrimaryExpression: lparen Expression rparen ;
+/.
+case $rule_number:
+ sym(1) = sym (2);
+ break;
+./
+
+Expression: PrimaryExpression ;
+
+Expression: Expression plus PrimaryExpression;
+/.
+case $rule_number:
+ sym(1) += sym (3);
+ break;
+./
+
+Expression: Expression minus PrimaryExpression;
+/.
+case $rule_number:
+ sym(1) -= sym (3);
+ break;
+./
+
+
+
+/.
+ } // switch
+}
+
+#include <cstdio>
+
+int main()
+{
+ CalcParser p;
+
+ if (p.parse())
+ printf("ok\n");
+}
+./
diff --git a/util/qlalr/examples/qparser/calc.l b/util/qlalr/examples/qparser/calc.l
new file mode 100644
index 0000000000..95181d5213
--- /dev/null
+++ b/util/qlalr/examples/qparser/calc.l
@@ -0,0 +1,20 @@
+
+%option noyywrap
+
+%{
+#include "calc_parser.h"
+#include <cstdlib>
+
+#define YY_DECL int CalcParser::nextToken()
+%}
+
+%%
+
+[ \t\n] { /* eat me */ }
+[0-9]+ { sym(1) = atoi (yytext); return Token_number; }
+"(" { return Token_lparen; }
+")" { return Token_rparen; }
+"+" { return Token_plus; }
+"-" { return Token_minus; }
+
+%%
diff --git a/util/qlalr/examples/qparser/qparser.cpp b/util/qlalr/examples/qparser/qparser.cpp
new file mode 100644
index 0000000000..5a18ee2cac
--- /dev/null
+++ b/util/qlalr/examples/qparser/qparser.cpp
@@ -0,0 +1,3 @@
+
+#include "qparser.h"
+
diff --git a/util/qlalr/examples/qparser/qparser.h b/util/qlalr/examples/qparser/qparser.h
new file mode 100644
index 0000000000..e3ff61d7c8
--- /dev/null
+++ b/util/qlalr/examples/qparser/qparser.h
@@ -0,0 +1,111 @@
+#ifndef QPARSER_H
+#define QPARSER_H
+
+#include <QtCore/QSharedDataPointer>
+#include <QtCore/QVarLengthArray>
+
+template <typename _Parser, typename _Table, typename _Value = int>
+class QParser: protected _Table
+{
+public:
+ QParser();
+ ~QParser();
+
+ bool parse();
+
+ inline _Value &sym(int index);
+
+private:
+ inline int nextToken()
+ {
+ return static_cast<_Parser*> (this)->nextToken();
+ }
+
+ inline void consumeRule(int rule)
+ {
+ static_cast<_Parser*> (this)->consumeRule(rule);
+ }
+
+ enum { DefaultStackSize = 128 };
+
+ struct Data: public QSharedData
+ {
+ Data(): stackSize (DefaultStackSize), tos (0) {}
+
+ QVarLengthArray<int, DefaultStackSize> stateStack;
+ QVarLengthArray<_Value, DefaultStackSize> parseStack;
+ int stackSize;
+ int tos;
+
+ void reallocateStack() {
+ stackSize <<= 1;
+ stateStack.resize(stackSize);
+ parseStack.resize(stackSize);
+ }
+ };
+
+ QSharedDataPointer<Data> d;
+};
+
+template <typename _Parser, typename _Table, typename _Value>
+inline _Value &QParser<_Parser, _Table, _Value>::sym(int n)
+{
+ return d->parseStack [d->tos + n - 1];
+}
+
+template <typename _Parser, typename _Table, typename _Value>
+QParser<_Parser, _Table, _Value>::QParser():
+ d(new Data())
+{
+}
+
+template <typename _Parser, typename _Table, typename _Value>
+QParser<_Parser, _Table, _Value>::~QParser()
+{
+}
+
+template <typename _Parser, typename _Table, typename _Value>
+bool QParser<_Parser, _Table, _Value>::parse()
+{
+ const int INITIAL_STATE = 0;
+
+ d->tos = 0;
+ d->reallocateStack();
+
+ int act = d->stateStack[++d->tos] = INITIAL_STATE;
+ int token = -1;
+
+ forever {
+ if (token == -1 && - _Table::TERMINAL_COUNT != _Table::action_index[act])
+ token = nextToken();
+
+ act = _Table::t_action(act, token);
+
+ if (d->stateStack[d->tos] == _Table::ACCEPT_STATE)
+ return true;
+
+ else if (act > 0) {
+ if (++d->tos == d->stackSize)
+ d->reallocateStack();
+
+ d->parseStack[d->tos] = d->parseStack[d->tos - 1];
+ d->stateStack[d->tos] = act;
+ token = -1;
+ }
+
+ else if (act < 0) {
+ int r = - act - 1;
+ d->tos -= _Table::rhs[r];
+ act = d->stateStack[d->tos++];
+ consumeRule(r);
+ act = d->stateStack[d->tos] = _Table::nt_action(act, _Table::lhs[r] - _Table::TERMINAL_COUNT);
+ }
+
+ else break;
+ }
+
+ return false;
+}
+
+
+#endif // QPARSER_H
diff --git a/util/qlalr/examples/qparser/qparser.pro b/util/qlalr/examples/qparser/qparser.pro
new file mode 100644
index 0000000000..938e336939
--- /dev/null
+++ b/util/qlalr/examples/qparser/qparser.pro
@@ -0,0 +1,4 @@
+QT = core
+HEADERS += calc_grammar_p.h calc_parser.h qparser.h
+SOURCES += calc_grammar.cpp calc_parser.cpp qparser.cpp
+LEXSOURCES += calc.l
diff --git a/util/qlalr/grammar.cpp b/util/qlalr/grammar.cpp
new file mode 100644
index 0000000000..9e5dabfdd5
--- /dev/null
+++ b/util/qlalr/grammar.cpp
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "grammar_p.h"
+
+const char *const grammar::spell [] = {
+ "end of file", "identifier", "string literal", "%decl", "%expect", "%expect-lr", "%impl", "%left", "%merged_output", "%nonassoc",
+ "%parser", "%prec", "%right", "%start", "%token", "%token_prefix", ":", "|", ";", 0,
+ 0, 0};
+
+const int grammar::lhs [] = {
+ 22, 23, 23, 29, 25, 28, 28, 28, 28, 28,
+ 28, 28, 24, 24, 31, 32, 32, 33, 33, 34,
+ 34, 34, 31, 35, 35, 36, 37, 37, 38, 38,
+ 30, 30, 26, 26, 40, 39, 41, 41, 44, 43,
+ 43, 42, 42, 27, 45};
+
+const int grammar:: rhs[] = {
+ 4, 1, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 1, 2, 2, 1, 2, 2, 2, 1,
+ 1, 1, 2, 1, 2, 1, 1, 1, 1, 2,
+ 0, 1, 1, 2, 2, 4, 3, 6, 0, 0,
+ 2, 1, 2, 0, 2};
+
+const int grammar::action_default [] = {
+ 44, 2, 44, 0, 0, 0, 0, 13, 0, 0,
+ 3, 0, 0, 0, 8, 10, 11, 9, 7, 6,
+ 12, 20, 22, 0, 21, 0, 44, 31, 0, 14,
+ 26, 24, 23, 25, 4, 33, 1, 0, 34, 44,
+ 35, 42, 39, 40, 0, 31, 44, 40, 43, 0,
+ 31, 41, 29, 27, 28, 32, 38, 30, 36, 31,
+ 37, 5, 44, 16, 15, 18, 19, 17, 45};
+
+const int grammar::goto_default [] = {
+ 3, 2, 13, 26, 36, 41, 10, 27, 61, 29,
+ 64, 63, 23, 32, 31, 52, 55, 38, 39, 42,
+ 43, 59, 44, 0};
+
+const int grammar::action_index [] = {
+ -22, -22, 54, 1, 5, 15, 20, -22, -1, 6,
+ -22, 3, 2, 35, -22, -22, -22, -22, -22, -22,
+ -22, -22, -22, 10, -22, 7, -22, 14, 9, -22,
+ -22, -22, 8, -22, -22, -22, 11, -2, -22, -22,
+ -22, -22, -3, 16, 13, 14, -22, 17, -22, 4,
+ 14, -22, -22, -22, -22, 14, -22, -22, -22, 14,
+ -22, -22, 0, -22, 12, -22, -22, -22, -22,
+
+ 2, -24, -2, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, -24, -24, -24, -4, -24, -24, -24,
+ -24, -24, -14, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, -24, -24, 0, -16, -15, -24, -24,
+ 15, -24, -24, -24, -24, -10, -24, -24, -24, 1,
+ -24, -24, -3, -24, -1, -24, -24, -24, -24};
+
+const int grammar::action_info [] = {
+ 17, 68, 66, 20, 19, 51, 14, 18, 34, 30,
+ 62, 30, 37, 62, 40, 45, 15, 48, 48, 0,
+ 0, 16, 0, 0, 0, 0, 0, 49, 49, 0,
+ 46, 0, 0, 53, 54, 0, 0, 0, 0, 0,
+ 0, 0, 21, 0, 22, 0, 0, 24, 25, 28,
+ 0, 0, 0, 0, 0, 0, 0, 4, 5, 6,
+ 8, 0, 9, 0, 11, 0, 0, 0, 0, 12,
+ 0, 0, 0, 0, 0, 0,
+
+ 33, 35, 65, 7, 47, 57, 50, 1, 58, 60,
+ 67, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 56, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+const int grammar::action_check [] = {
+ 1, 0, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 16, 18, 1, 1, 1, -1,
+ -1, 1, -1, -1, -1, -1, -1, 11, 11, -1,
+ 17, -1, -1, 19, 20, -1, -1, -1, -1, -1,
+ -1, -1, 7, -1, 9, -1, -1, 12, 13, 14,
+ -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
+ 6, -1, 8, -1, 10, -1, -1, -1, -1, 15,
+ -1, -1, -1, -1, -1, -1,
+
+ 14, 5, 5, 5, 20, 15, 21, 5, 8, 8,
+ 11, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 8, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1};
+
diff --git a/util/qlalr/grammar_p.h b/util/qlalr/grammar_p.h
new file mode 100644
index 0000000000..a9a4172ce9
--- /dev/null
+++ b/util/qlalr/grammar_p.h
@@ -0,0 +1,119 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef GRAMMAR_P_H
+#define GRAMMAR_P_H
+
+class grammar
+{
+public:
+ enum {
+ EOF_SYMBOL = 0,
+ COLON = 16,
+ DECL = 19,
+ DECL_FILE = 3,
+ ERROR = 21,
+ EXPECT = 4,
+ EXPECT_RR = 5,
+ ID = 1,
+ IMPL = 20,
+ IMPL_FILE = 6,
+ LEFT = 7,
+ MERGED_OUTPUT = 8,
+ NONASSOC = 9,
+ OR = 17,
+ PARSER = 10,
+ PREC = 11,
+ RIGHT = 12,
+ SEMICOLON = 18,
+ START = 13,
+ STRING_LITERAL = 2,
+ TOKEN = 14,
+ TOKEN_PREFIX = 15,
+
+ ACCEPT_STATE = 68,
+ RULE_COUNT = 45,
+ STATE_COUNT = 69,
+ TERMINAL_COUNT = 22,
+ NON_TERMINAL_COUNT = 24,
+
+ GOTO_INDEX_OFFSET = 69,
+ GOTO_INFO_OFFSET = 76,
+ GOTO_CHECK_OFFSET = 76
+ };
+
+ static const char *const spell [];
+ static const int lhs [];
+ static const int rhs [];
+ static const int goto_default [];
+ static const int action_default [];
+ static const int action_index [];
+ static const int action_info [];
+ static const int action_check [];
+
+ inline int nt_action (int state, int nt) const
+ {
+ const int *const goto_index = &action_index [GOTO_INDEX_OFFSET];
+ const int *const goto_check = &action_check [GOTO_CHECK_OFFSET];
+
+ const int yyn = goto_index [state] + nt;
+
+ if (yyn < 0 || goto_check [yyn] != nt)
+ return goto_default [nt];
+
+ const int *const goto_info = &action_info [GOTO_INFO_OFFSET];
+ return goto_info [yyn];
+ }
+
+ inline int t_action (int state, int token) const
+ {
+ const int yyn = action_index [state] + token;
+
+ if (yyn < 0 || action_check [yyn] != token)
+ return - action_default [state];
+
+ return action_info [yyn];
+ }
+};
+
+
+#endif // GRAMMAR_P_H
+
diff --git a/util/qlalr/lalr.cpp b/util/qlalr/lalr.cpp
new file mode 100644
index 0000000000..51c2674dad
--- /dev/null
+++ b/util/qlalr/lalr.cpp
@@ -0,0 +1,783 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include "lalr.h"
+#include <limits.h>
+
+#include <algorithm>
+
+#define QLALR_NO_DEBUG_NULLABLES
+#define QLALR_NO_DEBUG_LOOKBACKS
+#define QLALR_NO_DEBUG_DIRECT_READS
+#define QLALR_NO_DEBUG_READS
+#define QLALR_NO_DEBUG_INCLUDES
+#define QLALR_NO_DEBUG_LOOKAHEADS
+
+QT_BEGIN_NAMESPACE
+QTextStream qerr (stderr, QIODevice::WriteOnly);
+QTextStream qout (stdout, QIODevice::WriteOnly);
+
+bool operator < (Name a, Name b)
+{
+ return *a < *b;
+}
+
+bool operator < (ItemPointer a, ItemPointer b)
+{
+ return &*a < &*b;
+}
+
+bool operator < (StatePointer a, StatePointer b)
+{
+ return &*a < &*b;
+}
+QT_END_NAMESPACE
+
+bool Read::operator < (const Read &other) const
+{
+ if (state == other.state)
+ return nt < other.nt;
+
+ return state < other.state;
+}
+
+bool Include::operator < (const Include &other) const
+{
+ if (state == other.state)
+ return nt < other.nt;
+
+ return state < other.state;
+}
+
+bool Lookback::operator < (const Lookback &other) const
+{
+ if (state == other.state)
+ return nt < other.nt;
+
+ return state < other.state;
+}
+
+QTextStream &operator << (QTextStream &out, const Name &n)
+{
+ return out << *n;
+}
+
+QTextStream &operator << (QTextStream &out, const Rule &r)
+{
+ out << *r.lhs << " ::=";
+
+ for (NameList::const_iterator name = r.rhs.begin (); name != r.rhs.end (); ++name)
+ out << " " << **name;
+
+ return out;
+}
+
+QTextStream &operator << (QTextStream &out, const NameSet &ns)
+{
+ out << "{";
+
+ for (NameSet::const_iterator n = ns.begin (); n != ns.end (); ++n)
+ {
+ if (n != ns.begin ())
+ out << ", ";
+
+ out << *n;
+ }
+
+ return out << "}";
+}
+
+Item Item::next () const
+{
+ Q_ASSERT (! isReduceItem ());
+
+ Item n;
+ n.rule = rule;
+ n.dot = dot;
+ ++n.dot;
+
+ return n;
+}
+
+QTextStream &operator << (QTextStream &out, const Item &item)
+{
+ RulePointer r = item.rule;
+
+ out << *r->lhs << ":";
+ for (NameList::iterator name = r->rhs.begin (); name != r->rhs.end (); ++name)
+ {
+ out << " ";
+
+ if (item.dot == name)
+ out << ". ";
+
+ out << **name;
+ }
+
+ if (item.isReduceItem ())
+ out << " .";
+
+ return out;
+}
+
+State::State (Grammar *g):
+ defaultReduce (g->rules.end ())
+{
+}
+
+QPair<ItemPointer, bool> State::insert (const Item &item)
+{
+ ItemPointer it = qFind (kernel.begin (), kernel.end (), item);
+
+ if (it != kernel.end ())
+ return qMakePair (it, false);
+
+ return qMakePair (kernel.insert (it, item), true);
+}
+
+QPair<ItemPointer, bool> State::insertClosure (const Item &item)
+{
+ ItemPointer it = qFind (closure.begin (), closure.end (), item);
+
+ if (it != closure.end ())
+ return qMakePair (it, false);
+
+ return qMakePair (closure.insert (it, item), true);
+}
+
+
+/////////////////////////////////////////////////////////////
+// Grammar
+/////////////////////////////////////////////////////////////
+Grammar::Grammar ():
+ start (names.end ())
+{
+ expected_shift_reduce = 0;
+ expected_reduce_reduce = 0;
+ current_prec = 0;
+ current_assoc = NonAssoc;
+
+ table_name = QLatin1String ("parser_table");
+
+ tk_end = intern ("$end");
+ terminals.insert (tk_end);
+ spells.insert (tk_end, "end of file");
+
+ /*tk_error= terminals.insert (intern ("error"))*/;
+}
+
+Name Grammar::intern (const QString &id)
+{
+ Name name = qFind (names.begin (), names.end (), id);
+
+ if (name == names.end ())
+ name = names.insert (names.end (), id);
+
+ return name;
+}
+
+void Grammar::buildRuleMap ()
+{
+ NameSet undefined;
+ for (RulePointer rule = rules.begin (); rule != rules.end (); ++rule)
+ {
+ for (NameList::iterator it = rule->rhs.begin (); it != rule->rhs.end (); ++it)
+ {
+ Name name = *it;
+ if (isTerminal (name) || declared_lhs.find (name) != declared_lhs.end ()
+ || undefined.find (name) != undefined.end ())
+ continue;
+
+ undefined.insert(name);
+ fprintf (stderr, "*** Warning. Symbol `%s' is not defined\n", qPrintable (*name));
+ }
+
+ rule_map.insert (rule->lhs, rule);
+ }
+}
+
+void Grammar::buildExtendedGrammar ()
+{
+ accept_symbol = intern ("$accept");
+ goal = rules.insert (rules.end (), Rule ());
+ goal->lhs = accept_symbol;
+ goal->rhs.push_back (start);
+ goal->rhs.push_back (tk_end);
+
+ non_terminals.insert (accept_symbol);
+}
+
+struct _Nullable: public std::unary_function<Name, bool>
+{
+ Automaton *_M_automaton;
+
+ _Nullable (Automaton *aut):
+ _M_automaton (aut) {}
+
+ bool operator () (Name name) const
+ { return _M_automaton->nullables.find (name) != _M_automaton->nullables.end (); }
+};
+
+Automaton::Automaton (Grammar *g):
+ _M_grammar (g),
+ start (states.end ())
+{
+}
+
+int Automaton::id (RulePointer rule)
+{
+ return 1 + std::distance (_M_grammar->rules.begin (), rule);
+}
+
+int Automaton::id (Name name)
+{
+ return std::distance (_M_grammar->names.begin (), name);
+}
+
+int Automaton::id (StatePointer state)
+{
+ return std::distance (states.begin (), state);
+}
+
+void Automaton::build ()
+{
+ Item item;
+ item.rule = _M_grammar->goal;
+ item.dot = _M_grammar->goal->rhs.begin ();
+
+ State tmp (_M_grammar);
+ tmp.insert (item);
+ start = internState (tmp).first;
+
+ closure (start);
+
+ buildNullables ();
+ buildLookbackSets ();
+ buildReads ();
+ buildIncludesAndFollows ();
+ buildLookaheads ();
+ buildDefaultReduceActions ();
+}
+
+void Automaton::buildNullables ()
+{
+ bool changed = true;
+
+ while (changed)
+ {
+ changed = false;
+
+ for (RulePointer rule = _M_grammar->rules.begin (); rule != _M_grammar->rules.end (); ++rule)
+ {
+ NameList::iterator nn = std::find_if (rule->rhs.begin (), rule->rhs.end (), std::not1 (_Nullable (this)));
+
+ if (nn == rule->rhs.end ())
+ changed |= nullables.insert (rule->lhs).second;
+ }
+ }
+
+#ifndef QLALR_NO_DEBUG_NULLABLES
+ qerr << "nullables = {" << nullables << endl;
+#endif
+}
+
+QPair<StatePointer, bool> Automaton::internState (const State &state)
+{
+ StatePointer it = qFind (states.begin (), states.end (), state);
+
+ if (it != states.end ())
+ return qMakePair (it, false);
+
+ return qMakePair (states.insert (it, state), true);
+}
+
+struct _Bucket
+{
+ QLinkedList<ItemPointer> items;
+
+ void insert (ItemPointer item)
+ { items.push_back (item); }
+
+ State toState (Automaton *aut)
+ {
+ State st (aut->_M_grammar);
+
+ for (QLinkedList<ItemPointer>::iterator item = items.begin (); item != items.end (); ++item)
+ st.insert ((*item)->next ());
+
+ return st;
+ }
+};
+
+void Automaton::closure (StatePointer state)
+{
+ if (! state->closure.empty ()) // ### not true.
+ return;
+
+ typedef QMap<Name, _Bucket> bucket_map_type;
+
+ bucket_map_type buckets;
+ QStack<ItemPointer> working_list;
+
+ for (ItemPointer item = state->kernel.begin (); item != state->kernel.end (); ++item)
+ working_list.push (item);
+
+ state->closure = state->kernel;
+
+ while (! working_list.empty ())
+ {
+ ItemPointer item = working_list.top ();
+ working_list.pop ();
+
+ if (item->isReduceItem ())
+ continue;
+
+ buckets [*item->dot].insert (item);
+
+ if (_M_grammar->isNonTerminal (*item->dot))
+ {
+ foreach (RulePointer rule, _M_grammar->rule_map.values (*item->dot))
+ {
+ Item ii;
+ ii.rule = rule;
+ ii.dot = rule->rhs.begin ();
+
+ QPair<ItemPointer, bool> r = state->insertClosure (ii);
+
+ if (r.second)
+ working_list.push (r.first);
+ }
+ }
+ }
+
+ QList<StatePointer> todo;
+
+ for (bucket_map_type::iterator bucket = buckets.begin (); bucket != buckets.end (); ++bucket)
+ {
+ QPair<StatePointer, bool> r = internState (bucket->toState (this));
+
+ StatePointer target = r.first;
+
+ if (r.second)
+ todo.push_back (target);
+
+ state->bundle.insert (bucket.key(), target);
+ }
+
+ while (! todo.empty ())
+ {
+ closure (todo.front ());
+ todo.pop_front ();
+ }
+}
+
+void Automaton::buildLookbackSets ()
+{
+ for (StatePointer p = states.begin (); p != states.end (); ++p)
+ {
+ for (Bundle::iterator a = p->bundle.begin (); a != p->bundle.end (); ++a)
+ {
+ Name A = a.key ();
+
+ if (! _M_grammar->isNonTerminal (A))
+ continue;
+
+ foreach (RulePointer rule, _M_grammar->rule_map.values (A))
+ {
+ StatePointer q = p;
+
+ for (NameList::iterator dot = rule->rhs.begin (); dot != rule->rhs.end (); ++dot)
+ q = q->bundle.value (*dot, states.end ());
+
+ Q_ASSERT (q != states.end ());
+
+ ItemPointer item = q->closure.begin ();
+
+ for (; item != q->closure.end (); ++item)
+ {
+ if (item->rule == rule && item->dot == item->end_rhs ())
+ break;
+ }
+
+ if (item == q->closure.end ())
+ {
+ Q_ASSERT (q == p);
+ Q_ASSERT (rule->rhs.begin () == rule->rhs.end ());
+
+ for (item = q->closure.begin (); item != q->closure.end (); ++item)
+ {
+ if (item->rule == rule && item->dot == item->end_rhs ())
+ break;
+ }
+ }
+
+ Q_ASSERT (item != q->closure.end ());
+
+ lookbacks.insert (item, Lookback (p, A));
+
+#ifndef QLALR_NO_DEBUG_LOOKBACKS
+ qerr << "*** (" << id (q) << ", " << *rule << ") lookback (" << id (p) << ", " << *A << ")" << endl;
+#endif
+ }
+ }
+ }
+}
+
+void Automaton::buildDirectReads ()
+{
+ for (StatePointer q = states.begin (); q != states.end (); ++q)
+ {
+ for (Bundle::iterator a = q->bundle.begin (); a != q->bundle.end (); ++a)
+ {
+ if (! _M_grammar->isNonTerminal (a.key ()))
+ continue;
+
+ StatePointer r = a.value ();
+
+ for (Bundle::iterator z = r->bundle.begin (); z != r->bundle.end (); ++z)
+ {
+ Name sym = z.key ();
+
+ if (! _M_grammar->isTerminal (sym))
+ continue;
+
+ q->reads [a.key ()].insert (sym);
+ }
+ }
+
+#ifndef QLALR_NO_DEBUG_DIRECT_READS
+ for (QMap<Name, NameSet>::iterator dr = q->reads.begin (); dr != q->reads.end (); ++dr)
+ qerr << "*** DR(" << id (q) << ", " << dr.key () << ") = " << dr.value () << endl;
+#endif
+ }
+}
+
+void Automaton::buildReadsDigraph ()
+{
+ for (StatePointer q = states.begin (); q != states.end (); ++q)
+ {
+ for (Bundle::iterator a = q->bundle.begin (); a != q->bundle.end (); ++a)
+ {
+ if (! _M_grammar->isNonTerminal (a.key ()))
+ continue;
+
+ StatePointer r = a.value ();
+
+ for (Bundle::iterator z = r->bundle.begin (); z != r->bundle.end (); ++z)
+ {
+ Name sym = z.key ();
+
+ if (! _M_grammar->isNonTerminal(sym) || nullables.find (sym) == nullables.end ())
+ continue;
+
+ ReadsGraph::iterator source = ReadsGraph::get (Read (q, a.key ()));
+ ReadsGraph::iterator target = ReadsGraph::get (Read (r, sym));
+
+ source->insertEdge (target);
+
+#ifndef QLALR_NO_DEBUG_READS
+ qerr << "*** ";
+ dump (qerr, source);
+ qerr << " reads ";
+ dump (qerr, target);
+ qerr << endl;
+#endif
+ }
+ }
+ }
+}
+
+void Automaton::buildReads ()
+{
+ buildDirectReads ();
+ buildReadsDigraph ();
+
+ _M_reads_dfn = 0;
+
+ for (ReadsGraph::iterator node = ReadsGraph::begin_nodes (); node != ReadsGraph::end_nodes (); ++node)
+ {
+ if (! node->root)
+ continue;
+
+ visitReadNode (node);
+ }
+
+ for (ReadsGraph::iterator node = ReadsGraph::begin_nodes (); node != ReadsGraph::end_nodes (); ++node)
+ visitReadNode (node);
+}
+
+void Automaton::visitReadNode (ReadNode node)
+{
+ if (node->dfn != 0)
+ return; // nothing to do
+
+ int N = node->dfn = ++_M_reads_dfn;
+ _M_reads_stack.push (node);
+
+#ifndef QLALR_NO_DEBUG_INCLUDES
+ // qerr << "*** Debug. visit node (" << id (node->data.state) << ", " << node->data.nt << ") N = " << N << endl;
+#endif
+
+ for (ReadsGraph::edge_iterator edge = node->begin (); edge != node->end (); ++edge)
+ {
+ ReadsGraph::iterator r = *edge;
+ Name nt = r->data.nt;
+
+ visitReadNode (r);
+
+ node->dfn = qMin (N, r->dfn);
+
+ NameSet &dst = node->data.state->reads [node->data.nt];
+ NameSet &src = r->data.state->reads [r->data.nt];
+ dst.insert (src.begin (), src.end ());
+ }
+
+ if (node->dfn == N)
+ {
+ ReadsGraph::iterator tos = _M_reads_stack.top ();
+
+ do {
+ tos = _M_reads_stack.top ();
+ _M_reads_stack.pop ();
+ tos->dfn = INT_MAX;
+ } while (tos != node);
+ }
+}
+
+void Automaton::buildIncludesAndFollows ()
+{
+ for (StatePointer p = states.begin (); p != states.end (); ++p)
+ p->follows = p->reads;
+
+ buildIncludesDigraph ();
+
+ _M_includes_dfn = 0;
+
+ for (IncludesGraph::iterator node = IncludesGraph::begin_nodes (); node != IncludesGraph::end_nodes (); ++node)
+ {
+ if (! node->root)
+ continue;
+
+ visitIncludeNode (node);
+ }
+
+ for (IncludesGraph::iterator node = IncludesGraph::begin_nodes (); node != IncludesGraph::end_nodes (); ++node)
+ visitIncludeNode (node);
+}
+
+void Automaton::buildIncludesDigraph ()
+{
+ for (StatePointer pp = states.begin (); pp != states.end (); ++pp)
+ {
+ for (Bundle::iterator a = pp->bundle.begin (); a != pp->bundle.end (); ++a)
+ {
+ Name name = a.key ();
+
+ if (! _M_grammar->isNonTerminal (name))
+ continue;
+
+ foreach (RulePointer rule, _M_grammar->rule_map.values (name))
+ {
+ StatePointer p = pp;
+
+ for (NameList::iterator A = rule->rhs.begin (); A != rule->rhs.end (); ++A)
+ {
+ NameList::iterator dot = A;
+ ++dot;
+
+ if (_M_grammar->isNonTerminal (*A) && dot == rule->rhs.end ())
+ {
+ // found an include edge.
+ IncludesGraph::iterator target = IncludesGraph::get (Include (pp, name));
+ IncludesGraph::iterator source = IncludesGraph::get (Include (p, *A));
+
+ source->insertEdge (target);
+
+#ifndef QLALR_NO_DEBUG_INCLUDES
+ qerr << "*** (" << id (p) << ", " << *A << ") includes (" << id (pp) << ", " << *name << ")" << endl;
+#endif // QLALR_NO_DEBUG_INCLUDES
+
+ continue;
+ }
+
+ p = p->bundle.value (*A);
+
+ if (! _M_grammar->isNonTerminal (*A))
+ continue;
+
+ NameList::iterator first_not_nullable = std::find_if (dot, rule->rhs.end (), std::not1 (_Nullable (this)));
+ if (first_not_nullable != rule->rhs.end ())
+ continue;
+
+ // found an include edge.
+ IncludesGraph::iterator target = IncludesGraph::get (Include (pp, name));
+ IncludesGraph::iterator source = IncludesGraph::get (Include (p, *A));
+
+ source->insertEdge (target);
+
+#ifndef QLALR_NO_DEBUG_INCLUDES
+ qerr << "*** (" << id (p) << ", " << *A << ") includes (" << id (pp) << ", " << *name << ")" << endl;
+#endif // QLALR_NO_DEBUG_INCLUDES
+ }
+ }
+ }
+ }
+}
+
+void Automaton::visitIncludeNode (IncludeNode node)
+{
+ if (node->dfn != 0)
+ return; // nothing to do
+
+ int N = node->dfn = ++_M_includes_dfn;
+ _M_includes_stack.push (node);
+
+#ifndef QLALR_NO_DEBUG_INCLUDES
+ // qerr << "*** Debug. visit node (" << id (node->data.state) << ", " << node->data.nt << ") N = " << N << endl;
+#endif
+
+ for (IncludesGraph::edge_iterator edge = node->begin (); edge != node->end (); ++edge)
+ {
+ IncludesGraph::iterator r = *edge;
+ Name nt = r->data.nt;
+
+ visitIncludeNode (r);
+
+ node->dfn = qMin (N, r->dfn);
+
+#ifndef QLALR_NO_DEBUG_INCLUDES
+ qerr << "*** Merge. follows";
+ dump (qerr, node);
+ qerr << " += follows";
+ dump (qerr, r);
+ qerr << endl;
+#endif
+
+ NameSet &dst = node->data.state->follows [node->data.nt];
+ NameSet &src = r->data.state->follows [r->data.nt];
+
+ dst.insert (src.begin (), src.end ());
+ }
+
+ if (node->dfn == N)
+ {
+ IncludesGraph::iterator tos = _M_includes_stack.top ();
+
+ do {
+ tos = _M_includes_stack.top ();
+ _M_includes_stack.pop ();
+ tos->dfn = INT_MAX;
+ } while (tos != node);
+ }
+}
+
+void Automaton::buildLookaheads ()
+{
+ for (StatePointer p = states.begin (); p != states.end (); ++p)
+ {
+ for (ItemPointer item = p->closure.begin (); item != p->closure.end (); ++item)
+ {
+ foreach (Lookback lookback, lookbacks.values (item))
+ {
+ StatePointer q = lookback.state;
+
+#ifndef QLALR_NO_DEBUG_LOOKAHEADS
+ qerr << "(" << id (p) << ", " << *item->rule << ") lookbacks ";
+ dump (qerr, lookback);
+ qerr << " with follows (" << id (q) << ", " << lookback.nt << ") = " << q->follows [lookback.nt] << endl;
+#endif
+
+ lookaheads [item].insert (q->follows [lookback.nt].begin (), q->follows [lookback.nt].end ());
+ }
+ }
+
+ // propagate the lookahead in the kernel
+ ItemPointer k = p->kernel.begin ();
+ ItemPointer c = p->closure.begin ();
+
+ for (; k != p->kernel.end (); ++k, ++c)
+ lookaheads [k] = lookaheads [c];
+ }
+}
+
+void Automaton::buildDefaultReduceActions ()
+{
+ for (StatePointer state = states.begin (); state != states.end (); ++state)
+ {
+ ItemPointer def = state->closure.end ();
+ int size = -1;
+
+ for (ItemPointer item = state->closure.begin (); item != state->closure.end (); ++item)
+ {
+ if (item->dot != item->end_rhs ())
+ continue;
+
+ int la = lookaheads.value (item).size ();
+ if (def == state->closure.end () || la > size)
+ {
+ def = item;
+ size = la;
+ }
+ }
+
+ if (def != state->closure.end ())
+ {
+ Q_ASSERT (size >= 0);
+ state->defaultReduce = def->rule;
+ }
+ }
+}
+
+void Automaton::dump (QTextStream &out, IncludeNode incl)
+{
+ out << "(" << id (incl->data.state) << ", " << incl->data.nt << ")";
+}
+
+void Automaton::dump (QTextStream &out, ReadNode rd)
+{
+ out << "(" << id (rd->data.state) << ", " << rd->data.nt << ")";
+}
+
+void Automaton::dump (QTextStream &out, const Lookback &lp)
+{
+ out << "(" << id (lp.state) << ", " << lp.nt << ")";
+}
diff --git a/util/qlalr/lalr.g b/util/qlalr/lalr.g
new file mode 100644
index 0000000000..ed2ef86dca
--- /dev/null
+++ b/util/qlalr/lalr.g
@@ -0,0 +1,803 @@
+-----------------------------------------------------------------------------
+--
+-- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+-- Contact: Qt Software Information (qt-info@nokia.com)
+--
+-- This file is part of the QLALR project on Trolltech Labs.
+--
+-- $QT_BEGIN_LICENSE:LGPL$
+-- No Commercial Usage
+-- This file contains pre-release code and may not be distributed.
+-- You may use this file in accordance with the terms and conditions
+-- contained in the either Technology Preview License Agreement or the
+-- Beta Release License Agreement.
+--
+-- GNU Lesser General Public License Usage
+-- Alternatively, this file may be used under the terms of the GNU Lesser
+-- General Public License version 2.1 as published by the Free Software
+-- Foundation and appearing in the file LICENSE.LGPL included in the
+-- packaging of this file. Please review the following information to
+-- ensure the GNU Lesser General Public License version 2.1 requirements
+-- will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+--
+-- In addition, as a special exception, Nokia gives you certain
+-- additional rights. These rights are described in the Nokia Qt LGPL
+-- Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+-- package.
+--
+-- GNU General Public License Usage
+-- Alternatively, this file may be used under the terms of the GNU
+-- General Public License version 3.0 as published by the Free Software
+-- Foundation and appearing in the file LICENSE.GPL included in the
+-- packaging of this file. Please review the following information to
+-- ensure the GNU General Public License version 3.0 requirements will be
+-- met: http://www.gnu.org/copyleft/gpl.html.
+--
+-- If you are unsure which license is appropriate for your use, please
+-- contact the sales department at qt-sales@nokia.com.
+-- $QT_END_LICENSE$
+--
+-- This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+-- WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+--
+-----------------------------------------------------------------------------
+
+
+%parser grammar
+
+%decl recognizer.h
+%impl recognizer.cpp
+
+%token ID "identifier"
+%token STRING_LITERAL "string literal"
+
+%token DECL_FILE "%decl"
+%token EXPECT "%expect"
+%token EXPECT_RR "%expect-lr"
+%token IMPL_FILE "%impl"
+%token LEFT "%left"
+%token MERGED_OUTPUT "%merged_output"
+%token NONASSOC "%nonassoc"
+%token PARSER "%parser"
+%token PREC "%prec"
+%token RIGHT "%right"
+%token START "%start"
+%token TOKEN "%token"
+%token TOKEN_PREFIX "%token_prefix"
+
+%token COLON ":"
+%token OR "|"
+%token SEMICOLON ";"
+
+%token DECL
+%token IMPL
+
+%token ERROR
+
+%start Specification
+
+
+/:
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the <your project> project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QtDebug>
+#include <QtCore/QString>
+#include <QtCore/QFile>
+#include <QtCore/QTextStream>
+
+#include "$header"
+#include "lalr.h"
+
+#include <cstdlib>
+
+class Recognizer: protected $table
+{
+public:
+ Recognizer (Grammar *grammar, bool no_lines);
+ ~Recognizer();
+
+ bool parse (const QString &input_file = QString ());
+
+ inline QString decls () const { return _M_decls; }
+ inline QString impls () const { return _M_impls; }
+
+protected:
+ inline void reallocateStack ();
+
+ inline QString &sym (int index)
+ { return sym_stack [tos + index - 1]; }
+
+protected: // scanner
+ int nextToken();
+
+ inline void inp ()
+ {
+ if (_M_currentChar != _M_lastChar)
+ {
+ ch = *_M_currentChar++;
+
+ if (ch == QLatin1Char('\n'))
+ ++_M_line;
+ }
+ else
+ ch = QChar();
+ }
+
+ QString expand (const QString &text) const;
+
+protected:
+ // recognizer
+ int tos;
+ int stack_size;
+ QVector<QString> sym_stack;
+ int *state_stack;
+
+ QString _M_contents;
+ QString::const_iterator _M_firstChar;
+ QString::const_iterator _M_lastChar;
+ QString::const_iterator _M_currentChar;
+
+ // scanner
+ QChar ch;
+ int _M_line;
+ int _M_action_line;
+ Grammar *_M_grammar;
+ RulePointer _M_current_rule;
+ QString _M_input_file;
+
+ QString _M_decls;
+ QString _M_impls;
+ QString _M_current_value;
+ bool _M_no_lines;
+};
+:/
+
+/.
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the <your project> project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "recognizer.h"
+#include <cstdlib>
+#include <cstring>
+#include <cctype>
+
+Recognizer::Recognizer (Grammar *grammar, bool no_lines):
+ tos(0),
+ stack_size(0),
+ state_stack(0),
+ _M_line(1),
+ _M_action_line(0),
+ _M_grammar(grammar),
+ _M_no_lines(no_lines)
+{
+}
+
+Recognizer::~Recognizer()
+{
+ if (stack_size)
+ ::qFree(state_stack);
+}
+
+inline void Recognizer::reallocateStack()
+{
+ if (! stack_size)
+ stack_size = 128;
+ else
+ stack_size <<= 1;
+
+ sym_stack.resize (stack_size);
+
+ if (! state_stack)
+ state_stack = reinterpret_cast<int*> (::qMalloc(stack_size * sizeof(int)));
+ else
+ state_stack = reinterpret_cast<int*> (::qRealloc(state_stack, stack_size * sizeof(int)));
+}
+
+int Recognizer::nextToken()
+{
+ QString text;
+
+ Lagain:
+ while (ch.isSpace ())
+ inp ();
+
+ if (ch.isNull ())
+ return EOF_SYMBOL;
+
+ int token = ch.unicode ();
+
+ if (token == '"')
+ {
+ inp(); // skip "
+ text.clear ();
+ while (! ch.isNull () && ch != QLatin1Char ('"'))
+ {
+ if (ch == QLatin1Char ('\\'))
+ {
+ text += ch;
+ inp();
+ }
+ text += ch;
+ inp ();
+ }
+
+ if (ch == QLatin1Char ('"'))
+ inp ();
+ else
+ qerr << _M_input_file << ":" << _M_line << ": Warning. Expected `\"'" << endl;
+
+ _M_current_value = text;
+ return (token = STRING_LITERAL);
+ }
+
+ else if (ch.isLetterOrNumber () || ch == QLatin1Char ('_'))
+ {
+ text.clear ();
+ do { text += ch; inp (); }
+ while (ch.isLetterOrNumber () || ch == QLatin1Char ('_') || ch == QLatin1Char ('.'));
+ _M_current_value = text;
+ return (token = ID);
+ }
+
+ else if (token == '%')
+ {
+ text.clear ();
+
+ do { inp (); }
+ while (ch.isSpace ());
+
+ do { text += ch; inp (); }
+ while (ch.isLetterOrNumber () || ch == QLatin1Char ('_') || ch == QLatin1Char ('-'));
+
+ if (text == QLatin1String("token_prefix"))
+ return (token = TOKEN_PREFIX);
+ else if (text == QLatin1String("merged_output"))
+ return (token = MERGED_OUTPUT);
+ else if (text == QLatin1String("token"))
+ return (token = TOKEN);
+ else if (text == QLatin1String("start"))
+ return (token = START);
+ else if (text == QLatin1String("parser"))
+ return (token = PARSER);
+ else if (text == QLatin1String("decl"))
+ return (token = DECL_FILE);
+ else if (text == QLatin1String("impl"))
+ return (token = IMPL_FILE);
+ else if (text == QLatin1String("expect"))
+ return (token = EXPECT);
+ else if (text == QLatin1String("expect-rr"))
+ return (token = EXPECT_RR);
+ else if (text == QLatin1String("left"))
+ return (token = LEFT);
+ else if (text == QLatin1String("right"))
+ return (token = RIGHT);
+ else if (text == QLatin1String("nonassoc"))
+ return (token = NONASSOC);
+ else if (text == QLatin1String("prec"))
+ return (token = PREC);
+ else
+ {
+ qerr << _M_input_file << ":" << _M_line << ": Unknown keyword `" << text << "'" << endl;
+ exit (EXIT_FAILURE);
+ return (token = ERROR);
+ }
+ }
+
+ inp ();
+
+ if (token == '-' && ch == QLatin1Char ('-'))
+ {
+ do { inp (); }
+ while (! ch.isNull () && ch != QLatin1Char ('\n'));
+ goto Lagain;
+ }
+
+ else if (token == ':' && ch == QLatin1Char (':'))
+ {
+ inp ();
+ if (ch != QLatin1Char ('='))
+ return (token = ERROR);
+ inp ();
+ return (token = COLON);
+ }
+
+ else if (token == '/' && ch == QLatin1Char (':'))
+ {
+ _M_action_line = _M_line;
+
+ text.clear ();
+ if (! _M_no_lines)
+ text += QLatin1String ("\n#line ") + QString::number (_M_action_line) + " \"" + _M_input_file + "\"\n";
+ inp (); // skip ':'
+
+ forever
+ {
+ while (! ch.isNull ())
+ {
+ token = ch.unicode ();
+ inp ();
+
+ if (token == ':' && ch == QLatin1Char ('/'))
+ break;
+
+ text += QLatin1Char (token);
+ }
+
+ if (ch != QLatin1Char ('/'))
+ return (token = ERROR);
+
+ inp ();
+
+ if (ch.isNull () || ch.isSpace ())
+ {
+ _M_current_value = text;
+ return (token = DECL);
+ }
+ else
+ text += QLatin1String (":/");
+ }
+ }
+
+ else if (token == '/' && ch == QLatin1Char ('.'))
+ {
+ _M_action_line = _M_line;
+
+ text.clear ();
+ if (! _M_no_lines)
+ text += QLatin1String ("\n#line ") + QString::number (_M_action_line) + " \"" + _M_input_file + "\"\n";
+
+ inp (); // skip ':'
+
+ forever
+ {
+ while (! ch.isNull ())
+ {
+ token = ch.unicode ();
+ inp ();
+
+ if (token == '.' && ch == QLatin1Char ('/'))
+ break;
+
+ text += QLatin1Char (token);
+ }
+
+ if (ch != QLatin1Char ('/'))
+ return (token = ERROR);
+
+ inp ();
+
+ if (ch.isNull () || ch.isSpace ())
+ {
+ _M_current_value = text;
+ return (token = IMPL);
+ }
+ else
+ text += QLatin1String ("./");
+ }
+ }
+
+ switch (token) {
+ case ':':
+ return (token = COLON);
+
+ case ';':
+ return (token = SEMICOLON);
+
+ case '|':
+ return (token = OR);
+
+ default:
+ break;
+ }
+
+ return token;
+}
+
+bool Recognizer::parse (const QString &input_file)
+{
+ _M_input_file = input_file;
+
+ QFile file(_M_input_file);
+ if (! file.open(QFile::ReadOnly))
+ {
+ qerr << "qlalr: no input file\n";
+ return false;
+ }
+
+ QString _M_contents = QTextStream(&file).readAll();
+ _M_firstChar = _M_contents.constBegin();
+ _M_lastChar = _M_contents.constEnd();
+ _M_currentChar = _M_firstChar;
+ _M_line = 1;
+
+ int yytoken = -1;
+ inp ();
+
+ reallocateStack();
+
+ _M_current_rule = _M_grammar->rules.end ();
+ _M_decls.clear ();
+ _M_impls.clear ();
+
+ tos = 0;
+ state_stack[++tos] = 0;
+
+ while (true)
+ {
+ if (yytoken == -1 && - TERMINAL_COUNT != action_index [state_stack [tos]])
+ yytoken = nextToken();
+
+ int act = t_action (state_stack [tos], yytoken);
+
+ if (act == ACCEPT_STATE)
+ return true;
+
+ else if (act > 0)
+ {
+ if (++tos == stack_size)
+ reallocateStack();
+
+ sym_stack [tos] = _M_current_value;
+ state_stack [tos] = act;
+ yytoken = -1;
+ }
+
+ else if (act < 0)
+ {
+ int r = - act - 1;
+
+ tos -= rhs [r];
+ act = state_stack [tos++];
+
+ switch (r) {
+./
+
+----------------------------------------------------------- SPECS
+Specification ::= Options Tokens Start Rules ;
+
+Options ::= Empty ;
+Options ::= Options Option ;
+
+StartHeader ::= START ID ;
+/.
+case $rule_number: {
+ Name name = _M_grammar->intern (sym(2));
+ _M_grammar->start = name;
+ _M_grammar->non_terminals.insert (name);
+} break;
+./
+
+Start ::= StartHeader UserActionOpt ;
+
+----------------------------------------------------------- OPTIONS
+Option ::= PARSER ID ;
+/.
+case $rule_number: {
+ _M_grammar->table_name = sym(2);
+} break;
+./
+
+Option ::= MERGED_OUTPUT ID ;
+/.
+case $rule_number: {
+ _M_grammar->merged_output = sym(2);
+} break;
+./
+
+Option ::= DECL_FILE ID ;
+/.
+case $rule_number: {
+ _M_grammar->decl_file_name = sym(2);
+} break;
+./
+
+
+Option ::= IMPL_FILE ID ;
+/.
+case $rule_number: {
+ _M_grammar->impl_file_name = sym(2);
+} break;
+./
+
+Option ::= EXPECT ID ;
+/.
+case $rule_number: {
+ _M_grammar->expected_shift_reduce = sym(2).toInt();
+} break;
+./
+
+Option ::= EXPECT_RR ID ;
+/.
+case $rule_number: {
+ _M_grammar->expected_reduce_reduce = sym(2).toInt();
+} break;
+./
+
+
+Option ::= TOKEN_PREFIX ID ;
+/.
+case $rule_number: {
+ _M_grammar->token_prefix = sym(2);
+} break;
+./
+
+
+----------------------------------------------------------- TOKENS
+Tokens ::= Empty ;
+Tokens ::= Tokens Token ;
+
+Token ::= TOKEN TerminalList ;
+
+TerminalList ::= Terminal ;
+
+TerminalList ::= TerminalList Terminal ;
+
+Terminal ::= ID Empty ;
+/.case $rule_number:./
+
+Terminal ::= ID STRING_LITERAL ;
+/.case $rule_number: {
+ Name name = _M_grammar->intern (sym(1));
+ _M_grammar->terminals.insert (name);
+ _M_grammar->spells.insert (name, sym(2));
+} break;
+./
+
+PrecHeader: LEFT ;
+/.
+case $rule_number: {
+ _M_grammar->current_assoc = Grammar::Left;
+ ++_M_grammar->current_prec;
+} break;
+./
+
+PrecHeader: RIGHT ;
+/.
+case $rule_number: {
+ _M_grammar->current_assoc = Grammar::Right;
+ ++_M_grammar->current_prec;
+} break;
+./
+
+PrecHeader: NONASSOC ;
+/.
+case $rule_number: {
+ _M_grammar->current_assoc = Grammar::NonAssoc;
+ ++_M_grammar->current_prec;
+} break;
+./
+
+Token ::= PrecHeader TokenList ;
+
+TokenList ::= TokenId ;
+TokenList ::= TokenList TokenId ;
+
+TokenId ::= ID ;
+/.
+case $rule_number: {
+ Name name = _M_grammar->intern (sym(1));
+ _M_grammar->terminals.insert (name);
+
+ Grammar::TokenInfo info;
+ info.prec = _M_grammar->current_prec;
+ info.assoc = _M_grammar->current_assoc;
+ _M_grammar->token_info.insert (name, info);
+} break;
+./
+
+----------------------------------------------------------- Code
+Code ::= DECL ;
+/.
+case $rule_number: {
+ _M_decls += expand (sym(1));
+} break;
+./
+
+
+Code ::= IMPL ;
+/.
+case $rule_number: {
+ _M_impls += expand (sym(1));
+} break;
+./
+
+UserAction ::= Code ;
+UserAction ::= UserAction Code ;
+
+UserActionOpt ::= ;
+UserActionOpt ::= UserAction ;
+
+----------------------------------------------------------- RULES
+Rules ::= Empty ;
+Rules ::= Rules Rule ;
+
+RuleHeader ::= ID COLON ;
+/.
+case $rule_number: {
+ _M_current_rule = _M_grammar->rules.insert (_M_grammar->rules.end (), Rule ());
+ _M_current_rule->lhs = _M_grammar->intern (sym(1));
+ _M_grammar->declared_lhs.insert (_M_current_rule->lhs);
+
+ if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ())
+ {
+ qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl;
+ return false;
+ }
+
+ _M_grammar->non_terminals.insert (_M_current_rule->lhs);
+} break;
+./
+
+
+Rule ::= RuleHeader RuleDefinition SEMICOLON UserActionOpt ;
+
+RuleDefinition ::= Symbols PrecOpt UserActionOpt ;
+RuleDefinition ::= RuleDefinition NewRule OR Symbols PrecOpt UserActionOpt ;
+
+NewRule ::= ;
+/.
+case $rule_number: {
+ Name lhs = _M_current_rule->lhs;
+ _M_current_rule = _M_grammar->rules.insert (_M_grammar->rules.end (), Rule ());
+ _M_current_rule->lhs = lhs;
+ _M_grammar->declared_lhs.insert (_M_current_rule->lhs);
+
+ if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ())
+ {
+ qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl;
+ return false;
+ }
+
+ _M_grammar->non_terminals.insert (_M_current_rule->lhs);
+} break;
+./
+
+PrecOpt ::= ;
+/.
+case $rule_number: {
+ _M_current_rule->prec = _M_grammar->names.end ();
+
+ for (NameList::iterator it = _M_current_rule->rhs.begin (); it != _M_current_rule->rhs.end (); ++it)
+ {
+ if (! _M_grammar->isTerminal (*it))
+ continue;
+
+ _M_current_rule->prec = *it;
+ }
+} break;
+./
+
+PrecOpt ::= PREC ID ;
+/.
+case $rule_number: {
+ Name tok = _M_grammar->intern (sym(2));
+ if (! _M_grammar->isTerminal (tok))
+ {
+ qerr << _M_input_file << ":" << _M_line << ": `" << *tok << " is not a terminal symbol" << endl;
+ _M_current_rule->prec = _M_grammar->names.end ();
+ }
+ else
+ _M_current_rule->prec = tok;
+} break;
+./
+
+----------------------------------------------------------- SYMBOLS
+Symbols ::= Empty ;
+Symbols ::= Symbols ID ;
+/.
+case $rule_number: {
+ Name name = _M_grammar->intern (sym(2));
+
+ if (_M_grammar->terminals.find (name) == _M_grammar->terminals.end ())
+ _M_grammar->non_terminals.insert (name);
+
+ _M_current_rule->rhs.push_back (name);
+} break;
+./
+
+----------------------------------------------------------- HELPERS
+Empty ::= ;
+/.
+case $rule_number: {
+ sym(1) = QString();
+} break;
+./
+
+
+
+
+----------------------------------------------------------- END
+/.
+ } // switch
+
+ state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT);
+ }
+
+ else
+ {
+ break;
+ }
+ }
+
+ qerr << _M_input_file << ":" << _M_line << ": Syntax error" << endl;
+ return false;
+}
+
+./
diff --git a/util/qlalr/lalr.h b/util/qlalr/lalr.h
new file mode 100644
index 0000000000..29bb522dd6
--- /dev/null
+++ b/util/qlalr/lalr.h
@@ -0,0 +1,502 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef LALR_H
+#define LALR_H
+
+#include <functional>
+
+#include <QtCore/QSet>
+#include <QtCore/QStack>
+#include <QtCore/QMap>
+#include <QtCore/QLinkedList>
+#include <QtCore/QString>
+#include <QtCore/QTextStream>
+#include <QtCore/QPair>
+
+class Rule;
+class State;
+class Grammar;
+class Item;
+class State;
+class Arrow;
+class Automaton;
+
+template <typename _Tp >
+class OrderedSet : protected QMap<_Tp, bool>
+{
+ typedef QMap<_Tp, bool> _Base;
+
+public:
+ class const_iterator
+ {
+ typename _Base::const_iterator _M_iterator;
+
+ public:
+ const_iterator () {}
+
+ const_iterator (const typename _Base::const_iterator &it):
+ _M_iterator (it) {}
+
+ const _Tp &operator * () const
+ { return _M_iterator.key (); }
+
+ const _Tp *operator -> () const
+ { return &_M_iterator.key (); }
+
+ const_iterator &operator ++ ()
+ { ++_M_iterator; return *this; }
+
+ const_iterator operator ++ (int) const
+ {
+ const_iterator me (*this);
+ ++_M_iterator;
+ return me;
+ }
+
+ bool operator == (const const_iterator &other) const
+ { return _M_iterator == other._M_iterator; }
+
+ bool operator != (const const_iterator &other) const
+ { return _M_iterator != other._M_iterator; }
+ };
+
+ typedef const_iterator iterator;
+
+public:
+ OrderedSet () {}
+
+ const_iterator begin () const
+ { return const_iterator (_Base::begin ()); }
+
+ const_iterator end () const
+ { return const_iterator (_Base::end ()); }
+
+ bool isEmpty () const
+ { return _Base::isEmpty (); }
+
+ int size () const
+ { return _Base::size (); }
+
+ const_iterator find (const _Tp &elt) const
+ { return const_iterator (_Base::find (elt)); }
+
+ QPair<const_iterator, bool> insert (const _Tp &elt)
+ {
+ int elts = _Base::size ();
+ const_iterator it (_Base::insert (typename _Base::key_type (elt), true));
+ return qMakePair (it, elts != _Base::size ());
+ }
+
+ QPair<const_iterator, bool> insert (const_iterator, const _Tp &elt)
+ {
+ int elts = _Base::size ();
+ const_iterator it (_Base::insert (typename _Base::key_type (elt), true));
+ return qMakePair (it, elts != _Base::size ());
+ }
+
+ const _Tp &operator [] (const _Tp &elt)
+ { return *insert (elt)->first; }
+
+ template <typename _InputIterator>
+ void insert (_InputIterator first, _InputIterator last)
+ {
+ for (; first != last; ++first)
+ insert (*first);
+ }
+};
+
+// names
+typedef QLinkedList<QString>::iterator Name;
+typedef QLinkedList<Name> NameList;
+typedef OrderedSet<Name> NameSet;
+
+// items
+typedef QLinkedList<Item> ItemList;
+typedef ItemList::iterator ItemPointer;
+
+// rules
+typedef QLinkedList<Rule> debug_infot;
+typedef debug_infot::iterator RulePointer;
+typedef QMultiMap<Name, RulePointer> RuleMap;
+
+// states
+typedef QLinkedList<State> StateList;
+typedef StateList::iterator StatePointer;
+
+// arrows
+typedef QMap<Name, StatePointer> Bundle;
+
+class Rule
+{
+public:
+ void clear ()
+ {
+ lhs = Name ();
+ rhs.clear ();
+ prec = Name ();
+ }
+
+public:
+ Name lhs;
+ NameList rhs;
+ Name prec;
+};
+
+class Lookback
+{
+public:
+ Lookback (StatePointer s, Name n):
+ state (s), nt (n) {}
+
+ inline bool operator == (const Lookback &other) const
+ { return state == other.state && nt == other.nt; }
+
+ inline bool operator != (const Lookback &other) const
+ { return state != other.state || nt != other.nt; }
+
+ bool operator < (const Lookback &other) const;
+
+public:
+ StatePointer state;
+ Name nt;
+};
+
+class Item
+{
+public:
+ inline NameList::iterator begin_rhs () const
+ { return rule->rhs.begin (); }
+
+ inline NameList::iterator end_rhs () const
+ { return rule->rhs.end (); }
+
+ inline bool operator == (const Item &other) const
+ { return rule == other.rule && dot == other.dot; }
+
+ inline bool operator != (const Item &other) const
+ { return rule != other.rule || dot != other.dot; }
+
+ inline bool isReduceItem () const
+ { return dot == rule->rhs.end (); }
+
+ Item next () const;
+
+public:
+ RulePointer rule;
+ NameList::iterator dot;
+};
+
+class State
+{
+public:
+ State (Grammar *grammar);
+
+ inline bool operator == (const State &other) const
+ { return kernel == other.kernel; }
+
+ inline bool operator != (const State &other) const
+ { return kernel != other.kernel; }
+
+ QPair<ItemPointer, bool> insert (const Item &item);
+ QPair<ItemPointer, bool> insertClosure (const Item &item);
+
+public: // attributes
+ ItemList kernel;
+ ItemList closure;
+ Bundle bundle;
+ QMap<Name, NameSet> reads;
+ QMap<Name, NameSet> follows;
+ RulePointer defaultReduce;
+};
+
+/////////////////////////////////////////////////////////////
+// digraph
+/////////////////////////////////////////////////////////////
+template <typename _Tp>
+class Node
+{
+public:
+ typedef OrderedSet<Node<_Tp> > Repository;
+ typedef typename Repository::iterator iterator;
+ typedef typename QLinkedList<iterator>::iterator edge_iterator;
+
+public:
+ static iterator get (_Tp data);
+
+ QPair<edge_iterator, bool> insertEdge (iterator other) const;
+
+ inline edge_iterator begin () const
+ { return outs.begin (); }
+
+ inline edge_iterator end () const
+ { return outs.end (); }
+
+ inline bool operator == (const Node<_Tp> &other) const
+ { return data == other.data; }
+
+ inline bool operator != (const Node<_Tp> &other) const
+ { return data != other.data; }
+
+ inline bool operator < (const Node<_Tp> &other) const
+ { return data < other.data; }
+
+ static inline iterator begin_nodes ()
+ { return repository ().begin (); }
+
+ static inline iterator end_nodes ()
+ { return repository ().end (); }
+
+ static Repository &repository ()
+ {
+ static Repository r;
+ return r;
+ }
+
+public: // attributes
+ mutable bool root;
+ mutable int dfn;
+ mutable _Tp data;
+ mutable QLinkedList<iterator> outs;
+
+protected:
+ inline Node () {}
+
+ inline Node (_Tp d):
+ root (true), dfn (0), data (d) {}
+};
+
+template <typename _Tp>
+typename Node<_Tp>::iterator Node<_Tp>::get (_Tp data)
+{
+ Node<_Tp> tmp (data);
+ iterator it = repository ().find (tmp);
+
+ if (it != repository ().end ())
+ return it;
+
+ return repository ().insert (tmp).first;
+}
+
+template <typename _Tp>
+QPair<typename QLinkedList<typename Node<_Tp>::iterator>::iterator, bool> Node<_Tp>::insertEdge (typename Node<_Tp>::iterator other) const
+{
+ edge_iterator it = qFind (outs.begin (), outs.end (), other);
+
+ if (it != outs.end ())
+ return qMakePair (it, false);
+
+ other->root = false;
+ return qMakePair (outs.insert (outs.end (), other), true);
+}
+
+/////////////////////////////////////////////////////////////
+// Grammar
+/////////////////////////////////////////////////////////////
+class Grammar
+{
+public:
+ Grammar ();
+
+ Name intern (const QString &id);
+
+ inline bool isTerminal (Name name) const
+ { return terminals.find (name) != terminals.end (); }
+
+ inline bool isNonTerminal (Name name) const
+ { return non_terminals.find (name) != non_terminals.end (); }
+
+ void buildRuleMap ();
+ void buildExtendedGrammar ();
+
+public:
+ QString merged_output;
+ QString table_name;
+ QString decl_file_name;
+ QString impl_file_name;
+ QString token_prefix;
+ QLinkedList<QString> names;
+ Name start;
+ NameSet terminals;
+ NameSet non_terminals;
+ QMap<Name, QString> spells;
+ debug_infot rules;
+ RuleMap rule_map;
+ RulePointer goal;
+ Name tk_end;
+ Name accept_symbol;
+ NameSet declared_lhs;
+ int expected_shift_reduce;
+ int expected_reduce_reduce;
+
+ enum Assoc {
+ NonAssoc,
+ Left,
+ Right
+ };
+
+ struct TokenInfo {
+ Assoc assoc;
+ int prec;
+ };
+
+ QMap<Name, TokenInfo> token_info;
+ Assoc current_assoc;
+ int current_prec;
+};
+
+class Read
+{
+public:
+ inline Read () {}
+
+ inline Read (StatePointer s, Name n):
+ state (s), nt (n) {}
+
+ inline bool operator == (const Read &other) const
+ { return state == other.state && nt == other.nt; }
+
+ inline bool operator != (const Read &other) const
+ { return state != other.state || nt != other.nt; }
+
+ bool operator < (const Read &other) const;
+
+public:
+ StatePointer state;
+ Name nt;
+};
+
+class Include
+{
+public:
+ inline Include () {}
+
+ inline Include (StatePointer s, Name n):
+ state (s), nt (n) {}
+
+ inline bool operator == (const Include &other) const
+ { return state == other.state && nt == other.nt; }
+
+ inline bool operator != (const Include &other) const
+ { return state != other.state || nt != other.nt; }
+
+ bool operator < (const Include &other) const;
+
+public:
+ StatePointer state;
+ Name nt;
+};
+
+class Automaton
+{
+public:
+ Automaton (Grammar *g);
+
+ QPair<StatePointer, bool> internState (const State &state);
+
+ typedef Node<Read> ReadsGraph;
+ typedef ReadsGraph::iterator ReadNode;
+
+ typedef Node<Include> IncludesGraph;
+ typedef IncludesGraph::iterator IncludeNode;
+
+ void build ();
+ void buildNullables ();
+
+ void buildLookbackSets ();
+
+ void buildDirectReads ();
+ void buildReadsDigraph ();
+ void buildReads ();
+ void visitReadNode (ReadNode node);
+
+ void buildIncludesAndFollows ();
+ void buildIncludesDigraph ();
+ void visitIncludeNode (IncludeNode node);
+
+ void buildLookaheads ();
+
+ void buildDefaultReduceActions ();
+
+ void closure (StatePointer state);
+
+ int id (RulePointer rule);
+ int id (StatePointer state);
+ int id (Name name);
+
+ void dump (QTextStream &out, IncludeNode incl);
+ void dump (QTextStream &out, ReadNode rd);
+ void dump (QTextStream &out, const Lookback &lp);
+
+public: // ### private
+ Grammar *_M_grammar;
+ StateList states;
+ StatePointer start;
+ NameSet nullables;
+ QMultiMap<ItemPointer, Lookback> lookbacks;
+ QMap<ItemPointer, NameSet> lookaheads;
+
+private:
+ QStack<ReadsGraph::iterator> _M_reads_stack;
+ int _M_reads_dfn;
+
+ QStack<IncludesGraph::iterator> _M_includes_stack;
+ int _M_includes_dfn;
+};
+
+QT_BEGIN_NAMESPACE
+bool operator < (Name a, Name b);
+bool operator < (StatePointer a, StatePointer b);
+bool operator < (ItemPointer a, ItemPointer b);
+QT_END_NAMESPACE
+
+QTextStream &operator << (QTextStream &out, const Name &n);
+QTextStream &operator << (QTextStream &out, const Rule &r);
+QTextStream &operator << (QTextStream &out, const Item &item);
+QTextStream &operator << (QTextStream &out, const NameSet &ns);
+
+QT_BEGIN_NAMESPACE
+// ... hmm
+extern QTextStream qerr;
+extern QTextStream qout;
+QT_END_NAMESPACE
+
+#endif // LALR_H
diff --git a/util/qlalr/main.cpp b/util/qlalr/main.cpp
new file mode 100644
index 0000000000..91c72bb3ff
--- /dev/null
+++ b/util/qlalr/main.cpp
@@ -0,0 +1,185 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QFile>
+#include <QtCore/QStringList>
+#include <QtCore/QtDebug>
+
+#include <cstdlib>
+
+#include "lalr.h"
+#include "dotgraph.h"
+#include "parsetable.h"
+#include "cppgenerator.h"
+#include "recognizer.h"
+
+#define QLALR_NO_DEBUG_TABLE
+#define QLALR_NO_DEBUG_DOT
+
+static void help_me ()
+{
+ qerr << "Usage: qlalr [options] [input file name]" << endl
+ << endl
+ << " --help, -h\t\tdisplay this help and exit" << endl
+ << " --verbose, -v\t\tverbose output" << endl
+ << " --no-debug\t\tno debug information" << endl
+ << " --no-lines\t\tno #line directives" << endl
+ << " --dot\t\t\tgenerate a graph" << endl
+ << " --troll\t\tadd the Trolltech copyright header" << endl
+ << endl;
+ exit (0);
+}
+
+int main (int argc, char *argv[])
+{
+ QCoreApplication app (argc, argv);
+
+ bool generate_dot = false;
+ bool generate_report = false;
+ bool no_lines = false;
+ bool debug_info = true;
+ bool troll_copyright = false;
+ QString file_name = 0;
+
+ QStringList args = app.arguments ();
+ args.removeFirst ();
+
+ foreach (QString arg, args)
+ {
+ if (arg == QLatin1String ("-h") || arg == QLatin1String ("--help"))
+ help_me ();
+
+ else if (arg == QLatin1String ("-v") || arg == QLatin1String ("--verbose"))
+ generate_report = true;
+
+ else if (arg == QLatin1String ("--dot"))
+ generate_dot = true;
+
+ else if (arg == QLatin1String ("--no-lines"))
+ no_lines = true;
+
+ else if (arg == QLatin1String ("--no-debug"))
+ debug_info = false;
+
+ else if (arg == QLatin1String ("--troll"))
+ troll_copyright = true;
+
+ else if (file_name.isEmpty ())
+ file_name = arg;
+
+ else
+ qerr << "*** Warning. Ignore argument `" << arg << "'" << endl;
+ }
+
+ if (file_name.isEmpty ())
+ {
+ help_me ();
+ exit (EXIT_SUCCESS);
+ }
+
+ Grammar grammar;
+ Recognizer p (&grammar, no_lines);
+
+ if (! p.parse (file_name))
+ exit (EXIT_FAILURE);
+
+ if (grammar.rules.isEmpty ())
+ {
+ qerr << "*** Fatal. No rules!" << endl;
+ exit (EXIT_FAILURE);
+ }
+
+ else if (grammar.start == grammar.names.end ())
+ {
+ qerr << "*** Fatal. No start symbol!" << endl;
+ exit (EXIT_FAILURE);
+ }
+
+ grammar.buildExtendedGrammar ();
+ grammar.buildRuleMap ();
+
+ Automaton aut (&grammar);
+ aut.build ();
+
+ CppGenerator gen (p, grammar, aut, generate_report);
+ gen.setDebugInfo (debug_info);
+ gen.setTrollCopyright (troll_copyright);
+ gen ();
+
+ if (generate_dot)
+ {
+ DotGraph genDotFile (qout);
+ genDotFile (&aut);
+ }
+
+ else if (generate_report)
+ {
+ ParseTable genParseTable (qout);
+ genParseTable(&aut);
+ }
+
+ return EXIT_SUCCESS;
+}
+
+QString Recognizer::expand (const QString &text) const
+{
+ QString code = text;
+
+ if (_M_grammar->start != _M_grammar->names.end ())
+ {
+ code = code.replace (QLatin1String("$start_id"), QString::number (std::distance (_M_grammar->names.begin (), _M_grammar->start)));
+ code = code.replace (QLatin1String("$start"), *_M_grammar->start);
+ }
+
+ code = code.replace (QLatin1String("$header"), _M_grammar->table_name.toLower () + QLatin1String("_p.h"));
+
+ code = code.replace (QLatin1String("$table"), _M_grammar->table_name);
+ code = code.replace (QLatin1String("$parser"), _M_grammar->table_name);
+
+ if (_M_current_rule != _M_grammar->rules.end ())
+ {
+ code = code.replace (QLatin1String("$rule_number"), QString::number (std::distance (_M_grammar->rules.begin (), _M_current_rule)));
+ code = code.replace (QLatin1String("$rule"), *_M_current_rule->lhs);
+ }
+
+ return code;
+}
diff --git a/util/qlalr/parsetable.cpp b/util/qlalr/parsetable.cpp
new file mode 100644
index 0000000000..c117071a64
--- /dev/null
+++ b/util/qlalr/parsetable.cpp
@@ -0,0 +1,127 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtCore/QTextStream>
+#include "lalr.h"
+#include "parsetable.h"
+
+ParseTable::ParseTable (QTextStream &o):
+ out (o)
+{
+}
+
+void ParseTable::operator () (Automaton *aut)
+{
+ Grammar *g = aut->_M_grammar;
+
+ int rindex = 1;
+ for (RulePointer rule = g->rules.begin (); rule != g->rules.end (); ++rule)
+ out << rindex++ << ")\t" << *rule << endl;
+ out << endl << endl;
+
+ int index = 0;
+ for (StatePointer state = aut->states.begin (); state != aut->states.end (); ++state)
+ {
+ out << "state " << index++ << endl << endl;
+
+ for (ItemPointer item = state->kernel.begin (); item != state->kernel.end (); ++item)
+ {
+ out << " * " << *item;
+
+ if (item->dot == item->end_rhs ())
+ out << " " << aut->lookaheads [item];
+
+ out << endl;
+ }
+
+ bool first = true;
+ for (Bundle::iterator arrow = state->bundle.begin (); arrow != state->bundle.end (); ++arrow)
+ {
+ if (! g->isTerminal (arrow.key ()))
+ continue;
+
+ if (first)
+ out << endl;
+
+ first = false;
+
+ out << " " << *arrow.key () << " shift, and go to state " << std::distance (aut->states.begin (), *arrow) << endl;
+ }
+
+ first = true;
+ for (ItemPointer item = state->closure.begin (); item != state->closure.end (); ++item)
+ {
+ if (item->dot != item->end_rhs () || item->rule == state->defaultReduce)
+ continue;
+
+ if (first)
+ out << endl;
+
+ first = false;
+
+ foreach (Name la, aut->lookaheads.value (item))
+ out << " " << *la << " reduce using rule " << aut->id (item->rule) << " (" << *item->rule->lhs << ")" << endl;
+ }
+
+ first = true;
+ for (Bundle::iterator arrow = state->bundle.begin (); arrow != state->bundle.end (); ++arrow)
+ {
+ if (! g->isNonTerminal (arrow.key ()))
+ continue;
+
+ if (first)
+ out << endl;
+
+ first = false;
+
+ out << " " << *arrow.key () << " go to state " << std::distance (aut->states.begin (), *arrow) << endl;
+ }
+
+ if (state->defaultReduce != g->rules.end ())
+ {
+ out << endl
+ << " $default reduce using rule " << aut->id (state->defaultReduce) << " (" << *state->defaultReduce->lhs << ")" << endl;
+ }
+
+ out << endl;
+ }
+}
diff --git a/util/qlalr/parsetable.h b/util/qlalr/parsetable.h
new file mode 100644
index 0000000000..36f6926818
--- /dev/null
+++ b/util/qlalr/parsetable.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PARSETABLE_H
+#define PARSETABLE_H
+
+QT_FORWARD_DECLARE_CLASS(QTextStream);
+class Automaton;
+
+class ParseTable
+{
+public:
+ ParseTable (QTextStream &out);
+
+ void operator () (Automaton *a);
+
+private:
+ QTextStream &out;
+};
+
+#endif // PARSETABLE_H
diff --git a/util/qlalr/qlalr.pro b/util/qlalr/qlalr.pro
new file mode 100644
index 0000000000..881a36a734
--- /dev/null
+++ b/util/qlalr/qlalr.pro
@@ -0,0 +1,21 @@
+
+TEMPLATE = app
+QT = core
+TARGET = qlalr
+mac:CONFIG -= app_bundle
+
+SOURCES += compress.cpp \
+ cppgenerator.cpp \
+ dotgraph.cpp \
+ lalr.cpp \
+ main.cpp \
+ parsetable.cpp \
+ recognizer.cpp \
+ grammar.cpp
+
+HEADERS += compress.h \
+ cppgenerator.h \
+ dotgraph.h \
+ lalr.h \
+ parsetable.h \
+ grammar_p.h
diff --git a/util/qlalr/recognizer.cpp b/util/qlalr/recognizer.cpp
new file mode 100644
index 0000000000..5a7ad3b254
--- /dev/null
+++ b/util/qlalr/recognizer.cpp
@@ -0,0 +1,489 @@
+
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the <your project> project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "recognizer.h"
+#include <cstdlib>
+#include <cstring>
+#include <cctype>
+
+Recognizer::Recognizer (Grammar *grammar, bool no_lines):
+ tos(0),
+ stack_size(0),
+ state_stack(0),
+ _M_line(1),
+ _M_action_line(0),
+ _M_grammar(grammar),
+ _M_no_lines(no_lines)
+{
+}
+
+Recognizer::~Recognizer()
+{
+ if (stack_size)
+ ::qFree(state_stack);
+}
+
+inline void Recognizer::reallocateStack()
+{
+ if (! stack_size)
+ stack_size = 128;
+ else
+ stack_size <<= 1;
+
+ sym_stack.resize (stack_size);
+
+ if (! state_stack)
+ state_stack = reinterpret_cast<int*> (::qMalloc(stack_size * sizeof(int)));
+ else
+ state_stack = reinterpret_cast<int*> (::qRealloc(state_stack, stack_size * sizeof(int)));
+}
+
+int Recognizer::nextToken()
+{
+ QString text;
+
+ Lagain:
+ while (ch.isSpace ())
+ inp ();
+
+ if (ch.isNull ())
+ return EOF_SYMBOL;
+
+ int token = ch.unicode ();
+
+ if (token == '"')
+ {
+ inp(); // skip "
+ text.clear ();
+ while (! ch.isNull () && ch != QLatin1Char ('"'))
+ {
+ if (ch == QLatin1Char ('\\'))
+ {
+ text += ch;
+ inp();
+ }
+ text += ch;
+ inp ();
+ }
+
+ if (ch == QLatin1Char ('"'))
+ inp ();
+ else
+ qerr << _M_input_file << ":" << _M_line << ": Warning. Expected `\"'" << endl;
+
+ _M_current_value = text;
+ return (token = STRING_LITERAL);
+ }
+
+ else if (ch.isLetterOrNumber () || ch == QLatin1Char ('_'))
+ {
+ text.clear ();
+ do { text += ch; inp (); }
+ while (ch.isLetterOrNumber () || ch == QLatin1Char ('_') || ch == QLatin1Char ('.'));
+ _M_current_value = text;
+ return (token = ID);
+ }
+
+ else if (token == '%')
+ {
+ text.clear ();
+
+ do { inp (); }
+ while (ch.isSpace ());
+
+ do { text += ch; inp (); }
+ while (ch.isLetterOrNumber () || ch == QLatin1Char ('_') || ch == QLatin1Char ('-'));
+
+ if (text == QLatin1String("token_prefix"))
+ return (token = TOKEN_PREFIX);
+ else if (text == QLatin1String("merged_output"))
+ return (token = MERGED_OUTPUT);
+ else if (text == QLatin1String("token"))
+ return (token = TOKEN);
+ else if (text == QLatin1String("start"))
+ return (token = START);
+ else if (text == QLatin1String("parser"))
+ return (token = PARSER);
+ else if (text == QLatin1String("decl"))
+ return (token = DECL_FILE);
+ else if (text == QLatin1String("impl"))
+ return (token = IMPL_FILE);
+ else if (text == QLatin1String("expect"))
+ return (token = EXPECT);
+ else if (text == QLatin1String("expect-rr"))
+ return (token = EXPECT_RR);
+ else if (text == QLatin1String("left"))
+ return (token = LEFT);
+ else if (text == QLatin1String("right"))
+ return (token = RIGHT);
+ else if (text == QLatin1String("nonassoc"))
+ return (token = NONASSOC);
+ else if (text == QLatin1String("prec"))
+ return (token = PREC);
+ else
+ {
+ qerr << _M_input_file << ":" << _M_line << ": Unknown keyword `" << text << "'" << endl;
+ exit (EXIT_FAILURE);
+ return (token = ERROR);
+ }
+ }
+
+ inp ();
+
+ if (token == '-' && ch == QLatin1Char ('-'))
+ {
+ do { inp (); }
+ while (! ch.isNull () && ch != QLatin1Char ('\n'));
+ goto Lagain;
+ }
+
+ else if (token == ':' && ch == QLatin1Char (':'))
+ {
+ inp ();
+ if (ch != QLatin1Char ('='))
+ return (token = ERROR);
+ inp ();
+ return (token = COLON);
+ }
+
+ else if (token == '/' && ch == QLatin1Char (':'))
+ {
+ _M_action_line = _M_line;
+
+ text.clear ();
+ if (! _M_no_lines)
+ text += QLatin1String ("\n#line ") + QString::number (_M_action_line) + " \"" + _M_input_file + "\"\n";
+ inp (); // skip ':'
+
+ forever
+ {
+ while (! ch.isNull ())
+ {
+ token = ch.unicode ();
+ inp ();
+
+ if (token == ':' && ch == QLatin1Char ('/'))
+ break;
+
+ text += QLatin1Char (token);
+ }
+
+ if (ch != QLatin1Char ('/'))
+ return (token = ERROR);
+
+ inp ();
+
+ if (ch.isNull () || ch.isSpace ())
+ {
+ _M_current_value = text;
+ return (token = DECL);
+ }
+ else
+ text += QLatin1String (":/");
+ }
+ }
+
+ else if (token == '/' && ch == QLatin1Char ('.'))
+ {
+ _M_action_line = _M_line;
+
+ text.clear ();
+ if (! _M_no_lines)
+ text += QLatin1String ("\n#line ") + QString::number (_M_action_line) + " \"" + _M_input_file + "\"\n";
+
+ inp (); // skip ':'
+
+ forever
+ {
+ while (! ch.isNull ())
+ {
+ token = ch.unicode ();
+ inp ();
+
+ if (token == '.' && ch == QLatin1Char ('/'))
+ break;
+
+ text += QLatin1Char (token);
+ }
+
+ if (ch != QLatin1Char ('/'))
+ return (token = ERROR);
+
+ inp ();
+
+ if (ch.isNull () || ch.isSpace ())
+ {
+ _M_current_value = text;
+ return (token = IMPL);
+ }
+ else
+ text += QLatin1String ("");
+ }
+ }
+
+ switch (token) {
+ case ':':
+ return (token = COLON);
+
+ case ';':
+ return (token = SEMICOLON);
+
+ case '|':
+ return (token = OR);
+
+ default:
+ break;
+ }
+
+ return token;
+}
+
+bool Recognizer::parse (const QString &input_file)
+{
+ _M_input_file = input_file;
+
+ QFile file(_M_input_file);
+ if (! file.open(QFile::ReadOnly))
+ {
+ qerr << "qlalr: no input file\n";
+ return false;
+ }
+
+ QString _M_contents = QTextStream(&file).readAll();
+ _M_firstChar = _M_contents.constBegin();
+ _M_lastChar = _M_contents.constEnd();
+ _M_currentChar = _M_firstChar;
+ _M_line = 1;
+
+ int yytoken = -1;
+ inp ();
+
+ reallocateStack();
+
+ _M_current_rule = _M_grammar->rules.end ();
+ _M_decls.clear ();
+ _M_impls.clear ();
+
+ tos = 0;
+ state_stack[++tos] = 0;
+
+ while (true)
+ {
+ if (yytoken == -1 && - TERMINAL_COUNT != action_index [state_stack [tos]])
+ yytoken = nextToken();
+
+ int act = t_action (state_stack [tos], yytoken);
+
+ if (act == ACCEPT_STATE)
+ return true;
+
+ else if (act > 0)
+ {
+ if (++tos == stack_size)
+ reallocateStack();
+
+ sym_stack [tos] = _M_current_value;
+ state_stack [tos] = act;
+ yytoken = -1;
+ }
+
+ else if (act < 0)
+ {
+ int r = - act - 1;
+
+ tos -= rhs [r];
+ act = state_stack [tos++];
+
+ switch (r) {
+
+case 3: {
+ Name name = _M_grammar->intern (sym(2));
+ _M_grammar->start = name;
+ _M_grammar->non_terminals.insert (name);
+} break;
+
+case 5: {
+ _M_grammar->table_name = sym(2);
+} break;
+
+case 6: {
+ _M_grammar->merged_output = sym(2);
+} break;
+
+case 7: {
+ _M_grammar->decl_file_name = sym(2);
+} break;
+
+case 8: {
+ _M_grammar->impl_file_name = sym(2);
+} break;
+
+case 9: {
+ _M_grammar->expected_shift_reduce = sym(2).toInt();
+} break;
+
+case 10: {
+ _M_grammar->expected_reduce_reduce = sym(2).toInt();
+} break;
+
+case 11: {
+ _M_grammar->token_prefix = sym(2);
+} break;
+case 17:case 18: {
+ Name name = _M_grammar->intern (sym(1));
+ _M_grammar->terminals.insert (name);
+ _M_grammar->spells.insert (name, sym(2));
+} break;
+
+case 19: {
+ _M_grammar->current_assoc = Grammar::Left;
+ ++_M_grammar->current_prec;
+} break;
+
+case 20: {
+ _M_grammar->current_assoc = Grammar::Right;
+ ++_M_grammar->current_prec;
+} break;
+
+case 21: {
+ _M_grammar->current_assoc = Grammar::NonAssoc;
+ ++_M_grammar->current_prec;
+} break;
+
+case 25: {
+ Name name = _M_grammar->intern (sym(1));
+ _M_grammar->terminals.insert (name);
+
+ Grammar::TokenInfo info;
+ info.prec = _M_grammar->current_prec;
+ info.assoc = _M_grammar->current_assoc;
+ _M_grammar->token_info.insert (name, info);
+} break;
+
+case 26: {
+ _M_decls += expand (sym(1));
+} break;
+
+case 27: {
+ _M_impls += expand (sym(1));
+} break;
+
+case 34: {
+ _M_current_rule = _M_grammar->rules.insert (_M_grammar->rules.end (), Rule ());
+ _M_current_rule->lhs = _M_grammar->intern (sym(1));
+ _M_grammar->declared_lhs.insert (_M_current_rule->lhs);
+
+ if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ())
+ {
+ qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl;
+ return false;
+ }
+
+ _M_grammar->non_terminals.insert (_M_current_rule->lhs);
+} break;
+
+case 38: {
+ Name lhs = _M_current_rule->lhs;
+ _M_current_rule = _M_grammar->rules.insert (_M_grammar->rules.end (), Rule ());
+ _M_current_rule->lhs = lhs;
+ _M_grammar->declared_lhs.insert (_M_current_rule->lhs);
+
+ if (_M_grammar->terminals.find (_M_current_rule->lhs) != _M_grammar->terminals.end ())
+ {
+ qerr << _M_input_file << ":" << _M_line << ": Invalid non terminal `" << *_M_current_rule->lhs << "'" << endl;
+ return false;
+ }
+
+ _M_grammar->non_terminals.insert (_M_current_rule->lhs);
+} break;
+
+case 39: {
+ _M_current_rule->prec = _M_grammar->names.end ();
+
+ for (NameList::iterator it = _M_current_rule->rhs.begin (); it != _M_current_rule->rhs.end (); ++it)
+ {
+ if (! _M_grammar->isTerminal (*it))
+ continue;
+
+ _M_current_rule->prec = *it;
+ }
+} break;
+
+case 40: {
+ Name tok = _M_grammar->intern (sym(2));
+ if (! _M_grammar->isTerminal (tok))
+ {
+ qerr << _M_input_file << ":" << _M_line << ": `" << *tok << " is not a terminal symbol" << endl;
+ _M_current_rule->prec = _M_grammar->names.end ();
+ }
+ else
+ _M_current_rule->prec = tok;
+} break;
+
+case 42: {
+ Name name = _M_grammar->intern (sym(2));
+
+ if (_M_grammar->terminals.find (name) == _M_grammar->terminals.end ())
+ _M_grammar->non_terminals.insert (name);
+
+ _M_current_rule->rhs.push_back (name);
+} break;
+
+case 43: {
+ sym(1) = QString();
+} break;
+
+ } // switch
+
+ state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT);
+ }
+
+ else
+ {
+ break;
+ }
+ }
+
+ qerr << _M_input_file << ":" << _M_line << ": Syntax error" << endl;
+ return false;
+}
+
diff --git a/util/qlalr/recognizer.h b/util/qlalr/recognizer.h
new file mode 100644
index 0000000000..c9be98f7a8
--- /dev/null
+++ b/util/qlalr/recognizer.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the QLALR project on Trolltech Labs.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/QtDebug>
+#include <QtCore/QString>
+#include <QtCore/QFile>
+#include <QtCore/QTextStream>
+
+#include "grammar_p.h"
+#include "lalr.h"
+
+#include <cstdlib>
+
+class Recognizer: protected grammar
+{
+public:
+ Recognizer (Grammar *grammar, bool no_lines);
+ ~Recognizer();
+
+ bool parse (const QString &input_file = QString ());
+
+ inline QString decls () const { return _M_decls; }
+ inline QString impls () const { return _M_impls; }
+
+protected:
+ inline void reallocateStack ();
+
+ inline QString &sym (int index)
+ { return sym_stack [tos + index - 1]; }
+
+protected: // scanner
+ int nextToken();
+
+ inline void inp ()
+ {
+ if (_M_currentChar != _M_lastChar)
+ {
+ ch = *_M_currentChar++;
+
+ if (ch == QLatin1Char('\n'))
+ ++_M_line;
+ }
+ else
+ ch = QChar();
+ }
+
+ QString expand (const QString &text) const;
+
+protected:
+ // recognizer
+ int tos;
+ int stack_size;
+ QVector<QString> sym_stack;
+ int *state_stack;
+
+ QString _M_contents;
+ QString::const_iterator _M_firstChar;
+ QString::const_iterator _M_lastChar;
+ QString::const_iterator _M_currentChar;
+
+ // scanner
+ QChar ch;
+ int _M_line;
+ int _M_action_line;
+ Grammar *_M_grammar;
+ RulePointer _M_current_rule;
+ QString _M_input_file;
+
+ QString _M_decls;
+ QString _M_impls;
+ QString _M_current_value;
+ bool _M_no_lines;
+};
diff --git a/util/qtscriptparser/make-parser.sh b/util/qtscriptparser/make-parser.sh
new file mode 100644
index 0000000000..6620e64650
--- /dev/null
+++ b/util/qtscriptparser/make-parser.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+me=$(dirname $0)
+mkdir -p $me/out
+(cd $me/out && ${QLALR-qlalr} --troll --no-lines ../qscript.g)
+
+for f in $me/out/*.{h,cpp}; do
+ n=$(basename $f)
+ p4 open $me/../../src/script/$n
+ cp $f $me/../../src/script/$n
+done
+
+p4 revert -a $me/../../src/script/...
+p4 diff -du $me/../../src/script/...
+
diff --git a/util/s60pixelmetrics/inc/pixel_metrics.h b/util/s60pixelmetrics/inc/pixel_metrics.h
new file mode 100644
index 0000000000..7235bda91e
--- /dev/null
+++ b/util/s60pixelmetrics/inc/pixel_metrics.h
@@ -0,0 +1,216 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PIXELMETRICS_H
+#define PIXELMETRICS_H
+
+#include <e32base.h>
+//#define S60_Rnd_Env
+
+#ifdef S60_Rnd_Env
+#pragma message ("Building in supported environment")
+
+const TInt KUnknownBase = -5000;
+
+NONSHARABLE_CLASS( QStyle )
+ {
+ public:
+ enum PixelMetric {
+ PM_ButtonMargin,
+ PM_ButtonDefaultIndicator,
+ PM_MenuButtonIndicator,
+ PM_ButtonShiftHorizontal,
+ PM_ButtonShiftVertical,
+
+ PM_DefaultFrameWidth,
+ PM_SpinBoxFrameWidth,
+ PM_ComboBoxFrameWidth,
+
+ PM_MaximumDragDistance,
+
+ PM_ScrollBarExtent,
+ PM_ScrollBarSliderMin,
+
+ PM_SliderThickness, // total slider thickness
+ PM_SliderControlThickness, // thickness of the business part
+ PM_SliderLength, // total length of slider
+ PM_SliderTickmarkOffset, //
+ PM_SliderSpaceAvailable, // available space for slider to move
+
+ PM_DockWidgetSeparatorExtent,
+ PM_DockWidgetHandleExtent,
+ PM_DockWidgetFrameWidth,
+
+ PM_TabBarTabOverlap,
+ PM_TabBarTabHSpace,
+ PM_TabBarTabVSpace,
+ PM_TabBarBaseHeight,
+ PM_TabBarBaseOverlap,
+
+ PM_ProgressBarChunkWidth,
+
+ PM_SplitterWidth,
+ PM_TitleBarHeight,
+
+ PM_MenuScrollerHeight,
+ PM_MenuHMargin,
+ PM_MenuVMargin,
+ PM_MenuPanelWidth,
+ PM_MenuTearoffHeight,
+ PM_MenuDesktopFrameWidth,
+
+ PM_MenuBarPanelWidth,
+ PM_MenuBarItemSpacing,
+ PM_MenuBarVMargin,
+ PM_MenuBarHMargin,
+
+ PM_IndicatorWidth,
+ PM_IndicatorHeight,
+ PM_ExclusiveIndicatorWidth,
+ PM_ExclusiveIndicatorHeight,
+ PM_CheckListButtonSize,
+ PM_CheckListControllerSize,
+
+ PM_DialogButtonsSeparator,
+ PM_DialogButtonsButtonWidth,
+ PM_DialogButtonsButtonHeight,
+
+ PM_MdiSubWindowFrameWidth,
+ PM_MDIFrameWidth = PM_MdiSubWindowFrameWidth, //obsolete
+ PM_MdiSubWindowMinimizedWidth,
+ PM_MDIMinimizedWidth = PM_MdiSubWindowMinimizedWidth, //obsolete
+
+ PM_HeaderMargin,
+ PM_HeaderMarkSize,
+ PM_HeaderGripMargin,
+ PM_TabBarTabShiftHorizontal,
+ PM_TabBarTabShiftVertical,
+ PM_TabBarScrollButtonWidth,
+
+ PM_ToolBarFrameWidth,
+ PM_ToolBarHandleExtent,
+ PM_ToolBarItemSpacing,
+ PM_ToolBarItemMargin,
+ PM_ToolBarSeparatorExtent,
+ PM_ToolBarExtensionExtent,
+
+ PM_SpinBoxSliderHeight,
+
+ PM_DefaultTopLevelMargin,
+ PM_DefaultChildMargin,
+ PM_DefaultLayoutSpacing,
+
+ PM_ToolBarIconSize,
+ PM_ListViewIconSize,
+ PM_IconViewIconSize,
+ PM_SmallIconSize,
+ PM_LargeIconSize,
+
+ PM_FocusFrameVMargin,
+ PM_FocusFrameHMargin,
+
+ PM_ToolTipLabelFrameWidth,
+ PM_CheckBoxLabelSpacing,
+ PM_TabBarIconSize,
+ PM_SizeGripSize,
+ PM_DockWidgetTitleMargin,
+ PM_MessageBoxIconSize,
+ PM_ButtonIconSize,
+
+ PM_DockWidgetTitleBarButtonMargin,
+
+ PM_RadioButtonLabelSpacing,
+ PM_LayoutLeftMargin,
+ PM_LayoutTopMargin,
+ PM_LayoutRightMargin,
+ PM_LayoutBottomMargin,
+ PM_LayoutHorizontalSpacing,
+ PM_LayoutVerticalSpacing,
+ PM_TabBar_ScrollButtonOverlap,
+
+ PM_TextCursorWidth,
+
+ PM_TabCloseIndicatorWidth,
+ PM_TabCloseIndicatorHeight,
+
+ PM_ScrollView_ScrollBarSpacing,
+ PM_SubMenuOverlap,
+
+ // do not add any values below/greater than this
+ PM_CustomBase = 0xf0000000,
+
+ // The following are custom values needed to draw the S60Style according scalable UIs.
+ // Width of 9-part frame-corner
+ PM_Custom_FrameCornerWidth,
+ // Height of 9-part frame corner
+ PM_Custom_FrameCornerHeight,
+ // Bold line width
+ PM_Custom_BoldLineWidth,
+ // Thin line width
+ PM_Custom_ThinLineWidth
+ };
+
+ };
+#else
+#pragma message ("Building in non-supported environment, this probably fails")
+#endif
+
+
+// Pixel metrics version information.
+class TPixelMetricsVersion
+ {
+ public:
+ TInt majorVersion;
+ TInt minorVersion;
+ };
+
+NONSHARABLE_CLASS(PixelMetrics)
+{
+ public:
+ static TPixelMetricsVersion Version();
+ static TInt PixelMetricValue(QStyle::PixelMetric);
+
+ private:
+ static TInt PixelMetricMenuValue( QStyle::PixelMetric menuValue, TRect mainPaneRect );
+ static TInt PixelMetricTabValue( QStyle::PixelMetric tabValue, TRect appWindow, TBool landscape );
+};
+
+#endif // PIXELMETRICS_H
diff --git a/util/s60pixelmetrics/pixelmetricsmapper/PMMapper.hrh b/util/s60pixelmetrics/pixelmetricsmapper/PMMapper.hrh
new file mode 100644
index 0000000000..afd47db974
--- /dev/null
+++ b/util/s60pixelmetrics/pixelmetricsmapper/PMMapper.hrh
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PMMAPPER_HRH
+#define PMMAPPER_HRH
+
+// DATA TYPES
+
+// View IDs.
+enum
+ {
+ EPMMapperViewId = 1 // Base view.
+ };
+
+// Menu items (commands)
+enum
+ {
+ ECmdStartCalculations = 8500,
+ ECmdSwitchOrientation,
+ ECmdSwitchMirroring,
+ ECmdStatus,
+ ECmdSwitchOutput,
+ ECmdCreateHeaderFile,
+ ECmdSetAutoMode
+ };
+
+enum
+ {
+ EWaitNote = 9000
+ };
+
+#endif // PMMAPPER_HRH
+
+
+// End of File
diff --git a/util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.cpp b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.cpp
new file mode 100644
index 0000000000..3371baad29
--- /dev/null
+++ b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.cpp
@@ -0,0 +1,1045 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// INCLUDE FILES
+
+#include <avkon.rsg>
+#include <avkon.hrh>
+#include "PMMapper.hrh"
+#include "PMMapperApp.h"
+#include "PMMapperView.h"
+#include <PM_Mapper.rsg>
+
+#include <BldVariant.hrh>
+
+#include <w32std.h>
+#include <apgwgnam.h>
+#include <eikstart.h>
+#include <eikenv.h>
+#include <f32file.h>
+
+#include <avkon.hrh>
+#include <aknenv.h>
+
+#include <aknnotedialog.h>
+#include <stringloader.h>
+#include <coneresloader.h>
+#include <aknglobalnote.h>
+
+#include <CentralRepository.h>
+#include <AvkonInternalCRKeys.h> // KAknLayoutId
+
+#include <Aknsutils.h>
+#include <AknUtils.h>
+#include "pixel_metrics.h"
+
+#include <avkon.mbg>
+
+#include <AknLayoutConfig.h>
+#include <aknsgcc.h>
+
+typedef TBuf<2048> TMySmallBuffer;
+typedef TBuf<8192> TMyBigBuffer;
+
+_LIT(KLayoutSourceFileAndPath, "\\private\\2002121f\\pm_layout.cpp");
+_LIT(KPixelMetricsDataFiles, "\\private\\2002121f\\*.txt");
+_LIT(KOpenBrace, "{");
+_LIT(KComma, ",");
+_LIT(KColon, ":");
+_LIT(KTab, "\t");
+_LIT(KEndBraceWithCommaAndCRLF, "},\n");
+_LIT(KCRLF, "\n");
+
+// Number of header lines in layout data.
+const TInt KHeaderValues = 5;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperAppUi::CPixelMetricsMapperAppUi() : iFileOutputOn(EFalse)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperAppUi::~CPixelMetricsMapperAppUi()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperAppUi::ConstructL()
+ {
+ BaseConstructL();
+
+ CEikonEnv& eikEnv = *CEikonEnv::Static();
+
+ eikEnv.WsSession().ComputeMode(
+ RWsSession::EPriorityControlDisabled );
+ RThread().SetProcessPriority( EPriorityHigh );
+
+ CPixelMetricsMapperView* view = new( ELeave ) CPixelMetricsMapperView;
+ CleanupStack::PushL( view );
+ view->ConstructL();
+ CleanupStack::Pop(); // view
+ AddViewL(view); // transfer ownership to CAknViewAppUi
+ iView = view;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CPixelMetricsMapperAppUi::HandleKeyEventL(
+ const TKeyEvent& /*aKeyEvent*/,
+ TEventCode aType )
+ {
+ return EKeyWasNotConsumed;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
+ {
+ switch ( aCommand )
+ {
+ case EAknSoftkeyExit:
+ case EEikCmdExit:
+ Exit();
+ break;
+ case ECmdSwitchOutput:
+ iFileOutputOn = !iFileOutputOn;
+ break;
+ case ECmdStatus:
+ {
+ ClearL();
+
+ // layout
+ CRepository* repository = NULL;
+ TInt value = KErrNotFound;
+ TRAPD(ret, repository = CRepository::NewL(KCRUidAvkon));
+ if (ret == KErrNone)
+ {
+ ret = repository->Get(KAknLayoutId, value);
+ }
+ delete repository;
+ ret= 0;
+ HBufC* buffer = HBufC::NewLC( 100 );
+ TPtr bufferPtr = buffer->Des();
+ bufferPtr.Append(_L("Layout: "));
+ if (ret==KErrNone)
+ {
+ bufferPtr.AppendNum(value);
+ }
+ else
+ {
+ bufferPtr.Append(_L("(error) "));
+ bufferPtr.AppendNum(ret);
+ }
+ TBool last = ETrue;
+ ShowL( *buffer, last );
+ bufferPtr.Zero();
+
+ // Orientation
+ bufferPtr.Append(_L("Orientation: "));
+ bufferPtr.AppendNum((TInt)iAvkonAppUi->Orientation());
+ ShowL( *buffer, last );
+ bufferPtr.Zero();
+
+ // Output
+ bufferPtr.Append(_L("Output: "));
+ if (iFileOutputOn) bufferPtr.Append(_L("File"));
+ else bufferPtr.Append(_L("Screen"));
+ ShowL( *buffer, last );
+ bufferPtr.Zero();
+
+ // Automode
+ bufferPtr.Append(_L("AutoMode: "));
+ bufferPtr.AppendNum((TInt)iAutoMode);
+ ShowL( *buffer, last );
+ bufferPtr.Zero();
+
+ CAknLayoutConfig::TScreenMode localAppScreenMode = CAknSgcClient::ScreenMode();
+ TInt hashValue = localAppScreenMode.ScreenStyleHash();
+ TPixelsTwipsAndRotation pixels = CAknSgcClient::PixelsAndRotation();
+ TSize pixelSize = pixels.iPixelSize;
+
+ bufferPtr.Append(_L("LayoutName: "));
+
+ if ( (pixelSize.iWidth == 320 || pixelSize.iWidth == 240 )&&
+ (pixelSize.iHeight == 320 || pixelSize.iHeight == 240 ))
+ {
+ if (hashValue==0x996F7AA7)
+ bufferPtr.Append(_L("QVGA2"));
+ else
+ bufferPtr.Append(_L("QVGA1"));
+ }
+ else if ((pixelSize.iWidth == 640 || pixelSize.iWidth == 360 )&&
+ (pixelSize.iHeight == 360 || pixelSize.iHeight == 640 ))
+ {
+ bufferPtr.Append(_L("nHD"));
+ }
+ else if ((pixelSize.iWidth == 640 || pixelSize.iWidth == 480 )&&
+ (pixelSize.iHeight == 480 || pixelSize.iHeight == 640 ))
+ {
+ bufferPtr.Append(_L("VGA"));
+ }
+ else if ((pixelSize.iWidth == 352 || pixelSize.iWidth == 800 )&&
+ (pixelSize.iHeight == 800 || pixelSize.iHeight == 352 ))
+ {
+ bufferPtr.Append(_L("E90"));
+ }
+ else if ((pixelSize.iWidth == 320 || pixelSize.iWidth == 480 ||
+ pixelSize.iWidth == 240 || pixelSize.iWidth == 640 )&&
+ (pixelSize.iHeight == 320 || pixelSize.iHeight == 480 ||
+ pixelSize.iHeight == 240 || pixelSize.iHeight == 640))
+ {
+ bufferPtr.Append(_L("HVGA"));
+ }
+ else if ((pixelSize.iWidth == 480 || pixelSize.iWidth == 854 ||
+ pixelSize.iWidth == 848 || pixelSize.iWidth == 800 )&&
+ (pixelSize.iHeight == 800 || pixelSize.iHeight == 480 ||
+ pixelSize.iHeight == 848 || pixelSize.iHeight == 854))
+ {
+ bufferPtr.Append(_L("WVGA"));
+ }
+ else
+ {
+ bufferPtr.Append(_L("Unknown"));
+ }
+
+ ShowL( *buffer, last );
+ bufferPtr.Zero();
+ CleanupStack::PopAndDestroy( buffer );
+ }
+ break;
+ case ECmdSwitchMirroring:
+ {
+ // set the shared data value
+ CRepository* repository = NULL;
+ TRAPD(ret, repository = CRepository::NewL(KCRUidAvkon));
+ if (ret == KErrNone)
+ {
+ TInt value = KErrNotFound;
+ repository->Get(KAknLayoutId, value);
+ if ( value == EAknLayoutIdELAF)
+ {
+ value = EAknLayoutIdABRW;
+ }
+ else if (value ==EAknLayoutIdABRW)
+ {
+ value = EAknLayoutIdELAF;
+ }
+ ret = repository->Set(KAknLayoutId, value);
+ }
+ delete repository;
+ // now inform all open apps of the switch
+ TWsEvent event;
+ event.SetType(KEikDynamicLayoutVariantSwitch);
+ iEikonEnv->WsSession().SendEventToAllWindowGroups(event);
+ }
+ break;
+ case ECmdSwitchOrientation:
+ {
+ ClearL();
+ #ifndef __SERIES60_31__
+ if (!iAvkonAppUi->OrientationCanBeChanged())
+ {
+ HBufC* buffer = HBufC::NewLC( 100 );
+ TPtr bufferPtr = buffer->Des();
+ bufferPtr.Append(_L("Orientation cannot be changed."));
+ TBool last = EFalse;
+ ShowL( *buffer, last );
+ bufferPtr.Zero();
+ delete buffer;
+ }
+ #endif //__SERIES60_31__
+ if ( iAvkonAppUi->Orientation() == CAknAppUiBase::EAppUiOrientationPortrait)
+ {
+ iAvkonAppUi->SetOrientationL(CAknAppUiBase::EAppUiOrientationLandscape);
+ }
+ else if (iAvkonAppUi->Orientation() == CAknAppUiBase::EAppUiOrientationLandscape)
+ {
+ iAvkonAppUi->SetOrientationL(CAknAppUiBase::EAppUiOrientationPortrait);
+ }
+ else
+ {
+ // unspecified
+ iAvkonAppUi->SetOrientationL(CAknAppUiBase::EAppUiOrientationLandscape);
+ /*User::After(100000);
+ HBufC* buffer = HBufC::NewLC( 100 );
+ TPtr bufferPtr = buffer->Des();
+ bufferPtr.Append(_L("Orientation unspecified."));
+ TBool last = EFalse;
+ ShowL( *buffer, last );
+ bufferPtr.Zero();
+ delete buffer;*/
+ }
+ break;
+ }
+ case ECmdStartCalculations:
+ {
+ ClearL();
+ // Get known values
+ TInt index = 0;
+ TBool last = EFalse;
+ if (iFileOutputOn)
+ {
+ TRect screenRect;
+ AknLayoutUtils::LayoutMetricsRect(
+ AknLayoutUtils::EApplicationWindow,
+ screenRect );
+
+ // Add screen dimensions
+ TInt height = screenRect.Height();
+ TInt width = screenRect.Width();
+ TBuf16<32> tgt;
+ // HEIGTH
+ tgt.Append(_L("height: \t"));
+ tgt.AppendNum(height, EDecimal); // put max height into text file
+ ShowL( tgt, last );
+ tgt.Zero();
+ // WIDTH
+ tgt.Append(_L("width: \t"));
+ tgt.AppendNum(width, EDecimal); // put max width into text file
+ ShowL( tgt, last );
+ tgt.Zero();
+ // VERSION
+ TPixelMetricsVersion version = PixelMetrics::Version();
+ tgt.Append(_L("major_version: \t"));
+ tgt.AppendNum(version.majorVersion, EDecimal); // put major version into text file
+ ShowL( tgt, last );
+ tgt.Zero();
+ tgt.Append(_L("minor_version: \t"));
+ tgt.AppendNum(version.minorVersion, EDecimal); // put minor version into text file
+ ShowL( tgt, last );
+ tgt.Zero();
+ // MIRRORED
+ TBool mirrored = AknLayoutUtils::LayoutMirrored();
+ tgt.Append(_L("mirrored: \t"));
+ tgt.AppendNum(mirrored, EDecimal); // put mirrored state into text file
+ ShowL( tgt, last );
+ tgt.Zero();
+ }
+
+ TInt myValue = KErrNotFound;
+ for (;;)
+ {
+ if (index==QStyle::PM_Custom_ThinLineWidth)
+ {
+ last = ETrue;
+ }
+ myValue = PixelMetrics::PixelMetricValue(static_cast<QStyle::PixelMetric>(index));
+ ShowSingleValueL( index, myValue, last );
+
+ if (last) break;
+ // if last before custom values, "jump" to custom base
+ if (index==QStyle::PM_SubMenuOverlap) index = QStyle::PM_CustomBase;
+ index++;
+ }
+ if (iAutoMode && !iMode)
+ {
+ HandleCommandL(ECmdSwitchMirroring);
+ iMode = ETrue;
+ }
+ }
+ break;
+ case ECmdCreateHeaderFile:
+ CreateHeaderFileL();
+ break;
+ case ECmdSetAutoMode:
+ iAutoMode = !iAutoMode;
+ default:
+ break;
+ }
+ }
+void CPixelMetricsMapperAppUi::DoAutoOperationL()
+ {
+ HandleCommandL(ECmdStartCalculations);
+ iMode = EFalse;
+ HandleCommandL(ECmdSwitchMirroring);
+ }
+
+TBool CPixelMetricsMapperAppUi::ReadyForAutoOp() const
+ {
+ return (iAutoMode && iMode);
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperAppUi::ShowL( const TDesC& aText, TBool& aLast, const TBool& aFileOutput )
+ {
+ _LIT( KTestPrefix, "\t" );
+
+ HBufC* buffer = HBufC::NewLC( aText.Length() + KTestPrefix().Length() );
+ TPtr ptr = buffer->Des();
+ ptr.Append( KTestPrefix );
+ ptr.Append( aText );
+ iView->ShowL( *buffer, aLast, aFileOutput );
+ CleanupStack::PopAndDestroy( buffer );
+ }
+
+void CPixelMetricsMapperAppUi::ShowSingleValueL(TInt& aPixelMetric, TInt& aValue, TBool& aLast )
+ {
+ HBufC* buffer = HBufC::NewLC( 100 );
+ TPtr bufferPtr = buffer->Des();
+
+ switch (aPixelMetric)
+ {
+ case QStyle::PM_DockWidgetTitleMargin:
+ bufferPtr.Append(_L("DockTitleMargin: "));
+ break;
+ case QStyle::PM_DockWidgetTitleBarButtonMargin:
+ bufferPtr.Append(_L("DockTitleBtnMargin: "));
+ break;
+ case QStyle::PM_ButtonMargin:
+ bufferPtr.Append(_L("ButtonMargin: "));
+ break;
+ case QStyle::PM_ButtonDefaultIndicator:
+ bufferPtr.Append(_L("ButtonDefaultIndicator: "));
+ break;
+ case QStyle::PM_MdiSubWindowFrameWidth:
+ bufferPtr.Append(_L("MdiSubWndFrameW: "));
+ break;
+ case QStyle::PM_ComboBoxFrameWidth:
+ bufferPtr.Append(_L("ComboBoxFrameWidth: "));
+ break;
+ case QStyle::PM_SpinBoxFrameWidth:
+ bufferPtr.Append(_L("SpinBoxFrameWidth: "));
+ break;
+ case QStyle::PM_DefaultFrameWidth:
+ bufferPtr.Append(_L("DefaultFrameWidth: "));
+ break;
+ case QStyle::PM_RadioButtonLabelSpacing:
+ bufferPtr.Append(_L("RadioButtonLabelSpc: "));
+ break;
+ case QStyle::PM_CheckBoxLabelSpacing:
+ bufferPtr.Append(_L("CheckBoxLabelSpacing: "));
+ break;
+ case QStyle::PM_ToolTipLabelFrameWidth:
+ bufferPtr.Append(_L("ToolTipLabelFrameW: "));
+ break;
+ case QStyle::PM_ListViewIconSize:
+ bufferPtr.Append(_L("ListViewIconSize: "));
+ break;
+ case QStyle::PM_LargeIconSize:
+ bufferPtr.Append(_L("LargeIconSize: "));
+ break;
+ case QStyle::PM_IconViewIconSize:
+ bufferPtr.Append(_L("IconViewIconSize: "));
+ break;
+ case QStyle::PM_TabBarIconSize:
+ bufferPtr.Append(_L("TabBarIconSize: "));
+ break;
+ case QStyle::PM_MessageBoxIconSize:
+ bufferPtr.Append(_L("MessageBoxIconSize: "));
+ break;
+ case QStyle::PM_ButtonIconSize:
+ bufferPtr.Append(_L("ButtonIconSize: "));
+ break;
+ case QStyle::PM_TextCursorWidth:
+ bufferPtr.Append(_L("TextCursorWidth: "));
+ break;
+ case QStyle::PM_SliderLength:
+ bufferPtr.Append(_L("SliderLength: "));
+ break;
+ case QStyle::PM_SliderThickness:
+ bufferPtr.Append(_L("SliderThickness: "));
+ break;
+ case QStyle::PM_SliderTickmarkOffset:
+ bufferPtr.Append(_L("SliderTickmarkOffset: "));
+ break;
+ case QStyle::PM_SliderControlThickness:
+ bufferPtr.Append(_L("SliderCntrlThickness: "));
+ break;
+ case QStyle::PM_SliderSpaceAvailable:
+ bufferPtr.Append(_L("SliderSpaceAvailable: "));
+ break;
+ case QStyle::PM_MenuBarItemSpacing:
+ bufferPtr.Append(_L("MenuBarItemSpacing: "));
+ break;
+ case QStyle::PM_MenuBarHMargin:
+ bufferPtr.Append(_L("MenuBarHMargin: "));
+ break;
+ case QStyle::PM_MenuBarVMargin:
+ bufferPtr.Append(_L("MenuBarVMargin: "));
+ break;
+ case QStyle::PM_ToolBarItemSpacing:
+ bufferPtr.Append(_L("ToolBarItemSpacing: "));
+ break;
+ case QStyle::PM_ToolBarFrameWidth:
+ bufferPtr.Append(_L("ToolBarFrameWidth: "));
+ break;
+ case QStyle::PM_ToolBarItemMargin:
+ bufferPtr.Append(_L("ToolBarItemMargin: "));
+ break;
+ case QStyle::PM_LayoutLeftMargin:
+ bufferPtr.Append(_L("LayoutLeftMargin: "));
+ break;
+ case QStyle::PM_LayoutRightMargin:
+ bufferPtr.Append(_L("LayoutRightMargin: "));
+ break;
+ case QStyle::PM_LayoutTopMargin:
+ bufferPtr.Append(_L("LayoutTopMargin: "));
+ break;
+ case QStyle::PM_LayoutBottomMargin:
+ bufferPtr.Append(_L("LayoutBottomMargin: "));
+ break;
+ case QStyle::PM_LayoutHorizontalSpacing:
+ bufferPtr.Append(_L("LayoutHSpacing: "));
+ break;
+ case QStyle::PM_LayoutVerticalSpacing:
+ bufferPtr.Append(_L("LayoutVSpacing: "));
+ break;
+ case QStyle::PM_MaximumDragDistance:
+ bufferPtr.Append(_L("MaxDragDistance: "));
+ break;
+ case QStyle::PM_ScrollBarExtent:
+ bufferPtr.Append(_L("ScrollBarExtent: "));
+ break;
+ case QStyle::PM_ScrollBarSliderMin:
+ bufferPtr.Append(_L("ScrollBarSliderMin: "));
+ break;
+ case QStyle::PM_MenuBarPanelWidth:
+ bufferPtr.Append(_L("MenuBarPanelWidth: "));
+ break;
+ case QStyle::PM_ProgressBarChunkWidth:
+ bufferPtr.Append(_L("ProgBarChunkWidth: "));
+ break;
+ case QStyle::PM_TabBarTabOverlap:
+ bufferPtr.Append(_L("TabBarTabOverlap: "));
+ break;
+ case QStyle::PM_TabBarTabHSpace:
+ bufferPtr.Append(_L("TabBarTabHSpace: "));
+ break;
+ case QStyle::PM_TabBarTabVSpace:
+ bufferPtr.Append(_L("TabBarTabVSpace: "));
+ break;
+ case QStyle::PM_TabBarBaseHeight:
+ bufferPtr.Append(_L("TabBarBaseHeight: "));
+ break;
+ case QStyle::PM_TabBarBaseOverlap:
+ bufferPtr.Append(_L("TabBarBaseOverlap: "));
+ break;
+ case QStyle::PM_TabBarScrollButtonWidth:
+ bufferPtr.Append(_L("TabBarScrollBtnWidth: "));
+ break;
+ case QStyle::PM_TabBarTabShiftHorizontal:
+ bufferPtr.Append(_L("TabBarTabShiftH: "));
+ break;
+ case QStyle::PM_TabBarTabShiftVertical:
+ bufferPtr.Append(_L("TabBarTabShiftV: "));
+ break;
+ case QStyle::PM_MenuPanelWidth:
+ bufferPtr.Append(_L("MenuPanelWidth: "));
+ break;
+ case QStyle::PM_MenuHMargin:
+ bufferPtr.Append(_L("MenuHMargin: "));
+ break;
+ case QStyle::PM_MenuVMargin:
+ bufferPtr.Append(_L("MenuVMargin: "));
+ break;
+ case QStyle::PM_MenuDesktopFrameWidth:
+ bufferPtr.Append(_L("MenuFrameWidth: "));
+ break;
+ case QStyle::PM_SmallIconSize:
+ bufferPtr.Append(_L("SmallIconSize: "));
+ break;
+ case QStyle::PM_FocusFrameHMargin:
+ bufferPtr.Append(_L("FocusFrameHMargin: "));
+ break;
+ case QStyle::PM_FocusFrameVMargin:
+ bufferPtr.Append(_L("FocusFrameVMargin: "));
+ break;
+ case QStyle::PM_ToolBarIconSize:
+ bufferPtr.Append(_L("ToolBarIconSize: "));
+ break;
+ case QStyle::PM_TitleBarHeight: // use titlepane height
+ bufferPtr.Append(_L("TitleBarHeight: "));
+ break;
+ case QStyle::PM_IndicatorWidth:
+ bufferPtr.Append(_L("IndicatorWidth: "));
+ break;
+ case QStyle::PM_IndicatorHeight:
+ bufferPtr.Append(_L("IndicatorHeight: "));
+ break;
+ case QStyle::PM_ExclusiveIndicatorHeight:
+ bufferPtr.Append(_L("ExclusiveIndHeight: "));
+ break;
+ case QStyle::PM_ExclusiveIndicatorWidth:
+ bufferPtr.Append(_L("ExclusiveIndWidth: "));
+ break;
+ case QStyle::PM_HeaderMargin: // not in S60
+ bufferPtr.Append(_L("HeaderMargin: "));
+ break;
+ case QStyle::PM_MenuScrollerHeight: // not in S60
+ bufferPtr.Append(_L("MenuScrollerHeight: "));
+ break;
+ case QStyle::PM_MenuTearoffHeight: // not in S60
+ bufferPtr.Append(_L("MenuTearoffHeight: "));
+ break;
+ case QStyle::PM_DockWidgetFrameWidth: // not in S60
+ bufferPtr.Append(_L("DockFrameWidth: "));
+ break;
+ case QStyle::PM_DockWidgetSeparatorExtent: // not in S60
+ bufferPtr.Append(_L("DockSepExtent: "));
+ break;
+ case QStyle::PM_MdiSubWindowMinimizedWidth: //no such thing in S60
+ bufferPtr.Append(_L("MdiSubWndMinWidth: "));
+ break;
+ case QStyle::PM_HeaderGripMargin: // not in S60
+ bufferPtr.Append(_L("HeaderGripMargin: "));
+ break;
+ case QStyle::PM_SplitterWidth: // not in S60
+ bufferPtr.Append(_L("SplitterWidth: "));
+ break;
+ case QStyle::PM_ToolBarExtensionExtent: // not in S60
+ bufferPtr.Append(_L("ToolBarExtExtent: "));
+ break;
+ case QStyle::PM_ToolBarSeparatorExtent: // not in S60
+ bufferPtr.Append(_L("ToolBarSepExtent: "));
+ break;
+ case QStyle::PM_ToolBarHandleExtent: // not in s60
+ bufferPtr.Append(_L("ToolBarHandleExtent: "));
+ break;
+ case QStyle::PM_MenuButtonIndicator: // none???
+ bufferPtr.Append(_L("MenuButtonIndicator: "));
+ break;
+ case QStyle::PM_ButtonShiftHorizontal: //none in 3.x
+ bufferPtr.Append(_L("ButtonShiftHorizontal: "));
+ break;
+ case QStyle::PM_ButtonShiftVertical: // none in 3.x
+ bufferPtr.Append(_L("ButtonShiftVertical: "));
+ break;
+ case QStyle::PM_TabBar_ScrollButtonOverlap: // not used in S60 - tab arrows are on left and right side of tab group - not together
+ bufferPtr.Append(_L("TabScrollBtnOverlap: "));
+ break;
+ case QStyle::PM_SizeGripSize: // use default
+ bufferPtr.Append(_L("SizeGripSize: "));
+ break;
+ case QStyle::PM_DockWidgetHandleExtent:
+ bufferPtr.Append(_L("DockWdgtHandleExt: "));
+ break;
+ case QStyle::PM_CheckListButtonSize:
+ bufferPtr.Append(_L("CheckListButtonSize: "));
+ break;
+ case QStyle::PM_CheckListControllerSize:
+ bufferPtr.Append(_L("CheckListCntlerSize: "));
+ break;
+ case QStyle::PM_DialogButtonsSeparator:
+ bufferPtr.Append(_L("DialogBtnSeparator: "));
+ break;
+ case QStyle::PM_DialogButtonsButtonWidth:
+ bufferPtr.Append(_L("DialogBtnWidth: "));
+ break;
+ case QStyle::PM_DialogButtonsButtonHeight:
+ bufferPtr.Append(_L("DialogBtnHeight: "));
+ break;
+ case QStyle::PM_HeaderMarkSize:
+ bufferPtr.Append(_L("HeaderMarkSize: "));
+ break;
+ case QStyle::PM_SpinBoxSliderHeight:
+ bufferPtr.Append(_L("SpinBoxSliderHeight: "));
+ break;
+ case QStyle::PM_DefaultTopLevelMargin:
+ bufferPtr.Append(_L("DefaultTopLvlMrg: "));
+ break;
+ case QStyle::PM_DefaultChildMargin:
+ bufferPtr.Append(_L("DefaultChildMrg: "));
+ break;
+ case QStyle::PM_DefaultLayoutSpacing:
+ bufferPtr.Append(_L("DefaultlayoutSpc: "));
+ break;
+ case QStyle::PM_TabCloseIndicatorWidth:
+ bufferPtr.Append(_L("TabCloseIndWidth: "));
+ break;
+ case QStyle::PM_TabCloseIndicatorHeight:
+ bufferPtr.Append(_L("TabCloseIndHeight: "));
+ break;
+ case QStyle::PM_ScrollView_ScrollBarSpacing:
+ bufferPtr.Append(_L("ScrollViewBarSpc: "));
+ break;
+ case QStyle::PM_SubMenuOverlap:
+ bufferPtr.Append(_L("SubMenuOverlap: "));
+ break;
+ case QStyle::PM_Custom_FrameCornerHeight:
+ bufferPtr.Append(_L("C_FrCornerHeight: "));
+ break;
+ case QStyle::PM_Custom_FrameCornerWidth:
+ bufferPtr.Append(_L("C_FrCornerWidth: "));
+ break;
+ case QStyle::PM_Custom_ThinLineWidth:
+ bufferPtr.Append(_L("C_ThinLineWidth: "));
+ break;
+ case QStyle::PM_Custom_BoldLineWidth:
+ bufferPtr.Append(_L("C_BoldLineWidth: "));
+ break;
+ default:
+ bufferPtr.Append(_L("Default: "));
+ break;
+ }
+
+ if (iFileOutputOn)
+ {
+ bufferPtr.Append('\t');
+ }
+ bufferPtr.AppendNum(aValue);
+ bufferPtr.Append(_L(" "));
+ ShowL( *buffer, aLast, iFileOutputOn );
+ CleanupStack::PopAndDestroy( buffer );
+ }
+
+void CPixelMetricsMapperAppUi::ClearL()
+ {
+ iView->ClearL();
+ }
+
+void CPixelMetricsMapperAppUi::CreateHeaderFileL() const
+ {
+ // Open/create resulting file.
+ RFile file;
+ HBufC* layoutFile = HBufC::NewLC( KMaxFileName );
+ *layoutFile = KLayoutSourceFileAndPath;
+ TFileName fileName = *layoutFile;
+ CleanupStack::PopAndDestroy(layoutFile);
+ RFs& fs = CEikonEnv::Static()->FsSession();
+ TInt error = file.Open(fs,fileName, EFileWrite|EFileShareAny|EFileStreamText );
+ if (error==KErrNotFound)
+ {
+ file.Create(fs,fileName, EFileWrite|EFileShareAny|EFileStreamText);
+ }
+ CleanupClosePushL( file );
+ file.SetSize( 0 );
+
+ // Make all writes as from textfile.
+ TFileText textFile;
+ textFile.Set( file );
+ textFile.Seek( ESeekStart );
+
+ // Take all layout files from private folder.
+ CDir* dirList;
+ User::LeaveIfError(fs.GetDir(
+ KPixelMetricsDataFiles,
+ KEntryAttMaskSupported,
+ ESortByName,
+ dirList));
+
+ TMySmallBuffer bufferLayoutHdr;
+ TMyBigBuffer bufferPMData;
+ TInt fileCount = dirList->Count();
+ for (TInt i=0;i<fileCount;i++)
+ {
+ // open sourcefile
+ RFile sourceFile;
+ TFileName layoutFile = (*dirList)[i].iName;
+ User::LeaveIfError( sourceFile.Open(
+ fs,layoutFile, EFileRead|EFileShareAny|EFileStreamText ));
+ CleanupClosePushL( sourceFile );
+
+ // Make all reads as from textfile.
+ TFileText textSourceFile;
+ textSourceFile.Set( sourceFile );
+ TFileName layoutName = CreateLayoutNameL( textSourceFile );
+
+ // rewind - just in case.
+ textSourceFile.Seek( ESeekStart );
+ TFileName oneline;
+ bufferLayoutHdr.Append(KOpenBrace);
+ bufferPMData.Append(KOpenBrace);
+ TInt loop = 0;
+ FOREVER
+ {
+ if( textSourceFile.Read(oneline) != KErrNone )
+ {
+ break;
+ }
+ // Add commas for all but first line
+ if (loop != 0)
+ {
+ if ( loop <= KHeaderValues-1)
+ {
+ bufferLayoutHdr.Append(KComma);
+ }
+ else
+ {
+ if (loop != KHeaderValues)
+ {
+ bufferPMData.Append(KComma);
+ }
+ }
+ if (loop==KHeaderValues)
+ {
+ bufferLayoutHdr.Append(_L(",QLatin1String(\""));
+ bufferLayoutHdr.Append(layoutName);
+ bufferLayoutHdr.Append(_L("\")"));
+ }
+ }
+ // Remove pixel metrics name and ":"
+ oneline = oneline.Mid(oneline.Find(KColon)+1);
+ // Remove tab
+ oneline = oneline.Mid(oneline.Find(KTab)+1);
+ // remove crap from the end of line
+ TLex lex(oneline);
+ TInt nextValue = -666;
+ User::LeaveIfError( lex.Val(nextValue) );
+ if ( loop <= KHeaderValues-1)
+ {
+ if (loop == KHeaderValues -1 ) // true / false values
+ {
+ if (nextValue == 1)
+ {
+ bufferLayoutHdr.Append(_L("true"));
+ }
+ else
+ {
+ bufferLayoutHdr.Append(_L("false"));
+ }
+ }
+ else
+ {
+ bufferLayoutHdr.AppendNum(nextValue);
+ }
+ }
+ else
+ {
+ if (nextValue == -909)
+ bufferPMData.Append(_L("ECommonStyleValue"));
+ else
+ bufferPMData.AppendNum(nextValue);
+ }
+ oneline.Zero();
+ loop++;
+ }
+ file.Flush();
+ bufferLayoutHdr.Append(KEndBraceWithCommaAndCRLF);
+ bufferPMData.Append(KEndBraceWithCommaAndCRLF);
+ CleanupStack::PopAndDestroy(); //sourceFile
+ }
+
+ bufferLayoutHdr = bufferLayoutHdr.Left(bufferLayoutHdr.Length()-2);
+ bufferPMData = bufferPMData.Left(bufferPMData.Length()-2);
+ textFile.Write(bufferLayoutHdr);
+ textFile.Write(KCRLF);
+ textFile.Write(bufferPMData);
+ delete dirList;
+
+ CleanupStack::PopAndDestroy(); //file
+ }
+
+TFileName CPixelMetricsMapperAppUi::CreateLayoutNameL(TFileText& aFileHandle) const
+{
+ aFileHandle.Seek(ESeekStart);
+ // Layout data is deployed like this:
+ // first line - height
+ // second line - width
+ // fifth line mirror info
+ TFileName lines;
+ TFileName layoutName;
+
+ TInt height = -666;
+ TInt width = -666;
+ TInt mirroring = -666;
+ // Collect name information.
+ for (TInt i=0; i<6; i++)
+ {
+ User::LeaveIfError(aFileHandle.Read(lines));
+ // Remove pixel metrics name and ":"
+ lines = lines.Mid(lines.Find(KColon)+1);
+ // Remove tab
+ lines = lines.Mid(lines.Find(KTab)+1);
+ TLex myLexer(lines);
+ TInt error = KErrNone;
+ if (i==0) //height is first
+ {
+ error = myLexer.Val(height);
+ }
+ if (i==1) //width is second
+ {
+ error = myLexer.Val(width);
+ }
+ if (i==4) //mirror info is fourth
+ {
+ error = myLexer.Val(mirroring);
+ }
+ User::LeaveIfError(error);
+ }
+
+ // Interpret results and write name to buffer.
+ if ( (width == 240 && height == 320) ||
+ (width == 320 && height == 240))
+ {
+ layoutName.Append(_L("QVGA "));
+ }
+ else if ( (width == 360 && height == 640) ||
+ (width == 640 && height == 360))
+ {
+ layoutName.Append(_L("NHD "));
+ }
+ else if ( (width == 480 && height == 640) ||
+ (width == 640 && height == 480))
+ {
+ layoutName.Append(_L("VGA "));
+ }
+ else if ( (width == 800 && height == 352) ||
+ (width == 352 && height == 800))
+ {
+ layoutName.Append(_L("E90 "));
+ }
+ else if ( (width == 800 && height == 480) ||
+ (width == 480 && height == 800) ||
+ (width == 848 && height == 480) ||
+ (width == 480 && height == 848) ||
+ (width == 854 && height == 480) ||
+ (width == 480 && height == 854))
+ {
+ layoutName.Append(_L("WVGA "));
+ }
+ else if ( (width == 480 && height == 320) ||
+ (width == 320 && height == 480) ||
+ (width == 640 && height == 240) ||
+ (width == 240 && height == 640))
+ {
+ layoutName.Append(_L("HVGA "));
+ }
+ else
+ {
+ layoutName.Append(_L("Unknown "));
+ layoutName.AppendNum(height);
+ layoutName.Append(_L("x"));
+ layoutName.AppendNum(width);
+ }
+ if (width > height)
+ {
+ layoutName.Append(_L("Landscape"));
+ }
+ else
+ {
+ layoutName.Append(_L("Portrait"));
+ }
+ if (mirroring)
+ {
+ layoutName.Append(_L(" Mirrored"));
+ }
+ return layoutName;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CEikAppUi* CPixelMetricsMapperDocument::CreateAppUiL()
+ {
+ return( new ( ELeave ) CPixelMetricsMapperAppUi );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperDocument::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TUid CPixelMetricsMapperApplication::AppDllUid() const
+ {
+ return KUidPMMapperApplication;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CApaDocument* CPixelMetricsMapperApplication::CreateDocumentL()
+ {
+ CPixelMetricsMapperDocument* document =
+ new( ELeave ) CPixelMetricsMapperDocument( *this );
+ CleanupStack::PushL( document );
+ document->ConstructL();
+ CleanupStack::Pop();
+ return( document );
+ }
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// ---------------------------------------------------------
+// NewApplication implements
+//
+// Creates an instance of application.
+//
+// Returns: an instance of CVtUiApp
+// ---------------------------------------------------------
+//
+LOCAL_C CApaApplication* NewApplication()
+ {
+ return new CPixelMetricsMapperApplication;
+ }
+
+// ---------------------------------------------------------
+// E32Main implements
+//
+// It is called when executable is started.
+//
+// Returns: error code.
+// ---------------------------------------------------------
+//
+GLDEF_C TInt E32Main()
+ {
+ return EikStart::RunApplication( NewApplication );
+ }
+
+// End of File
diff --git a/util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.h b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.h
new file mode 100644
index 0000000000..02d297eca2
--- /dev/null
+++ b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperApp.h
@@ -0,0 +1,198 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PMMAPPERAPP_H
+#define PMMAPPERAPP_H
+
+// INCLUDES
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <e32std.h>
+#include <aknViewAppUi.h>
+
+// CONSTANTS
+const TUid KUidPMMapperApplication = { 0x2002121F };
+
+
+// FORWARD DECLARATIONS
+class CPixelMetricsMapperView;
+class MAknsSkinInstance;
+
+// CLASS DECLARATION
+/**
+* CPixelMetricsMapperDocument
+*/
+class CPixelMetricsMapperDocument : public CEikDocument
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Symbian 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Constructor.
+ */
+ CPixelMetricsMapperDocument( CEikApplication& aApp )
+ : CEikDocument( aApp ) {}
+
+ /**
+ * Destructor.
+ */
+ ~CPixelMetricsMapperDocument(){}
+
+ public: // Functions from base classes
+
+ /**
+ * From CEikDocument.
+ */
+ CFileStore* OpenFileL(
+ TBool /*aDoOpen*/,
+ const TDesC& /*aFilename*/,
+ RFs& /*aFs*/ )
+ {
+ return NULL;
+ }
+
+ private: // Functions from base classes
+
+ /**
+ * From CEikDocument.
+ */
+ CEikAppUi* CreateAppUiL();
+ };
+
+/**
+* CPixelMetricsMapperAppUi
+*/
+class CPixelMetricsMapperAppUi : public CAknViewAppUi
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Constructor.
+ */
+ CPixelMetricsMapperAppUi();
+
+ /**
+ * Symbian 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Destructor.
+ */
+ ~CPixelMetricsMapperAppUi();
+
+ public:
+ void DoAutoOperationL();
+
+ TBool ReadyForAutoOp() const;
+
+
+ private: // Functions from base classes
+
+ /**
+ * From CEikAppUi.
+ */
+ void HandleCommandL(TInt aCommand);
+
+ /**
+ * From CEikAppUi.
+ */
+ virtual TKeyResponse HandleKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode aType );
+
+ private:
+
+ /**
+ * Shows text given.
+ */
+ void ShowL( const TDesC& aText, TBool& aLast, const TBool& aFileOutput = EFalse );
+ void ShowSingleValueL(TInt& aPixelMetric, TInt& aValue, TBool& aLast);
+ void ClearL();
+ void CreateHeaderFileL() const;
+
+ TFileName CreateLayoutNameL(TFileText& aFileHandle) const;
+
+ private: // Data
+
+ // Test view.
+ CPixelMetricsMapperView* iView;
+
+ CEikDialog* iDialog;
+
+ TBool iFileOutputOn;
+
+ CFbsBitmap* icon;
+ CFbsBitmap* iconMask;
+
+ TBool iAutoMode;
+ TBool iMode;
+
+ };
+
+
+/**
+* CPixelMetricsMapperApplication
+*/
+class CPixelMetricsMapperApplication : public CEikApplication
+ {
+ private: // Functions from base classes
+
+ /**
+ * From CApaApplication.
+ */
+ CApaDocument* CreateDocumentL();
+
+ /**
+ * From CApaApplication.
+ */
+ TUid AppDllUid() const;
+ };
+
+
+#endif // PMMAPPERAPP_H
+
+
+// End of File
diff --git a/util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.cpp b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.cpp
new file mode 100644
index 0000000000..d7bd121e82
--- /dev/null
+++ b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.cpp
@@ -0,0 +1,376 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+// INCLUDE FILES
+
+#include <eiklabel.h>
+#include <avkon.rsg>
+#include <aknviewappui.h>
+#include <aknconsts.h>
+
+#include "PMMapper.hrh"
+#include <PM_Mapper.rsg>
+#include "PMMapperView.h"
+#include "PMMapperApp.h"
+
+#include <aknlists.h>
+#include <avkon.hrh>
+#include <AknUtils.h>
+
+// -----------------------------------------------------------------------------
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperViewContainer::CPixelMetricsMapperViewContainer(): iCount( 1 )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::ConstructL( const TRect& aRect )
+ {
+ CreateWindowL();
+ SetCanDrawOutsideRect();
+
+ iTexts = new( ELeave ) CDesCArrayFlat( 10 );
+ iTexts->AppendL( _L( "\tStarted." ) );
+
+ iListbox = new( ELeave ) CAknSingleStyleListBox;
+ iListbox->SetContainerWindowL( *this );
+ iListbox->ConstructL( this, EAknListBoxViewerFlags );
+
+ iListbox->Model()->SetItemTextArray( iTexts );
+ iListbox->SetRect( TRect( aRect.Size() ) );
+
+ iListbox->CreateScrollBarFrameL( ETrue );
+ iListbox->ScrollBarFrame()->SetScrollBarVisibilityL(
+ CEikScrollBarFrame::EOn,
+ CEikScrollBarFrame::EOn );
+
+ SetRect( aRect );
+ iListbox->ActivateL();
+ ActivateL();
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput )
+ {
+ MDesCArray* itemList = iListbox->Model()->ItemTextArray();
+ CDesCArray* itemArray = ( CDesCArray* ) itemList;
+
+ itemArray->AppendL( aString );
+
+ iListbox->HandleItemAdditionL();
+ iListbox->SetCurrentItemIndex( iCount );
+ iCount++;
+ if ( aLast )
+ {
+ if (aFileOutput)
+ {
+ RFile file;
+ RFs& fs = CEikonEnv::Static()->FsSession();
+ TFileName fileName =_L("Layout_");
+
+ TRect screenRect;
+ AknLayoutUtils::LayoutMetricsRect(
+ AknLayoutUtils::EApplicationWindow,
+ screenRect );
+
+ // Add screen dimensions
+ TInt height = screenRect.Height();
+ TInt width = screenRect.Width();
+ fileName.AppendNum(height);
+ fileName.Append('_');
+ fileName.AppendNum(width);
+
+ if (AknLayoutUtils::LayoutMirrored())
+ fileName.Append(_L("_mirrored"));
+ fileName.Append(_L(".txt"));
+
+ TInt err=file.Open(fs,fileName,EFileStreamText|EFileWrite|EFileShareAny);
+ if (err==KErrNotFound) // file does not exist - create it
+ err=file.Create(fs,fileName,EFileStreamText|EFileWrite|EFileShareAny);
+ else
+ file.SetSize(0); //sweep the file
+ TFileText textFile;
+ textFile.Set(file);
+ err = textFile.Seek(ESeekStart);
+ if (err) User::InfoPrint(_L("File corrupted"));
+
+ // Finally loop through all the entries:
+ TInt idx = 0;
+ for(;idx!=itemList->MdcaCount();idx++)
+ {
+ err = textFile.Write(itemList->MdcaPoint(idx));
+ if (err) User::InfoPrint(_L("File corrupted"));
+ }
+ file.Close();
+ }
+ DrawNow();
+ }
+ }
+
+void CPixelMetricsMapperViewContainer::ClearL()
+ {
+ MDesCArray* itemList = iListbox->Model()->ItemTextArray();
+ CDesCArray* itemArray = ( CDesCArray* ) itemList;
+
+ itemArray->Reset();
+
+ iListbox->HandleItemAdditionL();
+ iCount = 0;
+ DrawNow();
+ }
+
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperViewContainer::~CPixelMetricsMapperViewContainer()
+ {
+ delete iListbox;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::SizeChanged()
+ {
+ CCoeControl::SizeChanged();
+ if ( iListbox )
+ {
+ iListbox->SetRect( Rect() );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CPixelMetricsMapperViewContainer::CountComponentControls() const
+ {
+ return 1;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CTestAppViewContainer::ComponentControl
+//
+//
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CPixelMetricsMapperViewContainer::ComponentControl(
+ TInt /*aIndex*/ ) const
+ {
+ return iListbox;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::Draw( const TRect& /*aRect*/ ) const
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperViewContainer::HandleControlEventL(
+ CCoeControl* /*aControl*/,
+ TCoeEvent /*aEventType*/ )
+ {
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CPixelMetricsMapperViewContainer::OfferKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode aType )
+ {
+ if (aKeyEvent.iCode == EKeyUpArrow ||
+ aKeyEvent.iCode == EKeyDownArrow )
+ {
+ return iListbox->OfferKeyEventL( aKeyEvent, aType );
+ }
+ return EKeyWasNotConsumed;
+ }
+
+void CPixelMetricsMapperViewContainer::HandleResourceChange(TInt aType)
+ {
+ CCoeControl::HandleResourceChange( aType );
+ if ( aType == KEikDynamicLayoutVariantSwitch )
+ {
+ TRect mainPaneRect;
+ AknLayoutUtils::LayoutMetricsRect(
+ AknLayoutUtils::EMainPane,
+ mainPaneRect );
+ SetRect( mainPaneRect );
+
+ CPixelMetricsMapperAppUi* myApp = static_cast<CPixelMetricsMapperAppUi*> (ControlEnv()->AppUi());
+ if (myApp->ReadyForAutoOp())
+ myApp->DoAutoOperationL();
+ }
+ if (iListbox) iListbox->HandleResourceChange(aType);
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput )
+ {
+ iView->ShowL( aString, aLast, aFileOutput );
+ }
+
+void CPixelMetricsMapperView::ClearL()
+ {
+ iView->ClearL();
+ }
+
+
+// -----------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::ConstructL()
+ {
+ BaseConstructL( R_PMMAPPER_VIEW );
+ }
+
+
+// -----------------------------------------------------------------------------
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CPixelMetricsMapperView::~CPixelMetricsMapperView()
+ {
+ if ( iView )
+ {
+ AppUi()->RemoveFromViewStack( *this, iView );
+ }
+ delete iView;
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TUid CPixelMetricsMapperView::Id() const
+ {
+ return TUid::Uid( EPMMapperViewId );
+ }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::HandleCommandL( TInt aCommand )
+ {
+ AppUi()->HandleCommandL( aCommand );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::HandleStatusPaneSizeChange()
+ {
+ if ( iView )
+ {
+ TRect cr = ClientRect();
+ iView->SetRect( cr );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::DoActivateL(
+ const TVwsViewId& /*aPrevViewId*/,
+ TUid /*aCustomMessageId*/,
+ const TDesC8& /*aCustomMessage*/ )
+ {
+ iView = new( ELeave ) CPixelMetricsMapperViewContainer;
+
+ TRect cr = ClientRect();
+ iView->ConstructL( cr );
+ AppUi()->AddToViewStackL( *this, iView );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CPixelMetricsMapperView::DoDeactivate()
+ {
+ if (iView)
+ {
+ AppUi()->RemoveFromViewStack( *this, iView );
+ }
+ delete iView;
+ iView = NULL;
+ }
+
+// End of File
diff --git a/util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.h b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.h
new file mode 100644
index 0000000000..e9eb42eb9d
--- /dev/null
+++ b/util/s60pixelmetrics/pixelmetricsmapper/PMMapperView.h
@@ -0,0 +1,228 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PMMAPPERVIEW_H
+#define PMMAPPERVIEW_H
+
+
+// INCLUDES
+#include <aknview.h>
+#include <EIKLBO.H>
+
+// CONSTANTS
+// FORWARD DECLARATIONS
+class CAknSingleStyleListBox;
+class CAknSettingStyleListBox;
+
+// CLASS DECLARATION
+
+/**
+* CPixelMetricsMapperViewContainer
+*
+*/
+class CPixelMetricsMapperViewContainer
+: public CCoeControl,
+ public MCoeControlObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * C++ constructor.
+ */
+ CPixelMetricsMapperViewContainer();
+
+ /**
+ * Symbian 2nd phase constructor.
+ *
+ * @param aRect Rectangle.
+ */
+ void ConstructL( const TRect& aRect );
+
+ /**
+ * Destructor.
+ */
+ ~CPixelMetricsMapperViewContainer();
+
+
+ public: // New functions
+
+ /**
+ * Show the given string.
+ *
+ * @param aString The string to be shown.
+ */
+ void ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput = EFalse );
+
+ void ClearL();
+
+
+ public: // Functions from base classes
+
+ /**
+ * From CCoeControl.
+ */
+ TKeyResponse OfferKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode aType );
+
+
+ void HandleResourceChange(TInt aType);
+
+
+ private: // Functions from base classes
+
+ /**
+ * From CCoeControl.
+ */
+ void SizeChanged();
+
+ /**
+ * From CCoeControl.
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl.
+ */
+ CCoeControl* ComponentControl( TInt aIndex ) const;
+
+ /**
+ * From CCoeControl.
+ */
+ void Draw( const TRect& aRect ) const;
+
+
+ private: // Functions from base classes
+
+ /**
+ * From MCoeControlObserver.
+ */
+ void HandleControlEventL(
+ CCoeControl* aControl,
+ TCoeEvent aEventType );
+
+
+ private: // Data
+
+ // Texts.
+ CDesCArray* iTexts;
+
+ // Count.
+ TInt iCount;
+
+ // Listbox.
+ CAknSingleStyleListBox* iListbox;
+
+ };
+
+
+
+/**
+* CPixelMetricsMapperView
+*
+*
+* @since 1.0
+*/
+class CPixelMetricsMapperView : public CAknView
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Symbian 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Destructor.
+ */
+ ~CPixelMetricsMapperView();
+
+
+ public: // Functions from base classes
+
+ /**
+ * From CAknView.
+ */
+ TUid Id() const;
+
+ /**
+ * From CAknView.
+ */
+ void HandleCommandL( TInt aCommand );
+
+ /**
+ * From CAknView.
+ */
+ void HandleStatusPaneSizeChange();
+
+ /**
+ * From CAknView.
+ */
+ void ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput =EFalse );
+ void ClearL();
+
+
+ private: // from CAknView
+
+ /**
+ * From CAknView.
+ */
+ void DoActivateL(
+ const TVwsViewId& aPrevViewId,
+ TUid aCustomMessageId,
+ const TDesC8& aCustomMessage );
+
+ /**
+ * From CAknView.
+ */
+ void DoDeactivate();
+
+
+ private: // Data
+
+ // The view container.
+ CPixelMetricsMapperViewContainer* iView;
+
+ };
+
+#endif // PMMAPPERVIEW_H
+
+// End of File
diff --git a/util/s60pixelmetrics/src/pixel_metrics.cpp b/util/s60pixelmetrics/src/pixel_metrics.cpp
new file mode 100644
index 0000000000..4d04e3b175
--- /dev/null
+++ b/util/s60pixelmetrics/src/pixel_metrics.cpp
@@ -0,0 +1,1223 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utility applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "pixel_metrics.h"
+
+#include <AknLayout2ScalableDef.h>
+#include <AknLayoutScalable_Avkon.cdl.h>
+#include <AknLayoutScalable_Apps.cdl.h>
+#include <AknUtils.h>
+
+// Version number for dynamic calculations. These are to be exported to static data,
+// so that we can keep dynamic and static values inline.
+// Please adjust version data if correcting dynamic PM calculations.
+const TInt KPMMajorVersion = 1;
+const TInt KPMMinorVersion = 12;
+
+TPixelMetricsVersion PixelMetrics::Version()
+ {
+ TPixelMetricsVersion version;
+ version.majorVersion = KPMMajorVersion;
+ version.minorVersion = KPMMinorVersion;
+ return version;
+ }
+
+TInt PixelMetrics::PixelMetricValue(QStyle::PixelMetric metric)
+ {
+ TInt value = -909;
+ // Main pane
+ TRect mainPaneRect;
+ AknLayoutUtils::LayoutMetricsRect(
+ AknLayoutUtils::EMainPane,
+ mainPaneRect );
+ // Screen
+ TRect screenRect;
+ AknLayoutUtils::LayoutMetricsRect(
+ AknLayoutUtils::EApplicationWindow,
+ screenRect );
+ // Navi pane
+ TRect naviPaneRect;
+ AknLayoutUtils::LayoutMetricsRect(
+ AknLayoutUtils::ENaviPane,
+ naviPaneRect );
+
+ TAknLayoutRect appWindow;
+ appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
+
+ TInt variety = 0;
+ TBool landscape = EFalse;
+ if ( screenRect.iBr.iX > screenRect.iBr.iY )
+ {
+ // in landscape another variety is used
+ landscape = ETrue;
+ }
+ switch (metric)
+ {
+ case QStyle::PM_DockWidgetHandleExtent:
+ // what's this??? Not in S60
+ break;
+ case QStyle::PM_CheckListControllerSize:
+ case QStyle::PM_CheckListButtonSize:
+ {
+ // hierarchical menu - checkbox / radiobutton
+ // Area (width/height) of the checkbox/radio button in a Q3CheckListItem.
+ TAknLayoutRect listScrollPane;
+ listScrollPane.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_gen_pane(0));
+ TAknLayoutRect listGenPane;
+ listGenPane.LayoutRect( listScrollPane.Rect(), AknLayoutScalable_Avkon::list_gen_pane(0));
+ TAknLayoutRect listHierarchyPane;
+ listHierarchyPane.LayoutRect( listGenPane.Rect(), AknLayoutScalable_Avkon::list_single_graphic_hl_pane(0));
+
+ TAknLayoutRect listHierarchyControllerPane;
+ listHierarchyPane.LayoutRect( listHierarchyPane.Rect(), AknLayoutScalable_Avkon::list_single_graphic_hl_pane_g3(0));
+ TAknLayoutRect listHierarchyPropertyPane;
+ listHierarchyPropertyPane.LayoutRect( listHierarchyPane.Rect(), AknLayoutScalable_Avkon::list_single_graphic_hl_pane_g2(0));
+
+ if (metric==QStyle::PM_CheckListControllerSize)value = Max( listHierarchyPane.Rect().Width(), listHierarchyPane.Rect().Width());
+ else value = Max( listHierarchyPropertyPane.Rect().Width(), listHierarchyPropertyPane.Rect().Width());
+ }
+ break;
+ case QStyle::PM_DialogButtonsSeparator: //Distance between buttons in a dialog buttons widget.
+ case QStyle::PM_DialogButtonsButtonWidth: // Minimum width of a button in a dialog buttons widget.
+ case QStyle::PM_DialogButtonsButtonHeight:// Minimum height of a button in a dialog buttons widget.
+ {
+ TAknLayoutRect appWindow;
+ appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
+ variety = 0;
+ if ( landscape )
+ {
+ variety = 2;
+ }
+ TAknLayoutRect areaBottomRect;
+ areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
+
+ TAknLayoutRect controlPaneRect;
+ controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
+ TAknLayoutText controlPaneLSKText;
+ TAknLayoutText controlPaneRSKText;
+ TAknLayoutText controlPaneMSKText;
+ variety = 0;
+ if (AknLayoutUtils::MSKEnabled())
+ {
+ variety = 3;
+ controlPaneMSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t3(variety)); //MSK text area
+ }
+ controlPaneLSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t1(variety)); //LSK text area
+ controlPaneRSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t2(variety)); //RSK text area
+
+ /*
+ *
+ ==================================================================================
+ | A | LSK_rect | B | MSK_rect | C | RSK_rect | D |
+ ==================================================================================
+ where A is left padding (between control pane and LSK rect)
+ B is mid-left padding (between LSK and MSK rects)
+ C is mid-right padding (between MSK and RSK rects)
+ D is right padding (between RSK and control pane)
+
+ ==> Since all these can be separate, lets take Max of {A..D} for PM value
+ */
+
+ TInt itemSpacingA = 0;
+ TInt itemSpacingB = 0;
+ TInt itemSpacingC = 0;
+ TInt itemSpacingMax = 0;
+ if ( !AknLayoutUtils::MSKEnabled() )
+ {
+ itemSpacingA = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
+ itemSpacingB = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
+ if (!landscape)
+ {
+ // use mid-gap only in portrait
+ itemSpacingC = controlPaneRSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
+ }
+ itemSpacingMax = Max(itemSpacingA, Max( itemSpacingB, itemSpacingC));
+ // no itemspacing4 if no MSK
+ }
+ else
+ {
+ TInt itemSpacingD = 0;
+ itemSpacingA = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
+ itemSpacingB = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
+ if ( !(AknLayoutUtils::PenEnabled() || landscape) ) // no MSK in touch, nor in landscape
+ {
+ itemSpacingC = controlPaneRSKText.TextRect().iTl.iX - controlPaneMSKText.TextRect().iBr.iX;
+ itemSpacingD = controlPaneMSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
+ }
+ itemSpacingMax = Max(itemSpacingA, Max( itemSpacingB, Max( itemSpacingC, itemSpacingD )));
+ }
+ if (metric==QStyle::PM_DialogButtonsSeparator) value = itemSpacingMax;
+ else if (metric==QStyle::PM_DialogButtonsButtonWidth)
+ {
+ value = Max( controlPaneLSKText.TextRect().Width(), controlPaneRSKText.TextRect().Width());
+ if (AknLayoutUtils::MSKEnabled())
+ {
+ value = Max(value, controlPaneMSKText.TextRect().Width());
+ }
+ }
+ else if (metric==QStyle::PM_DialogButtonsButtonHeight)
+ {
+ value = Max( controlPaneLSKText.TextRect().Height(), controlPaneRSKText.TextRect().Height());
+ if (AknLayoutUtils::MSKEnabled())
+ {
+ value = Max(value, controlPaneMSKText.TextRect().Height());
+ }
+ }
+ }
+ break;
+ case QStyle::PM_DockWidgetTitleMargin: // not in S60, lets use the same margin as in button
+ case QStyle::PM_DockWidgetTitleBarButtonMargin: // not in S60, lets use the same margin as in button
+ case QStyle::PM_ButtonMargin:
+ {
+ TRect myRect(TSize( 80, 20)); // this arbitrary size - user can set it - button border does not seem to have any scalability in it
+ TAknLayoutRect buttonRect;
+ TAknLayoutRect buttonBordersRect;
+ TAknLayoutText buttonText;
+
+ buttonRect.LayoutRect( myRect, AknLayoutScalable_Avkon::eswt_ctrl_button_pane());
+ buttonBordersRect.LayoutRect( buttonRect.Rect(), AknLayoutScalable_Avkon::common_borders_pane_copy2(0)); //with text
+ buttonText.LayoutText( buttonRect.Rect(), AknLayoutScalable_Avkon::control_button_pane_t1() );
+
+ // Its better to use left-right margins, since font deployment can create funny top / bottom margins
+ TInt leftMargin = buttonText.TextRect().iTl.iX - buttonBordersRect.Rect().iTl.iX;
+ TInt rightMargin = buttonBordersRect.Rect().iBr.iX - buttonText.TextRect().iBr.iX;
+ value = (TInt) ((leftMargin+rightMargin)/2);
+ }
+ break;
+ case QStyle::PM_ButtonDefaultIndicator:
+ {
+ // no default button indicators in S60
+ value = 0;
+ }
+ break;
+ case QStyle::PM_MdiSubWindowFrameWidth:
+ case QStyle::PM_ComboBoxFrameWidth:
+ case QStyle::PM_SpinBoxFrameWidth:
+ value = 0;
+ break;
+ case QStyle::PM_DefaultFrameWidth:
+ {
+ TAknLayoutRect highLightPaneRect;
+ TAknLayoutRect centerPaneRect;
+ TRect rectParent( mainPaneRect );
+ highLightPaneRect.LayoutRect( rectParent, AknLayoutScalable_Avkon::toolbar_button_pane(0).LayoutLine());
+ centerPaneRect.LayoutRect(rectParent, AknLayoutScalable_Avkon::toolbar_button_pane_g1().LayoutLine());
+
+ value = highLightPaneRect.Rect().iBr.iX - centerPaneRect.Rect().iBr.iX;
+ }
+ break;
+ case QStyle::PM_RadioButtonLabelSpacing:
+ {
+ /*
+ *
+ ===================================================================================
+ | A | iconLayoutRect |B| itemText | C |
+ ===================================================================================
+ mirrored:
+ ===================================================================================
+ | C | itemText |B| iconLayoutRect | A |
+ ===================================================================================
+ where A is left padding
+ B is gap between icon and text
+ C is right padding
+ */
+
+ TRect rectParent( mainPaneRect );
+ TAknLayoutRect layoutRect;
+ layoutRect.LayoutRect( rectParent,AknLayoutScalable_Avkon::list_choice_list_pane(1).LayoutLine() ); // w/ scrollbar
+ TAknLayoutText itemText;
+ itemText.LayoutText( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_t1(1) );
+ TAknLayoutRect iconLayoutRect;
+ iconLayoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_g1().LayoutLine() );
+
+ if ( !AknLayoutUtils::LayoutMirrored() )
+ {
+ value = itemText.TextRect().iTl.iX - iconLayoutRect.Rect().iBr.iX;
+ }
+ else
+ {
+ value = iconLayoutRect.Rect().iTl.iX - itemText.TextRect().iBr.iX;
+ }
+ }
+
+ break;
+ case QStyle::PM_CheckBoxLabelSpacing:
+ {
+ /*
+ *
+ ===================================================================================
+ | A | iconLayoutRect |B| itemText | C |
+ ===================================================================================
+ mirrored:
+ ===================================================================================
+ | C | itemText |B| iconLayoutRect | A |
+ ===================================================================================
+ where A is left padding
+ B is gap between icon and text
+ C is right padding
+ */
+ TRect rectParent( mainPaneRect );
+ TAknLayoutRect layoutRect;
+ layoutRect.LayoutRect( rectParent,AknLayoutScalable_Avkon::list_set_graphic_pane(0).LayoutLine() );
+ TAknLayoutRect layoutRect2;
+ TAknLayoutRect layoutRect3;
+ layoutRect2.LayoutRect( layoutRect.Rect(),AknLayoutScalable_Avkon::set_content_pane().LayoutLine() );
+
+ TAknLayoutText itemText;
+ itemText.LayoutText( layoutRect2.Rect(), AknLayoutScalable_Avkon::list_set_graphic_pane_t1(0) );
+ TAknLayoutRect iconLayoutRect;
+ iconLayoutRect.LayoutRect( layoutRect2.Rect(), AknLayoutScalable_Avkon::list_set_graphic_pane_g1(0).LayoutLine() );
+ if ( !AknLayoutUtils::LayoutMirrored() )
+ {
+ value = itemText.TextRect().iTl.iX - iconLayoutRect.Rect().iBr.iX;
+ }
+ else
+ {
+ value = iconLayoutRect.Rect().iTl.iX - itemText.TextRect().iBr.iX;
+ }
+ }
+ break;
+ case QStyle::PM_ToolTipLabelFrameWidth:
+ {
+ /*
+ *
+ |===================================================================================|
+ | info popup note B |
+ | ============================================================================== |
+ | A | hintText | D|
+ | ============================================================================== |
+ | C |
+ |===================================================================================|
+ where A is left padding
+ B is top padding
+ C is bottom padding
+ D is right padding
+ we'll provide the average of top and bottom padding as PM_ToolTipLabelFrameWidth
+ */
+
+ // Set pop-up to contain only one line of text
+ TInt index = 0;
+ if ( landscape )
+ {
+ // in landscape another variety is used
+ index += 5;
+ }
+ // Get parameter and table limits for popup preview text window
+ TAknLayoutScalableParameterLimits limits =
+ AknLayoutScalable_Avkon::popup_preview_text_window_ParamLimits();
+
+ TAknLayoutScalableTableLimits tableLimits =
+ AknLayoutScalable_Avkon::popup_preview_text_window_t_Limits();
+
+ TInt windowVariety = Min( Max( index, limits.FirstVariety() ), limits.LastVariety() );
+
+ TAknLayoutScalableParameterLimits tParamLimits =
+ AknLayoutScalable_Avkon:: popup_preview_text_window_t_ParamLimits(
+ tableLimits.FirstIndex() );
+
+ TInt lineVariety = Min( Max( index, tParamLimits.FirstVariety() ), tParamLimits.LastVariety() );
+
+ TAknWindowLineLayout lineLayout = AknLayoutScalable_Avkon::popup_preview_text_window(windowVariety).LayoutLine();
+
+ // rect for the whole info popup
+ TAknLayoutRect layoutRect;
+ layoutRect.LayoutRect(screenRect, lineLayout);
+ TRect rectPopupWindow = layoutRect.Rect();
+
+ TAknTextComponentLayout popupTextLayout =
+ AknLayoutScalable_Avkon::popup_preview_text_window_t(
+ tableLimits.FirstIndex(), lineVariety );
+
+ // rect for the whole the text inside the popup
+ TAknLayoutText layoutText;
+ layoutText.LayoutText( rectPopupWindow, popupTextLayout );
+
+ // Each margin has different value in S60 - let's take average of top & bottom
+ TInt topMargin = layoutText.TextRect().iTl.iY - layoutRect.Rect().iTl.iY;
+ TInt bottomMargin = layoutRect.Rect().iBr.iY - layoutText.TextRect().iBr.iY;
+ TInt averageMargin = (TInt)(topMargin+bottomMargin)/2;
+ value = averageMargin;
+ }
+ break;
+ case QStyle::PM_ListViewIconSize:
+ {
+ // todo: there are lots and lots of views with different sized icons - which one to use?
+ // todo: this is probably not a good default icon size, as this fetches A column icon size
+ // todo: preferably use settings item with graphic instead
+ TAknLayoutRect iconRect;
+ iconRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::list_double_graphic_pane_g1_cp2(0).LayoutLine());
+ //icon areas are usually squares - lets take bigger of two dimensions
+ value = Max( iconRect.Rect().Width(), iconRect.Rect().Height() );
+ }
+ break;
+
+ case QStyle::PM_LargeIconSize: // lets use AS icon as a base for large icon
+ case QStyle::PM_IconViewIconSize:
+ {
+ // Lets assume that we'd take these from grid (3x4) layout
+ TAknLayoutRect appPaneRect;
+ TAknLayoutRect gridAppRect;
+ TAknLayoutRect cellAppRect;
+ TInt varietyGrid = 2; //Let's use the 3x4 grid as a base.
+ TInt varietyCell = 1; //Let's use the 3x4 grid as a base.
+ if ( landscape )
+ {
+ varietyGrid = 3;
+ varietyCell = 2;
+ }
+ appPaneRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_app_pane(1).LayoutLine()); //3x4 grid
+ gridAppRect.LayoutRect( appPaneRect.Rect(), AknLayoutScalable_Avkon::grid_app_pane(varietyGrid).LayoutLine());
+ cellAppRect.LayoutRect( gridAppRect.Rect(), AknLayoutScalable_Avkon::cell_app_pane(varietyCell, 0, 0).LayoutLine());
+ TAknLayoutRect cellGraphRect;
+ TAknWindowComponentLayout appIcon = AknLayoutScalable_Avkon::cell_app_pane_g1(0); // no mark, no highlight
+ cellGraphRect.LayoutRect( gridAppRect.Rect(), appIcon);
+ //icon areas are usually squares - if not, lets take larger
+ value = Max( cellGraphRect.Rect().Width(), cellGraphRect.Rect().Height());
+ }
+ break;
+ case QStyle::PM_TabBarIconSize:
+ {
+ TAknLayoutRect naviNaviRect;
+ naviNaviRect.LayoutRect( naviPaneRect, AknLayoutScalable_Avkon::navi_navi_tabs_pane().LayoutLine()); // two tabs
+ TAknLayoutRect tabRect;
+ tabRect.LayoutRect( naviNaviRect.Rect(), AknLayoutScalable_Avkon::navi_tabs_3_pane().LayoutLine()); //active tab on left
+ TAknLayoutRect activeTabRect;
+ activeTabRect.LayoutRect( tabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane(0).LayoutLine()); //active tab
+ TAknLayoutRect activeTabGraphicRect;
+
+ activeTabGraphicRect.LayoutRect( activeTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane_g1().LayoutLine()); //active tab graphic
+ value = Min(activeTabGraphicRect.Rect().Width(), activeTabGraphicRect.Rect().Height());
+ }
+ break;
+ case QStyle::PM_MessageBoxIconSize:
+ {
+ TAknLayoutRect noteRect;
+ noteRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_note_image_window(0).LayoutLine()); //note with image
+ TAknLayoutRect noteImageRect;
+ noteImageRect.LayoutRect( noteRect.Rect(), AknLayoutScalable_Avkon::popup_note_image_window_g2(2).LayoutLine()); //note with image
+ value = noteImageRect.Rect().Width();
+ }
+ break;
+ case QStyle::PM_TextCursorWidth:
+ {
+ TAknLayoutRect miscGraphicsRect;
+ miscGraphicsRect.LayoutRect( screenRect, AknLayoutScalable_Avkon::misc_graphics());
+ miscGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::misc_graphics());
+ TAknLayoutRect textsGraphicsRect;
+ textsGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::texts_graphics());
+ TAknLayoutRect cursorGraphicsRect;
+ cursorGraphicsRect.LayoutRect( textsGraphicsRect.Rect(), AknLayoutScalable_Avkon::cursor_graphics_pane());
+ TAknLayoutRect cursorPrimaryRect;
+ cursorPrimaryRect.LayoutRect( cursorGraphicsRect.Rect(), AknLayoutScalable_Avkon::cursor_primary_pane());
+ TAknLayoutRect cursorRect;
+ cursorRect.LayoutRect( cursorPrimaryRect.Rect(), AknLayoutScalable_Avkon::cursor_digital_pane_g1());
+ value = cursorRect.Rect().Width();
+ }
+ break;
+ case QStyle::PM_SliderLength:
+ {
+ TAknLayoutRect settingRect;
+ settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
+ TAknLayoutRect settingContentRect;
+ settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
+ TAknLayoutRect sliderRect;
+ sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
+ TAknLayoutRect sliderSettingRect;
+ sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
+ TAknLayoutRect sliderGraph2Rect;
+ sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g2() );
+ value = sliderGraph2Rect.Rect().Width();
+ }
+ break;
+ case QStyle::PM_SliderThickness:
+ {
+ TAknLayoutRect settingRect;
+ settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
+ TAknLayoutRect settingContentRect;
+ settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
+ TAknLayoutRect sliderRect;
+ sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
+ TAknLayoutRect sliderSettingRect;
+ sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
+ TAknLayoutRect sliderGraph2Rect;
+ sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g2() );
+ value = (TInt)(sliderGraph2Rect.Rect().Height()*1.5); // add assumed tickmark height
+ }
+ break;
+ case QStyle::PM_SliderTickmarkOffset:
+ {
+ TAknLayoutRect settingRect;
+ settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
+ TAknLayoutRect settingContentRect;
+ settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
+ TAknLayoutRect sliderRect;
+ sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
+ TAknLayoutRect sliderSettingRect;
+ sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
+ TAknLayoutRect sliderGraph2Rect;
+ sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g2() );
+ value = (TInt)(sliderGraph2Rect.Rect().Height()*0.5); // no tickmarks in S60, lets assume they are half the size of slider indicator
+ }
+ break;
+ case QStyle::PM_SliderControlThickness:
+ {
+ TAknLayoutRect settingRect;
+ settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
+ TAknLayoutRect settingContentRect;
+ settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
+ TAknLayoutRect sliderRect;
+ sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
+ TAknLayoutRect sliderSettingRect;
+ sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
+ TAknLayoutRect sliderGraph2Rect;
+ sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g2() );
+ value = sliderGraph2Rect.Rect().Height();
+ }
+ break;
+ case QStyle::PM_SliderSpaceAvailable:
+ {
+ TAknLayoutRect settingRect;
+ settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
+ TAknLayoutRect settingContentRect;
+ settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
+ TAknLayoutRect sliderRect;
+ sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
+ TAknLayoutRect sliderSettingRect;
+ sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
+ value = sliderSettingRect.Rect().Width();
+ }
+ break;
+ case QStyle::PM_MenuBarItemSpacing:
+ {
+ TAknLayoutRect appWindow;
+ appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
+
+ variety = 0;
+ if ( landscape )
+ {
+ variety = 2;
+ }
+ TAknLayoutRect areaBottomRect;
+ areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
+
+ TAknLayoutRect controlPaneRect;
+ controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
+ TAknLayoutText controlPaneLSKText;
+ TAknLayoutText controlPaneRSKText;
+ TAknLayoutText controlPaneMSKText;
+ variety = 0;
+ if (AknLayoutUtils::MSKEnabled())
+ {
+ variety = 3;
+ controlPaneMSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t3(variety)); //MSK text area
+ }
+ controlPaneLSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t1(variety)); //LSK text area
+ controlPaneRSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t2(variety)); //RSK text area
+
+ /*
+ *
+ ==================================================================================
+ | A | LSK_rect | B | MSK_rect | C | RSK_rect | D |
+ ==================================================================================
+ where A is left padding (between control pane and LSK rect)
+ B is mid-left padding (between LSK and MSK rects)
+ C is mid-right padding (between MSK and RSK rects)
+ D is right padding (between RSK and control pane)
+
+ ==> Since all these can be separate, lets take Max of {A..D} for PM value
+ */
+
+ TInt itemSpacing1 = 0;
+ TInt itemSpacing2 = 0;
+ TInt itemSpacing3 = 0;
+ TInt itemSpacing4 = 0;
+ TInt itemSpacingMax = 0;
+ if ( !AknLayoutUtils::MSKEnabled() )
+ {
+ itemSpacing1 = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
+ itemSpacing2 = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
+ if ( !landscape )
+ {
+ // use mid gap only in portrait
+ itemSpacing3 = controlPaneRSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
+ }
+ itemSpacingMax = Max(itemSpacing1, Max( itemSpacing2, itemSpacing3));
+ // no itemspacing4 if no MSK
+ }
+ else
+ {
+ itemSpacing1 = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
+ itemSpacing2 = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
+ if ( !(AknLayoutUtils::PenEnabled() || landscape) ) // no MSK in touch, nor in landscape
+ {
+ itemSpacing3 = controlPaneRSKText.TextRect().iTl.iX - controlPaneMSKText.TextRect().iBr.iX;
+ itemSpacing4 = controlPaneMSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
+ }
+ itemSpacingMax = Max(itemSpacing1, Max( itemSpacing2, Max( itemSpacing3, itemSpacing4 )));
+ }
+ value = itemSpacingMax;
+ }
+ break;
+ case QStyle::PM_MenuBarHMargin:
+ {
+ TAknLayoutRect appWindow;
+ appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
+
+ variety = 0;
+ if ( landscape )
+ {
+ variety = 6;
+ }
+ TAknLayoutRect areaBottomRect;
+ areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
+
+ // variety 7 if thin status pane, 1 if no status pane, 3 if small status pane and with main pane, 4 otherwise (idle has bunch of own varieties)
+ TAknLayoutRect controlPaneRect;
+ controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
+ value = areaBottomRect.Rect().Height() - controlPaneRect.Rect().Height();
+ }
+ break;
+ case QStyle::PM_MenuBarVMargin:
+ {
+ TAknLayoutRect appWindow;
+ appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
+
+ variety = 0;
+ if ( landscape )
+ {
+ variety = 6;
+ }
+ TAknLayoutText controlPaneLSKText;
+ TAknLayoutRect areaBottomRect;
+ areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
+ // variety 7 if thin status pane, 1 if no status pane, 3 if small status pane and with main pane, 4 otherwise (idle has bunch of own varieties)
+ TAknLayoutRect controlPaneRect;
+ controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
+
+ variety = 0;
+ if (AknLayoutUtils::MSKEnabled())
+ {
+ variety = 3;
+ }
+ controlPaneLSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t1(variety)); //LSK text area
+
+ value = controlPaneRect.Rect().Height() - controlPaneLSKText.TextRect().Height();
+ }
+ break;
+ case QStyle::PM_ToolBarItemSpacing:
+ {
+ TAknLayoutRect popupToolBarWindow;
+ variety = 4;
+ popupToolBarWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window(variety) );
+ TAknLayoutRect gridToolBarRect;
+ gridToolBarRect.LayoutRect( popupToolBarWindow.Rect(), AknLayoutScalable_Avkon::grid_toobar_pane() );
+ TAknLayoutRect cellToolBarRect1;
+ TAknLayoutRect cellToolBarRect2;
+ cellToolBarRect1.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(0).LayoutLine() ); //first item
+ cellToolBarRect2.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(1).LayoutLine() ); //second item
+ value = cellToolBarRect1.Rect().iBr.iX - cellToolBarRect2.Rect().iTl.iX;
+ }
+ break;
+ case QStyle::PM_ToolBarFrameWidth:
+ {
+ variety = 4;
+ TAknLayoutRect popupToolBarWindow;
+ popupToolBarWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window(variety) );
+ TAknLayoutRect gridToolBarRect;
+ gridToolBarRect.LayoutRect( popupToolBarWindow.Rect(), AknLayoutScalable_Avkon::grid_toobar_pane() );
+ value = popupToolBarWindow.Rect().iBr.iX - gridToolBarRect.Rect().iBr.iX;
+ }
+ break;
+ case QStyle::PM_ToolBarItemMargin:
+ {
+ variety = 4;
+ TAknLayoutRect popupToolBarWindow;
+ popupToolBarWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window(variety) );
+ TAknLayoutRect gridToolBarRect;
+ gridToolBarRect.LayoutRect( popupToolBarWindow.Rect(), AknLayoutScalable_Avkon::grid_toobar_pane() );
+ TAknLayoutRect cellToolBarRect1;
+ cellToolBarRect1.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(0).LayoutLine() ); //first item
+ value = gridToolBarRect.Rect().iTl.iX - cellToolBarRect1.Rect().iTl.iX;
+ }
+ break;
+ case QStyle::PM_LayoutLeftMargin: // there really isn't a default layoutting on s60, but lets use AppShell icon deployment as base
+ case QStyle::PM_LayoutRightMargin:
+ case QStyle::PM_LayoutTopMargin:
+ case QStyle::PM_LayoutBottomMargin:
+ case QStyle::PM_LayoutHorizontalSpacing:
+ case QStyle::PM_LayoutVerticalSpacing:
+ {
+ //since spacing and margins should be globally same, lets use same easy component as base - such as find popup
+ TAknLayoutRect popup_find_windowRect;
+ TAknLayoutRect bg_popup_window_pane_cp12Rect;
+ TAknLayoutRect find_popup_paneRect;
+ popup_find_windowRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_find_window(0).LayoutLine());
+ bg_popup_window_pane_cp12Rect.LayoutRect( popup_find_windowRect.Rect(), AknLayoutScalable_Avkon::bg_popup_window_pane_cp12().LayoutLine());
+ find_popup_paneRect.LayoutRect( bg_popup_window_pane_cp12Rect.Rect(), AknLayoutScalable_Avkon::find_popup_pane().LayoutLine());
+
+ const TBool mirrored = AknLayoutUtils::LayoutMirrored();
+ if ((metric==QStyle::PM_LayoutVerticalSpacing && !mirrored) || metric==QStyle::PM_LayoutLeftMargin)
+ {
+ if (mirrored)
+ {
+ value = find_popup_paneRect.Rect().iTl.iX - bg_popup_window_pane_cp12Rect.Rect().iTl.iX;
+ }
+ else
+ {
+ value = find_popup_paneRect.Rect().iTl.iX - bg_popup_window_pane_cp12Rect.Rect().iTl.iX;
+ }
+ }
+ else if (metric==QStyle::PM_LayoutRightMargin || (metric==QStyle::PM_LayoutVerticalSpacing && mirrored))
+ {
+ if (mirrored)
+ {
+ value = bg_popup_window_pane_cp12Rect.Rect().iBr.iX - find_popup_paneRect.Rect().iBr.iX;
+ }
+ else
+ {
+ value = bg_popup_window_pane_cp12Rect.Rect().iBr.iX - find_popup_paneRect.Rect().iBr.iX;
+ }
+ }
+ else if (metric==QStyle::PM_LayoutTopMargin || metric==QStyle::PM_LayoutHorizontalSpacing)
+ {
+ value = find_popup_paneRect.Rect().iTl.iY - bg_popup_window_pane_cp12Rect.Rect().iTl.iY;
+ }
+ else if (metric==QStyle::PM_LayoutBottomMargin)
+ {
+ value = bg_popup_window_pane_cp12Rect.Rect().iBr.iY - find_popup_paneRect.Rect().iBr.iY;
+ }
+ }
+ break;
+ case QStyle::PM_MaximumDragDistance:
+ {
+ value = -1; //disable - not in S60
+ }
+ break;
+ case QStyle::PM_ScrollBarExtent:
+ {
+ TAknLayoutRect miscGraphicsRect;
+ miscGraphicsRect.LayoutRect( screenRect, AknLayoutScalable_Avkon::misc_graphics());
+ miscGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::misc_graphics());
+ TAknLayoutRect textsGraphicsRect;
+ textsGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::texts_graphics());
+ TAknLayoutRect editorScrollRect;
+ editorScrollRect.LayoutRect( textsGraphicsRect.Rect(), AknLayoutScalable_Avkon::editor_scroll_pane());
+ TAknLayoutRect scrollPaneRect;
+ scrollPaneRect.LayoutRect( editorScrollRect.Rect(), AknLayoutScalable_Avkon::scroll_pane_cp13());
+ value = scrollPaneRect.Rect().Width(); // width of editor's scroll bar
+ }
+ break;
+ case QStyle::PM_ScrollBarSliderMin:
+ {
+ TAknLayoutRect listScrollPane;
+ listScrollPane.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_gen_pane(0));
+ TAknLayoutRect scrollPane;
+ scrollPane.LayoutRect( listScrollPane.Rect(), AknLayoutScalable_Avkon::scroll_pane());
+ TAknLayoutRect scrollHandlePane;
+ scrollHandlePane.LayoutRect( scrollPane.Rect(), AknLayoutScalable_Avkon::scroll_handle_pane());
+ TAknLayoutRect aidMinSizePane;
+ aidMinSizePane.LayoutRect( scrollHandlePane.Rect(), AknLayoutScalable_Avkon::aid_size_min_handle()); // this gives min width size for horizontal scroll bar - same can be used for vertical height minimum
+ value = aidMinSizePane.Rect().Height();
+ }
+ break;
+ case QStyle::PM_MenuBarPanelWidth:
+ {
+ TAknLayoutRect appWindow;
+ appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
+
+ variety = 0;
+ if ( landscape )
+ {
+ variety = 2;
+ }
+ TAknLayoutRect areaBottomRect;
+ areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
+
+ // todo: prt: variety 7 if thin status pane, 1 if no status pane, 3 if small status pane and with main pane, 4 otherwise (idle has bunch of own varieties)
+ // todo: lsc: variety 6 if thin status pane
+ // todo: should stacon be considered?
+ TAknLayoutRect controlPaneRect;
+ controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
+ value = areaBottomRect.Rect().Height() - controlPaneRect.Rect().Height(); //usually zero
+ }
+ break;
+ case QStyle::PM_ProgressBarChunkWidth:
+ {
+ // This is either deduced or skinned (for Java) in S60
+ // Layout data does not know it. It would require parameters from the
+ // actual progress dialog to be able to calc this (max. value and increment)
+ // So we need to set up some values - lets take one tenth of progress dialog area:
+ TAknLayoutRect appWindow;
+ appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(variety) );
+ if (landscape)
+ {
+ variety = 6;
+ }
+ TAknLayoutRect popupWaitWindowRect;
+ popupWaitWindowRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_note_wait_window(variety) );
+ TAknLayoutRect waitbarPaneRect;
+ waitbarPaneRect.LayoutRect( popupWaitWindowRect.Rect(), AknLayoutScalable_Avkon::wait_bar_pane(0) );
+ TAknLayoutRect waitAnimRect;
+ waitAnimRect.LayoutRect( waitbarPaneRect.Rect(), AknLayoutScalable_Avkon::wait_anim_pane() );
+ value = (TInt) (waitAnimRect.Rect().Width() / 10);
+ }
+ break;
+ case QStyle::PM_TabBarTabOverlap:
+ case QStyle::PM_TabBarTabHSpace:
+ case QStyle::PM_TabBarTabVSpace:
+ case QStyle::PM_TabBarBaseHeight:
+ case QStyle::PM_TabBarBaseOverlap:
+ case QStyle::PM_TabBarScrollButtonWidth:
+ case QStyle::PM_TabBarTabShiftHorizontal:
+ case QStyle::PM_TabBarTabShiftVertical:
+ value = PixelMetricTabValue(metric, appWindow.Rect(), landscape);
+ break;
+ case QStyle::PM_MenuPanelWidth:
+ case QStyle::PM_MenuHMargin:
+ case QStyle::PM_MenuVMargin:
+ value = PixelMetricMenuValue(metric, mainPaneRect);
+ break;
+ case QStyle::PM_ButtonIconSize:
+ //lets use voice recorder icons as a base
+ //Unfortunately S60 graphics don't separate button bevel graphics from the actual icon.
+ //Se we have no means to query the margin from bevel border to "central icon" border.
+ //So, we need to make a estimate...
+
+ const TInt varietyForButtons = !landscape ? 0 : 1;
+
+ TAknLayoutRect vRMainRect;
+ vRMainRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_vorec_pane() );
+
+ TAknLayoutRect vRButtonGridRect;
+ vRButtonGridRect.LayoutRect( vRMainRect.Rect(), AknLayoutScalable_Apps::grid_vorec_pane() );
+
+ TAknLayoutRect vRButtonCellRect;
+ vRButtonCellRect.LayoutRect( vRButtonGridRect.Rect(), AknLayoutScalable_Apps::cell_vorec_pane(0) );
+
+ TAknLayoutRect vRButtonCellGraphicsRect;
+ vRButtonCellGraphicsRect.LayoutRect( vRButtonCellRect.Rect(), AknLayoutScalable_Apps::cell_vorec_pane_g1() );
+
+ // 0.32 is the estimate how much the icon occupies of the button bevel area
+ value = vRButtonCellGraphicsRect.Rect().Width() * 0.32;
+
+ break;
+ case QStyle::PM_SmallIconSize:
+ {
+ // lets use AI2 icon as a base
+ TAknLayoutRect idlePaneRect;
+ idlePaneRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::main_idle_act2_pane() );
+ TAknLayoutRect idleDataRect;
+ idleDataRect.LayoutRect( idlePaneRect.Rect(), AknLayoutScalable_Avkon::popup_ai2_data_window(1) );
+ TAknLayoutRect ai2GridRect;
+ ai2GridRect.LayoutRect( idleDataRect.Rect(), AknLayoutScalable_Avkon::grid_ai2_button_pane() );
+ TAknLayoutRect ai2MpRect;
+ ai2MpRect.LayoutRect( ai2GridRect.Rect(), AknLayoutScalable_Avkon::ai2_mp_button_pane() );
+ TAknLayoutRect ai2CellPaneRect;
+ ai2CellPaneRect.LayoutRect( ai2MpRect.Rect(), AknLayoutScalable_Avkon::cell_ai2_button_pane(1).LayoutLine() );
+ TAknLayoutRect ai2CellButtonRect;
+ ai2CellButtonRect.LayoutRect( ai2CellPaneRect.Rect(), AknLayoutScalable_Avkon::cell_ai2_button_pane_g1());
+ value = Min( ai2CellButtonRect.Rect().Width(), ai2CellButtonRect.Rect().Height());
+ }
+ break;
+ case QStyle::PM_FocusFrameHMargin:
+ case QStyle::PM_FocusFrameVMargin:
+ {
+ TAknLayoutRect gridRect;
+ gridRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::grid_highlight_pane(0));
+ TAknLayoutRect gridRectCenter;
+ gridRectCenter.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::cell_highlight_pane_g1());
+
+ // The difference of center piece from border tell the frame width.
+ if ( value == QStyle::PM_FocusFrameHMargin)
+ {
+ value = gridRect.Rect().iBr.iX - gridRectCenter.Rect().iBr.iX;
+ }
+ else
+ {
+ value = gridRect.Rect().iBr.iY - gridRectCenter.Rect().iBr.iY;
+ }
+ }
+ break;
+ case QStyle::PM_ToolBarIconSize:
+ {
+ TAknLayoutRect popupToolBarWindow;
+ variety = 4;
+ popupToolBarWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window(variety) );
+ TAknLayoutRect gridToolBarRect;
+ gridToolBarRect.LayoutRect( popupToolBarWindow.Rect(), AknLayoutScalable_Avkon::grid_toobar_pane() );
+ TAknLayoutRect cellToolBarRect1;
+ TAknLayoutRect cellToolBarRect2;
+ cellToolBarRect1.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(0).LayoutLine() ); //first item
+ value = Max( cellToolBarRect1.Rect().Height(), cellToolBarRect1.Rect().Width() );
+ }
+ break;
+
+ case QStyle::PM_TitleBarHeight: // use titlepane height
+ {
+ TAknLayoutRect statusPaneRect;
+ TAknLayoutRect titlePane;
+ TAknLayoutRect areaTopRect;
+ if (landscape)
+ {
+ if ( AknLayoutUtils::PenEnabled() )
+ {
+ // Top area - 0 is for classic landscape (used in touch landscape as well)
+ areaTopRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_top_pane(2) );
+ // Status pane - 0 softkeys on right
+ statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_top_pane() );
+ }
+ else
+ {
+ // Top area - 2 is for classic landscape.
+ areaTopRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(2) );
+ // Stacon top pane (default ok)
+ statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_bottom_pane() );
+ }
+ titlePane.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::title_pane_stacon(0) ); //softkeys on right
+ }
+ else
+ {
+ // Top area - 0 is for classic portrait
+ areaTopRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_top_pane(0) );
+ // Status pane - 0 is for classic portrait
+ statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::status_pane(0) );
+ titlePane.LayoutRect( statusPaneRect.Rect(), AknLayoutScalable_Avkon::title_pane(0) );
+ }
+ value = titlePane.Rect().Height();
+ }
+ break;
+ case QStyle::PM_IndicatorWidth:
+ case QStyle::PM_IndicatorHeight:
+ {
+ TRect rectParent( mainPaneRect );
+
+ TAknLayoutRect layoutRect;
+ layoutRect.LayoutRect( rectParent,AknLayoutScalable_Avkon::set_content_pane().LayoutLine() );
+ TAknLayoutRect layoutRect2;
+ layoutRect2.LayoutRect( layoutRect.Rect(),AknLayoutScalable_Avkon::list_set_graphic_pane(0).LayoutLine() );
+
+ TAknLayoutRect iconLayoutRect;
+ iconLayoutRect.LayoutRect( layoutRect2.Rect(), AknLayoutScalable_Avkon::list_set_graphic_pane_g1(0).LayoutLine() );
+ if (metric==QStyle::PM_IndicatorWidth)
+ {
+ value = iconLayoutRect.Rect().Width();
+ }
+ else
+ {
+ value = iconLayoutRect.Rect().Height();
+ }
+ }
+ break;
+ case QStyle::PM_ExclusiveIndicatorHeight:
+ case QStyle::PM_ExclusiveIndicatorWidth:
+ {
+ TRect rectParent( mainPaneRect );
+ TAknLayoutRect layoutRect;
+ layoutRect.LayoutRect( rectParent,AknLayoutScalable_Avkon::list_choice_list_pane(1).LayoutLine() ); // w/ scrollbar
+ TAknLayoutText itemText;
+ itemText.LayoutText( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_t1(1) );
+ TAknLayoutRect iconLayoutRect;
+ iconLayoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_g1().LayoutLine() );
+
+ if (metric==QStyle::PM_ExclusiveIndicatorHeight)
+ {
+ value = iconLayoutRect.Rect().Height();
+ }
+ else
+ {
+ value = iconLayoutRect.Rect().Width();
+ }
+ }
+ break;
+
+ // These are obsolete.
+ case QStyle::PM_DefaultTopLevelMargin:
+ case QStyle::PM_DefaultChildMargin:
+ case QStyle::PM_DefaultLayoutSpacing:
+ break;
+
+ case QStyle::PM_Custom_FrameCornerWidth:
+ {
+ TAknLayoutRect inputFocusRect;
+ inputFocusRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane(0));
+ TAknLayoutRect inputFocusInnerRect;
+ inputFocusInnerRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane_g1());
+
+ value = inputFocusRect.Rect().iBr.iX - inputFocusInnerRect.Rect().iBr.iX;
+ }
+ break;
+ case QStyle::PM_Custom_FrameCornerHeight:
+ {
+ TAknLayoutRect inputFocusRect;
+ inputFocusRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane(0));
+ TAknLayoutRect inputFocusInnerRect;
+ inputFocusInnerRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane_g1());
+ value = inputFocusRect.Rect().iBr.iY - inputFocusInnerRect.Rect().iBr.iY;
+ }
+ break;
+ case QStyle::PM_Custom_BoldLineWidth:
+ value = 3;
+ break;
+ case QStyle::PM_Custom_ThinLineWidth:
+ value = 1;
+ break;
+ case QStyle::PM_ButtonShiftHorizontal:
+ case QStyle::PM_ButtonShiftVertical:
+ value = 0;
+ break;
+
+// todo: re-check if these really are not available in s60
+ case QStyle::PM_MenuDesktopFrameWidth: // not needed in S60 - dislocates Menu both horizontally and vertically
+ case QStyle::PM_HeaderMarkSize: // The size of the sort indicator in a header. Not in S60
+ case QStyle::PM_SpinBoxSliderHeight: // The height of the optional spin box slider. Not in S60
+ case QStyle::PM_HeaderMargin: // not in S60
+ case QStyle::PM_MenuScrollerHeight: // not in S60
+ case QStyle::PM_MenuTearoffHeight: // not in S60
+ case QStyle::PM_DockWidgetFrameWidth: // not in S60
+ case QStyle::PM_DockWidgetSeparatorExtent: // not in S60
+ case QStyle::PM_MdiSubWindowMinimizedWidth: //no such thing in S60
+ case QStyle::PM_HeaderGripMargin: // not in S60
+ case QStyle::PM_SplitterWidth: // not in S60
+ case QStyle::PM_ToolBarExtensionExtent: // not in S60
+ case QStyle::PM_ToolBarSeparatorExtent: // not in S60
+ case QStyle::PM_ToolBarHandleExtent: // not in s60
+ case QStyle::PM_MenuButtonIndicator: // none???
+ case QStyle::PM_TabBar_ScrollButtonOverlap: // not used in S60 - tab arrows are on left and right side of tab group - not together
+ case QStyle::PM_SizeGripSize: // use default
+ case QStyle::PM_TabCloseIndicatorWidth:
+ case QStyle::PM_TabCloseIndicatorHeight:
+ case QStyle::PM_ScrollView_ScrollBarSpacing:
+ case QStyle::PM_SubMenuOverlap:
+ default:
+ break;
+ }
+ return value;
+ }
+
+TInt PixelMetrics::PixelMetricTabValue(QStyle::PixelMetric tabMetric, TRect appWindow, TBool landscape)
+ {
+ TInt tabValue = 0;
+ // common ones
+ TAknLayoutRect mainAreaRect;
+ TAknLayoutRect rightIndicationRect;
+ TAknLayoutRect leftIndicationRect;
+ TAknLayoutRect activeTabRect;
+ TAknLayoutText activeTabTextRect;
+ TAknLayoutRect passiveTabRect;
+ TAknLayoutText passiveTabTextRect;
+ TAknLayoutRect tabsPaneRect;
+ if ( landscape )
+ {
+ TAknLayoutRect statusPaneRect;
+ TAknLayoutRect areaTopRect;
+ if ( AknLayoutUtils::PenEnabled() )
+ {
+ // Top area - 0 is for classic landscape (used in touch landscape as well)
+ areaTopRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::area_top_pane(2) );
+ // Status pane - 0 softkeys on right
+ statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_top_pane() );
+ }
+ else
+ {
+ // Top area - 2 is for classic landscape.
+ areaTopRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::area_bottom_pane(2) );
+ // Stacon top pane (default ok)
+ statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_bottom_pane() );
+ }
+ // main pane for landscape
+ mainAreaRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::main_pane(4) );
+
+ // navi pane
+ TAknLayoutRect naviPaneRect;
+ naviPaneRect.LayoutRect( statusPaneRect.Rect(), AknLayoutScalable_Avkon::navi_pane_stacon(0) ); // softkeys on right
+ // navi-navi pane
+ tabsPaneRect.LayoutRect( naviPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_stacon(0) ); // softkeys on right
+ // Passive tab item - lets use layout where active is on left side of passive
+ passiveTabRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane(0) );
+ // Active tab item
+ activeTabRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane(0) );
+ // Left indication
+ leftIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g1(0) );
+ // Right indication
+ rightIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g2(0) );
+ // active tab text rect
+ activeTabTextRect.LayoutText( activeTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane_t1(1) );
+ // passive tab text rect
+ passiveTabTextRect.LayoutText( passiveTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane_t1(1) );
+ }
+ else
+ {
+ // main pane for portait
+ mainAreaRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::main_pane(3) );
+ // Top area - 0 is for classic portrait
+ TAknLayoutRect areaTopRect;
+ areaTopRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::area_top_pane(0) );
+ // Status pane - 0 is for classic portrait
+ TAknLayoutRect statusPaneRect;
+ statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::status_pane(0) );
+
+ // Navi pane
+ TAknLayoutRect naviPaneRect;
+ naviPaneRect.LayoutRect( statusPaneRect.Rect(), AknLayoutScalable_Avkon::navi_pane(0) );
+ // Navi-navi pane for tabs (0)
+ TAknLayoutRect navi2PaneRect;
+ navi2PaneRect.LayoutRect( naviPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane() );
+ // Short tab pane
+ tabsPaneRect.LayoutRect( navi2PaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_tabs_pane() );
+ // Tab pane for 2 items
+ TAknLayoutRect tab2PaneRect;
+ tab2PaneRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_tabs_3_pane() );
+ // Passive tab item - lets use layout where active is on left side of passive
+ passiveTabRect.LayoutRect( tab2PaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane(0) );
+ // Active tab item
+ activeTabRect.LayoutRect( tab2PaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane(0) );
+ // Left indication
+ leftIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g1(0) );
+ // Right indication
+ rightIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g2(0) );
+ // active tab text rect
+ activeTabTextRect.LayoutText( activeTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane_t1(0) );
+ // passive tab text rect
+ passiveTabTextRect.LayoutText( passiveTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane_t1(0) );
+ }
+
+ // active tab on left, passive on rightside
+ TInt tabOverlap = activeTabRect.Rect().iBr.iX - passiveTabRect.Rect().iTl.iX;
+ TInt tabHSpace = (TInt) ((activeTabTextRect.TextRect().iTl.iX - activeTabRect.Rect().iTl.iX + activeTabRect.Rect().iBr.iX - activeTabTextRect.TextRect().iBr.iX)/2);
+ TInt tabVSpace = (TInt) ((activeTabTextRect.TextRect().iTl.iY - activeTabRect.Rect().iTl.iY + activeTabRect.Rect().iBr.iY - activeTabTextRect.TextRect().iBr.iY)/2);
+ TInt tabBaseHeight = 0;
+ if ( landscape && !AknLayoutUtils::PenEnabled())
+ {
+ // In landscape tab is below mainpane
+ tabBaseHeight = mainAreaRect.Rect().iBr.iY - tabsPaneRect.Rect().iTl.iY;
+ }
+ else
+ {
+ // In portrait (and in landscape touch) tab is above mainpane
+ tabBaseHeight = tabsPaneRect.Rect().iBr.iY - mainAreaRect.Rect().iTl.iY;
+ }
+ TInt tabBaseOverlap = 0;
+ if ( landscape && !AknLayoutUtils::PenEnabled())
+ {
+ // In landscape tab is below mainpane
+ tabBaseOverlap = Max( 0, mainAreaRect.Rect().iBr.iY - tabsPaneRect.Rect().iTl.iY);
+ }
+ else
+ {
+ // In portrait tab is above mainpane
+ tabBaseOverlap = Max( 0, mainAreaRect.Rect().iTl.iY - tabsPaneRect.Rect().iBr.iY);
+ }
+ TInt tabButtonWidth = Max(leftIndicationRect.Rect().Width(), rightIndicationRect.Rect().Width());
+ TInt tabVShift = Max( Abs(activeTabTextRect.TextRect().iBr.iY - passiveTabTextRect.TextRect().iBr.iY), Abs(activeTabTextRect.TextRect().iTl.iY - passiveTabTextRect.TextRect().iTl.iY) );
+ TInt tabHShift = Max( Abs(activeTabTextRect.TextRect().iBr.iX - passiveTabTextRect.TextRect().iBr.iX), Abs(activeTabTextRect.TextRect().iTl.iX - passiveTabTextRect.TextRect().iTl.iX) );
+ tabHShift -= (passiveTabRect.Rect().Width() - tabOverlap); // remove tab change and add overlapping area
+
+ switch( tabMetric )
+ {
+ case QStyle::PM_TabBarTabOverlap:
+ tabValue = tabOverlap;
+ break;
+ case QStyle::PM_TabBarTabHSpace:
+ tabValue = tabHSpace;
+ break;
+ case QStyle::PM_TabBarTabVSpace:
+ tabValue = tabVSpace;
+ break;
+ case QStyle::PM_TabBarBaseHeight:
+ tabValue = tabBaseHeight;
+ break;
+ case QStyle::PM_TabBarBaseOverlap:
+ tabValue = tabBaseOverlap;
+ break;
+ case QStyle::PM_TabBarScrollButtonWidth:
+ // Since in Qt the scroll indicator is shown within a button, we need to add button margins to this value
+ {
+ tabValue = tabButtonWidth + 2*PixelMetricValue(QStyle::PM_ButtonMargin);
+ }
+ break;
+ case QStyle::PM_TabBarTabShiftHorizontal:
+ tabValue = tabHShift;
+ break;
+ case QStyle::PM_TabBarTabShiftVertical:
+ tabValue = tabVShift;
+ break;
+ default:
+ break;
+ }
+ return tabValue;
+ }
+
+TInt PixelMetrics::PixelMetricMenuValue(QStyle::PixelMetric tabMetric, TRect mainPaneRect )
+ {
+ TInt menuValue = 0;
+ TAknLayoutRect popupMenuRect;
+ popupMenuRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_menu_window(0) );
+ TAknLayoutRect listScrollPaneRect;
+ listScrollPaneRect.LayoutRect( popupMenuRect.Rect(), AknLayoutScalable_Avkon::listscroll_menu_pane(0) );
+ TAknLayoutRect listMenuPaneRect;
+ listMenuPaneRect.LayoutRect( listScrollPaneRect.Rect(), AknLayoutScalable_Avkon::list_menu_pane(0) );
+ TAknLayoutRect listMenuRow1Rect;
+ listMenuRow1Rect.LayoutRect( listScrollPaneRect.Rect(), AknLayoutScalable_Avkon::list_single_pane_cp2(0));
+
+ switch (tabMetric)
+ {
+ case QStyle::PM_MenuPanelWidth:
+ menuValue = listMenuPaneRect.Rect().iTl.iX - listScrollPaneRect.Rect().iTl.iX;
+ if ( AknLayoutUtils::LayoutMirrored() )
+ {
+ menuValue = listScrollPaneRect.Rect().iBr.iX - listMenuPaneRect.Rect().iBr.iX;
+ }
+ break;
+ case QStyle::PM_MenuHMargin:
+ menuValue = listMenuRow1Rect.Rect().iTl.iX - popupMenuRect.Rect().iTl.iX;
+ if ( AknLayoutUtils::LayoutMirrored() )
+ {
+ menuValue = popupMenuRect.Rect().iBr.iX - listMenuRow1Rect.Rect().iBr.iX;
+ }
+ break;
+ case QStyle::PM_MenuVMargin:
+ menuValue = listMenuRow1Rect.Rect().iTl.iY - popupMenuRect.Rect().iTl.iY;
+ break;
+ default:
+ break;
+ }
+ return menuValue;
+ }
diff --git a/util/scripts/make_qfeatures_dot_h b/util/scripts/make_qfeatures_dot_h
new file mode 100755
index 0000000000..c43464975e
--- /dev/null
+++ b/util/scripts/make_qfeatures_dot_h
@@ -0,0 +1,118 @@
+#!/usr/bin/perl
+#
+# Usage: make_qfeatures_dot_h
+#
+# Generates core/base/qfeatures.h from core/base/qfeatures.txt.
+#
+# The tools/qfeatures.txt file can contain redundancies, and this program
+# will show them.
+#
+
+open FL, "$ENV{QTDIR}/src/corelib/global/qfeatures.txt"
+ or die "Cannot open $ENV{QTDIR}/src/corelib/global/qfeatures.txt";
+
+while (<FL>) {
+ if ( /^Feature: (\S*)/ ) {
+ print STDERR "Duplicate: $1\n" if $macro{$1};
+ $macro{$macro=$1}=1;
+ } elsif ( /^Requires: (.*?)\s*$/ ) {
+ $deps{$macro}=$1;
+ map { $dep{"$macro $_"}=1 } split /\s+/, $1;
+ } elsif ( /^Name: (.*?)\s*$/ ) {
+ $label{$macro}=$1;
+ }
+}
+
+close FL;
+
+sub depends {
+ my($x,$y) = @_;
+ return 1 if $dep{"$x $y"};
+ return 0 if $dep{"$y $x"};
+ return 0 if $x eq $y;
+ my $d;
+ for $d (split /\s+/, $deps{$x}) {
+ return 1 if depends($d,$y);
+ }
+ return 0;
+}
+sub dependants_rec {
+ my($x) = @_;
+ my $n = 0;
+ my $d = 0;
+ $dependants_rec_count++;
+ if ( $dependants_rec_count > $dependants_rec_limit ) {
+ if ( $circularity_start eq $x ) {
+ print STDERR "Circular dependency: $circularity\n";
+ exit;
+ }
+ $circularity_start=$x if !$circularity_start;
+ $circularity="$x $circularity";
+ }
+ for $d (split /\s+/, $deps{$x}) {
+ $n += 1 + dependants_rec($d);
+ }
+ $dependants_rec_count--;
+ return $n;
+}
+sub dependants {
+ $dependants_rec_limit=keys %macro if !$dependants_rec_limit;
+ $dependants_rec_count=0;
+ return dependants_rec @_;
+}
+sub dependencysort {
+ my($x, $y) = @_;
+ my $xd = dependants($x);
+ my $yd = dependants($y);
+ return $xd-$yd if $xd != $yd;
+ return $x cmp $y;
+}
+
+@macros = sort { dependencysort($a,$b) } keys %macro;
+
+for $macro ( @macros ) {
+ for $d1 (split /\s+/, $deps{$macro} ) {
+ for $d2 (split /\s+/, $deps{$macro} ) {
+ print STDERR "Redundancy in $macro - $d1 depends on $d2\n" if depends($d1,$d2);
+ }
+ print STDERR "Unknown in $macro - $d1\n" if !$macro{$d1};
+ }
+}
+
+open OUT, ">$ENV{QTDIR}/src/corelib/global/qfeatures.h"
+ or die "Cannot open $ENV{QTDIR}/src/corelib/global/qfeatures.h for writing";
+
+print OUT
+"/****************************************************************************
+**
+** Copyright (C) 1992-\$THISYEAR\$ \$TROLLTECH\$. All rights reserved.
+**
+** This file is part of the \$MODULE\$ of the Qt Toolkit.
+**
+** \$TROLLTECH_DUAL_LICENSE\$
+**
+****************************************************************************/
+
+/*
+ * All features and their dependencies.
+ *
+ * This list is generated from \$QTDIR/src/corelib/global/qfeatures.txt
+ */
+
+";
+
+for $macro ( @macros ) {
+ print OUT "// $label{$macro}\n";
+ if ( $deps{$macro} ) {
+ print OUT "#if !defined(QT_NO_$macro)";
+ print OUT " && (", (join " || ", map { "defined(QT_NO_$_)" } split /\s+/, $deps{$macro}), ")";
+ print OUT "\n";
+ print OUT "#define QT_NO_$macro\n";
+ print OUT "#endif\n";
+ } else {
+ print OUT "//#define QT_NO_$macro\n";
+ }
+ print OUT "\n";
+}
+
+close OUT;
diff --git a/util/scripts/unix_to_dos b/util/scripts/unix_to_dos
new file mode 100755
index 0000000000..510037c2f7
--- /dev/null
+++ b/util/scripts/unix_to_dos
@@ -0,0 +1,16 @@
+#!/usr/bin/perl
+
+undef $/;
+
+foreach $f ( @ARGV ) {
+ if ( open( F, "< $f" ) ) {
+ $i = <F>;
+ close F;
+ $i =~ s/\n/\r\n/g;
+ $i =~ s/\r+/\r/g;
+ if ( open( F, "> $f" ) ) {
+ print F $i;
+ close F;
+ }
+ }
+}
diff --git a/util/unicode/README b/util/unicode/README
new file mode 100644
index 0000000000..ca34266a36
--- /dev/null
+++ b/util/unicode/README
@@ -0,0 +1 @@
+Unicode is used to generate the unicode data in src/corelib/tools.
diff --git a/util/unicode/codecs/big5/BIG5 b/util/unicode/codecs/big5/BIG5
new file mode 100644
index 0000000000..1a0a66fc4b
--- /dev/null
+++ b/util/unicode/codecs/big5/BIG5
@@ -0,0 +1,14079 @@
+<code_set_name> BIG5
+<mb_cur_max> 2
+<mb_cur_min> 1
+<comment_char> %
+<escape_char> /
+%
+% Chinese charmap for BIG5 (CP950)
+% version: 0.92
+% Contact: Tung-Han Hsieh <thhsieh@linux.org.tw>
+% Yuan-Chung Cheng <platin@ms31.hinet.net>
+% Distribution and use is free, even for comercial purpose.
+%
+% This charmap is converted from:
+% ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
+% and also merged several characters (/xc6/xa1-/xc7/xfc) from:
+% Aprhic Tech. CO., LTD. Big5 <==> Unicode mapping table.
+%
+% Irrevsible mapping Big5 characters (using %IRREVERSIBLE% notation):
+% /xa2/xcc, /xa2/xce, /xf9/xe9, /xf9/xea, /xf9/xeb,
+% /xf9/xf9, /xf9/xfa, /xf9/xfb, /xf9/xfc, /xf9/xfd
+%
+% alias BIG5-CP950
+
+CHARMAP
+<U0000> /x00 NULL (NUL)
+<U0001> /x01 START OF HEADING (SOH)
+<U0002> /x02 START OF TEXT (STX)
+<U0003> /x03 END OF TEXT (ETX)
+<U0004> /x04 END OF TRANSMISSION (EOT)
+<U0005> /x05 ENQUIRY (ENQ)
+<U0006> /x06 ACKNOWLEDGE (ACK)
+<U0007> /x07 BELL (BEL)
+<U0008> /x08 BACKSPACE (BS)
+<U0009> /x09 CHARACTER TABULATION (HT)
+<U000A> /x0a LINE FEED (LF)
+<U000B> /x0b LINE TABULATION (VT)
+<U000C> /x0c FORM FEED (FF)
+<U000D> /x0d CARRIAGE RETURN (CR)
+<U000E> /x0e SHIFT OUT (SO)
+<U000F> /x0f SHIFT IN (SI)
+<U0010> /x10 DATALINK ESCAPE (DLE)
+<U0011> /x11 DEVICE CONTROL ONE (DC1)
+<U0012> /x12 DEVICE CONTROL TWO (DC2)
+<U0013> /x13 DEVICE CONTROL THREE (DC3)
+<U0014> /x14 DEVICE CONTROL FOUR (DC4)
+<U0015> /x15 NEGATIVE ACKNOWLEDGE (NAK)
+<U0016> /x16 SYNCHRONOUS IDLE (SYN)
+<U0017> /x17 END OF TRANSMISSION BLOCK (ETB)
+<U0018> /x18 CANCEL (CAN)
+<U0019> /x19 END OF MEDIUM (EM)
+<U001A> /x1a SUBSTITUTE (SUB)
+<U001B> /x1b ESCAPE (ESC)
+<U001C> /x1c FILE SEPARATOR (IS4)
+<U001D> /x1d GROUP SEPARATOR (IS3)
+<U001E> /x1e RECORD SEPARATOR (IS2)
+<U001F> /x1f UNIT SEPARATOR (IS1)
+<U0020> /x20 SPACE
+<U0021> /x21 EXCLAMATION MARK
+<U0022> /x22 QUOTATION MARK
+<U0023> /x23 NUMBER SIGN
+<U0024> /x24 DOLLAR SIGN
+<U0025> /x25 PERCENT SIGN
+<U0026> /x26 AMPERSAND
+<U0027> /x27 APOSTROPHE
+<U0028> /x28 LEFT PARENTHESIS
+<U0029> /x29 RIGHT PARENTHESIS
+<U002A> /x2a ASTERISK
+<U002B> /x2b PLUS SIGN
+<U002C> /x2c COMMA
+<U002D> /x2d HYPHEN-MINUS
+<U002E> /x2e FULL STOP
+<U002F> /x2f SOLIDUS
+<U0030> /x30 DIGIT ZERO
+<U0031> /x31 DIGIT ONE
+<U0032> /x32 DIGIT TWO
+<U0033> /x33 DIGIT THREE
+<U0034> /x34 DIGIT FOUR
+<U0035> /x35 DIGIT FIVE
+<U0036> /x36 DIGIT SIX
+<U0037> /x37 DIGIT SEVEN
+<U0038> /x38 DIGIT EIGHT
+<U0039> /x39 DIGIT NINE
+<U003A> /x3a COLON
+<U003B> /x3b SEMICOLON
+<U003C> /x3c LESS-THAN SIGN
+<U003D> /x3d EQUALS SIGN
+<U003E> /x3e GREATER-THAN SIGN
+<U003F> /x3f QUESTION MARK
+<U0040> /x40 COMMERCIAL AT
+<U0041> /x41 LATIN CAPITAL LETTER A
+<U0042> /x42 LATIN CAPITAL LETTER B
+<U0043> /x43 LATIN CAPITAL LETTER C
+<U0044> /x44 LATIN CAPITAL LETTER D
+<U0045> /x45 LATIN CAPITAL LETTER E
+<U0046> /x46 LATIN CAPITAL LETTER F
+<U0047> /x47 LATIN CAPITAL LETTER G
+<U0048> /x48 LATIN CAPITAL LETTER H
+<U0049> /x49 LATIN CAPITAL LETTER I
+<U004A> /x4a LATIN CAPITAL LETTER J
+<U004B> /x4b LATIN CAPITAL LETTER K
+<U004C> /x4c LATIN CAPITAL LETTER L
+<U004D> /x4d LATIN CAPITAL LETTER M
+<U004E> /x4e LATIN CAPITAL LETTER N
+<U004F> /x4f LATIN CAPITAL LETTER O
+<U0050> /x50 LATIN CAPITAL LETTER P
+<U0051> /x51 LATIN CAPITAL LETTER Q
+<U0052> /x52 LATIN CAPITAL LETTER R
+<U0053> /x53 LATIN CAPITAL LETTER S
+<U0054> /x54 LATIN CAPITAL LETTER T
+<U0055> /x55 LATIN CAPITAL LETTER U
+<U0056> /x56 LATIN CAPITAL LETTER V
+<U0057> /x57 LATIN CAPITAL LETTER W
+<U0058> /x58 LATIN CAPITAL LETTER X
+<U0059> /x59 LATIN CAPITAL LETTER Y
+<U005A> /x5a LATIN CAPITAL LETTER Z
+<U005B> /x5b LEFT SQUARE BRACKET
+<U005C> /x5c REVERSE SOLIDUS
+<U005D> /x5d RIGHT SQUARE BRACKET
+<U005E> /x5e CIRCUMFLEX ACCENT
+<U005F> /x5f LOW LINE
+<U0060> /x60 GRAVE ACCENT
+<U0061> /x61 LATIN SMALL LETTER A
+<U0062> /x62 LATIN SMALL LETTER B
+<U0063> /x63 LATIN SMALL LETTER C
+<U0064> /x64 LATIN SMALL LETTER D
+<U0065> /x65 LATIN SMALL LETTER E
+<U0066> /x66 LATIN SMALL LETTER F
+<U0067> /x67 LATIN SMALL LETTER G
+<U0068> /x68 LATIN SMALL LETTER H
+<U0069> /x69 LATIN SMALL LETTER I
+<U006A> /x6a LATIN SMALL LETTER J
+<U006B> /x6b LATIN SMALL LETTER K
+<U006C> /x6c LATIN SMALL LETTER L
+<U006D> /x6d LATIN SMALL LETTER M
+<U006E> /x6e LATIN SMALL LETTER N
+<U006F> /x6f LATIN SMALL LETTER O
+<U0070> /x70 LATIN SMALL LETTER P
+<U0071> /x71 LATIN SMALL LETTER Q
+<U0072> /x72 LATIN SMALL LETTER R
+<U0073> /x73 LATIN SMALL LETTER S
+<U0074> /x74 LATIN SMALL LETTER T
+<U0075> /x75 LATIN SMALL LETTER U
+<U0076> /x76 LATIN SMALL LETTER V
+<U0077> /x77 LATIN SMALL LETTER W
+<U0078> /x78 LATIN SMALL LETTER X
+<U0079> /x79 LATIN SMALL LETTER Y
+<U007A> /x7a LATIN SMALL LETTER Z
+<U007B> /x7b LEFT CURLY BRACKET
+<U007C> /x7c VERTICAL LINE
+<U007D> /x7d RIGHT CURLY BRACKET
+<U007E> /x7e TILDE
+<U007F> /x7f DELETE (DEL)
+<U0080> /x80 PADDING CHARACTER (PAD)
+%
+% Now begin the Big5 (CP950) encoding specific.
+%
+<U3000> /xa1/x40 IDEOGRAPHIC SPACE
+<UFF0C> /xa1/x41 FULLWIDTH COMMA
+<U3001> /xa1/x42 IDEOGRAPHIC COMMA
+<U3002> /xa1/x43 IDEOGRAPHIC FULL STOP
+<UFF0E> /xa1/x44 FULLWIDTH FULL STOP
+<U2027> /xa1/x45 HYPHENATION POINT
+<UFF1B> /xa1/x46 FULLWIDTH SEMICOLON
+<UFF1A> /xa1/x47 FULLWIDTH COLON
+<UFF1F> /xa1/x48 FULLWIDTH QUESTION MARK
+<UFF01> /xa1/x49 FULLWIDTH EXCLAMATION MARK
+<UFE30> /xa1/x4a PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+<U2026> /xa1/x4b HORIZONTAL ELLIPSIS
+<U2025> /xa1/x4c TWO DOT LEADER
+<UFE50> /xa1/x4d SMALL COMMA
+<UFE51> /xa1/x4e SMALL IDEOGRAPHIC COMMA
+<UFE52> /xa1/x4f SMALL FULL STOP
+<U00B7> /xa1/x50 MIDDLE DOT
+<UFE54> /xa1/x51 SMALL SEMICOLON
+<UFE55> /xa1/x52 SMALL COLON
+<UFE56> /xa1/x53 SMALL QUESTION MARK
+<UFE57> /xa1/x54 SMALL EXCLAMATION MARK
+<UFF5C> /xa1/x55 FULLWIDTH VERTICAL LINE
+<U2013> /xa1/x56 EN DASH
+<UFE31> /xa1/x57 PRESENTATION FORM FOR VERTICAL EM DASH
+<U2014> /xa1/x58 EM DASH
+<UFE33> /xa1/x59 PRESENTATION FORM FOR VERTICAL LOW LINE
+<U2574> /xa1/x5a BOX DRAWINGS LIGHT LEFT
+<UFE34> /xa1/x5b PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+<UFE4F> /xa1/x5c WAVY LOW LINE
+<UFF08> /xa1/x5d FULLWIDTH LEFT PARENTHESIS
+<UFF09> /xa1/x5e FULLWIDTH RIGHT PARENTHESIS
+<UFE35> /xa1/x5f PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+<UFE36> /xa1/x60 PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+<UFF5B> /xa1/x61 FULLWIDTH LEFT CURLY BRACKET
+<UFF5D> /xa1/x62 FULLWIDTH RIGHT CURLY BRACKET
+<UFE37> /xa1/x63 PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+<UFE38> /xa1/x64 PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+<U3014> /xa1/x65 LEFT TORTOISE SHELL BRACKET
+<U3015> /xa1/x66 RIGHT TORTOISE SHELL BRACKET
+<UFE39> /xa1/x67 PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+<UFE3A> /xa1/x68 PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+<U3010> /xa1/x69 LEFT BLACK LENTICULAR BRACKET
+<U3011> /xa1/x6a RIGHT BLACK LENTICULAR BRACKET
+<UFE3B> /xa1/x6b PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+<UFE3C> /xa1/x6c PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+<U300A> /xa1/x6d LEFT DOUBLE ANGLE BRACKET
+<U300B> /xa1/x6e RIGHT DOUBLE ANGLE BRACKET
+<UFE3D> /xa1/x6f PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+<UFE3E> /xa1/x70 PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+<U3008> /xa1/x71 LEFT ANGLE BRACKET
+<U3009> /xa1/x72 RIGHT ANGLE BRACKET
+<UFE3F> /xa1/x73 PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+<UFE40> /xa1/x74 PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+<U300C> /xa1/x75 LEFT CORNER BRACKET
+<U300D> /xa1/x76 RIGHT CORNER BRACKET
+<UFE41> /xa1/x77 PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+<UFE42> /xa1/x78 PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+<U300E> /xa1/x79 LEFT WHITE CORNER BRACKET
+<U300F> /xa1/x7a RIGHT WHITE CORNER BRACKET
+<UFE43> /xa1/x7b PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+<UFE44> /xa1/x7c PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+<UFE59> /xa1/x7d SMALL LEFT PARENTHESIS
+<UFE5A> /xa1/x7e SMALL RIGHT PARENTHESIS
+<UFE5B> /xa1/xa1 SMALL LEFT CURLY BRACKET
+<UFE5C> /xa1/xa2 SMALL RIGHT CURLY BRACKET
+<UFE5D> /xa1/xa3 SMALL LEFT TORTOISE SHELL BRACKET
+<UFE5E> /xa1/xa4 SMALL RIGHT TORTOISE SHELL BRACKET
+<U2018> /xa1/xa5 LEFT SINGLE QUOTATION MARK
+<U2019> /xa1/xa6 RIGHT SINGLE QUOTATION MARK
+<U201C> /xa1/xa7 LEFT DOUBLE QUOTATION MARK
+<U201D> /xa1/xa8 RIGHT DOUBLE QUOTATION MARK
+<U301D> /xa1/xa9 REVERSED DOUBLE PRIME QUOTATION MARK
+<U301E> /xa1/xaa DOUBLE PRIME QUOTATION MARK
+<U2035> /xa1/xab REVERSED PRIME
+<U2032> /xa1/xac PRIME
+<UFF03> /xa1/xad FULLWIDTH NUMBER SIGN
+<UFF06> /xa1/xae FULLWIDTH AMPERSAND
+<UFF0A> /xa1/xaf FULLWIDTH ASTERISK
+<U203B> /xa1/xb0 REFERENCE MARK
+<U00A7> /xa1/xb1 SECTION SIGN
+<U3003> /xa1/xb2 DITTO MARK
+<U25CB> /xa1/xb3 WHITE CIRCLE
+<U25CF> /xa1/xb4 BLACK CIRCLE
+<U25B3> /xa1/xb5 WHITE UP-POINTING TRIANGLE
+<U25B2> /xa1/xb6 BLACK UP-POINTING TRIANGLE
+<U25CE> /xa1/xb7 BULLSEYE
+<U2606> /xa1/xb8 WHITE STAR
+<U2605> /xa1/xb9 BLACK STAR
+<U25C7> /xa1/xba WHITE DIAMOND
+<U25C6> /xa1/xbb BLACK DIAMOND
+<U25A1> /xa1/xbc WHITE SQUARE
+<U25A0> /xa1/xbd BLACK SQUARE
+<U25BD> /xa1/xbe WHITE DOWN-POINTING TRIANGLE
+<U25BC> /xa1/xbf BLACK DOWN-POINTING TRIANGLE
+<U32A3> /xa1/xc0 CIRCLED IDEOGRAPH CORRECT
+<U2105> /xa1/xc1 CARE OF
+<U00AF> /xa1/xc2 MACRON
+<UFFE3> /xa1/xc3 FULLWIDTH MACRON
+<UFF3F> /xa1/xc4 FULLWIDTH LOW LINE
+<U02CD> /xa1/xc5 MODIFIER LETTER LOW MACRON
+<UFE49> /xa1/xc6 DASHED OVERLINE
+<UFE4A> /xa1/xc7 CENTRELINE OVERLINE
+<UFE4D> /xa1/xc8 DASHED LOW LINE
+<UFE4E> /xa1/xc9 CENTRELINE LOW LINE
+<UFE4B> /xa1/xca WAVY OVERLINE
+<UFE4C> /xa1/xcb DOUBLE WAVY OVERLINE
+<UFE5F> /xa1/xcc SMALL NUMBER SIGN
+<UFE60> /xa1/xcd SMALL AMPERSAND
+<UFE61> /xa1/xce SMALL ASTERISK
+<UFF0B> /xa1/xcf FULLWIDTH PLUS SIGN
+<UFF0D> /xa1/xd0 FULLWIDTH HYPHEN-MINUS
+<U00D7> /xa1/xd1 MULTIPLICATION SIGN
+<U00F7> /xa1/xd2 DIVISION SIGN
+<U00B1> /xa1/xd3 PLUS-MINUS SIGN
+<U221A> /xa1/xd4 SQUARE ROOT
+<UFF1C> /xa1/xd5 FULLWIDTH LESS-THAN SIGN
+<UFF1E> /xa1/xd6 FULLWIDTH GREATER-THAN SIGN
+<UFF1D> /xa1/xd7 FULLWIDTH EQUALS SIGN
+<U2266> /xa1/xd8 LESS-THAN OVER EQUAL TO
+<U2267> /xa1/xd9 GREATER-THAN OVER EQUAL TO
+<U2260> /xa1/xda NOT EQUAL TO
+<U221E> /xa1/xdb INFINITY
+<U2252> /xa1/xdc APPROXIMATELY EQUAL TO OR THE IMAGE OF
+<U2261> /xa1/xdd IDENTICAL TO
+<UFE62> /xa1/xde SMALL PLUS SIGN
+<UFE63> /xa1/xdf SMALL HYPHEN-MINUS
+<UFE64> /xa1/xe0 SMALL LESS-THAN SIGN
+<UFE65> /xa1/xe1 SMALL GREATER-THAN SIGN
+<UFE66> /xa1/xe2 SMALL EQUALS SIGN
+<UFF5E> /xa1/xe3 FULLWIDTH TILDE
+<U2229> /xa1/xe4 INTERSECTION
+<U222A> /xa1/xe5 UNION
+<U22A5> /xa1/xe6 UP TACK
+<U2220> /xa1/xe7 ANGLE
+<U221F> /xa1/xe8 RIGHT ANGLE
+<U22BF> /xa1/xe9 RIGHT TRIANGLE
+<U33D2> /xa1/xea SQUARE LOG
+<U33D1> /xa1/xeb SQUARE LN
+<U222B> /xa1/xec INTEGRAL
+<U222E> /xa1/xed CONTOUR INTEGRAL
+<U2235> /xa1/xee BECAUSE
+<U2234> /xa1/xef THEREFORE
+<U2640> /xa1/xf0 FEMALE SIGN
+<U2642> /xa1/xf1 MALE SIGN
+<U2295> /xa1/xf2 CIRCLED PLUS
+<U2299> /xa1/xf3 CIRCLED DOT OPERATOR
+<U2191> /xa1/xf4 UPWARDS ARROW
+<U2193> /xa1/xf5 DOWNWARDS ARROW
+<U2190> /xa1/xf6 LEFTWARDS ARROW
+<U2192> /xa1/xf7 RIGHTWARDS ARROW
+<U2196> /xa1/xf8 NORTH WEST ARROW
+<U2197> /xa1/xf9 NORTH EAST ARROW
+<U2199> /xa1/xfa SOUTH WEST ARROW
+<U2198> /xa1/xfb SOUTH EAST ARROW
+<U2225> /xa1/xfc PARALLEL TO
+<U2223> /xa1/xfd DIVIDES
+<UFF0F> /xa1/xfe FULLWIDTH SOLIDUS
+<UFF3C> /xa2/x40 FULLWIDTH REVERSE SOLIDUS
+<U2215> /xa2/x41 DIVISION SLASH
+<UFE68> /xa2/x42 SMALL REVERSE SOLIDUS
+<UFF04> /xa2/x43 FULLWIDTH DOLLAR SIGN
+<UFFE5> /xa2/x44 FULLWIDTH YEN SIGN
+<U3012> /xa2/x45 POSTAL MARK
+<UFFE0> /xa2/x46 FULLWIDTH CENT SIGN
+<UFFE1> /xa2/x47 FULLWIDTH POUND SIGN
+<UFF05> /xa2/x48 FULLWIDTH PERCENT SIGN
+<UFF20> /xa2/x49 FULLWIDTH COMMERCIAL AT
+<U2103> /xa2/x4a DEGREE CELSIUS
+<U2109> /xa2/x4b DEGREE FAHRENHEIT
+<UFE69> /xa2/x4c SMALL DOLLAR SIGN
+<UFE6A> /xa2/x4d SMALL PERCENT SIGN
+<UFE6B> /xa2/x4e SMALL COMMERCIAL AT
+<U33D5> /xa2/x4f SQUARE MIL
+<U339C> /xa2/x50 SQUARE MM
+<U339D> /xa2/x51 SQUARE CM
+<U339E> /xa2/x52 SQUARE KM
+<U33CE> /xa2/x53 SQUARE KM CAPITAL
+<U33A1> /xa2/x54 SQUARE M SQUARED
+<U338E> /xa2/x55 SQUARE MG
+<U338F> /xa2/x56 SQUARE KG
+<U33C4> /xa2/x57 SQUARE CC
+<U00B0> /xa2/x58 DEGREE SIGN
+<U5159> /xa2/x59 <CJK>
+<U515B> /xa2/x5a <CJK>
+<U515E> /xa2/x5b <CJK>
+<U515D> /xa2/x5c <CJK>
+<U5161> /xa2/x5d <CJK>
+<U5163> /xa2/x5e <CJK>
+<U55E7> /xa2/x5f <CJK>
+<U74E9> /xa2/x60 <CJK>
+<U7CCE> /xa2/x61 <CJK>
+<U2581> /xa2/x62 LOWER ONE EIGHTH BLOCK
+<U2582> /xa2/x63 LOWER ONE QUARTER BLOCK
+<U2583> /xa2/x64 LOWER THREE EIGHTHS BLOCK
+<U2584> /xa2/x65 LOWER HALF BLOCK
+<U2585> /xa2/x66 LOWER FIVE EIGHTHS BLOCK
+<U2586> /xa2/x67 LOWER THREE QUARTERS BLOCK
+<U2587> /xa2/x68 LOWER SEVEN EIGHTHS BLOCK
+<U2588> /xa2/x69 FULL BLOCK
+<U258F> /xa2/x6a LEFT ONE EIGHTH BLOCK
+<U258E> /xa2/x6b LEFT ONE QUARTER BLOCK
+<U258D> /xa2/x6c LEFT THREE EIGHTHS BLOCK
+<U258C> /xa2/x6d LEFT HALF BLOCK
+<U258B> /xa2/x6e LEFT FIVE EIGHTHS BLOCK
+<U258A> /xa2/x6f LEFT THREE QUARTERS BLOCK
+<U2589> /xa2/x70 LEFT SEVEN EIGHTHS BLOCK
+<U253C> /xa2/x71 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+<U2534> /xa2/x72 BOX DRAWINGS LIGHT UP AND HORIZONTAL
+<U252C> /xa2/x73 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+<U2524> /xa2/x74 BOX DRAWINGS LIGHT VERTICAL AND LEFT
+<U251C> /xa2/x75 BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+<U2594> /xa2/x76 UPPER ONE EIGHTH BLOCK
+<U2500> /xa2/x77 BOX DRAWINGS LIGHT HORIZONTAL
+<U2502> /xa2/x78 BOX DRAWINGS LIGHT VERTICAL
+<U2595> /xa2/x79 RIGHT ONE EIGHTH BLOCK
+<U250C> /xa2/x7a BOX DRAWINGS LIGHT DOWN AND RIGHT
+<U2510> /xa2/x7b BOX DRAWINGS LIGHT DOWN AND LEFT
+<U2514> /xa2/x7c BOX DRAWINGS LIGHT UP AND RIGHT
+<U2518> /xa2/x7d BOX DRAWINGS LIGHT UP AND LEFT
+<U256D> /xa2/x7e BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+<U256E> /xa2/xa1 BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+<U2570> /xa2/xa2 BOX DRAWINGS LIGHT ARC UP AND RIGHT
+<U256F> /xa2/xa3 BOX DRAWINGS LIGHT ARC UP AND LEFT
+<U2550> /xa2/xa4 BOX DRAWINGS DOUBLE HORIZONTAL
+<U255E> /xa2/xa5 BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+<U256A> /xa2/xa6 BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+<U2561> /xa2/xa7 BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+<U25E2> /xa2/xa8 BLACK LOWER RIGHT TRIANGLE
+<U25E3> /xa2/xa9 BLACK LOWER LEFT TRIANGLE
+<U25E5> /xa2/xaa BLACK UPPER RIGHT TRIANGLE
+<U25E4> /xa2/xab BLACK UPPER LEFT TRIANGLE
+<U2571> /xa2/xac BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+<U2572> /xa2/xad BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+<U2573> /xa2/xae BOX DRAWINGS LIGHT DIAGONAL CROSS
+<UFF10> /xa2/xaf FULLWIDTH DIGIT ZERO
+<UFF11> /xa2/xb0 FULLWIDTH DIGIT ONE
+<UFF12> /xa2/xb1 FULLWIDTH DIGIT TWO
+<UFF13> /xa2/xb2 FULLWIDTH DIGIT THREE
+<UFF14> /xa2/xb3 FULLWIDTH DIGIT FOUR
+<UFF15> /xa2/xb4 FULLWIDTH DIGIT FIVE
+<UFF16> /xa2/xb5 FULLWIDTH DIGIT SIX
+<UFF17> /xa2/xb6 FULLWIDTH DIGIT SEVEN
+<UFF18> /xa2/xb7 FULLWIDTH DIGIT EIGHT
+<UFF19> /xa2/xb8 FULLWIDTH DIGIT NINE
+<U2160> /xa2/xb9 ROMAN NUMERAL ONE
+<U2161> /xa2/xba ROMAN NUMERAL TWO
+<U2162> /xa2/xbb ROMAN NUMERAL THREE
+<U2163> /xa2/xbc ROMAN NUMERAL FOUR
+<U2164> /xa2/xbd ROMAN NUMERAL FIVE
+<U2165> /xa2/xbe ROMAN NUMERAL SIX
+<U2166> /xa2/xbf ROMAN NUMERAL SEVEN
+<U2167> /xa2/xc0 ROMAN NUMERAL EIGHT
+<U2168> /xa2/xc1 ROMAN NUMERAL NINE
+<U2169> /xa2/xc2 ROMAN NUMERAL TEN
+<U3021> /xa2/xc3 HANGZHOU NUMERAL ONE
+<U3022> /xa2/xc4 HANGZHOU NUMERAL TWO
+<U3023> /xa2/xc5 HANGZHOU NUMERAL THREE
+<U3024> /xa2/xc6 HANGZHOU NUMERAL FOUR
+<U3025> /xa2/xc7 HANGZHOU NUMERAL FIVE
+<U3026> /xa2/xc8 HANGZHOU NUMERAL SIX
+<U3027> /xa2/xc9 HANGZHOU NUMERAL SEVEN
+<U3028> /xa2/xca HANGZHOU NUMERAL EIGHT
+<U3029> /xa2/xcb HANGZHOU NUMERAL NINE
+%IRREVERSIBLE%<U5341> /xa2/xcc <CJK>
+<U5344> /xa2/xcd <CJK>
+%IRREVERSIBLE%<U5345> /xa2/xce <CJK>
+<UFF21> /xa2/xcf FULLWIDTH LATIN CAPITAL LETTER A
+<UFF22> /xa2/xd0 FULLWIDTH LATIN CAPITAL LETTER B
+<UFF23> /xa2/xd1 FULLWIDTH LATIN CAPITAL LETTER C
+<UFF24> /xa2/xd2 FULLWIDTH LATIN CAPITAL LETTER D
+<UFF25> /xa2/xd3 FULLWIDTH LATIN CAPITAL LETTER E
+<UFF26> /xa2/xd4 FULLWIDTH LATIN CAPITAL LETTER F
+<UFF27> /xa2/xd5 FULLWIDTH LATIN CAPITAL LETTER G
+<UFF28> /xa2/xd6 FULLWIDTH LATIN CAPITAL LETTER H
+<UFF29> /xa2/xd7 FULLWIDTH LATIN CAPITAL LETTER I
+<UFF2A> /xa2/xd8 FULLWIDTH LATIN CAPITAL LETTER J
+<UFF2B> /xa2/xd9 FULLWIDTH LATIN CAPITAL LETTER K
+<UFF2C> /xa2/xda FULLWIDTH LATIN CAPITAL LETTER L
+<UFF2D> /xa2/xdb FULLWIDTH LATIN CAPITAL LETTER M
+<UFF2E> /xa2/xdc FULLWIDTH LATIN CAPITAL LETTER N
+<UFF2F> /xa2/xdd FULLWIDTH LATIN CAPITAL LETTER O
+<UFF30> /xa2/xde FULLWIDTH LATIN CAPITAL LETTER P
+<UFF31> /xa2/xdf FULLWIDTH LATIN CAPITAL LETTER Q
+<UFF32> /xa2/xe0 FULLWIDTH LATIN CAPITAL LETTER R
+<UFF33> /xa2/xe1 FULLWIDTH LATIN CAPITAL LETTER S
+<UFF34> /xa2/xe2 FULLWIDTH LATIN CAPITAL LETTER T
+<UFF35> /xa2/xe3 FULLWIDTH LATIN CAPITAL LETTER U
+<UFF36> /xa2/xe4 FULLWIDTH LATIN CAPITAL LETTER V
+<UFF37> /xa2/xe5 FULLWIDTH LATIN CAPITAL LETTER W
+<UFF38> /xa2/xe6 FULLWIDTH LATIN CAPITAL LETTER X
+<UFF39> /xa2/xe7 FULLWIDTH LATIN CAPITAL LETTER Y
+<UFF3A> /xa2/xe8 FULLWIDTH LATIN CAPITAL LETTER Z
+<UFF41> /xa2/xe9 FULLWIDTH LATIN SMALL LETTER A
+<UFF42> /xa2/xea FULLWIDTH LATIN SMALL LETTER B
+<UFF43> /xa2/xeb FULLWIDTH LATIN SMALL LETTER C
+<UFF44> /xa2/xec FULLWIDTH LATIN SMALL LETTER D
+<UFF45> /xa2/xed FULLWIDTH LATIN SMALL LETTER E
+<UFF46> /xa2/xee FULLWIDTH LATIN SMALL LETTER F
+<UFF47> /xa2/xef FULLWIDTH LATIN SMALL LETTER G
+<UFF48> /xa2/xf0 FULLWIDTH LATIN SMALL LETTER H
+<UFF49> /xa2/xf1 FULLWIDTH LATIN SMALL LETTER I
+<UFF4A> /xa2/xf2 FULLWIDTH LATIN SMALL LETTER J
+<UFF4B> /xa2/xf3 FULLWIDTH LATIN SMALL LETTER K
+<UFF4C> /xa2/xf4 FULLWIDTH LATIN SMALL LETTER L
+<UFF4D> /xa2/xf5 FULLWIDTH LATIN SMALL LETTER M
+<UFF4E> /xa2/xf6 FULLWIDTH LATIN SMALL LETTER N
+<UFF4F> /xa2/xf7 FULLWIDTH LATIN SMALL LETTER O
+<UFF50> /xa2/xf8 FULLWIDTH LATIN SMALL LETTER P
+<UFF51> /xa2/xf9 FULLWIDTH LATIN SMALL LETTER Q
+<UFF52> /xa2/xfa FULLWIDTH LATIN SMALL LETTER R
+<UFF53> /xa2/xfb FULLWIDTH LATIN SMALL LETTER S
+<UFF54> /xa2/xfc FULLWIDTH LATIN SMALL LETTER T
+<UFF55> /xa2/xfd FULLWIDTH LATIN SMALL LETTER U
+<UFF56> /xa2/xfe FULLWIDTH LATIN SMALL LETTER V
+<UFF57> /xa3/x40 FULLWIDTH LATIN SMALL LETTER W
+<UFF58> /xa3/x41 FULLWIDTH LATIN SMALL LETTER X
+<UFF59> /xa3/x42 FULLWIDTH LATIN SMALL LETTER Y
+<UFF5A> /xa3/x43 FULLWIDTH LATIN SMALL LETTER Z
+<U0391> /xa3/x44 GREEK CAPITAL LETTER ALPHA
+<U0392> /xa3/x45 GREEK CAPITAL LETTER BETA
+<U0393> /xa3/x46 GREEK CAPITAL LETTER GAMMA
+<U0394> /xa3/x47 GREEK CAPITAL LETTER DELTA
+<U0395> /xa3/x48 GREEK CAPITAL LETTER EPSILON
+<U0396> /xa3/x49 GREEK CAPITAL LETTER ZETA
+<U0397> /xa3/x4a GREEK CAPITAL LETTER ETA
+<U0398> /xa3/x4b GREEK CAPITAL LETTER THETA
+<U0399> /xa3/x4c GREEK CAPITAL LETTER IOTA
+<U039A> /xa3/x4d GREEK CAPITAL LETTER KAPPA
+<U039B> /xa3/x4e GREEK CAPITAL LETTER LAMDA
+<U039C> /xa3/x4f GREEK CAPITAL LETTER MU
+<U039D> /xa3/x50 GREEK CAPITAL LETTER NU
+<U039E> /xa3/x51 GREEK CAPITAL LETTER XI
+<U039F> /xa3/x52 GREEK CAPITAL LETTER OMICRON
+<U03A0> /xa3/x53 GREEK CAPITAL LETTER PI
+<U03A1> /xa3/x54 GREEK CAPITAL LETTER RHO
+<U03A3> /xa3/x55 GREEK CAPITAL LETTER SIGMA
+<U03A4> /xa3/x56 GREEK CAPITAL LETTER TAU
+<U03A5> /xa3/x57 GREEK CAPITAL LETTER UPSILON
+<U03A6> /xa3/x58 GREEK CAPITAL LETTER PHI
+<U03A7> /xa3/x59 GREEK CAPITAL LETTER CHI
+<U03A8> /xa3/x5a GREEK CAPITAL LETTER PSI
+<U03A9> /xa3/x5b GREEK CAPITAL LETTER OMEGA
+<U03B1> /xa3/x5c GREEK SMALL LETTER ALPHA
+<U03B2> /xa3/x5d GREEK SMALL LETTER BETA
+<U03B3> /xa3/x5e GREEK SMALL LETTER GAMMA
+<U03B4> /xa3/x5f GREEK SMALL LETTER DELTA
+<U03B5> /xa3/x60 GREEK SMALL LETTER EPSILON
+<U03B6> /xa3/x61 GREEK SMALL LETTER ZETA
+<U03B7> /xa3/x62 GREEK SMALL LETTER ETA
+<U03B8> /xa3/x63 GREEK SMALL LETTER THETA
+<U03B9> /xa3/x64 GREEK SMALL LETTER IOTA
+<U03BA> /xa3/x65 GREEK SMALL LETTER KAPPA
+<U03BB> /xa3/x66 GREEK SMALL LETTER LAMDA
+<U03BC> /xa3/x67 GREEK SMALL LETTER MU
+<U03BD> /xa3/x68 GREEK SMALL LETTER NU
+<U03BE> /xa3/x69 GREEK SMALL LETTER XI
+<U03BF> /xa3/x6a GREEK SMALL LETTER OMICRON
+<U03C0> /xa3/x6b GREEK SMALL LETTER PI
+<U03C1> /xa3/x6c GREEK SMALL LETTER RHO
+<U03C3> /xa3/x6d GREEK SMALL LETTER SIGMA
+<U03C4> /xa3/x6e GREEK SMALL LETTER TAU
+<U03C5> /xa3/x6f GREEK SMALL LETTER UPSILON
+<U03C6> /xa3/x70 GREEK SMALL LETTER PHI
+<U03C7> /xa3/x71 GREEK SMALL LETTER CHI
+<U03C8> /xa3/x72 GREEK SMALL LETTER PSI
+<U03C9> /xa3/x73 GREEK SMALL LETTER OMEGA
+<U3105> /xa3/x74 BOPOMOFO LETTER B
+<U3106> /xa3/x75 BOPOMOFO LETTER P
+<U3107> /xa3/x76 BOPOMOFO LETTER M
+<U3108> /xa3/x77 BOPOMOFO LETTER F
+<U3109> /xa3/x78 BOPOMOFO LETTER D
+<U310A> /xa3/x79 BOPOMOFO LETTER T
+<U310B> /xa3/x7a BOPOMOFO LETTER N
+<U310C> /xa3/x7b BOPOMOFO LETTER L
+<U310D> /xa3/x7c BOPOMOFO LETTER G
+<U310E> /xa3/x7d BOPOMOFO LETTER K
+<U310F> /xa3/x7e BOPOMOFO LETTER H
+<U3110> /xa3/xa1 BOPOMOFO LETTER J
+<U3111> /xa3/xa2 BOPOMOFO LETTER Q
+<U3112> /xa3/xa3 BOPOMOFO LETTER X
+<U3113> /xa3/xa4 BOPOMOFO LETTER ZH
+<U3114> /xa3/xa5 BOPOMOFO LETTER CH
+<U3115> /xa3/xa6 BOPOMOFO LETTER SH
+<U3116> /xa3/xa7 BOPOMOFO LETTER R
+<U3117> /xa3/xa8 BOPOMOFO LETTER Z
+<U3118> /xa3/xa9 BOPOMOFO LETTER C
+<U3119> /xa3/xaa BOPOMOFO LETTER S
+<U311A> /xa3/xab BOPOMOFO LETTER A
+<U311B> /xa3/xac BOPOMOFO LETTER O
+<U311C> /xa3/xad BOPOMOFO LETTER E
+<U311D> /xa3/xae BOPOMOFO LETTER EH
+<U311E> /xa3/xaf BOPOMOFO LETTER AI
+<U311F> /xa3/xb0 BOPOMOFO LETTER EI
+<U3120> /xa3/xb1 BOPOMOFO LETTER AU
+<U3121> /xa3/xb2 BOPOMOFO LETTER OU
+<U3122> /xa3/xb3 BOPOMOFO LETTER AN
+<U3123> /xa3/xb4 BOPOMOFO LETTER EN
+<U3124> /xa3/xb5 BOPOMOFO LETTER ANG
+<U3125> /xa3/xb6 BOPOMOFO LETTER ENG
+<U3126> /xa3/xb7 BOPOMOFO LETTER ER
+<U3127> /xa3/xb8 BOPOMOFO LETTER I
+<U3128> /xa3/xb9 BOPOMOFO LETTER U
+<U3129> /xa3/xba BOPOMOFO LETTER IU
+<U02D9> /xa3/xbb DOT ABOVE
+<U02C9> /xa3/xbc MODIFIER LETTER MACRON
+<U02CA> /xa3/xbd MODIFIER LETTER ACUTE ACCENT
+<U02C7> /xa3/xbe CARON
+<U02CB> /xa3/xbf MODIFIER LETTER GRAVE ACCENT
+<U20AC> /xa3/xe1 EURO SIGN
+<U4E00> /xa4/x40 <CJK>
+<U4E59> /xa4/x41 <CJK>
+<U4E01> /xa4/x42 <CJK>
+<U4E03> /xa4/x43 <CJK>
+<U4E43> /xa4/x44 <CJK>
+<U4E5D> /xa4/x45 <CJK>
+<U4E86> /xa4/x46 <CJK>
+<U4E8C> /xa4/x47 <CJK>
+<U4EBA> /xa4/x48 <CJK>
+<U513F> /xa4/x49 <CJK>
+<U5165> /xa4/x4a <CJK>
+<U516B> /xa4/x4b <CJK>
+<U51E0> /xa4/x4c <CJK>
+<U5200> /xa4/x4d <CJK>
+<U5201> /xa4/x4e <CJK>
+<U529B> /xa4/x4f <CJK>
+<U5315> /xa4/x50 <CJK>
+<U5341> /xa4/x51 <CJK>
+<U535C> /xa4/x52 <CJK>
+<U53C8> /xa4/x53 <CJK>
+<U4E09> /xa4/x54 <CJK>
+<U4E0B> /xa4/x55 <CJK>
+<U4E08> /xa4/x56 <CJK>
+<U4E0A> /xa4/x57 <CJK>
+<U4E2B> /xa4/x58 <CJK>
+<U4E38> /xa4/x59 <CJK>
+<U51E1> /xa4/x5a <CJK>
+<U4E45> /xa4/x5b <CJK>
+<U4E48> /xa4/x5c <CJK>
+<U4E5F> /xa4/x5d <CJK>
+<U4E5E> /xa4/x5e <CJK>
+<U4E8E> /xa4/x5f <CJK>
+<U4EA1> /xa4/x60 <CJK>
+<U5140> /xa4/x61 <CJK>
+<U5203> /xa4/x62 <CJK>
+<U52FA> /xa4/x63 <CJK>
+<U5343> /xa4/x64 <CJK>
+<U53C9> /xa4/x65 <CJK>
+<U53E3> /xa4/x66 <CJK>
+<U571F> /xa4/x67 <CJK>
+<U58EB> /xa4/x68 <CJK>
+<U5915> /xa4/x69 <CJK>
+<U5927> /xa4/x6a <CJK>
+<U5973> /xa4/x6b <CJK>
+<U5B50> /xa4/x6c <CJK>
+<U5B51> /xa4/x6d <CJK>
+<U5B53> /xa4/x6e <CJK>
+<U5BF8> /xa4/x6f <CJK>
+<U5C0F> /xa4/x70 <CJK>
+<U5C22> /xa4/x71 <CJK>
+<U5C38> /xa4/x72 <CJK>
+<U5C71> /xa4/x73 <CJK>
+<U5DDD> /xa4/x74 <CJK>
+<U5DE5> /xa4/x75 <CJK>
+<U5DF1> /xa4/x76 <CJK>
+<U5DF2> /xa4/x77 <CJK>
+<U5DF3> /xa4/x78 <CJK>
+<U5DFE> /xa4/x79 <CJK>
+<U5E72> /xa4/x7a <CJK>
+<U5EFE> /xa4/x7b <CJK>
+<U5F0B> /xa4/x7c <CJK>
+<U5F13> /xa4/x7d <CJK>
+<U624D> /xa4/x7e <CJK>
+<U4E11> /xa4/xa1 <CJK>
+<U4E10> /xa4/xa2 <CJK>
+<U4E0D> /xa4/xa3 <CJK>
+<U4E2D> /xa4/xa4 <CJK>
+<U4E30> /xa4/xa5 <CJK>
+<U4E39> /xa4/xa6 <CJK>
+<U4E4B> /xa4/xa7 <CJK>
+<U5C39> /xa4/xa8 <CJK>
+<U4E88> /xa4/xa9 <CJK>
+<U4E91> /xa4/xaa <CJK>
+<U4E95> /xa4/xab <CJK>
+<U4E92> /xa4/xac <CJK>
+<U4E94> /xa4/xad <CJK>
+<U4EA2> /xa4/xae <CJK>
+<U4EC1> /xa4/xaf <CJK>
+<U4EC0> /xa4/xb0 <CJK>
+<U4EC3> /xa4/xb1 <CJK>
+<U4EC6> /xa4/xb2 <CJK>
+<U4EC7> /xa4/xb3 <CJK>
+<U4ECD> /xa4/xb4 <CJK>
+<U4ECA> /xa4/xb5 <CJK>
+<U4ECB> /xa4/xb6 <CJK>
+<U4EC4> /xa4/xb7 <CJK>
+<U5143> /xa4/xb8 <CJK>
+<U5141> /xa4/xb9 <CJK>
+<U5167> /xa4/xba <CJK>
+<U516D> /xa4/xbb <CJK>
+<U516E> /xa4/xbc <CJK>
+<U516C> /xa4/xbd <CJK>
+<U5197> /xa4/xbe <CJK>
+<U51F6> /xa4/xbf <CJK>
+<U5206> /xa4/xc0 <CJK>
+<U5207> /xa4/xc1 <CJK>
+<U5208> /xa4/xc2 <CJK>
+<U52FB> /xa4/xc3 <CJK>
+<U52FE> /xa4/xc4 <CJK>
+<U52FF> /xa4/xc5 <CJK>
+<U5316> /xa4/xc6 <CJK>
+<U5339> /xa4/xc7 <CJK>
+<U5348> /xa4/xc8 <CJK>
+<U5347> /xa4/xc9 <CJK>
+<U5345> /xa4/xca <CJK>
+<U535E> /xa4/xcb <CJK>
+<U5384> /xa4/xcc <CJK>
+<U53CB> /xa4/xcd <CJK>
+<U53CA> /xa4/xce <CJK>
+<U53CD> /xa4/xcf <CJK>
+<U58EC> /xa4/xd0 <CJK>
+<U5929> /xa4/xd1 <CJK>
+<U592B> /xa4/xd2 <CJK>
+<U592A> /xa4/xd3 <CJK>
+<U592D> /xa4/xd4 <CJK>
+<U5B54> /xa4/xd5 <CJK>
+<U5C11> /xa4/xd6 <CJK>
+<U5C24> /xa4/xd7 <CJK>
+<U5C3A> /xa4/xd8 <CJK>
+<U5C6F> /xa4/xd9 <CJK>
+<U5DF4> /xa4/xda <CJK>
+<U5E7B> /xa4/xdb <CJK>
+<U5EFF> /xa4/xdc <CJK>
+<U5F14> /xa4/xdd <CJK>
+<U5F15> /xa4/xde <CJK>
+<U5FC3> /xa4/xdf <CJK>
+<U6208> /xa4/xe0 <CJK>
+<U6236> /xa4/xe1 <CJK>
+<U624B> /xa4/xe2 <CJK>
+<U624E> /xa4/xe3 <CJK>
+<U652F> /xa4/xe4 <CJK>
+<U6587> /xa4/xe5 <CJK>
+<U6597> /xa4/xe6 <CJK>
+<U65A4> /xa4/xe7 <CJK>
+<U65B9> /xa4/xe8 <CJK>
+<U65E5> /xa4/xe9 <CJK>
+<U66F0> /xa4/xea <CJK>
+<U6708> /xa4/xeb <CJK>
+<U6728> /xa4/xec <CJK>
+<U6B20> /xa4/xed <CJK>
+<U6B62> /xa4/xee <CJK>
+<U6B79> /xa4/xef <CJK>
+<U6BCB> /xa4/xf0 <CJK>
+<U6BD4> /xa4/xf1 <CJK>
+<U6BDB> /xa4/xf2 <CJK>
+<U6C0F> /xa4/xf3 <CJK>
+<U6C34> /xa4/xf4 <CJK>
+<U706B> /xa4/xf5 <CJK>
+<U722A> /xa4/xf6 <CJK>
+<U7236> /xa4/xf7 <CJK>
+<U723B> /xa4/xf8 <CJK>
+<U7247> /xa4/xf9 <CJK>
+<U7259> /xa4/xfa <CJK>
+<U725B> /xa4/xfb <CJK>
+<U72AC> /xa4/xfc <CJK>
+<U738B> /xa4/xfd <CJK>
+<U4E19> /xa4/xfe <CJK>
+<U4E16> /xa5/x40 <CJK>
+<U4E15> /xa5/x41 <CJK>
+<U4E14> /xa5/x42 <CJK>
+<U4E18> /xa5/x43 <CJK>
+<U4E3B> /xa5/x44 <CJK>
+<U4E4D> /xa5/x45 <CJK>
+<U4E4F> /xa5/x46 <CJK>
+<U4E4E> /xa5/x47 <CJK>
+<U4EE5> /xa5/x48 <CJK>
+<U4ED8> /xa5/x49 <CJK>
+<U4ED4> /xa5/x4a <CJK>
+<U4ED5> /xa5/x4b <CJK>
+<U4ED6> /xa5/x4c <CJK>
+<U4ED7> /xa5/x4d <CJK>
+<U4EE3> /xa5/x4e <CJK>
+<U4EE4> /xa5/x4f <CJK>
+<U4ED9> /xa5/x50 <CJK>
+<U4EDE> /xa5/x51 <CJK>
+<U5145> /xa5/x52 <CJK>
+<U5144> /xa5/x53 <CJK>
+<U5189> /xa5/x54 <CJK>
+<U518A> /xa5/x55 <CJK>
+<U51AC> /xa5/x56 <CJK>
+<U51F9> /xa5/x57 <CJK>
+<U51FA> /xa5/x58 <CJK>
+<U51F8> /xa5/x59 <CJK>
+<U520A> /xa5/x5a <CJK>
+<U52A0> /xa5/x5b <CJK>
+<U529F> /xa5/x5c <CJK>
+<U5305> /xa5/x5d <CJK>
+<U5306> /xa5/x5e <CJK>
+<U5317> /xa5/x5f <CJK>
+<U531D> /xa5/x60 <CJK>
+<U4EDF> /xa5/x61 <CJK>
+<U534A> /xa5/x62 <CJK>
+<U5349> /xa5/x63 <CJK>
+<U5361> /xa5/x64 <CJK>
+<U5360> /xa5/x65 <CJK>
+<U536F> /xa5/x66 <CJK>
+<U536E> /xa5/x67 <CJK>
+<U53BB> /xa5/x68 <CJK>
+<U53EF> /xa5/x69 <CJK>
+<U53E4> /xa5/x6a <CJK>
+<U53F3> /xa5/x6b <CJK>
+<U53EC> /xa5/x6c <CJK>
+<U53EE> /xa5/x6d <CJK>
+<U53E9> /xa5/x6e <CJK>
+<U53E8> /xa5/x6f <CJK>
+<U53FC> /xa5/x70 <CJK>
+<U53F8> /xa5/x71 <CJK>
+<U53F5> /xa5/x72 <CJK>
+<U53EB> /xa5/x73 <CJK>
+<U53E6> /xa5/x74 <CJK>
+<U53EA> /xa5/x75 <CJK>
+<U53F2> /xa5/x76 <CJK>
+<U53F1> /xa5/x77 <CJK>
+<U53F0> /xa5/x78 <CJK>
+<U53E5> /xa5/x79 <CJK>
+<U53ED> /xa5/x7a <CJK>
+<U53FB> /xa5/x7b <CJK>
+<U56DB> /xa5/x7c <CJK>
+<U56DA> /xa5/x7d <CJK>
+<U5916> /xa5/x7e <CJK>
+<U592E> /xa5/xa1 <CJK>
+<U5931> /xa5/xa2 <CJK>
+<U5974> /xa5/xa3 <CJK>
+<U5976> /xa5/xa4 <CJK>
+<U5B55> /xa5/xa5 <CJK>
+<U5B83> /xa5/xa6 <CJK>
+<U5C3C> /xa5/xa7 <CJK>
+<U5DE8> /xa5/xa8 <CJK>
+<U5DE7> /xa5/xa9 <CJK>
+<U5DE6> /xa5/xaa <CJK>
+<U5E02> /xa5/xab <CJK>
+<U5E03> /xa5/xac <CJK>
+<U5E73> /xa5/xad <CJK>
+<U5E7C> /xa5/xae <CJK>
+<U5F01> /xa5/xaf <CJK>
+<U5F18> /xa5/xb0 <CJK>
+<U5F17> /xa5/xb1 <CJK>
+<U5FC5> /xa5/xb2 <CJK>
+<U620A> /xa5/xb3 <CJK>
+<U6253> /xa5/xb4 <CJK>
+<U6254> /xa5/xb5 <CJK>
+<U6252> /xa5/xb6 <CJK>
+<U6251> /xa5/xb7 <CJK>
+<U65A5> /xa5/xb8 <CJK>
+<U65E6> /xa5/xb9 <CJK>
+<U672E> /xa5/xba <CJK>
+<U672C> /xa5/xbb <CJK>
+<U672A> /xa5/xbc <CJK>
+<U672B> /xa5/xbd <CJK>
+<U672D> /xa5/xbe <CJK>
+<U6B63> /xa5/xbf <CJK>
+<U6BCD> /xa5/xc0 <CJK>
+<U6C11> /xa5/xc1 <CJK>
+<U6C10> /xa5/xc2 <CJK>
+<U6C38> /xa5/xc3 <CJK>
+<U6C41> /xa5/xc4 <CJK>
+<U6C40> /xa5/xc5 <CJK>
+<U6C3E> /xa5/xc6 <CJK>
+<U72AF> /xa5/xc7 <CJK>
+<U7384> /xa5/xc8 <CJK>
+<U7389> /xa5/xc9 <CJK>
+<U74DC> /xa5/xca <CJK>
+<U74E6> /xa5/xcb <CJK>
+<U7518> /xa5/xcc <CJK>
+<U751F> /xa5/xcd <CJK>
+<U7528> /xa5/xce <CJK>
+<U7529> /xa5/xcf <CJK>
+<U7530> /xa5/xd0 <CJK>
+<U7531> /xa5/xd1 <CJK>
+<U7532> /xa5/xd2 <CJK>
+<U7533> /xa5/xd3 <CJK>
+<U758B> /xa5/xd4 <CJK>
+<U767D> /xa5/xd5 <CJK>
+<U76AE> /xa5/xd6 <CJK>
+<U76BF> /xa5/xd7 <CJK>
+<U76EE> /xa5/xd8 <CJK>
+<U77DB> /xa5/xd9 <CJK>
+<U77E2> /xa5/xda <CJK>
+<U77F3> /xa5/xdb <CJK>
+<U793A> /xa5/xdc <CJK>
+<U79BE> /xa5/xdd <CJK>
+<U7A74> /xa5/xde <CJK>
+<U7ACB> /xa5/xdf <CJK>
+<U4E1E> /xa5/xe0 <CJK>
+<U4E1F> /xa5/xe1 <CJK>
+<U4E52> /xa5/xe2 <CJK>
+<U4E53> /xa5/xe3 <CJK>
+<U4E69> /xa5/xe4 <CJK>
+<U4E99> /xa5/xe5 <CJK>
+<U4EA4> /xa5/xe6 <CJK>
+<U4EA6> /xa5/xe7 <CJK>
+<U4EA5> /xa5/xe8 <CJK>
+<U4EFF> /xa5/xe9 <CJK>
+<U4F09> /xa5/xea <CJK>
+<U4F19> /xa5/xeb <CJK>
+<U4F0A> /xa5/xec <CJK>
+<U4F15> /xa5/xed <CJK>
+<U4F0D> /xa5/xee <CJK>
+<U4F10> /xa5/xef <CJK>
+<U4F11> /xa5/xf0 <CJK>
+<U4F0F> /xa5/xf1 <CJK>
+<U4EF2> /xa5/xf2 <CJK>
+<U4EF6> /xa5/xf3 <CJK>
+<U4EFB> /xa5/xf4 <CJK>
+<U4EF0> /xa5/xf5 <CJK>
+<U4EF3> /xa5/xf6 <CJK>
+<U4EFD> /xa5/xf7 <CJK>
+<U4F01> /xa5/xf8 <CJK>
+<U4F0B> /xa5/xf9 <CJK>
+<U5149> /xa5/xfa <CJK>
+<U5147> /xa5/xfb <CJK>
+<U5146> /xa5/xfc <CJK>
+<U5148> /xa5/xfd <CJK>
+<U5168> /xa5/xfe <CJK>
+<U5171> /xa6/x40 <CJK>
+<U518D> /xa6/x41 <CJK>
+<U51B0> /xa6/x42 <CJK>
+<U5217> /xa6/x43 <CJK>
+<U5211> /xa6/x44 <CJK>
+<U5212> /xa6/x45 <CJK>
+<U520E> /xa6/x46 <CJK>
+<U5216> /xa6/x47 <CJK>
+<U52A3> /xa6/x48 <CJK>
+<U5308> /xa6/x49 <CJK>
+<U5321> /xa6/x4a <CJK>
+<U5320> /xa6/x4b <CJK>
+<U5370> /xa6/x4c <CJK>
+<U5371> /xa6/x4d <CJK>
+<U5409> /xa6/x4e <CJK>
+<U540F> /xa6/x4f <CJK>
+<U540C> /xa6/x50 <CJK>
+<U540A> /xa6/x51 <CJK>
+<U5410> /xa6/x52 <CJK>
+<U5401> /xa6/x53 <CJK>
+<U540B> /xa6/x54 <CJK>
+<U5404> /xa6/x55 <CJK>
+<U5411> /xa6/x56 <CJK>
+<U540D> /xa6/x57 <CJK>
+<U5408> /xa6/x58 <CJK>
+<U5403> /xa6/x59 <CJK>
+<U540E> /xa6/x5a <CJK>
+<U5406> /xa6/x5b <CJK>
+<U5412> /xa6/x5c <CJK>
+<U56E0> /xa6/x5d <CJK>
+<U56DE> /xa6/x5e <CJK>
+<U56DD> /xa6/x5f <CJK>
+<U5733> /xa6/x60 <CJK>
+<U5730> /xa6/x61 <CJK>
+<U5728> /xa6/x62 <CJK>
+<U572D> /xa6/x63 <CJK>
+<U572C> /xa6/x64 <CJK>
+<U572F> /xa6/x65 <CJK>
+<U5729> /xa6/x66 <CJK>
+<U5919> /xa6/x67 <CJK>
+<U591A> /xa6/x68 <CJK>
+<U5937> /xa6/x69 <CJK>
+<U5938> /xa6/x6a <CJK>
+<U5984> /xa6/x6b <CJK>
+<U5978> /xa6/x6c <CJK>
+<U5983> /xa6/x6d <CJK>
+<U597D> /xa6/x6e <CJK>
+<U5979> /xa6/x6f <CJK>
+<U5982> /xa6/x70 <CJK>
+<U5981> /xa6/x71 <CJK>
+<U5B57> /xa6/x72 <CJK>
+<U5B58> /xa6/x73 <CJK>
+<U5B87> /xa6/x74 <CJK>
+<U5B88> /xa6/x75 <CJK>
+<U5B85> /xa6/x76 <CJK>
+<U5B89> /xa6/x77 <CJK>
+<U5BFA> /xa6/x78 <CJK>
+<U5C16> /xa6/x79 <CJK>
+<U5C79> /xa6/x7a <CJK>
+<U5DDE> /xa6/x7b <CJK>
+<U5E06> /xa6/x7c <CJK>
+<U5E76> /xa6/x7d <CJK>
+<U5E74> /xa6/x7e <CJK>
+<U5F0F> /xa6/xa1 <CJK>
+<U5F1B> /xa6/xa2 <CJK>
+<U5FD9> /xa6/xa3 <CJK>
+<U5FD6> /xa6/xa4 <CJK>
+<U620E> /xa6/xa5 <CJK>
+<U620C> /xa6/xa6 <CJK>
+<U620D> /xa6/xa7 <CJK>
+<U6210> /xa6/xa8 <CJK>
+<U6263> /xa6/xa9 <CJK>
+<U625B> /xa6/xaa <CJK>
+<U6258> /xa6/xab <CJK>
+<U6536> /xa6/xac <CJK>
+<U65E9> /xa6/xad <CJK>
+<U65E8> /xa6/xae <CJK>
+<U65EC> /xa6/xaf <CJK>
+<U65ED> /xa6/xb0 <CJK>
+<U66F2> /xa6/xb1 <CJK>
+<U66F3> /xa6/xb2 <CJK>
+<U6709> /xa6/xb3 <CJK>
+<U673D> /xa6/xb4 <CJK>
+<U6734> /xa6/xb5 <CJK>
+<U6731> /xa6/xb6 <CJK>
+<U6735> /xa6/xb7 <CJK>
+<U6B21> /xa6/xb8 <CJK>
+<U6B64> /xa6/xb9 <CJK>
+<U6B7B> /xa6/xba <CJK>
+<U6C16> /xa6/xbb <CJK>
+<U6C5D> /xa6/xbc <CJK>
+<U6C57> /xa6/xbd <CJK>
+<U6C59> /xa6/xbe <CJK>
+<U6C5F> /xa6/xbf <CJK>
+<U6C60> /xa6/xc0 <CJK>
+<U6C50> /xa6/xc1 <CJK>
+<U6C55> /xa6/xc2 <CJK>
+<U6C61> /xa6/xc3 <CJK>
+<U6C5B> /xa6/xc4 <CJK>
+<U6C4D> /xa6/xc5 <CJK>
+<U6C4E> /xa6/xc6 <CJK>
+<U7070> /xa6/xc7 <CJK>
+<U725F> /xa6/xc8 <CJK>
+<U725D> /xa6/xc9 <CJK>
+<U767E> /xa6/xca <CJK>
+<U7AF9> /xa6/xcb <CJK>
+<U7C73> /xa6/xcc <CJK>
+<U7CF8> /xa6/xcd <CJK>
+<U7F36> /xa6/xce <CJK>
+<U7F8A> /xa6/xcf <CJK>
+<U7FBD> /xa6/xd0 <CJK>
+<U8001> /xa6/xd1 <CJK>
+<U8003> /xa6/xd2 <CJK>
+<U800C> /xa6/xd3 <CJK>
+<U8012> /xa6/xd4 <CJK>
+<U8033> /xa6/xd5 <CJK>
+<U807F> /xa6/xd6 <CJK>
+<U8089> /xa6/xd7 <CJK>
+<U808B> /xa6/xd8 <CJK>
+<U808C> /xa6/xd9 <CJK>
+<U81E3> /xa6/xda <CJK>
+<U81EA> /xa6/xdb <CJK>
+<U81F3> /xa6/xdc <CJK>
+<U81FC> /xa6/xdd <CJK>
+<U820C> /xa6/xde <CJK>
+<U821B> /xa6/xdf <CJK>
+<U821F> /xa6/xe0 <CJK>
+<U826E> /xa6/xe1 <CJK>
+<U8272> /xa6/xe2 <CJK>
+<U827E> /xa6/xe3 <CJK>
+<U866B> /xa6/xe4 <CJK>
+<U8840> /xa6/xe5 <CJK>
+<U884C> /xa6/xe6 <CJK>
+<U8863> /xa6/xe7 <CJK>
+<U897F> /xa6/xe8 <CJK>
+<U9621> /xa6/xe9 <CJK>
+<U4E32> /xa6/xea <CJK>
+<U4EA8> /xa6/xeb <CJK>
+<U4F4D> /xa6/xec <CJK>
+<U4F4F> /xa6/xed <CJK>
+<U4F47> /xa6/xee <CJK>
+<U4F57> /xa6/xef <CJK>
+<U4F5E> /xa6/xf0 <CJK>
+<U4F34> /xa6/xf1 <CJK>
+<U4F5B> /xa6/xf2 <CJK>
+<U4F55> /xa6/xf3 <CJK>
+<U4F30> /xa6/xf4 <CJK>
+<U4F50> /xa6/xf5 <CJK>
+<U4F51> /xa6/xf6 <CJK>
+<U4F3D> /xa6/xf7 <CJK>
+<U4F3A> /xa6/xf8 <CJK>
+<U4F38> /xa6/xf9 <CJK>
+<U4F43> /xa6/xfa <CJK>
+<U4F54> /xa6/xfb <CJK>
+<U4F3C> /xa6/xfc <CJK>
+<U4F46> /xa6/xfd <CJK>
+<U4F63> /xa6/xfe <CJK>
+<U4F5C> /xa7/x40 <CJK>
+<U4F60> /xa7/x41 <CJK>
+<U4F2F> /xa7/x42 <CJK>
+<U4F4E> /xa7/x43 <CJK>
+<U4F36> /xa7/x44 <CJK>
+<U4F59> /xa7/x45 <CJK>
+<U4F5D> /xa7/x46 <CJK>
+<U4F48> /xa7/x47 <CJK>
+<U4F5A> /xa7/x48 <CJK>
+<U514C> /xa7/x49 <CJK>
+<U514B> /xa7/x4a <CJK>
+<U514D> /xa7/x4b <CJK>
+<U5175> /xa7/x4c <CJK>
+<U51B6> /xa7/x4d <CJK>
+<U51B7> /xa7/x4e <CJK>
+<U5225> /xa7/x4f <CJK>
+<U5224> /xa7/x50 <CJK>
+<U5229> /xa7/x51 <CJK>
+<U522A> /xa7/x52 <CJK>
+<U5228> /xa7/x53 <CJK>
+<U52AB> /xa7/x54 <CJK>
+<U52A9> /xa7/x55 <CJK>
+<U52AA> /xa7/x56 <CJK>
+<U52AC> /xa7/x57 <CJK>
+<U5323> /xa7/x58 <CJK>
+<U5373> /xa7/x59 <CJK>
+<U5375> /xa7/x5a <CJK>
+<U541D> /xa7/x5b <CJK>
+<U542D> /xa7/x5c <CJK>
+<U541E> /xa7/x5d <CJK>
+<U543E> /xa7/x5e <CJK>
+<U5426> /xa7/x5f <CJK>
+<U544E> /xa7/x60 <CJK>
+<U5427> /xa7/x61 <CJK>
+<U5446> /xa7/x62 <CJK>
+<U5443> /xa7/x63 <CJK>
+<U5433> /xa7/x64 <CJK>
+<U5448> /xa7/x65 <CJK>
+<U5442> /xa7/x66 <CJK>
+<U541B> /xa7/x67 <CJK>
+<U5429> /xa7/x68 <CJK>
+<U544A> /xa7/x69 <CJK>
+<U5439> /xa7/x6a <CJK>
+<U543B> /xa7/x6b <CJK>
+<U5438> /xa7/x6c <CJK>
+<U542E> /xa7/x6d <CJK>
+<U5435> /xa7/x6e <CJK>
+<U5436> /xa7/x6f <CJK>
+<U5420> /xa7/x70 <CJK>
+<U543C> /xa7/x71 <CJK>
+<U5440> /xa7/x72 <CJK>
+<U5431> /xa7/x73 <CJK>
+<U542B> /xa7/x74 <CJK>
+<U541F> /xa7/x75 <CJK>
+<U542C> /xa7/x76 <CJK>
+<U56EA> /xa7/x77 <CJK>
+<U56F0> /xa7/x78 <CJK>
+<U56E4> /xa7/x79 <CJK>
+<U56EB> /xa7/x7a <CJK>
+<U574A> /xa7/x7b <CJK>
+<U5751> /xa7/x7c <CJK>
+<U5740> /xa7/x7d <CJK>
+<U574D> /xa7/x7e <CJK>
+<U5747> /xa7/xa1 <CJK>
+<U574E> /xa7/xa2 <CJK>
+<U573E> /xa7/xa3 <CJK>
+<U5750> /xa7/xa4 <CJK>
+<U574F> /xa7/xa5 <CJK>
+<U573B> /xa7/xa6 <CJK>
+<U58EF> /xa7/xa7 <CJK>
+<U593E> /xa7/xa8 <CJK>
+<U599D> /xa7/xa9 <CJK>
+<U5992> /xa7/xaa <CJK>
+<U59A8> /xa7/xab <CJK>
+<U599E> /xa7/xac <CJK>
+<U59A3> /xa7/xad <CJK>
+<U5999> /xa7/xae <CJK>
+<U5996> /xa7/xaf <CJK>
+<U598D> /xa7/xb0 <CJK>
+<U59A4> /xa7/xb1 <CJK>
+<U5993> /xa7/xb2 <CJK>
+<U598A> /xa7/xb3 <CJK>
+<U59A5> /xa7/xb4 <CJK>
+<U5B5D> /xa7/xb5 <CJK>
+<U5B5C> /xa7/xb6 <CJK>
+<U5B5A> /xa7/xb7 <CJK>
+<U5B5B> /xa7/xb8 <CJK>
+<U5B8C> /xa7/xb9 <CJK>
+<U5B8B> /xa7/xba <CJK>
+<U5B8F> /xa7/xbb <CJK>
+<U5C2C> /xa7/xbc <CJK>
+<U5C40> /xa7/xbd <CJK>
+<U5C41> /xa7/xbe <CJK>
+<U5C3F> /xa7/xbf <CJK>
+<U5C3E> /xa7/xc0 <CJK>
+<U5C90> /xa7/xc1 <CJK>
+<U5C91> /xa7/xc2 <CJK>
+<U5C94> /xa7/xc3 <CJK>
+<U5C8C> /xa7/xc4 <CJK>
+<U5DEB> /xa7/xc5 <CJK>
+<U5E0C> /xa7/xc6 <CJK>
+<U5E8F> /xa7/xc7 <CJK>
+<U5E87> /xa7/xc8 <CJK>
+<U5E8A> /xa7/xc9 <CJK>
+<U5EF7> /xa7/xca <CJK>
+<U5F04> /xa7/xcb <CJK>
+<U5F1F> /xa7/xcc <CJK>
+<U5F64> /xa7/xcd <CJK>
+<U5F62> /xa7/xce <CJK>
+<U5F77> /xa7/xcf <CJK>
+<U5F79> /xa7/xd0 <CJK>
+<U5FD8> /xa7/xd1 <CJK>
+<U5FCC> /xa7/xd2 <CJK>
+<U5FD7> /xa7/xd3 <CJK>
+<U5FCD> /xa7/xd4 <CJK>
+<U5FF1> /xa7/xd5 <CJK>
+<U5FEB> /xa7/xd6 <CJK>
+<U5FF8> /xa7/xd7 <CJK>
+<U5FEA> /xa7/xd8 <CJK>
+<U6212> /xa7/xd9 <CJK>
+<U6211> /xa7/xda <CJK>
+<U6284> /xa7/xdb <CJK>
+<U6297> /xa7/xdc <CJK>
+<U6296> /xa7/xdd <CJK>
+<U6280> /xa7/xde <CJK>
+<U6276> /xa7/xdf <CJK>
+<U6289> /xa7/xe0 <CJK>
+<U626D> /xa7/xe1 <CJK>
+<U628A> /xa7/xe2 <CJK>
+<U627C> /xa7/xe3 <CJK>
+<U627E> /xa7/xe4 <CJK>
+<U6279> /xa7/xe5 <CJK>
+<U6273> /xa7/xe6 <CJK>
+<U6292> /xa7/xe7 <CJK>
+<U626F> /xa7/xe8 <CJK>
+<U6298> /xa7/xe9 <CJK>
+<U626E> /xa7/xea <CJK>
+<U6295> /xa7/xeb <CJK>
+<U6293> /xa7/xec <CJK>
+<U6291> /xa7/xed <CJK>
+<U6286> /xa7/xee <CJK>
+<U6539> /xa7/xef <CJK>
+<U653B> /xa7/xf0 <CJK>
+<U6538> /xa7/xf1 <CJK>
+<U65F1> /xa7/xf2 <CJK>
+<U66F4> /xa7/xf3 <CJK>
+<U675F> /xa7/xf4 <CJK>
+<U674E> /xa7/xf5 <CJK>
+<U674F> /xa7/xf6 <CJK>
+<U6750> /xa7/xf7 <CJK>
+<U6751> /xa7/xf8 <CJK>
+<U675C> /xa7/xf9 <CJK>
+<U6756> /xa7/xfa <CJK>
+<U675E> /xa7/xfb <CJK>
+<U6749> /xa7/xfc <CJK>
+<U6746> /xa7/xfd <CJK>
+<U6760> /xa7/xfe <CJK>
+<U6753> /xa8/x40 <CJK>
+<U6757> /xa8/x41 <CJK>
+<U6B65> /xa8/x42 <CJK>
+<U6BCF> /xa8/x43 <CJK>
+<U6C42> /xa8/x44 <CJK>
+<U6C5E> /xa8/x45 <CJK>
+<U6C99> /xa8/x46 <CJK>
+<U6C81> /xa8/x47 <CJK>
+<U6C88> /xa8/x48 <CJK>
+<U6C89> /xa8/x49 <CJK>
+<U6C85> /xa8/x4a <CJK>
+<U6C9B> /xa8/x4b <CJK>
+<U6C6A> /xa8/x4c <CJK>
+<U6C7A> /xa8/x4d <CJK>
+<U6C90> /xa8/x4e <CJK>
+<U6C70> /xa8/x4f <CJK>
+<U6C8C> /xa8/x50 <CJK>
+<U6C68> /xa8/x51 <CJK>
+<U6C96> /xa8/x52 <CJK>
+<U6C92> /xa8/x53 <CJK>
+<U6C7D> /xa8/x54 <CJK>
+<U6C83> /xa8/x55 <CJK>
+<U6C72> /xa8/x56 <CJK>
+<U6C7E> /xa8/x57 <CJK>
+<U6C74> /xa8/x58 <CJK>
+<U6C86> /xa8/x59 <CJK>
+<U6C76> /xa8/x5a <CJK>
+<U6C8D> /xa8/x5b <CJK>
+<U6C94> /xa8/x5c <CJK>
+<U6C98> /xa8/x5d <CJK>
+<U6C82> /xa8/x5e <CJK>
+<U7076> /xa8/x5f <CJK>
+<U707C> /xa8/x60 <CJK>
+<U707D> /xa8/x61 <CJK>
+<U7078> /xa8/x62 <CJK>
+<U7262> /xa8/x63 <CJK>
+<U7261> /xa8/x64 <CJK>
+<U7260> /xa8/x65 <CJK>
+<U72C4> /xa8/x66 <CJK>
+<U72C2> /xa8/x67 <CJK>
+<U7396> /xa8/x68 <CJK>
+<U752C> /xa8/x69 <CJK>
+<U752B> /xa8/x6a <CJK>
+<U7537> /xa8/x6b <CJK>
+<U7538> /xa8/x6c <CJK>
+<U7682> /xa8/x6d <CJK>
+<U76EF> /xa8/x6e <CJK>
+<U77E3> /xa8/x6f <CJK>
+<U79C1> /xa8/x70 <CJK>
+<U79C0> /xa8/x71 <CJK>
+<U79BF> /xa8/x72 <CJK>
+<U7A76> /xa8/x73 <CJK>
+<U7CFB> /xa8/x74 <CJK>
+<U7F55> /xa8/x75 <CJK>
+<U8096> /xa8/x76 <CJK>
+<U8093> /xa8/x77 <CJK>
+<U809D> /xa8/x78 <CJK>
+<U8098> /xa8/x79 <CJK>
+<U809B> /xa8/x7a <CJK>
+<U809A> /xa8/x7b <CJK>
+<U80B2> /xa8/x7c <CJK>
+<U826F> /xa8/x7d <CJK>
+<U8292> /xa8/x7e <CJK>
+<U828B> /xa8/xa1 <CJK>
+<U828D> /xa8/xa2 <CJK>
+<U898B> /xa8/xa3 <CJK>
+<U89D2> /xa8/xa4 <CJK>
+<U8A00> /xa8/xa5 <CJK>
+<U8C37> /xa8/xa6 <CJK>
+<U8C46> /xa8/xa7 <CJK>
+<U8C55> /xa8/xa8 <CJK>
+<U8C9D> /xa8/xa9 <CJK>
+<U8D64> /xa8/xaa <CJK>
+<U8D70> /xa8/xab <CJK>
+<U8DB3> /xa8/xac <CJK>
+<U8EAB> /xa8/xad <CJK>
+<U8ECA> /xa8/xae <CJK>
+<U8F9B> /xa8/xaf <CJK>
+<U8FB0> /xa8/xb0 <CJK>
+<U8FC2> /xa8/xb1 <CJK>
+<U8FC6> /xa8/xb2 <CJK>
+<U8FC5> /xa8/xb3 <CJK>
+<U8FC4> /xa8/xb4 <CJK>
+<U5DE1> /xa8/xb5 <CJK>
+<U9091> /xa8/xb6 <CJK>
+<U90A2> /xa8/xb7 <CJK>
+<U90AA> /xa8/xb8 <CJK>
+<U90A6> /xa8/xb9 <CJK>
+<U90A3> /xa8/xba <CJK>
+<U9149> /xa8/xbb <CJK>
+<U91C6> /xa8/xbc <CJK>
+<U91CC> /xa8/xbd <CJK>
+<U9632> /xa8/xbe <CJK>
+<U962E> /xa8/xbf <CJK>
+<U9631> /xa8/xc0 <CJK>
+<U962A> /xa8/xc1 <CJK>
+<U962C> /xa8/xc2 <CJK>
+<U4E26> /xa8/xc3 <CJK>
+<U4E56> /xa8/xc4 <CJK>
+<U4E73> /xa8/xc5 <CJK>
+<U4E8B> /xa8/xc6 <CJK>
+<U4E9B> /xa8/xc7 <CJK>
+<U4E9E> /xa8/xc8 <CJK>
+<U4EAB> /xa8/xc9 <CJK>
+<U4EAC> /xa8/xca <CJK>
+<U4F6F> /xa8/xcb <CJK>
+<U4F9D> /xa8/xcc <CJK>
+<U4F8D> /xa8/xcd <CJK>
+<U4F73> /xa8/xce <CJK>
+<U4F7F> /xa8/xcf <CJK>
+<U4F6C> /xa8/xd0 <CJK>
+<U4F9B> /xa8/xd1 <CJK>
+<U4F8B> /xa8/xd2 <CJK>
+<U4F86> /xa8/xd3 <CJK>
+<U4F83> /xa8/xd4 <CJK>
+<U4F70> /xa8/xd5 <CJK>
+<U4F75> /xa8/xd6 <CJK>
+<U4F88> /xa8/xd7 <CJK>
+<U4F69> /xa8/xd8 <CJK>
+<U4F7B> /xa8/xd9 <CJK>
+<U4F96> /xa8/xda <CJK>
+<U4F7E> /xa8/xdb <CJK>
+<U4F8F> /xa8/xdc <CJK>
+<U4F91> /xa8/xdd <CJK>
+<U4F7A> /xa8/xde <CJK>
+<U5154> /xa8/xdf <CJK>
+<U5152> /xa8/xe0 <CJK>
+<U5155> /xa8/xe1 <CJK>
+<U5169> /xa8/xe2 <CJK>
+<U5177> /xa8/xe3 <CJK>
+<U5176> /xa8/xe4 <CJK>
+<U5178> /xa8/xe5 <CJK>
+<U51BD> /xa8/xe6 <CJK>
+<U51FD> /xa8/xe7 <CJK>
+<U523B> /xa8/xe8 <CJK>
+<U5238> /xa8/xe9 <CJK>
+<U5237> /xa8/xea <CJK>
+<U523A> /xa8/xeb <CJK>
+<U5230> /xa8/xec <CJK>
+<U522E> /xa8/xed <CJK>
+<U5236> /xa8/xee <CJK>
+<U5241> /xa8/xef <CJK>
+<U52BE> /xa8/xf0 <CJK>
+<U52BB> /xa8/xf1 <CJK>
+<U5352> /xa8/xf2 <CJK>
+<U5354> /xa8/xf3 <CJK>
+<U5353> /xa8/xf4 <CJK>
+<U5351> /xa8/xf5 <CJK>
+<U5366> /xa8/xf6 <CJK>
+<U5377> /xa8/xf7 <CJK>
+<U5378> /xa8/xf8 <CJK>
+<U5379> /xa8/xf9 <CJK>
+<U53D6> /xa8/xfa <CJK>
+<U53D4> /xa8/xfb <CJK>
+<U53D7> /xa8/xfc <CJK>
+<U5473> /xa8/xfd <CJK>
+<U5475> /xa8/xfe <CJK>
+<U5496> /xa9/x40 <CJK>
+<U5478> /xa9/x41 <CJK>
+<U5495> /xa9/x42 <CJK>
+<U5480> /xa9/x43 <CJK>
+<U547B> /xa9/x44 <CJK>
+<U5477> /xa9/x45 <CJK>
+<U5484> /xa9/x46 <CJK>
+<U5492> /xa9/x47 <CJK>
+<U5486> /xa9/x48 <CJK>
+<U547C> /xa9/x49 <CJK>
+<U5490> /xa9/x4a <CJK>
+<U5471> /xa9/x4b <CJK>
+<U5476> /xa9/x4c <CJK>
+<U548C> /xa9/x4d <CJK>
+<U549A> /xa9/x4e <CJK>
+<U5462> /xa9/x4f <CJK>
+<U5468> /xa9/x50 <CJK>
+<U548B> /xa9/x51 <CJK>
+<U547D> /xa9/x52 <CJK>
+<U548E> /xa9/x53 <CJK>
+<U56FA> /xa9/x54 <CJK>
+<U5783> /xa9/x55 <CJK>
+<U5777> /xa9/x56 <CJK>
+<U576A> /xa9/x57 <CJK>
+<U5769> /xa9/x58 <CJK>
+<U5761> /xa9/x59 <CJK>
+<U5766> /xa9/x5a <CJK>
+<U5764> /xa9/x5b <CJK>
+<U577C> /xa9/x5c <CJK>
+<U591C> /xa9/x5d <CJK>
+<U5949> /xa9/x5e <CJK>
+<U5947> /xa9/x5f <CJK>
+<U5948> /xa9/x60 <CJK>
+<U5944> /xa9/x61 <CJK>
+<U5954> /xa9/x62 <CJK>
+<U59BE> /xa9/x63 <CJK>
+<U59BB> /xa9/x64 <CJK>
+<U59D4> /xa9/x65 <CJK>
+<U59B9> /xa9/x66 <CJK>
+<U59AE> /xa9/x67 <CJK>
+<U59D1> /xa9/x68 <CJK>
+<U59C6> /xa9/x69 <CJK>
+<U59D0> /xa9/x6a <CJK>
+<U59CD> /xa9/x6b <CJK>
+<U59CB> /xa9/x6c <CJK>
+<U59D3> /xa9/x6d <CJK>
+<U59CA> /xa9/x6e <CJK>
+<U59AF> /xa9/x6f <CJK>
+<U59B3> /xa9/x70 <CJK>
+<U59D2> /xa9/x71 <CJK>
+<U59C5> /xa9/x72 <CJK>
+<U5B5F> /xa9/x73 <CJK>
+<U5B64> /xa9/x74 <CJK>
+<U5B63> /xa9/x75 <CJK>
+<U5B97> /xa9/x76 <CJK>
+<U5B9A> /xa9/x77 <CJK>
+<U5B98> /xa9/x78 <CJK>
+<U5B9C> /xa9/x79 <CJK>
+<U5B99> /xa9/x7a <CJK>
+<U5B9B> /xa9/x7b <CJK>
+<U5C1A> /xa9/x7c <CJK>
+<U5C48> /xa9/x7d <CJK>
+<U5C45> /xa9/x7e <CJK>
+<U5C46> /xa9/xa1 <CJK>
+<U5CB7> /xa9/xa2 <CJK>
+<U5CA1> /xa9/xa3 <CJK>
+<U5CB8> /xa9/xa4 <CJK>
+<U5CA9> /xa9/xa5 <CJK>
+<U5CAB> /xa9/xa6 <CJK>
+<U5CB1> /xa9/xa7 <CJK>
+<U5CB3> /xa9/xa8 <CJK>
+<U5E18> /xa9/xa9 <CJK>
+<U5E1A> /xa9/xaa <CJK>
+<U5E16> /xa9/xab <CJK>
+<U5E15> /xa9/xac <CJK>
+<U5E1B> /xa9/xad <CJK>
+<U5E11> /xa9/xae <CJK>
+<U5E78> /xa9/xaf <CJK>
+<U5E9A> /xa9/xb0 <CJK>
+<U5E97> /xa9/xb1 <CJK>
+<U5E9C> /xa9/xb2 <CJK>
+<U5E95> /xa9/xb3 <CJK>
+<U5E96> /xa9/xb4 <CJK>
+<U5EF6> /xa9/xb5 <CJK>
+<U5F26> /xa9/xb6 <CJK>
+<U5F27> /xa9/xb7 <CJK>
+<U5F29> /xa9/xb8 <CJK>
+<U5F80> /xa9/xb9 <CJK>
+<U5F81> /xa9/xba <CJK>
+<U5F7F> /xa9/xbb <CJK>
+<U5F7C> /xa9/xbc <CJK>
+<U5FDD> /xa9/xbd <CJK>
+<U5FE0> /xa9/xbe <CJK>
+<U5FFD> /xa9/xbf <CJK>
+<U5FF5> /xa9/xc0 <CJK>
+<U5FFF> /xa9/xc1 <CJK>
+<U600F> /xa9/xc2 <CJK>
+<U6014> /xa9/xc3 <CJK>
+<U602F> /xa9/xc4 <CJK>
+<U6035> /xa9/xc5 <CJK>
+<U6016> /xa9/xc6 <CJK>
+<U602A> /xa9/xc7 <CJK>
+<U6015> /xa9/xc8 <CJK>
+<U6021> /xa9/xc9 <CJK>
+<U6027> /xa9/xca <CJK>
+<U6029> /xa9/xcb <CJK>
+<U602B> /xa9/xcc <CJK>
+<U601B> /xa9/xcd <CJK>
+<U6216> /xa9/xce <CJK>
+<U6215> /xa9/xcf <CJK>
+<U623F> /xa9/xd0 <CJK>
+<U623E> /xa9/xd1 <CJK>
+<U6240> /xa9/xd2 <CJK>
+<U627F> /xa9/xd3 <CJK>
+<U62C9> /xa9/xd4 <CJK>
+<U62CC> /xa9/xd5 <CJK>
+<U62C4> /xa9/xd6 <CJK>
+<U62BF> /xa9/xd7 <CJK>
+<U62C2> /xa9/xd8 <CJK>
+<U62B9> /xa9/xd9 <CJK>
+<U62D2> /xa9/xda <CJK>
+<U62DB> /xa9/xdb <CJK>
+<U62AB> /xa9/xdc <CJK>
+<U62D3> /xa9/xdd <CJK>
+<U62D4> /xa9/xde <CJK>
+<U62CB> /xa9/xdf <CJK>
+<U62C8> /xa9/xe0 <CJK>
+<U62A8> /xa9/xe1 <CJK>
+<U62BD> /xa9/xe2 <CJK>
+<U62BC> /xa9/xe3 <CJK>
+<U62D0> /xa9/xe4 <CJK>
+<U62D9> /xa9/xe5 <CJK>
+<U62C7> /xa9/xe6 <CJK>
+<U62CD> /xa9/xe7 <CJK>
+<U62B5> /xa9/xe8 <CJK>
+<U62DA> /xa9/xe9 <CJK>
+<U62B1> /xa9/xea <CJK>
+<U62D8> /xa9/xeb <CJK>
+<U62D6> /xa9/xec <CJK>
+<U62D7> /xa9/xed <CJK>
+<U62C6> /xa9/xee <CJK>
+<U62AC> /xa9/xef <CJK>
+<U62CE> /xa9/xf0 <CJK>
+<U653E> /xa9/xf1 <CJK>
+<U65A7> /xa9/xf2 <CJK>
+<U65BC> /xa9/xf3 <CJK>
+<U65FA> /xa9/xf4 <CJK>
+<U6614> /xa9/xf5 <CJK>
+<U6613> /xa9/xf6 <CJK>
+<U660C> /xa9/xf7 <CJK>
+<U6606> /xa9/xf8 <CJK>
+<U6602> /xa9/xf9 <CJK>
+<U660E> /xa9/xfa <CJK>
+<U6600> /xa9/xfb <CJK>
+<U660F> /xa9/xfc <CJK>
+<U6615> /xa9/xfd <CJK>
+<U660A> /xa9/xfe <CJK>
+<U6607> /xaa/x40 <CJK>
+<U670D> /xaa/x41 <CJK>
+<U670B> /xaa/x42 <CJK>
+<U676D> /xaa/x43 <CJK>
+<U678B> /xaa/x44 <CJK>
+<U6795> /xaa/x45 <CJK>
+<U6771> /xaa/x46 <CJK>
+<U679C> /xaa/x47 <CJK>
+<U6773> /xaa/x48 <CJK>
+<U6777> /xaa/x49 <CJK>
+<U6787> /xaa/x4a <CJK>
+<U679D> /xaa/x4b <CJK>
+<U6797> /xaa/x4c <CJK>
+<U676F> /xaa/x4d <CJK>
+<U6770> /xaa/x4e <CJK>
+<U677F> /xaa/x4f <CJK>
+<U6789> /xaa/x50 <CJK>
+<U677E> /xaa/x51 <CJK>
+<U6790> /xaa/x52 <CJK>
+<U6775> /xaa/x53 <CJK>
+<U679A> /xaa/x54 <CJK>
+<U6793> /xaa/x55 <CJK>
+<U677C> /xaa/x56 <CJK>
+<U676A> /xaa/x57 <CJK>
+<U6772> /xaa/x58 <CJK>
+<U6B23> /xaa/x59 <CJK>
+<U6B66> /xaa/x5a <CJK>
+<U6B67> /xaa/x5b <CJK>
+<U6B7F> /xaa/x5c <CJK>
+<U6C13> /xaa/x5d <CJK>
+<U6C1B> /xaa/x5e <CJK>
+<U6CE3> /xaa/x5f <CJK>
+<U6CE8> /xaa/x60 <CJK>
+<U6CF3> /xaa/x61 <CJK>
+<U6CB1> /xaa/x62 <CJK>
+<U6CCC> /xaa/x63 <CJK>
+<U6CE5> /xaa/x64 <CJK>
+<U6CB3> /xaa/x65 <CJK>
+<U6CBD> /xaa/x66 <CJK>
+<U6CBE> /xaa/x67 <CJK>
+<U6CBC> /xaa/x68 <CJK>
+<U6CE2> /xaa/x69 <CJK>
+<U6CAB> /xaa/x6a <CJK>
+<U6CD5> /xaa/x6b <CJK>
+<U6CD3> /xaa/x6c <CJK>
+<U6CB8> /xaa/x6d <CJK>
+<U6CC4> /xaa/x6e <CJK>
+<U6CB9> /xaa/x6f <CJK>
+<U6CC1> /xaa/x70 <CJK>
+<U6CAE> /xaa/x71 <CJK>
+<U6CD7> /xaa/x72 <CJK>
+<U6CC5> /xaa/x73 <CJK>
+<U6CF1> /xaa/x74 <CJK>
+<U6CBF> /xaa/x75 <CJK>
+<U6CBB> /xaa/x76 <CJK>
+<U6CE1> /xaa/x77 <CJK>
+<U6CDB> /xaa/x78 <CJK>
+<U6CCA> /xaa/x79 <CJK>
+<U6CAC> /xaa/x7a <CJK>
+<U6CEF> /xaa/x7b <CJK>
+<U6CDC> /xaa/x7c <CJK>
+<U6CD6> /xaa/x7d <CJK>
+<U6CE0> /xaa/x7e <CJK>
+<U7095> /xaa/xa1 <CJK>
+<U708E> /xaa/xa2 <CJK>
+<U7092> /xaa/xa3 <CJK>
+<U708A> /xaa/xa4 <CJK>
+<U7099> /xaa/xa5 <CJK>
+<U722C> /xaa/xa6 <CJK>
+<U722D> /xaa/xa7 <CJK>
+<U7238> /xaa/xa8 <CJK>
+<U7248> /xaa/xa9 <CJK>
+<U7267> /xaa/xaa <CJK>
+<U7269> /xaa/xab <CJK>
+<U72C0> /xaa/xac <CJK>
+<U72CE> /xaa/xad <CJK>
+<U72D9> /xaa/xae <CJK>
+<U72D7> /xaa/xaf <CJK>
+<U72D0> /xaa/xb0 <CJK>
+<U73A9> /xaa/xb1 <CJK>
+<U73A8> /xaa/xb2 <CJK>
+<U739F> /xaa/xb3 <CJK>
+<U73AB> /xaa/xb4 <CJK>
+<U73A5> /xaa/xb5 <CJK>
+<U753D> /xaa/xb6 <CJK>
+<U759D> /xaa/xb7 <CJK>
+<U7599> /xaa/xb8 <CJK>
+<U759A> /xaa/xb9 <CJK>
+<U7684> /xaa/xba <CJK>
+<U76C2> /xaa/xbb <CJK>
+<U76F2> /xaa/xbc <CJK>
+<U76F4> /xaa/xbd <CJK>
+<U77E5> /xaa/xbe <CJK>
+<U77FD> /xaa/xbf <CJK>
+<U793E> /xaa/xc0 <CJK>
+<U7940> /xaa/xc1 <CJK>
+<U7941> /xaa/xc2 <CJK>
+<U79C9> /xaa/xc3 <CJK>
+<U79C8> /xaa/xc4 <CJK>
+<U7A7A> /xaa/xc5 <CJK>
+<U7A79> /xaa/xc6 <CJK>
+<U7AFA> /xaa/xc7 <CJK>
+<U7CFE> /xaa/xc8 <CJK>
+<U7F54> /xaa/xc9 <CJK>
+<U7F8C> /xaa/xca <CJK>
+<U7F8B> /xaa/xcb <CJK>
+<U8005> /xaa/xcc <CJK>
+<U80BA> /xaa/xcd <CJK>
+<U80A5> /xaa/xce <CJK>
+<U80A2> /xaa/xcf <CJK>
+<U80B1> /xaa/xd0 <CJK>
+<U80A1> /xaa/xd1 <CJK>
+<U80AB> /xaa/xd2 <CJK>
+<U80A9> /xaa/xd3 <CJK>
+<U80B4> /xaa/xd4 <CJK>
+<U80AA> /xaa/xd5 <CJK>
+<U80AF> /xaa/xd6 <CJK>
+<U81E5> /xaa/xd7 <CJK>
+<U81FE> /xaa/xd8 <CJK>
+<U820D> /xaa/xd9 <CJK>
+<U82B3> /xaa/xda <CJK>
+<U829D> /xaa/xdb <CJK>
+<U8299> /xaa/xdc <CJK>
+<U82AD> /xaa/xdd <CJK>
+<U82BD> /xaa/xde <CJK>
+<U829F> /xaa/xdf <CJK>
+<U82B9> /xaa/xe0 <CJK>
+<U82B1> /xaa/xe1 <CJK>
+<U82AC> /xaa/xe2 <CJK>
+<U82A5> /xaa/xe3 <CJK>
+<U82AF> /xaa/xe4 <CJK>
+<U82B8> /xaa/xe5 <CJK>
+<U82A3> /xaa/xe6 <CJK>
+<U82B0> /xaa/xe7 <CJK>
+<U82BE> /xaa/xe8 <CJK>
+<U82B7> /xaa/xe9 <CJK>
+<U864E> /xaa/xea <CJK>
+<U8671> /xaa/xeb <CJK>
+<U521D> /xaa/xec <CJK>
+<U8868> /xaa/xed <CJK>
+<U8ECB> /xaa/xee <CJK>
+<U8FCE> /xaa/xef <CJK>
+<U8FD4> /xaa/xf0 <CJK>
+<U8FD1> /xaa/xf1 <CJK>
+<U90B5> /xaa/xf2 <CJK>
+<U90B8> /xaa/xf3 <CJK>
+<U90B1> /xaa/xf4 <CJK>
+<U90B6> /xaa/xf5 <CJK>
+<U91C7> /xaa/xf6 <CJK>
+<U91D1> /xaa/xf7 <CJK>
+<U9577> /xaa/xf8 <CJK>
+<U9580> /xaa/xf9 <CJK>
+<U961C> /xaa/xfa <CJK>
+<U9640> /xaa/xfb <CJK>
+<U963F> /xaa/xfc <CJK>
+<U963B> /xaa/xfd <CJK>
+<U9644> /xaa/xfe <CJK>
+<U9642> /xab/x40 <CJK>
+<U96B9> /xab/x41 <CJK>
+<U96E8> /xab/x42 <CJK>
+<U9752> /xab/x43 <CJK>
+<U975E> /xab/x44 <CJK>
+<U4E9F> /xab/x45 <CJK>
+<U4EAD> /xab/x46 <CJK>
+<U4EAE> /xab/x47 <CJK>
+<U4FE1> /xab/x48 <CJK>
+<U4FB5> /xab/x49 <CJK>
+<U4FAF> /xab/x4a <CJK>
+<U4FBF> /xab/x4b <CJK>
+<U4FE0> /xab/x4c <CJK>
+<U4FD1> /xab/x4d <CJK>
+<U4FCF> /xab/x4e <CJK>
+<U4FDD> /xab/x4f <CJK>
+<U4FC3> /xab/x50 <CJK>
+<U4FB6> /xab/x51 <CJK>
+<U4FD8> /xab/x52 <CJK>
+<U4FDF> /xab/x53 <CJK>
+<U4FCA> /xab/x54 <CJK>
+<U4FD7> /xab/x55 <CJK>
+<U4FAE> /xab/x56 <CJK>
+<U4FD0> /xab/x57 <CJK>
+<U4FC4> /xab/x58 <CJK>
+<U4FC2> /xab/x59 <CJK>
+<U4FDA> /xab/x5a <CJK>
+<U4FCE> /xab/x5b <CJK>
+<U4FDE> /xab/x5c <CJK>
+<U4FB7> /xab/x5d <CJK>
+<U5157> /xab/x5e <CJK>
+<U5192> /xab/x5f <CJK>
+<U5191> /xab/x60 <CJK>
+<U51A0> /xab/x61 <CJK>
+<U524E> /xab/x62 <CJK>
+<U5243> /xab/x63 <CJK>
+<U524A> /xab/x64 <CJK>
+<U524D> /xab/x65 <CJK>
+<U524C> /xab/x66 <CJK>
+<U524B> /xab/x67 <CJK>
+<U5247> /xab/x68 <CJK>
+<U52C7> /xab/x69 <CJK>
+<U52C9> /xab/x6a <CJK>
+<U52C3> /xab/x6b <CJK>
+<U52C1> /xab/x6c <CJK>
+<U530D> /xab/x6d <CJK>
+<U5357> /xab/x6e <CJK>
+<U537B> /xab/x6f <CJK>
+<U539A> /xab/x70 <CJK>
+<U53DB> /xab/x71 <CJK>
+<U54AC> /xab/x72 <CJK>
+<U54C0> /xab/x73 <CJK>
+<U54A8> /xab/x74 <CJK>
+<U54CE> /xab/x75 <CJK>
+<U54C9> /xab/x76 <CJK>
+<U54B8> /xab/x77 <CJK>
+<U54A6> /xab/x78 <CJK>
+<U54B3> /xab/x79 <CJK>
+<U54C7> /xab/x7a <CJK>
+<U54C2> /xab/x7b <CJK>
+<U54BD> /xab/x7c <CJK>
+<U54AA> /xab/x7d <CJK>
+<U54C1> /xab/x7e <CJK>
+<U54C4> /xab/xa1 <CJK>
+<U54C8> /xab/xa2 <CJK>
+<U54AF> /xab/xa3 <CJK>
+<U54AB> /xab/xa4 <CJK>
+<U54B1> /xab/xa5 <CJK>
+<U54BB> /xab/xa6 <CJK>
+<U54A9> /xab/xa7 <CJK>
+<U54A7> /xab/xa8 <CJK>
+<U54BF> /xab/xa9 <CJK>
+<U56FF> /xab/xaa <CJK>
+<U5782> /xab/xab <CJK>
+<U578B> /xab/xac <CJK>
+<U57A0> /xab/xad <CJK>
+<U57A3> /xab/xae <CJK>
+<U57A2> /xab/xaf <CJK>
+<U57CE> /xab/xb0 <CJK>
+<U57AE> /xab/xb1 <CJK>
+<U5793> /xab/xb2 <CJK>
+<U5955> /xab/xb3 <CJK>
+<U5951> /xab/xb4 <CJK>
+<U594F> /xab/xb5 <CJK>
+<U594E> /xab/xb6 <CJK>
+<U5950> /xab/xb7 <CJK>
+<U59DC> /xab/xb8 <CJK>
+<U59D8> /xab/xb9 <CJK>
+<U59FF> /xab/xba <CJK>
+<U59E3> /xab/xbb <CJK>
+<U59E8> /xab/xbc <CJK>
+<U5A03> /xab/xbd <CJK>
+<U59E5> /xab/xbe <CJK>
+<U59EA> /xab/xbf <CJK>
+<U59DA> /xab/xc0 <CJK>
+<U59E6> /xab/xc1 <CJK>
+<U5A01> /xab/xc2 <CJK>
+<U59FB> /xab/xc3 <CJK>
+<U5B69> /xab/xc4 <CJK>
+<U5BA3> /xab/xc5 <CJK>
+<U5BA6> /xab/xc6 <CJK>
+<U5BA4> /xab/xc7 <CJK>
+<U5BA2> /xab/xc8 <CJK>
+<U5BA5> /xab/xc9 <CJK>
+<U5C01> /xab/xca <CJK>
+<U5C4E> /xab/xcb <CJK>
+<U5C4F> /xab/xcc <CJK>
+<U5C4D> /xab/xcd <CJK>
+<U5C4B> /xab/xce <CJK>
+<U5CD9> /xab/xcf <CJK>
+<U5CD2> /xab/xd0 <CJK>
+<U5DF7> /xab/xd1 <CJK>
+<U5E1D> /xab/xd2 <CJK>
+<U5E25> /xab/xd3 <CJK>
+<U5E1F> /xab/xd4 <CJK>
+<U5E7D> /xab/xd5 <CJK>
+<U5EA0> /xab/xd6 <CJK>
+<U5EA6> /xab/xd7 <CJK>
+<U5EFA> /xab/xd8 <CJK>
+<U5F08> /xab/xd9 <CJK>
+<U5F2D> /xab/xda <CJK>
+<U5F65> /xab/xdb <CJK>
+<U5F88> /xab/xdc <CJK>
+<U5F85> /xab/xdd <CJK>
+<U5F8A> /xab/xde <CJK>
+<U5F8B> /xab/xdf <CJK>
+<U5F87> /xab/xe0 <CJK>
+<U5F8C> /xab/xe1 <CJK>
+<U5F89> /xab/xe2 <CJK>
+<U6012> /xab/xe3 <CJK>
+<U601D> /xab/xe4 <CJK>
+<U6020> /xab/xe5 <CJK>
+<U6025> /xab/xe6 <CJK>
+<U600E> /xab/xe7 <CJK>
+<U6028> /xab/xe8 <CJK>
+<U604D> /xab/xe9 <CJK>
+<U6070> /xab/xea <CJK>
+<U6068> /xab/xeb <CJK>
+<U6062> /xab/xec <CJK>
+<U6046> /xab/xed <CJK>
+<U6043> /xab/xee <CJK>
+<U606C> /xab/xef <CJK>
+<U606B> /xab/xf0 <CJK>
+<U606A> /xab/xf1 <CJK>
+<U6064> /xab/xf2 <CJK>
+<U6241> /xab/xf3 <CJK>
+<U62DC> /xab/xf4 <CJK>
+<U6316> /xab/xf5 <CJK>
+<U6309> /xab/xf6 <CJK>
+<U62FC> /xab/xf7 <CJK>
+<U62ED> /xab/xf8 <CJK>
+<U6301> /xab/xf9 <CJK>
+<U62EE> /xab/xfa <CJK>
+<U62FD> /xab/xfb <CJK>
+<U6307> /xab/xfc <CJK>
+<U62F1> /xab/xfd <CJK>
+<U62F7> /xab/xfe <CJK>
+<U62EF> /xac/x40 <CJK>
+<U62EC> /xac/x41 <CJK>
+<U62FE> /xac/x42 <CJK>
+<U62F4> /xac/x43 <CJK>
+<U6311> /xac/x44 <CJK>
+<U6302> /xac/x45 <CJK>
+<U653F> /xac/x46 <CJK>
+<U6545> /xac/x47 <CJK>
+<U65AB> /xac/x48 <CJK>
+<U65BD> /xac/x49 <CJK>
+<U65E2> /xac/x4a <CJK>
+<U6625> /xac/x4b <CJK>
+<U662D> /xac/x4c <CJK>
+<U6620> /xac/x4d <CJK>
+<U6627> /xac/x4e <CJK>
+<U662F> /xac/x4f <CJK>
+<U661F> /xac/x50 <CJK>
+<U6628> /xac/x51 <CJK>
+<U6631> /xac/x52 <CJK>
+<U6624> /xac/x53 <CJK>
+<U66F7> /xac/x54 <CJK>
+<U67FF> /xac/x55 <CJK>
+<U67D3> /xac/x56 <CJK>
+<U67F1> /xac/x57 <CJK>
+<U67D4> /xac/x58 <CJK>
+<U67D0> /xac/x59 <CJK>
+<U67EC> /xac/x5a <CJK>
+<U67B6> /xac/x5b <CJK>
+<U67AF> /xac/x5c <CJK>
+<U67F5> /xac/x5d <CJK>
+<U67E9> /xac/x5e <CJK>
+<U67EF> /xac/x5f <CJK>
+<U67C4> /xac/x60 <CJK>
+<U67D1> /xac/x61 <CJK>
+<U67B4> /xac/x62 <CJK>
+<U67DA> /xac/x63 <CJK>
+<U67E5> /xac/x64 <CJK>
+<U67B8> /xac/x65 <CJK>
+<U67CF> /xac/x66 <CJK>
+<U67DE> /xac/x67 <CJK>
+<U67F3> /xac/x68 <CJK>
+<U67B0> /xac/x69 <CJK>
+<U67D9> /xac/x6a <CJK>
+<U67E2> /xac/x6b <CJK>
+<U67DD> /xac/x6c <CJK>
+<U67D2> /xac/x6d <CJK>
+<U6B6A> /xac/x6e <CJK>
+<U6B83> /xac/x6f <CJK>
+<U6B86> /xac/x70 <CJK>
+<U6BB5> /xac/x71 <CJK>
+<U6BD2> /xac/x72 <CJK>
+<U6BD7> /xac/x73 <CJK>
+<U6C1F> /xac/x74 <CJK>
+<U6CC9> /xac/x75 <CJK>
+<U6D0B> /xac/x76 <CJK>
+<U6D32> /xac/x77 <CJK>
+<U6D2A> /xac/x78 <CJK>
+<U6D41> /xac/x79 <CJK>
+<U6D25> /xac/x7a <CJK>
+<U6D0C> /xac/x7b <CJK>
+<U6D31> /xac/x7c <CJK>
+<U6D1E> /xac/x7d <CJK>
+<U6D17> /xac/x7e <CJK>
+<U6D3B> /xac/xa1 <CJK>
+<U6D3D> /xac/xa2 <CJK>
+<U6D3E> /xac/xa3 <CJK>
+<U6D36> /xac/xa4 <CJK>
+<U6D1B> /xac/xa5 <CJK>
+<U6CF5> /xac/xa6 <CJK>
+<U6D39> /xac/xa7 <CJK>
+<U6D27> /xac/xa8 <CJK>
+<U6D38> /xac/xa9 <CJK>
+<U6D29> /xac/xaa <CJK>
+<U6D2E> /xac/xab <CJK>
+<U6D35> /xac/xac <CJK>
+<U6D0E> /xac/xad <CJK>
+<U6D2B> /xac/xae <CJK>
+<U70AB> /xac/xaf <CJK>
+<U70BA> /xac/xb0 <CJK>
+<U70B3> /xac/xb1 <CJK>
+<U70AC> /xac/xb2 <CJK>
+<U70AF> /xac/xb3 <CJK>
+<U70AD> /xac/xb4 <CJK>
+<U70B8> /xac/xb5 <CJK>
+<U70AE> /xac/xb6 <CJK>
+<U70A4> /xac/xb7 <CJK>
+<U7230> /xac/xb8 <CJK>
+<U7272> /xac/xb9 <CJK>
+<U726F> /xac/xba <CJK>
+<U7274> /xac/xbb <CJK>
+<U72E9> /xac/xbc <CJK>
+<U72E0> /xac/xbd <CJK>
+<U72E1> /xac/xbe <CJK>
+<U73B7> /xac/xbf <CJK>
+<U73CA> /xac/xc0 <CJK>
+<U73BB> /xac/xc1 <CJK>
+<U73B2> /xac/xc2 <CJK>
+<U73CD> /xac/xc3 <CJK>
+<U73C0> /xac/xc4 <CJK>
+<U73B3> /xac/xc5 <CJK>
+<U751A> /xac/xc6 <CJK>
+<U752D> /xac/xc7 <CJK>
+<U754F> /xac/xc8 <CJK>
+<U754C> /xac/xc9 <CJK>
+<U754E> /xac/xca <CJK>
+<U754B> /xac/xcb <CJK>
+<U75AB> /xac/xcc <CJK>
+<U75A4> /xac/xcd <CJK>
+<U75A5> /xac/xce <CJK>
+<U75A2> /xac/xcf <CJK>
+<U75A3> /xac/xd0 <CJK>
+<U7678> /xac/xd1 <CJK>
+<U7686> /xac/xd2 <CJK>
+<U7687> /xac/xd3 <CJK>
+<U7688> /xac/xd4 <CJK>
+<U76C8> /xac/xd5 <CJK>
+<U76C6> /xac/xd6 <CJK>
+<U76C3> /xac/xd7 <CJK>
+<U76C5> /xac/xd8 <CJK>
+<U7701> /xac/xd9 <CJK>
+<U76F9> /xac/xda <CJK>
+<U76F8> /xac/xdb <CJK>
+<U7709> /xac/xdc <CJK>
+<U770B> /xac/xdd <CJK>
+<U76FE> /xac/xde <CJK>
+<U76FC> /xac/xdf <CJK>
+<U7707> /xac/xe0 <CJK>
+<U77DC> /xac/xe1 <CJK>
+<U7802> /xac/xe2 <CJK>
+<U7814> /xac/xe3 <CJK>
+<U780C> /xac/xe4 <CJK>
+<U780D> /xac/xe5 <CJK>
+<U7946> /xac/xe6 <CJK>
+<U7949> /xac/xe7 <CJK>
+<U7948> /xac/xe8 <CJK>
+<U7947> /xac/xe9 <CJK>
+<U79B9> /xac/xea <CJK>
+<U79BA> /xac/xeb <CJK>
+<U79D1> /xac/xec <CJK>
+<U79D2> /xac/xed <CJK>
+<U79CB> /xac/xee <CJK>
+<U7A7F> /xac/xef <CJK>
+<U7A81> /xac/xf0 <CJK>
+<U7AFF> /xac/xf1 <CJK>
+<U7AFD> /xac/xf2 <CJK>
+<U7C7D> /xac/xf3 <CJK>
+<U7D02> /xac/xf4 <CJK>
+<U7D05> /xac/xf5 <CJK>
+<U7D00> /xac/xf6 <CJK>
+<U7D09> /xac/xf7 <CJK>
+<U7D07> /xac/xf8 <CJK>
+<U7D04> /xac/xf9 <CJK>
+<U7D06> /xac/xfa <CJK>
+<U7F38> /xac/xfb <CJK>
+<U7F8E> /xac/xfc <CJK>
+<U7FBF> /xac/xfd <CJK>
+<U8004> /xac/xfe <CJK>
+<U8010> /xad/x40 <CJK>
+<U800D> /xad/x41 <CJK>
+<U8011> /xad/x42 <CJK>
+<U8036> /xad/x43 <CJK>
+<U80D6> /xad/x44 <CJK>
+<U80E5> /xad/x45 <CJK>
+<U80DA> /xad/x46 <CJK>
+<U80C3> /xad/x47 <CJK>
+<U80C4> /xad/x48 <CJK>
+<U80CC> /xad/x49 <CJK>
+<U80E1> /xad/x4a <CJK>
+<U80DB> /xad/x4b <CJK>
+<U80CE> /xad/x4c <CJK>
+<U80DE> /xad/x4d <CJK>
+<U80E4> /xad/x4e <CJK>
+<U80DD> /xad/x4f <CJK>
+<U81F4> /xad/x50 <CJK>
+<U8222> /xad/x51 <CJK>
+<U82E7> /xad/x52 <CJK>
+<U8303> /xad/x53 <CJK>
+<U8305> /xad/x54 <CJK>
+<U82E3> /xad/x55 <CJK>
+<U82DB> /xad/x56 <CJK>
+<U82E6> /xad/x57 <CJK>
+<U8304> /xad/x58 <CJK>
+<U82E5> /xad/x59 <CJK>
+<U8302> /xad/x5a <CJK>
+<U8309> /xad/x5b <CJK>
+<U82D2> /xad/x5c <CJK>
+<U82D7> /xad/x5d <CJK>
+<U82F1> /xad/x5e <CJK>
+<U8301> /xad/x5f <CJK>
+<U82DC> /xad/x60 <CJK>
+<U82D4> /xad/x61 <CJK>
+<U82D1> /xad/x62 <CJK>
+<U82DE> /xad/x63 <CJK>
+<U82D3> /xad/x64 <CJK>
+<U82DF> /xad/x65 <CJK>
+<U82EF> /xad/x66 <CJK>
+<U8306> /xad/x67 <CJK>
+<U8650> /xad/x68 <CJK>
+<U8679> /xad/x69 <CJK>
+<U867B> /xad/x6a <CJK>
+<U867A> /xad/x6b <CJK>
+<U884D> /xad/x6c <CJK>
+<U886B> /xad/x6d <CJK>
+<U8981> /xad/x6e <CJK>
+<U89D4> /xad/x6f <CJK>
+<U8A08> /xad/x70 <CJK>
+<U8A02> /xad/x71 <CJK>
+<U8A03> /xad/x72 <CJK>
+<U8C9E> /xad/x73 <CJK>
+<U8CA0> /xad/x74 <CJK>
+<U8D74> /xad/x75 <CJK>
+<U8D73> /xad/x76 <CJK>
+<U8DB4> /xad/x77 <CJK>
+<U8ECD> /xad/x78 <CJK>
+<U8ECC> /xad/x79 <CJK>
+<U8FF0> /xad/x7a <CJK>
+<U8FE6> /xad/x7b <CJK>
+<U8FE2> /xad/x7c <CJK>
+<U8FEA> /xad/x7d <CJK>
+<U8FE5> /xad/x7e <CJK>
+<U8FED> /xad/xa1 <CJK>
+<U8FEB> /xad/xa2 <CJK>
+<U8FE4> /xad/xa3 <CJK>
+<U8FE8> /xad/xa4 <CJK>
+<U90CA> /xad/xa5 <CJK>
+<U90CE> /xad/xa6 <CJK>
+<U90C1> /xad/xa7 <CJK>
+<U90C3> /xad/xa8 <CJK>
+<U914B> /xad/xa9 <CJK>
+<U914A> /xad/xaa <CJK>
+<U91CD> /xad/xab <CJK>
+<U9582> /xad/xac <CJK>
+<U9650> /xad/xad <CJK>
+<U964B> /xad/xae <CJK>
+<U964C> /xad/xaf <CJK>
+<U964D> /xad/xb0 <CJK>
+<U9762> /xad/xb1 <CJK>
+<U9769> /xad/xb2 <CJK>
+<U97CB> /xad/xb3 <CJK>
+<U97ED> /xad/xb4 <CJK>
+<U97F3> /xad/xb5 <CJK>
+<U9801> /xad/xb6 <CJK>
+<U98A8> /xad/xb7 <CJK>
+<U98DB> /xad/xb8 <CJK>
+<U98DF> /xad/xb9 <CJK>
+<U9996> /xad/xba <CJK>
+<U9999> /xad/xbb <CJK>
+<U4E58> /xad/xbc <CJK>
+<U4EB3> /xad/xbd <CJK>
+<U500C> /xad/xbe <CJK>
+<U500D> /xad/xbf <CJK>
+<U5023> /xad/xc0 <CJK>
+<U4FEF> /xad/xc1 <CJK>
+<U5026> /xad/xc2 <CJK>
+<U5025> /xad/xc3 <CJK>
+<U4FF8> /xad/xc4 <CJK>
+<U5029> /xad/xc5 <CJK>
+<U5016> /xad/xc6 <CJK>
+<U5006> /xad/xc7 <CJK>
+<U503C> /xad/xc8 <CJK>
+<U501F> /xad/xc9 <CJK>
+<U501A> /xad/xca <CJK>
+<U5012> /xad/xcb <CJK>
+<U5011> /xad/xcc <CJK>
+<U4FFA> /xad/xcd <CJK>
+<U5000> /xad/xce <CJK>
+<U5014> /xad/xcf <CJK>
+<U5028> /xad/xd0 <CJK>
+<U4FF1> /xad/xd1 <CJK>
+<U5021> /xad/xd2 <CJK>
+<U500B> /xad/xd3 <CJK>
+<U5019> /xad/xd4 <CJK>
+<U5018> /xad/xd5 <CJK>
+<U4FF3> /xad/xd6 <CJK>
+<U4FEE> /xad/xd7 <CJK>
+<U502D> /xad/xd8 <CJK>
+<U502A> /xad/xd9 <CJK>
+<U4FFE> /xad/xda <CJK>
+<U502B> /xad/xdb <CJK>
+<U5009> /xad/xdc <CJK>
+<U517C> /xad/xdd <CJK>
+<U51A4> /xad/xde <CJK>
+<U51A5> /xad/xdf <CJK>
+<U51A2> /xad/xe0 <CJK>
+<U51CD> /xad/xe1 <CJK>
+<U51CC> /xad/xe2 <CJK>
+<U51C6> /xad/xe3 <CJK>
+<U51CB> /xad/xe4 <CJK>
+<U5256> /xad/xe5 <CJK>
+<U525C> /xad/xe6 <CJK>
+<U5254> /xad/xe7 <CJK>
+<U525B> /xad/xe8 <CJK>
+<U525D> /xad/xe9 <CJK>
+<U532A> /xad/xea <CJK>
+<U537F> /xad/xeb <CJK>
+<U539F> /xad/xec <CJK>
+<U539D> /xad/xed <CJK>
+<U53DF> /xad/xee <CJK>
+<U54E8> /xad/xef <CJK>
+<U5510> /xad/xf0 <CJK>
+<U5501> /xad/xf1 <CJK>
+<U5537> /xad/xf2 <CJK>
+<U54FC> /xad/xf3 <CJK>
+<U54E5> /xad/xf4 <CJK>
+<U54F2> /xad/xf5 <CJK>
+<U5506> /xad/xf6 <CJK>
+<U54FA> /xad/xf7 <CJK>
+<U5514> /xad/xf8 <CJK>
+<U54E9> /xad/xf9 <CJK>
+<U54ED> /xad/xfa <CJK>
+<U54E1> /xad/xfb <CJK>
+<U5509> /xad/xfc <CJK>
+<U54EE> /xad/xfd <CJK>
+<U54EA> /xad/xfe <CJK>
+<U54E6> /xae/x40 <CJK>
+<U5527> /xae/x41 <CJK>
+<U5507> /xae/x42 <CJK>
+<U54FD> /xae/x43 <CJK>
+<U550F> /xae/x44 <CJK>
+<U5703> /xae/x45 <CJK>
+<U5704> /xae/x46 <CJK>
+<U57C2> /xae/x47 <CJK>
+<U57D4> /xae/x48 <CJK>
+<U57CB> /xae/x49 <CJK>
+<U57C3> /xae/x4a <CJK>
+<U5809> /xae/x4b <CJK>
+<U590F> /xae/x4c <CJK>
+<U5957> /xae/x4d <CJK>
+<U5958> /xae/x4e <CJK>
+<U595A> /xae/x4f <CJK>
+<U5A11> /xae/x50 <CJK>
+<U5A18> /xae/x51 <CJK>
+<U5A1C> /xae/x52 <CJK>
+<U5A1F> /xae/x53 <CJK>
+<U5A1B> /xae/x54 <CJK>
+<U5A13> /xae/x55 <CJK>
+<U59EC> /xae/x56 <CJK>
+<U5A20> /xae/x57 <CJK>
+<U5A23> /xae/x58 <CJK>
+<U5A29> /xae/x59 <CJK>
+<U5A25> /xae/x5a <CJK>
+<U5A0C> /xae/x5b <CJK>
+<U5A09> /xae/x5c <CJK>
+<U5B6B> /xae/x5d <CJK>
+<U5C58> /xae/x5e <CJK>
+<U5BB0> /xae/x5f <CJK>
+<U5BB3> /xae/x60 <CJK>
+<U5BB6> /xae/x61 <CJK>
+<U5BB4> /xae/x62 <CJK>
+<U5BAE> /xae/x63 <CJK>
+<U5BB5> /xae/x64 <CJK>
+<U5BB9> /xae/x65 <CJK>
+<U5BB8> /xae/x66 <CJK>
+<U5C04> /xae/x67 <CJK>
+<U5C51> /xae/x68 <CJK>
+<U5C55> /xae/x69 <CJK>
+<U5C50> /xae/x6a <CJK>
+<U5CED> /xae/x6b <CJK>
+<U5CFD> /xae/x6c <CJK>
+<U5CFB> /xae/x6d <CJK>
+<U5CEA> /xae/x6e <CJK>
+<U5CE8> /xae/x6f <CJK>
+<U5CF0> /xae/x70 <CJK>
+<U5CF6> /xae/x71 <CJK>
+<U5D01> /xae/x72 <CJK>
+<U5CF4> /xae/x73 <CJK>
+<U5DEE> /xae/x74 <CJK>
+<U5E2D> /xae/x75 <CJK>
+<U5E2B> /xae/x76 <CJK>
+<U5EAB> /xae/x77 <CJK>
+<U5EAD> /xae/x78 <CJK>
+<U5EA7> /xae/x79 <CJK>
+<U5F31> /xae/x7a <CJK>
+<U5F92> /xae/x7b <CJK>
+<U5F91> /xae/x7c <CJK>
+<U5F90> /xae/x7d <CJK>
+<U6059> /xae/x7e <CJK>
+<U6063> /xae/xa1 <CJK>
+<U6065> /xae/xa2 <CJK>
+<U6050> /xae/xa3 <CJK>
+<U6055> /xae/xa4 <CJK>
+<U606D> /xae/xa5 <CJK>
+<U6069> /xae/xa6 <CJK>
+<U606F> /xae/xa7 <CJK>
+<U6084> /xae/xa8 <CJK>
+<U609F> /xae/xa9 <CJK>
+<U609A> /xae/xaa <CJK>
+<U608D> /xae/xab <CJK>
+<U6094> /xae/xac <CJK>
+<U608C> /xae/xad <CJK>
+<U6085> /xae/xae <CJK>
+<U6096> /xae/xaf <CJK>
+<U6247> /xae/xb0 <CJK>
+<U62F3> /xae/xb1 <CJK>
+<U6308> /xae/xb2 <CJK>
+<U62FF> /xae/xb3 <CJK>
+<U634E> /xae/xb4 <CJK>
+<U633E> /xae/xb5 <CJK>
+<U632F> /xae/xb6 <CJK>
+<U6355> /xae/xb7 <CJK>
+<U6342> /xae/xb8 <CJK>
+<U6346> /xae/xb9 <CJK>
+<U634F> /xae/xba <CJK>
+<U6349> /xae/xbb <CJK>
+<U633A> /xae/xbc <CJK>
+<U6350> /xae/xbd <CJK>
+<U633D> /xae/xbe <CJK>
+<U632A> /xae/xbf <CJK>
+<U632B> /xae/xc0 <CJK>
+<U6328> /xae/xc1 <CJK>
+<U634D> /xae/xc2 <CJK>
+<U634C> /xae/xc3 <CJK>
+<U6548> /xae/xc4 <CJK>
+<U6549> /xae/xc5 <CJK>
+<U6599> /xae/xc6 <CJK>
+<U65C1> /xae/xc7 <CJK>
+<U65C5> /xae/xc8 <CJK>
+<U6642> /xae/xc9 <CJK>
+<U6649> /xae/xca <CJK>
+<U664F> /xae/xcb <CJK>
+<U6643> /xae/xcc <CJK>
+<U6652> /xae/xcd <CJK>
+<U664C> /xae/xce <CJK>
+<U6645> /xae/xcf <CJK>
+<U6641> /xae/xd0 <CJK>
+<U66F8> /xae/xd1 <CJK>
+<U6714> /xae/xd2 <CJK>
+<U6715> /xae/xd3 <CJK>
+<U6717> /xae/xd4 <CJK>
+<U6821> /xae/xd5 <CJK>
+<U6838> /xae/xd6 <CJK>
+<U6848> /xae/xd7 <CJK>
+<U6846> /xae/xd8 <CJK>
+<U6853> /xae/xd9 <CJK>
+<U6839> /xae/xda <CJK>
+<U6842> /xae/xdb <CJK>
+<U6854> /xae/xdc <CJK>
+<U6829> /xae/xdd <CJK>
+<U68B3> /xae/xde <CJK>
+<U6817> /xae/xdf <CJK>
+<U684C> /xae/xe0 <CJK>
+<U6851> /xae/xe1 <CJK>
+<U683D> /xae/xe2 <CJK>
+<U67F4> /xae/xe3 <CJK>
+<U6850> /xae/xe4 <CJK>
+<U6840> /xae/xe5 <CJK>
+<U683C> /xae/xe6 <CJK>
+<U6843> /xae/xe7 <CJK>
+<U682A> /xae/xe8 <CJK>
+<U6845> /xae/xe9 <CJK>
+<U6813> /xae/xea <CJK>
+<U6818> /xae/xeb <CJK>
+<U6841> /xae/xec <CJK>
+<U6B8A> /xae/xed <CJK>
+<U6B89> /xae/xee <CJK>
+<U6BB7> /xae/xef <CJK>
+<U6C23> /xae/xf0 <CJK>
+<U6C27> /xae/xf1 <CJK>
+<U6C28> /xae/xf2 <CJK>
+<U6C26> /xae/xf3 <CJK>
+<U6C24> /xae/xf4 <CJK>
+<U6CF0> /xae/xf5 <CJK>
+<U6D6A> /xae/xf6 <CJK>
+<U6D95> /xae/xf7 <CJK>
+<U6D88> /xae/xf8 <CJK>
+<U6D87> /xae/xf9 <CJK>
+<U6D66> /xae/xfa <CJK>
+<U6D78> /xae/xfb <CJK>
+<U6D77> /xae/xfc <CJK>
+<U6D59> /xae/xfd <CJK>
+<U6D93> /xae/xfe <CJK>
+<U6D6C> /xaf/x40 <CJK>
+<U6D89> /xaf/x41 <CJK>
+<U6D6E> /xaf/x42 <CJK>
+<U6D5A> /xaf/x43 <CJK>
+<U6D74> /xaf/x44 <CJK>
+<U6D69> /xaf/x45 <CJK>
+<U6D8C> /xaf/x46 <CJK>
+<U6D8A> /xaf/x47 <CJK>
+<U6D79> /xaf/x48 <CJK>
+<U6D85> /xaf/x49 <CJK>
+<U6D65> /xaf/x4a <CJK>
+<U6D94> /xaf/x4b <CJK>
+<U70CA> /xaf/x4c <CJK>
+<U70D8> /xaf/x4d <CJK>
+<U70E4> /xaf/x4e <CJK>
+<U70D9> /xaf/x4f <CJK>
+<U70C8> /xaf/x50 <CJK>
+<U70CF> /xaf/x51 <CJK>
+<U7239> /xaf/x52 <CJK>
+<U7279> /xaf/x53 <CJK>
+<U72FC> /xaf/x54 <CJK>
+<U72F9> /xaf/x55 <CJK>
+<U72FD> /xaf/x56 <CJK>
+<U72F8> /xaf/x57 <CJK>
+<U72F7> /xaf/x58 <CJK>
+<U7386> /xaf/x59 <CJK>
+<U73ED> /xaf/x5a <CJK>
+<U7409> /xaf/x5b <CJK>
+<U73EE> /xaf/x5c <CJK>
+<U73E0> /xaf/x5d <CJK>
+<U73EA> /xaf/x5e <CJK>
+<U73DE> /xaf/x5f <CJK>
+<U7554> /xaf/x60 <CJK>
+<U755D> /xaf/x61 <CJK>
+<U755C> /xaf/x62 <CJK>
+<U755A> /xaf/x63 <CJK>
+<U7559> /xaf/x64 <CJK>
+<U75BE> /xaf/x65 <CJK>
+<U75C5> /xaf/x66 <CJK>
+<U75C7> /xaf/x67 <CJK>
+<U75B2> /xaf/x68 <CJK>
+<U75B3> /xaf/x69 <CJK>
+<U75BD> /xaf/x6a <CJK>
+<U75BC> /xaf/x6b <CJK>
+<U75B9> /xaf/x6c <CJK>
+<U75C2> /xaf/x6d <CJK>
+<U75B8> /xaf/x6e <CJK>
+<U768B> /xaf/x6f <CJK>
+<U76B0> /xaf/x70 <CJK>
+<U76CA> /xaf/x71 <CJK>
+<U76CD> /xaf/x72 <CJK>
+<U76CE> /xaf/x73 <CJK>
+<U7729> /xaf/x74 <CJK>
+<U771F> /xaf/x75 <CJK>
+<U7720> /xaf/x76 <CJK>
+<U7728> /xaf/x77 <CJK>
+<U77E9> /xaf/x78 <CJK>
+<U7830> /xaf/x79 <CJK>
+<U7827> /xaf/x7a <CJK>
+<U7838> /xaf/x7b <CJK>
+<U781D> /xaf/x7c <CJK>
+<U7834> /xaf/x7d <CJK>
+<U7837> /xaf/x7e <CJK>
+<U7825> /xaf/xa1 <CJK>
+<U782D> /xaf/xa2 <CJK>
+<U7820> /xaf/xa3 <CJK>
+<U781F> /xaf/xa4 <CJK>
+<U7832> /xaf/xa5 <CJK>
+<U7955> /xaf/xa6 <CJK>
+<U7950> /xaf/xa7 <CJK>
+<U7960> /xaf/xa8 <CJK>
+<U795F> /xaf/xa9 <CJK>
+<U7956> /xaf/xaa <CJK>
+<U795E> /xaf/xab <CJK>
+<U795D> /xaf/xac <CJK>
+<U7957> /xaf/xad <CJK>
+<U795A> /xaf/xae <CJK>
+<U79E4> /xaf/xaf <CJK>
+<U79E3> /xaf/xb0 <CJK>
+<U79E7> /xaf/xb1 <CJK>
+<U79DF> /xaf/xb2 <CJK>
+<U79E6> /xaf/xb3 <CJK>
+<U79E9> /xaf/xb4 <CJK>
+<U79D8> /xaf/xb5 <CJK>
+<U7A84> /xaf/xb6 <CJK>
+<U7A88> /xaf/xb7 <CJK>
+<U7AD9> /xaf/xb8 <CJK>
+<U7B06> /xaf/xb9 <CJK>
+<U7B11> /xaf/xba <CJK>
+<U7C89> /xaf/xbb <CJK>
+<U7D21> /xaf/xbc <CJK>
+<U7D17> /xaf/xbd <CJK>
+<U7D0B> /xaf/xbe <CJK>
+<U7D0A> /xaf/xbf <CJK>
+<U7D20> /xaf/xc0 <CJK>
+<U7D22> /xaf/xc1 <CJK>
+<U7D14> /xaf/xc2 <CJK>
+<U7D10> /xaf/xc3 <CJK>
+<U7D15> /xaf/xc4 <CJK>
+<U7D1A> /xaf/xc5 <CJK>
+<U7D1C> /xaf/xc6 <CJK>
+<U7D0D> /xaf/xc7 <CJK>
+<U7D19> /xaf/xc8 <CJK>
+<U7D1B> /xaf/xc9 <CJK>
+<U7F3A> /xaf/xca <CJK>
+<U7F5F> /xaf/xcb <CJK>
+<U7F94> /xaf/xcc <CJK>
+<U7FC5> /xaf/xcd <CJK>
+<U7FC1> /xaf/xce <CJK>
+<U8006> /xaf/xcf <CJK>
+<U8018> /xaf/xd0 <CJK>
+<U8015> /xaf/xd1 <CJK>
+<U8019> /xaf/xd2 <CJK>
+<U8017> /xaf/xd3 <CJK>
+<U803D> /xaf/xd4 <CJK>
+<U803F> /xaf/xd5 <CJK>
+<U80F1> /xaf/xd6 <CJK>
+<U8102> /xaf/xd7 <CJK>
+<U80F0> /xaf/xd8 <CJK>
+<U8105> /xaf/xd9 <CJK>
+<U80ED> /xaf/xda <CJK>
+<U80F4> /xaf/xdb <CJK>
+<U8106> /xaf/xdc <CJK>
+<U80F8> /xaf/xdd <CJK>
+<U80F3> /xaf/xde <CJK>
+<U8108> /xaf/xdf <CJK>
+<U80FD> /xaf/xe0 <CJK>
+<U810A> /xaf/xe1 <CJK>
+<U80FC> /xaf/xe2 <CJK>
+<U80EF> /xaf/xe3 <CJK>
+<U81ED> /xaf/xe4 <CJK>
+<U81EC> /xaf/xe5 <CJK>
+<U8200> /xaf/xe6 <CJK>
+<U8210> /xaf/xe7 <CJK>
+<U822A> /xaf/xe8 <CJK>
+<U822B> /xaf/xe9 <CJK>
+<U8228> /xaf/xea <CJK>
+<U822C> /xaf/xeb <CJK>
+<U82BB> /xaf/xec <CJK>
+<U832B> /xaf/xed <CJK>
+<U8352> /xaf/xee <CJK>
+<U8354> /xaf/xef <CJK>
+<U834A> /xaf/xf0 <CJK>
+<U8338> /xaf/xf1 <CJK>
+<U8350> /xaf/xf2 <CJK>
+<U8349> /xaf/xf3 <CJK>
+<U8335> /xaf/xf4 <CJK>
+<U8334> /xaf/xf5 <CJK>
+<U834F> /xaf/xf6 <CJK>
+<U8332> /xaf/xf7 <CJK>
+<U8339> /xaf/xf8 <CJK>
+<U8336> /xaf/xf9 <CJK>
+<U8317> /xaf/xfa <CJK>
+<U8340> /xaf/xfb <CJK>
+<U8331> /xaf/xfc <CJK>
+<U8328> /xaf/xfd <CJK>
+<U8343> /xaf/xfe <CJK>
+<U8654> /xb0/x40 <CJK>
+<U868A> /xb0/x41 <CJK>
+<U86AA> /xb0/x42 <CJK>
+<U8693> /xb0/x43 <CJK>
+<U86A4> /xb0/x44 <CJK>
+<U86A9> /xb0/x45 <CJK>
+<U868C> /xb0/x46 <CJK>
+<U86A3> /xb0/x47 <CJK>
+<U869C> /xb0/x48 <CJK>
+<U8870> /xb0/x49 <CJK>
+<U8877> /xb0/x4a <CJK>
+<U8881> /xb0/x4b <CJK>
+<U8882> /xb0/x4c <CJK>
+<U887D> /xb0/x4d <CJK>
+<U8879> /xb0/x4e <CJK>
+<U8A18> /xb0/x4f <CJK>
+<U8A10> /xb0/x50 <CJK>
+<U8A0E> /xb0/x51 <CJK>
+<U8A0C> /xb0/x52 <CJK>
+<U8A15> /xb0/x53 <CJK>
+<U8A0A> /xb0/x54 <CJK>
+<U8A17> /xb0/x55 <CJK>
+<U8A13> /xb0/x56 <CJK>
+<U8A16> /xb0/x57 <CJK>
+<U8A0F> /xb0/x58 <CJK>
+<U8A11> /xb0/x59 <CJK>
+<U8C48> /xb0/x5a <CJK>
+<U8C7A> /xb0/x5b <CJK>
+<U8C79> /xb0/x5c <CJK>
+<U8CA1> /xb0/x5d <CJK>
+<U8CA2> /xb0/x5e <CJK>
+<U8D77> /xb0/x5f <CJK>
+<U8EAC> /xb0/x60 <CJK>
+<U8ED2> /xb0/x61 <CJK>
+<U8ED4> /xb0/x62 <CJK>
+<U8ECF> /xb0/x63 <CJK>
+<U8FB1> /xb0/x64 <CJK>
+<U9001> /xb0/x65 <CJK>
+<U9006> /xb0/x66 <CJK>
+<U8FF7> /xb0/x67 <CJK>
+<U9000> /xb0/x68 <CJK>
+<U8FFA> /xb0/x69 <CJK>
+<U8FF4> /xb0/x6a <CJK>
+<U9003> /xb0/x6b <CJK>
+<U8FFD> /xb0/x6c <CJK>
+<U9005> /xb0/x6d <CJK>
+<U8FF8> /xb0/x6e <CJK>
+<U9095> /xb0/x6f <CJK>
+<U90E1> /xb0/x70 <CJK>
+<U90DD> /xb0/x71 <CJK>
+<U90E2> /xb0/x72 <CJK>
+<U9152> /xb0/x73 <CJK>
+<U914D> /xb0/x74 <CJK>
+<U914C> /xb0/x75 <CJK>
+<U91D8> /xb0/x76 <CJK>
+<U91DD> /xb0/x77 <CJK>
+<U91D7> /xb0/x78 <CJK>
+<U91DC> /xb0/x79 <CJK>
+<U91D9> /xb0/x7a <CJK>
+<U9583> /xb0/x7b <CJK>
+<U9662> /xb0/x7c <CJK>
+<U9663> /xb0/x7d <CJK>
+<U9661> /xb0/x7e <CJK>
+<U965B> /xb0/xa1 <CJK>
+<U965D> /xb0/xa2 <CJK>
+<U9664> /xb0/xa3 <CJK>
+<U9658> /xb0/xa4 <CJK>
+<U965E> /xb0/xa5 <CJK>
+<U96BB> /xb0/xa6 <CJK>
+<U98E2> /xb0/xa7 <CJK>
+<U99AC> /xb0/xa8 <CJK>
+<U9AA8> /xb0/xa9 <CJK>
+<U9AD8> /xb0/xaa <CJK>
+<U9B25> /xb0/xab <CJK>
+<U9B32> /xb0/xac <CJK>
+<U9B3C> /xb0/xad <CJK>
+<U4E7E> /xb0/xae <CJK>
+<U507A> /xb0/xaf <CJK>
+<U507D> /xb0/xb0 <CJK>
+<U505C> /xb0/xb1 <CJK>
+<U5047> /xb0/xb2 <CJK>
+<U5043> /xb0/xb3 <CJK>
+<U504C> /xb0/xb4 <CJK>
+<U505A> /xb0/xb5 <CJK>
+<U5049> /xb0/xb6 <CJK>
+<U5065> /xb0/xb7 <CJK>
+<U5076> /xb0/xb8 <CJK>
+<U504E> /xb0/xb9 <CJK>
+<U5055> /xb0/xba <CJK>
+<U5075> /xb0/xbb <CJK>
+<U5074> /xb0/xbc <CJK>
+<U5077> /xb0/xbd <CJK>
+<U504F> /xb0/xbe <CJK>
+<U500F> /xb0/xbf <CJK>
+<U506F> /xb0/xc0 <CJK>
+<U506D> /xb0/xc1 <CJK>
+<U515C> /xb0/xc2 <CJK>
+<U5195> /xb0/xc3 <CJK>
+<U51F0> /xb0/xc4 <CJK>
+<U526A> /xb0/xc5 <CJK>
+<U526F> /xb0/xc6 <CJK>
+<U52D2> /xb0/xc7 <CJK>
+<U52D9> /xb0/xc8 <CJK>
+<U52D8> /xb0/xc9 <CJK>
+<U52D5> /xb0/xca <CJK>
+<U5310> /xb0/xcb <CJK>
+<U530F> /xb0/xcc <CJK>
+<U5319> /xb0/xcd <CJK>
+<U533F> /xb0/xce <CJK>
+<U5340> /xb0/xcf <CJK>
+<U533E> /xb0/xd0 <CJK>
+<U53C3> /xb0/xd1 <CJK>
+<U66FC> /xb0/xd2 <CJK>
+<U5546> /xb0/xd3 <CJK>
+<U556A> /xb0/xd4 <CJK>
+<U5566> /xb0/xd5 <CJK>
+<U5544> /xb0/xd6 <CJK>
+<U555E> /xb0/xd7 <CJK>
+<U5561> /xb0/xd8 <CJK>
+<U5543> /xb0/xd9 <CJK>
+<U554A> /xb0/xda <CJK>
+<U5531> /xb0/xdb <CJK>
+<U5556> /xb0/xdc <CJK>
+<U554F> /xb0/xdd <CJK>
+<U5555> /xb0/xde <CJK>
+<U552F> /xb0/xdf <CJK>
+<U5564> /xb0/xe0 <CJK>
+<U5538> /xb0/xe1 <CJK>
+<U552E> /xb0/xe2 <CJK>
+<U555C> /xb0/xe3 <CJK>
+<U552C> /xb0/xe4 <CJK>
+<U5563> /xb0/xe5 <CJK>
+<U5533> /xb0/xe6 <CJK>
+<U5541> /xb0/xe7 <CJK>
+<U5557> /xb0/xe8 <CJK>
+<U5708> /xb0/xe9 <CJK>
+<U570B> /xb0/xea <CJK>
+<U5709> /xb0/xeb <CJK>
+<U57DF> /xb0/xec <CJK>
+<U5805> /xb0/xed <CJK>
+<U580A> /xb0/xee <CJK>
+<U5806> /xb0/xef <CJK>
+<U57E0> /xb0/xf0 <CJK>
+<U57E4> /xb0/xf1 <CJK>
+<U57FA> /xb0/xf2 <CJK>
+<U5802> /xb0/xf3 <CJK>
+<U5835> /xb0/xf4 <CJK>
+<U57F7> /xb0/xf5 <CJK>
+<U57F9> /xb0/xf6 <CJK>
+<U5920> /xb0/xf7 <CJK>
+<U5962> /xb0/xf8 <CJK>
+<U5A36> /xb0/xf9 <CJK>
+<U5A41> /xb0/xfa <CJK>
+<U5A49> /xb0/xfb <CJK>
+<U5A66> /xb0/xfc <CJK>
+<U5A6A> /xb0/xfd <CJK>
+<U5A40> /xb0/xfe <CJK>
+<U5A3C> /xb1/x40 <CJK>
+<U5A62> /xb1/x41 <CJK>
+<U5A5A> /xb1/x42 <CJK>
+<U5A46> /xb1/x43 <CJK>
+<U5A4A> /xb1/x44 <CJK>
+<U5B70> /xb1/x45 <CJK>
+<U5BC7> /xb1/x46 <CJK>
+<U5BC5> /xb1/x47 <CJK>
+<U5BC4> /xb1/x48 <CJK>
+<U5BC2> /xb1/x49 <CJK>
+<U5BBF> /xb1/x4a <CJK>
+<U5BC6> /xb1/x4b <CJK>
+<U5C09> /xb1/x4c <CJK>
+<U5C08> /xb1/x4d <CJK>
+<U5C07> /xb1/x4e <CJK>
+<U5C60> /xb1/x4f <CJK>
+<U5C5C> /xb1/x50 <CJK>
+<U5C5D> /xb1/x51 <CJK>
+<U5D07> /xb1/x52 <CJK>
+<U5D06> /xb1/x53 <CJK>
+<U5D0E> /xb1/x54 <CJK>
+<U5D1B> /xb1/x55 <CJK>
+<U5D16> /xb1/x56 <CJK>
+<U5D22> /xb1/x57 <CJK>
+<U5D11> /xb1/x58 <CJK>
+<U5D29> /xb1/x59 <CJK>
+<U5D14> /xb1/x5a <CJK>
+<U5D19> /xb1/x5b <CJK>
+<U5D24> /xb1/x5c <CJK>
+<U5D27> /xb1/x5d <CJK>
+<U5D17> /xb1/x5e <CJK>
+<U5DE2> /xb1/x5f <CJK>
+<U5E38> /xb1/x60 <CJK>
+<U5E36> /xb1/x61 <CJK>
+<U5E33> /xb1/x62 <CJK>
+<U5E37> /xb1/x63 <CJK>
+<U5EB7> /xb1/x64 <CJK>
+<U5EB8> /xb1/x65 <CJK>
+<U5EB6> /xb1/x66 <CJK>
+<U5EB5> /xb1/x67 <CJK>
+<U5EBE> /xb1/x68 <CJK>
+<U5F35> /xb1/x69 <CJK>
+<U5F37> /xb1/x6a <CJK>
+<U5F57> /xb1/x6b <CJK>
+<U5F6C> /xb1/x6c <CJK>
+<U5F69> /xb1/x6d <CJK>
+<U5F6B> /xb1/x6e <CJK>
+<U5F97> /xb1/x6f <CJK>
+<U5F99> /xb1/x70 <CJK>
+<U5F9E> /xb1/x71 <CJK>
+<U5F98> /xb1/x72 <CJK>
+<U5FA1> /xb1/x73 <CJK>
+<U5FA0> /xb1/x74 <CJK>
+<U5F9C> /xb1/x75 <CJK>
+<U607F> /xb1/x76 <CJK>
+<U60A3> /xb1/x77 <CJK>
+<U6089> /xb1/x78 <CJK>
+<U60A0> /xb1/x79 <CJK>
+<U60A8> /xb1/x7a <CJK>
+<U60CB> /xb1/x7b <CJK>
+<U60B4> /xb1/x7c <CJK>
+<U60E6> /xb1/x7d <CJK>
+<U60BD> /xb1/x7e <CJK>
+<U60C5> /xb1/xa1 <CJK>
+<U60BB> /xb1/xa2 <CJK>
+<U60B5> /xb1/xa3 <CJK>
+<U60DC> /xb1/xa4 <CJK>
+<U60BC> /xb1/xa5 <CJK>
+<U60D8> /xb1/xa6 <CJK>
+<U60D5> /xb1/xa7 <CJK>
+<U60C6> /xb1/xa8 <CJK>
+<U60DF> /xb1/xa9 <CJK>
+<U60B8> /xb1/xaa <CJK>
+<U60DA> /xb1/xab <CJK>
+<U60C7> /xb1/xac <CJK>
+<U621A> /xb1/xad <CJK>
+<U621B> /xb1/xae <CJK>
+<U6248> /xb1/xaf <CJK>
+<U63A0> /xb1/xb0 <CJK>
+<U63A7> /xb1/xb1 <CJK>
+<U6372> /xb1/xb2 <CJK>
+<U6396> /xb1/xb3 <CJK>
+<U63A2> /xb1/xb4 <CJK>
+<U63A5> /xb1/xb5 <CJK>
+<U6377> /xb1/xb6 <CJK>
+<U6367> /xb1/xb7 <CJK>
+<U6398> /xb1/xb8 <CJK>
+<U63AA> /xb1/xb9 <CJK>
+<U6371> /xb1/xba <CJK>
+<U63A9> /xb1/xbb <CJK>
+<U6389> /xb1/xbc <CJK>
+<U6383> /xb1/xbd <CJK>
+<U639B> /xb1/xbe <CJK>
+<U636B> /xb1/xbf <CJK>
+<U63A8> /xb1/xc0 <CJK>
+<U6384> /xb1/xc1 <CJK>
+<U6388> /xb1/xc2 <CJK>
+<U6399> /xb1/xc3 <CJK>
+<U63A1> /xb1/xc4 <CJK>
+<U63AC> /xb1/xc5 <CJK>
+<U6392> /xb1/xc6 <CJK>
+<U638F> /xb1/xc7 <CJK>
+<U6380> /xb1/xc8 <CJK>
+<U637B> /xb1/xc9 <CJK>
+<U6369> /xb1/xca <CJK>
+<U6368> /xb1/xcb <CJK>
+<U637A> /xb1/xcc <CJK>
+<U655D> /xb1/xcd <CJK>
+<U6556> /xb1/xce <CJK>
+<U6551> /xb1/xcf <CJK>
+<U6559> /xb1/xd0 <CJK>
+<U6557> /xb1/xd1 <CJK>
+<U555F> /xb1/xd2 <CJK>
+<U654F> /xb1/xd3 <CJK>
+<U6558> /xb1/xd4 <CJK>
+<U6555> /xb1/xd5 <CJK>
+<U6554> /xb1/xd6 <CJK>
+<U659C> /xb1/xd7 <CJK>
+<U659B> /xb1/xd8 <CJK>
+<U65AC> /xb1/xd9 <CJK>
+<U65CF> /xb1/xda <CJK>
+<U65CB> /xb1/xdb <CJK>
+<U65CC> /xb1/xdc <CJK>
+<U65CE> /xb1/xdd <CJK>
+<U665D> /xb1/xde <CJK>
+<U665A> /xb1/xdf <CJK>
+<U6664> /xb1/xe0 <CJK>
+<U6668> /xb1/xe1 <CJK>
+<U6666> /xb1/xe2 <CJK>
+<U665E> /xb1/xe3 <CJK>
+<U66F9> /xb1/xe4 <CJK>
+<U52D7> /xb1/xe5 <CJK>
+<U671B> /xb1/xe6 <CJK>
+<U6881> /xb1/xe7 <CJK>
+<U68AF> /xb1/xe8 <CJK>
+<U68A2> /xb1/xe9 <CJK>
+<U6893> /xb1/xea <CJK>
+<U68B5> /xb1/xeb <CJK>
+<U687F> /xb1/xec <CJK>
+<U6876> /xb1/xed <CJK>
+<U68B1> /xb1/xee <CJK>
+<U68A7> /xb1/xef <CJK>
+<U6897> /xb1/xf0 <CJK>
+<U68B0> /xb1/xf1 <CJK>
+<U6883> /xb1/xf2 <CJK>
+<U68C4> /xb1/xf3 <CJK>
+<U68AD> /xb1/xf4 <CJK>
+<U6886> /xb1/xf5 <CJK>
+<U6885> /xb1/xf6 <CJK>
+<U6894> /xb1/xf7 <CJK>
+<U689D> /xb1/xf8 <CJK>
+<U68A8> /xb1/xf9 <CJK>
+<U689F> /xb1/xfa <CJK>
+<U68A1> /xb1/xfb <CJK>
+<U6882> /xb1/xfc <CJK>
+<U6B32> /xb1/xfd <CJK>
+<U6BBA> /xb1/xfe <CJK>
+<U6BEB> /xb2/x40 <CJK>
+<U6BEC> /xb2/x41 <CJK>
+<U6C2B> /xb2/x42 <CJK>
+<U6D8E> /xb2/x43 <CJK>
+<U6DBC> /xb2/x44 <CJK>
+<U6DF3> /xb2/x45 <CJK>
+<U6DD9> /xb2/x46 <CJK>
+<U6DB2> /xb2/x47 <CJK>
+<U6DE1> /xb2/x48 <CJK>
+<U6DCC> /xb2/x49 <CJK>
+<U6DE4> /xb2/x4a <CJK>
+<U6DFB> /xb2/x4b <CJK>
+<U6DFA> /xb2/x4c <CJK>
+<U6E05> /xb2/x4d <CJK>
+<U6DC7> /xb2/x4e <CJK>
+<U6DCB> /xb2/x4f <CJK>
+<U6DAF> /xb2/x50 <CJK>
+<U6DD1> /xb2/x51 <CJK>
+<U6DAE> /xb2/x52 <CJK>
+<U6DDE> /xb2/x53 <CJK>
+<U6DF9> /xb2/x54 <CJK>
+<U6DB8> /xb2/x55 <CJK>
+<U6DF7> /xb2/x56 <CJK>
+<U6DF5> /xb2/x57 <CJK>
+<U6DC5> /xb2/x58 <CJK>
+<U6DD2> /xb2/x59 <CJK>
+<U6E1A> /xb2/x5a <CJK>
+<U6DB5> /xb2/x5b <CJK>
+<U6DDA> /xb2/x5c <CJK>
+<U6DEB> /xb2/x5d <CJK>
+<U6DD8> /xb2/x5e <CJK>
+<U6DEA> /xb2/x5f <CJK>
+<U6DF1> /xb2/x60 <CJK>
+<U6DEE> /xb2/x61 <CJK>
+<U6DE8> /xb2/x62 <CJK>
+<U6DC6> /xb2/x63 <CJK>
+<U6DC4> /xb2/x64 <CJK>
+<U6DAA> /xb2/x65 <CJK>
+<U6DEC> /xb2/x66 <CJK>
+<U6DBF> /xb2/x67 <CJK>
+<U6DE6> /xb2/x68 <CJK>
+<U70F9> /xb2/x69 <CJK>
+<U7109> /xb2/x6a <CJK>
+<U710A> /xb2/x6b <CJK>
+<U70FD> /xb2/x6c <CJK>
+<U70EF> /xb2/x6d <CJK>
+<U723D> /xb2/x6e <CJK>
+<U727D> /xb2/x6f <CJK>
+<U7281> /xb2/x70 <CJK>
+<U731C> /xb2/x71 <CJK>
+<U731B> /xb2/x72 <CJK>
+<U7316> /xb2/x73 <CJK>
+<U7313> /xb2/x74 <CJK>
+<U7319> /xb2/x75 <CJK>
+<U7387> /xb2/x76 <CJK>
+<U7405> /xb2/x77 <CJK>
+<U740A> /xb2/x78 <CJK>
+<U7403> /xb2/x79 <CJK>
+<U7406> /xb2/x7a <CJK>
+<U73FE> /xb2/x7b <CJK>
+<U740D> /xb2/x7c <CJK>
+<U74E0> /xb2/x7d <CJK>
+<U74F6> /xb2/x7e <CJK>
+<U74F7> /xb2/xa1 <CJK>
+<U751C> /xb2/xa2 <CJK>
+<U7522> /xb2/xa3 <CJK>
+<U7565> /xb2/xa4 <CJK>
+<U7566> /xb2/xa5 <CJK>
+<U7562> /xb2/xa6 <CJK>
+<U7570> /xb2/xa7 <CJK>
+<U758F> /xb2/xa8 <CJK>
+<U75D4> /xb2/xa9 <CJK>
+<U75D5> /xb2/xaa <CJK>
+<U75B5> /xb2/xab <CJK>
+<U75CA> /xb2/xac <CJK>
+<U75CD> /xb2/xad <CJK>
+<U768E> /xb2/xae <CJK>
+<U76D4> /xb2/xaf <CJK>
+<U76D2> /xb2/xb0 <CJK>
+<U76DB> /xb2/xb1 <CJK>
+<U7737> /xb2/xb2 <CJK>
+<U773E> /xb2/xb3 <CJK>
+<U773C> /xb2/xb4 <CJK>
+<U7736> /xb2/xb5 <CJK>
+<U7738> /xb2/xb6 <CJK>
+<U773A> /xb2/xb7 <CJK>
+<U786B> /xb2/xb8 <CJK>
+<U7843> /xb2/xb9 <CJK>
+<U784E> /xb2/xba <CJK>
+<U7965> /xb2/xbb <CJK>
+<U7968> /xb2/xbc <CJK>
+<U796D> /xb2/xbd <CJK>
+<U79FB> /xb2/xbe <CJK>
+<U7A92> /xb2/xbf <CJK>
+<U7A95> /xb2/xc0 <CJK>
+<U7B20> /xb2/xc1 <CJK>
+<U7B28> /xb2/xc2 <CJK>
+<U7B1B> /xb2/xc3 <CJK>
+<U7B2C> /xb2/xc4 <CJK>
+<U7B26> /xb2/xc5 <CJK>
+<U7B19> /xb2/xc6 <CJK>
+<U7B1E> /xb2/xc7 <CJK>
+<U7B2E> /xb2/xc8 <CJK>
+<U7C92> /xb2/xc9 <CJK>
+<U7C97> /xb2/xca <CJK>
+<U7C95> /xb2/xcb <CJK>
+<U7D46> /xb2/xcc <CJK>
+<U7D43> /xb2/xcd <CJK>
+<U7D71> /xb2/xce <CJK>
+<U7D2E> /xb2/xcf <CJK>
+<U7D39> /xb2/xd0 <CJK>
+<U7D3C> /xb2/xd1 <CJK>
+<U7D40> /xb2/xd2 <CJK>
+<U7D30> /xb2/xd3 <CJK>
+<U7D33> /xb2/xd4 <CJK>
+<U7D44> /xb2/xd5 <CJK>
+<U7D2F> /xb2/xd6 <CJK>
+<U7D42> /xb2/xd7 <CJK>
+<U7D32> /xb2/xd8 <CJK>
+<U7D31> /xb2/xd9 <CJK>
+<U7F3D> /xb2/xda <CJK>
+<U7F9E> /xb2/xdb <CJK>
+<U7F9A> /xb2/xdc <CJK>
+<U7FCC> /xb2/xdd <CJK>
+<U7FCE> /xb2/xde <CJK>
+<U7FD2> /xb2/xdf <CJK>
+<U801C> /xb2/xe0 <CJK>
+<U804A> /xb2/xe1 <CJK>
+<U8046> /xb2/xe2 <CJK>
+<U812F> /xb2/xe3 <CJK>
+<U8116> /xb2/xe4 <CJK>
+<U8123> /xb2/xe5 <CJK>
+<U812B> /xb2/xe6 <CJK>
+<U8129> /xb2/xe7 <CJK>
+<U8130> /xb2/xe8 <CJK>
+<U8124> /xb2/xe9 <CJK>
+<U8202> /xb2/xea <CJK>
+<U8235> /xb2/xeb <CJK>
+<U8237> /xb2/xec <CJK>
+<U8236> /xb2/xed <CJK>
+<U8239> /xb2/xee <CJK>
+<U838E> /xb2/xef <CJK>
+<U839E> /xb2/xf0 <CJK>
+<U8398> /xb2/xf1 <CJK>
+<U8378> /xb2/xf2 <CJK>
+<U83A2> /xb2/xf3 <CJK>
+<U8396> /xb2/xf4 <CJK>
+<U83BD> /xb2/xf5 <CJK>
+<U83AB> /xb2/xf6 <CJK>
+<U8392> /xb2/xf7 <CJK>
+<U838A> /xb2/xf8 <CJK>
+<U8393> /xb2/xf9 <CJK>
+<U8389> /xb2/xfa <CJK>
+<U83A0> /xb2/xfb <CJK>
+<U8377> /xb2/xfc <CJK>
+<U837B> /xb2/xfd <CJK>
+<U837C> /xb2/xfe <CJK>
+<U8386> /xb3/x40 <CJK>
+<U83A7> /xb3/x41 <CJK>
+<U8655> /xb3/x42 <CJK>
+<U5F6A> /xb3/x43 <CJK>
+<U86C7> /xb3/x44 <CJK>
+<U86C0> /xb3/x45 <CJK>
+<U86B6> /xb3/x46 <CJK>
+<U86C4> /xb3/x47 <CJK>
+<U86B5> /xb3/x48 <CJK>
+<U86C6> /xb3/x49 <CJK>
+<U86CB> /xb3/x4a <CJK>
+<U86B1> /xb3/x4b <CJK>
+<U86AF> /xb3/x4c <CJK>
+<U86C9> /xb3/x4d <CJK>
+<U8853> /xb3/x4e <CJK>
+<U889E> /xb3/x4f <CJK>
+<U8888> /xb3/x50 <CJK>
+<U88AB> /xb3/x51 <CJK>
+<U8892> /xb3/x52 <CJK>
+<U8896> /xb3/x53 <CJK>
+<U888D> /xb3/x54 <CJK>
+<U888B> /xb3/x55 <CJK>
+<U8993> /xb3/x56 <CJK>
+<U898F> /xb3/x57 <CJK>
+<U8A2A> /xb3/x58 <CJK>
+<U8A1D> /xb3/x59 <CJK>
+<U8A23> /xb3/x5a <CJK>
+<U8A25> /xb3/x5b <CJK>
+<U8A31> /xb3/x5c <CJK>
+<U8A2D> /xb3/x5d <CJK>
+<U8A1F> /xb3/x5e <CJK>
+<U8A1B> /xb3/x5f <CJK>
+<U8A22> /xb3/x60 <CJK>
+<U8C49> /xb3/x61 <CJK>
+<U8C5A> /xb3/x62 <CJK>
+<U8CA9> /xb3/x63 <CJK>
+<U8CAC> /xb3/x64 <CJK>
+<U8CAB> /xb3/x65 <CJK>
+<U8CA8> /xb3/x66 <CJK>
+<U8CAA> /xb3/x67 <CJK>
+<U8CA7> /xb3/x68 <CJK>
+<U8D67> /xb3/x69 <CJK>
+<U8D66> /xb3/x6a <CJK>
+<U8DBE> /xb3/x6b <CJK>
+<U8DBA> /xb3/x6c <CJK>
+<U8EDB> /xb3/x6d <CJK>
+<U8EDF> /xb3/x6e <CJK>
+<U9019> /xb3/x6f <CJK>
+<U900D> /xb3/x70 <CJK>
+<U901A> /xb3/x71 <CJK>
+<U9017> /xb3/x72 <CJK>
+<U9023> /xb3/x73 <CJK>
+<U901F> /xb3/x74 <CJK>
+<U901D> /xb3/x75 <CJK>
+<U9010> /xb3/x76 <CJK>
+<U9015> /xb3/x77 <CJK>
+<U901E> /xb3/x78 <CJK>
+<U9020> /xb3/x79 <CJK>
+<U900F> /xb3/x7a <CJK>
+<U9022> /xb3/x7b <CJK>
+<U9016> /xb3/x7c <CJK>
+<U901B> /xb3/x7d <CJK>
+<U9014> /xb3/x7e <CJK>
+<U90E8> /xb3/xa1 <CJK>
+<U90ED> /xb3/xa2 <CJK>
+<U90FD> /xb3/xa3 <CJK>
+<U9157> /xb3/xa4 <CJK>
+<U91CE> /xb3/xa5 <CJK>
+<U91F5> /xb3/xa6 <CJK>
+<U91E6> /xb3/xa7 <CJK>
+<U91E3> /xb3/xa8 <CJK>
+<U91E7> /xb3/xa9 <CJK>
+<U91ED> /xb3/xaa <CJK>
+<U91E9> /xb3/xab <CJK>
+<U9589> /xb3/xac <CJK>
+<U966A> /xb3/xad <CJK>
+<U9675> /xb3/xae <CJK>
+<U9673> /xb3/xaf <CJK>
+<U9678> /xb3/xb0 <CJK>
+<U9670> /xb3/xb1 <CJK>
+<U9674> /xb3/xb2 <CJK>
+<U9676> /xb3/xb3 <CJK>
+<U9677> /xb3/xb4 <CJK>
+<U966C> /xb3/xb5 <CJK>
+<U96C0> /xb3/xb6 <CJK>
+<U96EA> /xb3/xb7 <CJK>
+<U96E9> /xb3/xb8 <CJK>
+<U7AE0> /xb3/xb9 <CJK>
+<U7ADF> /xb3/xba <CJK>
+<U9802> /xb3/xbb <CJK>
+<U9803> /xb3/xbc <CJK>
+<U9B5A> /xb3/xbd <CJK>
+<U9CE5> /xb3/xbe <CJK>
+<U9E75> /xb3/xbf <CJK>
+<U9E7F> /xb3/xc0 <CJK>
+<U9EA5> /xb3/xc1 <CJK>
+<U9EBB> /xb3/xc2 <CJK>
+<U50A2> /xb3/xc3 <CJK>
+<U508D> /xb3/xc4 <CJK>
+<U5085> /xb3/xc5 <CJK>
+<U5099> /xb3/xc6 <CJK>
+<U5091> /xb3/xc7 <CJK>
+<U5080> /xb3/xc8 <CJK>
+<U5096> /xb3/xc9 <CJK>
+<U5098> /xb3/xca <CJK>
+<U509A> /xb3/xcb <CJK>
+<U6700> /xb3/xcc <CJK>
+<U51F1> /xb3/xcd <CJK>
+<U5272> /xb3/xce <CJK>
+<U5274> /xb3/xcf <CJK>
+<U5275> /xb3/xd0 <CJK>
+<U5269> /xb3/xd1 <CJK>
+<U52DE> /xb3/xd2 <CJK>
+<U52DD> /xb3/xd3 <CJK>
+<U52DB> /xb3/xd4 <CJK>
+<U535A> /xb3/xd5 <CJK>
+<U53A5> /xb3/xd6 <CJK>
+<U557B> /xb3/xd7 <CJK>
+<U5580> /xb3/xd8 <CJK>
+<U55A7> /xb3/xd9 <CJK>
+<U557C> /xb3/xda <CJK>
+<U558A> /xb3/xdb <CJK>
+<U559D> /xb3/xdc <CJK>
+<U5598> /xb3/xdd <CJK>
+<U5582> /xb3/xde <CJK>
+<U559C> /xb3/xdf <CJK>
+<U55AA> /xb3/xe0 <CJK>
+<U5594> /xb3/xe1 <CJK>
+<U5587> /xb3/xe2 <CJK>
+<U558B> /xb3/xe3 <CJK>
+<U5583> /xb3/xe4 <CJK>
+<U55B3> /xb3/xe5 <CJK>
+<U55AE> /xb3/xe6 <CJK>
+<U559F> /xb3/xe7 <CJK>
+<U553E> /xb3/xe8 <CJK>
+<U55B2> /xb3/xe9 <CJK>
+<U559A> /xb3/xea <CJK>
+<U55BB> /xb3/xeb <CJK>
+<U55AC> /xb3/xec <CJK>
+<U55B1> /xb3/xed <CJK>
+<U557E> /xb3/xee <CJK>
+<U5589> /xb3/xef <CJK>
+<U55AB> /xb3/xf0 <CJK>
+<U5599> /xb3/xf1 <CJK>
+<U570D> /xb3/xf2 <CJK>
+<U582F> /xb3/xf3 <CJK>
+<U582A> /xb3/xf4 <CJK>
+<U5834> /xb3/xf5 <CJK>
+<U5824> /xb3/xf6 <CJK>
+<U5830> /xb3/xf7 <CJK>
+<U5831> /xb3/xf8 <CJK>
+<U5821> /xb3/xf9 <CJK>
+<U581D> /xb3/xfa <CJK>
+<U5820> /xb3/xfb <CJK>
+<U58F9> /xb3/xfc <CJK>
+<U58FA> /xb3/xfd <CJK>
+<U5960> /xb3/xfe <CJK>
+<U5A77> /xb4/x40 <CJK>
+<U5A9A> /xb4/x41 <CJK>
+<U5A7F> /xb4/x42 <CJK>
+<U5A92> /xb4/x43 <CJK>
+<U5A9B> /xb4/x44 <CJK>
+<U5AA7> /xb4/x45 <CJK>
+<U5B73> /xb4/x46 <CJK>
+<U5B71> /xb4/x47 <CJK>
+<U5BD2> /xb4/x48 <CJK>
+<U5BCC> /xb4/x49 <CJK>
+<U5BD3> /xb4/x4a <CJK>
+<U5BD0> /xb4/x4b <CJK>
+<U5C0A> /xb4/x4c <CJK>
+<U5C0B> /xb4/x4d <CJK>
+<U5C31> /xb4/x4e <CJK>
+<U5D4C> /xb4/x4f <CJK>
+<U5D50> /xb4/x50 <CJK>
+<U5D34> /xb4/x51 <CJK>
+<U5D47> /xb4/x52 <CJK>
+<U5DFD> /xb4/x53 <CJK>
+<U5E45> /xb4/x54 <CJK>
+<U5E3D> /xb4/x55 <CJK>
+<U5E40> /xb4/x56 <CJK>
+<U5E43> /xb4/x57 <CJK>
+<U5E7E> /xb4/x58 <CJK>
+<U5ECA> /xb4/x59 <CJK>
+<U5EC1> /xb4/x5a <CJK>
+<U5EC2> /xb4/x5b <CJK>
+<U5EC4> /xb4/x5c <CJK>
+<U5F3C> /xb4/x5d <CJK>
+<U5F6D> /xb4/x5e <CJK>
+<U5FA9> /xb4/x5f <CJK>
+<U5FAA> /xb4/x60 <CJK>
+<U5FA8> /xb4/x61 <CJK>
+<U60D1> /xb4/x62 <CJK>
+<U60E1> /xb4/x63 <CJK>
+<U60B2> /xb4/x64 <CJK>
+<U60B6> /xb4/x65 <CJK>
+<U60E0> /xb4/x66 <CJK>
+<U611C> /xb4/x67 <CJK>
+<U6123> /xb4/x68 <CJK>
+<U60FA> /xb4/x69 <CJK>
+<U6115> /xb4/x6a <CJK>
+<U60F0> /xb4/x6b <CJK>
+<U60FB> /xb4/x6c <CJK>
+<U60F4> /xb4/x6d <CJK>
+<U6168> /xb4/x6e <CJK>
+<U60F1> /xb4/x6f <CJK>
+<U610E> /xb4/x70 <CJK>
+<U60F6> /xb4/x71 <CJK>
+<U6109> /xb4/x72 <CJK>
+<U6100> /xb4/x73 <CJK>
+<U6112> /xb4/x74 <CJK>
+<U621F> /xb4/x75 <CJK>
+<U6249> /xb4/x76 <CJK>
+<U63A3> /xb4/x77 <CJK>
+<U638C> /xb4/x78 <CJK>
+<U63CF> /xb4/x79 <CJK>
+<U63C0> /xb4/x7a <CJK>
+<U63E9> /xb4/x7b <CJK>
+<U63C9> /xb4/x7c <CJK>
+<U63C6> /xb4/x7d <CJK>
+<U63CD> /xb4/x7e <CJK>
+<U63D2> /xb4/xa1 <CJK>
+<U63E3> /xb4/xa2 <CJK>
+<U63D0> /xb4/xa3 <CJK>
+<U63E1> /xb4/xa4 <CJK>
+<U63D6> /xb4/xa5 <CJK>
+<U63ED> /xb4/xa6 <CJK>
+<U63EE> /xb4/xa7 <CJK>
+<U6376> /xb4/xa8 <CJK>
+<U63F4> /xb4/xa9 <CJK>
+<U63EA> /xb4/xaa <CJK>
+<U63DB> /xb4/xab <CJK>
+<U6452> /xb4/xac <CJK>
+<U63DA> /xb4/xad <CJK>
+<U63F9> /xb4/xae <CJK>
+<U655E> /xb4/xaf <CJK>
+<U6566> /xb4/xb0 <CJK>
+<U6562> /xb4/xb1 <CJK>
+<U6563> /xb4/xb2 <CJK>
+<U6591> /xb4/xb3 <CJK>
+<U6590> /xb4/xb4 <CJK>
+<U65AF> /xb4/xb5 <CJK>
+<U666E> /xb4/xb6 <CJK>
+<U6670> /xb4/xb7 <CJK>
+<U6674> /xb4/xb8 <CJK>
+<U6676> /xb4/xb9 <CJK>
+<U666F> /xb4/xba <CJK>
+<U6691> /xb4/xbb <CJK>
+<U667A> /xb4/xbc <CJK>
+<U667E> /xb4/xbd <CJK>
+<U6677> /xb4/xbe <CJK>
+<U66FE> /xb4/xbf <CJK>
+<U66FF> /xb4/xc0 <CJK>
+<U671F> /xb4/xc1 <CJK>
+<U671D> /xb4/xc2 <CJK>
+<U68FA> /xb4/xc3 <CJK>
+<U68D5> /xb4/xc4 <CJK>
+<U68E0> /xb4/xc5 <CJK>
+<U68D8> /xb4/xc6 <CJK>
+<U68D7> /xb4/xc7 <CJK>
+<U6905> /xb4/xc8 <CJK>
+<U68DF> /xb4/xc9 <CJK>
+<U68F5> /xb4/xca <CJK>
+<U68EE> /xb4/xcb <CJK>
+<U68E7> /xb4/xcc <CJK>
+<U68F9> /xb4/xcd <CJK>
+<U68D2> /xb4/xce <CJK>
+<U68F2> /xb4/xcf <CJK>
+<U68E3> /xb4/xd0 <CJK>
+<U68CB> /xb4/xd1 <CJK>
+<U68CD> /xb4/xd2 <CJK>
+<U690D> /xb4/xd3 <CJK>
+<U6912> /xb4/xd4 <CJK>
+<U690E> /xb4/xd5 <CJK>
+<U68C9> /xb4/xd6 <CJK>
+<U68DA> /xb4/xd7 <CJK>
+<U696E> /xb4/xd8 <CJK>
+<U68FB> /xb4/xd9 <CJK>
+<U6B3E> /xb4/xda <CJK>
+<U6B3A> /xb4/xdb <CJK>
+<U6B3D> /xb4/xdc <CJK>
+<U6B98> /xb4/xdd <CJK>
+<U6B96> /xb4/xde <CJK>
+<U6BBC> /xb4/xdf <CJK>
+<U6BEF> /xb4/xe0 <CJK>
+<U6C2E> /xb4/xe1 <CJK>
+<U6C2F> /xb4/xe2 <CJK>
+<U6C2C> /xb4/xe3 <CJK>
+<U6E2F> /xb4/xe4 <CJK>
+<U6E38> /xb4/xe5 <CJK>
+<U6E54> /xb4/xe6 <CJK>
+<U6E21> /xb4/xe7 <CJK>
+<U6E32> /xb4/xe8 <CJK>
+<U6E67> /xb4/xe9 <CJK>
+<U6E4A> /xb4/xea <CJK>
+<U6E20> /xb4/xeb <CJK>
+<U6E25> /xb4/xec <CJK>
+<U6E23> /xb4/xed <CJK>
+<U6E1B> /xb4/xee <CJK>
+<U6E5B> /xb4/xef <CJK>
+<U6E58> /xb4/xf0 <CJK>
+<U6E24> /xb4/xf1 <CJK>
+<U6E56> /xb4/xf2 <CJK>
+<U6E6E> /xb4/xf3 <CJK>
+<U6E2D> /xb4/xf4 <CJK>
+<U6E26> /xb4/xf5 <CJK>
+<U6E6F> /xb4/xf6 <CJK>
+<U6E34> /xb4/xf7 <CJK>
+<U6E4D> /xb4/xf8 <CJK>
+<U6E3A> /xb4/xf9 <CJK>
+<U6E2C> /xb4/xfa <CJK>
+<U6E43> /xb4/xfb <CJK>
+<U6E1D> /xb4/xfc <CJK>
+<U6E3E> /xb4/xfd <CJK>
+<U6ECB> /xb4/xfe <CJK>
+<U6E89> /xb5/x40 <CJK>
+<U6E19> /xb5/x41 <CJK>
+<U6E4E> /xb5/x42 <CJK>
+<U6E63> /xb5/x43 <CJK>
+<U6E44> /xb5/x44 <CJK>
+<U6E72> /xb5/x45 <CJK>
+<U6E69> /xb5/x46 <CJK>
+<U6E5F> /xb5/x47 <CJK>
+<U7119> /xb5/x48 <CJK>
+<U711A> /xb5/x49 <CJK>
+<U7126> /xb5/x4a <CJK>
+<U7130> /xb5/x4b <CJK>
+<U7121> /xb5/x4c <CJK>
+<U7136> /xb5/x4d <CJK>
+<U716E> /xb5/x4e <CJK>
+<U711C> /xb5/x4f <CJK>
+<U724C> /xb5/x50 <CJK>
+<U7284> /xb5/x51 <CJK>
+<U7280> /xb5/x52 <CJK>
+<U7336> /xb5/x53 <CJK>
+<U7325> /xb5/x54 <CJK>
+<U7334> /xb5/x55 <CJK>
+<U7329> /xb5/x56 <CJK>
+<U743A> /xb5/x57 <CJK>
+<U742A> /xb5/x58 <CJK>
+<U7433> /xb5/x59 <CJK>
+<U7422> /xb5/x5a <CJK>
+<U7425> /xb5/x5b <CJK>
+<U7435> /xb5/x5c <CJK>
+<U7436> /xb5/x5d <CJK>
+<U7434> /xb5/x5e <CJK>
+<U742F> /xb5/x5f <CJK>
+<U741B> /xb5/x60 <CJK>
+<U7426> /xb5/x61 <CJK>
+<U7428> /xb5/x62 <CJK>
+<U7525> /xb5/x63 <CJK>
+<U7526> /xb5/x64 <CJK>
+<U756B> /xb5/x65 <CJK>
+<U756A> /xb5/x66 <CJK>
+<U75E2> /xb5/x67 <CJK>
+<U75DB> /xb5/x68 <CJK>
+<U75E3> /xb5/x69 <CJK>
+<U75D9> /xb5/x6a <CJK>
+<U75D8> /xb5/x6b <CJK>
+<U75DE> /xb5/x6c <CJK>
+<U75E0> /xb5/x6d <CJK>
+<U767B> /xb5/x6e <CJK>
+<U767C> /xb5/x6f <CJK>
+<U7696> /xb5/x70 <CJK>
+<U7693> /xb5/x71 <CJK>
+<U76B4> /xb5/x72 <CJK>
+<U76DC> /xb5/x73 <CJK>
+<U774F> /xb5/x74 <CJK>
+<U77ED> /xb5/x75 <CJK>
+<U785D> /xb5/x76 <CJK>
+<U786C> /xb5/x77 <CJK>
+<U786F> /xb5/x78 <CJK>
+<U7A0D> /xb5/x79 <CJK>
+<U7A08> /xb5/x7a <CJK>
+<U7A0B> /xb5/x7b <CJK>
+<U7A05> /xb5/x7c <CJK>
+<U7A00> /xb5/x7d <CJK>
+<U7A98> /xb5/x7e <CJK>
+<U7A97> /xb5/xa1 <CJK>
+<U7A96> /xb5/xa2 <CJK>
+<U7AE5> /xb5/xa3 <CJK>
+<U7AE3> /xb5/xa4 <CJK>
+<U7B49> /xb5/xa5 <CJK>
+<U7B56> /xb5/xa6 <CJK>
+<U7B46> /xb5/xa7 <CJK>
+<U7B50> /xb5/xa8 <CJK>
+<U7B52> /xb5/xa9 <CJK>
+<U7B54> /xb5/xaa <CJK>
+<U7B4D> /xb5/xab <CJK>
+<U7B4B> /xb5/xac <CJK>
+<U7B4F> /xb5/xad <CJK>
+<U7B51> /xb5/xae <CJK>
+<U7C9F> /xb5/xaf <CJK>
+<U7CA5> /xb5/xb0 <CJK>
+<U7D5E> /xb5/xb1 <CJK>
+<U7D50> /xb5/xb2 <CJK>
+<U7D68> /xb5/xb3 <CJK>
+<U7D55> /xb5/xb4 <CJK>
+<U7D2B> /xb5/xb5 <CJK>
+<U7D6E> /xb5/xb6 <CJK>
+<U7D72> /xb5/xb7 <CJK>
+<U7D61> /xb5/xb8 <CJK>
+<U7D66> /xb5/xb9 <CJK>
+<U7D62> /xb5/xba <CJK>
+<U7D70> /xb5/xbb <CJK>
+<U7D73> /xb5/xbc <CJK>
+<U5584> /xb5/xbd <CJK>
+<U7FD4> /xb5/xbe <CJK>
+<U7FD5> /xb5/xbf <CJK>
+<U800B> /xb5/xc0 <CJK>
+<U8052> /xb5/xc1 <CJK>
+<U8085> /xb5/xc2 <CJK>
+<U8155> /xb5/xc3 <CJK>
+<U8154> /xb5/xc4 <CJK>
+<U814B> /xb5/xc5 <CJK>
+<U8151> /xb5/xc6 <CJK>
+<U814E> /xb5/xc7 <CJK>
+<U8139> /xb5/xc8 <CJK>
+<U8146> /xb5/xc9 <CJK>
+<U813E> /xb5/xca <CJK>
+<U814C> /xb5/xcb <CJK>
+<U8153> /xb5/xcc <CJK>
+<U8174> /xb5/xcd <CJK>
+<U8212> /xb5/xce <CJK>
+<U821C> /xb5/xcf <CJK>
+<U83E9> /xb5/xd0 <CJK>
+<U8403> /xb5/xd1 <CJK>
+<U83F8> /xb5/xd2 <CJK>
+<U840D> /xb5/xd3 <CJK>
+<U83E0> /xb5/xd4 <CJK>
+<U83C5> /xb5/xd5 <CJK>
+<U840B> /xb5/xd6 <CJK>
+<U83C1> /xb5/xd7 <CJK>
+<U83EF> /xb5/xd8 <CJK>
+<U83F1> /xb5/xd9 <CJK>
+<U83F4> /xb5/xda <CJK>
+<U8457> /xb5/xdb <CJK>
+<U840A> /xb5/xdc <CJK>
+<U83F0> /xb5/xdd <CJK>
+<U840C> /xb5/xde <CJK>
+<U83CC> /xb5/xdf <CJK>
+<U83FD> /xb5/xe0 <CJK>
+<U83F2> /xb5/xe1 <CJK>
+<U83CA> /xb5/xe2 <CJK>
+<U8438> /xb5/xe3 <CJK>
+<U840E> /xb5/xe4 <CJK>
+<U8404> /xb5/xe5 <CJK>
+<U83DC> /xb5/xe6 <CJK>
+<U8407> /xb5/xe7 <CJK>
+<U83D4> /xb5/xe8 <CJK>
+<U83DF> /xb5/xe9 <CJK>
+<U865B> /xb5/xea <CJK>
+<U86DF> /xb5/xeb <CJK>
+<U86D9> /xb5/xec <CJK>
+<U86ED> /xb5/xed <CJK>
+<U86D4> /xb5/xee <CJK>
+<U86DB> /xb5/xef <CJK>
+<U86E4> /xb5/xf0 <CJK>
+<U86D0> /xb5/xf1 <CJK>
+<U86DE> /xb5/xf2 <CJK>
+<U8857> /xb5/xf3 <CJK>
+<U88C1> /xb5/xf4 <CJK>
+<U88C2> /xb5/xf5 <CJK>
+<U88B1> /xb5/xf6 <CJK>
+<U8983> /xb5/xf7 <CJK>
+<U8996> /xb5/xf8 <CJK>
+<U8A3B> /xb5/xf9 <CJK>
+<U8A60> /xb5/xfa <CJK>
+<U8A55> /xb5/xfb <CJK>
+<U8A5E> /xb5/xfc <CJK>
+<U8A3C> /xb5/xfd <CJK>
+<U8A41> /xb5/xfe <CJK>
+<U8A54> /xb6/x40 <CJK>
+<U8A5B> /xb6/x41 <CJK>
+<U8A50> /xb6/x42 <CJK>
+<U8A46> /xb6/x43 <CJK>
+<U8A34> /xb6/x44 <CJK>
+<U8A3A> /xb6/x45 <CJK>
+<U8A36> /xb6/x46 <CJK>
+<U8A56> /xb6/x47 <CJK>
+<U8C61> /xb6/x48 <CJK>
+<U8C82> /xb6/x49 <CJK>
+<U8CAF> /xb6/x4a <CJK>
+<U8CBC> /xb6/x4b <CJK>
+<U8CB3> /xb6/x4c <CJK>
+<U8CBD> /xb6/x4d <CJK>
+<U8CC1> /xb6/x4e <CJK>
+<U8CBB> /xb6/x4f <CJK>
+<U8CC0> /xb6/x50 <CJK>
+<U8CB4> /xb6/x51 <CJK>
+<U8CB7> /xb6/x52 <CJK>
+<U8CB6> /xb6/x53 <CJK>
+<U8CBF> /xb6/x54 <CJK>
+<U8CB8> /xb6/x55 <CJK>
+<U8D8A> /xb6/x56 <CJK>
+<U8D85> /xb6/x57 <CJK>
+<U8D81> /xb6/x58 <CJK>
+<U8DCE> /xb6/x59 <CJK>
+<U8DDD> /xb6/x5a <CJK>
+<U8DCB> /xb6/x5b <CJK>
+<U8DDA> /xb6/x5c <CJK>
+<U8DD1> /xb6/x5d <CJK>
+<U8DCC> /xb6/x5e <CJK>
+<U8DDB> /xb6/x5f <CJK>
+<U8DC6> /xb6/x60 <CJK>
+<U8EFB> /xb6/x61 <CJK>
+<U8EF8> /xb6/x62 <CJK>
+<U8EFC> /xb6/x63 <CJK>
+<U8F9C> /xb6/x64 <CJK>
+<U902E> /xb6/x65 <CJK>
+<U9035> /xb6/x66 <CJK>
+<U9031> /xb6/x67 <CJK>
+<U9038> /xb6/x68 <CJK>
+<U9032> /xb6/x69 <CJK>
+<U9036> /xb6/x6a <CJK>
+<U9102> /xb6/x6b <CJK>
+<U90F5> /xb6/x6c <CJK>
+<U9109> /xb6/x6d <CJK>
+<U90FE> /xb6/x6e <CJK>
+<U9163> /xb6/x6f <CJK>
+<U9165> /xb6/x70 <CJK>
+<U91CF> /xb6/x71 <CJK>
+<U9214> /xb6/x72 <CJK>
+<U9215> /xb6/x73 <CJK>
+<U9223> /xb6/x74 <CJK>
+<U9209> /xb6/x75 <CJK>
+<U921E> /xb6/x76 <CJK>
+<U920D> /xb6/x77 <CJK>
+<U9210> /xb6/x78 <CJK>
+<U9207> /xb6/x79 <CJK>
+<U9211> /xb6/x7a <CJK>
+<U9594> /xb6/x7b <CJK>
+<U958F> /xb6/x7c <CJK>
+<U958B> /xb6/x7d <CJK>
+<U9591> /xb6/x7e <CJK>
+<U9593> /xb6/xa1 <CJK>
+<U9592> /xb6/xa2 <CJK>
+<U958E> /xb6/xa3 <CJK>
+<U968A> /xb6/xa4 <CJK>
+<U968E> /xb6/xa5 <CJK>
+<U968B> /xb6/xa6 <CJK>
+<U967D> /xb6/xa7 <CJK>
+<U9685> /xb6/xa8 <CJK>
+<U9686> /xb6/xa9 <CJK>
+<U968D> /xb6/xaa <CJK>
+<U9672> /xb6/xab <CJK>
+<U9684> /xb6/xac <CJK>
+<U96C1> /xb6/xad <CJK>
+<U96C5> /xb6/xae <CJK>
+<U96C4> /xb6/xaf <CJK>
+<U96C6> /xb6/xb0 <CJK>
+<U96C7> /xb6/xb1 <CJK>
+<U96EF> /xb6/xb2 <CJK>
+<U96F2> /xb6/xb3 <CJK>
+<U97CC> /xb6/xb4 <CJK>
+<U9805> /xb6/xb5 <CJK>
+<U9806> /xb6/xb6 <CJK>
+<U9808> /xb6/xb7 <CJK>
+<U98E7> /xb6/xb8 <CJK>
+<U98EA> /xb6/xb9 <CJK>
+<U98EF> /xb6/xba <CJK>
+<U98E9> /xb6/xbb <CJK>
+<U98F2> /xb6/xbc <CJK>
+<U98ED> /xb6/xbd <CJK>
+<U99AE> /xb6/xbe <CJK>
+<U99AD> /xb6/xbf <CJK>
+<U9EC3> /xb6/xc0 <CJK>
+<U9ECD> /xb6/xc1 <CJK>
+<U9ED1> /xb6/xc2 <CJK>
+<U4E82> /xb6/xc3 <CJK>
+<U50AD> /xb6/xc4 <CJK>
+<U50B5> /xb6/xc5 <CJK>
+<U50B2> /xb6/xc6 <CJK>
+<U50B3> /xb6/xc7 <CJK>
+<U50C5> /xb6/xc8 <CJK>
+<U50BE> /xb6/xc9 <CJK>
+<U50AC> /xb6/xca <CJK>
+<U50B7> /xb6/xcb <CJK>
+<U50BB> /xb6/xcc <CJK>
+<U50AF> /xb6/xcd <CJK>
+<U50C7> /xb6/xce <CJK>
+<U527F> /xb6/xcf <CJK>
+<U5277> /xb6/xd0 <CJK>
+<U527D> /xb6/xd1 <CJK>
+<U52DF> /xb6/xd2 <CJK>
+<U52E6> /xb6/xd3 <CJK>
+<U52E4> /xb6/xd4 <CJK>
+<U52E2> /xb6/xd5 <CJK>
+<U52E3> /xb6/xd6 <CJK>
+<U532F> /xb6/xd7 <CJK>
+<U55DF> /xb6/xd8 <CJK>
+<U55E8> /xb6/xd9 <CJK>
+<U55D3> /xb6/xda <CJK>
+<U55E6> /xb6/xdb <CJK>
+<U55CE> /xb6/xdc <CJK>
+<U55DC> /xb6/xdd <CJK>
+<U55C7> /xb6/xde <CJK>
+<U55D1> /xb6/xdf <CJK>
+<U55E3> /xb6/xe0 <CJK>
+<U55E4> /xb6/xe1 <CJK>
+<U55EF> /xb6/xe2 <CJK>
+<U55DA> /xb6/xe3 <CJK>
+<U55E1> /xb6/xe4 <CJK>
+<U55C5> /xb6/xe5 <CJK>
+<U55C6> /xb6/xe6 <CJK>
+<U55E5> /xb6/xe7 <CJK>
+<U55C9> /xb6/xe8 <CJK>
+<U5712> /xb6/xe9 <CJK>
+<U5713> /xb6/xea <CJK>
+<U585E> /xb6/xeb <CJK>
+<U5851> /xb6/xec <CJK>
+<U5858> /xb6/xed <CJK>
+<U5857> /xb6/xee <CJK>
+<U585A> /xb6/xef <CJK>
+<U5854> /xb6/xf0 <CJK>
+<U586B> /xb6/xf1 <CJK>
+<U584C> /xb6/xf2 <CJK>
+<U586D> /xb6/xf3 <CJK>
+<U584A> /xb6/xf4 <CJK>
+<U5862> /xb6/xf5 <CJK>
+<U5852> /xb6/xf6 <CJK>
+<U584B> /xb6/xf7 <CJK>
+<U5967> /xb6/xf8 <CJK>
+<U5AC1> /xb6/xf9 <CJK>
+<U5AC9> /xb6/xfa <CJK>
+<U5ACC> /xb6/xfb <CJK>
+<U5ABE> /xb6/xfc <CJK>
+<U5ABD> /xb6/xfd <CJK>
+<U5ABC> /xb6/xfe <CJK>
+<U5AB3> /xb7/x40 <CJK>
+<U5AC2> /xb7/x41 <CJK>
+<U5AB2> /xb7/x42 <CJK>
+<U5D69> /xb7/x43 <CJK>
+<U5D6F> /xb7/x44 <CJK>
+<U5E4C> /xb7/x45 <CJK>
+<U5E79> /xb7/x46 <CJK>
+<U5EC9> /xb7/x47 <CJK>
+<U5EC8> /xb7/x48 <CJK>
+<U5F12> /xb7/x49 <CJK>
+<U5F59> /xb7/x4a <CJK>
+<U5FAC> /xb7/x4b <CJK>
+<U5FAE> /xb7/x4c <CJK>
+<U611A> /xb7/x4d <CJK>
+<U610F> /xb7/x4e <CJK>
+<U6148> /xb7/x4f <CJK>
+<U611F> /xb7/x50 <CJK>
+<U60F3> /xb7/x51 <CJK>
+<U611B> /xb7/x52 <CJK>
+<U60F9> /xb7/x53 <CJK>
+<U6101> /xb7/x54 <CJK>
+<U6108> /xb7/x55 <CJK>
+<U614E> /xb7/x56 <CJK>
+<U614C> /xb7/x57 <CJK>
+<U6144> /xb7/x58 <CJK>
+<U614D> /xb7/x59 <CJK>
+<U613E> /xb7/x5a <CJK>
+<U6134> /xb7/x5b <CJK>
+<U6127> /xb7/x5c <CJK>
+<U610D> /xb7/x5d <CJK>
+<U6106> /xb7/x5e <CJK>
+<U6137> /xb7/x5f <CJK>
+<U6221> /xb7/x60 <CJK>
+<U6222> /xb7/x61 <CJK>
+<U6413> /xb7/x62 <CJK>
+<U643E> /xb7/x63 <CJK>
+<U641E> /xb7/x64 <CJK>
+<U642A> /xb7/x65 <CJK>
+<U642D> /xb7/x66 <CJK>
+<U643D> /xb7/x67 <CJK>
+<U642C> /xb7/x68 <CJK>
+<U640F> /xb7/x69 <CJK>
+<U641C> /xb7/x6a <CJK>
+<U6414> /xb7/x6b <CJK>
+<U640D> /xb7/x6c <CJK>
+<U6436> /xb7/x6d <CJK>
+<U6416> /xb7/x6e <CJK>
+<U6417> /xb7/x6f <CJK>
+<U6406> /xb7/x70 <CJK>
+<U656C> /xb7/x71 <CJK>
+<U659F> /xb7/x72 <CJK>
+<U65B0> /xb7/x73 <CJK>
+<U6697> /xb7/x74 <CJK>
+<U6689> /xb7/x75 <CJK>
+<U6687> /xb7/x76 <CJK>
+<U6688> /xb7/x77 <CJK>
+<U6696> /xb7/x78 <CJK>
+<U6684> /xb7/x79 <CJK>
+<U6698> /xb7/x7a <CJK>
+<U668D> /xb7/x7b <CJK>
+<U6703> /xb7/x7c <CJK>
+<U6994> /xb7/x7d <CJK>
+<U696D> /xb7/x7e <CJK>
+<U695A> /xb7/xa1 <CJK>
+<U6977> /xb7/xa2 <CJK>
+<U6960> /xb7/xa3 <CJK>
+<U6954> /xb7/xa4 <CJK>
+<U6975> /xb7/xa5 <CJK>
+<U6930> /xb7/xa6 <CJK>
+<U6982> /xb7/xa7 <CJK>
+<U694A> /xb7/xa8 <CJK>
+<U6968> /xb7/xa9 <CJK>
+<U696B> /xb7/xaa <CJK>
+<U695E> /xb7/xab <CJK>
+<U6953> /xb7/xac <CJK>
+<U6979> /xb7/xad <CJK>
+<U6986> /xb7/xae <CJK>
+<U695D> /xb7/xaf <CJK>
+<U6963> /xb7/xb0 <CJK>
+<U695B> /xb7/xb1 <CJK>
+<U6B47> /xb7/xb2 <CJK>
+<U6B72> /xb7/xb3 <CJK>
+<U6BC0> /xb7/xb4 <CJK>
+<U6BBF> /xb7/xb5 <CJK>
+<U6BD3> /xb7/xb6 <CJK>
+<U6BFD> /xb7/xb7 <CJK>
+<U6EA2> /xb7/xb8 <CJK>
+<U6EAF> /xb7/xb9 <CJK>
+<U6ED3> /xb7/xba <CJK>
+<U6EB6> /xb7/xbb <CJK>
+<U6EC2> /xb7/xbc <CJK>
+<U6E90> /xb7/xbd <CJK>
+<U6E9D> /xb7/xbe <CJK>
+<U6EC7> /xb7/xbf <CJK>
+<U6EC5> /xb7/xc0 <CJK>
+<U6EA5> /xb7/xc1 <CJK>
+<U6E98> /xb7/xc2 <CJK>
+<U6EBC> /xb7/xc3 <CJK>
+<U6EBA> /xb7/xc4 <CJK>
+<U6EAB> /xb7/xc5 <CJK>
+<U6ED1> /xb7/xc6 <CJK>
+<U6E96> /xb7/xc7 <CJK>
+<U6E9C> /xb7/xc8 <CJK>
+<U6EC4> /xb7/xc9 <CJK>
+<U6ED4> /xb7/xca <CJK>
+<U6EAA> /xb7/xcb <CJK>
+<U6EA7> /xb7/xcc <CJK>
+<U6EB4> /xb7/xcd <CJK>
+<U714E> /xb7/xce <CJK>
+<U7159> /xb7/xcf <CJK>
+<U7169> /xb7/xd0 <CJK>
+<U7164> /xb7/xd1 <CJK>
+<U7149> /xb7/xd2 <CJK>
+<U7167> /xb7/xd3 <CJK>
+<U715C> /xb7/xd4 <CJK>
+<U716C> /xb7/xd5 <CJK>
+<U7166> /xb7/xd6 <CJK>
+<U714C> /xb7/xd7 <CJK>
+<U7165> /xb7/xd8 <CJK>
+<U715E> /xb7/xd9 <CJK>
+<U7146> /xb7/xda <CJK>
+<U7168> /xb7/xdb <CJK>
+<U7156> /xb7/xdc <CJK>
+<U723A> /xb7/xdd <CJK>
+<U7252> /xb7/xde <CJK>
+<U7337> /xb7/xdf <CJK>
+<U7345> /xb7/xe0 <CJK>
+<U733F> /xb7/xe1 <CJK>
+<U733E> /xb7/xe2 <CJK>
+<U746F> /xb7/xe3 <CJK>
+<U745A> /xb7/xe4 <CJK>
+<U7455> /xb7/xe5 <CJK>
+<U745F> /xb7/xe6 <CJK>
+<U745E> /xb7/xe7 <CJK>
+<U7441> /xb7/xe8 <CJK>
+<U743F> /xb7/xe9 <CJK>
+<U7459> /xb7/xea <CJK>
+<U745B> /xb7/xeb <CJK>
+<U745C> /xb7/xec <CJK>
+<U7576> /xb7/xed <CJK>
+<U7578> /xb7/xee <CJK>
+<U7600> /xb7/xef <CJK>
+<U75F0> /xb7/xf0 <CJK>
+<U7601> /xb7/xf1 <CJK>
+<U75F2> /xb7/xf2 <CJK>
+<U75F1> /xb7/xf3 <CJK>
+<U75FA> /xb7/xf4 <CJK>
+<U75FF> /xb7/xf5 <CJK>
+<U75F4> /xb7/xf6 <CJK>
+<U75F3> /xb7/xf7 <CJK>
+<U76DE> /xb7/xf8 <CJK>
+<U76DF> /xb7/xf9 <CJK>
+<U775B> /xb7/xfa <CJK>
+<U776B> /xb7/xfb <CJK>
+<U7766> /xb7/xfc <CJK>
+<U775E> /xb7/xfd <CJK>
+<U7763> /xb7/xfe <CJK>
+<U7779> /xb8/x40 <CJK>
+<U776A> /xb8/x41 <CJK>
+<U776C> /xb8/x42 <CJK>
+<U775C> /xb8/x43 <CJK>
+<U7765> /xb8/x44 <CJK>
+<U7768> /xb8/x45 <CJK>
+<U7762> /xb8/x46 <CJK>
+<U77EE> /xb8/x47 <CJK>
+<U788E> /xb8/x48 <CJK>
+<U78B0> /xb8/x49 <CJK>
+<U7897> /xb8/x4a <CJK>
+<U7898> /xb8/x4b <CJK>
+<U788C> /xb8/x4c <CJK>
+<U7889> /xb8/x4d <CJK>
+<U787C> /xb8/x4e <CJK>
+<U7891> /xb8/x4f <CJK>
+<U7893> /xb8/x50 <CJK>
+<U787F> /xb8/x51 <CJK>
+<U797A> /xb8/x52 <CJK>
+<U797F> /xb8/x53 <CJK>
+<U7981> /xb8/x54 <CJK>
+<U842C> /xb8/x55 <CJK>
+<U79BD> /xb8/x56 <CJK>
+<U7A1C> /xb8/x57 <CJK>
+<U7A1A> /xb8/x58 <CJK>
+<U7A20> /xb8/x59 <CJK>
+<U7A14> /xb8/x5a <CJK>
+<U7A1F> /xb8/x5b <CJK>
+<U7A1E> /xb8/x5c <CJK>
+<U7A9F> /xb8/x5d <CJK>
+<U7AA0> /xb8/x5e <CJK>
+<U7B77> /xb8/x5f <CJK>
+<U7BC0> /xb8/x60 <CJK>
+<U7B60> /xb8/x61 <CJK>
+<U7B6E> /xb8/x62 <CJK>
+<U7B67> /xb8/x63 <CJK>
+<U7CB1> /xb8/x64 <CJK>
+<U7CB3> /xb8/x65 <CJK>
+<U7CB5> /xb8/x66 <CJK>
+<U7D93> /xb8/x67 <CJK>
+<U7D79> /xb8/x68 <CJK>
+<U7D91> /xb8/x69 <CJK>
+<U7D81> /xb8/x6a <CJK>
+<U7D8F> /xb8/x6b <CJK>
+<U7D5B> /xb8/x6c <CJK>
+<U7F6E> /xb8/x6d <CJK>
+<U7F69> /xb8/x6e <CJK>
+<U7F6A> /xb8/x6f <CJK>
+<U7F72> /xb8/x70 <CJK>
+<U7FA9> /xb8/x71 <CJK>
+<U7FA8> /xb8/x72 <CJK>
+<U7FA4> /xb8/x73 <CJK>
+<U8056> /xb8/x74 <CJK>
+<U8058> /xb8/x75 <CJK>
+<U8086> /xb8/x76 <CJK>
+<U8084> /xb8/x77 <CJK>
+<U8171> /xb8/x78 <CJK>
+<U8170> /xb8/x79 <CJK>
+<U8178> /xb8/x7a <CJK>
+<U8165> /xb8/x7b <CJK>
+<U816E> /xb8/x7c <CJK>
+<U8173> /xb8/x7d <CJK>
+<U816B> /xb8/x7e <CJK>
+<U8179> /xb8/xa1 <CJK>
+<U817A> /xb8/xa2 <CJK>
+<U8166> /xb8/xa3 <CJK>
+<U8205> /xb8/xa4 <CJK>
+<U8247> /xb8/xa5 <CJK>
+<U8482> /xb8/xa6 <CJK>
+<U8477> /xb8/xa7 <CJK>
+<U843D> /xb8/xa8 <CJK>
+<U8431> /xb8/xa9 <CJK>
+<U8475> /xb8/xaa <CJK>
+<U8466> /xb8/xab <CJK>
+<U846B> /xb8/xac <CJK>
+<U8449> /xb8/xad <CJK>
+<U846C> /xb8/xae <CJK>
+<U845B> /xb8/xaf <CJK>
+<U843C> /xb8/xb0 <CJK>
+<U8435> /xb8/xb1 <CJK>
+<U8461> /xb8/xb2 <CJK>
+<U8463> /xb8/xb3 <CJK>
+<U8469> /xb8/xb4 <CJK>
+<U846D> /xb8/xb5 <CJK>
+<U8446> /xb8/xb6 <CJK>
+<U865E> /xb8/xb7 <CJK>
+<U865C> /xb8/xb8 <CJK>
+<U865F> /xb8/xb9 <CJK>
+<U86F9> /xb8/xba <CJK>
+<U8713> /xb8/xbb <CJK>
+<U8708> /xb8/xbc <CJK>
+<U8707> /xb8/xbd <CJK>
+<U8700> /xb8/xbe <CJK>
+<U86FE> /xb8/xbf <CJK>
+<U86FB> /xb8/xc0 <CJK>
+<U8702> /xb8/xc1 <CJK>
+<U8703> /xb8/xc2 <CJK>
+<U8706> /xb8/xc3 <CJK>
+<U870A> /xb8/xc4 <CJK>
+<U8859> /xb8/xc5 <CJK>
+<U88DF> /xb8/xc6 <CJK>
+<U88D4> /xb8/xc7 <CJK>
+<U88D9> /xb8/xc8 <CJK>
+<U88DC> /xb8/xc9 <CJK>
+<U88D8> /xb8/xca <CJK>
+<U88DD> /xb8/xcb <CJK>
+<U88E1> /xb8/xcc <CJK>
+<U88CA> /xb8/xcd <CJK>
+<U88D5> /xb8/xce <CJK>
+<U88D2> /xb8/xcf <CJK>
+<U899C> /xb8/xd0 <CJK>
+<U89E3> /xb8/xd1 <CJK>
+<U8A6B> /xb8/xd2 <CJK>
+<U8A72> /xb8/xd3 <CJK>
+<U8A73> /xb8/xd4 <CJK>
+<U8A66> /xb8/xd5 <CJK>
+<U8A69> /xb8/xd6 <CJK>
+<U8A70> /xb8/xd7 <CJK>
+<U8A87> /xb8/xd8 <CJK>
+<U8A7C> /xb8/xd9 <CJK>
+<U8A63> /xb8/xda <CJK>
+<U8AA0> /xb8/xdb <CJK>
+<U8A71> /xb8/xdc <CJK>
+<U8A85> /xb8/xdd <CJK>
+<U8A6D> /xb8/xde <CJK>
+<U8A62> /xb8/xdf <CJK>
+<U8A6E> /xb8/xe0 <CJK>
+<U8A6C> /xb8/xe1 <CJK>
+<U8A79> /xb8/xe2 <CJK>
+<U8A7B> /xb8/xe3 <CJK>
+<U8A3E> /xb8/xe4 <CJK>
+<U8A68> /xb8/xe5 <CJK>
+<U8C62> /xb8/xe6 <CJK>
+<U8C8A> /xb8/xe7 <CJK>
+<U8C89> /xb8/xe8 <CJK>
+<U8CCA> /xb8/xe9 <CJK>
+<U8CC7> /xb8/xea <CJK>
+<U8CC8> /xb8/xeb <CJK>
+<U8CC4> /xb8/xec <CJK>
+<U8CB2> /xb8/xed <CJK>
+<U8CC3> /xb8/xee <CJK>
+<U8CC2> /xb8/xef <CJK>
+<U8CC5> /xb8/xf0 <CJK>
+<U8DE1> /xb8/xf1 <CJK>
+<U8DDF> /xb8/xf2 <CJK>
+<U8DE8> /xb8/xf3 <CJK>
+<U8DEF> /xb8/xf4 <CJK>
+<U8DF3> /xb8/xf5 <CJK>
+<U8DFA> /xb8/xf6 <CJK>
+<U8DEA> /xb8/xf7 <CJK>
+<U8DE4> /xb8/xf8 <CJK>
+<U8DE6> /xb8/xf9 <CJK>
+<U8EB2> /xb8/xfa <CJK>
+<U8F03> /xb8/xfb <CJK>
+<U8F09> /xb8/xfc <CJK>
+<U8EFE> /xb8/xfd <CJK>
+<U8F0A> /xb8/xfe <CJK>
+<U8F9F> /xb9/x40 <CJK>
+<U8FB2> /xb9/x41 <CJK>
+<U904B> /xb9/x42 <CJK>
+<U904A> /xb9/x43 <CJK>
+<U9053> /xb9/x44 <CJK>
+<U9042> /xb9/x45 <CJK>
+<U9054> /xb9/x46 <CJK>
+<U903C> /xb9/x47 <CJK>
+<U9055> /xb9/x48 <CJK>
+<U9050> /xb9/x49 <CJK>
+<U9047> /xb9/x4a <CJK>
+<U904F> /xb9/x4b <CJK>
+<U904E> /xb9/x4c <CJK>
+<U904D> /xb9/x4d <CJK>
+<U9051> /xb9/x4e <CJK>
+<U903E> /xb9/x4f <CJK>
+<U9041> /xb9/x50 <CJK>
+<U9112> /xb9/x51 <CJK>
+<U9117> /xb9/x52 <CJK>
+<U916C> /xb9/x53 <CJK>
+<U916A> /xb9/x54 <CJK>
+<U9169> /xb9/x55 <CJK>
+<U91C9> /xb9/x56 <CJK>
+<U9237> /xb9/x57 <CJK>
+<U9257> /xb9/x58 <CJK>
+<U9238> /xb9/x59 <CJK>
+<U923D> /xb9/x5a <CJK>
+<U9240> /xb9/x5b <CJK>
+<U923E> /xb9/x5c <CJK>
+<U925B> /xb9/x5d <CJK>
+<U924B> /xb9/x5e <CJK>
+<U9264> /xb9/x5f <CJK>
+<U9251> /xb9/x60 <CJK>
+<U9234> /xb9/x61 <CJK>
+<U9249> /xb9/x62 <CJK>
+<U924D> /xb9/x63 <CJK>
+<U9245> /xb9/x64 <CJK>
+<U9239> /xb9/x65 <CJK>
+<U923F> /xb9/x66 <CJK>
+<U925A> /xb9/x67 <CJK>
+<U9598> /xb9/x68 <CJK>
+<U9698> /xb9/x69 <CJK>
+<U9694> /xb9/x6a <CJK>
+<U9695> /xb9/x6b <CJK>
+<U96CD> /xb9/x6c <CJK>
+<U96CB> /xb9/x6d <CJK>
+<U96C9> /xb9/x6e <CJK>
+<U96CA> /xb9/x6f <CJK>
+<U96F7> /xb9/x70 <CJK>
+<U96FB> /xb9/x71 <CJK>
+<U96F9> /xb9/x72 <CJK>
+<U96F6> /xb9/x73 <CJK>
+<U9756> /xb9/x74 <CJK>
+<U9774> /xb9/x75 <CJK>
+<U9776> /xb9/x76 <CJK>
+<U9810> /xb9/x77 <CJK>
+<U9811> /xb9/x78 <CJK>
+<U9813> /xb9/x79 <CJK>
+<U980A> /xb9/x7a <CJK>
+<U9812> /xb9/x7b <CJK>
+<U980C> /xb9/x7c <CJK>
+<U98FC> /xb9/x7d <CJK>
+<U98F4> /xb9/x7e <CJK>
+<U98FD> /xb9/xa1 <CJK>
+<U98FE> /xb9/xa2 <CJK>
+<U99B3> /xb9/xa3 <CJK>
+<U99B1> /xb9/xa4 <CJK>
+<U99B4> /xb9/xa5 <CJK>
+<U9AE1> /xb9/xa6 <CJK>
+<U9CE9> /xb9/xa7 <CJK>
+<U9E82> /xb9/xa8 <CJK>
+<U9F0E> /xb9/xa9 <CJK>
+<U9F13> /xb9/xaa <CJK>
+<U9F20> /xb9/xab <CJK>
+<U50E7> /xb9/xac <CJK>
+<U50EE> /xb9/xad <CJK>
+<U50E5> /xb9/xae <CJK>
+<U50D6> /xb9/xaf <CJK>
+<U50ED> /xb9/xb0 <CJK>
+<U50DA> /xb9/xb1 <CJK>
+<U50D5> /xb9/xb2 <CJK>
+<U50CF> /xb9/xb3 <CJK>
+<U50D1> /xb9/xb4 <CJK>
+<U50F1> /xb9/xb5 <CJK>
+<U50CE> /xb9/xb6 <CJK>
+<U50E9> /xb9/xb7 <CJK>
+<U5162> /xb9/xb8 <CJK>
+<U51F3> /xb9/xb9 <CJK>
+<U5283> /xb9/xba <CJK>
+<U5282> /xb9/xbb <CJK>
+<U5331> /xb9/xbc <CJK>
+<U53AD> /xb9/xbd <CJK>
+<U55FE> /xb9/xbe <CJK>
+<U5600> /xb9/xbf <CJK>
+<U561B> /xb9/xc0 <CJK>
+<U5617> /xb9/xc1 <CJK>
+<U55FD> /xb9/xc2 <CJK>
+<U5614> /xb9/xc3 <CJK>
+<U5606> /xb9/xc4 <CJK>
+<U5609> /xb9/xc5 <CJK>
+<U560D> /xb9/xc6 <CJK>
+<U560E> /xb9/xc7 <CJK>
+<U55F7> /xb9/xc8 <CJK>
+<U5616> /xb9/xc9 <CJK>
+<U561F> /xb9/xca <CJK>
+<U5608> /xb9/xcb <CJK>
+<U5610> /xb9/xcc <CJK>
+<U55F6> /xb9/xcd <CJK>
+<U5718> /xb9/xce <CJK>
+<U5716> /xb9/xcf <CJK>
+<U5875> /xb9/xd0 <CJK>
+<U587E> /xb9/xd1 <CJK>
+<U5883> /xb9/xd2 <CJK>
+<U5893> /xb9/xd3 <CJK>
+<U588A> /xb9/xd4 <CJK>
+<U5879> /xb9/xd5 <CJK>
+<U5885> /xb9/xd6 <CJK>
+<U587D> /xb9/xd7 <CJK>
+<U58FD> /xb9/xd8 <CJK>
+<U5925> /xb9/xd9 <CJK>
+<U5922> /xb9/xda <CJK>
+<U5924> /xb9/xdb <CJK>
+<U596A> /xb9/xdc <CJK>
+<U5969> /xb9/xdd <CJK>
+<U5AE1> /xb9/xde <CJK>
+<U5AE6> /xb9/xdf <CJK>
+<U5AE9> /xb9/xe0 <CJK>
+<U5AD7> /xb9/xe1 <CJK>
+<U5AD6> /xb9/xe2 <CJK>
+<U5AD8> /xb9/xe3 <CJK>
+<U5AE3> /xb9/xe4 <CJK>
+<U5B75> /xb9/xe5 <CJK>
+<U5BDE> /xb9/xe6 <CJK>
+<U5BE7> /xb9/xe7 <CJK>
+<U5BE1> /xb9/xe8 <CJK>
+<U5BE5> /xb9/xe9 <CJK>
+<U5BE6> /xb9/xea <CJK>
+<U5BE8> /xb9/xeb <CJK>
+<U5BE2> /xb9/xec <CJK>
+<U5BE4> /xb9/xed <CJK>
+<U5BDF> /xb9/xee <CJK>
+<U5C0D> /xb9/xef <CJK>
+<U5C62> /xb9/xf0 <CJK>
+<U5D84> /xb9/xf1 <CJK>
+<U5D87> /xb9/xf2 <CJK>
+<U5E5B> /xb9/xf3 <CJK>
+<U5E63> /xb9/xf4 <CJK>
+<U5E55> /xb9/xf5 <CJK>
+<U5E57> /xb9/xf6 <CJK>
+<U5E54> /xb9/xf7 <CJK>
+<U5ED3> /xb9/xf8 <CJK>
+<U5ED6> /xb9/xf9 <CJK>
+<U5F0A> /xb9/xfa <CJK>
+<U5F46> /xb9/xfb <CJK>
+<U5F70> /xb9/xfc <CJK>
+<U5FB9> /xb9/xfd <CJK>
+<U6147> /xb9/xfe <CJK>
+<U613F> /xba/x40 <CJK>
+<U614B> /xba/x41 <CJK>
+<U6177> /xba/x42 <CJK>
+<U6162> /xba/x43 <CJK>
+<U6163> /xba/x44 <CJK>
+<U615F> /xba/x45 <CJK>
+<U615A> /xba/x46 <CJK>
+<U6158> /xba/x47 <CJK>
+<U6175> /xba/x48 <CJK>
+<U622A> /xba/x49 <CJK>
+<U6487> /xba/x4a <CJK>
+<U6458> /xba/x4b <CJK>
+<U6454> /xba/x4c <CJK>
+<U64A4> /xba/x4d <CJK>
+<U6478> /xba/x4e <CJK>
+<U645F> /xba/x4f <CJK>
+<U647A> /xba/x50 <CJK>
+<U6451> /xba/x51 <CJK>
+<U6467> /xba/x52 <CJK>
+<U6434> /xba/x53 <CJK>
+<U646D> /xba/x54 <CJK>
+<U647B> /xba/x55 <CJK>
+<U6572> /xba/x56 <CJK>
+<U65A1> /xba/x57 <CJK>
+<U65D7> /xba/x58 <CJK>
+<U65D6> /xba/x59 <CJK>
+<U66A2> /xba/x5a <CJK>
+<U66A8> /xba/x5b <CJK>
+<U669D> /xba/x5c <CJK>
+<U699C> /xba/x5d <CJK>
+<U69A8> /xba/x5e <CJK>
+<U6995> /xba/x5f <CJK>
+<U69C1> /xba/x60 <CJK>
+<U69AE> /xba/x61 <CJK>
+<U69D3> /xba/x62 <CJK>
+<U69CB> /xba/x63 <CJK>
+<U699B> /xba/x64 <CJK>
+<U69B7> /xba/x65 <CJK>
+<U69BB> /xba/x66 <CJK>
+<U69AB> /xba/x67 <CJK>
+<U69B4> /xba/x68 <CJK>
+<U69D0> /xba/x69 <CJK>
+<U69CD> /xba/x6a <CJK>
+<U69AD> /xba/x6b <CJK>
+<U69CC> /xba/x6c <CJK>
+<U69A6> /xba/x6d <CJK>
+<U69C3> /xba/x6e <CJK>
+<U69A3> /xba/x6f <CJK>
+<U6B49> /xba/x70 <CJK>
+<U6B4C> /xba/x71 <CJK>
+<U6C33> /xba/x72 <CJK>
+<U6F33> /xba/x73 <CJK>
+<U6F14> /xba/x74 <CJK>
+<U6EFE> /xba/x75 <CJK>
+<U6F13> /xba/x76 <CJK>
+<U6EF4> /xba/x77 <CJK>
+<U6F29> /xba/x78 <CJK>
+<U6F3E> /xba/x79 <CJK>
+<U6F20> /xba/x7a <CJK>
+<U6F2C> /xba/x7b <CJK>
+<U6F0F> /xba/x7c <CJK>
+<U6F02> /xba/x7d <CJK>
+<U6F22> /xba/x7e <CJK>
+<U6EFF> /xba/xa1 <CJK>
+<U6EEF> /xba/xa2 <CJK>
+<U6F06> /xba/xa3 <CJK>
+<U6F31> /xba/xa4 <CJK>
+<U6F38> /xba/xa5 <CJK>
+<U6F32> /xba/xa6 <CJK>
+<U6F23> /xba/xa7 <CJK>
+<U6F15> /xba/xa8 <CJK>
+<U6F2B> /xba/xa9 <CJK>
+<U6F2F> /xba/xaa <CJK>
+<U6F88> /xba/xab <CJK>
+<U6F2A> /xba/xac <CJK>
+<U6EEC> /xba/xad <CJK>
+<U6F01> /xba/xae <CJK>
+<U6EF2> /xba/xaf <CJK>
+<U6ECC> /xba/xb0 <CJK>
+<U6EF7> /xba/xb1 <CJK>
+<U7194> /xba/xb2 <CJK>
+<U7199> /xba/xb3 <CJK>
+<U717D> /xba/xb4 <CJK>
+<U718A> /xba/xb5 <CJK>
+<U7184> /xba/xb6 <CJK>
+<U7192> /xba/xb7 <CJK>
+<U723E> /xba/xb8 <CJK>
+<U7292> /xba/xb9 <CJK>
+<U7296> /xba/xba <CJK>
+<U7344> /xba/xbb <CJK>
+<U7350> /xba/xbc <CJK>
+<U7464> /xba/xbd <CJK>
+<U7463> /xba/xbe <CJK>
+<U746A> /xba/xbf <CJK>
+<U7470> /xba/xc0 <CJK>
+<U746D> /xba/xc1 <CJK>
+<U7504> /xba/xc2 <CJK>
+<U7591> /xba/xc3 <CJK>
+<U7627> /xba/xc4 <CJK>
+<U760D> /xba/xc5 <CJK>
+<U760B> /xba/xc6 <CJK>
+<U7609> /xba/xc7 <CJK>
+<U7613> /xba/xc8 <CJK>
+<U76E1> /xba/xc9 <CJK>
+<U76E3> /xba/xca <CJK>
+<U7784> /xba/xcb <CJK>
+<U777D> /xba/xcc <CJK>
+<U777F> /xba/xcd <CJK>
+<U7761> /xba/xce <CJK>
+<U78C1> /xba/xcf <CJK>
+<U789F> /xba/xd0 <CJK>
+<U78A7> /xba/xd1 <CJK>
+<U78B3> /xba/xd2 <CJK>
+<U78A9> /xba/xd3 <CJK>
+<U78A3> /xba/xd4 <CJK>
+<U798E> /xba/xd5 <CJK>
+<U798F> /xba/xd6 <CJK>
+<U798D> /xba/xd7 <CJK>
+<U7A2E> /xba/xd8 <CJK>
+<U7A31> /xba/xd9 <CJK>
+<U7AAA> /xba/xda <CJK>
+<U7AA9> /xba/xdb <CJK>
+<U7AED> /xba/xdc <CJK>
+<U7AEF> /xba/xdd <CJK>
+<U7BA1> /xba/xde <CJK>
+<U7B95> /xba/xdf <CJK>
+<U7B8B> /xba/xe0 <CJK>
+<U7B75> /xba/xe1 <CJK>
+<U7B97> /xba/xe2 <CJK>
+<U7B9D> /xba/xe3 <CJK>
+<U7B94> /xba/xe4 <CJK>
+<U7B8F> /xba/xe5 <CJK>
+<U7BB8> /xba/xe6 <CJK>
+<U7B87> /xba/xe7 <CJK>
+<U7B84> /xba/xe8 <CJK>
+<U7CB9> /xba/xe9 <CJK>
+<U7CBD> /xba/xea <CJK>
+<U7CBE> /xba/xeb <CJK>
+<U7DBB> /xba/xec <CJK>
+<U7DB0> /xba/xed <CJK>
+<U7D9C> /xba/xee <CJK>
+<U7DBD> /xba/xef <CJK>
+<U7DBE> /xba/xf0 <CJK>
+<U7DA0> /xba/xf1 <CJK>
+<U7DCA> /xba/xf2 <CJK>
+<U7DB4> /xba/xf3 <CJK>
+<U7DB2> /xba/xf4 <CJK>
+<U7DB1> /xba/xf5 <CJK>
+<U7DBA> /xba/xf6 <CJK>
+<U7DA2> /xba/xf7 <CJK>
+<U7DBF> /xba/xf8 <CJK>
+<U7DB5> /xba/xf9 <CJK>
+<U7DB8> /xba/xfa <CJK>
+<U7DAD> /xba/xfb <CJK>
+<U7DD2> /xba/xfc <CJK>
+<U7DC7> /xba/xfd <CJK>
+<U7DAC> /xba/xfe <CJK>
+<U7F70> /xbb/x40 <CJK>
+<U7FE0> /xbb/x41 <CJK>
+<U7FE1> /xbb/x42 <CJK>
+<U7FDF> /xbb/x43 <CJK>
+<U805E> /xbb/x44 <CJK>
+<U805A> /xbb/x45 <CJK>
+<U8087> /xbb/x46 <CJK>
+<U8150> /xbb/x47 <CJK>
+<U8180> /xbb/x48 <CJK>
+<U818F> /xbb/x49 <CJK>
+<U8188> /xbb/x4a <CJK>
+<U818A> /xbb/x4b <CJK>
+<U817F> /xbb/x4c <CJK>
+<U8182> /xbb/x4d <CJK>
+<U81E7> /xbb/x4e <CJK>
+<U81FA> /xbb/x4f <CJK>
+<U8207> /xbb/x50 <CJK>
+<U8214> /xbb/x51 <CJK>
+<U821E> /xbb/x52 <CJK>
+<U824B> /xbb/x53 <CJK>
+<U84C9> /xbb/x54 <CJK>
+<U84BF> /xbb/x55 <CJK>
+<U84C6> /xbb/x56 <CJK>
+<U84C4> /xbb/x57 <CJK>
+<U8499> /xbb/x58 <CJK>
+<U849E> /xbb/x59 <CJK>
+<U84B2> /xbb/x5a <CJK>
+<U849C> /xbb/x5b <CJK>
+<U84CB> /xbb/x5c <CJK>
+<U84B8> /xbb/x5d <CJK>
+<U84C0> /xbb/x5e <CJK>
+<U84D3> /xbb/x5f <CJK>
+<U8490> /xbb/x60 <CJK>
+<U84BC> /xbb/x61 <CJK>
+<U84D1> /xbb/x62 <CJK>
+<U84CA> /xbb/x63 <CJK>
+<U873F> /xbb/x64 <CJK>
+<U871C> /xbb/x65 <CJK>
+<U873B> /xbb/x66 <CJK>
+<U8722> /xbb/x67 <CJK>
+<U8725> /xbb/x68 <CJK>
+<U8734> /xbb/x69 <CJK>
+<U8718> /xbb/x6a <CJK>
+<U8755> /xbb/x6b <CJK>
+<U8737> /xbb/x6c <CJK>
+<U8729> /xbb/x6d <CJK>
+<U88F3> /xbb/x6e <CJK>
+<U8902> /xbb/x6f <CJK>
+<U88F4> /xbb/x70 <CJK>
+<U88F9> /xbb/x71 <CJK>
+<U88F8> /xbb/x72 <CJK>
+<U88FD> /xbb/x73 <CJK>
+<U88E8> /xbb/x74 <CJK>
+<U891A> /xbb/x75 <CJK>
+<U88EF> /xbb/x76 <CJK>
+<U8AA6> /xbb/x77 <CJK>
+<U8A8C> /xbb/x78 <CJK>
+<U8A9E> /xbb/x79 <CJK>
+<U8AA3> /xbb/x7a <CJK>
+<U8A8D> /xbb/x7b <CJK>
+<U8AA1> /xbb/x7c <CJK>
+<U8A93> /xbb/x7d <CJK>
+<U8AA4> /xbb/x7e <CJK>
+<U8AAA> /xbb/xa1 <CJK>
+<U8AA5> /xbb/xa2 <CJK>
+<U8AA8> /xbb/xa3 <CJK>
+<U8A98> /xbb/xa4 <CJK>
+<U8A91> /xbb/xa5 <CJK>
+<U8A9A> /xbb/xa6 <CJK>
+<U8AA7> /xbb/xa7 <CJK>
+<U8C6A> /xbb/xa8 <CJK>
+<U8C8D> /xbb/xa9 <CJK>
+<U8C8C> /xbb/xaa <CJK>
+<U8CD3> /xbb/xab <CJK>
+<U8CD1> /xbb/xac <CJK>
+<U8CD2> /xbb/xad <CJK>
+<U8D6B> /xbb/xae <CJK>
+<U8D99> /xbb/xaf <CJK>
+<U8D95> /xbb/xb0 <CJK>
+<U8DFC> /xbb/xb1 <CJK>
+<U8F14> /xbb/xb2 <CJK>
+<U8F12> /xbb/xb3 <CJK>
+<U8F15> /xbb/xb4 <CJK>
+<U8F13> /xbb/xb5 <CJK>
+<U8FA3> /xbb/xb6 <CJK>
+<U9060> /xbb/xb7 <CJK>
+<U9058> /xbb/xb8 <CJK>
+<U905C> /xbb/xb9 <CJK>
+<U9063> /xbb/xba <CJK>
+<U9059> /xbb/xbb <CJK>
+<U905E> /xbb/xbc <CJK>
+<U9062> /xbb/xbd <CJK>
+<U905D> /xbb/xbe <CJK>
+<U905B> /xbb/xbf <CJK>
+<U9119> /xbb/xc0 <CJK>
+<U9118> /xbb/xc1 <CJK>
+<U911E> /xbb/xc2 <CJK>
+<U9175> /xbb/xc3 <CJK>
+<U9178> /xbb/xc4 <CJK>
+<U9177> /xbb/xc5 <CJK>
+<U9174> /xbb/xc6 <CJK>
+<U9278> /xbb/xc7 <CJK>
+<U9280> /xbb/xc8 <CJK>
+<U9285> /xbb/xc9 <CJK>
+<U9298> /xbb/xca <CJK>
+<U9296> /xbb/xcb <CJK>
+<U927B> /xbb/xcc <CJK>
+<U9293> /xbb/xcd <CJK>
+<U929C> /xbb/xce <CJK>
+<U92A8> /xbb/xcf <CJK>
+<U927C> /xbb/xd0 <CJK>
+<U9291> /xbb/xd1 <CJK>
+<U95A1> /xbb/xd2 <CJK>
+<U95A8> /xbb/xd3 <CJK>
+<U95A9> /xbb/xd4 <CJK>
+<U95A3> /xbb/xd5 <CJK>
+<U95A5> /xbb/xd6 <CJK>
+<U95A4> /xbb/xd7 <CJK>
+<U9699> /xbb/xd8 <CJK>
+<U969C> /xbb/xd9 <CJK>
+<U969B> /xbb/xda <CJK>
+<U96CC> /xbb/xdb <CJK>
+<U96D2> /xbb/xdc <CJK>
+<U9700> /xbb/xdd <CJK>
+<U977C> /xbb/xde <CJK>
+<U9785> /xbb/xdf <CJK>
+<U97F6> /xbb/xe0 <CJK>
+<U9817> /xbb/xe1 <CJK>
+<U9818> /xbb/xe2 <CJK>
+<U98AF> /xbb/xe3 <CJK>
+<U98B1> /xbb/xe4 <CJK>
+<U9903> /xbb/xe5 <CJK>
+<U9905> /xbb/xe6 <CJK>
+<U990C> /xbb/xe7 <CJK>
+<U9909> /xbb/xe8 <CJK>
+<U99C1> /xbb/xe9 <CJK>
+<U9AAF> /xbb/xea <CJK>
+<U9AB0> /xbb/xeb <CJK>
+<U9AE6> /xbb/xec <CJK>
+<U9B41> /xbb/xed <CJK>
+<U9B42> /xbb/xee <CJK>
+<U9CF4> /xbb/xef <CJK>
+<U9CF6> /xbb/xf0 <CJK>
+<U9CF3> /xbb/xf1 <CJK>
+<U9EBC> /xbb/xf2 <CJK>
+<U9F3B> /xbb/xf3 <CJK>
+<U9F4A> /xbb/xf4 <CJK>
+<U5104> /xbb/xf5 <CJK>
+<U5100> /xbb/xf6 <CJK>
+<U50FB> /xbb/xf7 <CJK>
+<U50F5> /xbb/xf8 <CJK>
+<U50F9> /xbb/xf9 <CJK>
+<U5102> /xbb/xfa <CJK>
+<U5108> /xbb/xfb <CJK>
+<U5109> /xbb/xfc <CJK>
+<U5105> /xbb/xfd <CJK>
+<U51DC> /xbb/xfe <CJK>
+<U5287> /xbc/x40 <CJK>
+<U5288> /xbc/x41 <CJK>
+<U5289> /xbc/x42 <CJK>
+<U528D> /xbc/x43 <CJK>
+<U528A> /xbc/x44 <CJK>
+<U52F0> /xbc/x45 <CJK>
+<U53B2> /xbc/x46 <CJK>
+<U562E> /xbc/x47 <CJK>
+<U563B> /xbc/x48 <CJK>
+<U5639> /xbc/x49 <CJK>
+<U5632> /xbc/x4a <CJK>
+<U563F> /xbc/x4b <CJK>
+<U5634> /xbc/x4c <CJK>
+<U5629> /xbc/x4d <CJK>
+<U5653> /xbc/x4e <CJK>
+<U564E> /xbc/x4f <CJK>
+<U5657> /xbc/x50 <CJK>
+<U5674> /xbc/x51 <CJK>
+<U5636> /xbc/x52 <CJK>
+<U562F> /xbc/x53 <CJK>
+<U5630> /xbc/x54 <CJK>
+<U5880> /xbc/x55 <CJK>
+<U589F> /xbc/x56 <CJK>
+<U589E> /xbc/x57 <CJK>
+<U58B3> /xbc/x58 <CJK>
+<U589C> /xbc/x59 <CJK>
+<U58AE> /xbc/x5a <CJK>
+<U58A9> /xbc/x5b <CJK>
+<U58A6> /xbc/x5c <CJK>
+<U596D> /xbc/x5d <CJK>
+<U5B09> /xbc/x5e <CJK>
+<U5AFB> /xbc/x5f <CJK>
+<U5B0B> /xbc/x60 <CJK>
+<U5AF5> /xbc/x61 <CJK>
+<U5B0C> /xbc/x62 <CJK>
+<U5B08> /xbc/x63 <CJK>
+<U5BEE> /xbc/x64 <CJK>
+<U5BEC> /xbc/x65 <CJK>
+<U5BE9> /xbc/x66 <CJK>
+<U5BEB> /xbc/x67 <CJK>
+<U5C64> /xbc/x68 <CJK>
+<U5C65> /xbc/x69 <CJK>
+<U5D9D> /xbc/x6a <CJK>
+<U5D94> /xbc/x6b <CJK>
+<U5E62> /xbc/x6c <CJK>
+<U5E5F> /xbc/x6d <CJK>
+<U5E61> /xbc/x6e <CJK>
+<U5EE2> /xbc/x6f <CJK>
+<U5EDA> /xbc/x70 <CJK>
+<U5EDF> /xbc/x71 <CJK>
+<U5EDD> /xbc/x72 <CJK>
+<U5EE3> /xbc/x73 <CJK>
+<U5EE0> /xbc/x74 <CJK>
+<U5F48> /xbc/x75 <CJK>
+<U5F71> /xbc/x76 <CJK>
+<U5FB7> /xbc/x77 <CJK>
+<U5FB5> /xbc/x78 <CJK>
+<U6176> /xbc/x79 <CJK>
+<U6167> /xbc/x7a <CJK>
+<U616E> /xbc/x7b <CJK>
+<U615D> /xbc/x7c <CJK>
+<U6155> /xbc/x7d <CJK>
+<U6182> /xbc/x7e <CJK>
+<U617C> /xbc/xa1 <CJK>
+<U6170> /xbc/xa2 <CJK>
+<U616B> /xbc/xa3 <CJK>
+<U617E> /xbc/xa4 <CJK>
+<U61A7> /xbc/xa5 <CJK>
+<U6190> /xbc/xa6 <CJK>
+<U61AB> /xbc/xa7 <CJK>
+<U618E> /xbc/xa8 <CJK>
+<U61AC> /xbc/xa9 <CJK>
+<U619A> /xbc/xaa <CJK>
+<U61A4> /xbc/xab <CJK>
+<U6194> /xbc/xac <CJK>
+<U61AE> /xbc/xad <CJK>
+<U622E> /xbc/xae <CJK>
+<U6469> /xbc/xaf <CJK>
+<U646F> /xbc/xb0 <CJK>
+<U6479> /xbc/xb1 <CJK>
+<U649E> /xbc/xb2 <CJK>
+<U64B2> /xbc/xb3 <CJK>
+<U6488> /xbc/xb4 <CJK>
+<U6490> /xbc/xb5 <CJK>
+<U64B0> /xbc/xb6 <CJK>
+<U64A5> /xbc/xb7 <CJK>
+<U6493> /xbc/xb8 <CJK>
+<U6495> /xbc/xb9 <CJK>
+<U64A9> /xbc/xba <CJK>
+<U6492> /xbc/xbb <CJK>
+<U64AE> /xbc/xbc <CJK>
+<U64AD> /xbc/xbd <CJK>
+<U64AB> /xbc/xbe <CJK>
+<U649A> /xbc/xbf <CJK>
+<U64AC> /xbc/xc0 <CJK>
+<U6499> /xbc/xc1 <CJK>
+<U64A2> /xbc/xc2 <CJK>
+<U64B3> /xbc/xc3 <CJK>
+<U6575> /xbc/xc4 <CJK>
+<U6577> /xbc/xc5 <CJK>
+<U6578> /xbc/xc6 <CJK>
+<U66AE> /xbc/xc7 <CJK>
+<U66AB> /xbc/xc8 <CJK>
+<U66B4> /xbc/xc9 <CJK>
+<U66B1> /xbc/xca <CJK>
+<U6A23> /xbc/xcb <CJK>
+<U6A1F> /xbc/xcc <CJK>
+<U69E8> /xbc/xcd <CJK>
+<U6A01> /xbc/xce <CJK>
+<U6A1E> /xbc/xcf <CJK>
+<U6A19> /xbc/xd0 <CJK>
+<U69FD> /xbc/xd1 <CJK>
+<U6A21> /xbc/xd2 <CJK>
+<U6A13> /xbc/xd3 <CJK>
+<U6A0A> /xbc/xd4 <CJK>
+<U69F3> /xbc/xd5 <CJK>
+<U6A02> /xbc/xd6 <CJK>
+<U6A05> /xbc/xd7 <CJK>
+<U69ED> /xbc/xd8 <CJK>
+<U6A11> /xbc/xd9 <CJK>
+<U6B50> /xbc/xda <CJK>
+<U6B4E> /xbc/xdb <CJK>
+<U6BA4> /xbc/xdc <CJK>
+<U6BC5> /xbc/xdd <CJK>
+<U6BC6> /xbc/xde <CJK>
+<U6F3F> /xbc/xdf <CJK>
+<U6F7C> /xbc/xe0 <CJK>
+<U6F84> /xbc/xe1 <CJK>
+<U6F51> /xbc/xe2 <CJK>
+<U6F66> /xbc/xe3 <CJK>
+<U6F54> /xbc/xe4 <CJK>
+<U6F86> /xbc/xe5 <CJK>
+<U6F6D> /xbc/xe6 <CJK>
+<U6F5B> /xbc/xe7 <CJK>
+<U6F78> /xbc/xe8 <CJK>
+<U6F6E> /xbc/xe9 <CJK>
+<U6F8E> /xbc/xea <CJK>
+<U6F7A> /xbc/xeb <CJK>
+<U6F70> /xbc/xec <CJK>
+<U6F64> /xbc/xed <CJK>
+<U6F97> /xbc/xee <CJK>
+<U6F58> /xbc/xef <CJK>
+<U6ED5> /xbc/xf0 <CJK>
+<U6F6F> /xbc/xf1 <CJK>
+<U6F60> /xbc/xf2 <CJK>
+<U6F5F> /xbc/xf3 <CJK>
+<U719F> /xbc/xf4 <CJK>
+<U71AC> /xbc/xf5 <CJK>
+<U71B1> /xbc/xf6 <CJK>
+<U71A8> /xbc/xf7 <CJK>
+<U7256> /xbc/xf8 <CJK>
+<U729B> /xbc/xf9 <CJK>
+<U734E> /xbc/xfa <CJK>
+<U7357> /xbc/xfb <CJK>
+<U7469> /xbc/xfc <CJK>
+<U748B> /xbc/xfd <CJK>
+<U7483> /xbc/xfe <CJK>
+<U747E> /xbd/x40 <CJK>
+<U7480> /xbd/x41 <CJK>
+<U757F> /xbd/x42 <CJK>
+<U7620> /xbd/x43 <CJK>
+<U7629> /xbd/x44 <CJK>
+<U761F> /xbd/x45 <CJK>
+<U7624> /xbd/x46 <CJK>
+<U7626> /xbd/x47 <CJK>
+<U7621> /xbd/x48 <CJK>
+<U7622> /xbd/x49 <CJK>
+<U769A> /xbd/x4a <CJK>
+<U76BA> /xbd/x4b <CJK>
+<U76E4> /xbd/x4c <CJK>
+<U778E> /xbd/x4d <CJK>
+<U7787> /xbd/x4e <CJK>
+<U778C> /xbd/x4f <CJK>
+<U7791> /xbd/x50 <CJK>
+<U778B> /xbd/x51 <CJK>
+<U78CB> /xbd/x52 <CJK>
+<U78C5> /xbd/x53 <CJK>
+<U78BA> /xbd/x54 <CJK>
+<U78CA> /xbd/x55 <CJK>
+<U78BE> /xbd/x56 <CJK>
+<U78D5> /xbd/x57 <CJK>
+<U78BC> /xbd/x58 <CJK>
+<U78D0> /xbd/x59 <CJK>
+<U7A3F> /xbd/x5a <CJK>
+<U7A3C> /xbd/x5b <CJK>
+<U7A40> /xbd/x5c <CJK>
+<U7A3D> /xbd/x5d <CJK>
+<U7A37> /xbd/x5e <CJK>
+<U7A3B> /xbd/x5f <CJK>
+<U7AAF> /xbd/x60 <CJK>
+<U7AAE> /xbd/x61 <CJK>
+<U7BAD> /xbd/x62 <CJK>
+<U7BB1> /xbd/x63 <CJK>
+<U7BC4> /xbd/x64 <CJK>
+<U7BB4> /xbd/x65 <CJK>
+<U7BC6> /xbd/x66 <CJK>
+<U7BC7> /xbd/x67 <CJK>
+<U7BC1> /xbd/x68 <CJK>
+<U7BA0> /xbd/x69 <CJK>
+<U7BCC> /xbd/x6a <CJK>
+<U7CCA> /xbd/x6b <CJK>
+<U7DE0> /xbd/x6c <CJK>
+<U7DF4> /xbd/x6d <CJK>
+<U7DEF> /xbd/x6e <CJK>
+<U7DFB> /xbd/x6f <CJK>
+<U7DD8> /xbd/x70 <CJK>
+<U7DEC> /xbd/x71 <CJK>
+<U7DDD> /xbd/x72 <CJK>
+<U7DE8> /xbd/x73 <CJK>
+<U7DE3> /xbd/x74 <CJK>
+<U7DDA> /xbd/x75 <CJK>
+<U7DDE> /xbd/x76 <CJK>
+<U7DE9> /xbd/x77 <CJK>
+<U7D9E> /xbd/x78 <CJK>
+<U7DD9> /xbd/x79 <CJK>
+<U7DF2> /xbd/x7a <CJK>
+<U7DF9> /xbd/x7b <CJK>
+<U7F75> /xbd/x7c <CJK>
+<U7F77> /xbd/x7d <CJK>
+<U7FAF> /xbd/x7e <CJK>
+<U7FE9> /xbd/xa1 <CJK>
+<U8026> /xbd/xa2 <CJK>
+<U819B> /xbd/xa3 <CJK>
+<U819C> /xbd/xa4 <CJK>
+<U819D> /xbd/xa5 <CJK>
+<U81A0> /xbd/xa6 <CJK>
+<U819A> /xbd/xa7 <CJK>
+<U8198> /xbd/xa8 <CJK>
+<U8517> /xbd/xa9 <CJK>
+<U853D> /xbd/xaa <CJK>
+<U851A> /xbd/xab <CJK>
+<U84EE> /xbd/xac <CJK>
+<U852C> /xbd/xad <CJK>
+<U852D> /xbd/xae <CJK>
+<U8513> /xbd/xaf <CJK>
+<U8511> /xbd/xb0 <CJK>
+<U8523> /xbd/xb1 <CJK>
+<U8521> /xbd/xb2 <CJK>
+<U8514> /xbd/xb3 <CJK>
+<U84EC> /xbd/xb4 <CJK>
+<U8525> /xbd/xb5 <CJK>
+<U84FF> /xbd/xb6 <CJK>
+<U8506> /xbd/xb7 <CJK>
+<U8782> /xbd/xb8 <CJK>
+<U8774> /xbd/xb9 <CJK>
+<U8776> /xbd/xba <CJK>
+<U8760> /xbd/xbb <CJK>
+<U8766> /xbd/xbc <CJK>
+<U8778> /xbd/xbd <CJK>
+<U8768> /xbd/xbe <CJK>
+<U8759> /xbd/xbf <CJK>
+<U8757> /xbd/xc0 <CJK>
+<U874C> /xbd/xc1 <CJK>
+<U8753> /xbd/xc2 <CJK>
+<U885B> /xbd/xc3 <CJK>
+<U885D> /xbd/xc4 <CJK>
+<U8910> /xbd/xc5 <CJK>
+<U8907> /xbd/xc6 <CJK>
+<U8912> /xbd/xc7 <CJK>
+<U8913> /xbd/xc8 <CJK>
+<U8915> /xbd/xc9 <CJK>
+<U890A> /xbd/xca <CJK>
+<U8ABC> /xbd/xcb <CJK>
+<U8AD2> /xbd/xcc <CJK>
+<U8AC7> /xbd/xcd <CJK>
+<U8AC4> /xbd/xce <CJK>
+<U8A95> /xbd/xcf <CJK>
+<U8ACB> /xbd/xd0 <CJK>
+<U8AF8> /xbd/xd1 <CJK>
+<U8AB2> /xbd/xd2 <CJK>
+<U8AC9> /xbd/xd3 <CJK>
+<U8AC2> /xbd/xd4 <CJK>
+<U8ABF> /xbd/xd5 <CJK>
+<U8AB0> /xbd/xd6 <CJK>
+<U8AD6> /xbd/xd7 <CJK>
+<U8ACD> /xbd/xd8 <CJK>
+<U8AB6> /xbd/xd9 <CJK>
+<U8AB9> /xbd/xda <CJK>
+<U8ADB> /xbd/xdb <CJK>
+<U8C4C> /xbd/xdc <CJK>
+<U8C4E> /xbd/xdd <CJK>
+<U8C6C> /xbd/xde <CJK>
+<U8CE0> /xbd/xdf <CJK>
+<U8CDE> /xbd/xe0 <CJK>
+<U8CE6> /xbd/xe1 <CJK>
+<U8CE4> /xbd/xe2 <CJK>
+<U8CEC> /xbd/xe3 <CJK>
+<U8CED> /xbd/xe4 <CJK>
+<U8CE2> /xbd/xe5 <CJK>
+<U8CE3> /xbd/xe6 <CJK>
+<U8CDC> /xbd/xe7 <CJK>
+<U8CEA> /xbd/xe8 <CJK>
+<U8CE1> /xbd/xe9 <CJK>
+<U8D6D> /xbd/xea <CJK>
+<U8D9F> /xbd/xeb <CJK>
+<U8DA3> /xbd/xec <CJK>
+<U8E2B> /xbd/xed <CJK>
+<U8E10> /xbd/xee <CJK>
+<U8E1D> /xbd/xef <CJK>
+<U8E22> /xbd/xf0 <CJK>
+<U8E0F> /xbd/xf1 <CJK>
+<U8E29> /xbd/xf2 <CJK>
+<U8E1F> /xbd/xf3 <CJK>
+<U8E21> /xbd/xf4 <CJK>
+<U8E1E> /xbd/xf5 <CJK>
+<U8EBA> /xbd/xf6 <CJK>
+<U8F1D> /xbd/xf7 <CJK>
+<U8F1B> /xbd/xf8 <CJK>
+<U8F1F> /xbd/xf9 <CJK>
+<U8F29> /xbd/xfa <CJK>
+<U8F26> /xbd/xfb <CJK>
+<U8F2A> /xbd/xfc <CJK>
+<U8F1C> /xbd/xfd <CJK>
+<U8F1E> /xbd/xfe <CJK>
+<U8F25> /xbe/x40 <CJK>
+<U9069> /xbe/x41 <CJK>
+<U906E> /xbe/x42 <CJK>
+<U9068> /xbe/x43 <CJK>
+<U906D> /xbe/x44 <CJK>
+<U9077> /xbe/x45 <CJK>
+<U9130> /xbe/x46 <CJK>
+<U912D> /xbe/x47 <CJK>
+<U9127> /xbe/x48 <CJK>
+<U9131> /xbe/x49 <CJK>
+<U9187> /xbe/x4a <CJK>
+<U9189> /xbe/x4b <CJK>
+<U918B> /xbe/x4c <CJK>
+<U9183> /xbe/x4d <CJK>
+<U92C5> /xbe/x4e <CJK>
+<U92BB> /xbe/x4f <CJK>
+<U92B7> /xbe/x50 <CJK>
+<U92EA> /xbe/x51 <CJK>
+<U92AC> /xbe/x52 <CJK>
+<U92E4> /xbe/x53 <CJK>
+<U92C1> /xbe/x54 <CJK>
+<U92B3> /xbe/x55 <CJK>
+<U92BC> /xbe/x56 <CJK>
+<U92D2> /xbe/x57 <CJK>
+<U92C7> /xbe/x58 <CJK>
+<U92F0> /xbe/x59 <CJK>
+<U92B2> /xbe/x5a <CJK>
+<U95AD> /xbe/x5b <CJK>
+<U95B1> /xbe/x5c <CJK>
+<U9704> /xbe/x5d <CJK>
+<U9706> /xbe/x5e <CJK>
+<U9707> /xbe/x5f <CJK>
+<U9709> /xbe/x60 <CJK>
+<U9760> /xbe/x61 <CJK>
+<U978D> /xbe/x62 <CJK>
+<U978B> /xbe/x63 <CJK>
+<U978F> /xbe/x64 <CJK>
+<U9821> /xbe/x65 <CJK>
+<U982B> /xbe/x66 <CJK>
+<U981C> /xbe/x67 <CJK>
+<U98B3> /xbe/x68 <CJK>
+<U990A> /xbe/x69 <CJK>
+<U9913> /xbe/x6a <CJK>
+<U9912> /xbe/x6b <CJK>
+<U9918> /xbe/x6c <CJK>
+<U99DD> /xbe/x6d <CJK>
+<U99D0> /xbe/x6e <CJK>
+<U99DF> /xbe/x6f <CJK>
+<U99DB> /xbe/x70 <CJK>
+<U99D1> /xbe/x71 <CJK>
+<U99D5> /xbe/x72 <CJK>
+<U99D2> /xbe/x73 <CJK>
+<U99D9> /xbe/x74 <CJK>
+<U9AB7> /xbe/x75 <CJK>
+<U9AEE> /xbe/x76 <CJK>
+<U9AEF> /xbe/x77 <CJK>
+<U9B27> /xbe/x78 <CJK>
+<U9B45> /xbe/x79 <CJK>
+<U9B44> /xbe/x7a <CJK>
+<U9B77> /xbe/x7b <CJK>
+<U9B6F> /xbe/x7c <CJK>
+<U9D06> /xbe/x7d <CJK>
+<U9D09> /xbe/x7e <CJK>
+<U9D03> /xbe/xa1 <CJK>
+<U9EA9> /xbe/xa2 <CJK>
+<U9EBE> /xbe/xa3 <CJK>
+<U9ECE> /xbe/xa4 <CJK>
+<U58A8> /xbe/xa5 <CJK>
+<U9F52> /xbe/xa6 <CJK>
+<U5112> /xbe/xa7 <CJK>
+<U5118> /xbe/xa8 <CJK>
+<U5114> /xbe/xa9 <CJK>
+<U5110> /xbe/xaa <CJK>
+<U5115> /xbe/xab <CJK>
+<U5180> /xbe/xac <CJK>
+<U51AA> /xbe/xad <CJK>
+<U51DD> /xbe/xae <CJK>
+<U5291> /xbe/xaf <CJK>
+<U5293> /xbe/xb0 <CJK>
+<U52F3> /xbe/xb1 <CJK>
+<U5659> /xbe/xb2 <CJK>
+<U566B> /xbe/xb3 <CJK>
+<U5679> /xbe/xb4 <CJK>
+<U5669> /xbe/xb5 <CJK>
+<U5664> /xbe/xb6 <CJK>
+<U5678> /xbe/xb7 <CJK>
+<U566A> /xbe/xb8 <CJK>
+<U5668> /xbe/xb9 <CJK>
+<U5665> /xbe/xba <CJK>
+<U5671> /xbe/xbb <CJK>
+<U566F> /xbe/xbc <CJK>
+<U566C> /xbe/xbd <CJK>
+<U5662> /xbe/xbe <CJK>
+<U5676> /xbe/xbf <CJK>
+<U58C1> /xbe/xc0 <CJK>
+<U58BE> /xbe/xc1 <CJK>
+<U58C7> /xbe/xc2 <CJK>
+<U58C5> /xbe/xc3 <CJK>
+<U596E> /xbe/xc4 <CJK>
+<U5B1D> /xbe/xc5 <CJK>
+<U5B34> /xbe/xc6 <CJK>
+<U5B78> /xbe/xc7 <CJK>
+<U5BF0> /xbe/xc8 <CJK>
+<U5C0E> /xbe/xc9 <CJK>
+<U5F4A> /xbe/xca <CJK>
+<U61B2> /xbe/xcb <CJK>
+<U6191> /xbe/xcc <CJK>
+<U61A9> /xbe/xcd <CJK>
+<U618A> /xbe/xce <CJK>
+<U61CD> /xbe/xcf <CJK>
+<U61B6> /xbe/xd0 <CJK>
+<U61BE> /xbe/xd1 <CJK>
+<U61CA> /xbe/xd2 <CJK>
+<U61C8> /xbe/xd3 <CJK>
+<U6230> /xbe/xd4 <CJK>
+<U64C5> /xbe/xd5 <CJK>
+<U64C1> /xbe/xd6 <CJK>
+<U64CB> /xbe/xd7 <CJK>
+<U64BB> /xbe/xd8 <CJK>
+<U64BC> /xbe/xd9 <CJK>
+<U64DA> /xbe/xda <CJK>
+<U64C4> /xbe/xdb <CJK>
+<U64C7> /xbe/xdc <CJK>
+<U64C2> /xbe/xdd <CJK>
+<U64CD> /xbe/xde <CJK>
+<U64BF> /xbe/xdf <CJK>
+<U64D2> /xbe/xe0 <CJK>
+<U64D4> /xbe/xe1 <CJK>
+<U64BE> /xbe/xe2 <CJK>
+<U6574> /xbe/xe3 <CJK>
+<U66C6> /xbe/xe4 <CJK>
+<U66C9> /xbe/xe5 <CJK>
+<U66B9> /xbe/xe6 <CJK>
+<U66C4> /xbe/xe7 <CJK>
+<U66C7> /xbe/xe8 <CJK>
+<U66B8> /xbe/xe9 <CJK>
+<U6A3D> /xbe/xea <CJK>
+<U6A38> /xbe/xeb <CJK>
+<U6A3A> /xbe/xec <CJK>
+<U6A59> /xbe/xed <CJK>
+<U6A6B> /xbe/xee <CJK>
+<U6A58> /xbe/xef <CJK>
+<U6A39> /xbe/xf0 <CJK>
+<U6A44> /xbe/xf1 <CJK>
+<U6A62> /xbe/xf2 <CJK>
+<U6A61> /xbe/xf3 <CJK>
+<U6A4B> /xbe/xf4 <CJK>
+<U6A47> /xbe/xf5 <CJK>
+<U6A35> /xbe/xf6 <CJK>
+<U6A5F> /xbe/xf7 <CJK>
+<U6A48> /xbe/xf8 <CJK>
+<U6B59> /xbe/xf9 <CJK>
+<U6B77> /xbe/xfa <CJK>
+<U6C05> /xbe/xfb <CJK>
+<U6FC2> /xbe/xfc <CJK>
+<U6FB1> /xbe/xfd <CJK>
+<U6FA1> /xbe/xfe <CJK>
+<U6FC3> /xbf/x40 <CJK>
+<U6FA4> /xbf/x41 <CJK>
+<U6FC1> /xbf/x42 <CJK>
+<U6FA7> /xbf/x43 <CJK>
+<U6FB3> /xbf/x44 <CJK>
+<U6FC0> /xbf/x45 <CJK>
+<U6FB9> /xbf/x46 <CJK>
+<U6FB6> /xbf/x47 <CJK>
+<U6FA6> /xbf/x48 <CJK>
+<U6FA0> /xbf/x49 <CJK>
+<U6FB4> /xbf/x4a <CJK>
+<U71BE> /xbf/x4b <CJK>
+<U71C9> /xbf/x4c <CJK>
+<U71D0> /xbf/x4d <CJK>
+<U71D2> /xbf/x4e <CJK>
+<U71C8> /xbf/x4f <CJK>
+<U71D5> /xbf/x50 <CJK>
+<U71B9> /xbf/x51 <CJK>
+<U71CE> /xbf/x52 <CJK>
+<U71D9> /xbf/x53 <CJK>
+<U71DC> /xbf/x54 <CJK>
+<U71C3> /xbf/x55 <CJK>
+<U71C4> /xbf/x56 <CJK>
+<U7368> /xbf/x57 <CJK>
+<U749C> /xbf/x58 <CJK>
+<U74A3> /xbf/x59 <CJK>
+<U7498> /xbf/x5a <CJK>
+<U749F> /xbf/x5b <CJK>
+<U749E> /xbf/x5c <CJK>
+<U74E2> /xbf/x5d <CJK>
+<U750C> /xbf/x5e <CJK>
+<U750D> /xbf/x5f <CJK>
+<U7634> /xbf/x60 <CJK>
+<U7638> /xbf/x61 <CJK>
+<U763A> /xbf/x62 <CJK>
+<U76E7> /xbf/x63 <CJK>
+<U76E5> /xbf/x64 <CJK>
+<U77A0> /xbf/x65 <CJK>
+<U779E> /xbf/x66 <CJK>
+<U779F> /xbf/x67 <CJK>
+<U77A5> /xbf/x68 <CJK>
+<U78E8> /xbf/x69 <CJK>
+<U78DA> /xbf/x6a <CJK>
+<U78EC> /xbf/x6b <CJK>
+<U78E7> /xbf/x6c <CJK>
+<U79A6> /xbf/x6d <CJK>
+<U7A4D> /xbf/x6e <CJK>
+<U7A4E> /xbf/x6f <CJK>
+<U7A46> /xbf/x70 <CJK>
+<U7A4C> /xbf/x71 <CJK>
+<U7A4B> /xbf/x72 <CJK>
+<U7ABA> /xbf/x73 <CJK>
+<U7BD9> /xbf/x74 <CJK>
+<U7C11> /xbf/x75 <CJK>
+<U7BC9> /xbf/x76 <CJK>
+<U7BE4> /xbf/x77 <CJK>
+<U7BDB> /xbf/x78 <CJK>
+<U7BE1> /xbf/x79 <CJK>
+<U7BE9> /xbf/x7a <CJK>
+<U7BE6> /xbf/x7b <CJK>
+<U7CD5> /xbf/x7c <CJK>
+<U7CD6> /xbf/x7d <CJK>
+<U7E0A> /xbf/x7e <CJK>
+<U7E11> /xbf/xa1 <CJK>
+<U7E08> /xbf/xa2 <CJK>
+<U7E1B> /xbf/xa3 <CJK>
+<U7E23> /xbf/xa4 <CJK>
+<U7E1E> /xbf/xa5 <CJK>
+<U7E1D> /xbf/xa6 <CJK>
+<U7E09> /xbf/xa7 <CJK>
+<U7E10> /xbf/xa8 <CJK>
+<U7F79> /xbf/xa9 <CJK>
+<U7FB2> /xbf/xaa <CJK>
+<U7FF0> /xbf/xab <CJK>
+<U7FF1> /xbf/xac <CJK>
+<U7FEE> /xbf/xad <CJK>
+<U8028> /xbf/xae <CJK>
+<U81B3> /xbf/xaf <CJK>
+<U81A9> /xbf/xb0 <CJK>
+<U81A8> /xbf/xb1 <CJK>
+<U81FB> /xbf/xb2 <CJK>
+<U8208> /xbf/xb3 <CJK>
+<U8258> /xbf/xb4 <CJK>
+<U8259> /xbf/xb5 <CJK>
+<U854A> /xbf/xb6 <CJK>
+<U8559> /xbf/xb7 <CJK>
+<U8548> /xbf/xb8 <CJK>
+<U8568> /xbf/xb9 <CJK>
+<U8569> /xbf/xba <CJK>
+<U8543> /xbf/xbb <CJK>
+<U8549> /xbf/xbc <CJK>
+<U856D> /xbf/xbd <CJK>
+<U856A> /xbf/xbe <CJK>
+<U855E> /xbf/xbf <CJK>
+<U8783> /xbf/xc0 <CJK>
+<U879F> /xbf/xc1 <CJK>
+<U879E> /xbf/xc2 <CJK>
+<U87A2> /xbf/xc3 <CJK>
+<U878D> /xbf/xc4 <CJK>
+<U8861> /xbf/xc5 <CJK>
+<U892A> /xbf/xc6 <CJK>
+<U8932> /xbf/xc7 <CJK>
+<U8925> /xbf/xc8 <CJK>
+<U892B> /xbf/xc9 <CJK>
+<U8921> /xbf/xca <CJK>
+<U89AA> /xbf/xcb <CJK>
+<U89A6> /xbf/xcc <CJK>
+<U8AE6> /xbf/xcd <CJK>
+<U8AFA> /xbf/xce <CJK>
+<U8AEB> /xbf/xcf <CJK>
+<U8AF1> /xbf/xd0 <CJK>
+<U8B00> /xbf/xd1 <CJK>
+<U8ADC> /xbf/xd2 <CJK>
+<U8AE7> /xbf/xd3 <CJK>
+<U8AEE> /xbf/xd4 <CJK>
+<U8AFE> /xbf/xd5 <CJK>
+<U8B01> /xbf/xd6 <CJK>
+<U8B02> /xbf/xd7 <CJK>
+<U8AF7> /xbf/xd8 <CJK>
+<U8AED> /xbf/xd9 <CJK>
+<U8AF3> /xbf/xda <CJK>
+<U8AF6> /xbf/xdb <CJK>
+<U8AFC> /xbf/xdc <CJK>
+<U8C6B> /xbf/xdd <CJK>
+<U8C6D> /xbf/xde <CJK>
+<U8C93> /xbf/xdf <CJK>
+<U8CF4> /xbf/xe0 <CJK>
+<U8E44> /xbf/xe1 <CJK>
+<U8E31> /xbf/xe2 <CJK>
+<U8E34> /xbf/xe3 <CJK>
+<U8E42> /xbf/xe4 <CJK>
+<U8E39> /xbf/xe5 <CJK>
+<U8E35> /xbf/xe6 <CJK>
+<U8F3B> /xbf/xe7 <CJK>
+<U8F2F> /xbf/xe8 <CJK>
+<U8F38> /xbf/xe9 <CJK>
+<U8F33> /xbf/xea <CJK>
+<U8FA8> /xbf/xeb <CJK>
+<U8FA6> /xbf/xec <CJK>
+<U9075> /xbf/xed <CJK>
+<U9074> /xbf/xee <CJK>
+<U9078> /xbf/xef <CJK>
+<U9072> /xbf/xf0 <CJK>
+<U907C> /xbf/xf1 <CJK>
+<U907A> /xbf/xf2 <CJK>
+<U9134> /xbf/xf3 <CJK>
+<U9192> /xbf/xf4 <CJK>
+<U9320> /xbf/xf5 <CJK>
+<U9336> /xbf/xf6 <CJK>
+<U92F8> /xbf/xf7 <CJK>
+<U9333> /xbf/xf8 <CJK>
+<U932F> /xbf/xf9 <CJK>
+<U9322> /xbf/xfa <CJK>
+<U92FC> /xbf/xfb <CJK>
+<U932B> /xbf/xfc <CJK>
+<U9304> /xbf/xfd <CJK>
+<U931A> /xbf/xfe <CJK>
+<U9310> /xc0/x40 <CJK>
+<U9326> /xc0/x41 <CJK>
+<U9321> /xc0/x42 <CJK>
+<U9315> /xc0/x43 <CJK>
+<U932E> /xc0/x44 <CJK>
+<U9319> /xc0/x45 <CJK>
+<U95BB> /xc0/x46 <CJK>
+<U96A7> /xc0/x47 <CJK>
+<U96A8> /xc0/x48 <CJK>
+<U96AA> /xc0/x49 <CJK>
+<U96D5> /xc0/x4a <CJK>
+<U970E> /xc0/x4b <CJK>
+<U9711> /xc0/x4c <CJK>
+<U9716> /xc0/x4d <CJK>
+<U970D> /xc0/x4e <CJK>
+<U9713> /xc0/x4f <CJK>
+<U970F> /xc0/x50 <CJK>
+<U975B> /xc0/x51 <CJK>
+<U975C> /xc0/x52 <CJK>
+<U9766> /xc0/x53 <CJK>
+<U9798> /xc0/x54 <CJK>
+<U9830> /xc0/x55 <CJK>
+<U9838> /xc0/x56 <CJK>
+<U983B> /xc0/x57 <CJK>
+<U9837> /xc0/x58 <CJK>
+<U982D> /xc0/x59 <CJK>
+<U9839> /xc0/x5a <CJK>
+<U9824> /xc0/x5b <CJK>
+<U9910> /xc0/x5c <CJK>
+<U9928> /xc0/x5d <CJK>
+<U991E> /xc0/x5e <CJK>
+<U991B> /xc0/x5f <CJK>
+<U9921> /xc0/x60 <CJK>
+<U991A> /xc0/x61 <CJK>
+<U99ED> /xc0/x62 <CJK>
+<U99E2> /xc0/x63 <CJK>
+<U99F1> /xc0/x64 <CJK>
+<U9AB8> /xc0/x65 <CJK>
+<U9ABC> /xc0/x66 <CJK>
+<U9AFB> /xc0/x67 <CJK>
+<U9AED> /xc0/x68 <CJK>
+<U9B28> /xc0/x69 <CJK>
+<U9B91> /xc0/x6a <CJK>
+<U9D15> /xc0/x6b <CJK>
+<U9D23> /xc0/x6c <CJK>
+<U9D26> /xc0/x6d <CJK>
+<U9D28> /xc0/x6e <CJK>
+<U9D12> /xc0/x6f <CJK>
+<U9D1B> /xc0/x70 <CJK>
+<U9ED8> /xc0/x71 <CJK>
+<U9ED4> /xc0/x72 <CJK>
+<U9F8D> /xc0/x73 <CJK>
+<U9F9C> /xc0/x74 <CJK>
+<U512A> /xc0/x75 <CJK>
+<U511F> /xc0/x76 <CJK>
+<U5121> /xc0/x77 <CJK>
+<U5132> /xc0/x78 <CJK>
+<U52F5> /xc0/x79 <CJK>
+<U568E> /xc0/x7a <CJK>
+<U5680> /xc0/x7b <CJK>
+<U5690> /xc0/x7c <CJK>
+<U5685> /xc0/x7d <CJK>
+<U5687> /xc0/x7e <CJK>
+<U568F> /xc0/xa1 <CJK>
+<U58D5> /xc0/xa2 <CJK>
+<U58D3> /xc0/xa3 <CJK>
+<U58D1> /xc0/xa4 <CJK>
+<U58CE> /xc0/xa5 <CJK>
+<U5B30> /xc0/xa6 <CJK>
+<U5B2A> /xc0/xa7 <CJK>
+<U5B24> /xc0/xa8 <CJK>
+<U5B7A> /xc0/xa9 <CJK>
+<U5C37> /xc0/xaa <CJK>
+<U5C68> /xc0/xab <CJK>
+<U5DBC> /xc0/xac <CJK>
+<U5DBA> /xc0/xad <CJK>
+<U5DBD> /xc0/xae <CJK>
+<U5DB8> /xc0/xaf <CJK>
+<U5E6B> /xc0/xb0 <CJK>
+<U5F4C> /xc0/xb1 <CJK>
+<U5FBD> /xc0/xb2 <CJK>
+<U61C9> /xc0/xb3 <CJK>
+<U61C2> /xc0/xb4 <CJK>
+<U61C7> /xc0/xb5 <CJK>
+<U61E6> /xc0/xb6 <CJK>
+<U61CB> /xc0/xb7 <CJK>
+<U6232> /xc0/xb8 <CJK>
+<U6234> /xc0/xb9 <CJK>
+<U64CE> /xc0/xba <CJK>
+<U64CA> /xc0/xbb <CJK>
+<U64D8> /xc0/xbc <CJK>
+<U64E0> /xc0/xbd <CJK>
+<U64F0> /xc0/xbe <CJK>
+<U64E6> /xc0/xbf <CJK>
+<U64EC> /xc0/xc0 <CJK>
+<U64F1> /xc0/xc1 <CJK>
+<U64E2> /xc0/xc2 <CJK>
+<U64ED> /xc0/xc3 <CJK>
+<U6582> /xc0/xc4 <CJK>
+<U6583> /xc0/xc5 <CJK>
+<U66D9> /xc0/xc6 <CJK>
+<U66D6> /xc0/xc7 <CJK>
+<U6A80> /xc0/xc8 <CJK>
+<U6A94> /xc0/xc9 <CJK>
+<U6A84> /xc0/xca <CJK>
+<U6AA2> /xc0/xcb <CJK>
+<U6A9C> /xc0/xcc <CJK>
+<U6ADB> /xc0/xcd <CJK>
+<U6AA3> /xc0/xce <CJK>
+<U6A7E> /xc0/xcf <CJK>
+<U6A97> /xc0/xd0 <CJK>
+<U6A90> /xc0/xd1 <CJK>
+<U6AA0> /xc0/xd2 <CJK>
+<U6B5C> /xc0/xd3 <CJK>
+<U6BAE> /xc0/xd4 <CJK>
+<U6BDA> /xc0/xd5 <CJK>
+<U6C08> /xc0/xd6 <CJK>
+<U6FD8> /xc0/xd7 <CJK>
+<U6FF1> /xc0/xd8 <CJK>
+<U6FDF> /xc0/xd9 <CJK>
+<U6FE0> /xc0/xda <CJK>
+<U6FDB> /xc0/xdb <CJK>
+<U6FE4> /xc0/xdc <CJK>
+<U6FEB> /xc0/xdd <CJK>
+<U6FEF> /xc0/xde <CJK>
+<U6F80> /xc0/xdf <CJK>
+<U6FEC> /xc0/xe0 <CJK>
+<U6FE1> /xc0/xe1 <CJK>
+<U6FE9> /xc0/xe2 <CJK>
+<U6FD5> /xc0/xe3 <CJK>
+<U6FEE> /xc0/xe4 <CJK>
+<U6FF0> /xc0/xe5 <CJK>
+<U71E7> /xc0/xe6 <CJK>
+<U71DF> /xc0/xe7 <CJK>
+<U71EE> /xc0/xe8 <CJK>
+<U71E6> /xc0/xe9 <CJK>
+<U71E5> /xc0/xea <CJK>
+<U71ED> /xc0/xeb <CJK>
+<U71EC> /xc0/xec <CJK>
+<U71F4> /xc0/xed <CJK>
+<U71E0> /xc0/xee <CJK>
+<U7235> /xc0/xef <CJK>
+<U7246> /xc0/xf0 <CJK>
+<U7370> /xc0/xf1 <CJK>
+<U7372> /xc0/xf2 <CJK>
+<U74A9> /xc0/xf3 <CJK>
+<U74B0> /xc0/xf4 <CJK>
+<U74A6> /xc0/xf5 <CJK>
+<U74A8> /xc0/xf6 <CJK>
+<U7646> /xc0/xf7 <CJK>
+<U7642> /xc0/xf8 <CJK>
+<U764C> /xc0/xf9 <CJK>
+<U76EA> /xc0/xfa <CJK>
+<U77B3> /xc0/xfb <CJK>
+<U77AA> /xc0/xfc <CJK>
+<U77B0> /xc0/xfd <CJK>
+<U77AC> /xc0/xfe <CJK>
+<U77A7> /xc1/x40 <CJK>
+<U77AD> /xc1/x41 <CJK>
+<U77EF> /xc1/x42 <CJK>
+<U78F7> /xc1/x43 <CJK>
+<U78FA> /xc1/x44 <CJK>
+<U78F4> /xc1/x45 <CJK>
+<U78EF> /xc1/x46 <CJK>
+<U7901> /xc1/x47 <CJK>
+<U79A7> /xc1/x48 <CJK>
+<U79AA> /xc1/x49 <CJK>
+<U7A57> /xc1/x4a <CJK>
+<U7ABF> /xc1/x4b <CJK>
+<U7C07> /xc1/x4c <CJK>
+<U7C0D> /xc1/x4d <CJK>
+<U7BFE> /xc1/x4e <CJK>
+<U7BF7> /xc1/x4f <CJK>
+<U7C0C> /xc1/x50 <CJK>
+<U7BE0> /xc1/x51 <CJK>
+<U7CE0> /xc1/x52 <CJK>
+<U7CDC> /xc1/x53 <CJK>
+<U7CDE> /xc1/x54 <CJK>
+<U7CE2> /xc1/x55 <CJK>
+<U7CDF> /xc1/x56 <CJK>
+<U7CD9> /xc1/x57 <CJK>
+<U7CDD> /xc1/x58 <CJK>
+<U7E2E> /xc1/x59 <CJK>
+<U7E3E> /xc1/x5a <CJK>
+<U7E46> /xc1/x5b <CJK>
+<U7E37> /xc1/x5c <CJK>
+<U7E32> /xc1/x5d <CJK>
+<U7E43> /xc1/x5e <CJK>
+<U7E2B> /xc1/x5f <CJK>
+<U7E3D> /xc1/x60 <CJK>
+<U7E31> /xc1/x61 <CJK>
+<U7E45> /xc1/x62 <CJK>
+<U7E41> /xc1/x63 <CJK>
+<U7E34> /xc1/x64 <CJK>
+<U7E39> /xc1/x65 <CJK>
+<U7E48> /xc1/x66 <CJK>
+<U7E35> /xc1/x67 <CJK>
+<U7E3F> /xc1/x68 <CJK>
+<U7E2F> /xc1/x69 <CJK>
+<U7F44> /xc1/x6a <CJK>
+<U7FF3> /xc1/x6b <CJK>
+<U7FFC> /xc1/x6c <CJK>
+<U8071> /xc1/x6d <CJK>
+<U8072> /xc1/x6e <CJK>
+<U8070> /xc1/x6f <CJK>
+<U806F> /xc1/x70 <CJK>
+<U8073> /xc1/x71 <CJK>
+<U81C6> /xc1/x72 <CJK>
+<U81C3> /xc1/x73 <CJK>
+<U81BA> /xc1/x74 <CJK>
+<U81C2> /xc1/x75 <CJK>
+<U81C0> /xc1/x76 <CJK>
+<U81BF> /xc1/x77 <CJK>
+<U81BD> /xc1/x78 <CJK>
+<U81C9> /xc1/x79 <CJK>
+<U81BE> /xc1/x7a <CJK>
+<U81E8> /xc1/x7b <CJK>
+<U8209> /xc1/x7c <CJK>
+<U8271> /xc1/x7d <CJK>
+<U85AA> /xc1/x7e <CJK>
+<U8584> /xc1/xa1 <CJK>
+<U857E> /xc1/xa2 <CJK>
+<U859C> /xc1/xa3 <CJK>
+<U8591> /xc1/xa4 <CJK>
+<U8594> /xc1/xa5 <CJK>
+<U85AF> /xc1/xa6 <CJK>
+<U859B> /xc1/xa7 <CJK>
+<U8587> /xc1/xa8 <CJK>
+<U85A8> /xc1/xa9 <CJK>
+<U858A> /xc1/xaa <CJK>
+<U8667> /xc1/xab <CJK>
+<U87C0> /xc1/xac <CJK>
+<U87D1> /xc1/xad <CJK>
+<U87B3> /xc1/xae <CJK>
+<U87D2> /xc1/xaf <CJK>
+<U87C6> /xc1/xb0 <CJK>
+<U87AB> /xc1/xb1 <CJK>
+<U87BB> /xc1/xb2 <CJK>
+<U87BA> /xc1/xb3 <CJK>
+<U87C8> /xc1/xb4 <CJK>
+<U87CB> /xc1/xb5 <CJK>
+<U893B> /xc1/xb6 <CJK>
+<U8936> /xc1/xb7 <CJK>
+<U8944> /xc1/xb8 <CJK>
+<U8938> /xc1/xb9 <CJK>
+<U893D> /xc1/xba <CJK>
+<U89AC> /xc1/xbb <CJK>
+<U8B0E> /xc1/xbc <CJK>
+<U8B17> /xc1/xbd <CJK>
+<U8B19> /xc1/xbe <CJK>
+<U8B1B> /xc1/xbf <CJK>
+<U8B0A> /xc1/xc0 <CJK>
+<U8B20> /xc1/xc1 <CJK>
+<U8B1D> /xc1/xc2 <CJK>
+<U8B04> /xc1/xc3 <CJK>
+<U8B10> /xc1/xc4 <CJK>
+<U8C41> /xc1/xc5 <CJK>
+<U8C3F> /xc1/xc6 <CJK>
+<U8C73> /xc1/xc7 <CJK>
+<U8CFA> /xc1/xc8 <CJK>
+<U8CFD> /xc1/xc9 <CJK>
+<U8CFC> /xc1/xca <CJK>
+<U8CF8> /xc1/xcb <CJK>
+<U8CFB> /xc1/xcc <CJK>
+<U8DA8> /xc1/xcd <CJK>
+<U8E49> /xc1/xce <CJK>
+<U8E4B> /xc1/xcf <CJK>
+<U8E48> /xc1/xd0 <CJK>
+<U8E4A> /xc1/xd1 <CJK>
+<U8F44> /xc1/xd2 <CJK>
+<U8F3E> /xc1/xd3 <CJK>
+<U8F42> /xc1/xd4 <CJK>
+<U8F45> /xc1/xd5 <CJK>
+<U8F3F> /xc1/xd6 <CJK>
+<U907F> /xc1/xd7 <CJK>
+<U907D> /xc1/xd8 <CJK>
+<U9084> /xc1/xd9 <CJK>
+<U9081> /xc1/xda <CJK>
+<U9082> /xc1/xdb <CJK>
+<U9080> /xc1/xdc <CJK>
+<U9139> /xc1/xdd <CJK>
+<U91A3> /xc1/xde <CJK>
+<U919E> /xc1/xdf <CJK>
+<U919C> /xc1/xe0 <CJK>
+<U934D> /xc1/xe1 <CJK>
+<U9382> /xc1/xe2 <CJK>
+<U9328> /xc1/xe3 <CJK>
+<U9375> /xc1/xe4 <CJK>
+<U934A> /xc1/xe5 <CJK>
+<U9365> /xc1/xe6 <CJK>
+<U934B> /xc1/xe7 <CJK>
+<U9318> /xc1/xe8 <CJK>
+<U937E> /xc1/xe9 <CJK>
+<U936C> /xc1/xea <CJK>
+<U935B> /xc1/xeb <CJK>
+<U9370> /xc1/xec <CJK>
+<U935A> /xc1/xed <CJK>
+<U9354> /xc1/xee <CJK>
+<U95CA> /xc1/xef <CJK>
+<U95CB> /xc1/xf0 <CJK>
+<U95CC> /xc1/xf1 <CJK>
+<U95C8> /xc1/xf2 <CJK>
+<U95C6> /xc1/xf3 <CJK>
+<U96B1> /xc1/xf4 <CJK>
+<U96B8> /xc1/xf5 <CJK>
+<U96D6> /xc1/xf6 <CJK>
+<U971C> /xc1/xf7 <CJK>
+<U971E> /xc1/xf8 <CJK>
+<U97A0> /xc1/xf9 <CJK>
+<U97D3> /xc1/xfa <CJK>
+<U9846> /xc1/xfb <CJK>
+<U98B6> /xc1/xfc <CJK>
+<U9935> /xc1/xfd <CJK>
+<U9A01> /xc1/xfe <CJK>
+<U99FF> /xc2/x40 <CJK>
+<U9BAE> /xc2/x41 <CJK>
+<U9BAB> /xc2/x42 <CJK>
+<U9BAA> /xc2/x43 <CJK>
+<U9BAD> /xc2/x44 <CJK>
+<U9D3B> /xc2/x45 <CJK>
+<U9D3F> /xc2/x46 <CJK>
+<U9E8B> /xc2/x47 <CJK>
+<U9ECF> /xc2/x48 <CJK>
+<U9EDE> /xc2/x49 <CJK>
+<U9EDC> /xc2/x4a <CJK>
+<U9EDD> /xc2/x4b <CJK>
+<U9EDB> /xc2/x4c <CJK>
+<U9F3E> /xc2/x4d <CJK>
+<U9F4B> /xc2/x4e <CJK>
+<U53E2> /xc2/x4f <CJK>
+<U5695> /xc2/x50 <CJK>
+<U56AE> /xc2/x51 <CJK>
+<U58D9> /xc2/x52 <CJK>
+<U58D8> /xc2/x53 <CJK>
+<U5B38> /xc2/x54 <CJK>
+<U5F5D> /xc2/x55 <CJK>
+<U61E3> /xc2/x56 <CJK>
+<U6233> /xc2/x57 <CJK>
+<U64F4> /xc2/x58 <CJK>
+<U64F2> /xc2/x59 <CJK>
+<U64FE> /xc2/x5a <CJK>
+<U6506> /xc2/x5b <CJK>
+<U64FA> /xc2/x5c <CJK>
+<U64FB> /xc2/x5d <CJK>
+<U64F7> /xc2/x5e <CJK>
+<U65B7> /xc2/x5f <CJK>
+<U66DC> /xc2/x60 <CJK>
+<U6726> /xc2/x61 <CJK>
+<U6AB3> /xc2/x62 <CJK>
+<U6AAC> /xc2/x63 <CJK>
+<U6AC3> /xc2/x64 <CJK>
+<U6ABB> /xc2/x65 <CJK>
+<U6AB8> /xc2/x66 <CJK>
+<U6AC2> /xc2/x67 <CJK>
+<U6AAE> /xc2/x68 <CJK>
+<U6AAF> /xc2/x69 <CJK>
+<U6B5F> /xc2/x6a <CJK>
+<U6B78> /xc2/x6b <CJK>
+<U6BAF> /xc2/x6c <CJK>
+<U7009> /xc2/x6d <CJK>
+<U700B> /xc2/x6e <CJK>
+<U6FFE> /xc2/x6f <CJK>
+<U7006> /xc2/x70 <CJK>
+<U6FFA> /xc2/x71 <CJK>
+<U7011> /xc2/x72 <CJK>
+<U700F> /xc2/x73 <CJK>
+<U71FB> /xc2/x74 <CJK>
+<U71FC> /xc2/x75 <CJK>
+<U71FE> /xc2/x76 <CJK>
+<U71F8> /xc2/x77 <CJK>
+<U7377> /xc2/x78 <CJK>
+<U7375> /xc2/x79 <CJK>
+<U74A7> /xc2/x7a <CJK>
+<U74BF> /xc2/x7b <CJK>
+<U7515> /xc2/x7c <CJK>
+<U7656> /xc2/x7d <CJK>
+<U7658> /xc2/x7e <CJK>
+<U7652> /xc2/xa1 <CJK>
+<U77BD> /xc2/xa2 <CJK>
+<U77BF> /xc2/xa3 <CJK>
+<U77BB> /xc2/xa4 <CJK>
+<U77BC> /xc2/xa5 <CJK>
+<U790E> /xc2/xa6 <CJK>
+<U79AE> /xc2/xa7 <CJK>
+<U7A61> /xc2/xa8 <CJK>
+<U7A62> /xc2/xa9 <CJK>
+<U7A60> /xc2/xaa <CJK>
+<U7AC4> /xc2/xab <CJK>
+<U7AC5> /xc2/xac <CJK>
+<U7C2B> /xc2/xad <CJK>
+<U7C27> /xc2/xae <CJK>
+<U7C2A> /xc2/xaf <CJK>
+<U7C1E> /xc2/xb0 <CJK>
+<U7C23> /xc2/xb1 <CJK>
+<U7C21> /xc2/xb2 <CJK>
+<U7CE7> /xc2/xb3 <CJK>
+<U7E54> /xc2/xb4 <CJK>
+<U7E55> /xc2/xb5 <CJK>
+<U7E5E> /xc2/xb6 <CJK>
+<U7E5A> /xc2/xb7 <CJK>
+<U7E61> /xc2/xb8 <CJK>
+<U7E52> /xc2/xb9 <CJK>
+<U7E59> /xc2/xba <CJK>
+<U7F48> /xc2/xbb <CJK>
+<U7FF9> /xc2/xbc <CJK>
+<U7FFB> /xc2/xbd <CJK>
+<U8077> /xc2/xbe <CJK>
+<U8076> /xc2/xbf <CJK>
+<U81CD> /xc2/xc0 <CJK>
+<U81CF> /xc2/xc1 <CJK>
+<U820A> /xc2/xc2 <CJK>
+<U85CF> /xc2/xc3 <CJK>
+<U85A9> /xc2/xc4 <CJK>
+<U85CD> /xc2/xc5 <CJK>
+<U85D0> /xc2/xc6 <CJK>
+<U85C9> /xc2/xc7 <CJK>
+<U85B0> /xc2/xc8 <CJK>
+<U85BA> /xc2/xc9 <CJK>
+<U85B9> /xc2/xca <CJK>
+<U85A6> /xc2/xcb <CJK>
+<U87EF> /xc2/xcc <CJK>
+<U87EC> /xc2/xcd <CJK>
+<U87F2> /xc2/xce <CJK>
+<U87E0> /xc2/xcf <CJK>
+<U8986> /xc2/xd0 <CJK>
+<U89B2> /xc2/xd1 <CJK>
+<U89F4> /xc2/xd2 <CJK>
+<U8B28> /xc2/xd3 <CJK>
+<U8B39> /xc2/xd4 <CJK>
+<U8B2C> /xc2/xd5 <CJK>
+<U8B2B> /xc2/xd6 <CJK>
+<U8C50> /xc2/xd7 <CJK>
+<U8D05> /xc2/xd8 <CJK>
+<U8E59> /xc2/xd9 <CJK>
+<U8E63> /xc2/xda <CJK>
+<U8E66> /xc2/xdb <CJK>
+<U8E64> /xc2/xdc <CJK>
+<U8E5F> /xc2/xdd <CJK>
+<U8E55> /xc2/xde <CJK>
+<U8EC0> /xc2/xdf <CJK>
+<U8F49> /xc2/xe0 <CJK>
+<U8F4D> /xc2/xe1 <CJK>
+<U9087> /xc2/xe2 <CJK>
+<U9083> /xc2/xe3 <CJK>
+<U9088> /xc2/xe4 <CJK>
+<U91AB> /xc2/xe5 <CJK>
+<U91AC> /xc2/xe6 <CJK>
+<U91D0> /xc2/xe7 <CJK>
+<U9394> /xc2/xe8 <CJK>
+<U938A> /xc2/xe9 <CJK>
+<U9396> /xc2/xea <CJK>
+<U93A2> /xc2/xeb <CJK>
+<U93B3> /xc2/xec <CJK>
+<U93AE> /xc2/xed <CJK>
+<U93AC> /xc2/xee <CJK>
+<U93B0> /xc2/xef <CJK>
+<U9398> /xc2/xf0 <CJK>
+<U939A> /xc2/xf1 <CJK>
+<U9397> /xc2/xf2 <CJK>
+<U95D4> /xc2/xf3 <CJK>
+<U95D6> /xc2/xf4 <CJK>
+<U95D0> /xc2/xf5 <CJK>
+<U95D5> /xc2/xf6 <CJK>
+<U96E2> /xc2/xf7 <CJK>
+<U96DC> /xc2/xf8 <CJK>
+<U96D9> /xc2/xf9 <CJK>
+<U96DB> /xc2/xfa <CJK>
+<U96DE> /xc2/xfb <CJK>
+<U9724> /xc2/xfc <CJK>
+<U97A3> /xc2/xfd <CJK>
+<U97A6> /xc2/xfe <CJK>
+<U97AD> /xc3/x40 <CJK>
+<U97F9> /xc3/x41 <CJK>
+<U984D> /xc3/x42 <CJK>
+<U984F> /xc3/x43 <CJK>
+<U984C> /xc3/x44 <CJK>
+<U984E> /xc3/x45 <CJK>
+<U9853> /xc3/x46 <CJK>
+<U98BA> /xc3/x47 <CJK>
+<U993E> /xc3/x48 <CJK>
+<U993F> /xc3/x49 <CJK>
+<U993D> /xc3/x4a <CJK>
+<U992E> /xc3/x4b <CJK>
+<U99A5> /xc3/x4c <CJK>
+<U9A0E> /xc3/x4d <CJK>
+<U9AC1> /xc3/x4e <CJK>
+<U9B03> /xc3/x4f <CJK>
+<U9B06> /xc3/x50 <CJK>
+<U9B4F> /xc3/x51 <CJK>
+<U9B4E> /xc3/x52 <CJK>
+<U9B4D> /xc3/x53 <CJK>
+<U9BCA> /xc3/x54 <CJK>
+<U9BC9> /xc3/x55 <CJK>
+<U9BFD> /xc3/x56 <CJK>
+<U9BC8> /xc3/x57 <CJK>
+<U9BC0> /xc3/x58 <CJK>
+<U9D51> /xc3/x59 <CJK>
+<U9D5D> /xc3/x5a <CJK>
+<U9D60> /xc3/x5b <CJK>
+<U9EE0> /xc3/x5c <CJK>
+<U9F15> /xc3/x5d <CJK>
+<U9F2C> /xc3/x5e <CJK>
+<U5133> /xc3/x5f <CJK>
+<U56A5> /xc3/x60 <CJK>
+<U58DE> /xc3/x61 <CJK>
+<U58DF> /xc3/x62 <CJK>
+<U58E2> /xc3/x63 <CJK>
+<U5BF5> /xc3/x64 <CJK>
+<U9F90> /xc3/x65 <CJK>
+<U5EEC> /xc3/x66 <CJK>
+<U61F2> /xc3/x67 <CJK>
+<U61F7> /xc3/x68 <CJK>
+<U61F6> /xc3/x69 <CJK>
+<U61F5> /xc3/x6a <CJK>
+<U6500> /xc3/x6b <CJK>
+<U650F> /xc3/x6c <CJK>
+<U66E0> /xc3/x6d <CJK>
+<U66DD> /xc3/x6e <CJK>
+<U6AE5> /xc3/x6f <CJK>
+<U6ADD> /xc3/x70 <CJK>
+<U6ADA> /xc3/x71 <CJK>
+<U6AD3> /xc3/x72 <CJK>
+<U701B> /xc3/x73 <CJK>
+<U701F> /xc3/x74 <CJK>
+<U7028> /xc3/x75 <CJK>
+<U701A> /xc3/x76 <CJK>
+<U701D> /xc3/x77 <CJK>
+<U7015> /xc3/x78 <CJK>
+<U7018> /xc3/x79 <CJK>
+<U7206> /xc3/x7a <CJK>
+<U720D> /xc3/x7b <CJK>
+<U7258> /xc3/x7c <CJK>
+<U72A2> /xc3/x7d <CJK>
+<U7378> /xc3/x7e <CJK>
+<U737A> /xc3/xa1 <CJK>
+<U74BD> /xc3/xa2 <CJK>
+<U74CA> /xc3/xa3 <CJK>
+<U74E3> /xc3/xa4 <CJK>
+<U7587> /xc3/xa5 <CJK>
+<U7586> /xc3/xa6 <CJK>
+<U765F> /xc3/xa7 <CJK>
+<U7661> /xc3/xa8 <CJK>
+<U77C7> /xc3/xa9 <CJK>
+<U7919> /xc3/xaa <CJK>
+<U79B1> /xc3/xab <CJK>
+<U7A6B> /xc3/xac <CJK>
+<U7A69> /xc3/xad <CJK>
+<U7C3E> /xc3/xae <CJK>
+<U7C3F> /xc3/xaf <CJK>
+<U7C38> /xc3/xb0 <CJK>
+<U7C3D> /xc3/xb1 <CJK>
+<U7C37> /xc3/xb2 <CJK>
+<U7C40> /xc3/xb3 <CJK>
+<U7E6B> /xc3/xb4 <CJK>
+<U7E6D> /xc3/xb5 <CJK>
+<U7E79> /xc3/xb6 <CJK>
+<U7E69> /xc3/xb7 <CJK>
+<U7E6A> /xc3/xb8 <CJK>
+<U7F85> /xc3/xb9 <CJK>
+<U7E73> /xc3/xba <CJK>
+<U7FB6> /xc3/xbb <CJK>
+<U7FB9> /xc3/xbc <CJK>
+<U7FB8> /xc3/xbd <CJK>
+<U81D8> /xc3/xbe <CJK>
+<U85E9> /xc3/xbf <CJK>
+<U85DD> /xc3/xc0 <CJK>
+<U85EA> /xc3/xc1 <CJK>
+<U85D5> /xc3/xc2 <CJK>
+<U85E4> /xc3/xc3 <CJK>
+<U85E5> /xc3/xc4 <CJK>
+<U85F7> /xc3/xc5 <CJK>
+<U87FB> /xc3/xc6 <CJK>
+<U8805> /xc3/xc7 <CJK>
+<U880D> /xc3/xc8 <CJK>
+<U87F9> /xc3/xc9 <CJK>
+<U87FE> /xc3/xca <CJK>
+<U8960> /xc3/xcb <CJK>
+<U895F> /xc3/xcc <CJK>
+<U8956> /xc3/xcd <CJK>
+<U895E> /xc3/xce <CJK>
+<U8B41> /xc3/xcf <CJK>
+<U8B5C> /xc3/xd0 <CJK>
+<U8B58> /xc3/xd1 <CJK>
+<U8B49> /xc3/xd2 <CJK>
+<U8B5A> /xc3/xd3 <CJK>
+<U8B4E> /xc3/xd4 <CJK>
+<U8B4F> /xc3/xd5 <CJK>
+<U8B46> /xc3/xd6 <CJK>
+<U8B59> /xc3/xd7 <CJK>
+<U8D08> /xc3/xd8 <CJK>
+<U8D0A> /xc3/xd9 <CJK>
+<U8E7C> /xc3/xda <CJK>
+<U8E72> /xc3/xdb <CJK>
+<U8E87> /xc3/xdc <CJK>
+<U8E76> /xc3/xdd <CJK>
+<U8E6C> /xc3/xde <CJK>
+<U8E7A> /xc3/xdf <CJK>
+<U8E74> /xc3/xe0 <CJK>
+<U8F54> /xc3/xe1 <CJK>
+<U8F4E> /xc3/xe2 <CJK>
+<U8FAD> /xc3/xe3 <CJK>
+<U908A> /xc3/xe4 <CJK>
+<U908B> /xc3/xe5 <CJK>
+<U91B1> /xc3/xe6 <CJK>
+<U91AE> /xc3/xe7 <CJK>
+<U93E1> /xc3/xe8 <CJK>
+<U93D1> /xc3/xe9 <CJK>
+<U93DF> /xc3/xea <CJK>
+<U93C3> /xc3/xeb <CJK>
+<U93C8> /xc3/xec <CJK>
+<U93DC> /xc3/xed <CJK>
+<U93DD> /xc3/xee <CJK>
+<U93D6> /xc3/xef <CJK>
+<U93E2> /xc3/xf0 <CJK>
+<U93CD> /xc3/xf1 <CJK>
+<U93D8> /xc3/xf2 <CJK>
+<U93E4> /xc3/xf3 <CJK>
+<U93D7> /xc3/xf4 <CJK>
+<U93E8> /xc3/xf5 <CJK>
+<U95DC> /xc3/xf6 <CJK>
+<U96B4> /xc3/xf7 <CJK>
+<U96E3> /xc3/xf8 <CJK>
+<U972A> /xc3/xf9 <CJK>
+<U9727> /xc3/xfa <CJK>
+<U9761> /xc3/xfb <CJK>
+<U97DC> /xc3/xfc <CJK>
+<U97FB> /xc3/xfd <CJK>
+<U985E> /xc3/xfe <CJK>
+<U9858> /xc4/x40 <CJK>
+<U985B> /xc4/x41 <CJK>
+<U98BC> /xc4/x42 <CJK>
+<U9945> /xc4/x43 <CJK>
+<U9949> /xc4/x44 <CJK>
+<U9A16> /xc4/x45 <CJK>
+<U9A19> /xc4/x46 <CJK>
+<U9B0D> /xc4/x47 <CJK>
+<U9BE8> /xc4/x48 <CJK>
+<U9BE7> /xc4/x49 <CJK>
+<U9BD6> /xc4/x4a <CJK>
+<U9BDB> /xc4/x4b <CJK>
+<U9D89> /xc4/x4c <CJK>
+<U9D61> /xc4/x4d <CJK>
+<U9D72> /xc4/x4e <CJK>
+<U9D6A> /xc4/x4f <CJK>
+<U9D6C> /xc4/x50 <CJK>
+<U9E92> /xc4/x51 <CJK>
+<U9E97> /xc4/x52 <CJK>
+<U9E93> /xc4/x53 <CJK>
+<U9EB4> /xc4/x54 <CJK>
+<U52F8> /xc4/x55 <CJK>
+<U56A8> /xc4/x56 <CJK>
+<U56B7> /xc4/x57 <CJK>
+<U56B6> /xc4/x58 <CJK>
+<U56B4> /xc4/x59 <CJK>
+<U56BC> /xc4/x5a <CJK>
+<U58E4> /xc4/x5b <CJK>
+<U5B40> /xc4/x5c <CJK>
+<U5B43> /xc4/x5d <CJK>
+<U5B7D> /xc4/x5e <CJK>
+<U5BF6> /xc4/x5f <CJK>
+<U5DC9> /xc4/x60 <CJK>
+<U61F8> /xc4/x61 <CJK>
+<U61FA> /xc4/x62 <CJK>
+<U6518> /xc4/x63 <CJK>
+<U6514> /xc4/x64 <CJK>
+<U6519> /xc4/x65 <CJK>
+<U66E6> /xc4/x66 <CJK>
+<U6727> /xc4/x67 <CJK>
+<U6AEC> /xc4/x68 <CJK>
+<U703E> /xc4/x69 <CJK>
+<U7030> /xc4/x6a <CJK>
+<U7032> /xc4/x6b <CJK>
+<U7210> /xc4/x6c <CJK>
+<U737B> /xc4/x6d <CJK>
+<U74CF> /xc4/x6e <CJK>
+<U7662> /xc4/x6f <CJK>
+<U7665> /xc4/x70 <CJK>
+<U7926> /xc4/x71 <CJK>
+<U792A> /xc4/x72 <CJK>
+<U792C> /xc4/x73 <CJK>
+<U792B> /xc4/x74 <CJK>
+<U7AC7> /xc4/x75 <CJK>
+<U7AF6> /xc4/x76 <CJK>
+<U7C4C> /xc4/x77 <CJK>
+<U7C43> /xc4/x78 <CJK>
+<U7C4D> /xc4/x79 <CJK>
+<U7CEF> /xc4/x7a <CJK>
+<U7CF0> /xc4/x7b <CJK>
+<U8FAE> /xc4/x7c <CJK>
+<U7E7D> /xc4/x7d <CJK>
+<U7E7C> /xc4/x7e <CJK>
+<U7E82> /xc4/xa1 <CJK>
+<U7F4C> /xc4/xa2 <CJK>
+<U8000> /xc4/xa3 <CJK>
+<U81DA> /xc4/xa4 <CJK>
+<U8266> /xc4/xa5 <CJK>
+<U85FB> /xc4/xa6 <CJK>
+<U85F9> /xc4/xa7 <CJK>
+<U8611> /xc4/xa8 <CJK>
+<U85FA> /xc4/xa9 <CJK>
+<U8606> /xc4/xaa <CJK>
+<U860B> /xc4/xab <CJK>
+<U8607> /xc4/xac <CJK>
+<U860A> /xc4/xad <CJK>
+<U8814> /xc4/xae <CJK>
+<U8815> /xc4/xaf <CJK>
+<U8964> /xc4/xb0 <CJK>
+<U89BA> /xc4/xb1 <CJK>
+<U89F8> /xc4/xb2 <CJK>
+<U8B70> /xc4/xb3 <CJK>
+<U8B6C> /xc4/xb4 <CJK>
+<U8B66> /xc4/xb5 <CJK>
+<U8B6F> /xc4/xb6 <CJK>
+<U8B5F> /xc4/xb7 <CJK>
+<U8B6B> /xc4/xb8 <CJK>
+<U8D0F> /xc4/xb9 <CJK>
+<U8D0D> /xc4/xba <CJK>
+<U8E89> /xc4/xbb <CJK>
+<U8E81> /xc4/xbc <CJK>
+<U8E85> /xc4/xbd <CJK>
+<U8E82> /xc4/xbe <CJK>
+<U91B4> /xc4/xbf <CJK>
+<U91CB> /xc4/xc0 <CJK>
+<U9418> /xc4/xc1 <CJK>
+<U9403> /xc4/xc2 <CJK>
+<U93FD> /xc4/xc3 <CJK>
+<U95E1> /xc4/xc4 <CJK>
+<U9730> /xc4/xc5 <CJK>
+<U98C4> /xc4/xc6 <CJK>
+<U9952> /xc4/xc7 <CJK>
+<U9951> /xc4/xc8 <CJK>
+<U99A8> /xc4/xc9 <CJK>
+<U9A2B> /xc4/xca <CJK>
+<U9A30> /xc4/xcb <CJK>
+<U9A37> /xc4/xcc <CJK>
+<U9A35> /xc4/xcd <CJK>
+<U9C13> /xc4/xce <CJK>
+<U9C0D> /xc4/xcf <CJK>
+<U9E79> /xc4/xd0 <CJK>
+<U9EB5> /xc4/xd1 <CJK>
+<U9EE8> /xc4/xd2 <CJK>
+<U9F2F> /xc4/xd3 <CJK>
+<U9F5F> /xc4/xd4 <CJK>
+<U9F63> /xc4/xd5 <CJK>
+<U9F61> /xc4/xd6 <CJK>
+<U5137> /xc4/xd7 <CJK>
+<U5138> /xc4/xd8 <CJK>
+<U56C1> /xc4/xd9 <CJK>
+<U56C0> /xc4/xda <CJK>
+<U56C2> /xc4/xdb <CJK>
+<U5914> /xc4/xdc <CJK>
+<U5C6C> /xc4/xdd <CJK>
+<U5DCD> /xc4/xde <CJK>
+<U61FC> /xc4/xdf <CJK>
+<U61FE> /xc4/xe0 <CJK>
+<U651D> /xc4/xe1 <CJK>
+<U651C> /xc4/xe2 <CJK>
+<U6595> /xc4/xe3 <CJK>
+<U66E9> /xc4/xe4 <CJK>
+<U6AFB> /xc4/xe5 <CJK>
+<U6B04> /xc4/xe6 <CJK>
+<U6AFA> /xc4/xe7 <CJK>
+<U6BB2> /xc4/xe8 <CJK>
+<U704C> /xc4/xe9 <CJK>
+<U721B> /xc4/xea <CJK>
+<U72A7> /xc4/xeb <CJK>
+<U74D6> /xc4/xec <CJK>
+<U74D4> /xc4/xed <CJK>
+<U7669> /xc4/xee <CJK>
+<U77D3> /xc4/xef <CJK>
+<U7C50> /xc4/xf0 <CJK>
+<U7E8F> /xc4/xf1 <CJK>
+<U7E8C> /xc4/xf2 <CJK>
+<U7FBC> /xc4/xf3 <CJK>
+<U8617> /xc4/xf4 <CJK>
+<U862D> /xc4/xf5 <CJK>
+<U861A> /xc4/xf6 <CJK>
+<U8823> /xc4/xf7 <CJK>
+<U8822> /xc4/xf8 <CJK>
+<U8821> /xc4/xf9 <CJK>
+<U881F> /xc4/xfa <CJK>
+<U896A> /xc4/xfb <CJK>
+<U896C> /xc4/xfc <CJK>
+<U89BD> /xc4/xfd <CJK>
+<U8B74> /xc4/xfe <CJK>
+<U8B77> /xc5/x40 <CJK>
+<U8B7D> /xc5/x41 <CJK>
+<U8D13> /xc5/x42 <CJK>
+<U8E8A> /xc5/x43 <CJK>
+<U8E8D> /xc5/x44 <CJK>
+<U8E8B> /xc5/x45 <CJK>
+<U8F5F> /xc5/x46 <CJK>
+<U8FAF> /xc5/x47 <CJK>
+<U91BA> /xc5/x48 <CJK>
+<U942E> /xc5/x49 <CJK>
+<U9433> /xc5/x4a <CJK>
+<U9435> /xc5/x4b <CJK>
+<U943A> /xc5/x4c <CJK>
+<U9438> /xc5/x4d <CJK>
+<U9432> /xc5/x4e <CJK>
+<U942B> /xc5/x4f <CJK>
+<U95E2> /xc5/x50 <CJK>
+<U9738> /xc5/x51 <CJK>
+<U9739> /xc5/x52 <CJK>
+<U9732> /xc5/x53 <CJK>
+<U97FF> /xc5/x54 <CJK>
+<U9867> /xc5/x55 <CJK>
+<U9865> /xc5/x56 <CJK>
+<U9957> /xc5/x57 <CJK>
+<U9A45> /xc5/x58 <CJK>
+<U9A43> /xc5/x59 <CJK>
+<U9A40> /xc5/x5a <CJK>
+<U9A3E> /xc5/x5b <CJK>
+<U9ACF> /xc5/x5c <CJK>
+<U9B54> /xc5/x5d <CJK>
+<U9B51> /xc5/x5e <CJK>
+<U9C2D> /xc5/x5f <CJK>
+<U9C25> /xc5/x60 <CJK>
+<U9DAF> /xc5/x61 <CJK>
+<U9DB4> /xc5/x62 <CJK>
+<U9DC2> /xc5/x63 <CJK>
+<U9DB8> /xc5/x64 <CJK>
+<U9E9D> /xc5/x65 <CJK>
+<U9EEF> /xc5/x66 <CJK>
+<U9F19> /xc5/x67 <CJK>
+<U9F5C> /xc5/x68 <CJK>
+<U9F66> /xc5/x69 <CJK>
+<U9F67> /xc5/x6a <CJK>
+<U513C> /xc5/x6b <CJK>
+<U513B> /xc5/x6c <CJK>
+<U56C8> /xc5/x6d <CJK>
+<U56CA> /xc5/x6e <CJK>
+<U56C9> /xc5/x6f <CJK>
+<U5B7F> /xc5/x70 <CJK>
+<U5DD4> /xc5/x71 <CJK>
+<U5DD2> /xc5/x72 <CJK>
+<U5F4E> /xc5/x73 <CJK>
+<U61FF> /xc5/x74 <CJK>
+<U6524> /xc5/x75 <CJK>
+<U6B0A> /xc5/x76 <CJK>
+<U6B61> /xc5/x77 <CJK>
+<U7051> /xc5/x78 <CJK>
+<U7058> /xc5/x79 <CJK>
+<U7380> /xc5/x7a <CJK>
+<U74E4> /xc5/x7b <CJK>
+<U758A> /xc5/x7c <CJK>
+<U766E> /xc5/x7d <CJK>
+<U766C> /xc5/x7e <CJK>
+<U79B3> /xc5/xa1 <CJK>
+<U7C60> /xc5/xa2 <CJK>
+<U7C5F> /xc5/xa3 <CJK>
+<U807E> /xc5/xa4 <CJK>
+<U807D> /xc5/xa5 <CJK>
+<U81DF> /xc5/xa6 <CJK>
+<U8972> /xc5/xa7 <CJK>
+<U896F> /xc5/xa8 <CJK>
+<U89FC> /xc5/xa9 <CJK>
+<U8B80> /xc5/xaa <CJK>
+<U8D16> /xc5/xab <CJK>
+<U8D17> /xc5/xac <CJK>
+<U8E91> /xc5/xad <CJK>
+<U8E93> /xc5/xae <CJK>
+<U8F61> /xc5/xaf <CJK>
+<U9148> /xc5/xb0 <CJK>
+<U9444> /xc5/xb1 <CJK>
+<U9451> /xc5/xb2 <CJK>
+<U9452> /xc5/xb3 <CJK>
+<U973D> /xc5/xb4 <CJK>
+<U973E> /xc5/xb5 <CJK>
+<U97C3> /xc5/xb6 <CJK>
+<U97C1> /xc5/xb7 <CJK>
+<U986B> /xc5/xb8 <CJK>
+<U9955> /xc5/xb9 <CJK>
+<U9A55> /xc5/xba <CJK>
+<U9A4D> /xc5/xbb <CJK>
+<U9AD2> /xc5/xbc <CJK>
+<U9B1A> /xc5/xbd <CJK>
+<U9C49> /xc5/xbe <CJK>
+<U9C31> /xc5/xbf <CJK>
+<U9C3E> /xc5/xc0 <CJK>
+<U9C3B> /xc5/xc1 <CJK>
+<U9DD3> /xc5/xc2 <CJK>
+<U9DD7> /xc5/xc3 <CJK>
+<U9F34> /xc5/xc4 <CJK>
+<U9F6C> /xc5/xc5 <CJK>
+<U9F6A> /xc5/xc6 <CJK>
+<U9F94> /xc5/xc7 <CJK>
+<U56CC> /xc5/xc8 <CJK>
+<U5DD6> /xc5/xc9 <CJK>
+<U6200> /xc5/xca <CJK>
+<U6523> /xc5/xcb <CJK>
+<U652B> /xc5/xcc <CJK>
+<U652A> /xc5/xcd <CJK>
+<U66EC> /xc5/xce <CJK>
+<U6B10> /xc5/xcf <CJK>
+<U74DA> /xc5/xd0 <CJK>
+<U7ACA> /xc5/xd1 <CJK>
+<U7C64> /xc5/xd2 <CJK>
+<U7C63> /xc5/xd3 <CJK>
+<U7C65> /xc5/xd4 <CJK>
+<U7E93> /xc5/xd5 <CJK>
+<U7E96> /xc5/xd6 <CJK>
+<U7E94> /xc5/xd7 <CJK>
+<U81E2> /xc5/xd8 <CJK>
+<U8638> /xc5/xd9 <CJK>
+<U863F> /xc5/xda <CJK>
+<U8831> /xc5/xdb <CJK>
+<U8B8A> /xc5/xdc <CJK>
+<U9090> /xc5/xdd <CJK>
+<U908F> /xc5/xde <CJK>
+<U9463> /xc5/xdf <CJK>
+<U9460> /xc5/xe0 <CJK>
+<U9464> /xc5/xe1 <CJK>
+<U9768> /xc5/xe2 <CJK>
+<U986F> /xc5/xe3 <CJK>
+<U995C> /xc5/xe4 <CJK>
+<U9A5A> /xc5/xe5 <CJK>
+<U9A5B> /xc5/xe6 <CJK>
+<U9A57> /xc5/xe7 <CJK>
+<U9AD3> /xc5/xe8 <CJK>
+<U9AD4> /xc5/xe9 <CJK>
+<U9AD1> /xc5/xea <CJK>
+<U9C54> /xc5/xeb <CJK>
+<U9C57> /xc5/xec <CJK>
+<U9C56> /xc5/xed <CJK>
+<U9DE5> /xc5/xee <CJK>
+<U9E9F> /xc5/xef <CJK>
+<U9EF4> /xc5/xf0 <CJK>
+<U56D1> /xc5/xf1 <CJK>
+<U58E9> /xc5/xf2 <CJK>
+<U652C> /xc5/xf3 <CJK>
+<U705E> /xc5/xf4 <CJK>
+<U7671> /xc5/xf5 <CJK>
+<U7672> /xc5/xf6 <CJK>
+<U77D7> /xc5/xf7 <CJK>
+<U7F50> /xc5/xf8 <CJK>
+<U7F88> /xc5/xf9 <CJK>
+<U8836> /xc5/xfa <CJK>
+<U8839> /xc5/xfb <CJK>
+<U8862> /xc5/xfc <CJK>
+<U8B93> /xc5/xfd <CJK>
+<U8B92> /xc5/xfe <CJK>
+<U8B96> /xc6/x40 <CJK>
+<U8277> /xc6/x41 <CJK>
+<U8D1B> /xc6/x42 <CJK>
+<U91C0> /xc6/x43 <CJK>
+<U946A> /xc6/x44 <CJK>
+<U9742> /xc6/x45 <CJK>
+<U9748> /xc6/x46 <CJK>
+<U9744> /xc6/x47 <CJK>
+<U97C6> /xc6/x48 <CJK>
+<U9870> /xc6/x49 <CJK>
+<U9A5F> /xc6/x4a <CJK>
+<U9B22> /xc6/x4b <CJK>
+<U9B58> /xc6/x4c <CJK>
+<U9C5F> /xc6/x4d <CJK>
+<U9DF9> /xc6/x4e <CJK>
+<U9DFA> /xc6/x4f <CJK>
+<U9E7C> /xc6/x50 <CJK>
+<U9E7D> /xc6/x51 <CJK>
+<U9F07> /xc6/x52 <CJK>
+<U9F77> /xc6/x53 <CJK>
+<U9F72> /xc6/x54 <CJK>
+<U5EF3> /xc6/x55 <CJK>
+<U6B16> /xc6/x56 <CJK>
+<U7063> /xc6/x57 <CJK>
+<U7C6C> /xc6/x58 <CJK>
+<U7C6E> /xc6/x59 <CJK>
+<U883B> /xc6/x5a <CJK>
+<U89C0> /xc6/x5b <CJK>
+<U8EA1> /xc6/x5c <CJK>
+<U91C1> /xc6/x5d <CJK>
+<U9472> /xc6/x5e <CJK>
+<U9470> /xc6/x5f <CJK>
+<U9871> /xc6/x60 <CJK>
+<U995E> /xc6/x61 <CJK>
+<U9AD6> /xc6/x62 <CJK>
+<U9B23> /xc6/x63 <CJK>
+<U9ECC> /xc6/x64 <CJK>
+<U7064> /xc6/x65 <CJK>
+<U77DA> /xc6/x66 <CJK>
+<U8B9A> /xc6/x67 <CJK>
+<U9477> /xc6/x68 <CJK>
+<U97C9> /xc6/x69 <CJK>
+<U9A62> /xc6/x6a <CJK>
+<U9A65> /xc6/x6b <CJK>
+<U7E9C> /xc6/x6c <CJK>
+<U8B9C> /xc6/x6d <CJK>
+<U8EAA> /xc6/x6e <CJK>
+<U91C5> /xc6/x6f <CJK>
+<U947D> /xc6/x70 <CJK>
+<U947E> /xc6/x71 <CJK>
+<U947C> /xc6/x72 <CJK>
+<U9C77> /xc6/x73 <CJK>
+<U9C78> /xc6/x74 <CJK>
+<U9EF7> /xc6/x75 <CJK>
+<U8C54> /xc6/x76 <CJK>
+<U947F> /xc6/x77 <CJK>
+<U9E1A> /xc6/x78 <CJK>
+<U7228> /xc6/x79 <CJK>
+<U9A6A> /xc6/x7a <CJK>
+<U9B31> /xc6/x7b <CJK>
+<U9E1B> /xc6/x7c <CJK>
+<U9E1E> /xc6/x7d <CJK>
+<U7C72> /xc6/x7e <CJK>
+%
+% Begin of Eten extended charset. Mapping to "Private Use" segment.
+% (Thanks to Aprhic Tech. CO., LTD.)
+%
+<UF6B1> /xc6/xa1 <Private Use>
+<UF6B2> /xc6/xa2 <Private Use>
+<UF6B3> /xc6/xa3 <Private Use>
+<UF6B4> /xc6/xa4 <Private Use>
+<UF6B5> /xc6/xa5 <Private Use>
+<UF6B6> /xc6/xa6 <Private Use>
+<UF6B7> /xc6/xa7 <Private Use>
+<UF6B8> /xc6/xa8 <Private Use>
+<UF6B9> /xc6/xa9 <Private Use>
+<UF6BA> /xc6/xaa <Private Use>
+<UF6BB> /xc6/xab <Private Use>
+<UF6BC> /xc6/xac <Private Use>
+<UF6BD> /xc6/xad <Private Use>
+<UF6BE> /xc6/xae <Private Use>
+<UF6BF> /xc6/xaf <Private Use>
+<UF6C0> /xc6/xb0 <Private Use>
+<UF6C1> /xc6/xb1 <Private Use>
+<UF6C2> /xc6/xb2 <Private Use>
+<UF6C3> /xc6/xb3 <Private Use>
+<UF6C4> /xc6/xb4 <Private Use>
+<UF6C5> /xc6/xb5 <Private Use>
+<UF6C6> /xc6/xb6 <Private Use>
+<UF6C7> /xc6/xb7 <Private Use>
+<UF6C8> /xc6/xb8 <Private Use>
+<UF6C9> /xc6/xb9 <Private Use>
+<UF6CA> /xc6/xba <Private Use>
+<UF6CB> /xc6/xbb <Private Use>
+<UF6CC> /xc6/xbc <Private Use>
+<UF6CD> /xc6/xbd <Private Use>
+<UF6CE> /xc6/xbe <Private Use>
+<UF6CF> /xc6/xbf <Private Use>
+<UF6D0> /xc6/xc0 <Private Use>
+<UF6D1> /xc6/xc1 <Private Use>
+<UF6D2> /xc6/xc2 <Private Use>
+<UF6D3> /xc6/xc3 <Private Use>
+<UF6D4> /xc6/xc4 <Private Use>
+<UF6D5> /xc6/xc5 <Private Use>
+<UF6D6> /xc6/xc6 <Private Use>
+<UF6D7> /xc6/xc7 <Private Use>
+<UF6D8> /xc6/xc8 <Private Use>
+<UF6D9> /xc6/xc9 <Private Use>
+<UF6DA> /xc6/xca <Private Use>
+<UF6DB> /xc6/xcb <Private Use>
+<UF6DC> /xc6/xcc <Private Use>
+<UF6DD> /xc6/xcd <Private Use>
+<UF6DE> /xc6/xce <Private Use>
+<UF6DF> /xc6/xcf <Private Use>
+<UF6E0> /xc6/xd0 <Private Use>
+<UF6E1> /xc6/xd1 <Private Use>
+<UF6E2> /xc6/xd2 <Private Use>
+<UF6E3> /xc6/xd3 <Private Use>
+<UF6E4> /xc6/xd4 <Private Use>
+<UF6E5> /xc6/xd5 <Private Use>
+<UF6E6> /xc6/xd6 <Private Use>
+<UF6E7> /xc6/xd7 <Private Use>
+<UF6E8> /xc6/xd8 <Private Use>
+<UF6E9> /xc6/xd9 <Private Use>
+<UF6EA> /xc6/xda <Private Use>
+<UF6EB> /xc6/xdb <Private Use>
+<UF6EC> /xc6/xdc <Private Use>
+<UF6ED> /xc6/xdd <Private Use>
+<UF6EE> /xc6/xde <Private Use>
+<UF6EF> /xc6/xdf <Private Use>
+<UF6F0> /xc6/xe0 <Private Use>
+<UF6F1> /xc6/xe1 <Private Use>
+<UF6F2> /xc6/xe2 <Private Use>
+<UF6F3> /xc6/xe3 <Private Use>
+<UF6F4> /xc6/xe4 <Private Use>
+<UF6F5> /xc6/xe5 <Private Use>
+<UF6F6> /xc6/xe6 <Private Use>
+<UF6F7> /xc6/xe7 <Private Use>
+<UF6F8> /xc6/xe8 <Private Use>
+<UF6F9> /xc6/xe9 <Private Use>
+<UF6FA> /xc6/xea <Private Use>
+<UF6FB> /xc6/xeb <Private Use>
+<UF6FC> /xc6/xec <Private Use>
+<UF6FD> /xc6/xed <Private Use>
+<UF6FE> /xc6/xee <Private Use>
+<UF6FF> /xc6/xef <Private Use>
+<UF700> /xc6/xf0 <Private Use>
+<UF701> /xc6/xf1 <Private Use>
+<UF702> /xc6/xf2 <Private Use>
+<UF703> /xc6/xf3 <Private Use>
+<UF704> /xc6/xf4 <Private Use>
+<UF705> /xc6/xf5 <Private Use>
+<UF706> /xc6/xf6 <Private Use>
+<UF707> /xc6/xf7 <Private Use>
+<UF708> /xc6/xf8 <Private Use>
+<UF709> /xc6/xf9 <Private Use>
+<UF70A> /xc6/xfa <Private Use>
+<UF70B> /xc6/xfb <Private Use>
+<UF70C> /xc6/xfc <Private Use>
+<UF70D> /xc6/xfd <Private Use>
+<UF70E> /xc6/xfe <Private Use>
+<UF70F> /xc7/x40 <Private Use>
+<UF710> /xc7/x41 <Private Use>
+<UF711> /xc7/x42 <Private Use>
+<UF712> /xc7/x43 <Private Use>
+<UF713> /xc7/x44 <Private Use>
+<UF714> /xc7/x45 <Private Use>
+<UF715> /xc7/x46 <Private Use>
+<UF716> /xc7/x47 <Private Use>
+<UF717> /xc7/x48 <Private Use>
+<UF718> /xc7/x49 <Private Use>
+<UF719> /xc7/x4a <Private Use>
+<UF71A> /xc7/x4b <Private Use>
+<UF71B> /xc7/x4c <Private Use>
+<UF71C> /xc7/x4d <Private Use>
+<UF71D> /xc7/x4e <Private Use>
+<UF71E> /xc7/x4f <Private Use>
+<UF71F> /xc7/x50 <Private Use>
+<UF720> /xc7/x51 <Private Use>
+<UF721> /xc7/x52 <Private Use>
+<UF722> /xc7/x53 <Private Use>
+<UF723> /xc7/x54 <Private Use>
+<UF724> /xc7/x55 <Private Use>
+<UF725> /xc7/x56 <Private Use>
+<UF726> /xc7/x57 <Private Use>
+<UF727> /xc7/x58 <Private Use>
+<UF728> /xc7/x59 <Private Use>
+<UF729> /xc7/x5a <Private Use>
+<UF72A> /xc7/x5b <Private Use>
+<UF72B> /xc7/x5c <Private Use>
+<UF72C> /xc7/x5d <Private Use>
+<UF72D> /xc7/x5e <Private Use>
+<UF72E> /xc7/x5f <Private Use>
+<UF72F> /xc7/x60 <Private Use>
+<UF730> /xc7/x61 <Private Use>
+<UF731> /xc7/x62 <Private Use>
+<UF732> /xc7/x63 <Private Use>
+<UF733> /xc7/x64 <Private Use>
+<UF734> /xc7/x65 <Private Use>
+<UF735> /xc7/x66 <Private Use>
+<UF736> /xc7/x67 <Private Use>
+<UF737> /xc7/x68 <Private Use>
+<UF738> /xc7/x69 <Private Use>
+<UF739> /xc7/x6a <Private Use>
+<UF73A> /xc7/x6b <Private Use>
+<UF73B> /xc7/x6c <Private Use>
+<UF73C> /xc7/x6d <Private Use>
+<UF73D> /xc7/x6e <Private Use>
+<UF73E> /xc7/x6f <Private Use>
+<UF73F> /xc7/x70 <Private Use>
+<UF740> /xc7/x71 <Private Use>
+<UF741> /xc7/x72 <Private Use>
+<UF742> /xc7/x73 <Private Use>
+<UF743> /xc7/x74 <Private Use>
+<UF744> /xc7/x75 <Private Use>
+<UF745> /xc7/x76 <Private Use>
+<UF746> /xc7/x77 <Private Use>
+<UF747> /xc7/x78 <Private Use>
+<UF748> /xc7/x79 <Private Use>
+<UF749> /xc7/x7a <Private Use>
+<UF74A> /xc7/x7b <Private Use>
+<UF74B> /xc7/x7c <Private Use>
+<UF74C> /xc7/x7d <Private Use>
+<UF74D> /xc7/x7e <Private Use>
+<UF74E> /xc7/xa1 <Private Use>
+<UF74F> /xc7/xa2 <Private Use>
+<UF750> /xc7/xa3 <Private Use>
+<UF751> /xc7/xa4 <Private Use>
+<UF752> /xc7/xa5 <Private Use>
+<UF753> /xc7/xa6 <Private Use>
+<UF754> /xc7/xa7 <Private Use>
+<UF755> /xc7/xa8 <Private Use>
+<UF756> /xc7/xa9 <Private Use>
+<UF757> /xc7/xaa <Private Use>
+<UF758> /xc7/xab <Private Use>
+<UF759> /xc7/xac <Private Use>
+<UF75A> /xc7/xad <Private Use>
+<UF75B> /xc7/xae <Private Use>
+<UF75C> /xc7/xaf <Private Use>
+<UF75D> /xc7/xb0 <Private Use>
+<UF75E> /xc7/xb1 <Private Use>
+<UF75F> /xc7/xb2 <Private Use>
+<UF760> /xc7/xb3 <Private Use>
+<UF761> /xc7/xb4 <Private Use>
+<UF762> /xc7/xb5 <Private Use>
+<UF763> /xc7/xb6 <Private Use>
+<UF764> /xc7/xb7 <Private Use>
+<UF765> /xc7/xb8 <Private Use>
+<UF766> /xc7/xb9 <Private Use>
+<UF767> /xc7/xba <Private Use>
+<UF768> /xc7/xbb <Private Use>
+<UF769> /xc7/xbc <Private Use>
+<UF76A> /xc7/xbd <Private Use>
+<UF76B> /xc7/xbe <Private Use>
+<UF76C> /xc7/xbf <Private Use>
+<UF76D> /xc7/xc0 <Private Use>
+<UF76E> /xc7/xc1 <Private Use>
+<UF76F> /xc7/xc2 <Private Use>
+<UF770> /xc7/xc3 <Private Use>
+<UF771> /xc7/xc4 <Private Use>
+<UF772> /xc7/xc5 <Private Use>
+<UF773> /xc7/xc6 <Private Use>
+<UF774> /xc7/xc7 <Private Use>
+<UF775> /xc7/xc8 <Private Use>
+<UF776> /xc7/xc9 <Private Use>
+<UF777> /xc7/xca <Private Use>
+<UF778> /xc7/xcb <Private Use>
+<UF779> /xc7/xcc <Private Use>
+<UF77A> /xc7/xcd <Private Use>
+<UF77B> /xc7/xce <Private Use>
+<UF77C> /xc7/xcf <Private Use>
+<UF77D> /xc7/xd0 <Private Use>
+<UF77E> /xc7/xd1 <Private Use>
+<UF77F> /xc7/xd2 <Private Use>
+<UF780> /xc7/xd3 <Private Use>
+<UF781> /xc7/xd4 <Private Use>
+<UF782> /xc7/xd5 <Private Use>
+<UF783> /xc7/xd6 <Private Use>
+<UF784> /xc7/xd7 <Private Use>
+<UF785> /xc7/xd8 <Private Use>
+<UF786> /xc7/xd9 <Private Use>
+<UF787> /xc7/xda <Private Use>
+<UF788> /xc7/xdb <Private Use>
+<UF789> /xc7/xdc <Private Use>
+<UF78A> /xc7/xdd <Private Use>
+<UF78B> /xc7/xde <Private Use>
+<UF78C> /xc7/xdf <Private Use>
+<UF78D> /xc7/xe0 <Private Use>
+<UF78E> /xc7/xe1 <Private Use>
+<UF78F> /xc7/xe2 <Private Use>
+<UF790> /xc7/xe3 <Private Use>
+<UF791> /xc7/xe4 <Private Use>
+<UF792> /xc7/xe5 <Private Use>
+<UF793> /xc7/xe6 <Private Use>
+<UF794> /xc7/xe7 <Private Use>
+<UF795> /xc7/xe8 <Private Use>
+<UF796> /xc7/xe9 <Private Use>
+<UF797> /xc7/xea <Private Use>
+<UF798> /xc7/xeb <Private Use>
+<UF799> /xc7/xec <Private Use>
+<UF79A> /xc7/xed <Private Use>
+<UF79B> /xc7/xee <Private Use>
+<UF79C> /xc7/xef <Private Use>
+<UF79D> /xc7/xf0 <Private Use>
+<UF79E> /xc7/xf1 <Private Use>
+<UF79F> /xc7/xf2 <Private Use>
+<UF7A0> /xc7/xf3 <Private Use>
+<UF7A1> /xc7/xf4 <Private Use>
+<UF7A2> /xc7/xf5 <Private Use>
+<UF7A3> /xc7/xf6 <Private Use>
+<UF7A4> /xc7/xf7 <Private Use>
+<UF7A5> /xc7/xf8 <Private Use>
+<UF7A6> /xc7/xf9 <Private Use>
+<UF7A7> /xc7/xfa <Private Use>
+<UF7A8> /xc7/xfb <Private Use>
+<UF7A9> /xc7/xfc <Private Use>
+<UF7AA> /xc7/xfd <Private Use>
+<UF7AB> /xc7/xfe <Private Use>
+<UF7AC> /xc8/x40 <Private Use>
+<UF7AD> /xc8/x41 <Private Use>
+<UF7AE> /xc8/x42 <Private Use>
+<UF7AF> /xc8/x43 <Private Use>
+<UF7B0> /xc8/x44 <Private Use>
+<UF7B1> /xc8/x45 <Private Use>
+<UF7B2> /xc8/x46 <Private Use>
+<UF7B3> /xc8/x47 <Private Use>
+<UF7B4> /xc8/x48 <Private Use>
+<UF7B5> /xc8/x49 <Private Use>
+<UF7B6> /xc8/x4a <Private Use>
+<UF7B7> /xc8/x4b <Private Use>
+<UF7B8> /xc8/x4c <Private Use>
+<UF7B9> /xc8/x4d <Private Use>
+<UF7BA> /xc8/x4e <Private Use>
+<UF7BB> /xc8/x4f <Private Use>
+<UF7BC> /xc8/x50 <Private Use>
+<UF7BD> /xc8/x51 <Private Use>
+<UF7BE> /xc8/x52 <Private Use>
+<UF7BF> /xc8/x53 <Private Use>
+<UF7C0> /xc8/x54 <Private Use>
+<UF7C1> /xc8/x55 <Private Use>
+<UF7C2> /xc8/x56 <Private Use>
+<UF7C3> /xc8/x57 <Private Use>
+<UF7C4> /xc8/x58 <Private Use>
+<UF7C5> /xc8/x59 <Private Use>
+<UF7C6> /xc8/x5a <Private Use>
+<UF7C7> /xc8/x5b <Private Use>
+<UF7C8> /xc8/x5c <Private Use>
+<UF7C9> /xc8/x5d <Private Use>
+<UF7CA> /xc8/x5e <Private Use>
+<UF7CB> /xc8/x5f <Private Use>
+<UF7CC> /xc8/x60 <Private Use>
+<UF7CD> /xc8/x61 <Private Use>
+<UF7CE> /xc8/x62 <Private Use>
+<UF7CF> /xc8/x63 <Private Use>
+<UF7D0> /xc8/x64 <Private Use>
+<UF7D1> /xc8/x65 <Private Use>
+<UF7D2> /xc8/x66 <Private Use>
+<UF7D3> /xc8/x67 <Private Use>
+<UF7D4> /xc8/x68 <Private Use>
+<UF7D5> /xc8/x69 <Private Use>
+<UF7D6> /xc8/x6a <Private Use>
+<UF7D7> /xc8/x6b <Private Use>
+<UF7D8> /xc8/x6c <Private Use>
+<UF7D9> /xc8/x6d <Private Use>
+<UF7DA> /xc8/x6e <Private Use>
+<UF7DB> /xc8/x6f <Private Use>
+<UF7DC> /xc8/x70 <Private Use>
+<UF7DD> /xc8/x71 <Private Use>
+<UF7DE> /xc8/x72 <Private Use>
+<UF7DF> /xc8/x73 <Private Use>
+<UF7E0> /xc8/x74 <Private Use>
+<UF7E1> /xc8/x75 <Private Use>
+<UF7E2> /xc8/x76 <Private Use>
+<UF7E3> /xc8/x77 <Private Use>
+<UF7E4> /xc8/x78 <Private Use>
+<UF7E5> /xc8/x79 <Private Use>
+<UF7E6> /xc8/x7a <Private Use>
+<UF7E7> /xc8/x7b <Private Use>
+<UF7E8> /xc8/x7c <Private Use>
+<UF7E9> /xc8/x7d <Private Use>
+<UF7EA> /xc8/x7e <Private Use>
+<UF7EB> /xc8/xa1 <Private Use>
+<UF7EC> /xc8/xa2 <Private Use>
+<UF7ED> /xc8/xa3 <Private Use>
+<UF7EE> /xc8/xa4 <Private Use>
+<UF7EF> /xc8/xa5 <Private Use>
+<UF7F0> /xc8/xa6 <Private Use>
+<UF7F1> /xc8/xa7 <Private Use>
+<UF7F2> /xc8/xa8 <Private Use>
+<UF7F3> /xc8/xa9 <Private Use>
+<UF7F4> /xc8/xaa <Private Use>
+<UF7F5> /xc8/xab <Private Use>
+<UF7F6> /xc8/xac <Private Use>
+<UF7F7> /xc8/xad <Private Use>
+<UF7F8> /xc8/xae <Private Use>
+<UF7F9> /xc8/xaf <Private Use>
+<UF7FA> /xc8/xb0 <Private Use>
+<UF7FB> /xc8/xb1 <Private Use>
+<UF7FC> /xc8/xb2 <Private Use>
+<UF7FD> /xc8/xb3 <Private Use>
+<UF7FE> /xc8/xb4 <Private Use>
+<UF7FF> /xc8/xb5 <Private Use>
+<UF800> /xc8/xb6 <Private Use>
+<UF801> /xc8/xb7 <Private Use>
+<UF802> /xc8/xb8 <Private Use>
+<UF803> /xc8/xb9 <Private Use>
+<UF804> /xc8/xba <Private Use>
+<UF805> /xc8/xbb <Private Use>
+<UF806> /xc8/xbc <Private Use>
+<UF807> /xc8/xbd <Private Use>
+<UF808> /xc8/xbe <Private Use>
+<UF809> /xc8/xbf <Private Use>
+<UF80A> /xc8/xc0 <Private Use>
+<UF80B> /xc8/xc1 <Private Use>
+<UF80C> /xc8/xc2 <Private Use>
+<UF80D> /xc8/xc3 <Private Use>
+<UF80E> /xc8/xc4 <Private Use>
+<UF80F> /xc8/xc5 <Private Use>
+<UF810> /xc8/xc6 <Private Use>
+<UF811> /xc8/xc7 <Private Use>
+<UF812> /xc8/xc8 <Private Use>
+<UF813> /xc8/xc9 <Private Use>
+<UF814> /xc8/xca <Private Use>
+<UF815> /xc8/xcb <Private Use>
+<UF816> /xc8/xcc <Private Use>
+<UF817> /xc8/xcd <Private Use>
+<UF818> /xc8/xce <Private Use>
+<UF819> /xc8/xcf <Private Use>
+<UF81A> /xc8/xd0 <Private Use>
+<UF81B> /xc8/xd1 <Private Use>
+<UF81C> /xc8/xd2 <Private Use>
+<UF81D> /xc8/xd3 <Private Use>
+<UF81E> /xc8/xd4 <Private Use>
+<UF81F> /xc8/xd5 <Private Use>
+<UF820> /xc8/xd6 <Private Use>
+<UF821> /xc8/xd7 <Private Use>
+<UF822> /xc8/xd8 <Private Use>
+<UF823> /xc8/xd9 <Private Use>
+<UF824> /xc8/xda <Private Use>
+<UF825> /xc8/xdb <Private Use>
+<UF826> /xc8/xdc <Private Use>
+<UF827> /xc8/xdd <Private Use>
+<UF828> /xc8/xde <Private Use>
+<UF829> /xc8/xdf <Private Use>
+<UF82A> /xc8/xe0 <Private Use>
+<UF82B> /xc8/xe1 <Private Use>
+<UF82C> /xc8/xe2 <Private Use>
+<UF82D> /xc8/xe3 <Private Use>
+<UF82E> /xc8/xe4 <Private Use>
+<UF82F> /xc8/xe5 <Private Use>
+<UF830> /xc8/xe6 <Private Use>
+<UF831> /xc8/xe7 <Private Use>
+<UF832> /xc8/xe8 <Private Use>
+<UF833> /xc8/xe9 <Private Use>
+<UF834> /xc8/xea <Private Use>
+<UF835> /xc8/xeb <Private Use>
+<UF836> /xc8/xec <Private Use>
+<UF837> /xc8/xed <Private Use>
+<UF838> /xc8/xee <Private Use>
+<UF839> /xc8/xef <Private Use>
+<UF83A> /xc8/xf0 <Private Use>
+<UF83B> /xc8/xf1 <Private Use>
+<UF83C> /xc8/xf2 <Private Use>
+<UF83D> /xc8/xf3 <Private Use>
+<UF83E> /xc8/xf4 <Private Use>
+<UF83F> /xc8/xf5 <Private Use>
+<UF840> /xc8/xf6 <Private Use>
+<UF841> /xc8/xf7 <Private Use>
+<UF842> /xc8/xf8 <Private Use>
+<UF843> /xc8/xf9 <Private Use>
+<UF844> /xc8/xfa <Private Use>
+<UF845> /xc8/xfb <Private Use>
+<UF846> /xc8/xfc <Private Use>
+<UF847> /xc8/xfd <Private Use>
+<UF848> /xc8/xfe <Private Use>
+%
+% End of Eten extended charset.
+%
+<U4E42> /xc9/x40 <CJK>
+<U4E5C> /xc9/x41 <CJK>
+<U51F5> /xc9/x42 <CJK>
+<U531A> /xc9/x43 <CJK>
+<U5382> /xc9/x44 <CJK>
+<U4E07> /xc9/x45 <CJK>
+<U4E0C> /xc9/x46 <CJK>
+<U4E47> /xc9/x47 <CJK>
+<U4E8D> /xc9/x48 <CJK>
+<U56D7> /xc9/x49 <CJK>
+<UFA0C> /xc9/x4a CJK COMPATIBILITY IDEOGRAPH
+<U5C6E> /xc9/x4b <CJK>
+<U5F73> /xc9/x4c <CJK>
+<U4E0F> /xc9/x4d <CJK>
+<U5187> /xc9/x4e <CJK>
+<U4E0E> /xc9/x4f <CJK>
+<U4E2E> /xc9/x50 <CJK>
+<U4E93> /xc9/x51 <CJK>
+<U4EC2> /xc9/x52 <CJK>
+<U4EC9> /xc9/x53 <CJK>
+<U4EC8> /xc9/x54 <CJK>
+<U5198> /xc9/x55 <CJK>
+<U52FC> /xc9/x56 <CJK>
+<U536C> /xc9/x57 <CJK>
+<U53B9> /xc9/x58 <CJK>
+<U5720> /xc9/x59 <CJK>
+<U5903> /xc9/x5a <CJK>
+<U592C> /xc9/x5b <CJK>
+<U5C10> /xc9/x5c <CJK>
+<U5DFF> /xc9/x5d <CJK>
+<U65E1> /xc9/x5e <CJK>
+<U6BB3> /xc9/x5f <CJK>
+<U6BCC> /xc9/x60 <CJK>
+<U6C14> /xc9/x61 <CJK>
+<U723F> /xc9/x62 <CJK>
+<U4E31> /xc9/x63 <CJK>
+<U4E3C> /xc9/x64 <CJK>
+<U4EE8> /xc9/x65 <CJK>
+<U4EDC> /xc9/x66 <CJK>
+<U4EE9> /xc9/x67 <CJK>
+<U4EE1> /xc9/x68 <CJK>
+<U4EDD> /xc9/x69 <CJK>
+<U4EDA> /xc9/x6a <CJK>
+<U520C> /xc9/x6b <CJK>
+<U531C> /xc9/x6c <CJK>
+<U534C> /xc9/x6d <CJK>
+<U5722> /xc9/x6e <CJK>
+<U5723> /xc9/x6f <CJK>
+<U5917> /xc9/x70 <CJK>
+<U592F> /xc9/x71 <CJK>
+<U5B81> /xc9/x72 <CJK>
+<U5B84> /xc9/x73 <CJK>
+<U5C12> /xc9/x74 <CJK>
+<U5C3B> /xc9/x75 <CJK>
+<U5C74> /xc9/x76 <CJK>
+<U5C73> /xc9/x77 <CJK>
+<U5E04> /xc9/x78 <CJK>
+<U5E80> /xc9/x79 <CJK>
+<U5E82> /xc9/x7a <CJK>
+<U5FC9> /xc9/x7b <CJK>
+<U6209> /xc9/x7c <CJK>
+<U6250> /xc9/x7d <CJK>
+<U6C15> /xc9/x7e <CJK>
+<U6C36> /xc9/xa1 <CJK>
+<U6C43> /xc9/xa2 <CJK>
+<U6C3F> /xc9/xa3 <CJK>
+<U6C3B> /xc9/xa4 <CJK>
+<U72AE> /xc9/xa5 <CJK>
+<U72B0> /xc9/xa6 <CJK>
+<U738A> /xc9/xa7 <CJK>
+<U79B8> /xc9/xa8 <CJK>
+<U808A> /xc9/xa9 <CJK>
+<U961E> /xc9/xaa <CJK>
+<U4F0E> /xc9/xab <CJK>
+<U4F18> /xc9/xac <CJK>
+<U4F2C> /xc9/xad <CJK>
+<U4EF5> /xc9/xae <CJK>
+<U4F14> /xc9/xaf <CJK>
+<U4EF1> /xc9/xb0 <CJK>
+<U4F00> /xc9/xb1 <CJK>
+<U4EF7> /xc9/xb2 <CJK>
+<U4F08> /xc9/xb3 <CJK>
+<U4F1D> /xc9/xb4 <CJK>
+<U4F02> /xc9/xb5 <CJK>
+<U4F05> /xc9/xb6 <CJK>
+<U4F22> /xc9/xb7 <CJK>
+<U4F13> /xc9/xb8 <CJK>
+<U4F04> /xc9/xb9 <CJK>
+<U4EF4> /xc9/xba <CJK>
+<U4F12> /xc9/xbb <CJK>
+<U51B1> /xc9/xbc <CJK>
+<U5213> /xc9/xbd <CJK>
+<U5209> /xc9/xbe <CJK>
+<U5210> /xc9/xbf <CJK>
+<U52A6> /xc9/xc0 <CJK>
+<U5322> /xc9/xc1 <CJK>
+<U531F> /xc9/xc2 <CJK>
+<U534D> /xc9/xc3 <CJK>
+<U538A> /xc9/xc4 <CJK>
+<U5407> /xc9/xc5 <CJK>
+<U56E1> /xc9/xc6 <CJK>
+<U56DF> /xc9/xc7 <CJK>
+<U572E> /xc9/xc8 <CJK>
+<U572A> /xc9/xc9 <CJK>
+<U5734> /xc9/xca <CJK>
+<U593C> /xc9/xcb <CJK>
+<U5980> /xc9/xcc <CJK>
+<U597C> /xc9/xcd <CJK>
+<U5985> /xc9/xce <CJK>
+<U597B> /xc9/xcf <CJK>
+<U597E> /xc9/xd0 <CJK>
+<U5977> /xc9/xd1 <CJK>
+<U597F> /xc9/xd2 <CJK>
+<U5B56> /xc9/xd3 <CJK>
+<U5C15> /xc9/xd4 <CJK>
+<U5C25> /xc9/xd5 <CJK>
+<U5C7C> /xc9/xd6 <CJK>
+<U5C7A> /xc9/xd7 <CJK>
+<U5C7B> /xc9/xd8 <CJK>
+<U5C7E> /xc9/xd9 <CJK>
+<U5DDF> /xc9/xda <CJK>
+<U5E75> /xc9/xdb <CJK>
+<U5E84> /xc9/xdc <CJK>
+<U5F02> /xc9/xdd <CJK>
+<U5F1A> /xc9/xde <CJK>
+<U5F74> /xc9/xdf <CJK>
+<U5FD5> /xc9/xe0 <CJK>
+<U5FD4> /xc9/xe1 <CJK>
+<U5FCF> /xc9/xe2 <CJK>
+<U625C> /xc9/xe3 <CJK>
+<U625E> /xc9/xe4 <CJK>
+<U6264> /xc9/xe5 <CJK>
+<U6261> /xc9/xe6 <CJK>
+<U6266> /xc9/xe7 <CJK>
+<U6262> /xc9/xe8 <CJK>
+<U6259> /xc9/xe9 <CJK>
+<U6260> /xc9/xea <CJK>
+<U625A> /xc9/xeb <CJK>
+<U6265> /xc9/xec <CJK>
+<U65EF> /xc9/xed <CJK>
+<U65EE> /xc9/xee <CJK>
+<U673E> /xc9/xef <CJK>
+<U6739> /xc9/xf0 <CJK>
+<U6738> /xc9/xf1 <CJK>
+<U673B> /xc9/xf2 <CJK>
+<U673A> /xc9/xf3 <CJK>
+<U673F> /xc9/xf4 <CJK>
+<U673C> /xc9/xf5 <CJK>
+<U6733> /xc9/xf6 <CJK>
+<U6C18> /xc9/xf7 <CJK>
+<U6C46> /xc9/xf8 <CJK>
+<U6C52> /xc9/xf9 <CJK>
+<U6C5C> /xc9/xfa <CJK>
+<U6C4F> /xc9/xfb <CJK>
+<U6C4A> /xc9/xfc <CJK>
+<U6C54> /xc9/xfd <CJK>
+<U6C4B> /xc9/xfe <CJK>
+<U6C4C> /xca/x40 <CJK>
+<U7071> /xca/x41 <CJK>
+<U725E> /xca/x42 <CJK>
+<U72B4> /xca/x43 <CJK>
+<U72B5> /xca/x44 <CJK>
+<U738E> /xca/x45 <CJK>
+<U752A> /xca/x46 <CJK>
+<U767F> /xca/x47 <CJK>
+<U7A75> /xca/x48 <CJK>
+<U7F51> /xca/x49 <CJK>
+<U8278> /xca/x4a <CJK>
+<U827C> /xca/x4b <CJK>
+<U8280> /xca/x4c <CJK>
+<U827D> /xca/x4d <CJK>
+<U827F> /xca/x4e <CJK>
+<U864D> /xca/x4f <CJK>
+<U897E> /xca/x50 <CJK>
+<U9099> /xca/x51 <CJK>
+<U9097> /xca/x52 <CJK>
+<U9098> /xca/x53 <CJK>
+<U909B> /xca/x54 <CJK>
+<U9094> /xca/x55 <CJK>
+<U9622> /xca/x56 <CJK>
+<U9624> /xca/x57 <CJK>
+<U9620> /xca/x58 <CJK>
+<U9623> /xca/x59 <CJK>
+<U4F56> /xca/x5a <CJK>
+<U4F3B> /xca/x5b <CJK>
+<U4F62> /xca/x5c <CJK>
+<U4F49> /xca/x5d <CJK>
+<U4F53> /xca/x5e <CJK>
+<U4F64> /xca/x5f <CJK>
+<U4F3E> /xca/x60 <CJK>
+<U4F67> /xca/x61 <CJK>
+<U4F52> /xca/x62 <CJK>
+<U4F5F> /xca/x63 <CJK>
+<U4F41> /xca/x64 <CJK>
+<U4F58> /xca/x65 <CJK>
+<U4F2D> /xca/x66 <CJK>
+<U4F33> /xca/x67 <CJK>
+<U4F3F> /xca/x68 <CJK>
+<U4F61> /xca/x69 <CJK>
+<U518F> /xca/x6a <CJK>
+<U51B9> /xca/x6b <CJK>
+<U521C> /xca/x6c <CJK>
+<U521E> /xca/x6d <CJK>
+<U5221> /xca/x6e <CJK>
+<U52AD> /xca/x6f <CJK>
+<U52AE> /xca/x70 <CJK>
+<U5309> /xca/x71 <CJK>
+<U5363> /xca/x72 <CJK>
+<U5372> /xca/x73 <CJK>
+<U538E> /xca/x74 <CJK>
+<U538F> /xca/x75 <CJK>
+<U5430> /xca/x76 <CJK>
+<U5437> /xca/x77 <CJK>
+<U542A> /xca/x78 <CJK>
+<U5454> /xca/x79 <CJK>
+<U5445> /xca/x7a <CJK>
+<U5419> /xca/x7b <CJK>
+<U541C> /xca/x7c <CJK>
+<U5425> /xca/x7d <CJK>
+<U5418> /xca/x7e <CJK>
+<U543D> /xca/xa1 <CJK>
+<U544F> /xca/xa2 <CJK>
+<U5441> /xca/xa3 <CJK>
+<U5428> /xca/xa4 <CJK>
+<U5424> /xca/xa5 <CJK>
+<U5447> /xca/xa6 <CJK>
+<U56EE> /xca/xa7 <CJK>
+<U56E7> /xca/xa8 <CJK>
+<U56E5> /xca/xa9 <CJK>
+<U5741> /xca/xaa <CJK>
+<U5745> /xca/xab <CJK>
+<U574C> /xca/xac <CJK>
+<U5749> /xca/xad <CJK>
+<U574B> /xca/xae <CJK>
+<U5752> /xca/xaf <CJK>
+<U5906> /xca/xb0 <CJK>
+<U5940> /xca/xb1 <CJK>
+<U59A6> /xca/xb2 <CJK>
+<U5998> /xca/xb3 <CJK>
+<U59A0> /xca/xb4 <CJK>
+<U5997> /xca/xb5 <CJK>
+<U598E> /xca/xb6 <CJK>
+<U59A2> /xca/xb7 <CJK>
+<U5990> /xca/xb8 <CJK>
+<U598F> /xca/xb9 <CJK>
+<U59A7> /xca/xba <CJK>
+<U59A1> /xca/xbb <CJK>
+<U5B8E> /xca/xbc <CJK>
+<U5B92> /xca/xbd <CJK>
+<U5C28> /xca/xbe <CJK>
+<U5C2A> /xca/xbf <CJK>
+<U5C8D> /xca/xc0 <CJK>
+<U5C8F> /xca/xc1 <CJK>
+<U5C88> /xca/xc2 <CJK>
+<U5C8B> /xca/xc3 <CJK>
+<U5C89> /xca/xc4 <CJK>
+<U5C92> /xca/xc5 <CJK>
+<U5C8A> /xca/xc6 <CJK>
+<U5C86> /xca/xc7 <CJK>
+<U5C93> /xca/xc8 <CJK>
+<U5C95> /xca/xc9 <CJK>
+<U5DE0> /xca/xca <CJK>
+<U5E0A> /xca/xcb <CJK>
+<U5E0E> /xca/xcc <CJK>
+<U5E8B> /xca/xcd <CJK>
+<U5E89> /xca/xce <CJK>
+<U5E8C> /xca/xcf <CJK>
+<U5E88> /xca/xd0 <CJK>
+<U5E8D> /xca/xd1 <CJK>
+<U5F05> /xca/xd2 <CJK>
+<U5F1D> /xca/xd3 <CJK>
+<U5F78> /xca/xd4 <CJK>
+<U5F76> /xca/xd5 <CJK>
+<U5FD2> /xca/xd6 <CJK>
+<U5FD1> /xca/xd7 <CJK>
+<U5FD0> /xca/xd8 <CJK>
+<U5FED> /xca/xd9 <CJK>
+<U5FE8> /xca/xda <CJK>
+<U5FEE> /xca/xdb <CJK>
+<U5FF3> /xca/xdc <CJK>
+<U5FE1> /xca/xdd <CJK>
+<U5FE4> /xca/xde <CJK>
+<U5FE3> /xca/xdf <CJK>
+<U5FFA> /xca/xe0 <CJK>
+<U5FEF> /xca/xe1 <CJK>
+<U5FF7> /xca/xe2 <CJK>
+<U5FFB> /xca/xe3 <CJK>
+<U6000> /xca/xe4 <CJK>
+<U5FF4> /xca/xe5 <CJK>
+<U623A> /xca/xe6 <CJK>
+<U6283> /xca/xe7 <CJK>
+<U628C> /xca/xe8 <CJK>
+<U628E> /xca/xe9 <CJK>
+<U628F> /xca/xea <CJK>
+<U6294> /xca/xeb <CJK>
+<U6287> /xca/xec <CJK>
+<U6271> /xca/xed <CJK>
+<U627B> /xca/xee <CJK>
+<U627A> /xca/xef <CJK>
+<U6270> /xca/xf0 <CJK>
+<U6281> /xca/xf1 <CJK>
+<U6288> /xca/xf2 <CJK>
+<U6277> /xca/xf3 <CJK>
+<U627D> /xca/xf4 <CJK>
+<U6272> /xca/xf5 <CJK>
+<U6274> /xca/xf6 <CJK>
+<U6537> /xca/xf7 <CJK>
+<U65F0> /xca/xf8 <CJK>
+<U65F4> /xca/xf9 <CJK>
+<U65F3> /xca/xfa <CJK>
+<U65F2> /xca/xfb <CJK>
+<U65F5> /xca/xfc <CJK>
+<U6745> /xca/xfd <CJK>
+<U6747> /xca/xfe <CJK>
+<U6759> /xcb/x40 <CJK>
+<U6755> /xcb/x41 <CJK>
+<U674C> /xcb/x42 <CJK>
+<U6748> /xcb/x43 <CJK>
+<U675D> /xcb/x44 <CJK>
+<U674D> /xcb/x45 <CJK>
+<U675A> /xcb/x46 <CJK>
+<U674B> /xcb/x47 <CJK>
+<U6BD0> /xcb/x48 <CJK>
+<U6C19> /xcb/x49 <CJK>
+<U6C1A> /xcb/x4a <CJK>
+<U6C78> /xcb/x4b <CJK>
+<U6C67> /xcb/x4c <CJK>
+<U6C6B> /xcb/x4d <CJK>
+<U6C84> /xcb/x4e <CJK>
+<U6C8B> /xcb/x4f <CJK>
+<U6C8F> /xcb/x50 <CJK>
+<U6C71> /xcb/x51 <CJK>
+<U6C6F> /xcb/x52 <CJK>
+<U6C69> /xcb/x53 <CJK>
+<U6C9A> /xcb/x54 <CJK>
+<U6C6D> /xcb/x55 <CJK>
+<U6C87> /xcb/x56 <CJK>
+<U6C95> /xcb/x57 <CJK>
+<U6C9C> /xcb/x58 <CJK>
+<U6C66> /xcb/x59 <CJK>
+<U6C73> /xcb/x5a <CJK>
+<U6C65> /xcb/x5b <CJK>
+<U6C7B> /xcb/x5c <CJK>
+<U6C8E> /xcb/x5d <CJK>
+<U7074> /xcb/x5e <CJK>
+<U707A> /xcb/x5f <CJK>
+<U7263> /xcb/x60 <CJK>
+<U72BF> /xcb/x61 <CJK>
+<U72BD> /xcb/x62 <CJK>
+<U72C3> /xcb/x63 <CJK>
+<U72C6> /xcb/x64 <CJK>
+<U72C1> /xcb/x65 <CJK>
+<U72BA> /xcb/x66 <CJK>
+<U72C5> /xcb/x67 <CJK>
+<U7395> /xcb/x68 <CJK>
+<U7397> /xcb/x69 <CJK>
+<U7393> /xcb/x6a <CJK>
+<U7394> /xcb/x6b <CJK>
+<U7392> /xcb/x6c <CJK>
+<U753A> /xcb/x6d <CJK>
+<U7539> /xcb/x6e <CJK>
+<U7594> /xcb/x6f <CJK>
+<U7595> /xcb/x70 <CJK>
+<U7681> /xcb/x71 <CJK>
+<U793D> /xcb/x72 <CJK>
+<U8034> /xcb/x73 <CJK>
+<U8095> /xcb/x74 <CJK>
+<U8099> /xcb/x75 <CJK>
+<U8090> /xcb/x76 <CJK>
+<U8092> /xcb/x77 <CJK>
+<U809C> /xcb/x78 <CJK>
+<U8290> /xcb/x79 <CJK>
+<U828F> /xcb/x7a <CJK>
+<U8285> /xcb/x7b <CJK>
+<U828E> /xcb/x7c <CJK>
+<U8291> /xcb/x7d <CJK>
+<U8293> /xcb/x7e <CJK>
+<U828A> /xcb/xa1 <CJK>
+<U8283> /xcb/xa2 <CJK>
+<U8284> /xcb/xa3 <CJK>
+<U8C78> /xcb/xa4 <CJK>
+<U8FC9> /xcb/xa5 <CJK>
+<U8FBF> /xcb/xa6 <CJK>
+<U909F> /xcb/xa7 <CJK>
+<U90A1> /xcb/xa8 <CJK>
+<U90A5> /xcb/xa9 <CJK>
+<U909E> /xcb/xaa <CJK>
+<U90A7> /xcb/xab <CJK>
+<U90A0> /xcb/xac <CJK>
+<U9630> /xcb/xad <CJK>
+<U9628> /xcb/xae <CJK>
+<U962F> /xcb/xaf <CJK>
+<U962D> /xcb/xb0 <CJK>
+<U4E33> /xcb/xb1 <CJK>
+<U4F98> /xcb/xb2 <CJK>
+<U4F7C> /xcb/xb3 <CJK>
+<U4F85> /xcb/xb4 <CJK>
+<U4F7D> /xcb/xb5 <CJK>
+<U4F80> /xcb/xb6 <CJK>
+<U4F87> /xcb/xb7 <CJK>
+<U4F76> /xcb/xb8 <CJK>
+<U4F74> /xcb/xb9 <CJK>
+<U4F89> /xcb/xba <CJK>
+<U4F84> /xcb/xbb <CJK>
+<U4F77> /xcb/xbc <CJK>
+<U4F4C> /xcb/xbd <CJK>
+<U4F97> /xcb/xbe <CJK>
+<U4F6A> /xcb/xbf <CJK>
+<U4F9A> /xcb/xc0 <CJK>
+<U4F79> /xcb/xc1 <CJK>
+<U4F81> /xcb/xc2 <CJK>
+<U4F78> /xcb/xc3 <CJK>
+<U4F90> /xcb/xc4 <CJK>
+<U4F9C> /xcb/xc5 <CJK>
+<U4F94> /xcb/xc6 <CJK>
+<U4F9E> /xcb/xc7 <CJK>
+<U4F92> /xcb/xc8 <CJK>
+<U4F82> /xcb/xc9 <CJK>
+<U4F95> /xcb/xca <CJK>
+<U4F6B> /xcb/xcb <CJK>
+<U4F6E> /xcb/xcc <CJK>
+<U519E> /xcb/xcd <CJK>
+<U51BC> /xcb/xce <CJK>
+<U51BE> /xcb/xcf <CJK>
+<U5235> /xcb/xd0 <CJK>
+<U5232> /xcb/xd1 <CJK>
+<U5233> /xcb/xd2 <CJK>
+<U5246> /xcb/xd3 <CJK>
+<U5231> /xcb/xd4 <CJK>
+<U52BC> /xcb/xd5 <CJK>
+<U530A> /xcb/xd6 <CJK>
+<U530B> /xcb/xd7 <CJK>
+<U533C> /xcb/xd8 <CJK>
+<U5392> /xcb/xd9 <CJK>
+<U5394> /xcb/xda <CJK>
+<U5487> /xcb/xdb <CJK>
+<U547F> /xcb/xdc <CJK>
+<U5481> /xcb/xdd <CJK>
+<U5491> /xcb/xde <CJK>
+<U5482> /xcb/xdf <CJK>
+<U5488> /xcb/xe0 <CJK>
+<U546B> /xcb/xe1 <CJK>
+<U547A> /xcb/xe2 <CJK>
+<U547E> /xcb/xe3 <CJK>
+<U5465> /xcb/xe4 <CJK>
+<U546C> /xcb/xe5 <CJK>
+<U5474> /xcb/xe6 <CJK>
+<U5466> /xcb/xe7 <CJK>
+<U548D> /xcb/xe8 <CJK>
+<U546F> /xcb/xe9 <CJK>
+<U5461> /xcb/xea <CJK>
+<U5460> /xcb/xeb <CJK>
+<U5498> /xcb/xec <CJK>
+<U5463> /xcb/xed <CJK>
+<U5467> /xcb/xee <CJK>
+<U5464> /xcb/xef <CJK>
+<U56F7> /xcb/xf0 <CJK>
+<U56F9> /xcb/xf1 <CJK>
+<U576F> /xcb/xf2 <CJK>
+<U5772> /xcb/xf3 <CJK>
+<U576D> /xcb/xf4 <CJK>
+<U576B> /xcb/xf5 <CJK>
+<U5771> /xcb/xf6 <CJK>
+<U5770> /xcb/xf7 <CJK>
+<U5776> /xcb/xf8 <CJK>
+<U5780> /xcb/xf9 <CJK>
+<U5775> /xcb/xfa <CJK>
+<U577B> /xcb/xfb <CJK>
+<U5773> /xcb/xfc <CJK>
+<U5774> /xcb/xfd <CJK>
+<U5762> /xcb/xfe <CJK>
+<U5768> /xcc/x40 <CJK>
+<U577D> /xcc/x41 <CJK>
+<U590C> /xcc/x42 <CJK>
+<U5945> /xcc/x43 <CJK>
+<U59B5> /xcc/x44 <CJK>
+<U59BA> /xcc/x45 <CJK>
+<U59CF> /xcc/x46 <CJK>
+<U59CE> /xcc/x47 <CJK>
+<U59B2> /xcc/x48 <CJK>
+<U59CC> /xcc/x49 <CJK>
+<U59C1> /xcc/x4a <CJK>
+<U59B6> /xcc/x4b <CJK>
+<U59BC> /xcc/x4c <CJK>
+<U59C3> /xcc/x4d <CJK>
+<U59D6> /xcc/x4e <CJK>
+<U59B1> /xcc/x4f <CJK>
+<U59BD> /xcc/x50 <CJK>
+<U59C0> /xcc/x51 <CJK>
+<U59C8> /xcc/x52 <CJK>
+<U59B4> /xcc/x53 <CJK>
+<U59C7> /xcc/x54 <CJK>
+<U5B62> /xcc/x55 <CJK>
+<U5B65> /xcc/x56 <CJK>
+<U5B93> /xcc/x57 <CJK>
+<U5B95> /xcc/x58 <CJK>
+<U5C44> /xcc/x59 <CJK>
+<U5C47> /xcc/x5a <CJK>
+<U5CAE> /xcc/x5b <CJK>
+<U5CA4> /xcc/x5c <CJK>
+<U5CA0> /xcc/x5d <CJK>
+<U5CB5> /xcc/x5e <CJK>
+<U5CAF> /xcc/x5f <CJK>
+<U5CA8> /xcc/x60 <CJK>
+<U5CAC> /xcc/x61 <CJK>
+<U5C9F> /xcc/x62 <CJK>
+<U5CA3> /xcc/x63 <CJK>
+<U5CAD> /xcc/x64 <CJK>
+<U5CA2> /xcc/x65 <CJK>
+<U5CAA> /xcc/x66 <CJK>
+<U5CA7> /xcc/x67 <CJK>
+<U5C9D> /xcc/x68 <CJK>
+<U5CA5> /xcc/x69 <CJK>
+<U5CB6> /xcc/x6a <CJK>
+<U5CB0> /xcc/x6b <CJK>
+<U5CA6> /xcc/x6c <CJK>
+<U5E17> /xcc/x6d <CJK>
+<U5E14> /xcc/x6e <CJK>
+<U5E19> /xcc/x6f <CJK>
+<U5F28> /xcc/x70 <CJK>
+<U5F22> /xcc/x71 <CJK>
+<U5F23> /xcc/x72 <CJK>
+<U5F24> /xcc/x73 <CJK>
+<U5F54> /xcc/x74 <CJK>
+<U5F82> /xcc/x75 <CJK>
+<U5F7E> /xcc/x76 <CJK>
+<U5F7D> /xcc/x77 <CJK>
+<U5FDE> /xcc/x78 <CJK>
+<U5FE5> /xcc/x79 <CJK>
+<U602D> /xcc/x7a <CJK>
+<U6026> /xcc/x7b <CJK>
+<U6019> /xcc/x7c <CJK>
+<U6032> /xcc/x7d <CJK>
+<U600B> /xcc/x7e <CJK>
+<U6034> /xcc/xa1 <CJK>
+<U600A> /xcc/xa2 <CJK>
+<U6017> /xcc/xa3 <CJK>
+<U6033> /xcc/xa4 <CJK>
+<U601A> /xcc/xa5 <CJK>
+<U601E> /xcc/xa6 <CJK>
+<U602C> /xcc/xa7 <CJK>
+<U6022> /xcc/xa8 <CJK>
+<U600D> /xcc/xa9 <CJK>
+<U6010> /xcc/xaa <CJK>
+<U602E> /xcc/xab <CJK>
+<U6013> /xcc/xac <CJK>
+<U6011> /xcc/xad <CJK>
+<U600C> /xcc/xae <CJK>
+<U6009> /xcc/xaf <CJK>
+<U601C> /xcc/xb0 <CJK>
+<U6214> /xcc/xb1 <CJK>
+<U623D> /xcc/xb2 <CJK>
+<U62AD> /xcc/xb3 <CJK>
+<U62B4> /xcc/xb4 <CJK>
+<U62D1> /xcc/xb5 <CJK>
+<U62BE> /xcc/xb6 <CJK>
+<U62AA> /xcc/xb7 <CJK>
+<U62B6> /xcc/xb8 <CJK>
+<U62CA> /xcc/xb9 <CJK>
+<U62AE> /xcc/xba <CJK>
+<U62B3> /xcc/xbb <CJK>
+<U62AF> /xcc/xbc <CJK>
+<U62BB> /xcc/xbd <CJK>
+<U62A9> /xcc/xbe <CJK>
+<U62B0> /xcc/xbf <CJK>
+<U62B8> /xcc/xc0 <CJK>
+<U653D> /xcc/xc1 <CJK>
+<U65A8> /xcc/xc2 <CJK>
+<U65BB> /xcc/xc3 <CJK>
+<U6609> /xcc/xc4 <CJK>
+<U65FC> /xcc/xc5 <CJK>
+<U6604> /xcc/xc6 <CJK>
+<U6612> /xcc/xc7 <CJK>
+<U6608> /xcc/xc8 <CJK>
+<U65FB> /xcc/xc9 <CJK>
+<U6603> /xcc/xca <CJK>
+<U660B> /xcc/xcb <CJK>
+<U660D> /xcc/xcc <CJK>
+<U6605> /xcc/xcd <CJK>
+<U65FD> /xcc/xce <CJK>
+<U6611> /xcc/xcf <CJK>
+<U6610> /xcc/xd0 <CJK>
+<U66F6> /xcc/xd1 <CJK>
+<U670A> /xcc/xd2 <CJK>
+<U6785> /xcc/xd3 <CJK>
+<U676C> /xcc/xd4 <CJK>
+<U678E> /xcc/xd5 <CJK>
+<U6792> /xcc/xd6 <CJK>
+<U6776> /xcc/xd7 <CJK>
+<U677B> /xcc/xd8 <CJK>
+<U6798> /xcc/xd9 <CJK>
+<U6786> /xcc/xda <CJK>
+<U6784> /xcc/xdb <CJK>
+<U6774> /xcc/xdc <CJK>
+<U678D> /xcc/xdd <CJK>
+<U678C> /xcc/xde <CJK>
+<U677A> /xcc/xdf <CJK>
+<U679F> /xcc/xe0 <CJK>
+<U6791> /xcc/xe1 <CJK>
+<U6799> /xcc/xe2 <CJK>
+<U6783> /xcc/xe3 <CJK>
+<U677D> /xcc/xe4 <CJK>
+<U6781> /xcc/xe5 <CJK>
+<U6778> /xcc/xe6 <CJK>
+<U6779> /xcc/xe7 <CJK>
+<U6794> /xcc/xe8 <CJK>
+<U6B25> /xcc/xe9 <CJK>
+<U6B80> /xcc/xea <CJK>
+<U6B7E> /xcc/xeb <CJK>
+<U6BDE> /xcc/xec <CJK>
+<U6C1D> /xcc/xed <CJK>
+<U6C93> /xcc/xee <CJK>
+<U6CEC> /xcc/xef <CJK>
+<U6CEB> /xcc/xf0 <CJK>
+<U6CEE> /xcc/xf1 <CJK>
+<U6CD9> /xcc/xf2 <CJK>
+<U6CB6> /xcc/xf3 <CJK>
+<U6CD4> /xcc/xf4 <CJK>
+<U6CAD> /xcc/xf5 <CJK>
+<U6CE7> /xcc/xf6 <CJK>
+<U6CB7> /xcc/xf7 <CJK>
+<U6CD0> /xcc/xf8 <CJK>
+<U6CC2> /xcc/xf9 <CJK>
+<U6CBA> /xcc/xfa <CJK>
+<U6CC3> /xcc/xfb <CJK>
+<U6CC6> /xcc/xfc <CJK>
+<U6CED> /xcc/xfd <CJK>
+<U6CF2> /xcc/xfe <CJK>
+<U6CD2> /xcd/x40 <CJK>
+<U6CDD> /xcd/x41 <CJK>
+<U6CB4> /xcd/x42 <CJK>
+<U6C8A> /xcd/x43 <CJK>
+<U6C9D> /xcd/x44 <CJK>
+<U6C80> /xcd/x45 <CJK>
+<U6CDE> /xcd/x46 <CJK>
+<U6CC0> /xcd/x47 <CJK>
+<U6D30> /xcd/x48 <CJK>
+<U6CCD> /xcd/x49 <CJK>
+<U6CC7> /xcd/x4a <CJK>
+<U6CB0> /xcd/x4b <CJK>
+<U6CF9> /xcd/x4c <CJK>
+<U6CCF> /xcd/x4d <CJK>
+<U6CE9> /xcd/x4e <CJK>
+<U6CD1> /xcd/x4f <CJK>
+<U7094> /xcd/x50 <CJK>
+<U7098> /xcd/x51 <CJK>
+<U7085> /xcd/x52 <CJK>
+<U7093> /xcd/x53 <CJK>
+<U7086> /xcd/x54 <CJK>
+<U7084> /xcd/x55 <CJK>
+<U7091> /xcd/x56 <CJK>
+<U7096> /xcd/x57 <CJK>
+<U7082> /xcd/x58 <CJK>
+<U709A> /xcd/x59 <CJK>
+<U7083> /xcd/x5a <CJK>
+<U726A> /xcd/x5b <CJK>
+<U72D6> /xcd/x5c <CJK>
+<U72CB> /xcd/x5d <CJK>
+<U72D8> /xcd/x5e <CJK>
+<U72C9> /xcd/x5f <CJK>
+<U72DC> /xcd/x60 <CJK>
+<U72D2> /xcd/x61 <CJK>
+<U72D4> /xcd/x62 <CJK>
+<U72DA> /xcd/x63 <CJK>
+<U72CC> /xcd/x64 <CJK>
+<U72D1> /xcd/x65 <CJK>
+<U73A4> /xcd/x66 <CJK>
+<U73A1> /xcd/x67 <CJK>
+<U73AD> /xcd/x68 <CJK>
+<U73A6> /xcd/x69 <CJK>
+<U73A2> /xcd/x6a <CJK>
+<U73A0> /xcd/x6b <CJK>
+<U73AC> /xcd/x6c <CJK>
+<U739D> /xcd/x6d <CJK>
+<U74DD> /xcd/x6e <CJK>
+<U74E8> /xcd/x6f <CJK>
+<U753F> /xcd/x70 <CJK>
+<U7540> /xcd/x71 <CJK>
+<U753E> /xcd/x72 <CJK>
+<U758C> /xcd/x73 <CJK>
+<U7598> /xcd/x74 <CJK>
+<U76AF> /xcd/x75 <CJK>
+<U76F3> /xcd/x76 <CJK>
+<U76F1> /xcd/x77 <CJK>
+<U76F0> /xcd/x78 <CJK>
+<U76F5> /xcd/x79 <CJK>
+<U77F8> /xcd/x7a <CJK>
+<U77FC> /xcd/x7b <CJK>
+<U77F9> /xcd/x7c <CJK>
+<U77FB> /xcd/x7d <CJK>
+<U77FA> /xcd/x7e <CJK>
+<U77F7> /xcd/xa1 <CJK>
+<U7942> /xcd/xa2 <CJK>
+<U793F> /xcd/xa3 <CJK>
+<U79C5> /xcd/xa4 <CJK>
+<U7A78> /xcd/xa5 <CJK>
+<U7A7B> /xcd/xa6 <CJK>
+<U7AFB> /xcd/xa7 <CJK>
+<U7C75> /xcd/xa8 <CJK>
+<U7CFD> /xcd/xa9 <CJK>
+<U8035> /xcd/xaa <CJK>
+<U808F> /xcd/xab <CJK>
+<U80AE> /xcd/xac <CJK>
+<U80A3> /xcd/xad <CJK>
+<U80B8> /xcd/xae <CJK>
+<U80B5> /xcd/xaf <CJK>
+<U80AD> /xcd/xb0 <CJK>
+<U8220> /xcd/xb1 <CJK>
+<U82A0> /xcd/xb2 <CJK>
+<U82C0> /xcd/xb3 <CJK>
+<U82AB> /xcd/xb4 <CJK>
+<U829A> /xcd/xb5 <CJK>
+<U8298> /xcd/xb6 <CJK>
+<U829B> /xcd/xb7 <CJK>
+<U82B5> /xcd/xb8 <CJK>
+<U82A7> /xcd/xb9 <CJK>
+<U82AE> /xcd/xba <CJK>
+<U82BC> /xcd/xbb <CJK>
+<U829E> /xcd/xbc <CJK>
+<U82BA> /xcd/xbd <CJK>
+<U82B4> /xcd/xbe <CJK>
+<U82A8> /xcd/xbf <CJK>
+<U82A1> /xcd/xc0 <CJK>
+<U82A9> /xcd/xc1 <CJK>
+<U82C2> /xcd/xc2 <CJK>
+<U82A4> /xcd/xc3 <CJK>
+<U82C3> /xcd/xc4 <CJK>
+<U82B6> /xcd/xc5 <CJK>
+<U82A2> /xcd/xc6 <CJK>
+<U8670> /xcd/xc7 <CJK>
+<U866F> /xcd/xc8 <CJK>
+<U866D> /xcd/xc9 <CJK>
+<U866E> /xcd/xca <CJK>
+<U8C56> /xcd/xcb <CJK>
+<U8FD2> /xcd/xcc <CJK>
+<U8FCB> /xcd/xcd <CJK>
+<U8FD3> /xcd/xce <CJK>
+<U8FCD> /xcd/xcf <CJK>
+<U8FD6> /xcd/xd0 <CJK>
+<U8FD5> /xcd/xd1 <CJK>
+<U8FD7> /xcd/xd2 <CJK>
+<U90B2> /xcd/xd3 <CJK>
+<U90B4> /xcd/xd4 <CJK>
+<U90AF> /xcd/xd5 <CJK>
+<U90B3> /xcd/xd6 <CJK>
+<U90B0> /xcd/xd7 <CJK>
+<U9639> /xcd/xd8 <CJK>
+<U963D> /xcd/xd9 <CJK>
+<U963C> /xcd/xda <CJK>
+<U963A> /xcd/xdb <CJK>
+<U9643> /xcd/xdc <CJK>
+<U4FCD> /xcd/xdd <CJK>
+<U4FC5> /xcd/xde <CJK>
+<U4FD3> /xcd/xdf <CJK>
+<U4FB2> /xcd/xe0 <CJK>
+<U4FC9> /xcd/xe1 <CJK>
+<U4FCB> /xcd/xe2 <CJK>
+<U4FC1> /xcd/xe3 <CJK>
+<U4FD4> /xcd/xe4 <CJK>
+<U4FDC> /xcd/xe5 <CJK>
+<U4FD9> /xcd/xe6 <CJK>
+<U4FBB> /xcd/xe7 <CJK>
+<U4FB3> /xcd/xe8 <CJK>
+<U4FDB> /xcd/xe9 <CJK>
+<U4FC7> /xcd/xea <CJK>
+<U4FD6> /xcd/xeb <CJK>
+<U4FBA> /xcd/xec <CJK>
+<U4FC0> /xcd/xed <CJK>
+<U4FB9> /xcd/xee <CJK>
+<U4FEC> /xcd/xef <CJK>
+<U5244> /xcd/xf0 <CJK>
+<U5249> /xcd/xf1 <CJK>
+<U52C0> /xcd/xf2 <CJK>
+<U52C2> /xcd/xf3 <CJK>
+<U533D> /xcd/xf4 <CJK>
+<U537C> /xcd/xf5 <CJK>
+<U5397> /xcd/xf6 <CJK>
+<U5396> /xcd/xf7 <CJK>
+<U5399> /xcd/xf8 <CJK>
+<U5398> /xcd/xf9 <CJK>
+<U54BA> /xcd/xfa <CJK>
+<U54A1> /xcd/xfb <CJK>
+<U54AD> /xcd/xfc <CJK>
+<U54A5> /xcd/xfd <CJK>
+<U54CF> /xcd/xfe <CJK>
+<U54C3> /xce/x40 <CJK>
+<U830D> /xce/x41 <CJK>
+<U54B7> /xce/x42 <CJK>
+<U54AE> /xce/x43 <CJK>
+<U54D6> /xce/x44 <CJK>
+<U54B6> /xce/x45 <CJK>
+<U54C5> /xce/x46 <CJK>
+<U54C6> /xce/x47 <CJK>
+<U54A0> /xce/x48 <CJK>
+<U5470> /xce/x49 <CJK>
+<U54BC> /xce/x4a <CJK>
+<U54A2> /xce/x4b <CJK>
+<U54BE> /xce/x4c <CJK>
+<U5472> /xce/x4d <CJK>
+<U54DE> /xce/x4e <CJK>
+<U54B0> /xce/x4f <CJK>
+<U57B5> /xce/x50 <CJK>
+<U579E> /xce/x51 <CJK>
+<U579F> /xce/x52 <CJK>
+<U57A4> /xce/x53 <CJK>
+<U578C> /xce/x54 <CJK>
+<U5797> /xce/x55 <CJK>
+<U579D> /xce/x56 <CJK>
+<U579B> /xce/x57 <CJK>
+<U5794> /xce/x58 <CJK>
+<U5798> /xce/x59 <CJK>
+<U578F> /xce/x5a <CJK>
+<U5799> /xce/x5b <CJK>
+<U57A5> /xce/x5c <CJK>
+<U579A> /xce/x5d <CJK>
+<U5795> /xce/x5e <CJK>
+<U58F4> /xce/x5f <CJK>
+<U590D> /xce/x60 <CJK>
+<U5953> /xce/x61 <CJK>
+<U59E1> /xce/x62 <CJK>
+<U59DE> /xce/x63 <CJK>
+<U59EE> /xce/x64 <CJK>
+<U5A00> /xce/x65 <CJK>
+<U59F1> /xce/x66 <CJK>
+<U59DD> /xce/x67 <CJK>
+<U59FA> /xce/x68 <CJK>
+<U59FD> /xce/x69 <CJK>
+<U59FC> /xce/x6a <CJK>
+<U59F6> /xce/x6b <CJK>
+<U59E4> /xce/x6c <CJK>
+<U59F2> /xce/x6d <CJK>
+<U59F7> /xce/x6e <CJK>
+<U59DB> /xce/x6f <CJK>
+<U59E9> /xce/x70 <CJK>
+<U59F3> /xce/x71 <CJK>
+<U59F5> /xce/x72 <CJK>
+<U59E0> /xce/x73 <CJK>
+<U59FE> /xce/x74 <CJK>
+<U59F4> /xce/x75 <CJK>
+<U59ED> /xce/x76 <CJK>
+<U5BA8> /xce/x77 <CJK>
+<U5C4C> /xce/x78 <CJK>
+<U5CD0> /xce/x79 <CJK>
+<U5CD8> /xce/x7a <CJK>
+<U5CCC> /xce/x7b <CJK>
+<U5CD7> /xce/x7c <CJK>
+<U5CCB> /xce/x7d <CJK>
+<U5CDB> /xce/x7e <CJK>
+<U5CDE> /xce/xa1 <CJK>
+<U5CDA> /xce/xa2 <CJK>
+<U5CC9> /xce/xa3 <CJK>
+<U5CC7> /xce/xa4 <CJK>
+<U5CCA> /xce/xa5 <CJK>
+<U5CD6> /xce/xa6 <CJK>
+<U5CD3> /xce/xa7 <CJK>
+<U5CD4> /xce/xa8 <CJK>
+<U5CCF> /xce/xa9 <CJK>
+<U5CC8> /xce/xaa <CJK>
+<U5CC6> /xce/xab <CJK>
+<U5CCE> /xce/xac <CJK>
+<U5CDF> /xce/xad <CJK>
+<U5CF8> /xce/xae <CJK>
+<U5DF9> /xce/xaf <CJK>
+<U5E21> /xce/xb0 <CJK>
+<U5E22> /xce/xb1 <CJK>
+<U5E23> /xce/xb2 <CJK>
+<U5E20> /xce/xb3 <CJK>
+<U5E24> /xce/xb4 <CJK>
+<U5EB0> /xce/xb5 <CJK>
+<U5EA4> /xce/xb6 <CJK>
+<U5EA2> /xce/xb7 <CJK>
+<U5E9B> /xce/xb8 <CJK>
+<U5EA3> /xce/xb9 <CJK>
+<U5EA5> /xce/xba <CJK>
+<U5F07> /xce/xbb <CJK>
+<U5F2E> /xce/xbc <CJK>
+<U5F56> /xce/xbd <CJK>
+<U5F86> /xce/xbe <CJK>
+<U6037> /xce/xbf <CJK>
+<U6039> /xce/xc0 <CJK>
+<U6054> /xce/xc1 <CJK>
+<U6072> /xce/xc2 <CJK>
+<U605E> /xce/xc3 <CJK>
+<U6045> /xce/xc4 <CJK>
+<U6053> /xce/xc5 <CJK>
+<U6047> /xce/xc6 <CJK>
+<U6049> /xce/xc7 <CJK>
+<U605B> /xce/xc8 <CJK>
+<U604C> /xce/xc9 <CJK>
+<U6040> /xce/xca <CJK>
+<U6042> /xce/xcb <CJK>
+<U605F> /xce/xcc <CJK>
+<U6024> /xce/xcd <CJK>
+<U6044> /xce/xce <CJK>
+<U6058> /xce/xcf <CJK>
+<U6066> /xce/xd0 <CJK>
+<U606E> /xce/xd1 <CJK>
+<U6242> /xce/xd2 <CJK>
+<U6243> /xce/xd3 <CJK>
+<U62CF> /xce/xd4 <CJK>
+<U630D> /xce/xd5 <CJK>
+<U630B> /xce/xd6 <CJK>
+<U62F5> /xce/xd7 <CJK>
+<U630E> /xce/xd8 <CJK>
+<U6303> /xce/xd9 <CJK>
+<U62EB> /xce/xda <CJK>
+<U62F9> /xce/xdb <CJK>
+<U630F> /xce/xdc <CJK>
+<U630C> /xce/xdd <CJK>
+<U62F8> /xce/xde <CJK>
+<U62F6> /xce/xdf <CJK>
+<U6300> /xce/xe0 <CJK>
+<U6313> /xce/xe1 <CJK>
+<U6314> /xce/xe2 <CJK>
+<U62FA> /xce/xe3 <CJK>
+<U6315> /xce/xe4 <CJK>
+<U62FB> /xce/xe5 <CJK>
+<U62F0> /xce/xe6 <CJK>
+<U6541> /xce/xe7 <CJK>
+<U6543> /xce/xe8 <CJK>
+<U65AA> /xce/xe9 <CJK>
+<U65BF> /xce/xea <CJK>
+<U6636> /xce/xeb <CJK>
+<U6621> /xce/xec <CJK>
+<U6632> /xce/xed <CJK>
+<U6635> /xce/xee <CJK>
+<U661C> /xce/xef <CJK>
+<U6626> /xce/xf0 <CJK>
+<U6622> /xce/xf1 <CJK>
+<U6633> /xce/xf2 <CJK>
+<U662B> /xce/xf3 <CJK>
+<U663A> /xce/xf4 <CJK>
+<U661D> /xce/xf5 <CJK>
+<U6634> /xce/xf6 <CJK>
+<U6639> /xce/xf7 <CJK>
+<U662E> /xce/xf8 <CJK>
+<U670F> /xce/xf9 <CJK>
+<U6710> /xce/xfa <CJK>
+<U67C1> /xce/xfb <CJK>
+<U67F2> /xce/xfc <CJK>
+<U67C8> /xce/xfd <CJK>
+<U67BA> /xce/xfe <CJK>
+<U67DC> /xcf/x40 <CJK>
+<U67BB> /xcf/x41 <CJK>
+<U67F8> /xcf/x42 <CJK>
+<U67D8> /xcf/x43 <CJK>
+<U67C0> /xcf/x44 <CJK>
+<U67B7> /xcf/x45 <CJK>
+<U67C5> /xcf/x46 <CJK>
+<U67EB> /xcf/x47 <CJK>
+<U67E4> /xcf/x48 <CJK>
+<U67DF> /xcf/x49 <CJK>
+<U67B5> /xcf/x4a <CJK>
+<U67CD> /xcf/x4b <CJK>
+<U67B3> /xcf/x4c <CJK>
+<U67F7> /xcf/x4d <CJK>
+<U67F6> /xcf/x4e <CJK>
+<U67EE> /xcf/x4f <CJK>
+<U67E3> /xcf/x50 <CJK>
+<U67C2> /xcf/x51 <CJK>
+<U67B9> /xcf/x52 <CJK>
+<U67CE> /xcf/x53 <CJK>
+<U67E7> /xcf/x54 <CJK>
+<U67F0> /xcf/x55 <CJK>
+<U67B2> /xcf/x56 <CJK>
+<U67FC> /xcf/x57 <CJK>
+<U67C6> /xcf/x58 <CJK>
+<U67ED> /xcf/x59 <CJK>
+<U67CC> /xcf/x5a <CJK>
+<U67AE> /xcf/x5b <CJK>
+<U67E6> /xcf/x5c <CJK>
+<U67DB> /xcf/x5d <CJK>
+<U67FA> /xcf/x5e <CJK>
+<U67C9> /xcf/x5f <CJK>
+<U67CA> /xcf/x60 <CJK>
+<U67C3> /xcf/x61 <CJK>
+<U67EA> /xcf/x62 <CJK>
+<U67CB> /xcf/x63 <CJK>
+<U6B28> /xcf/x64 <CJK>
+<U6B82> /xcf/x65 <CJK>
+<U6B84> /xcf/x66 <CJK>
+<U6BB6> /xcf/x67 <CJK>
+<U6BD6> /xcf/x68 <CJK>
+<U6BD8> /xcf/x69 <CJK>
+<U6BE0> /xcf/x6a <CJK>
+<U6C20> /xcf/x6b <CJK>
+<U6C21> /xcf/x6c <CJK>
+<U6D28> /xcf/x6d <CJK>
+<U6D34> /xcf/x6e <CJK>
+<U6D2D> /xcf/x6f <CJK>
+<U6D1F> /xcf/x70 <CJK>
+<U6D3C> /xcf/x71 <CJK>
+<U6D3F> /xcf/x72 <CJK>
+<U6D12> /xcf/x73 <CJK>
+<U6D0A> /xcf/x74 <CJK>
+<U6CDA> /xcf/x75 <CJK>
+<U6D33> /xcf/x76 <CJK>
+<U6D04> /xcf/x77 <CJK>
+<U6D19> /xcf/x78 <CJK>
+<U6D3A> /xcf/x79 <CJK>
+<U6D1A> /xcf/x7a <CJK>
+<U6D11> /xcf/x7b <CJK>
+<U6D00> /xcf/x7c <CJK>
+<U6D1D> /xcf/x7d <CJK>
+<U6D42> /xcf/x7e <CJK>
+<U6D01> /xcf/xa1 <CJK>
+<U6D18> /xcf/xa2 <CJK>
+<U6D37> /xcf/xa3 <CJK>
+<U6D03> /xcf/xa4 <CJK>
+<U6D0F> /xcf/xa5 <CJK>
+<U6D40> /xcf/xa6 <CJK>
+<U6D07> /xcf/xa7 <CJK>
+<U6D20> /xcf/xa8 <CJK>
+<U6D2C> /xcf/xa9 <CJK>
+<U6D08> /xcf/xaa <CJK>
+<U6D22> /xcf/xab <CJK>
+<U6D09> /xcf/xac <CJK>
+<U6D10> /xcf/xad <CJK>
+<U70B7> /xcf/xae <CJK>
+<U709F> /xcf/xaf <CJK>
+<U70BE> /xcf/xb0 <CJK>
+<U70B1> /xcf/xb1 <CJK>
+<U70B0> /xcf/xb2 <CJK>
+<U70A1> /xcf/xb3 <CJK>
+<U70B4> /xcf/xb4 <CJK>
+<U70B5> /xcf/xb5 <CJK>
+<U70A9> /xcf/xb6 <CJK>
+<U7241> /xcf/xb7 <CJK>
+<U7249> /xcf/xb8 <CJK>
+<U724A> /xcf/xb9 <CJK>
+<U726C> /xcf/xba <CJK>
+<U7270> /xcf/xbb <CJK>
+<U7273> /xcf/xbc <CJK>
+<U726E> /xcf/xbd <CJK>
+<U72CA> /xcf/xbe <CJK>
+<U72E4> /xcf/xbf <CJK>
+<U72E8> /xcf/xc0 <CJK>
+<U72EB> /xcf/xc1 <CJK>
+<U72DF> /xcf/xc2 <CJK>
+<U72EA> /xcf/xc3 <CJK>
+<U72E6> /xcf/xc4 <CJK>
+<U72E3> /xcf/xc5 <CJK>
+<U7385> /xcf/xc6 <CJK>
+<U73CC> /xcf/xc7 <CJK>
+<U73C2> /xcf/xc8 <CJK>
+<U73C8> /xcf/xc9 <CJK>
+<U73C5> /xcf/xca <CJK>
+<U73B9> /xcf/xcb <CJK>
+<U73B6> /xcf/xcc <CJK>
+<U73B5> /xcf/xcd <CJK>
+<U73B4> /xcf/xce <CJK>
+<U73EB> /xcf/xcf <CJK>
+<U73BF> /xcf/xd0 <CJK>
+<U73C7> /xcf/xd1 <CJK>
+<U73BE> /xcf/xd2 <CJK>
+<U73C3> /xcf/xd3 <CJK>
+<U73C6> /xcf/xd4 <CJK>
+<U73B8> /xcf/xd5 <CJK>
+<U73CB> /xcf/xd6 <CJK>
+<U74EC> /xcf/xd7 <CJK>
+<U74EE> /xcf/xd8 <CJK>
+<U752E> /xcf/xd9 <CJK>
+<U7547> /xcf/xda <CJK>
+<U7548> /xcf/xdb <CJK>
+<U75A7> /xcf/xdc <CJK>
+<U75AA> /xcf/xdd <CJK>
+<U7679> /xcf/xde <CJK>
+<U76C4> /xcf/xdf <CJK>
+<U7708> /xcf/xe0 <CJK>
+<U7703> /xcf/xe1 <CJK>
+<U7704> /xcf/xe2 <CJK>
+<U7705> /xcf/xe3 <CJK>
+<U770A> /xcf/xe4 <CJK>
+<U76F7> /xcf/xe5 <CJK>
+<U76FB> /xcf/xe6 <CJK>
+<U76FA> /xcf/xe7 <CJK>
+<U77E7> /xcf/xe8 <CJK>
+<U77E8> /xcf/xe9 <CJK>
+<U7806> /xcf/xea <CJK>
+<U7811> /xcf/xeb <CJK>
+<U7812> /xcf/xec <CJK>
+<U7805> /xcf/xed <CJK>
+<U7810> /xcf/xee <CJK>
+<U780F> /xcf/xef <CJK>
+<U780E> /xcf/xf0 <CJK>
+<U7809> /xcf/xf1 <CJK>
+<U7803> /xcf/xf2 <CJK>
+<U7813> /xcf/xf3 <CJK>
+<U794A> /xcf/xf4 <CJK>
+<U794C> /xcf/xf5 <CJK>
+<U794B> /xcf/xf6 <CJK>
+<U7945> /xcf/xf7 <CJK>
+<U7944> /xcf/xf8 <CJK>
+<U79D5> /xcf/xf9 <CJK>
+<U79CD> /xcf/xfa <CJK>
+<U79CF> /xcf/xfb <CJK>
+<U79D6> /xcf/xfc <CJK>
+<U79CE> /xcf/xfd <CJK>
+<U7A80> /xcf/xfe <CJK>
+<U7A7E> /xd0/x40 <CJK>
+<U7AD1> /xd0/x41 <CJK>
+<U7B00> /xd0/x42 <CJK>
+<U7B01> /xd0/x43 <CJK>
+<U7C7A> /xd0/x44 <CJK>
+<U7C78> /xd0/x45 <CJK>
+<U7C79> /xd0/x46 <CJK>
+<U7C7F> /xd0/x47 <CJK>
+<U7C80> /xd0/x48 <CJK>
+<U7C81> /xd0/x49 <CJK>
+<U7D03> /xd0/x4a <CJK>
+<U7D08> /xd0/x4b <CJK>
+<U7D01> /xd0/x4c <CJK>
+<U7F58> /xd0/x4d <CJK>
+<U7F91> /xd0/x4e <CJK>
+<U7F8D> /xd0/x4f <CJK>
+<U7FBE> /xd0/x50 <CJK>
+<U8007> /xd0/x51 <CJK>
+<U800E> /xd0/x52 <CJK>
+<U800F> /xd0/x53 <CJK>
+<U8014> /xd0/x54 <CJK>
+<U8037> /xd0/x55 <CJK>
+<U80D8> /xd0/x56 <CJK>
+<U80C7> /xd0/x57 <CJK>
+<U80E0> /xd0/x58 <CJK>
+<U80D1> /xd0/x59 <CJK>
+<U80C8> /xd0/x5a <CJK>
+<U80C2> /xd0/x5b <CJK>
+<U80D0> /xd0/x5c <CJK>
+<U80C5> /xd0/x5d <CJK>
+<U80E3> /xd0/x5e <CJK>
+<U80D9> /xd0/x5f <CJK>
+<U80DC> /xd0/x60 <CJK>
+<U80CA> /xd0/x61 <CJK>
+<U80D5> /xd0/x62 <CJK>
+<U80C9> /xd0/x63 <CJK>
+<U80CF> /xd0/x64 <CJK>
+<U80D7> /xd0/x65 <CJK>
+<U80E6> /xd0/x66 <CJK>
+<U80CD> /xd0/x67 <CJK>
+<U81FF> /xd0/x68 <CJK>
+<U8221> /xd0/x69 <CJK>
+<U8294> /xd0/x6a <CJK>
+<U82D9> /xd0/x6b <CJK>
+<U82FE> /xd0/x6c <CJK>
+<U82F9> /xd0/x6d <CJK>
+<U8307> /xd0/x6e <CJK>
+<U82E8> /xd0/x6f <CJK>
+<U8300> /xd0/x70 <CJK>
+<U82D5> /xd0/x71 <CJK>
+<U833A> /xd0/x72 <CJK>
+<U82EB> /xd0/x73 <CJK>
+<U82D6> /xd0/x74 <CJK>
+<U82F4> /xd0/x75 <CJK>
+<U82EC> /xd0/x76 <CJK>
+<U82E1> /xd0/x77 <CJK>
+<U82F2> /xd0/x78 <CJK>
+<U82F5> /xd0/x79 <CJK>
+<U830C> /xd0/x7a <CJK>
+<U82FB> /xd0/x7b <CJK>
+<U82F6> /xd0/x7c <CJK>
+<U82F0> /xd0/x7d <CJK>
+<U82EA> /xd0/x7e <CJK>
+<U82E4> /xd0/xa1 <CJK>
+<U82E0> /xd0/xa2 <CJK>
+<U82FA> /xd0/xa3 <CJK>
+<U82F3> /xd0/xa4 <CJK>
+<U82ED> /xd0/xa5 <CJK>
+<U8677> /xd0/xa6 <CJK>
+<U8674> /xd0/xa7 <CJK>
+<U867C> /xd0/xa8 <CJK>
+<U8673> /xd0/xa9 <CJK>
+<U8841> /xd0/xaa <CJK>
+<U884E> /xd0/xab <CJK>
+<U8867> /xd0/xac <CJK>
+<U886A> /xd0/xad <CJK>
+<U8869> /xd0/xae <CJK>
+<U89D3> /xd0/xaf <CJK>
+<U8A04> /xd0/xb0 <CJK>
+<U8A07> /xd0/xb1 <CJK>
+<U8D72> /xd0/xb2 <CJK>
+<U8FE3> /xd0/xb3 <CJK>
+<U8FE1> /xd0/xb4 <CJK>
+<U8FEE> /xd0/xb5 <CJK>
+<U8FE0> /xd0/xb6 <CJK>
+<U90F1> /xd0/xb7 <CJK>
+<U90BD> /xd0/xb8 <CJK>
+<U90BF> /xd0/xb9 <CJK>
+<U90D5> /xd0/xba <CJK>
+<U90C5> /xd0/xbb <CJK>
+<U90BE> /xd0/xbc <CJK>
+<U90C7> /xd0/xbd <CJK>
+<U90CB> /xd0/xbe <CJK>
+<U90C8> /xd0/xbf <CJK>
+<U91D4> /xd0/xc0 <CJK>
+<U91D3> /xd0/xc1 <CJK>
+<U9654> /xd0/xc2 <CJK>
+<U964F> /xd0/xc3 <CJK>
+<U9651> /xd0/xc4 <CJK>
+<U9653> /xd0/xc5 <CJK>
+<U964A> /xd0/xc6 <CJK>
+<U964E> /xd0/xc7 <CJK>
+<U501E> /xd0/xc8 <CJK>
+<U5005> /xd0/xc9 <CJK>
+<U5007> /xd0/xca <CJK>
+<U5013> /xd0/xcb <CJK>
+<U5022> /xd0/xcc <CJK>
+<U5030> /xd0/xcd <CJK>
+<U501B> /xd0/xce <CJK>
+<U4FF5> /xd0/xcf <CJK>
+<U4FF4> /xd0/xd0 <CJK>
+<U5033> /xd0/xd1 <CJK>
+<U5037> /xd0/xd2 <CJK>
+<U502C> /xd0/xd3 <CJK>
+<U4FF6> /xd0/xd4 <CJK>
+<U4FF7> /xd0/xd5 <CJK>
+<U5017> /xd0/xd6 <CJK>
+<U501C> /xd0/xd7 <CJK>
+<U5020> /xd0/xd8 <CJK>
+<U5027> /xd0/xd9 <CJK>
+<U5035> /xd0/xda <CJK>
+<U502F> /xd0/xdb <CJK>
+<U5031> /xd0/xdc <CJK>
+<U500E> /xd0/xdd <CJK>
+<U515A> /xd0/xde <CJK>
+<U5194> /xd0/xdf <CJK>
+<U5193> /xd0/xe0 <CJK>
+<U51CA> /xd0/xe1 <CJK>
+<U51C4> /xd0/xe2 <CJK>
+<U51C5> /xd0/xe3 <CJK>
+<U51C8> /xd0/xe4 <CJK>
+<U51CE> /xd0/xe5 <CJK>
+<U5261> /xd0/xe6 <CJK>
+<U525A> /xd0/xe7 <CJK>
+<U5252> /xd0/xe8 <CJK>
+<U525E> /xd0/xe9 <CJK>
+<U525F> /xd0/xea <CJK>
+<U5255> /xd0/xeb <CJK>
+<U5262> /xd0/xec <CJK>
+<U52CD> /xd0/xed <CJK>
+<U530E> /xd0/xee <CJK>
+<U539E> /xd0/xef <CJK>
+<U5526> /xd0/xf0 <CJK>
+<U54E2> /xd0/xf1 <CJK>
+<U5517> /xd0/xf2 <CJK>
+<U5512> /xd0/xf3 <CJK>
+<U54E7> /xd0/xf4 <CJK>
+<U54F3> /xd0/xf5 <CJK>
+<U54E4> /xd0/xf6 <CJK>
+<U551A> /xd0/xf7 <CJK>
+<U54FF> /xd0/xf8 <CJK>
+<U5504> /xd0/xf9 <CJK>
+<U5508> /xd0/xfa <CJK>
+<U54EB> /xd0/xfb <CJK>
+<U5511> /xd0/xfc <CJK>
+<U5505> /xd0/xfd <CJK>
+<U54F1> /xd0/xfe <CJK>
+<U550A> /xd1/x40 <CJK>
+<U54FB> /xd1/x41 <CJK>
+<U54F7> /xd1/x42 <CJK>
+<U54F8> /xd1/x43 <CJK>
+<U54E0> /xd1/x44 <CJK>
+<U550E> /xd1/x45 <CJK>
+<U5503> /xd1/x46 <CJK>
+<U550B> /xd1/x47 <CJK>
+<U5701> /xd1/x48 <CJK>
+<U5702> /xd1/x49 <CJK>
+<U57CC> /xd1/x4a <CJK>
+<U5832> /xd1/x4b <CJK>
+<U57D5> /xd1/x4c <CJK>
+<U57D2> /xd1/x4d <CJK>
+<U57BA> /xd1/x4e <CJK>
+<U57C6> /xd1/x4f <CJK>
+<U57BD> /xd1/x50 <CJK>
+<U57BC> /xd1/x51 <CJK>
+<U57B8> /xd1/x52 <CJK>
+<U57B6> /xd1/x53 <CJK>
+<U57BF> /xd1/x54 <CJK>
+<U57C7> /xd1/x55 <CJK>
+<U57D0> /xd1/x56 <CJK>
+<U57B9> /xd1/x57 <CJK>
+<U57C1> /xd1/x58 <CJK>
+<U590E> /xd1/x59 <CJK>
+<U594A> /xd1/x5a <CJK>
+<U5A19> /xd1/x5b <CJK>
+<U5A16> /xd1/x5c <CJK>
+<U5A2D> /xd1/x5d <CJK>
+<U5A2E> /xd1/x5e <CJK>
+<U5A15> /xd1/x5f <CJK>
+<U5A0F> /xd1/x60 <CJK>
+<U5A17> /xd1/x61 <CJK>
+<U5A0A> /xd1/x62 <CJK>
+<U5A1E> /xd1/x63 <CJK>
+<U5A33> /xd1/x64 <CJK>
+<U5B6C> /xd1/x65 <CJK>
+<U5BA7> /xd1/x66 <CJK>
+<U5BAD> /xd1/x67 <CJK>
+<U5BAC> /xd1/x68 <CJK>
+<U5C03> /xd1/x69 <CJK>
+<U5C56> /xd1/x6a <CJK>
+<U5C54> /xd1/x6b <CJK>
+<U5CEC> /xd1/x6c <CJK>
+<U5CFF> /xd1/x6d <CJK>
+<U5CEE> /xd1/x6e <CJK>
+<U5CF1> /xd1/x6f <CJK>
+<U5CF7> /xd1/x70 <CJK>
+<U5D00> /xd1/x71 <CJK>
+<U5CF9> /xd1/x72 <CJK>
+<U5E29> /xd1/x73 <CJK>
+<U5E28> /xd1/x74 <CJK>
+<U5EA8> /xd1/x75 <CJK>
+<U5EAE> /xd1/x76 <CJK>
+<U5EAA> /xd1/x77 <CJK>
+<U5EAC> /xd1/x78 <CJK>
+<U5F33> /xd1/x79 <CJK>
+<U5F30> /xd1/x7a <CJK>
+<U5F67> /xd1/x7b <CJK>
+<U605D> /xd1/x7c <CJK>
+<U605A> /xd1/x7d <CJK>
+<U6067> /xd1/x7e <CJK>
+<U6041> /xd1/xa1 <CJK>
+<U60A2> /xd1/xa2 <CJK>
+<U6088> /xd1/xa3 <CJK>
+<U6080> /xd1/xa4 <CJK>
+<U6092> /xd1/xa5 <CJK>
+<U6081> /xd1/xa6 <CJK>
+<U609D> /xd1/xa7 <CJK>
+<U6083> /xd1/xa8 <CJK>
+<U6095> /xd1/xa9 <CJK>
+<U609B> /xd1/xaa <CJK>
+<U6097> /xd1/xab <CJK>
+<U6087> /xd1/xac <CJK>
+<U609C> /xd1/xad <CJK>
+<U608E> /xd1/xae <CJK>
+<U6219> /xd1/xaf <CJK>
+<U6246> /xd1/xb0 <CJK>
+<U62F2> /xd1/xb1 <CJK>
+<U6310> /xd1/xb2 <CJK>
+<U6356> /xd1/xb3 <CJK>
+<U632C> /xd1/xb4 <CJK>
+<U6344> /xd1/xb5 <CJK>
+<U6345> /xd1/xb6 <CJK>
+<U6336> /xd1/xb7 <CJK>
+<U6343> /xd1/xb8 <CJK>
+<U63E4> /xd1/xb9 <CJK>
+<U6339> /xd1/xba <CJK>
+<U634B> /xd1/xbb <CJK>
+<U634A> /xd1/xbc <CJK>
+<U633C> /xd1/xbd <CJK>
+<U6329> /xd1/xbe <CJK>
+<U6341> /xd1/xbf <CJK>
+<U6334> /xd1/xc0 <CJK>
+<U6358> /xd1/xc1 <CJK>
+<U6354> /xd1/xc2 <CJK>
+<U6359> /xd1/xc3 <CJK>
+<U632D> /xd1/xc4 <CJK>
+<U6347> /xd1/xc5 <CJK>
+<U6333> /xd1/xc6 <CJK>
+<U635A> /xd1/xc7 <CJK>
+<U6351> /xd1/xc8 <CJK>
+<U6338> /xd1/xc9 <CJK>
+<U6357> /xd1/xca <CJK>
+<U6340> /xd1/xcb <CJK>
+<U6348> /xd1/xcc <CJK>
+<U654A> /xd1/xcd <CJK>
+<U6546> /xd1/xce <CJK>
+<U65C6> /xd1/xcf <CJK>
+<U65C3> /xd1/xd0 <CJK>
+<U65C4> /xd1/xd1 <CJK>
+<U65C2> /xd1/xd2 <CJK>
+<U664A> /xd1/xd3 <CJK>
+<U665F> /xd1/xd4 <CJK>
+<U6647> /xd1/xd5 <CJK>
+<U6651> /xd1/xd6 <CJK>
+<U6712> /xd1/xd7 <CJK>
+<U6713> /xd1/xd8 <CJK>
+<U681F> /xd1/xd9 <CJK>
+<U681A> /xd1/xda <CJK>
+<U6849> /xd1/xdb <CJK>
+<U6832> /xd1/xdc <CJK>
+<U6833> /xd1/xdd <CJK>
+<U683B> /xd1/xde <CJK>
+<U684B> /xd1/xdf <CJK>
+<U684F> /xd1/xe0 <CJK>
+<U6816> /xd1/xe1 <CJK>
+<U6831> /xd1/xe2 <CJK>
+<U681C> /xd1/xe3 <CJK>
+<U6835> /xd1/xe4 <CJK>
+<U682B> /xd1/xe5 <CJK>
+<U682D> /xd1/xe6 <CJK>
+<U682F> /xd1/xe7 <CJK>
+<U684E> /xd1/xe8 <CJK>
+<U6844> /xd1/xe9 <CJK>
+<U6834> /xd1/xea <CJK>
+<U681D> /xd1/xeb <CJK>
+<U6812> /xd1/xec <CJK>
+<U6814> /xd1/xed <CJK>
+<U6826> /xd1/xee <CJK>
+<U6828> /xd1/xef <CJK>
+<U682E> /xd1/xf0 <CJK>
+<U684D> /xd1/xf1 <CJK>
+<U683A> /xd1/xf2 <CJK>
+<U6825> /xd1/xf3 <CJK>
+<U6820> /xd1/xf4 <CJK>
+<U6B2C> /xd1/xf5 <CJK>
+<U6B2F> /xd1/xf6 <CJK>
+<U6B2D> /xd1/xf7 <CJK>
+<U6B31> /xd1/xf8 <CJK>
+<U6B34> /xd1/xf9 <CJK>
+<U6B6D> /xd1/xfa <CJK>
+<U8082> /xd1/xfb <CJK>
+<U6B88> /xd1/xfc <CJK>
+<U6BE6> /xd1/xfd <CJK>
+<U6BE4> /xd1/xfe <CJK>
+<U6BE8> /xd2/x40 <CJK>
+<U6BE3> /xd2/x41 <CJK>
+<U6BE2> /xd2/x42 <CJK>
+<U6BE7> /xd2/x43 <CJK>
+<U6C25> /xd2/x44 <CJK>
+<U6D7A> /xd2/x45 <CJK>
+<U6D63> /xd2/x46 <CJK>
+<U6D64> /xd2/x47 <CJK>
+<U6D76> /xd2/x48 <CJK>
+<U6D0D> /xd2/x49 <CJK>
+<U6D61> /xd2/x4a <CJK>
+<U6D92> /xd2/x4b <CJK>
+<U6D58> /xd2/x4c <CJK>
+<U6D62> /xd2/x4d <CJK>
+<U6D6D> /xd2/x4e <CJK>
+<U6D6F> /xd2/x4f <CJK>
+<U6D91> /xd2/x50 <CJK>
+<U6D8D> /xd2/x51 <CJK>
+<U6DEF> /xd2/x52 <CJK>
+<U6D7F> /xd2/x53 <CJK>
+<U6D86> /xd2/x54 <CJK>
+<U6D5E> /xd2/x55 <CJK>
+<U6D67> /xd2/x56 <CJK>
+<U6D60> /xd2/x57 <CJK>
+<U6D97> /xd2/x58 <CJK>
+<U6D70> /xd2/x59 <CJK>
+<U6D7C> /xd2/x5a <CJK>
+<U6D5F> /xd2/x5b <CJK>
+<U6D82> /xd2/x5c <CJK>
+<U6D98> /xd2/x5d <CJK>
+<U6D2F> /xd2/x5e <CJK>
+<U6D68> /xd2/x5f <CJK>
+<U6D8B> /xd2/x60 <CJK>
+<U6D7E> /xd2/x61 <CJK>
+<U6D80> /xd2/x62 <CJK>
+<U6D84> /xd2/x63 <CJK>
+<U6D16> /xd2/x64 <CJK>
+<U6D83> /xd2/x65 <CJK>
+<U6D7B> /xd2/x66 <CJK>
+<U6D7D> /xd2/x67 <CJK>
+<U6D75> /xd2/x68 <CJK>
+<U6D90> /xd2/x69 <CJK>
+<U70DC> /xd2/x6a <CJK>
+<U70D3> /xd2/x6b <CJK>
+<U70D1> /xd2/x6c <CJK>
+<U70DD> /xd2/x6d <CJK>
+<U70CB> /xd2/x6e <CJK>
+<U7F39> /xd2/x6f <CJK>
+<U70E2> /xd2/x70 <CJK>
+<U70D7> /xd2/x71 <CJK>
+<U70D2> /xd2/x72 <CJK>
+<U70DE> /xd2/x73 <CJK>
+<U70E0> /xd2/x74 <CJK>
+<U70D4> /xd2/x75 <CJK>
+<U70CD> /xd2/x76 <CJK>
+<U70C5> /xd2/x77 <CJK>
+<U70C6> /xd2/x78 <CJK>
+<U70C7> /xd2/x79 <CJK>
+<U70DA> /xd2/x7a <CJK>
+<U70CE> /xd2/x7b <CJK>
+<U70E1> /xd2/x7c <CJK>
+<U7242> /xd2/x7d <CJK>
+<U7278> /xd2/x7e <CJK>
+<U7277> /xd2/xa1 <CJK>
+<U7276> /xd2/xa2 <CJK>
+<U7300> /xd2/xa3 <CJK>
+<U72FA> /xd2/xa4 <CJK>
+<U72F4> /xd2/xa5 <CJK>
+<U72FE> /xd2/xa6 <CJK>
+<U72F6> /xd2/xa7 <CJK>
+<U72F3> /xd2/xa8 <CJK>
+<U72FB> /xd2/xa9 <CJK>
+<U7301> /xd2/xaa <CJK>
+<U73D3> /xd2/xab <CJK>
+<U73D9> /xd2/xac <CJK>
+<U73E5> /xd2/xad <CJK>
+<U73D6> /xd2/xae <CJK>
+<U73BC> /xd2/xaf <CJK>
+<U73E7> /xd2/xb0 <CJK>
+<U73E3> /xd2/xb1 <CJK>
+<U73E9> /xd2/xb2 <CJK>
+<U73DC> /xd2/xb3 <CJK>
+<U73D2> /xd2/xb4 <CJK>
+<U73DB> /xd2/xb5 <CJK>
+<U73D4> /xd2/xb6 <CJK>
+<U73DD> /xd2/xb7 <CJK>
+<U73DA> /xd2/xb8 <CJK>
+<U73D7> /xd2/xb9 <CJK>
+<U73D8> /xd2/xba <CJK>
+<U73E8> /xd2/xbb <CJK>
+<U74DE> /xd2/xbc <CJK>
+<U74DF> /xd2/xbd <CJK>
+<U74F4> /xd2/xbe <CJK>
+<U74F5> /xd2/xbf <CJK>
+<U7521> /xd2/xc0 <CJK>
+<U755B> /xd2/xc1 <CJK>
+<U755F> /xd2/xc2 <CJK>
+<U75B0> /xd2/xc3 <CJK>
+<U75C1> /xd2/xc4 <CJK>
+<U75BB> /xd2/xc5 <CJK>
+<U75C4> /xd2/xc6 <CJK>
+<U75C0> /xd2/xc7 <CJK>
+<U75BF> /xd2/xc8 <CJK>
+<U75B6> /xd2/xc9 <CJK>
+<U75BA> /xd2/xca <CJK>
+<U768A> /xd2/xcb <CJK>
+<U76C9> /xd2/xcc <CJK>
+<U771D> /xd2/xcd <CJK>
+<U771B> /xd2/xce <CJK>
+<U7710> /xd2/xcf <CJK>
+<U7713> /xd2/xd0 <CJK>
+<U7712> /xd2/xd1 <CJK>
+<U7723> /xd2/xd2 <CJK>
+<U7711> /xd2/xd3 <CJK>
+<U7715> /xd2/xd4 <CJK>
+<U7719> /xd2/xd5 <CJK>
+<U771A> /xd2/xd6 <CJK>
+<U7722> /xd2/xd7 <CJK>
+<U7727> /xd2/xd8 <CJK>
+<U7823> /xd2/xd9 <CJK>
+<U782C> /xd2/xda <CJK>
+<U7822> /xd2/xdb <CJK>
+<U7835> /xd2/xdc <CJK>
+<U782F> /xd2/xdd <CJK>
+<U7828> /xd2/xde <CJK>
+<U782E> /xd2/xdf <CJK>
+<U782B> /xd2/xe0 <CJK>
+<U7821> /xd2/xe1 <CJK>
+<U7829> /xd2/xe2 <CJK>
+<U7833> /xd2/xe3 <CJK>
+<U782A> /xd2/xe4 <CJK>
+<U7831> /xd2/xe5 <CJK>
+<U7954> /xd2/xe6 <CJK>
+<U795B> /xd2/xe7 <CJK>
+<U794F> /xd2/xe8 <CJK>
+<U795C> /xd2/xe9 <CJK>
+<U7953> /xd2/xea <CJK>
+<U7952> /xd2/xeb <CJK>
+<U7951> /xd2/xec <CJK>
+<U79EB> /xd2/xed <CJK>
+<U79EC> /xd2/xee <CJK>
+<U79E0> /xd2/xef <CJK>
+<U79EE> /xd2/xf0 <CJK>
+<U79ED> /xd2/xf1 <CJK>
+<U79EA> /xd2/xf2 <CJK>
+<U79DC> /xd2/xf3 <CJK>
+<U79DE> /xd2/xf4 <CJK>
+<U79DD> /xd2/xf5 <CJK>
+<U7A86> /xd2/xf6 <CJK>
+<U7A89> /xd2/xf7 <CJK>
+<U7A85> /xd2/xf8 <CJK>
+<U7A8B> /xd2/xf9 <CJK>
+<U7A8C> /xd2/xfa <CJK>
+<U7A8A> /xd2/xfb <CJK>
+<U7A87> /xd2/xfc <CJK>
+<U7AD8> /xd2/xfd <CJK>
+<U7B10> /xd2/xfe <CJK>
+<U7B04> /xd3/x40 <CJK>
+<U7B13> /xd3/x41 <CJK>
+<U7B05> /xd3/x42 <CJK>
+<U7B0F> /xd3/x43 <CJK>
+<U7B08> /xd3/x44 <CJK>
+<U7B0A> /xd3/x45 <CJK>
+<U7B0E> /xd3/x46 <CJK>
+<U7B09> /xd3/x47 <CJK>
+<U7B12> /xd3/x48 <CJK>
+<U7C84> /xd3/x49 <CJK>
+<U7C91> /xd3/x4a <CJK>
+<U7C8A> /xd3/x4b <CJK>
+<U7C8C> /xd3/x4c <CJK>
+<U7C88> /xd3/x4d <CJK>
+<U7C8D> /xd3/x4e <CJK>
+<U7C85> /xd3/x4f <CJK>
+<U7D1E> /xd3/x50 <CJK>
+<U7D1D> /xd3/x51 <CJK>
+<U7D11> /xd3/x52 <CJK>
+<U7D0E> /xd3/x53 <CJK>
+<U7D18> /xd3/x54 <CJK>
+<U7D16> /xd3/x55 <CJK>
+<U7D13> /xd3/x56 <CJK>
+<U7D1F> /xd3/x57 <CJK>
+<U7D12> /xd3/x58 <CJK>
+<U7D0F> /xd3/x59 <CJK>
+<U7D0C> /xd3/x5a <CJK>
+<U7F5C> /xd3/x5b <CJK>
+<U7F61> /xd3/x5c <CJK>
+<U7F5E> /xd3/x5d <CJK>
+<U7F60> /xd3/x5e <CJK>
+<U7F5D> /xd3/x5f <CJK>
+<U7F5B> /xd3/x60 <CJK>
+<U7F96> /xd3/x61 <CJK>
+<U7F92> /xd3/x62 <CJK>
+<U7FC3> /xd3/x63 <CJK>
+<U7FC2> /xd3/x64 <CJK>
+<U7FC0> /xd3/x65 <CJK>
+<U8016> /xd3/x66 <CJK>
+<U803E> /xd3/x67 <CJK>
+<U8039> /xd3/x68 <CJK>
+<U80FA> /xd3/x69 <CJK>
+<U80F2> /xd3/x6a <CJK>
+<U80F9> /xd3/x6b <CJK>
+<U80F5> /xd3/x6c <CJK>
+<U8101> /xd3/x6d <CJK>
+<U80FB> /xd3/x6e <CJK>
+<U8100> /xd3/x6f <CJK>
+<U8201> /xd3/x70 <CJK>
+<U822F> /xd3/x71 <CJK>
+<U8225> /xd3/x72 <CJK>
+<U8333> /xd3/x73 <CJK>
+<U832D> /xd3/x74 <CJK>
+<U8344> /xd3/x75 <CJK>
+<U8319> /xd3/x76 <CJK>
+<U8351> /xd3/x77 <CJK>
+<U8325> /xd3/x78 <CJK>
+<U8356> /xd3/x79 <CJK>
+<U833F> /xd3/x7a <CJK>
+<U8341> /xd3/x7b <CJK>
+<U8326> /xd3/x7c <CJK>
+<U831C> /xd3/x7d <CJK>
+<U8322> /xd3/x7e <CJK>
+<U8342> /xd3/xa1 <CJK>
+<U834E> /xd3/xa2 <CJK>
+<U831B> /xd3/xa3 <CJK>
+<U832A> /xd3/xa4 <CJK>
+<U8308> /xd3/xa5 <CJK>
+<U833C> /xd3/xa6 <CJK>
+<U834D> /xd3/xa7 <CJK>
+<U8316> /xd3/xa8 <CJK>
+<U8324> /xd3/xa9 <CJK>
+<U8320> /xd3/xaa <CJK>
+<U8337> /xd3/xab <CJK>
+<U832F> /xd3/xac <CJK>
+<U8329> /xd3/xad <CJK>
+<U8347> /xd3/xae <CJK>
+<U8345> /xd3/xaf <CJK>
+<U834C> /xd3/xb0 <CJK>
+<U8353> /xd3/xb1 <CJK>
+<U831E> /xd3/xb2 <CJK>
+<U832C> /xd3/xb3 <CJK>
+<U834B> /xd3/xb4 <CJK>
+<U8327> /xd3/xb5 <CJK>
+<U8348> /xd3/xb6 <CJK>
+<U8653> /xd3/xb7 <CJK>
+<U8652> /xd3/xb8 <CJK>
+<U86A2> /xd3/xb9 <CJK>
+<U86A8> /xd3/xba <CJK>
+<U8696> /xd3/xbb <CJK>
+<U868D> /xd3/xbc <CJK>
+<U8691> /xd3/xbd <CJK>
+<U869E> /xd3/xbe <CJK>
+<U8687> /xd3/xbf <CJK>
+<U8697> /xd3/xc0 <CJK>
+<U8686> /xd3/xc1 <CJK>
+<U868B> /xd3/xc2 <CJK>
+<U869A> /xd3/xc3 <CJK>
+<U8685> /xd3/xc4 <CJK>
+<U86A5> /xd3/xc5 <CJK>
+<U8699> /xd3/xc6 <CJK>
+<U86A1> /xd3/xc7 <CJK>
+<U86A7> /xd3/xc8 <CJK>
+<U8695> /xd3/xc9 <CJK>
+<U8698> /xd3/xca <CJK>
+<U868E> /xd3/xcb <CJK>
+<U869D> /xd3/xcc <CJK>
+<U8690> /xd3/xcd <CJK>
+<U8694> /xd3/xce <CJK>
+<U8843> /xd3/xcf <CJK>
+<U8844> /xd3/xd0 <CJK>
+<U886D> /xd3/xd1 <CJK>
+<U8875> /xd3/xd2 <CJK>
+<U8876> /xd3/xd3 <CJK>
+<U8872> /xd3/xd4 <CJK>
+<U8880> /xd3/xd5 <CJK>
+<U8871> /xd3/xd6 <CJK>
+<U887F> /xd3/xd7 <CJK>
+<U886F> /xd3/xd8 <CJK>
+<U8883> /xd3/xd9 <CJK>
+<U887E> /xd3/xda <CJK>
+<U8874> /xd3/xdb <CJK>
+<U887C> /xd3/xdc <CJK>
+<U8A12> /xd3/xdd <CJK>
+<U8C47> /xd3/xde <CJK>
+<U8C57> /xd3/xdf <CJK>
+<U8C7B> /xd3/xe0 <CJK>
+<U8CA4> /xd3/xe1 <CJK>
+<U8CA3> /xd3/xe2 <CJK>
+<U8D76> /xd3/xe3 <CJK>
+<U8D78> /xd3/xe4 <CJK>
+<U8DB5> /xd3/xe5 <CJK>
+<U8DB7> /xd3/xe6 <CJK>
+<U8DB6> /xd3/xe7 <CJK>
+<U8ED1> /xd3/xe8 <CJK>
+<U8ED3> /xd3/xe9 <CJK>
+<U8FFE> /xd3/xea <CJK>
+<U8FF5> /xd3/xeb <CJK>
+<U9002> /xd3/xec <CJK>
+<U8FFF> /xd3/xed <CJK>
+<U8FFB> /xd3/xee <CJK>
+<U9004> /xd3/xef <CJK>
+<U8FFC> /xd3/xf0 <CJK>
+<U8FF6> /xd3/xf1 <CJK>
+<U90D6> /xd3/xf2 <CJK>
+<U90E0> /xd3/xf3 <CJK>
+<U90D9> /xd3/xf4 <CJK>
+<U90DA> /xd3/xf5 <CJK>
+<U90E3> /xd3/xf6 <CJK>
+<U90DF> /xd3/xf7 <CJK>
+<U90E5> /xd3/xf8 <CJK>
+<U90D8> /xd3/xf9 <CJK>
+<U90DB> /xd3/xfa <CJK>
+<U90D7> /xd3/xfb <CJK>
+<U90DC> /xd3/xfc <CJK>
+<U90E4> /xd3/xfd <CJK>
+<U9150> /xd3/xfe <CJK>
+<U914E> /xd4/x40 <CJK>
+<U914F> /xd4/x41 <CJK>
+<U91D5> /xd4/x42 <CJK>
+<U91E2> /xd4/x43 <CJK>
+<U91DA> /xd4/x44 <CJK>
+<U965C> /xd4/x45 <CJK>
+<U965F> /xd4/x46 <CJK>
+<U96BC> /xd4/x47 <CJK>
+<U98E3> /xd4/x48 <CJK>
+<U9ADF> /xd4/x49 <CJK>
+<U9B2F> /xd4/x4a <CJK>
+<U4E7F> /xd4/x4b <CJK>
+<U5070> /xd4/x4c <CJK>
+<U506A> /xd4/x4d <CJK>
+<U5061> /xd4/x4e <CJK>
+<U505E> /xd4/x4f <CJK>
+<U5060> /xd4/x50 <CJK>
+<U5053> /xd4/x51 <CJK>
+<U504B> /xd4/x52 <CJK>
+<U505D> /xd4/x53 <CJK>
+<U5072> /xd4/x54 <CJK>
+<U5048> /xd4/x55 <CJK>
+<U504D> /xd4/x56 <CJK>
+<U5041> /xd4/x57 <CJK>
+<U505B> /xd4/x58 <CJK>
+<U504A> /xd4/x59 <CJK>
+<U5062> /xd4/x5a <CJK>
+<U5015> /xd4/x5b <CJK>
+<U5045> /xd4/x5c <CJK>
+<U505F> /xd4/x5d <CJK>
+<U5069> /xd4/x5e <CJK>
+<U506B> /xd4/x5f <CJK>
+<U5063> /xd4/x60 <CJK>
+<U5064> /xd4/x61 <CJK>
+<U5046> /xd4/x62 <CJK>
+<U5040> /xd4/x63 <CJK>
+<U506E> /xd4/x64 <CJK>
+<U5073> /xd4/x65 <CJK>
+<U5057> /xd4/x66 <CJK>
+<U5051> /xd4/x67 <CJK>
+<U51D0> /xd4/x68 <CJK>
+<U526B> /xd4/x69 <CJK>
+<U526D> /xd4/x6a <CJK>
+<U526C> /xd4/x6b <CJK>
+<U526E> /xd4/x6c <CJK>
+<U52D6> /xd4/x6d <CJK>
+<U52D3> /xd4/x6e <CJK>
+<U532D> /xd4/x6f <CJK>
+<U539C> /xd4/x70 <CJK>
+<U5575> /xd4/x71 <CJK>
+<U5576> /xd4/x72 <CJK>
+<U553C> /xd4/x73 <CJK>
+<U554D> /xd4/x74 <CJK>
+<U5550> /xd4/x75 <CJK>
+<U5534> /xd4/x76 <CJK>
+<U552A> /xd4/x77 <CJK>
+<U5551> /xd4/x78 <CJK>
+<U5562> /xd4/x79 <CJK>
+<U5536> /xd4/x7a <CJK>
+<U5535> /xd4/x7b <CJK>
+<U5530> /xd4/x7c <CJK>
+<U5552> /xd4/x7d <CJK>
+<U5545> /xd4/x7e <CJK>
+<U550C> /xd4/xa1 <CJK>
+<U5532> /xd4/xa2 <CJK>
+<U5565> /xd4/xa3 <CJK>
+<U554E> /xd4/xa4 <CJK>
+<U5539> /xd4/xa5 <CJK>
+<U5548> /xd4/xa6 <CJK>
+<U552D> /xd4/xa7 <CJK>
+<U553B> /xd4/xa8 <CJK>
+<U5540> /xd4/xa9 <CJK>
+<U554B> /xd4/xaa <CJK>
+<U570A> /xd4/xab <CJK>
+<U5707> /xd4/xac <CJK>
+<U57FB> /xd4/xad <CJK>
+<U5814> /xd4/xae <CJK>
+<U57E2> /xd4/xaf <CJK>
+<U57F6> /xd4/xb0 <CJK>
+<U57DC> /xd4/xb1 <CJK>
+<U57F4> /xd4/xb2 <CJK>
+<U5800> /xd4/xb3 <CJK>
+<U57ED> /xd4/xb4 <CJK>
+<U57FD> /xd4/xb5 <CJK>
+<U5808> /xd4/xb6 <CJK>
+<U57F8> /xd4/xb7 <CJK>
+<U580B> /xd4/xb8 <CJK>
+<U57F3> /xd4/xb9 <CJK>
+<U57CF> /xd4/xba <CJK>
+<U5807> /xd4/xbb <CJK>
+<U57EE> /xd4/xbc <CJK>
+<U57E3> /xd4/xbd <CJK>
+<U57F2> /xd4/xbe <CJK>
+<U57E5> /xd4/xbf <CJK>
+<U57EC> /xd4/xc0 <CJK>
+<U57E1> /xd4/xc1 <CJK>
+<U580E> /xd4/xc2 <CJK>
+<U57FC> /xd4/xc3 <CJK>
+<U5810> /xd4/xc4 <CJK>
+<U57E7> /xd4/xc5 <CJK>
+<U5801> /xd4/xc6 <CJK>
+<U580C> /xd4/xc7 <CJK>
+<U57F1> /xd4/xc8 <CJK>
+<U57E9> /xd4/xc9 <CJK>
+<U57F0> /xd4/xca <CJK>
+<U580D> /xd4/xcb <CJK>
+<U5804> /xd4/xcc <CJK>
+<U595C> /xd4/xcd <CJK>
+<U5A60> /xd4/xce <CJK>
+<U5A58> /xd4/xcf <CJK>
+<U5A55> /xd4/xd0 <CJK>
+<U5A67> /xd4/xd1 <CJK>
+<U5A5E> /xd4/xd2 <CJK>
+<U5A38> /xd4/xd3 <CJK>
+<U5A35> /xd4/xd4 <CJK>
+<U5A6D> /xd4/xd5 <CJK>
+<U5A50> /xd4/xd6 <CJK>
+<U5A5F> /xd4/xd7 <CJK>
+<U5A65> /xd4/xd8 <CJK>
+<U5A6C> /xd4/xd9 <CJK>
+<U5A53> /xd4/xda <CJK>
+<U5A64> /xd4/xdb <CJK>
+<U5A57> /xd4/xdc <CJK>
+<U5A43> /xd4/xdd <CJK>
+<U5A5D> /xd4/xde <CJK>
+<U5A52> /xd4/xdf <CJK>
+<U5A44> /xd4/xe0 <CJK>
+<U5A5B> /xd4/xe1 <CJK>
+<U5A48> /xd4/xe2 <CJK>
+<U5A8E> /xd4/xe3 <CJK>
+<U5A3E> /xd4/xe4 <CJK>
+<U5A4D> /xd4/xe5 <CJK>
+<U5A39> /xd4/xe6 <CJK>
+<U5A4C> /xd4/xe7 <CJK>
+<U5A70> /xd4/xe8 <CJK>
+<U5A69> /xd4/xe9 <CJK>
+<U5A47> /xd4/xea <CJK>
+<U5A51> /xd4/xeb <CJK>
+<U5A56> /xd4/xec <CJK>
+<U5A42> /xd4/xed <CJK>
+<U5A5C> /xd4/xee <CJK>
+<U5B72> /xd4/xef <CJK>
+<U5B6E> /xd4/xf0 <CJK>
+<U5BC1> /xd4/xf1 <CJK>
+<U5BC0> /xd4/xf2 <CJK>
+<U5C59> /xd4/xf3 <CJK>
+<U5D1E> /xd4/xf4 <CJK>
+<U5D0B> /xd4/xf5 <CJK>
+<U5D1D> /xd4/xf6 <CJK>
+<U5D1A> /xd4/xf7 <CJK>
+<U5D20> /xd4/xf8 <CJK>
+<U5D0C> /xd4/xf9 <CJK>
+<U5D28> /xd4/xfa <CJK>
+<U5D0D> /xd4/xfb <CJK>
+<U5D26> /xd4/xfc <CJK>
+<U5D25> /xd4/xfd <CJK>
+<U5D0F> /xd4/xfe <CJK>
+<U5D30> /xd5/x40 <CJK>
+<U5D12> /xd5/x41 <CJK>
+<U5D23> /xd5/x42 <CJK>
+<U5D1F> /xd5/x43 <CJK>
+<U5D2E> /xd5/x44 <CJK>
+<U5E3E> /xd5/x45 <CJK>
+<U5E34> /xd5/x46 <CJK>
+<U5EB1> /xd5/x47 <CJK>
+<U5EB4> /xd5/x48 <CJK>
+<U5EB9> /xd5/x49 <CJK>
+<U5EB2> /xd5/x4a <CJK>
+<U5EB3> /xd5/x4b <CJK>
+<U5F36> /xd5/x4c <CJK>
+<U5F38> /xd5/x4d <CJK>
+<U5F9B> /xd5/x4e <CJK>
+<U5F96> /xd5/x4f <CJK>
+<U5F9F> /xd5/x50 <CJK>
+<U608A> /xd5/x51 <CJK>
+<U6090> /xd5/x52 <CJK>
+<U6086> /xd5/x53 <CJK>
+<U60BE> /xd5/x54 <CJK>
+<U60B0> /xd5/x55 <CJK>
+<U60BA> /xd5/x56 <CJK>
+<U60D3> /xd5/x57 <CJK>
+<U60D4> /xd5/x58 <CJK>
+<U60CF> /xd5/x59 <CJK>
+<U60E4> /xd5/x5a <CJK>
+<U60D9> /xd5/x5b <CJK>
+<U60DD> /xd5/x5c <CJK>
+<U60C8> /xd5/x5d <CJK>
+<U60B1> /xd5/x5e <CJK>
+<U60DB> /xd5/x5f <CJK>
+<U60B7> /xd5/x60 <CJK>
+<U60CA> /xd5/x61 <CJK>
+<U60BF> /xd5/x62 <CJK>
+<U60C3> /xd5/x63 <CJK>
+<U60CD> /xd5/x64 <CJK>
+<U60C0> /xd5/x65 <CJK>
+<U6332> /xd5/x66 <CJK>
+<U6365> /xd5/x67 <CJK>
+<U638A> /xd5/x68 <CJK>
+<U6382> /xd5/x69 <CJK>
+<U637D> /xd5/x6a <CJK>
+<U63BD> /xd5/x6b <CJK>
+<U639E> /xd5/x6c <CJK>
+<U63AD> /xd5/x6d <CJK>
+<U639D> /xd5/x6e <CJK>
+<U6397> /xd5/x6f <CJK>
+<U63AB> /xd5/x70 <CJK>
+<U638E> /xd5/x71 <CJK>
+<U636F> /xd5/x72 <CJK>
+<U6387> /xd5/x73 <CJK>
+<U6390> /xd5/x74 <CJK>
+<U636E> /xd5/x75 <CJK>
+<U63AF> /xd5/x76 <CJK>
+<U6375> /xd5/x77 <CJK>
+<U639C> /xd5/x78 <CJK>
+<U636D> /xd5/x79 <CJK>
+<U63AE> /xd5/x7a <CJK>
+<U637C> /xd5/x7b <CJK>
+<U63A4> /xd5/x7c <CJK>
+<U633B> /xd5/x7d <CJK>
+<U639F> /xd5/x7e <CJK>
+<U6378> /xd5/xa1 <CJK>
+<U6385> /xd5/xa2 <CJK>
+<U6381> /xd5/xa3 <CJK>
+<U6391> /xd5/xa4 <CJK>
+<U638D> /xd5/xa5 <CJK>
+<U6370> /xd5/xa6 <CJK>
+<U6553> /xd5/xa7 <CJK>
+<U65CD> /xd5/xa8 <CJK>
+<U6665> /xd5/xa9 <CJK>
+<U6661> /xd5/xaa <CJK>
+<U665B> /xd5/xab <CJK>
+<U6659> /xd5/xac <CJK>
+<U665C> /xd5/xad <CJK>
+<U6662> /xd5/xae <CJK>
+<U6718> /xd5/xaf <CJK>
+<U6879> /xd5/xb0 <CJK>
+<U6887> /xd5/xb1 <CJK>
+<U6890> /xd5/xb2 <CJK>
+<U689C> /xd5/xb3 <CJK>
+<U686D> /xd5/xb4 <CJK>
+<U686E> /xd5/xb5 <CJK>
+<U68AE> /xd5/xb6 <CJK>
+<U68AB> /xd5/xb7 <CJK>
+<U6956> /xd5/xb8 <CJK>
+<U686F> /xd5/xb9 <CJK>
+<U68A3> /xd5/xba <CJK>
+<U68AC> /xd5/xbb <CJK>
+<U68A9> /xd5/xbc <CJK>
+<U6875> /xd5/xbd <CJK>
+<U6874> /xd5/xbe <CJK>
+<U68B2> /xd5/xbf <CJK>
+<U688F> /xd5/xc0 <CJK>
+<U6877> /xd5/xc1 <CJK>
+<U6892> /xd5/xc2 <CJK>
+<U687C> /xd5/xc3 <CJK>
+<U686B> /xd5/xc4 <CJK>
+<U6872> /xd5/xc5 <CJK>
+<U68AA> /xd5/xc6 <CJK>
+<U6880> /xd5/xc7 <CJK>
+<U6871> /xd5/xc8 <CJK>
+<U687E> /xd5/xc9 <CJK>
+<U689B> /xd5/xca <CJK>
+<U6896> /xd5/xcb <CJK>
+<U688B> /xd5/xcc <CJK>
+<U68A0> /xd5/xcd <CJK>
+<U6889> /xd5/xce <CJK>
+<U68A4> /xd5/xcf <CJK>
+<U6878> /xd5/xd0 <CJK>
+<U687B> /xd5/xd1 <CJK>
+<U6891> /xd5/xd2 <CJK>
+<U688C> /xd5/xd3 <CJK>
+<U688A> /xd5/xd4 <CJK>
+<U687D> /xd5/xd5 <CJK>
+<U6B36> /xd5/xd6 <CJK>
+<U6B33> /xd5/xd7 <CJK>
+<U6B37> /xd5/xd8 <CJK>
+<U6B38> /xd5/xd9 <CJK>
+<U6B91> /xd5/xda <CJK>
+<U6B8F> /xd5/xdb <CJK>
+<U6B8D> /xd5/xdc <CJK>
+<U6B8E> /xd5/xdd <CJK>
+<U6B8C> /xd5/xde <CJK>
+<U6C2A> /xd5/xdf <CJK>
+<U6DC0> /xd5/xe0 <CJK>
+<U6DAB> /xd5/xe1 <CJK>
+<U6DB4> /xd5/xe2 <CJK>
+<U6DB3> /xd5/xe3 <CJK>
+<U6E74> /xd5/xe4 <CJK>
+<U6DAC> /xd5/xe5 <CJK>
+<U6DE9> /xd5/xe6 <CJK>
+<U6DE2> /xd5/xe7 <CJK>
+<U6DB7> /xd5/xe8 <CJK>
+<U6DF6> /xd5/xe9 <CJK>
+<U6DD4> /xd5/xea <CJK>
+<U6E00> /xd5/xeb <CJK>
+<U6DC8> /xd5/xec <CJK>
+<U6DE0> /xd5/xed <CJK>
+<U6DDF> /xd5/xee <CJK>
+<U6DD6> /xd5/xef <CJK>
+<U6DBE> /xd5/xf0 <CJK>
+<U6DE5> /xd5/xf1 <CJK>
+<U6DDC> /xd5/xf2 <CJK>
+<U6DDD> /xd5/xf3 <CJK>
+<U6DDB> /xd5/xf4 <CJK>
+<U6DF4> /xd5/xf5 <CJK>
+<U6DCA> /xd5/xf6 <CJK>
+<U6DBD> /xd5/xf7 <CJK>
+<U6DED> /xd5/xf8 <CJK>
+<U6DF0> /xd5/xf9 <CJK>
+<U6DBA> /xd5/xfa <CJK>
+<U6DD5> /xd5/xfb <CJK>
+<U6DC2> /xd5/xfc <CJK>
+<U6DCF> /xd5/xfd <CJK>
+<U6DC9> /xd5/xfe <CJK>
+<U6DD0> /xd6/x40 <CJK>
+<U6DF2> /xd6/x41 <CJK>
+<U6DD3> /xd6/x42 <CJK>
+<U6DFD> /xd6/x43 <CJK>
+<U6DD7> /xd6/x44 <CJK>
+<U6DCD> /xd6/x45 <CJK>
+<U6DE3> /xd6/x46 <CJK>
+<U6DBB> /xd6/x47 <CJK>
+<U70FA> /xd6/x48 <CJK>
+<U710D> /xd6/x49 <CJK>
+<U70F7> /xd6/x4a <CJK>
+<U7117> /xd6/x4b <CJK>
+<U70F4> /xd6/x4c <CJK>
+<U710C> /xd6/x4d <CJK>
+<U70F0> /xd6/x4e <CJK>
+<U7104> /xd6/x4f <CJK>
+<U70F3> /xd6/x50 <CJK>
+<U7110> /xd6/x51 <CJK>
+<U70FC> /xd6/x52 <CJK>
+<U70FF> /xd6/x53 <CJK>
+<U7106> /xd6/x54 <CJK>
+<U7113> /xd6/x55 <CJK>
+<U7100> /xd6/x56 <CJK>
+<U70F8> /xd6/x57 <CJK>
+<U70F6> /xd6/x58 <CJK>
+<U710B> /xd6/x59 <CJK>
+<U7102> /xd6/x5a <CJK>
+<U710E> /xd6/x5b <CJK>
+<U727E> /xd6/x5c <CJK>
+<U727B> /xd6/x5d <CJK>
+<U727C> /xd6/x5e <CJK>
+<U727F> /xd6/x5f <CJK>
+<U731D> /xd6/x60 <CJK>
+<U7317> /xd6/x61 <CJK>
+<U7307> /xd6/x62 <CJK>
+<U7311> /xd6/x63 <CJK>
+<U7318> /xd6/x64 <CJK>
+<U730A> /xd6/x65 <CJK>
+<U7308> /xd6/x66 <CJK>
+<U72FF> /xd6/x67 <CJK>
+<U730F> /xd6/x68 <CJK>
+<U731E> /xd6/x69 <CJK>
+<U7388> /xd6/x6a <CJK>
+<U73F6> /xd6/x6b <CJK>
+<U73F8> /xd6/x6c <CJK>
+<U73F5> /xd6/x6d <CJK>
+<U7404> /xd6/x6e <CJK>
+<U7401> /xd6/x6f <CJK>
+<U73FD> /xd6/x70 <CJK>
+<U7407> /xd6/x71 <CJK>
+<U7400> /xd6/x72 <CJK>
+<U73FA> /xd6/x73 <CJK>
+<U73FC> /xd6/x74 <CJK>
+<U73FF> /xd6/x75 <CJK>
+<U740C> /xd6/x76 <CJK>
+<U740B> /xd6/x77 <CJK>
+<U73F4> /xd6/x78 <CJK>
+<U7408> /xd6/x79 <CJK>
+<U7564> /xd6/x7a <CJK>
+<U7563> /xd6/x7b <CJK>
+<U75CE> /xd6/x7c <CJK>
+<U75D2> /xd6/x7d <CJK>
+<U75CF> /xd6/x7e <CJK>
+<U75CB> /xd6/xa1 <CJK>
+<U75CC> /xd6/xa2 <CJK>
+<U75D1> /xd6/xa3 <CJK>
+<U75D0> /xd6/xa4 <CJK>
+<U768F> /xd6/xa5 <CJK>
+<U7689> /xd6/xa6 <CJK>
+<U76D3> /xd6/xa7 <CJK>
+<U7739> /xd6/xa8 <CJK>
+<U772F> /xd6/xa9 <CJK>
+<U772D> /xd6/xaa <CJK>
+<U7731> /xd6/xab <CJK>
+<U7732> /xd6/xac <CJK>
+<U7734> /xd6/xad <CJK>
+<U7733> /xd6/xae <CJK>
+<U773D> /xd6/xaf <CJK>
+<U7725> /xd6/xb0 <CJK>
+<U773B> /xd6/xb1 <CJK>
+<U7735> /xd6/xb2 <CJK>
+<U7848> /xd6/xb3 <CJK>
+<U7852> /xd6/xb4 <CJK>
+<U7849> /xd6/xb5 <CJK>
+<U784D> /xd6/xb6 <CJK>
+<U784A> /xd6/xb7 <CJK>
+<U784C> /xd6/xb8 <CJK>
+<U7826> /xd6/xb9 <CJK>
+<U7845> /xd6/xba <CJK>
+<U7850> /xd6/xbb <CJK>
+<U7964> /xd6/xbc <CJK>
+<U7967> /xd6/xbd <CJK>
+<U7969> /xd6/xbe <CJK>
+<U796A> /xd6/xbf <CJK>
+<U7963> /xd6/xc0 <CJK>
+<U796B> /xd6/xc1 <CJK>
+<U7961> /xd6/xc2 <CJK>
+<U79BB> /xd6/xc3 <CJK>
+<U79FA> /xd6/xc4 <CJK>
+<U79F8> /xd6/xc5 <CJK>
+<U79F6> /xd6/xc6 <CJK>
+<U79F7> /xd6/xc7 <CJK>
+<U7A8F> /xd6/xc8 <CJK>
+<U7A94> /xd6/xc9 <CJK>
+<U7A90> /xd6/xca <CJK>
+<U7B35> /xd6/xcb <CJK>
+<U7B47> /xd6/xcc <CJK>
+<U7B34> /xd6/xcd <CJK>
+<U7B25> /xd6/xce <CJK>
+<U7B30> /xd6/xcf <CJK>
+<U7B22> /xd6/xd0 <CJK>
+<U7B24> /xd6/xd1 <CJK>
+<U7B33> /xd6/xd2 <CJK>
+<U7B18> /xd6/xd3 <CJK>
+<U7B2A> /xd6/xd4 <CJK>
+<U7B1D> /xd6/xd5 <CJK>
+<U7B31> /xd6/xd6 <CJK>
+<U7B2B> /xd6/xd7 <CJK>
+<U7B2D> /xd6/xd8 <CJK>
+<U7B2F> /xd6/xd9 <CJK>
+<U7B32> /xd6/xda <CJK>
+<U7B38> /xd6/xdb <CJK>
+<U7B1A> /xd6/xdc <CJK>
+<U7B23> /xd6/xdd <CJK>
+<U7C94> /xd6/xde <CJK>
+<U7C98> /xd6/xdf <CJK>
+<U7C96> /xd6/xe0 <CJK>
+<U7CA3> /xd6/xe1 <CJK>
+<U7D35> /xd6/xe2 <CJK>
+<U7D3D> /xd6/xe3 <CJK>
+<U7D38> /xd6/xe4 <CJK>
+<U7D36> /xd6/xe5 <CJK>
+<U7D3A> /xd6/xe6 <CJK>
+<U7D45> /xd6/xe7 <CJK>
+<U7D2C> /xd6/xe8 <CJK>
+<U7D29> /xd6/xe9 <CJK>
+<U7D41> /xd6/xea <CJK>
+<U7D47> /xd6/xeb <CJK>
+<U7D3E> /xd6/xec <CJK>
+<U7D3F> /xd6/xed <CJK>
+<U7D4A> /xd6/xee <CJK>
+<U7D3B> /xd6/xef <CJK>
+<U7D28> /xd6/xf0 <CJK>
+<U7F63> /xd6/xf1 <CJK>
+<U7F95> /xd6/xf2 <CJK>
+<U7F9C> /xd6/xf3 <CJK>
+<U7F9D> /xd6/xf4 <CJK>
+<U7F9B> /xd6/xf5 <CJK>
+<U7FCA> /xd6/xf6 <CJK>
+<U7FCB> /xd6/xf7 <CJK>
+<U7FCD> /xd6/xf8 <CJK>
+<U7FD0> /xd6/xf9 <CJK>
+<U7FD1> /xd6/xfa <CJK>
+<U7FC7> /xd6/xfb <CJK>
+<U7FCF> /xd6/xfc <CJK>
+<U7FC9> /xd6/xfd <CJK>
+<U801F> /xd6/xfe <CJK>
+<U801E> /xd7/x40 <CJK>
+<U801B> /xd7/x41 <CJK>
+<U8047> /xd7/x42 <CJK>
+<U8043> /xd7/x43 <CJK>
+<U8048> /xd7/x44 <CJK>
+<U8118> /xd7/x45 <CJK>
+<U8125> /xd7/x46 <CJK>
+<U8119> /xd7/x47 <CJK>
+<U811B> /xd7/x48 <CJK>
+<U812D> /xd7/x49 <CJK>
+<U811F> /xd7/x4a <CJK>
+<U812C> /xd7/x4b <CJK>
+<U811E> /xd7/x4c <CJK>
+<U8121> /xd7/x4d <CJK>
+<U8115> /xd7/x4e <CJK>
+<U8127> /xd7/x4f <CJK>
+<U811D> /xd7/x50 <CJK>
+<U8122> /xd7/x51 <CJK>
+<U8211> /xd7/x52 <CJK>
+<U8238> /xd7/x53 <CJK>
+<U8233> /xd7/x54 <CJK>
+<U823A> /xd7/x55 <CJK>
+<U8234> /xd7/x56 <CJK>
+<U8232> /xd7/x57 <CJK>
+<U8274> /xd7/x58 <CJK>
+<U8390> /xd7/x59 <CJK>
+<U83A3> /xd7/x5a <CJK>
+<U83A8> /xd7/x5b <CJK>
+<U838D> /xd7/x5c <CJK>
+<U837A> /xd7/x5d <CJK>
+<U8373> /xd7/x5e <CJK>
+<U83A4> /xd7/x5f <CJK>
+<U8374> /xd7/x60 <CJK>
+<U838F> /xd7/x61 <CJK>
+<U8381> /xd7/x62 <CJK>
+<U8395> /xd7/x63 <CJK>
+<U8399> /xd7/x64 <CJK>
+<U8375> /xd7/x65 <CJK>
+<U8394> /xd7/x66 <CJK>
+<U83A9> /xd7/x67 <CJK>
+<U837D> /xd7/x68 <CJK>
+<U8383> /xd7/x69 <CJK>
+<U838C> /xd7/x6a <CJK>
+<U839D> /xd7/x6b <CJK>
+<U839B> /xd7/x6c <CJK>
+<U83AA> /xd7/x6d <CJK>
+<U838B> /xd7/x6e <CJK>
+<U837E> /xd7/x6f <CJK>
+<U83A5> /xd7/x70 <CJK>
+<U83AF> /xd7/x71 <CJK>
+<U8388> /xd7/x72 <CJK>
+<U8397> /xd7/x73 <CJK>
+<U83B0> /xd7/x74 <CJK>
+<U837F> /xd7/x75 <CJK>
+<U83A6> /xd7/x76 <CJK>
+<U8387> /xd7/x77 <CJK>
+<U83AE> /xd7/x78 <CJK>
+<U8376> /xd7/x79 <CJK>
+<U839A> /xd7/x7a <CJK>
+<U8659> /xd7/x7b <CJK>
+<U8656> /xd7/x7c <CJK>
+<U86BF> /xd7/x7d <CJK>
+<U86B7> /xd7/x7e <CJK>
+<U86C2> /xd7/xa1 <CJK>
+<U86C1> /xd7/xa2 <CJK>
+<U86C5> /xd7/xa3 <CJK>
+<U86BA> /xd7/xa4 <CJK>
+<U86B0> /xd7/xa5 <CJK>
+<U86C8> /xd7/xa6 <CJK>
+<U86B9> /xd7/xa7 <CJK>
+<U86B3> /xd7/xa8 <CJK>
+<U86B8> /xd7/xa9 <CJK>
+<U86CC> /xd7/xaa <CJK>
+<U86B4> /xd7/xab <CJK>
+<U86BB> /xd7/xac <CJK>
+<U86BC> /xd7/xad <CJK>
+<U86C3> /xd7/xae <CJK>
+<U86BD> /xd7/xaf <CJK>
+<U86BE> /xd7/xb0 <CJK>
+<U8852> /xd7/xb1 <CJK>
+<U8889> /xd7/xb2 <CJK>
+<U8895> /xd7/xb3 <CJK>
+<U88A8> /xd7/xb4 <CJK>
+<U88A2> /xd7/xb5 <CJK>
+<U88AA> /xd7/xb6 <CJK>
+<U889A> /xd7/xb7 <CJK>
+<U8891> /xd7/xb8 <CJK>
+<U88A1> /xd7/xb9 <CJK>
+<U889F> /xd7/xba <CJK>
+<U8898> /xd7/xbb <CJK>
+<U88A7> /xd7/xbc <CJK>
+<U8899> /xd7/xbd <CJK>
+<U889B> /xd7/xbe <CJK>
+<U8897> /xd7/xbf <CJK>
+<U88A4> /xd7/xc0 <CJK>
+<U88AC> /xd7/xc1 <CJK>
+<U888C> /xd7/xc2 <CJK>
+<U8893> /xd7/xc3 <CJK>
+<U888E> /xd7/xc4 <CJK>
+<U8982> /xd7/xc5 <CJK>
+<U89D6> /xd7/xc6 <CJK>
+<U89D9> /xd7/xc7 <CJK>
+<U89D5> /xd7/xc8 <CJK>
+<U8A30> /xd7/xc9 <CJK>
+<U8A27> /xd7/xca <CJK>
+<U8A2C> /xd7/xcb <CJK>
+<U8A1E> /xd7/xcc <CJK>
+<U8C39> /xd7/xcd <CJK>
+<U8C3B> /xd7/xce <CJK>
+<U8C5C> /xd7/xcf <CJK>
+<U8C5D> /xd7/xd0 <CJK>
+<U8C7D> /xd7/xd1 <CJK>
+<U8CA5> /xd7/xd2 <CJK>
+<U8D7D> /xd7/xd3 <CJK>
+<U8D7B> /xd7/xd4 <CJK>
+<U8D79> /xd7/xd5 <CJK>
+<U8DBC> /xd7/xd6 <CJK>
+<U8DC2> /xd7/xd7 <CJK>
+<U8DB9> /xd7/xd8 <CJK>
+<U8DBF> /xd7/xd9 <CJK>
+<U8DC1> /xd7/xda <CJK>
+<U8ED8> /xd7/xdb <CJK>
+<U8EDE> /xd7/xdc <CJK>
+<U8EDD> /xd7/xdd <CJK>
+<U8EDC> /xd7/xde <CJK>
+<U8ED7> /xd7/xdf <CJK>
+<U8EE0> /xd7/xe0 <CJK>
+<U8EE1> /xd7/xe1 <CJK>
+<U9024> /xd7/xe2 <CJK>
+<U900B> /xd7/xe3 <CJK>
+<U9011> /xd7/xe4 <CJK>
+<U901C> /xd7/xe5 <CJK>
+<U900C> /xd7/xe6 <CJK>
+<U9021> /xd7/xe7 <CJK>
+<U90EF> /xd7/xe8 <CJK>
+<U90EA> /xd7/xe9 <CJK>
+<U90F0> /xd7/xea <CJK>
+<U90F4> /xd7/xeb <CJK>
+<U90F2> /xd7/xec <CJK>
+<U90F3> /xd7/xed <CJK>
+<U90D4> /xd7/xee <CJK>
+<U90EB> /xd7/xef <CJK>
+<U90EC> /xd7/xf0 <CJK>
+<U90E9> /xd7/xf1 <CJK>
+<U9156> /xd7/xf2 <CJK>
+<U9158> /xd7/xf3 <CJK>
+<U915A> /xd7/xf4 <CJK>
+<U9153> /xd7/xf5 <CJK>
+<U9155> /xd7/xf6 <CJK>
+<U91EC> /xd7/xf7 <CJK>
+<U91F4> /xd7/xf8 <CJK>
+<U91F1> /xd7/xf9 <CJK>
+<U91F3> /xd7/xfa <CJK>
+<U91F8> /xd7/xfb <CJK>
+<U91E4> /xd7/xfc <CJK>
+<U91F9> /xd7/xfd <CJK>
+<U91EA> /xd7/xfe <CJK>
+<U91EB> /xd8/x40 <CJK>
+<U91F7> /xd8/x41 <CJK>
+<U91E8> /xd8/x42 <CJK>
+<U91EE> /xd8/x43 <CJK>
+<U957A> /xd8/x44 <CJK>
+<U9586> /xd8/x45 <CJK>
+<U9588> /xd8/x46 <CJK>
+<U967C> /xd8/x47 <CJK>
+<U966D> /xd8/x48 <CJK>
+<U966B> /xd8/x49 <CJK>
+<U9671> /xd8/x4a <CJK>
+<U966F> /xd8/x4b <CJK>
+<U96BF> /xd8/x4c <CJK>
+<U976A> /xd8/x4d <CJK>
+<U9804> /xd8/x4e <CJK>
+<U98E5> /xd8/x4f <CJK>
+<U9997> /xd8/x50 <CJK>
+<U509B> /xd8/x51 <CJK>
+<U5095> /xd8/x52 <CJK>
+<U5094> /xd8/x53 <CJK>
+<U509E> /xd8/x54 <CJK>
+<U508B> /xd8/x55 <CJK>
+<U50A3> /xd8/x56 <CJK>
+<U5083> /xd8/x57 <CJK>
+<U508C> /xd8/x58 <CJK>
+<U508E> /xd8/x59 <CJK>
+<U509D> /xd8/x5a <CJK>
+<U5068> /xd8/x5b <CJK>
+<U509C> /xd8/x5c <CJK>
+<U5092> /xd8/x5d <CJK>
+<U5082> /xd8/x5e <CJK>
+<U5087> /xd8/x5f <CJK>
+<U515F> /xd8/x60 <CJK>
+<U51D4> /xd8/x61 <CJK>
+<U5312> /xd8/x62 <CJK>
+<U5311> /xd8/x63 <CJK>
+<U53A4> /xd8/x64 <CJK>
+<U53A7> /xd8/x65 <CJK>
+<U5591> /xd8/x66 <CJK>
+<U55A8> /xd8/x67 <CJK>
+<U55A5> /xd8/x68 <CJK>
+<U55AD> /xd8/x69 <CJK>
+<U5577> /xd8/x6a <CJK>
+<U5645> /xd8/x6b <CJK>
+<U55A2> /xd8/x6c <CJK>
+<U5593> /xd8/x6d <CJK>
+<U5588> /xd8/x6e <CJK>
+<U558F> /xd8/x6f <CJK>
+<U55B5> /xd8/x70 <CJK>
+<U5581> /xd8/x71 <CJK>
+<U55A3> /xd8/x72 <CJK>
+<U5592> /xd8/x73 <CJK>
+<U55A4> /xd8/x74 <CJK>
+<U557D> /xd8/x75 <CJK>
+<U558C> /xd8/x76 <CJK>
+<U55A6> /xd8/x77 <CJK>
+<U557F> /xd8/x78 <CJK>
+<U5595> /xd8/x79 <CJK>
+<U55A1> /xd8/x7a <CJK>
+<U558E> /xd8/x7b <CJK>
+<U570C> /xd8/x7c <CJK>
+<U5829> /xd8/x7d <CJK>
+<U5837> /xd8/x7e <CJK>
+<U5819> /xd8/xa1 <CJK>
+<U581E> /xd8/xa2 <CJK>
+<U5827> /xd8/xa3 <CJK>
+<U5823> /xd8/xa4 <CJK>
+<U5828> /xd8/xa5 <CJK>
+<U57F5> /xd8/xa6 <CJK>
+<U5848> /xd8/xa7 <CJK>
+<U5825> /xd8/xa8 <CJK>
+<U581C> /xd8/xa9 <CJK>
+<U581B> /xd8/xaa <CJK>
+<U5833> /xd8/xab <CJK>
+<U583F> /xd8/xac <CJK>
+<U5836> /xd8/xad <CJK>
+<U582E> /xd8/xae <CJK>
+<U5839> /xd8/xaf <CJK>
+<U5838> /xd8/xb0 <CJK>
+<U582D> /xd8/xb1 <CJK>
+<U582C> /xd8/xb2 <CJK>
+<U583B> /xd8/xb3 <CJK>
+<U5961> /xd8/xb4 <CJK>
+<U5AAF> /xd8/xb5 <CJK>
+<U5A94> /xd8/xb6 <CJK>
+<U5A9F> /xd8/xb7 <CJK>
+<U5A7A> /xd8/xb8 <CJK>
+<U5AA2> /xd8/xb9 <CJK>
+<U5A9E> /xd8/xba <CJK>
+<U5A78> /xd8/xbb <CJK>
+<U5AA6> /xd8/xbc <CJK>
+<U5A7C> /xd8/xbd <CJK>
+<U5AA5> /xd8/xbe <CJK>
+<U5AAC> /xd8/xbf <CJK>
+<U5A95> /xd8/xc0 <CJK>
+<U5AAE> /xd8/xc1 <CJK>
+<U5A37> /xd8/xc2 <CJK>
+<U5A84> /xd8/xc3 <CJK>
+<U5A8A> /xd8/xc4 <CJK>
+<U5A97> /xd8/xc5 <CJK>
+<U5A83> /xd8/xc6 <CJK>
+<U5A8B> /xd8/xc7 <CJK>
+<U5AA9> /xd8/xc8 <CJK>
+<U5A7B> /xd8/xc9 <CJK>
+<U5A7D> /xd8/xca <CJK>
+<U5A8C> /xd8/xcb <CJK>
+<U5A9C> /xd8/xcc <CJK>
+<U5A8F> /xd8/xcd <CJK>
+<U5A93> /xd8/xce <CJK>
+<U5A9D> /xd8/xcf <CJK>
+<U5BEA> /xd8/xd0 <CJK>
+<U5BCD> /xd8/xd1 <CJK>
+<U5BCB> /xd8/xd2 <CJK>
+<U5BD4> /xd8/xd3 <CJK>
+<U5BD1> /xd8/xd4 <CJK>
+<U5BCA> /xd8/xd5 <CJK>
+<U5BCE> /xd8/xd6 <CJK>
+<U5C0C> /xd8/xd7 <CJK>
+<U5C30> /xd8/xd8 <CJK>
+<U5D37> /xd8/xd9 <CJK>
+<U5D43> /xd8/xda <CJK>
+<U5D6B> /xd8/xdb <CJK>
+<U5D41> /xd8/xdc <CJK>
+<U5D4B> /xd8/xdd <CJK>
+<U5D3F> /xd8/xde <CJK>
+<U5D35> /xd8/xdf <CJK>
+<U5D51> /xd8/xe0 <CJK>
+<U5D4E> /xd8/xe1 <CJK>
+<U5D55> /xd8/xe2 <CJK>
+<U5D33> /xd8/xe3 <CJK>
+<U5D3A> /xd8/xe4 <CJK>
+<U5D52> /xd8/xe5 <CJK>
+<U5D3D> /xd8/xe6 <CJK>
+<U5D31> /xd8/xe7 <CJK>
+<U5D59> /xd8/xe8 <CJK>
+<U5D42> /xd8/xe9 <CJK>
+<U5D39> /xd8/xea <CJK>
+<U5D49> /xd8/xeb <CJK>
+<U5D38> /xd8/xec <CJK>
+<U5D3C> /xd8/xed <CJK>
+<U5D32> /xd8/xee <CJK>
+<U5D36> /xd8/xef <CJK>
+<U5D40> /xd8/xf0 <CJK>
+<U5D45> /xd8/xf1 <CJK>
+<U5E44> /xd8/xf2 <CJK>
+<U5E41> /xd8/xf3 <CJK>
+<U5F58> /xd8/xf4 <CJK>
+<U5FA6> /xd8/xf5 <CJK>
+<U5FA5> /xd8/xf6 <CJK>
+<U5FAB> /xd8/xf7 <CJK>
+<U60C9> /xd8/xf8 <CJK>
+<U60B9> /xd8/xf9 <CJK>
+<U60CC> /xd8/xfa <CJK>
+<U60E2> /xd8/xfb <CJK>
+<U60CE> /xd8/xfc <CJK>
+<U60C4> /xd8/xfd <CJK>
+<U6114> /xd8/xfe <CJK>
+<U60F2> /xd9/x40 <CJK>
+<U610A> /xd9/x41 <CJK>
+<U6116> /xd9/x42 <CJK>
+<U6105> /xd9/x43 <CJK>
+<U60F5> /xd9/x44 <CJK>
+<U6113> /xd9/x45 <CJK>
+<U60F8> /xd9/x46 <CJK>
+<U60FC> /xd9/x47 <CJK>
+<U60FE> /xd9/x48 <CJK>
+<U60C1> /xd9/x49 <CJK>
+<U6103> /xd9/x4a <CJK>
+<U6118> /xd9/x4b <CJK>
+<U611D> /xd9/x4c <CJK>
+<U6110> /xd9/x4d <CJK>
+<U60FF> /xd9/x4e <CJK>
+<U6104> /xd9/x4f <CJK>
+<U610B> /xd9/x50 <CJK>
+<U624A> /xd9/x51 <CJK>
+<U6394> /xd9/x52 <CJK>
+<U63B1> /xd9/x53 <CJK>
+<U63B0> /xd9/x54 <CJK>
+<U63CE> /xd9/x55 <CJK>
+<U63E5> /xd9/x56 <CJK>
+<U63E8> /xd9/x57 <CJK>
+<U63EF> /xd9/x58 <CJK>
+<U63C3> /xd9/x59 <CJK>
+<U649D> /xd9/x5a <CJK>
+<U63F3> /xd9/x5b <CJK>
+<U63CA> /xd9/x5c <CJK>
+<U63E0> /xd9/x5d <CJK>
+<U63F6> /xd9/x5e <CJK>
+<U63D5> /xd9/x5f <CJK>
+<U63F2> /xd9/x60 <CJK>
+<U63F5> /xd9/x61 <CJK>
+<U6461> /xd9/x62 <CJK>
+<U63DF> /xd9/x63 <CJK>
+<U63BE> /xd9/x64 <CJK>
+<U63DD> /xd9/x65 <CJK>
+<U63DC> /xd9/x66 <CJK>
+<U63C4> /xd9/x67 <CJK>
+<U63D8> /xd9/x68 <CJK>
+<U63D3> /xd9/x69 <CJK>
+<U63C2> /xd9/x6a <CJK>
+<U63C7> /xd9/x6b <CJK>
+<U63CC> /xd9/x6c <CJK>
+<U63CB> /xd9/x6d <CJK>
+<U63C8> /xd9/x6e <CJK>
+<U63F0> /xd9/x6f <CJK>
+<U63D7> /xd9/x70 <CJK>
+<U63D9> /xd9/x71 <CJK>
+<U6532> /xd9/x72 <CJK>
+<U6567> /xd9/x73 <CJK>
+<U656A> /xd9/x74 <CJK>
+<U6564> /xd9/x75 <CJK>
+<U655C> /xd9/x76 <CJK>
+<U6568> /xd9/x77 <CJK>
+<U6565> /xd9/x78 <CJK>
+<U658C> /xd9/x79 <CJK>
+<U659D> /xd9/x7a <CJK>
+<U659E> /xd9/x7b <CJK>
+<U65AE> /xd9/x7c <CJK>
+<U65D0> /xd9/x7d <CJK>
+<U65D2> /xd9/x7e <CJK>
+<U667C> /xd9/xa1 <CJK>
+<U666C> /xd9/xa2 <CJK>
+<U667B> /xd9/xa3 <CJK>
+<U6680> /xd9/xa4 <CJK>
+<U6671> /xd9/xa5 <CJK>
+<U6679> /xd9/xa6 <CJK>
+<U666A> /xd9/xa7 <CJK>
+<U6672> /xd9/xa8 <CJK>
+<U6701> /xd9/xa9 <CJK>
+<U690C> /xd9/xaa <CJK>
+<U68D3> /xd9/xab <CJK>
+<U6904> /xd9/xac <CJK>
+<U68DC> /xd9/xad <CJK>
+<U692A> /xd9/xae <CJK>
+<U68EC> /xd9/xaf <CJK>
+<U68EA> /xd9/xb0 <CJK>
+<U68F1> /xd9/xb1 <CJK>
+<U690F> /xd9/xb2 <CJK>
+<U68D6> /xd9/xb3 <CJK>
+<U68F7> /xd9/xb4 <CJK>
+<U68EB> /xd9/xb5 <CJK>
+<U68E4> /xd9/xb6 <CJK>
+<U68F6> /xd9/xb7 <CJK>
+<U6913> /xd9/xb8 <CJK>
+<U6910> /xd9/xb9 <CJK>
+<U68F3> /xd9/xba <CJK>
+<U68E1> /xd9/xbb <CJK>
+<U6907> /xd9/xbc <CJK>
+<U68CC> /xd9/xbd <CJK>
+<U6908> /xd9/xbe <CJK>
+<U6970> /xd9/xbf <CJK>
+<U68B4> /xd9/xc0 <CJK>
+<U6911> /xd9/xc1 <CJK>
+<U68EF> /xd9/xc2 <CJK>
+<U68C6> /xd9/xc3 <CJK>
+<U6914> /xd9/xc4 <CJK>
+<U68F8> /xd9/xc5 <CJK>
+<U68D0> /xd9/xc6 <CJK>
+<U68FD> /xd9/xc7 <CJK>
+<U68FC> /xd9/xc8 <CJK>
+<U68E8> /xd9/xc9 <CJK>
+<U690B> /xd9/xca <CJK>
+<U690A> /xd9/xcb <CJK>
+<U6917> /xd9/xcc <CJK>
+<U68CE> /xd9/xcd <CJK>
+<U68C8> /xd9/xce <CJK>
+<U68DD> /xd9/xcf <CJK>
+<U68DE> /xd9/xd0 <CJK>
+<U68E6> /xd9/xd1 <CJK>
+<U68F4> /xd9/xd2 <CJK>
+<U68D1> /xd9/xd3 <CJK>
+<U6906> /xd9/xd4 <CJK>
+<U68D4> /xd9/xd5 <CJK>
+<U68E9> /xd9/xd6 <CJK>
+<U6915> /xd9/xd7 <CJK>
+<U6925> /xd9/xd8 <CJK>
+<U68C7> /xd9/xd9 <CJK>
+<U6B39> /xd9/xda <CJK>
+<U6B3B> /xd9/xdb <CJK>
+<U6B3F> /xd9/xdc <CJK>
+<U6B3C> /xd9/xdd <CJK>
+<U6B94> /xd9/xde <CJK>
+<U6B97> /xd9/xdf <CJK>
+<U6B99> /xd9/xe0 <CJK>
+<U6B95> /xd9/xe1 <CJK>
+<U6BBD> /xd9/xe2 <CJK>
+<U6BF0> /xd9/xe3 <CJK>
+<U6BF2> /xd9/xe4 <CJK>
+<U6BF3> /xd9/xe5 <CJK>
+<U6C30> /xd9/xe6 <CJK>
+<U6DFC> /xd9/xe7 <CJK>
+<U6E46> /xd9/xe8 <CJK>
+<U6E47> /xd9/xe9 <CJK>
+<U6E1F> /xd9/xea <CJK>
+<U6E49> /xd9/xeb <CJK>
+<U6E88> /xd9/xec <CJK>
+<U6E3C> /xd9/xed <CJK>
+<U6E3D> /xd9/xee <CJK>
+<U6E45> /xd9/xef <CJK>
+<U6E62> /xd9/xf0 <CJK>
+<U6E2B> /xd9/xf1 <CJK>
+<U6E3F> /xd9/xf2 <CJK>
+<U6E41> /xd9/xf3 <CJK>
+<U6E5D> /xd9/xf4 <CJK>
+<U6E73> /xd9/xf5 <CJK>
+<U6E1C> /xd9/xf6 <CJK>
+<U6E33> /xd9/xf7 <CJK>
+<U6E4B> /xd9/xf8 <CJK>
+<U6E40> /xd9/xf9 <CJK>
+<U6E51> /xd9/xfa <CJK>
+<U6E3B> /xd9/xfb <CJK>
+<U6E03> /xd9/xfc <CJK>
+<U6E2E> /xd9/xfd <CJK>
+<U6E5E> /xd9/xfe <CJK>
+<U6E68> /xda/x40 <CJK>
+<U6E5C> /xda/x41 <CJK>
+<U6E61> /xda/x42 <CJK>
+<U6E31> /xda/x43 <CJK>
+<U6E28> /xda/x44 <CJK>
+<U6E60> /xda/x45 <CJK>
+<U6E71> /xda/x46 <CJK>
+<U6E6B> /xda/x47 <CJK>
+<U6E39> /xda/x48 <CJK>
+<U6E22> /xda/x49 <CJK>
+<U6E30> /xda/x4a <CJK>
+<U6E53> /xda/x4b <CJK>
+<U6E65> /xda/x4c <CJK>
+<U6E27> /xda/x4d <CJK>
+<U6E78> /xda/x4e <CJK>
+<U6E64> /xda/x4f <CJK>
+<U6E77> /xda/x50 <CJK>
+<U6E55> /xda/x51 <CJK>
+<U6E79> /xda/x52 <CJK>
+<U6E52> /xda/x53 <CJK>
+<U6E66> /xda/x54 <CJK>
+<U6E35> /xda/x55 <CJK>
+<U6E36> /xda/x56 <CJK>
+<U6E5A> /xda/x57 <CJK>
+<U7120> /xda/x58 <CJK>
+<U711E> /xda/x59 <CJK>
+<U712F> /xda/x5a <CJK>
+<U70FB> /xda/x5b <CJK>
+<U712E> /xda/x5c <CJK>
+<U7131> /xda/x5d <CJK>
+<U7123> /xda/x5e <CJK>
+<U7125> /xda/x5f <CJK>
+<U7122> /xda/x60 <CJK>
+<U7132> /xda/x61 <CJK>
+<U711F> /xda/x62 <CJK>
+<U7128> /xda/x63 <CJK>
+<U713A> /xda/x64 <CJK>
+<U711B> /xda/x65 <CJK>
+<U724B> /xda/x66 <CJK>
+<U725A> /xda/x67 <CJK>
+<U7288> /xda/x68 <CJK>
+<U7289> /xda/x69 <CJK>
+<U7286> /xda/x6a <CJK>
+<U7285> /xda/x6b <CJK>
+<U728B> /xda/x6c <CJK>
+<U7312> /xda/x6d <CJK>
+<U730B> /xda/x6e <CJK>
+<U7330> /xda/x6f <CJK>
+<U7322> /xda/x70 <CJK>
+<U7331> /xda/x71 <CJK>
+<U7333> /xda/x72 <CJK>
+<U7327> /xda/x73 <CJK>
+<U7332> /xda/x74 <CJK>
+<U732D> /xda/x75 <CJK>
+<U7326> /xda/x76 <CJK>
+<U7323> /xda/x77 <CJK>
+<U7335> /xda/x78 <CJK>
+<U730C> /xda/x79 <CJK>
+<U742E> /xda/x7a <CJK>
+<U742C> /xda/x7b <CJK>
+<U7430> /xda/x7c <CJK>
+<U742B> /xda/x7d <CJK>
+<U7416> /xda/x7e <CJK>
+<U741A> /xda/xa1 <CJK>
+<U7421> /xda/xa2 <CJK>
+<U742D> /xda/xa3 <CJK>
+<U7431> /xda/xa4 <CJK>
+<U7424> /xda/xa5 <CJK>
+<U7423> /xda/xa6 <CJK>
+<U741D> /xda/xa7 <CJK>
+<U7429> /xda/xa8 <CJK>
+<U7420> /xda/xa9 <CJK>
+<U7432> /xda/xaa <CJK>
+<U74FB> /xda/xab <CJK>
+<U752F> /xda/xac <CJK>
+<U756F> /xda/xad <CJK>
+<U756C> /xda/xae <CJK>
+<U75E7> /xda/xaf <CJK>
+<U75DA> /xda/xb0 <CJK>
+<U75E1> /xda/xb1 <CJK>
+<U75E6> /xda/xb2 <CJK>
+<U75DD> /xda/xb3 <CJK>
+<U75DF> /xda/xb4 <CJK>
+<U75E4> /xda/xb5 <CJK>
+<U75D7> /xda/xb6 <CJK>
+<U7695> /xda/xb7 <CJK>
+<U7692> /xda/xb8 <CJK>
+<U76DA> /xda/xb9 <CJK>
+<U7746> /xda/xba <CJK>
+<U7747> /xda/xbb <CJK>
+<U7744> /xda/xbc <CJK>
+<U774D> /xda/xbd <CJK>
+<U7745> /xda/xbe <CJK>
+<U774A> /xda/xbf <CJK>
+<U774E> /xda/xc0 <CJK>
+<U774B> /xda/xc1 <CJK>
+<U774C> /xda/xc2 <CJK>
+<U77DE> /xda/xc3 <CJK>
+<U77EC> /xda/xc4 <CJK>
+<U7860> /xda/xc5 <CJK>
+<U7864> /xda/xc6 <CJK>
+<U7865> /xda/xc7 <CJK>
+<U785C> /xda/xc8 <CJK>
+<U786D> /xda/xc9 <CJK>
+<U7871> /xda/xca <CJK>
+<U786A> /xda/xcb <CJK>
+<U786E> /xda/xcc <CJK>
+<U7870> /xda/xcd <CJK>
+<U7869> /xda/xce <CJK>
+<U7868> /xda/xcf <CJK>
+<U785E> /xda/xd0 <CJK>
+<U7862> /xda/xd1 <CJK>
+<U7974> /xda/xd2 <CJK>
+<U7973> /xda/xd3 <CJK>
+<U7972> /xda/xd4 <CJK>
+<U7970> /xda/xd5 <CJK>
+<U7A02> /xda/xd6 <CJK>
+<U7A0A> /xda/xd7 <CJK>
+<U7A03> /xda/xd8 <CJK>
+<U7A0C> /xda/xd9 <CJK>
+<U7A04> /xda/xda <CJK>
+<U7A99> /xda/xdb <CJK>
+<U7AE6> /xda/xdc <CJK>
+<U7AE4> /xda/xdd <CJK>
+<U7B4A> /xda/xde <CJK>
+<U7B3B> /xda/xdf <CJK>
+<U7B44> /xda/xe0 <CJK>
+<U7B48> /xda/xe1 <CJK>
+<U7B4C> /xda/xe2 <CJK>
+<U7B4E> /xda/xe3 <CJK>
+<U7B40> /xda/xe4 <CJK>
+<U7B58> /xda/xe5 <CJK>
+<U7B45> /xda/xe6 <CJK>
+<U7CA2> /xda/xe7 <CJK>
+<U7C9E> /xda/xe8 <CJK>
+<U7CA8> /xda/xe9 <CJK>
+<U7CA1> /xda/xea <CJK>
+<U7D58> /xda/xeb <CJK>
+<U7D6F> /xda/xec <CJK>
+<U7D63> /xda/xed <CJK>
+<U7D53> /xda/xee <CJK>
+<U7D56> /xda/xef <CJK>
+<U7D67> /xda/xf0 <CJK>
+<U7D6A> /xda/xf1 <CJK>
+<U7D4F> /xda/xf2 <CJK>
+<U7D6D> /xda/xf3 <CJK>
+<U7D5C> /xda/xf4 <CJK>
+<U7D6B> /xda/xf5 <CJK>
+<U7D52> /xda/xf6 <CJK>
+<U7D54> /xda/xf7 <CJK>
+<U7D69> /xda/xf8 <CJK>
+<U7D51> /xda/xf9 <CJK>
+<U7D5F> /xda/xfa <CJK>
+<U7D4E> /xda/xfb <CJK>
+<U7F3E> /xda/xfc <CJK>
+<U7F3F> /xda/xfd <CJK>
+<U7F65> /xda/xfe <CJK>
+<U7F66> /xdb/x40 <CJK>
+<U7FA2> /xdb/x41 <CJK>
+<U7FA0> /xdb/x42 <CJK>
+<U7FA1> /xdb/x43 <CJK>
+<U7FD7> /xdb/x44 <CJK>
+<U8051> /xdb/x45 <CJK>
+<U804F> /xdb/x46 <CJK>
+<U8050> /xdb/x47 <CJK>
+<U80FE> /xdb/x48 <CJK>
+<U80D4> /xdb/x49 <CJK>
+<U8143> /xdb/x4a <CJK>
+<U814A> /xdb/x4b <CJK>
+<U8152> /xdb/x4c <CJK>
+<U814F> /xdb/x4d <CJK>
+<U8147> /xdb/x4e <CJK>
+<U813D> /xdb/x4f <CJK>
+<U814D> /xdb/x50 <CJK>
+<U813A> /xdb/x51 <CJK>
+<U81E6> /xdb/x52 <CJK>
+<U81EE> /xdb/x53 <CJK>
+<U81F7> /xdb/x54 <CJK>
+<U81F8> /xdb/x55 <CJK>
+<U81F9> /xdb/x56 <CJK>
+<U8204> /xdb/x57 <CJK>
+<U823C> /xdb/x58 <CJK>
+<U823D> /xdb/x59 <CJK>
+<U823F> /xdb/x5a <CJK>
+<U8275> /xdb/x5b <CJK>
+<U833B> /xdb/x5c <CJK>
+<U83CF> /xdb/x5d <CJK>
+<U83F9> /xdb/x5e <CJK>
+<U8423> /xdb/x5f <CJK>
+<U83C0> /xdb/x60 <CJK>
+<U83E8> /xdb/x61 <CJK>
+<U8412> /xdb/x62 <CJK>
+<U83E7> /xdb/x63 <CJK>
+<U83E4> /xdb/x64 <CJK>
+<U83FC> /xdb/x65 <CJK>
+<U83F6> /xdb/x66 <CJK>
+<U8410> /xdb/x67 <CJK>
+<U83C6> /xdb/x68 <CJK>
+<U83C8> /xdb/x69 <CJK>
+<U83EB> /xdb/x6a <CJK>
+<U83E3> /xdb/x6b <CJK>
+<U83BF> /xdb/x6c <CJK>
+<U8401> /xdb/x6d <CJK>
+<U83DD> /xdb/x6e <CJK>
+<U83E5> /xdb/x6f <CJK>
+<U83D8> /xdb/x70 <CJK>
+<U83FF> /xdb/x71 <CJK>
+<U83E1> /xdb/x72 <CJK>
+<U83CB> /xdb/x73 <CJK>
+<U83CE> /xdb/x74 <CJK>
+<U83D6> /xdb/x75 <CJK>
+<U83F5> /xdb/x76 <CJK>
+<U83C9> /xdb/x77 <CJK>
+<U8409> /xdb/x78 <CJK>
+<U840F> /xdb/x79 <CJK>
+<U83DE> /xdb/x7a <CJK>
+<U8411> /xdb/x7b <CJK>
+<U8406> /xdb/x7c <CJK>
+<U83C2> /xdb/x7d <CJK>
+<U83F3> /xdb/x7e <CJK>
+<U83D5> /xdb/xa1 <CJK>
+<U83FA> /xdb/xa2 <CJK>
+<U83C7> /xdb/xa3 <CJK>
+<U83D1> /xdb/xa4 <CJK>
+<U83EA> /xdb/xa5 <CJK>
+<U8413> /xdb/xa6 <CJK>
+<U83C3> /xdb/xa7 <CJK>
+<U83EC> /xdb/xa8 <CJK>
+<U83EE> /xdb/xa9 <CJK>
+<U83C4> /xdb/xaa <CJK>
+<U83FB> /xdb/xab <CJK>
+<U83D7> /xdb/xac <CJK>
+<U83E2> /xdb/xad <CJK>
+<U841B> /xdb/xae <CJK>
+<U83DB> /xdb/xaf <CJK>
+<U83FE> /xdb/xb0 <CJK>
+<U86D8> /xdb/xb1 <CJK>
+<U86E2> /xdb/xb2 <CJK>
+<U86E6> /xdb/xb3 <CJK>
+<U86D3> /xdb/xb4 <CJK>
+<U86E3> /xdb/xb5 <CJK>
+<U86DA> /xdb/xb6 <CJK>
+<U86EA> /xdb/xb7 <CJK>
+<U86DD> /xdb/xb8 <CJK>
+<U86EB> /xdb/xb9 <CJK>
+<U86DC> /xdb/xba <CJK>
+<U86EC> /xdb/xbb <CJK>
+<U86E9> /xdb/xbc <CJK>
+<U86D7> /xdb/xbd <CJK>
+<U86E8> /xdb/xbe <CJK>
+<U86D1> /xdb/xbf <CJK>
+<U8848> /xdb/xc0 <CJK>
+<U8856> /xdb/xc1 <CJK>
+<U8855> /xdb/xc2 <CJK>
+<U88BA> /xdb/xc3 <CJK>
+<U88D7> /xdb/xc4 <CJK>
+<U88B9> /xdb/xc5 <CJK>
+<U88B8> /xdb/xc6 <CJK>
+<U88C0> /xdb/xc7 <CJK>
+<U88BE> /xdb/xc8 <CJK>
+<U88B6> /xdb/xc9 <CJK>
+<U88BC> /xdb/xca <CJK>
+<U88B7> /xdb/xcb <CJK>
+<U88BD> /xdb/xcc <CJK>
+<U88B2> /xdb/xcd <CJK>
+<U8901> /xdb/xce <CJK>
+<U88C9> /xdb/xcf <CJK>
+<U8995> /xdb/xd0 <CJK>
+<U8998> /xdb/xd1 <CJK>
+<U8997> /xdb/xd2 <CJK>
+<U89DD> /xdb/xd3 <CJK>
+<U89DA> /xdb/xd4 <CJK>
+<U89DB> /xdb/xd5 <CJK>
+<U8A4E> /xdb/xd6 <CJK>
+<U8A4D> /xdb/xd7 <CJK>
+<U8A39> /xdb/xd8 <CJK>
+<U8A59> /xdb/xd9 <CJK>
+<U8A40> /xdb/xda <CJK>
+<U8A57> /xdb/xdb <CJK>
+<U8A58> /xdb/xdc <CJK>
+<U8A44> /xdb/xdd <CJK>
+<U8A45> /xdb/xde <CJK>
+<U8A52> /xdb/xdf <CJK>
+<U8A48> /xdb/xe0 <CJK>
+<U8A51> /xdb/xe1 <CJK>
+<U8A4A> /xdb/xe2 <CJK>
+<U8A4C> /xdb/xe3 <CJK>
+<U8A4F> /xdb/xe4 <CJK>
+<U8C5F> /xdb/xe5 <CJK>
+<U8C81> /xdb/xe6 <CJK>
+<U8C80> /xdb/xe7 <CJK>
+<U8CBA> /xdb/xe8 <CJK>
+<U8CBE> /xdb/xe9 <CJK>
+<U8CB0> /xdb/xea <CJK>
+<U8CB9> /xdb/xeb <CJK>
+<U8CB5> /xdb/xec <CJK>
+<U8D84> /xdb/xed <CJK>
+<U8D80> /xdb/xee <CJK>
+<U8D89> /xdb/xef <CJK>
+<U8DD8> /xdb/xf0 <CJK>
+<U8DD3> /xdb/xf1 <CJK>
+<U8DCD> /xdb/xf2 <CJK>
+<U8DC7> /xdb/xf3 <CJK>
+<U8DD6> /xdb/xf4 <CJK>
+<U8DDC> /xdb/xf5 <CJK>
+<U8DCF> /xdb/xf6 <CJK>
+<U8DD5> /xdb/xf7 <CJK>
+<U8DD9> /xdb/xf8 <CJK>
+<U8DC8> /xdb/xf9 <CJK>
+<U8DD7> /xdb/xfa <CJK>
+<U8DC5> /xdb/xfb <CJK>
+<U8EEF> /xdb/xfc <CJK>
+<U8EF7> /xdb/xfd <CJK>
+<U8EFA> /xdb/xfe <CJK>
+<U8EF9> /xdc/x40 <CJK>
+<U8EE6> /xdc/x41 <CJK>
+<U8EEE> /xdc/x42 <CJK>
+<U8EE5> /xdc/x43 <CJK>
+<U8EF5> /xdc/x44 <CJK>
+<U8EE7> /xdc/x45 <CJK>
+<U8EE8> /xdc/x46 <CJK>
+<U8EF6> /xdc/x47 <CJK>
+<U8EEB> /xdc/x48 <CJK>
+<U8EF1> /xdc/x49 <CJK>
+<U8EEC> /xdc/x4a <CJK>
+<U8EF4> /xdc/x4b <CJK>
+<U8EE9> /xdc/x4c <CJK>
+<U902D> /xdc/x4d <CJK>
+<U9034> /xdc/x4e <CJK>
+<U902F> /xdc/x4f <CJK>
+<U9106> /xdc/x50 <CJK>
+<U912C> /xdc/x51 <CJK>
+<U9104> /xdc/x52 <CJK>
+<U90FF> /xdc/x53 <CJK>
+<U90FC> /xdc/x54 <CJK>
+<U9108> /xdc/x55 <CJK>
+<U90F9> /xdc/x56 <CJK>
+<U90FB> /xdc/x57 <CJK>
+<U9101> /xdc/x58 <CJK>
+<U9100> /xdc/x59 <CJK>
+<U9107> /xdc/x5a <CJK>
+<U9105> /xdc/x5b <CJK>
+<U9103> /xdc/x5c <CJK>
+<U9161> /xdc/x5d <CJK>
+<U9164> /xdc/x5e <CJK>
+<U915F> /xdc/x5f <CJK>
+<U9162> /xdc/x60 <CJK>
+<U9160> /xdc/x61 <CJK>
+<U9201> /xdc/x62 <CJK>
+<U920A> /xdc/x63 <CJK>
+<U9225> /xdc/x64 <CJK>
+<U9203> /xdc/x65 <CJK>
+<U921A> /xdc/x66 <CJK>
+<U9226> /xdc/x67 <CJK>
+<U920F> /xdc/x68 <CJK>
+<U920C> /xdc/x69 <CJK>
+<U9200> /xdc/x6a <CJK>
+<U9212> /xdc/x6b <CJK>
+<U91FF> /xdc/x6c <CJK>
+<U91FD> /xdc/x6d <CJK>
+<U9206> /xdc/x6e <CJK>
+<U9204> /xdc/x6f <CJK>
+<U9227> /xdc/x70 <CJK>
+<U9202> /xdc/x71 <CJK>
+<U921C> /xdc/x72 <CJK>
+<U9224> /xdc/x73 <CJK>
+<U9219> /xdc/x74 <CJK>
+<U9217> /xdc/x75 <CJK>
+<U9205> /xdc/x76 <CJK>
+<U9216> /xdc/x77 <CJK>
+<U957B> /xdc/x78 <CJK>
+<U958D> /xdc/x79 <CJK>
+<U958C> /xdc/x7a <CJK>
+<U9590> /xdc/x7b <CJK>
+<U9687> /xdc/x7c <CJK>
+<U967E> /xdc/x7d <CJK>
+<U9688> /xdc/x7e <CJK>
+<U9689> /xdc/xa1 <CJK>
+<U9683> /xdc/xa2 <CJK>
+<U9680> /xdc/xa3 <CJK>
+<U96C2> /xdc/xa4 <CJK>
+<U96C8> /xdc/xa5 <CJK>
+<U96C3> /xdc/xa6 <CJK>
+<U96F1> /xdc/xa7 <CJK>
+<U96F0> /xdc/xa8 <CJK>
+<U976C> /xdc/xa9 <CJK>
+<U9770> /xdc/xaa <CJK>
+<U976E> /xdc/xab <CJK>
+<U9807> /xdc/xac <CJK>
+<U98A9> /xdc/xad <CJK>
+<U98EB> /xdc/xae <CJK>
+<U9CE6> /xdc/xaf <CJK>
+<U9EF9> /xdc/xb0 <CJK>
+<U4E83> /xdc/xb1 <CJK>
+<U4E84> /xdc/xb2 <CJK>
+<U4EB6> /xdc/xb3 <CJK>
+<U50BD> /xdc/xb4 <CJK>
+<U50BF> /xdc/xb5 <CJK>
+<U50C6> /xdc/xb6 <CJK>
+<U50AE> /xdc/xb7 <CJK>
+<U50C4> /xdc/xb8 <CJK>
+<U50CA> /xdc/xb9 <CJK>
+<U50B4> /xdc/xba <CJK>
+<U50C8> /xdc/xbb <CJK>
+<U50C2> /xdc/xbc <CJK>
+<U50B0> /xdc/xbd <CJK>
+<U50C1> /xdc/xbe <CJK>
+<U50BA> /xdc/xbf <CJK>
+<U50B1> /xdc/xc0 <CJK>
+<U50CB> /xdc/xc1 <CJK>
+<U50C9> /xdc/xc2 <CJK>
+<U50B6> /xdc/xc3 <CJK>
+<U50B8> /xdc/xc4 <CJK>
+<U51D7> /xdc/xc5 <CJK>
+<U527A> /xdc/xc6 <CJK>
+<U5278> /xdc/xc7 <CJK>
+<U527B> /xdc/xc8 <CJK>
+<U527C> /xdc/xc9 <CJK>
+<U55C3> /xdc/xca <CJK>
+<U55DB> /xdc/xcb <CJK>
+<U55CC> /xdc/xcc <CJK>
+<U55D0> /xdc/xcd <CJK>
+<U55CB> /xdc/xce <CJK>
+<U55CA> /xdc/xcf <CJK>
+<U55DD> /xdc/xd0 <CJK>
+<U55C0> /xdc/xd1 <CJK>
+<U55D4> /xdc/xd2 <CJK>
+<U55C4> /xdc/xd3 <CJK>
+<U55E9> /xdc/xd4 <CJK>
+<U55BF> /xdc/xd5 <CJK>
+<U55D2> /xdc/xd6 <CJK>
+<U558D> /xdc/xd7 <CJK>
+<U55CF> /xdc/xd8 <CJK>
+<U55D5> /xdc/xd9 <CJK>
+<U55E2> /xdc/xda <CJK>
+<U55D6> /xdc/xdb <CJK>
+<U55C8> /xdc/xdc <CJK>
+<U55F2> /xdc/xdd <CJK>
+<U55CD> /xdc/xde <CJK>
+<U55D9> /xdc/xdf <CJK>
+<U55C2> /xdc/xe0 <CJK>
+<U5714> /xdc/xe1 <CJK>
+<U5853> /xdc/xe2 <CJK>
+<U5868> /xdc/xe3 <CJK>
+<U5864> /xdc/xe4 <CJK>
+<U584F> /xdc/xe5 <CJK>
+<U584D> /xdc/xe6 <CJK>
+<U5849> /xdc/xe7 <CJK>
+<U586F> /xdc/xe8 <CJK>
+<U5855> /xdc/xe9 <CJK>
+<U584E> /xdc/xea <CJK>
+<U585D> /xdc/xeb <CJK>
+<U5859> /xdc/xec <CJK>
+<U5865> /xdc/xed <CJK>
+<U585B> /xdc/xee <CJK>
+<U583D> /xdc/xef <CJK>
+<U5863> /xdc/xf0 <CJK>
+<U5871> /xdc/xf1 <CJK>
+<U58FC> /xdc/xf2 <CJK>
+<U5AC7> /xdc/xf3 <CJK>
+<U5AC4> /xdc/xf4 <CJK>
+<U5ACB> /xdc/xf5 <CJK>
+<U5ABA> /xdc/xf6 <CJK>
+<U5AB8> /xdc/xf7 <CJK>
+<U5AB1> /xdc/xf8 <CJK>
+<U5AB5> /xdc/xf9 <CJK>
+<U5AB0> /xdc/xfa <CJK>
+<U5ABF> /xdc/xfb <CJK>
+<U5AC8> /xdc/xfc <CJK>
+<U5ABB> /xdc/xfd <CJK>
+<U5AC6> /xdc/xfe <CJK>
+<U5AB7> /xdd/x40 <CJK>
+<U5AC0> /xdd/x41 <CJK>
+<U5ACA> /xdd/x42 <CJK>
+<U5AB4> /xdd/x43 <CJK>
+<U5AB6> /xdd/x44 <CJK>
+<U5ACD> /xdd/x45 <CJK>
+<U5AB9> /xdd/x46 <CJK>
+<U5A90> /xdd/x47 <CJK>
+<U5BD6> /xdd/x48 <CJK>
+<U5BD8> /xdd/x49 <CJK>
+<U5BD9> /xdd/x4a <CJK>
+<U5C1F> /xdd/x4b <CJK>
+<U5C33> /xdd/x4c <CJK>
+<U5D71> /xdd/x4d <CJK>
+<U5D63> /xdd/x4e <CJK>
+<U5D4A> /xdd/x4f <CJK>
+<U5D65> /xdd/x50 <CJK>
+<U5D72> /xdd/x51 <CJK>
+<U5D6C> /xdd/x52 <CJK>
+<U5D5E> /xdd/x53 <CJK>
+<U5D68> /xdd/x54 <CJK>
+<U5D67> /xdd/x55 <CJK>
+<U5D62> /xdd/x56 <CJK>
+<U5DF0> /xdd/x57 <CJK>
+<U5E4F> /xdd/x58 <CJK>
+<U5E4E> /xdd/x59 <CJK>
+<U5E4A> /xdd/x5a <CJK>
+<U5E4D> /xdd/x5b <CJK>
+<U5E4B> /xdd/x5c <CJK>
+<U5EC5> /xdd/x5d <CJK>
+<U5ECC> /xdd/x5e <CJK>
+<U5EC6> /xdd/x5f <CJK>
+<U5ECB> /xdd/x60 <CJK>
+<U5EC7> /xdd/x61 <CJK>
+<U5F40> /xdd/x62 <CJK>
+<U5FAF> /xdd/x63 <CJK>
+<U5FAD> /xdd/x64 <CJK>
+<U60F7> /xdd/x65 <CJK>
+<U6149> /xdd/x66 <CJK>
+<U614A> /xdd/x67 <CJK>
+<U612B> /xdd/x68 <CJK>
+<U6145> /xdd/x69 <CJK>
+<U6136> /xdd/x6a <CJK>
+<U6132> /xdd/x6b <CJK>
+<U612E> /xdd/x6c <CJK>
+<U6146> /xdd/x6d <CJK>
+<U612F> /xdd/x6e <CJK>
+<U614F> /xdd/x6f <CJK>
+<U6129> /xdd/x70 <CJK>
+<U6140> /xdd/x71 <CJK>
+<U6220> /xdd/x72 <CJK>
+<U9168> /xdd/x73 <CJK>
+<U6223> /xdd/x74 <CJK>
+<U6225> /xdd/x75 <CJK>
+<U6224> /xdd/x76 <CJK>
+<U63C5> /xdd/x77 <CJK>
+<U63F1> /xdd/x78 <CJK>
+<U63EB> /xdd/x79 <CJK>
+<U6410> /xdd/x7a <CJK>
+<U6412> /xdd/x7b <CJK>
+<U6409> /xdd/x7c <CJK>
+<U6420> /xdd/x7d <CJK>
+<U6424> /xdd/x7e <CJK>
+<U6433> /xdd/xa1 <CJK>
+<U6443> /xdd/xa2 <CJK>
+<U641F> /xdd/xa3 <CJK>
+<U6415> /xdd/xa4 <CJK>
+<U6418> /xdd/xa5 <CJK>
+<U6439> /xdd/xa6 <CJK>
+<U6437> /xdd/xa7 <CJK>
+<U6422> /xdd/xa8 <CJK>
+<U6423> /xdd/xa9 <CJK>
+<U640C> /xdd/xaa <CJK>
+<U6426> /xdd/xab <CJK>
+<U6430> /xdd/xac <CJK>
+<U6428> /xdd/xad <CJK>
+<U6441> /xdd/xae <CJK>
+<U6435> /xdd/xaf <CJK>
+<U642F> /xdd/xb0 <CJK>
+<U640A> /xdd/xb1 <CJK>
+<U641A> /xdd/xb2 <CJK>
+<U6440> /xdd/xb3 <CJK>
+<U6425> /xdd/xb4 <CJK>
+<U6427> /xdd/xb5 <CJK>
+<U640B> /xdd/xb6 <CJK>
+<U63E7> /xdd/xb7 <CJK>
+<U641B> /xdd/xb8 <CJK>
+<U642E> /xdd/xb9 <CJK>
+<U6421> /xdd/xba <CJK>
+<U640E> /xdd/xbb <CJK>
+<U656F> /xdd/xbc <CJK>
+<U6592> /xdd/xbd <CJK>
+<U65D3> /xdd/xbe <CJK>
+<U6686> /xdd/xbf <CJK>
+<U668C> /xdd/xc0 <CJK>
+<U6695> /xdd/xc1 <CJK>
+<U6690> /xdd/xc2 <CJK>
+<U668B> /xdd/xc3 <CJK>
+<U668A> /xdd/xc4 <CJK>
+<U6699> /xdd/xc5 <CJK>
+<U6694> /xdd/xc6 <CJK>
+<U6678> /xdd/xc7 <CJK>
+<U6720> /xdd/xc8 <CJK>
+<U6966> /xdd/xc9 <CJK>
+<U695F> /xdd/xca <CJK>
+<U6938> /xdd/xcb <CJK>
+<U694E> /xdd/xcc <CJK>
+<U6962> /xdd/xcd <CJK>
+<U6971> /xdd/xce <CJK>
+<U693F> /xdd/xcf <CJK>
+<U6945> /xdd/xd0 <CJK>
+<U696A> /xdd/xd1 <CJK>
+<U6939> /xdd/xd2 <CJK>
+<U6942> /xdd/xd3 <CJK>
+<U6957> /xdd/xd4 <CJK>
+<U6959> /xdd/xd5 <CJK>
+<U697A> /xdd/xd6 <CJK>
+<U6948> /xdd/xd7 <CJK>
+<U6949> /xdd/xd8 <CJK>
+<U6935> /xdd/xd9 <CJK>
+<U696C> /xdd/xda <CJK>
+<U6933> /xdd/xdb <CJK>
+<U693D> /xdd/xdc <CJK>
+<U6965> /xdd/xdd <CJK>
+<U68F0> /xdd/xde <CJK>
+<U6978> /xdd/xdf <CJK>
+<U6934> /xdd/xe0 <CJK>
+<U6969> /xdd/xe1 <CJK>
+<U6940> /xdd/xe2 <CJK>
+<U696F> /xdd/xe3 <CJK>
+<U6944> /xdd/xe4 <CJK>
+<U6976> /xdd/xe5 <CJK>
+<U6958> /xdd/xe6 <CJK>
+<U6941> /xdd/xe7 <CJK>
+<U6974> /xdd/xe8 <CJK>
+<U694C> /xdd/xe9 <CJK>
+<U693B> /xdd/xea <CJK>
+<U694B> /xdd/xeb <CJK>
+<U6937> /xdd/xec <CJK>
+<U695C> /xdd/xed <CJK>
+<U694F> /xdd/xee <CJK>
+<U6951> /xdd/xef <CJK>
+<U6932> /xdd/xf0 <CJK>
+<U6952> /xdd/xf1 <CJK>
+<U692F> /xdd/xf2 <CJK>
+<U697B> /xdd/xf3 <CJK>
+<U693C> /xdd/xf4 <CJK>
+<U6B46> /xdd/xf5 <CJK>
+<U6B45> /xdd/xf6 <CJK>
+<U6B43> /xdd/xf7 <CJK>
+<U6B42> /xdd/xf8 <CJK>
+<U6B48> /xdd/xf9 <CJK>
+<U6B41> /xdd/xfa <CJK>
+<U6B9B> /xdd/xfb <CJK>
+<UFA0D> /xdd/xfc CJK COMPATIBILITY IDEOGRAPH
+<U6BFB> /xdd/xfd <CJK>
+<U6BFC> /xdd/xfe <CJK>
+<U6BF9> /xde/x40 <CJK>
+<U6BF7> /xde/x41 <CJK>
+<U6BF8> /xde/x42 <CJK>
+<U6E9B> /xde/x43 <CJK>
+<U6ED6> /xde/x44 <CJK>
+<U6EC8> /xde/x45 <CJK>
+<U6E8F> /xde/x46 <CJK>
+<U6EC0> /xde/x47 <CJK>
+<U6E9F> /xde/x48 <CJK>
+<U6E93> /xde/x49 <CJK>
+<U6E94> /xde/x4a <CJK>
+<U6EA0> /xde/x4b <CJK>
+<U6EB1> /xde/x4c <CJK>
+<U6EB9> /xde/x4d <CJK>
+<U6EC6> /xde/x4e <CJK>
+<U6ED2> /xde/x4f <CJK>
+<U6EBD> /xde/x50 <CJK>
+<U6EC1> /xde/x51 <CJK>
+<U6E9E> /xde/x52 <CJK>
+<U6EC9> /xde/x53 <CJK>
+<U6EB7> /xde/x54 <CJK>
+<U6EB0> /xde/x55 <CJK>
+<U6ECD> /xde/x56 <CJK>
+<U6EA6> /xde/x57 <CJK>
+<U6ECF> /xde/x58 <CJK>
+<U6EB2> /xde/x59 <CJK>
+<U6EBE> /xde/x5a <CJK>
+<U6EC3> /xde/x5b <CJK>
+<U6EDC> /xde/x5c <CJK>
+<U6ED8> /xde/x5d <CJK>
+<U6E99> /xde/x5e <CJK>
+<U6E92> /xde/x5f <CJK>
+<U6E8E> /xde/x60 <CJK>
+<U6E8D> /xde/x61 <CJK>
+<U6EA4> /xde/x62 <CJK>
+<U6EA1> /xde/x63 <CJK>
+<U6EBF> /xde/x64 <CJK>
+<U6EB3> /xde/x65 <CJK>
+<U6ED0> /xde/x66 <CJK>
+<U6ECA> /xde/x67 <CJK>
+<U6E97> /xde/x68 <CJK>
+<U6EAE> /xde/x69 <CJK>
+<U6EA3> /xde/x6a <CJK>
+<U7147> /xde/x6b <CJK>
+<U7154> /xde/x6c <CJK>
+<U7152> /xde/x6d <CJK>
+<U7163> /xde/x6e <CJK>
+<U7160> /xde/x6f <CJK>
+<U7141> /xde/x70 <CJK>
+<U715D> /xde/x71 <CJK>
+<U7162> /xde/x72 <CJK>
+<U7172> /xde/x73 <CJK>
+<U7178> /xde/x74 <CJK>
+<U716A> /xde/x75 <CJK>
+<U7161> /xde/x76 <CJK>
+<U7142> /xde/x77 <CJK>
+<U7158> /xde/x78 <CJK>
+<U7143> /xde/x79 <CJK>
+<U714B> /xde/x7a <CJK>
+<U7170> /xde/x7b <CJK>
+<U715F> /xde/x7c <CJK>
+<U7150> /xde/x7d <CJK>
+<U7153> /xde/x7e <CJK>
+<U7144> /xde/xa1 <CJK>
+<U714D> /xde/xa2 <CJK>
+<U715A> /xde/xa3 <CJK>
+<U724F> /xde/xa4 <CJK>
+<U728D> /xde/xa5 <CJK>
+<U728C> /xde/xa6 <CJK>
+<U7291> /xde/xa7 <CJK>
+<U7290> /xde/xa8 <CJK>
+<U728E> /xde/xa9 <CJK>
+<U733C> /xde/xaa <CJK>
+<U7342> /xde/xab <CJK>
+<U733B> /xde/xac <CJK>
+<U733A> /xde/xad <CJK>
+<U7340> /xde/xae <CJK>
+<U734A> /xde/xaf <CJK>
+<U7349> /xde/xb0 <CJK>
+<U7444> /xde/xb1 <CJK>
+<U744A> /xde/xb2 <CJK>
+<U744B> /xde/xb3 <CJK>
+<U7452> /xde/xb4 <CJK>
+<U7451> /xde/xb5 <CJK>
+<U7457> /xde/xb6 <CJK>
+<U7440> /xde/xb7 <CJK>
+<U744F> /xde/xb8 <CJK>
+<U7450> /xde/xb9 <CJK>
+<U744E> /xde/xba <CJK>
+<U7442> /xde/xbb <CJK>
+<U7446> /xde/xbc <CJK>
+<U744D> /xde/xbd <CJK>
+<U7454> /xde/xbe <CJK>
+<U74E1> /xde/xbf <CJK>
+<U74FF> /xde/xc0 <CJK>
+<U74FE> /xde/xc1 <CJK>
+<U74FD> /xde/xc2 <CJK>
+<U751D> /xde/xc3 <CJK>
+<U7579> /xde/xc4 <CJK>
+<U7577> /xde/xc5 <CJK>
+<U6983> /xde/xc6 <CJK>
+<U75EF> /xde/xc7 <CJK>
+<U760F> /xde/xc8 <CJK>
+<U7603> /xde/xc9 <CJK>
+<U75F7> /xde/xca <CJK>
+<U75FE> /xde/xcb <CJK>
+<U75FC> /xde/xcc <CJK>
+<U75F9> /xde/xcd <CJK>
+<U75F8> /xde/xce <CJK>
+<U7610> /xde/xcf <CJK>
+<U75FB> /xde/xd0 <CJK>
+<U75F6> /xde/xd1 <CJK>
+<U75ED> /xde/xd2 <CJK>
+<U75F5> /xde/xd3 <CJK>
+<U75FD> /xde/xd4 <CJK>
+<U7699> /xde/xd5 <CJK>
+<U76B5> /xde/xd6 <CJK>
+<U76DD> /xde/xd7 <CJK>
+<U7755> /xde/xd8 <CJK>
+<U775F> /xde/xd9 <CJK>
+<U7760> /xde/xda <CJK>
+<U7752> /xde/xdb <CJK>
+<U7756> /xde/xdc <CJK>
+<U775A> /xde/xdd <CJK>
+<U7769> /xde/xde <CJK>
+<U7767> /xde/xdf <CJK>
+<U7754> /xde/xe0 <CJK>
+<U7759> /xde/xe1 <CJK>
+<U776D> /xde/xe2 <CJK>
+<U77E0> /xde/xe3 <CJK>
+<U7887> /xde/xe4 <CJK>
+<U789A> /xde/xe5 <CJK>
+<U7894> /xde/xe6 <CJK>
+<U788F> /xde/xe7 <CJK>
+<U7884> /xde/xe8 <CJK>
+<U7895> /xde/xe9 <CJK>
+<U7885> /xde/xea <CJK>
+<U7886> /xde/xeb <CJK>
+<U78A1> /xde/xec <CJK>
+<U7883> /xde/xed <CJK>
+<U7879> /xde/xee <CJK>
+<U7899> /xde/xef <CJK>
+<U7880> /xde/xf0 <CJK>
+<U7896> /xde/xf1 <CJK>
+<U787B> /xde/xf2 <CJK>
+<U797C> /xde/xf3 <CJK>
+<U7982> /xde/xf4 <CJK>
+<U797D> /xde/xf5 <CJK>
+<U7979> /xde/xf6 <CJK>
+<U7A11> /xde/xf7 <CJK>
+<U7A18> /xde/xf8 <CJK>
+<U7A19> /xde/xf9 <CJK>
+<U7A12> /xde/xfa <CJK>
+<U7A17> /xde/xfb <CJK>
+<U7A15> /xde/xfc <CJK>
+<U7A22> /xde/xfd <CJK>
+<U7A13> /xde/xfe <CJK>
+<U7A1B> /xdf/x40 <CJK>
+<U7A10> /xdf/x41 <CJK>
+<U7AA3> /xdf/x42 <CJK>
+<U7AA2> /xdf/x43 <CJK>
+<U7A9E> /xdf/x44 <CJK>
+<U7AEB> /xdf/x45 <CJK>
+<U7B66> /xdf/x46 <CJK>
+<U7B64> /xdf/x47 <CJK>
+<U7B6D> /xdf/x48 <CJK>
+<U7B74> /xdf/x49 <CJK>
+<U7B69> /xdf/x4a <CJK>
+<U7B72> /xdf/x4b <CJK>
+<U7B65> /xdf/x4c <CJK>
+<U7B73> /xdf/x4d <CJK>
+<U7B71> /xdf/x4e <CJK>
+<U7B70> /xdf/x4f <CJK>
+<U7B61> /xdf/x50 <CJK>
+<U7B78> /xdf/x51 <CJK>
+<U7B76> /xdf/x52 <CJK>
+<U7B63> /xdf/x53 <CJK>
+<U7CB2> /xdf/x54 <CJK>
+<U7CB4> /xdf/x55 <CJK>
+<U7CAF> /xdf/x56 <CJK>
+<U7D88> /xdf/x57 <CJK>
+<U7D86> /xdf/x58 <CJK>
+<U7D80> /xdf/x59 <CJK>
+<U7D8D> /xdf/x5a <CJK>
+<U7D7F> /xdf/x5b <CJK>
+<U7D85> /xdf/x5c <CJK>
+<U7D7A> /xdf/x5d <CJK>
+<U7D8E> /xdf/x5e <CJK>
+<U7D7B> /xdf/x5f <CJK>
+<U7D83> /xdf/x60 <CJK>
+<U7D7C> /xdf/x61 <CJK>
+<U7D8C> /xdf/x62 <CJK>
+<U7D94> /xdf/x63 <CJK>
+<U7D84> /xdf/x64 <CJK>
+<U7D7D> /xdf/x65 <CJK>
+<U7D92> /xdf/x66 <CJK>
+<U7F6D> /xdf/x67 <CJK>
+<U7F6B> /xdf/x68 <CJK>
+<U7F67> /xdf/x69 <CJK>
+<U7F68> /xdf/x6a <CJK>
+<U7F6C> /xdf/x6b <CJK>
+<U7FA6> /xdf/x6c <CJK>
+<U7FA5> /xdf/x6d <CJK>
+<U7FA7> /xdf/x6e <CJK>
+<U7FDB> /xdf/x6f <CJK>
+<U7FDC> /xdf/x70 <CJK>
+<U8021> /xdf/x71 <CJK>
+<U8164> /xdf/x72 <CJK>
+<U8160> /xdf/x73 <CJK>
+<U8177> /xdf/x74 <CJK>
+<U815C> /xdf/x75 <CJK>
+<U8169> /xdf/x76 <CJK>
+<U815B> /xdf/x77 <CJK>
+<U8162> /xdf/x78 <CJK>
+<U8172> /xdf/x79 <CJK>
+<U6721> /xdf/x7a <CJK>
+<U815E> /xdf/x7b <CJK>
+<U8176> /xdf/x7c <CJK>
+<U8167> /xdf/x7d <CJK>
+<U816F> /xdf/x7e <CJK>
+<U8144> /xdf/xa1 <CJK>
+<U8161> /xdf/xa2 <CJK>
+<U821D> /xdf/xa3 <CJK>
+<U8249> /xdf/xa4 <CJK>
+<U8244> /xdf/xa5 <CJK>
+<U8240> /xdf/xa6 <CJK>
+<U8242> /xdf/xa7 <CJK>
+<U8245> /xdf/xa8 <CJK>
+<U84F1> /xdf/xa9 <CJK>
+<U843F> /xdf/xaa <CJK>
+<U8456> /xdf/xab <CJK>
+<U8476> /xdf/xac <CJK>
+<U8479> /xdf/xad <CJK>
+<U848F> /xdf/xae <CJK>
+<U848D> /xdf/xaf <CJK>
+<U8465> /xdf/xb0 <CJK>
+<U8451> /xdf/xb1 <CJK>
+<U8440> /xdf/xb2 <CJK>
+<U8486> /xdf/xb3 <CJK>
+<U8467> /xdf/xb4 <CJK>
+<U8430> /xdf/xb5 <CJK>
+<U844D> /xdf/xb6 <CJK>
+<U847D> /xdf/xb7 <CJK>
+<U845A> /xdf/xb8 <CJK>
+<U8459> /xdf/xb9 <CJK>
+<U8474> /xdf/xba <CJK>
+<U8473> /xdf/xbb <CJK>
+<U845D> /xdf/xbc <CJK>
+<U8507> /xdf/xbd <CJK>
+<U845E> /xdf/xbe <CJK>
+<U8437> /xdf/xbf <CJK>
+<U843A> /xdf/xc0 <CJK>
+<U8434> /xdf/xc1 <CJK>
+<U847A> /xdf/xc2 <CJK>
+<U8443> /xdf/xc3 <CJK>
+<U8478> /xdf/xc4 <CJK>
+<U8432> /xdf/xc5 <CJK>
+<U8445> /xdf/xc6 <CJK>
+<U8429> /xdf/xc7 <CJK>
+<U83D9> /xdf/xc8 <CJK>
+<U844B> /xdf/xc9 <CJK>
+<U842F> /xdf/xca <CJK>
+<U8442> /xdf/xcb <CJK>
+<U842D> /xdf/xcc <CJK>
+<U845F> /xdf/xcd <CJK>
+<U8470> /xdf/xce <CJK>
+<U8439> /xdf/xcf <CJK>
+<U844E> /xdf/xd0 <CJK>
+<U844C> /xdf/xd1 <CJK>
+<U8452> /xdf/xd2 <CJK>
+<U846F> /xdf/xd3 <CJK>
+<U84C5> /xdf/xd4 <CJK>
+<U848E> /xdf/xd5 <CJK>
+<U843B> /xdf/xd6 <CJK>
+<U8447> /xdf/xd7 <CJK>
+<U8436> /xdf/xd8 <CJK>
+<U8433> /xdf/xd9 <CJK>
+<U8468> /xdf/xda <CJK>
+<U847E> /xdf/xdb <CJK>
+<U8444> /xdf/xdc <CJK>
+<U842B> /xdf/xdd <CJK>
+<U8460> /xdf/xde <CJK>
+<U8454> /xdf/xdf <CJK>
+<U846E> /xdf/xe0 <CJK>
+<U8450> /xdf/xe1 <CJK>
+<U870B> /xdf/xe2 <CJK>
+<U8704> /xdf/xe3 <CJK>
+<U86F7> /xdf/xe4 <CJK>
+<U870C> /xdf/xe5 <CJK>
+<U86FA> /xdf/xe6 <CJK>
+<U86D6> /xdf/xe7 <CJK>
+<U86F5> /xdf/xe8 <CJK>
+<U874D> /xdf/xe9 <CJK>
+<U86F8> /xdf/xea <CJK>
+<U870E> /xdf/xeb <CJK>
+<U8709> /xdf/xec <CJK>
+<U8701> /xdf/xed <CJK>
+<U86F6> /xdf/xee <CJK>
+<U870D> /xdf/xef <CJK>
+<U8705> /xdf/xf0 <CJK>
+<U88D6> /xdf/xf1 <CJK>
+<U88CB> /xdf/xf2 <CJK>
+<U88CD> /xdf/xf3 <CJK>
+<U88CE> /xdf/xf4 <CJK>
+<U88DE> /xdf/xf5 <CJK>
+<U88DB> /xdf/xf6 <CJK>
+<U88DA> /xdf/xf7 <CJK>
+<U88CC> /xdf/xf8 <CJK>
+<U88D0> /xdf/xf9 <CJK>
+<U8985> /xdf/xfa <CJK>
+<U899B> /xdf/xfb <CJK>
+<U89DF> /xdf/xfc <CJK>
+<U89E5> /xdf/xfd <CJK>
+<U89E4> /xdf/xfe <CJK>
+<U89E1> /xe0/x40 <CJK>
+<U89E0> /xe0/x41 <CJK>
+<U89E2> /xe0/x42 <CJK>
+<U89DC> /xe0/x43 <CJK>
+<U89E6> /xe0/x44 <CJK>
+<U8A76> /xe0/x45 <CJK>
+<U8A86> /xe0/x46 <CJK>
+<U8A7F> /xe0/x47 <CJK>
+<U8A61> /xe0/x48 <CJK>
+<U8A3F> /xe0/x49 <CJK>
+<U8A77> /xe0/x4a <CJK>
+<U8A82> /xe0/x4b <CJK>
+<U8A84> /xe0/x4c <CJK>
+<U8A75> /xe0/x4d <CJK>
+<U8A83> /xe0/x4e <CJK>
+<U8A81> /xe0/x4f <CJK>
+<U8A74> /xe0/x50 <CJK>
+<U8A7A> /xe0/x51 <CJK>
+<U8C3C> /xe0/x52 <CJK>
+<U8C4B> /xe0/x53 <CJK>
+<U8C4A> /xe0/x54 <CJK>
+<U8C65> /xe0/x55 <CJK>
+<U8C64> /xe0/x56 <CJK>
+<U8C66> /xe0/x57 <CJK>
+<U8C86> /xe0/x58 <CJK>
+<U8C84> /xe0/x59 <CJK>
+<U8C85> /xe0/x5a <CJK>
+<U8CCC> /xe0/x5b <CJK>
+<U8D68> /xe0/x5c <CJK>
+<U8D69> /xe0/x5d <CJK>
+<U8D91> /xe0/x5e <CJK>
+<U8D8C> /xe0/x5f <CJK>
+<U8D8E> /xe0/x60 <CJK>
+<U8D8F> /xe0/x61 <CJK>
+<U8D8D> /xe0/x62 <CJK>
+<U8D93> /xe0/x63 <CJK>
+<U8D94> /xe0/x64 <CJK>
+<U8D90> /xe0/x65 <CJK>
+<U8D92> /xe0/x66 <CJK>
+<U8DF0> /xe0/x67 <CJK>
+<U8DE0> /xe0/x68 <CJK>
+<U8DEC> /xe0/x69 <CJK>
+<U8DF1> /xe0/x6a <CJK>
+<U8DEE> /xe0/x6b <CJK>
+<U8DD0> /xe0/x6c <CJK>
+<U8DE9> /xe0/x6d <CJK>
+<U8DE3> /xe0/x6e <CJK>
+<U8DE2> /xe0/x6f <CJK>
+<U8DE7> /xe0/x70 <CJK>
+<U8DF2> /xe0/x71 <CJK>
+<U8DEB> /xe0/x72 <CJK>
+<U8DF4> /xe0/x73 <CJK>
+<U8F06> /xe0/x74 <CJK>
+<U8EFF> /xe0/x75 <CJK>
+<U8F01> /xe0/x76 <CJK>
+<U8F00> /xe0/x77 <CJK>
+<U8F05> /xe0/x78 <CJK>
+<U8F07> /xe0/x79 <CJK>
+<U8F08> /xe0/x7a <CJK>
+<U8F02> /xe0/x7b <CJK>
+<U8F0B> /xe0/x7c <CJK>
+<U9052> /xe0/x7d <CJK>
+<U903F> /xe0/x7e <CJK>
+<U9044> /xe0/xa1 <CJK>
+<U9049> /xe0/xa2 <CJK>
+<U903D> /xe0/xa3 <CJK>
+<U9110> /xe0/xa4 <CJK>
+<U910D> /xe0/xa5 <CJK>
+<U910F> /xe0/xa6 <CJK>
+<U9111> /xe0/xa7 <CJK>
+<U9116> /xe0/xa8 <CJK>
+<U9114> /xe0/xa9 <CJK>
+<U910B> /xe0/xaa <CJK>
+<U910E> /xe0/xab <CJK>
+<U916E> /xe0/xac <CJK>
+<U916F> /xe0/xad <CJK>
+<U9248> /xe0/xae <CJK>
+<U9252> /xe0/xaf <CJK>
+<U9230> /xe0/xb0 <CJK>
+<U923A> /xe0/xb1 <CJK>
+<U9266> /xe0/xb2 <CJK>
+<U9233> /xe0/xb3 <CJK>
+<U9265> /xe0/xb4 <CJK>
+<U925E> /xe0/xb5 <CJK>
+<U9283> /xe0/xb6 <CJK>
+<U922E> /xe0/xb7 <CJK>
+<U924A> /xe0/xb8 <CJK>
+<U9246> /xe0/xb9 <CJK>
+<U926D> /xe0/xba <CJK>
+<U926C> /xe0/xbb <CJK>
+<U924F> /xe0/xbc <CJK>
+<U9260> /xe0/xbd <CJK>
+<U9267> /xe0/xbe <CJK>
+<U926F> /xe0/xbf <CJK>
+<U9236> /xe0/xc0 <CJK>
+<U9261> /xe0/xc1 <CJK>
+<U9270> /xe0/xc2 <CJK>
+<U9231> /xe0/xc3 <CJK>
+<U9254> /xe0/xc4 <CJK>
+<U9263> /xe0/xc5 <CJK>
+<U9250> /xe0/xc6 <CJK>
+<U9272> /xe0/xc7 <CJK>
+<U924E> /xe0/xc8 <CJK>
+<U9253> /xe0/xc9 <CJK>
+<U924C> /xe0/xca <CJK>
+<U9256> /xe0/xcb <CJK>
+<U9232> /xe0/xcc <CJK>
+<U959F> /xe0/xcd <CJK>
+<U959C> /xe0/xce <CJK>
+<U959E> /xe0/xcf <CJK>
+<U959B> /xe0/xd0 <CJK>
+<U9692> /xe0/xd1 <CJK>
+<U9693> /xe0/xd2 <CJK>
+<U9691> /xe0/xd3 <CJK>
+<U9697> /xe0/xd4 <CJK>
+<U96CE> /xe0/xd5 <CJK>
+<U96FA> /xe0/xd6 <CJK>
+<U96FD> /xe0/xd7 <CJK>
+<U96F8> /xe0/xd8 <CJK>
+<U96F5> /xe0/xd9 <CJK>
+<U9773> /xe0/xda <CJK>
+<U9777> /xe0/xdb <CJK>
+<U9778> /xe0/xdc <CJK>
+<U9772> /xe0/xdd <CJK>
+<U980F> /xe0/xde <CJK>
+<U980D> /xe0/xdf <CJK>
+<U980E> /xe0/xe0 <CJK>
+<U98AC> /xe0/xe1 <CJK>
+<U98F6> /xe0/xe2 <CJK>
+<U98F9> /xe0/xe3 <CJK>
+<U99AF> /xe0/xe4 <CJK>
+<U99B2> /xe0/xe5 <CJK>
+<U99B0> /xe0/xe6 <CJK>
+<U99B5> /xe0/xe7 <CJK>
+<U9AAD> /xe0/xe8 <CJK>
+<U9AAB> /xe0/xe9 <CJK>
+<U9B5B> /xe0/xea <CJK>
+<U9CEA> /xe0/xeb <CJK>
+<U9CED> /xe0/xec <CJK>
+<U9CE7> /xe0/xed <CJK>
+<U9E80> /xe0/xee <CJK>
+<U9EFD> /xe0/xef <CJK>
+<U50E6> /xe0/xf0 <CJK>
+<U50D4> /xe0/xf1 <CJK>
+<U50D7> /xe0/xf2 <CJK>
+<U50E8> /xe0/xf3 <CJK>
+<U50F3> /xe0/xf4 <CJK>
+<U50DB> /xe0/xf5 <CJK>
+<U50EA> /xe0/xf6 <CJK>
+<U50DD> /xe0/xf7 <CJK>
+<U50E4> /xe0/xf8 <CJK>
+<U50D3> /xe0/xf9 <CJK>
+<U50EC> /xe0/xfa <CJK>
+<U50F0> /xe0/xfb <CJK>
+<U50EF> /xe0/xfc <CJK>
+<U50E3> /xe0/xfd <CJK>
+<U50E0> /xe0/xfe <CJK>
+<U51D8> /xe1/x40 <CJK>
+<U5280> /xe1/x41 <CJK>
+<U5281> /xe1/x42 <CJK>
+<U52E9> /xe1/x43 <CJK>
+<U52EB> /xe1/x44 <CJK>
+<U5330> /xe1/x45 <CJK>
+<U53AC> /xe1/x46 <CJK>
+<U5627> /xe1/x47 <CJK>
+<U5615> /xe1/x48 <CJK>
+<U560C> /xe1/x49 <CJK>
+<U5612> /xe1/x4a <CJK>
+<U55FC> /xe1/x4b <CJK>
+<U560F> /xe1/x4c <CJK>
+<U561C> /xe1/x4d <CJK>
+<U5601> /xe1/x4e <CJK>
+<U5613> /xe1/x4f <CJK>
+<U5602> /xe1/x50 <CJK>
+<U55FA> /xe1/x51 <CJK>
+<U561D> /xe1/x52 <CJK>
+<U5604> /xe1/x53 <CJK>
+<U55FF> /xe1/x54 <CJK>
+<U55F9> /xe1/x55 <CJK>
+<U5889> /xe1/x56 <CJK>
+<U587C> /xe1/x57 <CJK>
+<U5890> /xe1/x58 <CJK>
+<U5898> /xe1/x59 <CJK>
+<U5886> /xe1/x5a <CJK>
+<U5881> /xe1/x5b <CJK>
+<U587F> /xe1/x5c <CJK>
+<U5874> /xe1/x5d <CJK>
+<U588B> /xe1/x5e <CJK>
+<U587A> /xe1/x5f <CJK>
+<U5887> /xe1/x60 <CJK>
+<U5891> /xe1/x61 <CJK>
+<U588E> /xe1/x62 <CJK>
+<U5876> /xe1/x63 <CJK>
+<U5882> /xe1/x64 <CJK>
+<U5888> /xe1/x65 <CJK>
+<U587B> /xe1/x66 <CJK>
+<U5894> /xe1/x67 <CJK>
+<U588F> /xe1/x68 <CJK>
+<U58FE> /xe1/x69 <CJK>
+<U596B> /xe1/x6a <CJK>
+<U5ADC> /xe1/x6b <CJK>
+<U5AEE> /xe1/x6c <CJK>
+<U5AE5> /xe1/x6d <CJK>
+<U5AD5> /xe1/x6e <CJK>
+<U5AEA> /xe1/x6f <CJK>
+<U5ADA> /xe1/x70 <CJK>
+<U5AED> /xe1/x71 <CJK>
+<U5AEB> /xe1/x72 <CJK>
+<U5AF3> /xe1/x73 <CJK>
+<U5AE2> /xe1/x74 <CJK>
+<U5AE0> /xe1/x75 <CJK>
+<U5ADB> /xe1/x76 <CJK>
+<U5AEC> /xe1/x77 <CJK>
+<U5ADE> /xe1/x78 <CJK>
+<U5ADD> /xe1/x79 <CJK>
+<U5AD9> /xe1/x7a <CJK>
+<U5AE8> /xe1/x7b <CJK>
+<U5ADF> /xe1/x7c <CJK>
+<U5B77> /xe1/x7d <CJK>
+<U5BE0> /xe1/x7e <CJK>
+<U5BE3> /xe1/xa1 <CJK>
+<U5C63> /xe1/xa2 <CJK>
+<U5D82> /xe1/xa3 <CJK>
+<U5D80> /xe1/xa4 <CJK>
+<U5D7D> /xe1/xa5 <CJK>
+<U5D86> /xe1/xa6 <CJK>
+<U5D7A> /xe1/xa7 <CJK>
+<U5D81> /xe1/xa8 <CJK>
+<U5D77> /xe1/xa9 <CJK>
+<U5D8A> /xe1/xaa <CJK>
+<U5D89> /xe1/xab <CJK>
+<U5D88> /xe1/xac <CJK>
+<U5D7E> /xe1/xad <CJK>
+<U5D7C> /xe1/xae <CJK>
+<U5D8D> /xe1/xaf <CJK>
+<U5D79> /xe1/xb0 <CJK>
+<U5D7F> /xe1/xb1 <CJK>
+<U5E58> /xe1/xb2 <CJK>
+<U5E59> /xe1/xb3 <CJK>
+<U5E53> /xe1/xb4 <CJK>
+<U5ED8> /xe1/xb5 <CJK>
+<U5ED1> /xe1/xb6 <CJK>
+<U5ED7> /xe1/xb7 <CJK>
+<U5ECE> /xe1/xb8 <CJK>
+<U5EDC> /xe1/xb9 <CJK>
+<U5ED5> /xe1/xba <CJK>
+<U5ED9> /xe1/xbb <CJK>
+<U5ED2> /xe1/xbc <CJK>
+<U5ED4> /xe1/xbd <CJK>
+<U5F44> /xe1/xbe <CJK>
+<U5F43> /xe1/xbf <CJK>
+<U5F6F> /xe1/xc0 <CJK>
+<U5FB6> /xe1/xc1 <CJK>
+<U612C> /xe1/xc2 <CJK>
+<U6128> /xe1/xc3 <CJK>
+<U6141> /xe1/xc4 <CJK>
+<U615E> /xe1/xc5 <CJK>
+<U6171> /xe1/xc6 <CJK>
+<U6173> /xe1/xc7 <CJK>
+<U6152> /xe1/xc8 <CJK>
+<U6153> /xe1/xc9 <CJK>
+<U6172> /xe1/xca <CJK>
+<U616C> /xe1/xcb <CJK>
+<U6180> /xe1/xcc <CJK>
+<U6174> /xe1/xcd <CJK>
+<U6154> /xe1/xce <CJK>
+<U617A> /xe1/xcf <CJK>
+<U615B> /xe1/xd0 <CJK>
+<U6165> /xe1/xd1 <CJK>
+<U613B> /xe1/xd2 <CJK>
+<U616A> /xe1/xd3 <CJK>
+<U6161> /xe1/xd4 <CJK>
+<U6156> /xe1/xd5 <CJK>
+<U6229> /xe1/xd6 <CJK>
+<U6227> /xe1/xd7 <CJK>
+<U622B> /xe1/xd8 <CJK>
+<U642B> /xe1/xd9 <CJK>
+<U644D> /xe1/xda <CJK>
+<U645B> /xe1/xdb <CJK>
+<U645D> /xe1/xdc <CJK>
+<U6474> /xe1/xdd <CJK>
+<U6476> /xe1/xde <CJK>
+<U6472> /xe1/xdf <CJK>
+<U6473> /xe1/xe0 <CJK>
+<U647D> /xe1/xe1 <CJK>
+<U6475> /xe1/xe2 <CJK>
+<U6466> /xe1/xe3 <CJK>
+<U64A6> /xe1/xe4 <CJK>
+<U644E> /xe1/xe5 <CJK>
+<U6482> /xe1/xe6 <CJK>
+<U645E> /xe1/xe7 <CJK>
+<U645C> /xe1/xe8 <CJK>
+<U644B> /xe1/xe9 <CJK>
+<U6453> /xe1/xea <CJK>
+<U6460> /xe1/xeb <CJK>
+<U6450> /xe1/xec <CJK>
+<U647F> /xe1/xed <CJK>
+<U643F> /xe1/xee <CJK>
+<U646C> /xe1/xef <CJK>
+<U646B> /xe1/xf0 <CJK>
+<U6459> /xe1/xf1 <CJK>
+<U6465> /xe1/xf2 <CJK>
+<U6477> /xe1/xf3 <CJK>
+<U6573> /xe1/xf4 <CJK>
+<U65A0> /xe1/xf5 <CJK>
+<U66A1> /xe1/xf6 <CJK>
+<U66A0> /xe1/xf7 <CJK>
+<U669F> /xe1/xf8 <CJK>
+<U6705> /xe1/xf9 <CJK>
+<U6704> /xe1/xfa <CJK>
+<U6722> /xe1/xfb <CJK>
+<U69B1> /xe1/xfc <CJK>
+<U69B6> /xe1/xfd <CJK>
+<U69C9> /xe1/xfe <CJK>
+<U69A0> /xe2/x40 <CJK>
+<U69CE> /xe2/x41 <CJK>
+<U6996> /xe2/x42 <CJK>
+<U69B0> /xe2/x43 <CJK>
+<U69AC> /xe2/x44 <CJK>
+<U69BC> /xe2/x45 <CJK>
+<U6991> /xe2/x46 <CJK>
+<U6999> /xe2/x47 <CJK>
+<U698E> /xe2/x48 <CJK>
+<U69A7> /xe2/x49 <CJK>
+<U698D> /xe2/x4a <CJK>
+<U69A9> /xe2/x4b <CJK>
+<U69BE> /xe2/x4c <CJK>
+<U69AF> /xe2/x4d <CJK>
+<U69BF> /xe2/x4e <CJK>
+<U69C4> /xe2/x4f <CJK>
+<U69BD> /xe2/x50 <CJK>
+<U69A4> /xe2/x51 <CJK>
+<U69D4> /xe2/x52 <CJK>
+<U69B9> /xe2/x53 <CJK>
+<U69CA> /xe2/x54 <CJK>
+<U699A> /xe2/x55 <CJK>
+<U69CF> /xe2/x56 <CJK>
+<U69B3> /xe2/x57 <CJK>
+<U6993> /xe2/x58 <CJK>
+<U69AA> /xe2/x59 <CJK>
+<U69A1> /xe2/x5a <CJK>
+<U699E> /xe2/x5b <CJK>
+<U69D9> /xe2/x5c <CJK>
+<U6997> /xe2/x5d <CJK>
+<U6990> /xe2/x5e <CJK>
+<U69C2> /xe2/x5f <CJK>
+<U69B5> /xe2/x60 <CJK>
+<U69A5> /xe2/x61 <CJK>
+<U69C6> /xe2/x62 <CJK>
+<U6B4A> /xe2/x63 <CJK>
+<U6B4D> /xe2/x64 <CJK>
+<U6B4B> /xe2/x65 <CJK>
+<U6B9E> /xe2/x66 <CJK>
+<U6B9F> /xe2/x67 <CJK>
+<U6BA0> /xe2/x68 <CJK>
+<U6BC3> /xe2/x69 <CJK>
+<U6BC4> /xe2/x6a <CJK>
+<U6BFE> /xe2/x6b <CJK>
+<U6ECE> /xe2/x6c <CJK>
+<U6EF5> /xe2/x6d <CJK>
+<U6EF1> /xe2/x6e <CJK>
+<U6F03> /xe2/x6f <CJK>
+<U6F25> /xe2/x70 <CJK>
+<U6EF8> /xe2/x71 <CJK>
+<U6F37> /xe2/x72 <CJK>
+<U6EFB> /xe2/x73 <CJK>
+<U6F2E> /xe2/x74 <CJK>
+<U6F09> /xe2/x75 <CJK>
+<U6F4E> /xe2/x76 <CJK>
+<U6F19> /xe2/x77 <CJK>
+<U6F1A> /xe2/x78 <CJK>
+<U6F27> /xe2/x79 <CJK>
+<U6F18> /xe2/x7a <CJK>
+<U6F3B> /xe2/x7b <CJK>
+<U6F12> /xe2/x7c <CJK>
+<U6EED> /xe2/x7d <CJK>
+<U6F0A> /xe2/x7e <CJK>
+<U6F36> /xe2/xa1 <CJK>
+<U6F73> /xe2/xa2 <CJK>
+<U6EF9> /xe2/xa3 <CJK>
+<U6EEE> /xe2/xa4 <CJK>
+<U6F2D> /xe2/xa5 <CJK>
+<U6F40> /xe2/xa6 <CJK>
+<U6F30> /xe2/xa7 <CJK>
+<U6F3C> /xe2/xa8 <CJK>
+<U6F35> /xe2/xa9 <CJK>
+<U6EEB> /xe2/xaa <CJK>
+<U6F07> /xe2/xab <CJK>
+<U6F0E> /xe2/xac <CJK>
+<U6F43> /xe2/xad <CJK>
+<U6F05> /xe2/xae <CJK>
+<U6EFD> /xe2/xaf <CJK>
+<U6EF6> /xe2/xb0 <CJK>
+<U6F39> /xe2/xb1 <CJK>
+<U6F1C> /xe2/xb2 <CJK>
+<U6EFC> /xe2/xb3 <CJK>
+<U6F3A> /xe2/xb4 <CJK>
+<U6F1F> /xe2/xb5 <CJK>
+<U6F0D> /xe2/xb6 <CJK>
+<U6F1E> /xe2/xb7 <CJK>
+<U6F08> /xe2/xb8 <CJK>
+<U6F21> /xe2/xb9 <CJK>
+<U7187> /xe2/xba <CJK>
+<U7190> /xe2/xbb <CJK>
+<U7189> /xe2/xbc <CJK>
+<U7180> /xe2/xbd <CJK>
+<U7185> /xe2/xbe <CJK>
+<U7182> /xe2/xbf <CJK>
+<U718F> /xe2/xc0 <CJK>
+<U717B> /xe2/xc1 <CJK>
+<U7186> /xe2/xc2 <CJK>
+<U7181> /xe2/xc3 <CJK>
+<U7197> /xe2/xc4 <CJK>
+<U7244> /xe2/xc5 <CJK>
+<U7253> /xe2/xc6 <CJK>
+<U7297> /xe2/xc7 <CJK>
+<U7295> /xe2/xc8 <CJK>
+<U7293> /xe2/xc9 <CJK>
+<U7343> /xe2/xca <CJK>
+<U734D> /xe2/xcb <CJK>
+<U7351> /xe2/xcc <CJK>
+<U734C> /xe2/xcd <CJK>
+<U7462> /xe2/xce <CJK>
+<U7473> /xe2/xcf <CJK>
+<U7471> /xe2/xd0 <CJK>
+<U7475> /xe2/xd1 <CJK>
+<U7472> /xe2/xd2 <CJK>
+<U7467> /xe2/xd3 <CJK>
+<U746E> /xe2/xd4 <CJK>
+<U7500> /xe2/xd5 <CJK>
+<U7502> /xe2/xd6 <CJK>
+<U7503> /xe2/xd7 <CJK>
+<U757D> /xe2/xd8 <CJK>
+<U7590> /xe2/xd9 <CJK>
+<U7616> /xe2/xda <CJK>
+<U7608> /xe2/xdb <CJK>
+<U760C> /xe2/xdc <CJK>
+<U7615> /xe2/xdd <CJK>
+<U7611> /xe2/xde <CJK>
+<U760A> /xe2/xdf <CJK>
+<U7614> /xe2/xe0 <CJK>
+<U76B8> /xe2/xe1 <CJK>
+<U7781> /xe2/xe2 <CJK>
+<U777C> /xe2/xe3 <CJK>
+<U7785> /xe2/xe4 <CJK>
+<U7782> /xe2/xe5 <CJK>
+<U776E> /xe2/xe6 <CJK>
+<U7780> /xe2/xe7 <CJK>
+<U776F> /xe2/xe8 <CJK>
+<U777E> /xe2/xe9 <CJK>
+<U7783> /xe2/xea <CJK>
+<U78B2> /xe2/xeb <CJK>
+<U78AA> /xe2/xec <CJK>
+<U78B4> /xe2/xed <CJK>
+<U78AD> /xe2/xee <CJK>
+<U78A8> /xe2/xef <CJK>
+<U787E> /xe2/xf0 <CJK>
+<U78AB> /xe2/xf1 <CJK>
+<U789E> /xe2/xf2 <CJK>
+<U78A5> /xe2/xf3 <CJK>
+<U78A0> /xe2/xf4 <CJK>
+<U78AC> /xe2/xf5 <CJK>
+<U78A2> /xe2/xf6 <CJK>
+<U78A4> /xe2/xf7 <CJK>
+<U7998> /xe2/xf8 <CJK>
+<U798A> /xe2/xf9 <CJK>
+<U798B> /xe2/xfa <CJK>
+<U7996> /xe2/xfb <CJK>
+<U7995> /xe2/xfc <CJK>
+<U7994> /xe2/xfd <CJK>
+<U7993> /xe2/xfe <CJK>
+<U7997> /xe3/x40 <CJK>
+<U7988> /xe3/x41 <CJK>
+<U7992> /xe3/x42 <CJK>
+<U7990> /xe3/x43 <CJK>
+<U7A2B> /xe3/x44 <CJK>
+<U7A4A> /xe3/x45 <CJK>
+<U7A30> /xe3/x46 <CJK>
+<U7A2F> /xe3/x47 <CJK>
+<U7A28> /xe3/x48 <CJK>
+<U7A26> /xe3/x49 <CJK>
+<U7AA8> /xe3/x4a <CJK>
+<U7AAB> /xe3/x4b <CJK>
+<U7AAC> /xe3/x4c <CJK>
+<U7AEE> /xe3/x4d <CJK>
+<U7B88> /xe3/x4e <CJK>
+<U7B9C> /xe3/x4f <CJK>
+<U7B8A> /xe3/x50 <CJK>
+<U7B91> /xe3/x51 <CJK>
+<U7B90> /xe3/x52 <CJK>
+<U7B96> /xe3/x53 <CJK>
+<U7B8D> /xe3/x54 <CJK>
+<U7B8C> /xe3/x55 <CJK>
+<U7B9B> /xe3/x56 <CJK>
+<U7B8E> /xe3/x57 <CJK>
+<U7B85> /xe3/x58 <CJK>
+<U7B98> /xe3/x59 <CJK>
+<U5284> /xe3/x5a <CJK>
+<U7B99> /xe3/x5b <CJK>
+<U7BA4> /xe3/x5c <CJK>
+<U7B82> /xe3/x5d <CJK>
+<U7CBB> /xe3/x5e <CJK>
+<U7CBF> /xe3/x5f <CJK>
+<U7CBC> /xe3/x60 <CJK>
+<U7CBA> /xe3/x61 <CJK>
+<U7DA7> /xe3/x62 <CJK>
+<U7DB7> /xe3/x63 <CJK>
+<U7DC2> /xe3/x64 <CJK>
+<U7DA3> /xe3/x65 <CJK>
+<U7DAA> /xe3/x66 <CJK>
+<U7DC1> /xe3/x67 <CJK>
+<U7DC0> /xe3/x68 <CJK>
+<U7DC5> /xe3/x69 <CJK>
+<U7D9D> /xe3/x6a <CJK>
+<U7DCE> /xe3/x6b <CJK>
+<U7DC4> /xe3/x6c <CJK>
+<U7DC6> /xe3/x6d <CJK>
+<U7DCB> /xe3/x6e <CJK>
+<U7DCC> /xe3/x6f <CJK>
+<U7DAF> /xe3/x70 <CJK>
+<U7DB9> /xe3/x71 <CJK>
+<U7D96> /xe3/x72 <CJK>
+<U7DBC> /xe3/x73 <CJK>
+<U7D9F> /xe3/x74 <CJK>
+<U7DA6> /xe3/x75 <CJK>
+<U7DAE> /xe3/x76 <CJK>
+<U7DA9> /xe3/x77 <CJK>
+<U7DA1> /xe3/x78 <CJK>
+<U7DC9> /xe3/x79 <CJK>
+<U7F73> /xe3/x7a <CJK>
+<U7FE2> /xe3/x7b <CJK>
+<U7FE3> /xe3/x7c <CJK>
+<U7FE5> /xe3/x7d <CJK>
+<U7FDE> /xe3/x7e <CJK>
+<U8024> /xe3/xa1 <CJK>
+<U805D> /xe3/xa2 <CJK>
+<U805C> /xe3/xa3 <CJK>
+<U8189> /xe3/xa4 <CJK>
+<U8186> /xe3/xa5 <CJK>
+<U8183> /xe3/xa6 <CJK>
+<U8187> /xe3/xa7 <CJK>
+<U818D> /xe3/xa8 <CJK>
+<U818C> /xe3/xa9 <CJK>
+<U818B> /xe3/xaa <CJK>
+<U8215> /xe3/xab <CJK>
+<U8497> /xe3/xac <CJK>
+<U84A4> /xe3/xad <CJK>
+<U84A1> /xe3/xae <CJK>
+<U849F> /xe3/xaf <CJK>
+<U84BA> /xe3/xb0 <CJK>
+<U84CE> /xe3/xb1 <CJK>
+<U84C2> /xe3/xb2 <CJK>
+<U84AC> /xe3/xb3 <CJK>
+<U84AE> /xe3/xb4 <CJK>
+<U84AB> /xe3/xb5 <CJK>
+<U84B9> /xe3/xb6 <CJK>
+<U84B4> /xe3/xb7 <CJK>
+<U84C1> /xe3/xb8 <CJK>
+<U84CD> /xe3/xb9 <CJK>
+<U84AA> /xe3/xba <CJK>
+<U849A> /xe3/xbb <CJK>
+<U84B1> /xe3/xbc <CJK>
+<U84D0> /xe3/xbd <CJK>
+<U849D> /xe3/xbe <CJK>
+<U84A7> /xe3/xbf <CJK>
+<U84BB> /xe3/xc0 <CJK>
+<U84A2> /xe3/xc1 <CJK>
+<U8494> /xe3/xc2 <CJK>
+<U84C7> /xe3/xc3 <CJK>
+<U84CC> /xe3/xc4 <CJK>
+<U849B> /xe3/xc5 <CJK>
+<U84A9> /xe3/xc6 <CJK>
+<U84AF> /xe3/xc7 <CJK>
+<U84A8> /xe3/xc8 <CJK>
+<U84D6> /xe3/xc9 <CJK>
+<U8498> /xe3/xca <CJK>
+<U84B6> /xe3/xcb <CJK>
+<U84CF> /xe3/xcc <CJK>
+<U84A0> /xe3/xcd <CJK>
+<U84D7> /xe3/xce <CJK>
+<U84D4> /xe3/xcf <CJK>
+<U84D2> /xe3/xd0 <CJK>
+<U84DB> /xe3/xd1 <CJK>
+<U84B0> /xe3/xd2 <CJK>
+<U8491> /xe3/xd3 <CJK>
+<U8661> /xe3/xd4 <CJK>
+<U8733> /xe3/xd5 <CJK>
+<U8723> /xe3/xd6 <CJK>
+<U8728> /xe3/xd7 <CJK>
+<U876B> /xe3/xd8 <CJK>
+<U8740> /xe3/xd9 <CJK>
+<U872E> /xe3/xda <CJK>
+<U871E> /xe3/xdb <CJK>
+<U8721> /xe3/xdc <CJK>
+<U8719> /xe3/xdd <CJK>
+<U871B> /xe3/xde <CJK>
+<U8743> /xe3/xdf <CJK>
+<U872C> /xe3/xe0 <CJK>
+<U8741> /xe3/xe1 <CJK>
+<U873E> /xe3/xe2 <CJK>
+<U8746> /xe3/xe3 <CJK>
+<U8720> /xe3/xe4 <CJK>
+<U8732> /xe3/xe5 <CJK>
+<U872A> /xe3/xe6 <CJK>
+<U872D> /xe3/xe7 <CJK>
+<U873C> /xe3/xe8 <CJK>
+<U8712> /xe3/xe9 <CJK>
+<U873A> /xe3/xea <CJK>
+<U8731> /xe3/xeb <CJK>
+<U8735> /xe3/xec <CJK>
+<U8742> /xe3/xed <CJK>
+<U8726> /xe3/xee <CJK>
+<U8727> /xe3/xef <CJK>
+<U8738> /xe3/xf0 <CJK>
+<U8724> /xe3/xf1 <CJK>
+<U871A> /xe3/xf2 <CJK>
+<U8730> /xe3/xf3 <CJK>
+<U8711> /xe3/xf4 <CJK>
+<U88F7> /xe3/xf5 <CJK>
+<U88E7> /xe3/xf6 <CJK>
+<U88F1> /xe3/xf7 <CJK>
+<U88F2> /xe3/xf8 <CJK>
+<U88FA> /xe3/xf9 <CJK>
+<U88FE> /xe3/xfa <CJK>
+<U88EE> /xe3/xfb <CJK>
+<U88FC> /xe3/xfc <CJK>
+<U88F6> /xe3/xfd <CJK>
+<U88FB> /xe3/xfe <CJK>
+<U88F0> /xe4/x40 <CJK>
+<U88EC> /xe4/x41 <CJK>
+<U88EB> /xe4/x42 <CJK>
+<U899D> /xe4/x43 <CJK>
+<U89A1> /xe4/x44 <CJK>
+<U899F> /xe4/x45 <CJK>
+<U899E> /xe4/x46 <CJK>
+<U89E9> /xe4/x47 <CJK>
+<U89EB> /xe4/x48 <CJK>
+<U89E8> /xe4/x49 <CJK>
+<U8AAB> /xe4/x4a <CJK>
+<U8A99> /xe4/x4b <CJK>
+<U8A8B> /xe4/x4c <CJK>
+<U8A92> /xe4/x4d <CJK>
+<U8A8F> /xe4/x4e <CJK>
+<U8A96> /xe4/x4f <CJK>
+<U8C3D> /xe4/x50 <CJK>
+<U8C68> /xe4/x51 <CJK>
+<U8C69> /xe4/x52 <CJK>
+<U8CD5> /xe4/x53 <CJK>
+<U8CCF> /xe4/x54 <CJK>
+<U8CD7> /xe4/x55 <CJK>
+<U8D96> /xe4/x56 <CJK>
+<U8E09> /xe4/x57 <CJK>
+<U8E02> /xe4/x58 <CJK>
+<U8DFF> /xe4/x59 <CJK>
+<U8E0D> /xe4/x5a <CJK>
+<U8DFD> /xe4/x5b <CJK>
+<U8E0A> /xe4/x5c <CJK>
+<U8E03> /xe4/x5d <CJK>
+<U8E07> /xe4/x5e <CJK>
+<U8E06> /xe4/x5f <CJK>
+<U8E05> /xe4/x60 <CJK>
+<U8DFE> /xe4/x61 <CJK>
+<U8E00> /xe4/x62 <CJK>
+<U8E04> /xe4/x63 <CJK>
+<U8F10> /xe4/x64 <CJK>
+<U8F11> /xe4/x65 <CJK>
+<U8F0E> /xe4/x66 <CJK>
+<U8F0D> /xe4/x67 <CJK>
+<U9123> /xe4/x68 <CJK>
+<U911C> /xe4/x69 <CJK>
+<U9120> /xe4/x6a <CJK>
+<U9122> /xe4/x6b <CJK>
+<U911F> /xe4/x6c <CJK>
+<U911D> /xe4/x6d <CJK>
+<U911A> /xe4/x6e <CJK>
+<U9124> /xe4/x6f <CJK>
+<U9121> /xe4/x70 <CJK>
+<U911B> /xe4/x71 <CJK>
+<U917A> /xe4/x72 <CJK>
+<U9172> /xe4/x73 <CJK>
+<U9179> /xe4/x74 <CJK>
+<U9173> /xe4/x75 <CJK>
+<U92A5> /xe4/x76 <CJK>
+<U92A4> /xe4/x77 <CJK>
+<U9276> /xe4/x78 <CJK>
+<U929B> /xe4/x79 <CJK>
+<U927A> /xe4/x7a <CJK>
+<U92A0> /xe4/x7b <CJK>
+<U9294> /xe4/x7c <CJK>
+<U92AA> /xe4/x7d <CJK>
+<U928D> /xe4/x7e <CJK>
+<U92A6> /xe4/xa1 <CJK>
+<U929A> /xe4/xa2 <CJK>
+<U92AB> /xe4/xa3 <CJK>
+<U9279> /xe4/xa4 <CJK>
+<U9297> /xe4/xa5 <CJK>
+<U927F> /xe4/xa6 <CJK>
+<U92A3> /xe4/xa7 <CJK>
+<U92EE> /xe4/xa8 <CJK>
+<U928E> /xe4/xa9 <CJK>
+<U9282> /xe4/xaa <CJK>
+<U9295> /xe4/xab <CJK>
+<U92A2> /xe4/xac <CJK>
+<U927D> /xe4/xad <CJK>
+<U9288> /xe4/xae <CJK>
+<U92A1> /xe4/xaf <CJK>
+<U928A> /xe4/xb0 <CJK>
+<U9286> /xe4/xb1 <CJK>
+<U928C> /xe4/xb2 <CJK>
+<U9299> /xe4/xb3 <CJK>
+<U92A7> /xe4/xb4 <CJK>
+<U927E> /xe4/xb5 <CJK>
+<U9287> /xe4/xb6 <CJK>
+<U92A9> /xe4/xb7 <CJK>
+<U929D> /xe4/xb8 <CJK>
+<U928B> /xe4/xb9 <CJK>
+<U922D> /xe4/xba <CJK>
+<U969E> /xe4/xbb <CJK>
+<U96A1> /xe4/xbc <CJK>
+<U96FF> /xe4/xbd <CJK>
+<U9758> /xe4/xbe <CJK>
+<U977D> /xe4/xbf <CJK>
+<U977A> /xe4/xc0 <CJK>
+<U977E> /xe4/xc1 <CJK>
+<U9783> /xe4/xc2 <CJK>
+<U9780> /xe4/xc3 <CJK>
+<U9782> /xe4/xc4 <CJK>
+<U977B> /xe4/xc5 <CJK>
+<U9784> /xe4/xc6 <CJK>
+<U9781> /xe4/xc7 <CJK>
+<U977F> /xe4/xc8 <CJK>
+<U97CE> /xe4/xc9 <CJK>
+<U97CD> /xe4/xca <CJK>
+<U9816> /xe4/xcb <CJK>
+<U98AD> /xe4/xcc <CJK>
+<U98AE> /xe4/xcd <CJK>
+<U9902> /xe4/xce <CJK>
+<U9900> /xe4/xcf <CJK>
+<U9907> /xe4/xd0 <CJK>
+<U999D> /xe4/xd1 <CJK>
+<U999C> /xe4/xd2 <CJK>
+<U99C3> /xe4/xd3 <CJK>
+<U99B9> /xe4/xd4 <CJK>
+<U99BB> /xe4/xd5 <CJK>
+<U99BA> /xe4/xd6 <CJK>
+<U99C2> /xe4/xd7 <CJK>
+<U99BD> /xe4/xd8 <CJK>
+<U99C7> /xe4/xd9 <CJK>
+<U9AB1> /xe4/xda <CJK>
+<U9AE3> /xe4/xdb <CJK>
+<U9AE7> /xe4/xdc <CJK>
+<U9B3E> /xe4/xdd <CJK>
+<U9B3F> /xe4/xde <CJK>
+<U9B60> /xe4/xdf <CJK>
+<U9B61> /xe4/xe0 <CJK>
+<U9B5F> /xe4/xe1 <CJK>
+<U9CF1> /xe4/xe2 <CJK>
+<U9CF2> /xe4/xe3 <CJK>
+<U9CF5> /xe4/xe4 <CJK>
+<U9EA7> /xe4/xe5 <CJK>
+<U50FF> /xe4/xe6 <CJK>
+<U5103> /xe4/xe7 <CJK>
+<U5130> /xe4/xe8 <CJK>
+<U50F8> /xe4/xe9 <CJK>
+<U5106> /xe4/xea <CJK>
+<U5107> /xe4/xeb <CJK>
+<U50F6> /xe4/xec <CJK>
+<U50FE> /xe4/xed <CJK>
+<U510B> /xe4/xee <CJK>
+<U510C> /xe4/xef <CJK>
+<U50FD> /xe4/xf0 <CJK>
+<U510A> /xe4/xf1 <CJK>
+<U528B> /xe4/xf2 <CJK>
+<U528C> /xe4/xf3 <CJK>
+<U52F1> /xe4/xf4 <CJK>
+<U52EF> /xe4/xf5 <CJK>
+<U5648> /xe4/xf6 <CJK>
+<U5642> /xe4/xf7 <CJK>
+<U564C> /xe4/xf8 <CJK>
+<U5635> /xe4/xf9 <CJK>
+<U5641> /xe4/xfa <CJK>
+<U564A> /xe4/xfb <CJK>
+<U5649> /xe4/xfc <CJK>
+<U5646> /xe4/xfd <CJK>
+<U5658> /xe4/xfe <CJK>
+<U565A> /xe5/x40 <CJK>
+<U5640> /xe5/x41 <CJK>
+<U5633> /xe5/x42 <CJK>
+<U563D> /xe5/x43 <CJK>
+<U562C> /xe5/x44 <CJK>
+<U563E> /xe5/x45 <CJK>
+<U5638> /xe5/x46 <CJK>
+<U562A> /xe5/x47 <CJK>
+<U563A> /xe5/x48 <CJK>
+<U571A> /xe5/x49 <CJK>
+<U58AB> /xe5/x4a <CJK>
+<U589D> /xe5/x4b <CJK>
+<U58B1> /xe5/x4c <CJK>
+<U58A0> /xe5/x4d <CJK>
+<U58A3> /xe5/x4e <CJK>
+<U58AF> /xe5/x4f <CJK>
+<U58AC> /xe5/x50 <CJK>
+<U58A5> /xe5/x51 <CJK>
+<U58A1> /xe5/x52 <CJK>
+<U58FF> /xe5/x53 <CJK>
+<U5AFF> /xe5/x54 <CJK>
+<U5AF4> /xe5/x55 <CJK>
+<U5AFD> /xe5/x56 <CJK>
+<U5AF7> /xe5/x57 <CJK>
+<U5AF6> /xe5/x58 <CJK>
+<U5B03> /xe5/x59 <CJK>
+<U5AF8> /xe5/x5a <CJK>
+<U5B02> /xe5/x5b <CJK>
+<U5AF9> /xe5/x5c <CJK>
+<U5B01> /xe5/x5d <CJK>
+<U5B07> /xe5/x5e <CJK>
+<U5B05> /xe5/x5f <CJK>
+<U5B0F> /xe5/x60 <CJK>
+<U5C67> /xe5/x61 <CJK>
+<U5D99> /xe5/x62 <CJK>
+<U5D97> /xe5/x63 <CJK>
+<U5D9F> /xe5/x64 <CJK>
+<U5D92> /xe5/x65 <CJK>
+<U5DA2> /xe5/x66 <CJK>
+<U5D93> /xe5/x67 <CJK>
+<U5D95> /xe5/x68 <CJK>
+<U5DA0> /xe5/x69 <CJK>
+<U5D9C> /xe5/x6a <CJK>
+<U5DA1> /xe5/x6b <CJK>
+<U5D9A> /xe5/x6c <CJK>
+<U5D9E> /xe5/x6d <CJK>
+<U5E69> /xe5/x6e <CJK>
+<U5E5D> /xe5/x6f <CJK>
+<U5E60> /xe5/x70 <CJK>
+<U5E5C> /xe5/x71 <CJK>
+<U7DF3> /xe5/x72 <CJK>
+<U5EDB> /xe5/x73 <CJK>
+<U5EDE> /xe5/x74 <CJK>
+<U5EE1> /xe5/x75 <CJK>
+<U5F49> /xe5/x76 <CJK>
+<U5FB2> /xe5/x77 <CJK>
+<U618B> /xe5/x78 <CJK>
+<U6183> /xe5/x79 <CJK>
+<U6179> /xe5/x7a <CJK>
+<U61B1> /xe5/x7b <CJK>
+<U61B0> /xe5/x7c <CJK>
+<U61A2> /xe5/x7d <CJK>
+<U6189> /xe5/x7e <CJK>
+<U619B> /xe5/xa1 <CJK>
+<U6193> /xe5/xa2 <CJK>
+<U61AF> /xe5/xa3 <CJK>
+<U61AD> /xe5/xa4 <CJK>
+<U619F> /xe5/xa5 <CJK>
+<U6192> /xe5/xa6 <CJK>
+<U61AA> /xe5/xa7 <CJK>
+<U61A1> /xe5/xa8 <CJK>
+<U618D> /xe5/xa9 <CJK>
+<U6166> /xe5/xaa <CJK>
+<U61B3> /xe5/xab <CJK>
+<U622D> /xe5/xac <CJK>
+<U646E> /xe5/xad <CJK>
+<U6470> /xe5/xae <CJK>
+<U6496> /xe5/xaf <CJK>
+<U64A0> /xe5/xb0 <CJK>
+<U6485> /xe5/xb1 <CJK>
+<U6497> /xe5/xb2 <CJK>
+<U649C> /xe5/xb3 <CJK>
+<U648F> /xe5/xb4 <CJK>
+<U648B> /xe5/xb5 <CJK>
+<U648A> /xe5/xb6 <CJK>
+<U648C> /xe5/xb7 <CJK>
+<U64A3> /xe5/xb8 <CJK>
+<U649F> /xe5/xb9 <CJK>
+<U6468> /xe5/xba <CJK>
+<U64B1> /xe5/xbb <CJK>
+<U6498> /xe5/xbc <CJK>
+<U6576> /xe5/xbd <CJK>
+<U657A> /xe5/xbe <CJK>
+<U6579> /xe5/xbf <CJK>
+<U657B> /xe5/xc0 <CJK>
+<U65B2> /xe5/xc1 <CJK>
+<U65B3> /xe5/xc2 <CJK>
+<U66B5> /xe5/xc3 <CJK>
+<U66B0> /xe5/xc4 <CJK>
+<U66A9> /xe5/xc5 <CJK>
+<U66B2> /xe5/xc6 <CJK>
+<U66B7> /xe5/xc7 <CJK>
+<U66AA> /xe5/xc8 <CJK>
+<U66AF> /xe5/xc9 <CJK>
+<U6A00> /xe5/xca <CJK>
+<U6A06> /xe5/xcb <CJK>
+<U6A17> /xe5/xcc <CJK>
+<U69E5> /xe5/xcd <CJK>
+<U69F8> /xe5/xce <CJK>
+<U6A15> /xe5/xcf <CJK>
+<U69F1> /xe5/xd0 <CJK>
+<U69E4> /xe5/xd1 <CJK>
+<U6A20> /xe5/xd2 <CJK>
+<U69FF> /xe5/xd3 <CJK>
+<U69EC> /xe5/xd4 <CJK>
+<U69E2> /xe5/xd5 <CJK>
+<U6A1B> /xe5/xd6 <CJK>
+<U6A1D> /xe5/xd7 <CJK>
+<U69FE> /xe5/xd8 <CJK>
+<U6A27> /xe5/xd9 <CJK>
+<U69F2> /xe5/xda <CJK>
+<U69EE> /xe5/xdb <CJK>
+<U6A14> /xe5/xdc <CJK>
+<U69F7> /xe5/xdd <CJK>
+<U69E7> /xe5/xde <CJK>
+<U6A40> /xe5/xdf <CJK>
+<U6A08> /xe5/xe0 <CJK>
+<U69E6> /xe5/xe1 <CJK>
+<U69FB> /xe5/xe2 <CJK>
+<U6A0D> /xe5/xe3 <CJK>
+<U69FC> /xe5/xe4 <CJK>
+<U69EB> /xe5/xe5 <CJK>
+<U6A09> /xe5/xe6 <CJK>
+<U6A04> /xe5/xe7 <CJK>
+<U6A18> /xe5/xe8 <CJK>
+<U6A25> /xe5/xe9 <CJK>
+<U6A0F> /xe5/xea <CJK>
+<U69F6> /xe5/xeb <CJK>
+<U6A26> /xe5/xec <CJK>
+<U6A07> /xe5/xed <CJK>
+<U69F4> /xe5/xee <CJK>
+<U6A16> /xe5/xef <CJK>
+<U6B51> /xe5/xf0 <CJK>
+<U6BA5> /xe5/xf1 <CJK>
+<U6BA3> /xe5/xf2 <CJK>
+<U6BA2> /xe5/xf3 <CJK>
+<U6BA6> /xe5/xf4 <CJK>
+<U6C01> /xe5/xf5 <CJK>
+<U6C00> /xe5/xf6 <CJK>
+<U6BFF> /xe5/xf7 <CJK>
+<U6C02> /xe5/xf8 <CJK>
+<U6F41> /xe5/xf9 <CJK>
+<U6F26> /xe5/xfa <CJK>
+<U6F7E> /xe5/xfb <CJK>
+<U6F87> /xe5/xfc <CJK>
+<U6FC6> /xe5/xfd <CJK>
+<U6F92> /xe5/xfe <CJK>
+<U6F8D> /xe6/x40 <CJK>
+<U6F89> /xe6/x41 <CJK>
+<U6F8C> /xe6/x42 <CJK>
+<U6F62> /xe6/x43 <CJK>
+<U6F4F> /xe6/x44 <CJK>
+<U6F85> /xe6/x45 <CJK>
+<U6F5A> /xe6/x46 <CJK>
+<U6F96> /xe6/x47 <CJK>
+<U6F76> /xe6/x48 <CJK>
+<U6F6C> /xe6/x49 <CJK>
+<U6F82> /xe6/x4a <CJK>
+<U6F55> /xe6/x4b <CJK>
+<U6F72> /xe6/x4c <CJK>
+<U6F52> /xe6/x4d <CJK>
+<U6F50> /xe6/x4e <CJK>
+<U6F57> /xe6/x4f <CJK>
+<U6F94> /xe6/x50 <CJK>
+<U6F93> /xe6/x51 <CJK>
+<U6F5D> /xe6/x52 <CJK>
+<U6F00> /xe6/x53 <CJK>
+<U6F61> /xe6/x54 <CJK>
+<U6F6B> /xe6/x55 <CJK>
+<U6F7D> /xe6/x56 <CJK>
+<U6F67> /xe6/x57 <CJK>
+<U6F90> /xe6/x58 <CJK>
+<U6F53> /xe6/x59 <CJK>
+<U6F8B> /xe6/x5a <CJK>
+<U6F69> /xe6/x5b <CJK>
+<U6F7F> /xe6/x5c <CJK>
+<U6F95> /xe6/x5d <CJK>
+<U6F63> /xe6/x5e <CJK>
+<U6F77> /xe6/x5f <CJK>
+<U6F6A> /xe6/x60 <CJK>
+<U6F7B> /xe6/x61 <CJK>
+<U71B2> /xe6/x62 <CJK>
+<U71AF> /xe6/x63 <CJK>
+<U719B> /xe6/x64 <CJK>
+<U71B0> /xe6/x65 <CJK>
+<U71A0> /xe6/x66 <CJK>
+<U719A> /xe6/x67 <CJK>
+<U71A9> /xe6/x68 <CJK>
+<U71B5> /xe6/x69 <CJK>
+<U719D> /xe6/x6a <CJK>
+<U71A5> /xe6/x6b <CJK>
+<U719E> /xe6/x6c <CJK>
+<U71A4> /xe6/x6d <CJK>
+<U71A1> /xe6/x6e <CJK>
+<U71AA> /xe6/x6f <CJK>
+<U719C> /xe6/x70 <CJK>
+<U71A7> /xe6/x71 <CJK>
+<U71B3> /xe6/x72 <CJK>
+<U7298> /xe6/x73 <CJK>
+<U729A> /xe6/x74 <CJK>
+<U7358> /xe6/x75 <CJK>
+<U7352> /xe6/x76 <CJK>
+<U735E> /xe6/x77 <CJK>
+<U735F> /xe6/x78 <CJK>
+<U7360> /xe6/x79 <CJK>
+<U735D> /xe6/x7a <CJK>
+<U735B> /xe6/x7b <CJK>
+<U7361> /xe6/x7c <CJK>
+<U735A> /xe6/x7d <CJK>
+<U7359> /xe6/x7e <CJK>
+<U7362> /xe6/xa1 <CJK>
+<U7487> /xe6/xa2 <CJK>
+<U7489> /xe6/xa3 <CJK>
+<U748A> /xe6/xa4 <CJK>
+<U7486> /xe6/xa5 <CJK>
+<U7481> /xe6/xa6 <CJK>
+<U747D> /xe6/xa7 <CJK>
+<U7485> /xe6/xa8 <CJK>
+<U7488> /xe6/xa9 <CJK>
+<U747C> /xe6/xaa <CJK>
+<U7479> /xe6/xab <CJK>
+<U7508> /xe6/xac <CJK>
+<U7507> /xe6/xad <CJK>
+<U757E> /xe6/xae <CJK>
+<U7625> /xe6/xaf <CJK>
+<U761E> /xe6/xb0 <CJK>
+<U7619> /xe6/xb1 <CJK>
+<U761D> /xe6/xb2 <CJK>
+<U761C> /xe6/xb3 <CJK>
+<U7623> /xe6/xb4 <CJK>
+<U761A> /xe6/xb5 <CJK>
+<U7628> /xe6/xb6 <CJK>
+<U761B> /xe6/xb7 <CJK>
+<U769C> /xe6/xb8 <CJK>
+<U769D> /xe6/xb9 <CJK>
+<U769E> /xe6/xba <CJK>
+<U769B> /xe6/xbb <CJK>
+<U778D> /xe6/xbc <CJK>
+<U778F> /xe6/xbd <CJK>
+<U7789> /xe6/xbe <CJK>
+<U7788> /xe6/xbf <CJK>
+<U78CD> /xe6/xc0 <CJK>
+<U78BB> /xe6/xc1 <CJK>
+<U78CF> /xe6/xc2 <CJK>
+<U78CC> /xe6/xc3 <CJK>
+<U78D1> /xe6/xc4 <CJK>
+<U78CE> /xe6/xc5 <CJK>
+<U78D4> /xe6/xc6 <CJK>
+<U78C8> /xe6/xc7 <CJK>
+<U78C3> /xe6/xc8 <CJK>
+<U78C4> /xe6/xc9 <CJK>
+<U78C9> /xe6/xca <CJK>
+<U799A> /xe6/xcb <CJK>
+<U79A1> /xe6/xcc <CJK>
+<U79A0> /xe6/xcd <CJK>
+<U799C> /xe6/xce <CJK>
+<U79A2> /xe6/xcf <CJK>
+<U799B> /xe6/xd0 <CJK>
+<U6B76> /xe6/xd1 <CJK>
+<U7A39> /xe6/xd2 <CJK>
+<U7AB2> /xe6/xd3 <CJK>
+<U7AB4> /xe6/xd4 <CJK>
+<U7AB3> /xe6/xd5 <CJK>
+<U7BB7> /xe6/xd6 <CJK>
+<U7BCB> /xe6/xd7 <CJK>
+<U7BBE> /xe6/xd8 <CJK>
+<U7BAC> /xe6/xd9 <CJK>
+<U7BCE> /xe6/xda <CJK>
+<U7BAF> /xe6/xdb <CJK>
+<U7BB9> /xe6/xdc <CJK>
+<U7BCA> /xe6/xdd <CJK>
+<U7BB5> /xe6/xde <CJK>
+<U7CC5> /xe6/xdf <CJK>
+<U7CC8> /xe6/xe0 <CJK>
+<U7CCC> /xe6/xe1 <CJK>
+<U7CCB> /xe6/xe2 <CJK>
+<U7DF7> /xe6/xe3 <CJK>
+<U7DDB> /xe6/xe4 <CJK>
+<U7DEA> /xe6/xe5 <CJK>
+<U7DE7> /xe6/xe6 <CJK>
+<U7DD7> /xe6/xe7 <CJK>
+<U7DE1> /xe6/xe8 <CJK>
+<U7E03> /xe6/xe9 <CJK>
+<U7DFA> /xe6/xea <CJK>
+<U7DE6> /xe6/xeb <CJK>
+<U7DF6> /xe6/xec <CJK>
+<U7DF1> /xe6/xed <CJK>
+<U7DF0> /xe6/xee <CJK>
+<U7DEE> /xe6/xef <CJK>
+<U7DDF> /xe6/xf0 <CJK>
+<U7F76> /xe6/xf1 <CJK>
+<U7FAC> /xe6/xf2 <CJK>
+<U7FB0> /xe6/xf3 <CJK>
+<U7FAD> /xe6/xf4 <CJK>
+<U7FED> /xe6/xf5 <CJK>
+<U7FEB> /xe6/xf6 <CJK>
+<U7FEA> /xe6/xf7 <CJK>
+<U7FEC> /xe6/xf8 <CJK>
+<U7FE6> /xe6/xf9 <CJK>
+<U7FE8> /xe6/xfa <CJK>
+<U8064> /xe6/xfb <CJK>
+<U8067> /xe6/xfc <CJK>
+<U81A3> /xe6/xfd <CJK>
+<U819F> /xe6/xfe <CJK>
+<U819E> /xe7/x40 <CJK>
+<U8195> /xe7/x41 <CJK>
+<U81A2> /xe7/x42 <CJK>
+<U8199> /xe7/x43 <CJK>
+<U8197> /xe7/x44 <CJK>
+<U8216> /xe7/x45 <CJK>
+<U824F> /xe7/x46 <CJK>
+<U8253> /xe7/x47 <CJK>
+<U8252> /xe7/x48 <CJK>
+<U8250> /xe7/x49 <CJK>
+<U824E> /xe7/x4a <CJK>
+<U8251> /xe7/x4b <CJK>
+<U8524> /xe7/x4c <CJK>
+<U853B> /xe7/x4d <CJK>
+<U850F> /xe7/x4e <CJK>
+<U8500> /xe7/x4f <CJK>
+<U8529> /xe7/x50 <CJK>
+<U850E> /xe7/x51 <CJK>
+<U8509> /xe7/x52 <CJK>
+<U850D> /xe7/x53 <CJK>
+<U851F> /xe7/x54 <CJK>
+<U850A> /xe7/x55 <CJK>
+<U8527> /xe7/x56 <CJK>
+<U851C> /xe7/x57 <CJK>
+<U84FB> /xe7/x58 <CJK>
+<U852B> /xe7/x59 <CJK>
+<U84FA> /xe7/x5a <CJK>
+<U8508> /xe7/x5b <CJK>
+<U850C> /xe7/x5c <CJK>
+<U84F4> /xe7/x5d <CJK>
+<U852A> /xe7/x5e <CJK>
+<U84F2> /xe7/x5f <CJK>
+<U8515> /xe7/x60 <CJK>
+<U84F7> /xe7/x61 <CJK>
+<U84EB> /xe7/x62 <CJK>
+<U84F3> /xe7/x63 <CJK>
+<U84FC> /xe7/x64 <CJK>
+<U8512> /xe7/x65 <CJK>
+<U84EA> /xe7/x66 <CJK>
+<U84E9> /xe7/x67 <CJK>
+<U8516> /xe7/x68 <CJK>
+<U84FE> /xe7/x69 <CJK>
+<U8528> /xe7/x6a <CJK>
+<U851D> /xe7/x6b <CJK>
+<U852E> /xe7/x6c <CJK>
+<U8502> /xe7/x6d <CJK>
+<U84FD> /xe7/x6e <CJK>
+<U851E> /xe7/x6f <CJK>
+<U84F6> /xe7/x70 <CJK>
+<U8531> /xe7/x71 <CJK>
+<U8526> /xe7/x72 <CJK>
+<U84E7> /xe7/x73 <CJK>
+<U84E8> /xe7/x74 <CJK>
+<U84F0> /xe7/x75 <CJK>
+<U84EF> /xe7/x76 <CJK>
+<U84F9> /xe7/x77 <CJK>
+<U8518> /xe7/x78 <CJK>
+<U8520> /xe7/x79 <CJK>
+<U8530> /xe7/x7a <CJK>
+<U850B> /xe7/x7b <CJK>
+<U8519> /xe7/x7c <CJK>
+<U852F> /xe7/x7d <CJK>
+<U8662> /xe7/x7e <CJK>
+<U8756> /xe7/xa1 <CJK>
+<U8763> /xe7/xa2 <CJK>
+<U8764> /xe7/xa3 <CJK>
+<U8777> /xe7/xa4 <CJK>
+<U87E1> /xe7/xa5 <CJK>
+<U8773> /xe7/xa6 <CJK>
+<U8758> /xe7/xa7 <CJK>
+<U8754> /xe7/xa8 <CJK>
+<U875B> /xe7/xa9 <CJK>
+<U8752> /xe7/xaa <CJK>
+<U8761> /xe7/xab <CJK>
+<U875A> /xe7/xac <CJK>
+<U8751> /xe7/xad <CJK>
+<U875E> /xe7/xae <CJK>
+<U876D> /xe7/xaf <CJK>
+<U876A> /xe7/xb0 <CJK>
+<U8750> /xe7/xb1 <CJK>
+<U874E> /xe7/xb2 <CJK>
+<U875F> /xe7/xb3 <CJK>
+<U875D> /xe7/xb4 <CJK>
+<U876F> /xe7/xb5 <CJK>
+<U876C> /xe7/xb6 <CJK>
+<U877A> /xe7/xb7 <CJK>
+<U876E> /xe7/xb8 <CJK>
+<U875C> /xe7/xb9 <CJK>
+<U8765> /xe7/xba <CJK>
+<U874F> /xe7/xbb <CJK>
+<U877B> /xe7/xbc <CJK>
+<U8775> /xe7/xbd <CJK>
+<U8762> /xe7/xbe <CJK>
+<U8767> /xe7/xbf <CJK>
+<U8769> /xe7/xc0 <CJK>
+<U885A> /xe7/xc1 <CJK>
+<U8905> /xe7/xc2 <CJK>
+<U890C> /xe7/xc3 <CJK>
+<U8914> /xe7/xc4 <CJK>
+<U890B> /xe7/xc5 <CJK>
+<U8917> /xe7/xc6 <CJK>
+<U8918> /xe7/xc7 <CJK>
+<U8919> /xe7/xc8 <CJK>
+<U8906> /xe7/xc9 <CJK>
+<U8916> /xe7/xca <CJK>
+<U8911> /xe7/xcb <CJK>
+<U890E> /xe7/xcc <CJK>
+<U8909> /xe7/xcd <CJK>
+<U89A2> /xe7/xce <CJK>
+<U89A4> /xe7/xcf <CJK>
+<U89A3> /xe7/xd0 <CJK>
+<U89ED> /xe7/xd1 <CJK>
+<U89F0> /xe7/xd2 <CJK>
+<U89EC> /xe7/xd3 <CJK>
+<U8ACF> /xe7/xd4 <CJK>
+<U8AC6> /xe7/xd5 <CJK>
+<U8AB8> /xe7/xd6 <CJK>
+<U8AD3> /xe7/xd7 <CJK>
+<U8AD1> /xe7/xd8 <CJK>
+<U8AD4> /xe7/xd9 <CJK>
+<U8AD5> /xe7/xda <CJK>
+<U8ABB> /xe7/xdb <CJK>
+<U8AD7> /xe7/xdc <CJK>
+<U8ABE> /xe7/xdd <CJK>
+<U8AC0> /xe7/xde <CJK>
+<U8AC5> /xe7/xdf <CJK>
+<U8AD8> /xe7/xe0 <CJK>
+<U8AC3> /xe7/xe1 <CJK>
+<U8ABA> /xe7/xe2 <CJK>
+<U8ABD> /xe7/xe3 <CJK>
+<U8AD9> /xe7/xe4 <CJK>
+<U8C3E> /xe7/xe5 <CJK>
+<U8C4D> /xe7/xe6 <CJK>
+<U8C8F> /xe7/xe7 <CJK>
+<U8CE5> /xe7/xe8 <CJK>
+<U8CDF> /xe7/xe9 <CJK>
+<U8CD9> /xe7/xea <CJK>
+<U8CE8> /xe7/xeb <CJK>
+<U8CDA> /xe7/xec <CJK>
+<U8CDD> /xe7/xed <CJK>
+<U8CE7> /xe7/xee <CJK>
+<U8DA0> /xe7/xef <CJK>
+<U8D9C> /xe7/xf0 <CJK>
+<U8DA1> /xe7/xf1 <CJK>
+<U8D9B> /xe7/xf2 <CJK>
+<U8E20> /xe7/xf3 <CJK>
+<U8E23> /xe7/xf4 <CJK>
+<U8E25> /xe7/xf5 <CJK>
+<U8E24> /xe7/xf6 <CJK>
+<U8E2E> /xe7/xf7 <CJK>
+<U8E15> /xe7/xf8 <CJK>
+<U8E1B> /xe7/xf9 <CJK>
+<U8E16> /xe7/xfa <CJK>
+<U8E11> /xe7/xfb <CJK>
+<U8E19> /xe7/xfc <CJK>
+<U8E26> /xe7/xfd <CJK>
+<U8E27> /xe7/xfe <CJK>
+<U8E14> /xe8/x40 <CJK>
+<U8E12> /xe8/x41 <CJK>
+<U8E18> /xe8/x42 <CJK>
+<U8E13> /xe8/x43 <CJK>
+<U8E1C> /xe8/x44 <CJK>
+<U8E17> /xe8/x45 <CJK>
+<U8E1A> /xe8/x46 <CJK>
+<U8F2C> /xe8/x47 <CJK>
+<U8F24> /xe8/x48 <CJK>
+<U8F18> /xe8/x49 <CJK>
+<U8F1A> /xe8/x4a <CJK>
+<U8F20> /xe8/x4b <CJK>
+<U8F23> /xe8/x4c <CJK>
+<U8F16> /xe8/x4d <CJK>
+<U8F17> /xe8/x4e <CJK>
+<U9073> /xe8/x4f <CJK>
+<U9070> /xe8/x50 <CJK>
+<U906F> /xe8/x51 <CJK>
+<U9067> /xe8/x52 <CJK>
+<U906B> /xe8/x53 <CJK>
+<U912F> /xe8/x54 <CJK>
+<U912B> /xe8/x55 <CJK>
+<U9129> /xe8/x56 <CJK>
+<U912A> /xe8/x57 <CJK>
+<U9132> /xe8/x58 <CJK>
+<U9126> /xe8/x59 <CJK>
+<U912E> /xe8/x5a <CJK>
+<U9185> /xe8/x5b <CJK>
+<U9186> /xe8/x5c <CJK>
+<U918A> /xe8/x5d <CJK>
+<U9181> /xe8/x5e <CJK>
+<U9182> /xe8/x5f <CJK>
+<U9184> /xe8/x60 <CJK>
+<U9180> /xe8/x61 <CJK>
+<U92D0> /xe8/x62 <CJK>
+<U92C3> /xe8/x63 <CJK>
+<U92C4> /xe8/x64 <CJK>
+<U92C0> /xe8/x65 <CJK>
+<U92D9> /xe8/x66 <CJK>
+<U92B6> /xe8/x67 <CJK>
+<U92CF> /xe8/x68 <CJK>
+<U92F1> /xe8/x69 <CJK>
+<U92DF> /xe8/x6a <CJK>
+<U92D8> /xe8/x6b <CJK>
+<U92E9> /xe8/x6c <CJK>
+<U92D7> /xe8/x6d <CJK>
+<U92DD> /xe8/x6e <CJK>
+<U92CC> /xe8/x6f <CJK>
+<U92EF> /xe8/x70 <CJK>
+<U92C2> /xe8/x71 <CJK>
+<U92E8> /xe8/x72 <CJK>
+<U92CA> /xe8/x73 <CJK>
+<U92C8> /xe8/x74 <CJK>
+<U92CE> /xe8/x75 <CJK>
+<U92E6> /xe8/x76 <CJK>
+<U92CD> /xe8/x77 <CJK>
+<U92D5> /xe8/x78 <CJK>
+<U92C9> /xe8/x79 <CJK>
+<U92E0> /xe8/x7a <CJK>
+<U92DE> /xe8/x7b <CJK>
+<U92E7> /xe8/x7c <CJK>
+<U92D1> /xe8/x7d <CJK>
+<U92D3> /xe8/x7e <CJK>
+<U92B5> /xe8/xa1 <CJK>
+<U92E1> /xe8/xa2 <CJK>
+<U92C6> /xe8/xa3 <CJK>
+<U92B4> /xe8/xa4 <CJK>
+<U957C> /xe8/xa5 <CJK>
+<U95AC> /xe8/xa6 <CJK>
+<U95AB> /xe8/xa7 <CJK>
+<U95AE> /xe8/xa8 <CJK>
+<U95B0> /xe8/xa9 <CJK>
+<U96A4> /xe8/xaa <CJK>
+<U96A2> /xe8/xab <CJK>
+<U96D3> /xe8/xac <CJK>
+<U9705> /xe8/xad <CJK>
+<U9708> /xe8/xae <CJK>
+<U9702> /xe8/xaf <CJK>
+<U975A> /xe8/xb0 <CJK>
+<U978A> /xe8/xb1 <CJK>
+<U978E> /xe8/xb2 <CJK>
+<U9788> /xe8/xb3 <CJK>
+<U97D0> /xe8/xb4 <CJK>
+<U97CF> /xe8/xb5 <CJK>
+<U981E> /xe8/xb6 <CJK>
+<U981D> /xe8/xb7 <CJK>
+<U9826> /xe8/xb8 <CJK>
+<U9829> /xe8/xb9 <CJK>
+<U9828> /xe8/xba <CJK>
+<U9820> /xe8/xbb <CJK>
+<U981B> /xe8/xbc <CJK>
+<U9827> /xe8/xbd <CJK>
+<U98B2> /xe8/xbe <CJK>
+<U9908> /xe8/xbf <CJK>
+<U98FA> /xe8/xc0 <CJK>
+<U9911> /xe8/xc1 <CJK>
+<U9914> /xe8/xc2 <CJK>
+<U9916> /xe8/xc3 <CJK>
+<U9917> /xe8/xc4 <CJK>
+<U9915> /xe8/xc5 <CJK>
+<U99DC> /xe8/xc6 <CJK>
+<U99CD> /xe8/xc7 <CJK>
+<U99CF> /xe8/xc8 <CJK>
+<U99D3> /xe8/xc9 <CJK>
+<U99D4> /xe8/xca <CJK>
+<U99CE> /xe8/xcb <CJK>
+<U99C9> /xe8/xcc <CJK>
+<U99D6> /xe8/xcd <CJK>
+<U99D8> /xe8/xce <CJK>
+<U99CB> /xe8/xcf <CJK>
+<U99D7> /xe8/xd0 <CJK>
+<U99CC> /xe8/xd1 <CJK>
+<U9AB3> /xe8/xd2 <CJK>
+<U9AEC> /xe8/xd3 <CJK>
+<U9AEB> /xe8/xd4 <CJK>
+<U9AF3> /xe8/xd5 <CJK>
+<U9AF2> /xe8/xd6 <CJK>
+<U9AF1> /xe8/xd7 <CJK>
+<U9B46> /xe8/xd8 <CJK>
+<U9B43> /xe8/xd9 <CJK>
+<U9B67> /xe8/xda <CJK>
+<U9B74> /xe8/xdb <CJK>
+<U9B71> /xe8/xdc <CJK>
+<U9B66> /xe8/xdd <CJK>
+<U9B76> /xe8/xde <CJK>
+<U9B75> /xe8/xdf <CJK>
+<U9B70> /xe8/xe0 <CJK>
+<U9B68> /xe8/xe1 <CJK>
+<U9B64> /xe8/xe2 <CJK>
+<U9B6C> /xe8/xe3 <CJK>
+<U9CFC> /xe8/xe4 <CJK>
+<U9CFA> /xe8/xe5 <CJK>
+<U9CFD> /xe8/xe6 <CJK>
+<U9CFF> /xe8/xe7 <CJK>
+<U9CF7> /xe8/xe8 <CJK>
+<U9D07> /xe8/xe9 <CJK>
+<U9D00> /xe8/xea <CJK>
+<U9CF9> /xe8/xeb <CJK>
+<U9CFB> /xe8/xec <CJK>
+<U9D08> /xe8/xed <CJK>
+<U9D05> /xe8/xee <CJK>
+<U9D04> /xe8/xef <CJK>
+<U9E83> /xe8/xf0 <CJK>
+<U9ED3> /xe8/xf1 <CJK>
+<U9F0F> /xe8/xf2 <CJK>
+<U9F10> /xe8/xf3 <CJK>
+<U511C> /xe8/xf4 <CJK>
+<U5113> /xe8/xf5 <CJK>
+<U5117> /xe8/xf6 <CJK>
+<U511A> /xe8/xf7 <CJK>
+<U5111> /xe8/xf8 <CJK>
+<U51DE> /xe8/xf9 <CJK>
+<U5334> /xe8/xfa <CJK>
+<U53E1> /xe8/xfb <CJK>
+<U5670> /xe8/xfc <CJK>
+<U5660> /xe8/xfd <CJK>
+<U566E> /xe8/xfe <CJK>
+<U5673> /xe9/x40 <CJK>
+<U5666> /xe9/x41 <CJK>
+<U5663> /xe9/x42 <CJK>
+<U566D> /xe9/x43 <CJK>
+<U5672> /xe9/x44 <CJK>
+<U565E> /xe9/x45 <CJK>
+<U5677> /xe9/x46 <CJK>
+<U571C> /xe9/x47 <CJK>
+<U571B> /xe9/x48 <CJK>
+<U58C8> /xe9/x49 <CJK>
+<U58BD> /xe9/x4a <CJK>
+<U58C9> /xe9/x4b <CJK>
+<U58BF> /xe9/x4c <CJK>
+<U58BA> /xe9/x4d <CJK>
+<U58C2> /xe9/x4e <CJK>
+<U58BC> /xe9/x4f <CJK>
+<U58C6> /xe9/x50 <CJK>
+<U5B17> /xe9/x51 <CJK>
+<U5B19> /xe9/x52 <CJK>
+<U5B1B> /xe9/x53 <CJK>
+<U5B21> /xe9/x54 <CJK>
+<U5B14> /xe9/x55 <CJK>
+<U5B13> /xe9/x56 <CJK>
+<U5B10> /xe9/x57 <CJK>
+<U5B16> /xe9/x58 <CJK>
+<U5B28> /xe9/x59 <CJK>
+<U5B1A> /xe9/x5a <CJK>
+<U5B20> /xe9/x5b <CJK>
+<U5B1E> /xe9/x5c <CJK>
+<U5BEF> /xe9/x5d <CJK>
+<U5DAC> /xe9/x5e <CJK>
+<U5DB1> /xe9/x5f <CJK>
+<U5DA9> /xe9/x60 <CJK>
+<U5DA7> /xe9/x61 <CJK>
+<U5DB5> /xe9/x62 <CJK>
+<U5DB0> /xe9/x63 <CJK>
+<U5DAE> /xe9/x64 <CJK>
+<U5DAA> /xe9/x65 <CJK>
+<U5DA8> /xe9/x66 <CJK>
+<U5DB2> /xe9/x67 <CJK>
+<U5DAD> /xe9/x68 <CJK>
+<U5DAF> /xe9/x69 <CJK>
+<U5DB4> /xe9/x6a <CJK>
+<U5E67> /xe9/x6b <CJK>
+<U5E68> /xe9/x6c <CJK>
+<U5E66> /xe9/x6d <CJK>
+<U5E6F> /xe9/x6e <CJK>
+<U5EE9> /xe9/x6f <CJK>
+<U5EE7> /xe9/x70 <CJK>
+<U5EE6> /xe9/x71 <CJK>
+<U5EE8> /xe9/x72 <CJK>
+<U5EE5> /xe9/x73 <CJK>
+<U5F4B> /xe9/x74 <CJK>
+<U5FBC> /xe9/x75 <CJK>
+<U619D> /xe9/x76 <CJK>
+<U61A8> /xe9/x77 <CJK>
+<U6196> /xe9/x78 <CJK>
+<U61C5> /xe9/x79 <CJK>
+<U61B4> /xe9/x7a <CJK>
+<U61C6> /xe9/x7b <CJK>
+<U61C1> /xe9/x7c <CJK>
+<U61CC> /xe9/x7d <CJK>
+<U61BA> /xe9/x7e <CJK>
+<U61BF> /xe9/xa1 <CJK>
+<U61B8> /xe9/xa2 <CJK>
+<U618C> /xe9/xa3 <CJK>
+<U64D7> /xe9/xa4 <CJK>
+<U64D6> /xe9/xa5 <CJK>
+<U64D0> /xe9/xa6 <CJK>
+<U64CF> /xe9/xa7 <CJK>
+<U64C9> /xe9/xa8 <CJK>
+<U64BD> /xe9/xa9 <CJK>
+<U6489> /xe9/xaa <CJK>
+<U64C3> /xe9/xab <CJK>
+<U64DB> /xe9/xac <CJK>
+<U64F3> /xe9/xad <CJK>
+<U64D9> /xe9/xae <CJK>
+<U6533> /xe9/xaf <CJK>
+<U657F> /xe9/xb0 <CJK>
+<U657C> /xe9/xb1 <CJK>
+<U65A2> /xe9/xb2 <CJK>
+<U66C8> /xe9/xb3 <CJK>
+<U66BE> /xe9/xb4 <CJK>
+<U66C0> /xe9/xb5 <CJK>
+<U66CA> /xe9/xb6 <CJK>
+<U66CB> /xe9/xb7 <CJK>
+<U66CF> /xe9/xb8 <CJK>
+<U66BD> /xe9/xb9 <CJK>
+<U66BB> /xe9/xba <CJK>
+<U66BA> /xe9/xbb <CJK>
+<U66CC> /xe9/xbc <CJK>
+<U6723> /xe9/xbd <CJK>
+<U6A34> /xe9/xbe <CJK>
+<U6A66> /xe9/xbf <CJK>
+<U6A49> /xe9/xc0 <CJK>
+<U6A67> /xe9/xc1 <CJK>
+<U6A32> /xe9/xc2 <CJK>
+<U6A68> /xe9/xc3 <CJK>
+<U6A3E> /xe9/xc4 <CJK>
+<U6A5D> /xe9/xc5 <CJK>
+<U6A6D> /xe9/xc6 <CJK>
+<U6A76> /xe9/xc7 <CJK>
+<U6A5B> /xe9/xc8 <CJK>
+<U6A51> /xe9/xc9 <CJK>
+<U6A28> /xe9/xca <CJK>
+<U6A5A> /xe9/xcb <CJK>
+<U6A3B> /xe9/xcc <CJK>
+<U6A3F> /xe9/xcd <CJK>
+<U6A41> /xe9/xce <CJK>
+<U6A6A> /xe9/xcf <CJK>
+<U6A64> /xe9/xd0 <CJK>
+<U6A50> /xe9/xd1 <CJK>
+<U6A4F> /xe9/xd2 <CJK>
+<U6A54> /xe9/xd3 <CJK>
+<U6A6F> /xe9/xd4 <CJK>
+<U6A69> /xe9/xd5 <CJK>
+<U6A60> /xe9/xd6 <CJK>
+<U6A3C> /xe9/xd7 <CJK>
+<U6A5E> /xe9/xd8 <CJK>
+<U6A56> /xe9/xd9 <CJK>
+<U6A55> /xe9/xda <CJK>
+<U6A4D> /xe9/xdb <CJK>
+<U6A4E> /xe9/xdc <CJK>
+<U6A46> /xe9/xdd <CJK>
+<U6B55> /xe9/xde <CJK>
+<U6B54> /xe9/xdf <CJK>
+<U6B56> /xe9/xe0 <CJK>
+<U6BA7> /xe9/xe1 <CJK>
+<U6BAA> /xe9/xe2 <CJK>
+<U6BAB> /xe9/xe3 <CJK>
+<U6BC8> /xe9/xe4 <CJK>
+<U6BC7> /xe9/xe5 <CJK>
+<U6C04> /xe9/xe6 <CJK>
+<U6C03> /xe9/xe7 <CJK>
+<U6C06> /xe9/xe8 <CJK>
+<U6FAD> /xe9/xe9 <CJK>
+<U6FCB> /xe9/xea <CJK>
+<U6FA3> /xe9/xeb <CJK>
+<U6FC7> /xe9/xec <CJK>
+<U6FBC> /xe9/xed <CJK>
+<U6FCE> /xe9/xee <CJK>
+<U6FC8> /xe9/xef <CJK>
+<U6F5E> /xe9/xf0 <CJK>
+<U6FC4> /xe9/xf1 <CJK>
+<U6FBD> /xe9/xf2 <CJK>
+<U6F9E> /xe9/xf3 <CJK>
+<U6FCA> /xe9/xf4 <CJK>
+<U6FA8> /xe9/xf5 <CJK>
+<U7004> /xe9/xf6 <CJK>
+<U6FA5> /xe9/xf7 <CJK>
+<U6FAE> /xe9/xf8 <CJK>
+<U6FBA> /xe9/xf9 <CJK>
+<U6FAC> /xe9/xfa <CJK>
+<U6FAA> /xe9/xfb <CJK>
+<U6FCF> /xe9/xfc <CJK>
+<U6FBF> /xe9/xfd <CJK>
+<U6FB8> /xe9/xfe <CJK>
+<U6FA2> /xea/x40 <CJK>
+<U6FC9> /xea/x41 <CJK>
+<U6FAB> /xea/x42 <CJK>
+<U6FCD> /xea/x43 <CJK>
+<U6FAF> /xea/x44 <CJK>
+<U6FB2> /xea/x45 <CJK>
+<U6FB0> /xea/x46 <CJK>
+<U71C5> /xea/x47 <CJK>
+<U71C2> /xea/x48 <CJK>
+<U71BF> /xea/x49 <CJK>
+<U71B8> /xea/x4a <CJK>
+<U71D6> /xea/x4b <CJK>
+<U71C0> /xea/x4c <CJK>
+<U71C1> /xea/x4d <CJK>
+<U71CB> /xea/x4e <CJK>
+<U71D4> /xea/x4f <CJK>
+<U71CA> /xea/x50 <CJK>
+<U71C7> /xea/x51 <CJK>
+<U71CF> /xea/x52 <CJK>
+<U71BD> /xea/x53 <CJK>
+<U71D8> /xea/x54 <CJK>
+<U71BC> /xea/x55 <CJK>
+<U71C6> /xea/x56 <CJK>
+<U71DA> /xea/x57 <CJK>
+<U71DB> /xea/x58 <CJK>
+<U729D> /xea/x59 <CJK>
+<U729E> /xea/x5a <CJK>
+<U7369> /xea/x5b <CJK>
+<U7366> /xea/x5c <CJK>
+<U7367> /xea/x5d <CJK>
+<U736C> /xea/x5e <CJK>
+<U7365> /xea/x5f <CJK>
+<U736B> /xea/x60 <CJK>
+<U736A> /xea/x61 <CJK>
+<U747F> /xea/x62 <CJK>
+<U749A> /xea/x63 <CJK>
+<U74A0> /xea/x64 <CJK>
+<U7494> /xea/x65 <CJK>
+<U7492> /xea/x66 <CJK>
+<U7495> /xea/x67 <CJK>
+<U74A1> /xea/x68 <CJK>
+<U750B> /xea/x69 <CJK>
+<U7580> /xea/x6a <CJK>
+<U762F> /xea/x6b <CJK>
+<U762D> /xea/x6c <CJK>
+<U7631> /xea/x6d <CJK>
+<U763D> /xea/x6e <CJK>
+<U7633> /xea/x6f <CJK>
+<U763C> /xea/x70 <CJK>
+<U7635> /xea/x71 <CJK>
+<U7632> /xea/x72 <CJK>
+<U7630> /xea/x73 <CJK>
+<U76BB> /xea/x74 <CJK>
+<U76E6> /xea/x75 <CJK>
+<U779A> /xea/x76 <CJK>
+<U779D> /xea/x77 <CJK>
+<U77A1> /xea/x78 <CJK>
+<U779C> /xea/x79 <CJK>
+<U779B> /xea/x7a <CJK>
+<U77A2> /xea/x7b <CJK>
+<U77A3> /xea/x7c <CJK>
+<U7795> /xea/x7d <CJK>
+<U7799> /xea/x7e <CJK>
+<U7797> /xea/xa1 <CJK>
+<U78DD> /xea/xa2 <CJK>
+<U78E9> /xea/xa3 <CJK>
+<U78E5> /xea/xa4 <CJK>
+<U78EA> /xea/xa5 <CJK>
+<U78DE> /xea/xa6 <CJK>
+<U78E3> /xea/xa7 <CJK>
+<U78DB> /xea/xa8 <CJK>
+<U78E1> /xea/xa9 <CJK>
+<U78E2> /xea/xaa <CJK>
+<U78ED> /xea/xab <CJK>
+<U78DF> /xea/xac <CJK>
+<U78E0> /xea/xad <CJK>
+<U79A4> /xea/xae <CJK>
+<U7A44> /xea/xaf <CJK>
+<U7A48> /xea/xb0 <CJK>
+<U7A47> /xea/xb1 <CJK>
+<U7AB6> /xea/xb2 <CJK>
+<U7AB8> /xea/xb3 <CJK>
+<U7AB5> /xea/xb4 <CJK>
+<U7AB1> /xea/xb5 <CJK>
+<U7AB7> /xea/xb6 <CJK>
+<U7BDE> /xea/xb7 <CJK>
+<U7BE3> /xea/xb8 <CJK>
+<U7BE7> /xea/xb9 <CJK>
+<U7BDD> /xea/xba <CJK>
+<U7BD5> /xea/xbb <CJK>
+<U7BE5> /xea/xbc <CJK>
+<U7BDA> /xea/xbd <CJK>
+<U7BE8> /xea/xbe <CJK>
+<U7BF9> /xea/xbf <CJK>
+<U7BD4> /xea/xc0 <CJK>
+<U7BEA> /xea/xc1 <CJK>
+<U7BE2> /xea/xc2 <CJK>
+<U7BDC> /xea/xc3 <CJK>
+<U7BEB> /xea/xc4 <CJK>
+<U7BD8> /xea/xc5 <CJK>
+<U7BDF> /xea/xc6 <CJK>
+<U7CD2> /xea/xc7 <CJK>
+<U7CD4> /xea/xc8 <CJK>
+<U7CD7> /xea/xc9 <CJK>
+<U7CD0> /xea/xca <CJK>
+<U7CD1> /xea/xcb <CJK>
+<U7E12> /xea/xcc <CJK>
+<U7E21> /xea/xcd <CJK>
+<U7E17> /xea/xce <CJK>
+<U7E0C> /xea/xcf <CJK>
+<U7E1F> /xea/xd0 <CJK>
+<U7E20> /xea/xd1 <CJK>
+<U7E13> /xea/xd2 <CJK>
+<U7E0E> /xea/xd3 <CJK>
+<U7E1C> /xea/xd4 <CJK>
+<U7E15> /xea/xd5 <CJK>
+<U7E1A> /xea/xd6 <CJK>
+<U7E22> /xea/xd7 <CJK>
+<U7E0B> /xea/xd8 <CJK>
+<U7E0F> /xea/xd9 <CJK>
+<U7E16> /xea/xda <CJK>
+<U7E0D> /xea/xdb <CJK>
+<U7E14> /xea/xdc <CJK>
+<U7E25> /xea/xdd <CJK>
+<U7E24> /xea/xde <CJK>
+<U7F43> /xea/xdf <CJK>
+<U7F7B> /xea/xe0 <CJK>
+<U7F7C> /xea/xe1 <CJK>
+<U7F7A> /xea/xe2 <CJK>
+<U7FB1> /xea/xe3 <CJK>
+<U7FEF> /xea/xe4 <CJK>
+<U802A> /xea/xe5 <CJK>
+<U8029> /xea/xe6 <CJK>
+<U806C> /xea/xe7 <CJK>
+<U81B1> /xea/xe8 <CJK>
+<U81A6> /xea/xe9 <CJK>
+<U81AE> /xea/xea <CJK>
+<U81B9> /xea/xeb <CJK>
+<U81B5> /xea/xec <CJK>
+<U81AB> /xea/xed <CJK>
+<U81B0> /xea/xee <CJK>
+<U81AC> /xea/xef <CJK>
+<U81B4> /xea/xf0 <CJK>
+<U81B2> /xea/xf1 <CJK>
+<U81B7> /xea/xf2 <CJK>
+<U81A7> /xea/xf3 <CJK>
+<U81F2> /xea/xf4 <CJK>
+<U8255> /xea/xf5 <CJK>
+<U8256> /xea/xf6 <CJK>
+<U8257> /xea/xf7 <CJK>
+<U8556> /xea/xf8 <CJK>
+<U8545> /xea/xf9 <CJK>
+<U856B> /xea/xfa <CJK>
+<U854D> /xea/xfb <CJK>
+<U8553> /xea/xfc <CJK>
+<U8561> /xea/xfd <CJK>
+<U8558> /xea/xfe <CJK>
+<U8540> /xeb/x40 <CJK>
+<U8546> /xeb/x41 <CJK>
+<U8564> /xeb/x42 <CJK>
+<U8541> /xeb/x43 <CJK>
+<U8562> /xeb/x44 <CJK>
+<U8544> /xeb/x45 <CJK>
+<U8551> /xeb/x46 <CJK>
+<U8547> /xeb/x47 <CJK>
+<U8563> /xeb/x48 <CJK>
+<U853E> /xeb/x49 <CJK>
+<U855B> /xeb/x4a <CJK>
+<U8571> /xeb/x4b <CJK>
+<U854E> /xeb/x4c <CJK>
+<U856E> /xeb/x4d <CJK>
+<U8575> /xeb/x4e <CJK>
+<U8555> /xeb/x4f <CJK>
+<U8567> /xeb/x50 <CJK>
+<U8560> /xeb/x51 <CJK>
+<U858C> /xeb/x52 <CJK>
+<U8566> /xeb/x53 <CJK>
+<U855D> /xeb/x54 <CJK>
+<U8554> /xeb/x55 <CJK>
+<U8565> /xeb/x56 <CJK>
+<U856C> /xeb/x57 <CJK>
+<U8663> /xeb/x58 <CJK>
+<U8665> /xeb/x59 <CJK>
+<U8664> /xeb/x5a <CJK>
+<U879B> /xeb/x5b <CJK>
+<U878F> /xeb/x5c <CJK>
+<U8797> /xeb/x5d <CJK>
+<U8793> /xeb/x5e <CJK>
+<U8792> /xeb/x5f <CJK>
+<U8788> /xeb/x60 <CJK>
+<U8781> /xeb/x61 <CJK>
+<U8796> /xeb/x62 <CJK>
+<U8798> /xeb/x63 <CJK>
+<U8779> /xeb/x64 <CJK>
+<U8787> /xeb/x65 <CJK>
+<U87A3> /xeb/x66 <CJK>
+<U8785> /xeb/x67 <CJK>
+<U8790> /xeb/x68 <CJK>
+<U8791> /xeb/x69 <CJK>
+<U879D> /xeb/x6a <CJK>
+<U8784> /xeb/x6b <CJK>
+<U8794> /xeb/x6c <CJK>
+<U879C> /xeb/x6d <CJK>
+<U879A> /xeb/x6e <CJK>
+<U8789> /xeb/x6f <CJK>
+<U891E> /xeb/x70 <CJK>
+<U8926> /xeb/x71 <CJK>
+<U8930> /xeb/x72 <CJK>
+<U892D> /xeb/x73 <CJK>
+<U892E> /xeb/x74 <CJK>
+<U8927> /xeb/x75 <CJK>
+<U8931> /xeb/x76 <CJK>
+<U8922> /xeb/x77 <CJK>
+<U8929> /xeb/x78 <CJK>
+<U8923> /xeb/x79 <CJK>
+<U892F> /xeb/x7a <CJK>
+<U892C> /xeb/x7b <CJK>
+<U891F> /xeb/x7c <CJK>
+<U89F1> /xeb/x7d <CJK>
+<U8AE0> /xeb/x7e <CJK>
+<U8AE2> /xeb/xa1 <CJK>
+<U8AF2> /xeb/xa2 <CJK>
+<U8AF4> /xeb/xa3 <CJK>
+<U8AF5> /xeb/xa4 <CJK>
+<U8ADD> /xeb/xa5 <CJK>
+<U8B14> /xeb/xa6 <CJK>
+<U8AE4> /xeb/xa7 <CJK>
+<U8ADF> /xeb/xa8 <CJK>
+<U8AF0> /xeb/xa9 <CJK>
+<U8AC8> /xeb/xaa <CJK>
+<U8ADE> /xeb/xab <CJK>
+<U8AE1> /xeb/xac <CJK>
+<U8AE8> /xeb/xad <CJK>
+<U8AFF> /xeb/xae <CJK>
+<U8AEF> /xeb/xaf <CJK>
+<U8AFB> /xeb/xb0 <CJK>
+<U8C91> /xeb/xb1 <CJK>
+<U8C92> /xeb/xb2 <CJK>
+<U8C90> /xeb/xb3 <CJK>
+<U8CF5> /xeb/xb4 <CJK>
+<U8CEE> /xeb/xb5 <CJK>
+<U8CF1> /xeb/xb6 <CJK>
+<U8CF0> /xeb/xb7 <CJK>
+<U8CF3> /xeb/xb8 <CJK>
+<U8D6C> /xeb/xb9 <CJK>
+<U8D6E> /xeb/xba <CJK>
+<U8DA5> /xeb/xbb <CJK>
+<U8DA7> /xeb/xbc <CJK>
+<U8E33> /xeb/xbd <CJK>
+<U8E3E> /xeb/xbe <CJK>
+<U8E38> /xeb/xbf <CJK>
+<U8E40> /xeb/xc0 <CJK>
+<U8E45> /xeb/xc1 <CJK>
+<U8E36> /xeb/xc2 <CJK>
+<U8E3C> /xeb/xc3 <CJK>
+<U8E3D> /xeb/xc4 <CJK>
+<U8E41> /xeb/xc5 <CJK>
+<U8E30> /xeb/xc6 <CJK>
+<U8E3F> /xeb/xc7 <CJK>
+<U8EBD> /xeb/xc8 <CJK>
+<U8F36> /xeb/xc9 <CJK>
+<U8F2E> /xeb/xca <CJK>
+<U8F35> /xeb/xcb <CJK>
+<U8F32> /xeb/xcc <CJK>
+<U8F39> /xeb/xcd <CJK>
+<U8F37> /xeb/xce <CJK>
+<U8F34> /xeb/xcf <CJK>
+<U9076> /xeb/xd0 <CJK>
+<U9079> /xeb/xd1 <CJK>
+<U907B> /xeb/xd2 <CJK>
+<U9086> /xeb/xd3 <CJK>
+<U90FA> /xeb/xd4 <CJK>
+<U9133> /xeb/xd5 <CJK>
+<U9135> /xeb/xd6 <CJK>
+<U9136> /xeb/xd7 <CJK>
+<U9193> /xeb/xd8 <CJK>
+<U9190> /xeb/xd9 <CJK>
+<U9191> /xeb/xda <CJK>
+<U918D> /xeb/xdb <CJK>
+<U918F> /xeb/xdc <CJK>
+<U9327> /xeb/xdd <CJK>
+<U931E> /xeb/xde <CJK>
+<U9308> /xeb/xdf <CJK>
+<U931F> /xeb/xe0 <CJK>
+<U9306> /xeb/xe1 <CJK>
+<U930F> /xeb/xe2 <CJK>
+<U937A> /xeb/xe3 <CJK>
+<U9338> /xeb/xe4 <CJK>
+<U933C> /xeb/xe5 <CJK>
+<U931B> /xeb/xe6 <CJK>
+<U9323> /xeb/xe7 <CJK>
+<U9312> /xeb/xe8 <CJK>
+<U9301> /xeb/xe9 <CJK>
+<U9346> /xeb/xea <CJK>
+<U932D> /xeb/xeb <CJK>
+<U930E> /xeb/xec <CJK>
+<U930D> /xeb/xed <CJK>
+<U92CB> /xeb/xee <CJK>
+<U931D> /xeb/xef <CJK>
+<U92FA> /xeb/xf0 <CJK>
+<U9325> /xeb/xf1 <CJK>
+<U9313> /xeb/xf2 <CJK>
+<U92F9> /xeb/xf3 <CJK>
+<U92F7> /xeb/xf4 <CJK>
+<U9334> /xeb/xf5 <CJK>
+<U9302> /xeb/xf6 <CJK>
+<U9324> /xeb/xf7 <CJK>
+<U92FF> /xeb/xf8 <CJK>
+<U9329> /xeb/xf9 <CJK>
+<U9339> /xeb/xfa <CJK>
+<U9335> /xeb/xfb <CJK>
+<U932A> /xeb/xfc <CJK>
+<U9314> /xeb/xfd <CJK>
+<U930C> /xeb/xfe <CJK>
+<U930B> /xec/x40 <CJK>
+<U92FE> /xec/x41 <CJK>
+<U9309> /xec/x42 <CJK>
+<U9300> /xec/x43 <CJK>
+<U92FB> /xec/x44 <CJK>
+<U9316> /xec/x45 <CJK>
+<U95BC> /xec/x46 <CJK>
+<U95CD> /xec/x47 <CJK>
+<U95BE> /xec/x48 <CJK>
+<U95B9> /xec/x49 <CJK>
+<U95BA> /xec/x4a <CJK>
+<U95B6> /xec/x4b <CJK>
+<U95BF> /xec/x4c <CJK>
+<U95B5> /xec/x4d <CJK>
+<U95BD> /xec/x4e <CJK>
+<U96A9> /xec/x4f <CJK>
+<U96D4> /xec/x50 <CJK>
+<U970B> /xec/x51 <CJK>
+<U9712> /xec/x52 <CJK>
+<U9710> /xec/x53 <CJK>
+<U9799> /xec/x54 <CJK>
+<U9797> /xec/x55 <CJK>
+<U9794> /xec/x56 <CJK>
+<U97F0> /xec/x57 <CJK>
+<U97F8> /xec/x58 <CJK>
+<U9835> /xec/x59 <CJK>
+<U982F> /xec/x5a <CJK>
+<U9832> /xec/x5b <CJK>
+<U9924> /xec/x5c <CJK>
+<U991F> /xec/x5d <CJK>
+<U9927> /xec/x5e <CJK>
+<U9929> /xec/x5f <CJK>
+<U999E> /xec/x60 <CJK>
+<U99EE> /xec/x61 <CJK>
+<U99EC> /xec/x62 <CJK>
+<U99E5> /xec/x63 <CJK>
+<U99E4> /xec/x64 <CJK>
+<U99F0> /xec/x65 <CJK>
+<U99E3> /xec/x66 <CJK>
+<U99EA> /xec/x67 <CJK>
+<U99E9> /xec/x68 <CJK>
+<U99E7> /xec/x69 <CJK>
+<U9AB9> /xec/x6a <CJK>
+<U9ABF> /xec/x6b <CJK>
+<U9AB4> /xec/x6c <CJK>
+<U9ABB> /xec/x6d <CJK>
+<U9AF6> /xec/x6e <CJK>
+<U9AFA> /xec/x6f <CJK>
+<U9AF9> /xec/x70 <CJK>
+<U9AF7> /xec/x71 <CJK>
+<U9B33> /xec/x72 <CJK>
+<U9B80> /xec/x73 <CJK>
+<U9B85> /xec/x74 <CJK>
+<U9B87> /xec/x75 <CJK>
+<U9B7C> /xec/x76 <CJK>
+<U9B7E> /xec/x77 <CJK>
+<U9B7B> /xec/x78 <CJK>
+<U9B82> /xec/x79 <CJK>
+<U9B93> /xec/x7a <CJK>
+<U9B92> /xec/x7b <CJK>
+<U9B90> /xec/x7c <CJK>
+<U9B7A> /xec/x7d <CJK>
+<U9B95> /xec/x7e <CJK>
+<U9B7D> /xec/xa1 <CJK>
+<U9B88> /xec/xa2 <CJK>
+<U9D25> /xec/xa3 <CJK>
+<U9D17> /xec/xa4 <CJK>
+<U9D20> /xec/xa5 <CJK>
+<U9D1E> /xec/xa6 <CJK>
+<U9D14> /xec/xa7 <CJK>
+<U9D29> /xec/xa8 <CJK>
+<U9D1D> /xec/xa9 <CJK>
+<U9D18> /xec/xaa <CJK>
+<U9D22> /xec/xab <CJK>
+<U9D10> /xec/xac <CJK>
+<U9D19> /xec/xad <CJK>
+<U9D1F> /xec/xae <CJK>
+<U9E88> /xec/xaf <CJK>
+<U9E86> /xec/xb0 <CJK>
+<U9E87> /xec/xb1 <CJK>
+<U9EAE> /xec/xb2 <CJK>
+<U9EAD> /xec/xb3 <CJK>
+<U9ED5> /xec/xb4 <CJK>
+<U9ED6> /xec/xb5 <CJK>
+<U9EFA> /xec/xb6 <CJK>
+<U9F12> /xec/xb7 <CJK>
+<U9F3D> /xec/xb8 <CJK>
+<U5126> /xec/xb9 <CJK>
+<U5125> /xec/xba <CJK>
+<U5122> /xec/xbb <CJK>
+<U5124> /xec/xbc <CJK>
+<U5120> /xec/xbd <CJK>
+<U5129> /xec/xbe <CJK>
+<U52F4> /xec/xbf <CJK>
+<U5693> /xec/xc0 <CJK>
+<U568C> /xec/xc1 <CJK>
+<U568D> /xec/xc2 <CJK>
+<U5686> /xec/xc3 <CJK>
+<U5684> /xec/xc4 <CJK>
+<U5683> /xec/xc5 <CJK>
+<U567E> /xec/xc6 <CJK>
+<U5682> /xec/xc7 <CJK>
+<U567F> /xec/xc8 <CJK>
+<U5681> /xec/xc9 <CJK>
+<U58D6> /xec/xca <CJK>
+<U58D4> /xec/xcb <CJK>
+<U58CF> /xec/xcc <CJK>
+<U58D2> /xec/xcd <CJK>
+<U5B2D> /xec/xce <CJK>
+<U5B25> /xec/xcf <CJK>
+<U5B32> /xec/xd0 <CJK>
+<U5B23> /xec/xd1 <CJK>
+<U5B2C> /xec/xd2 <CJK>
+<U5B27> /xec/xd3 <CJK>
+<U5B26> /xec/xd4 <CJK>
+<U5B2F> /xec/xd5 <CJK>
+<U5B2E> /xec/xd6 <CJK>
+<U5B7B> /xec/xd7 <CJK>
+<U5BF1> /xec/xd8 <CJK>
+<U5BF2> /xec/xd9 <CJK>
+<U5DB7> /xec/xda <CJK>
+<U5E6C> /xec/xdb <CJK>
+<U5E6A> /xec/xdc <CJK>
+<U5FBE> /xec/xdd <CJK>
+<U5FBB> /xec/xde <CJK>
+<U61C3> /xec/xdf <CJK>
+<U61B5> /xec/xe0 <CJK>
+<U61BC> /xec/xe1 <CJK>
+<U61E7> /xec/xe2 <CJK>
+<U61E0> /xec/xe3 <CJK>
+<U61E5> /xec/xe4 <CJK>
+<U61E4> /xec/xe5 <CJK>
+<U61E8> /xec/xe6 <CJK>
+<U61DE> /xec/xe7 <CJK>
+<U64EF> /xec/xe8 <CJK>
+<U64E9> /xec/xe9 <CJK>
+<U64E3> /xec/xea <CJK>
+<U64EB> /xec/xeb <CJK>
+<U64E4> /xec/xec <CJK>
+<U64E8> /xec/xed <CJK>
+<U6581> /xec/xee <CJK>
+<U6580> /xec/xef <CJK>
+<U65B6> /xec/xf0 <CJK>
+<U65DA> /xec/xf1 <CJK>
+<U66D2> /xec/xf2 <CJK>
+<U6A8D> /xec/xf3 <CJK>
+<U6A96> /xec/xf4 <CJK>
+<U6A81> /xec/xf5 <CJK>
+<U6AA5> /xec/xf6 <CJK>
+<U6A89> /xec/xf7 <CJK>
+<U6A9F> /xec/xf8 <CJK>
+<U6A9B> /xec/xf9 <CJK>
+<U6AA1> /xec/xfa <CJK>
+<U6A9E> /xec/xfb <CJK>
+<U6A87> /xec/xfc <CJK>
+<U6A93> /xec/xfd <CJK>
+<U6A8E> /xec/xfe <CJK>
+<U6A95> /xed/x40 <CJK>
+<U6A83> /xed/x41 <CJK>
+<U6AA8> /xed/x42 <CJK>
+<U6AA4> /xed/x43 <CJK>
+<U6A91> /xed/x44 <CJK>
+<U6A7F> /xed/x45 <CJK>
+<U6AA6> /xed/x46 <CJK>
+<U6A9A> /xed/x47 <CJK>
+<U6A85> /xed/x48 <CJK>
+<U6A8C> /xed/x49 <CJK>
+<U6A92> /xed/x4a <CJK>
+<U6B5B> /xed/x4b <CJK>
+<U6BAD> /xed/x4c <CJK>
+<U6C09> /xed/x4d <CJK>
+<U6FCC> /xed/x4e <CJK>
+<U6FA9> /xed/x4f <CJK>
+<U6FF4> /xed/x50 <CJK>
+<U6FD4> /xed/x51 <CJK>
+<U6FE3> /xed/x52 <CJK>
+<U6FDC> /xed/x53 <CJK>
+<U6FED> /xed/x54 <CJK>
+<U6FE7> /xed/x55 <CJK>
+<U6FE6> /xed/x56 <CJK>
+<U6FDE> /xed/x57 <CJK>
+<U6FF2> /xed/x58 <CJK>
+<U6FDD> /xed/x59 <CJK>
+<U6FE2> /xed/x5a <CJK>
+<U6FE8> /xed/x5b <CJK>
+<U71E1> /xed/x5c <CJK>
+<U71F1> /xed/x5d <CJK>
+<U71E8> /xed/x5e <CJK>
+<U71F2> /xed/x5f <CJK>
+<U71E4> /xed/x60 <CJK>
+<U71F0> /xed/x61 <CJK>
+<U71E2> /xed/x62 <CJK>
+<U7373> /xed/x63 <CJK>
+<U736E> /xed/x64 <CJK>
+<U736F> /xed/x65 <CJK>
+<U7497> /xed/x66 <CJK>
+<U74B2> /xed/x67 <CJK>
+<U74AB> /xed/x68 <CJK>
+<U7490> /xed/x69 <CJK>
+<U74AA> /xed/x6a <CJK>
+<U74AD> /xed/x6b <CJK>
+<U74B1> /xed/x6c <CJK>
+<U74A5> /xed/x6d <CJK>
+<U74AF> /xed/x6e <CJK>
+<U7510> /xed/x6f <CJK>
+<U7511> /xed/x70 <CJK>
+<U7512> /xed/x71 <CJK>
+<U750F> /xed/x72 <CJK>
+<U7584> /xed/x73 <CJK>
+<U7643> /xed/x74 <CJK>
+<U7648> /xed/x75 <CJK>
+<U7649> /xed/x76 <CJK>
+<U7647> /xed/x77 <CJK>
+<U76A4> /xed/x78 <CJK>
+<U76E9> /xed/x79 <CJK>
+<U77B5> /xed/x7a <CJK>
+<U77AB> /xed/x7b <CJK>
+<U77B2> /xed/x7c <CJK>
+<U77B7> /xed/x7d <CJK>
+<U77B6> /xed/x7e <CJK>
+<U77B4> /xed/xa1 <CJK>
+<U77B1> /xed/xa2 <CJK>
+<U77A8> /xed/xa3 <CJK>
+<U77F0> /xed/xa4 <CJK>
+<U78F3> /xed/xa5 <CJK>
+<U78FD> /xed/xa6 <CJK>
+<U7902> /xed/xa7 <CJK>
+<U78FB> /xed/xa8 <CJK>
+<U78FC> /xed/xa9 <CJK>
+<U78F2> /xed/xaa <CJK>
+<U7905> /xed/xab <CJK>
+<U78F9> /xed/xac <CJK>
+<U78FE> /xed/xad <CJK>
+<U7904> /xed/xae <CJK>
+<U79AB> /xed/xaf <CJK>
+<U79A8> /xed/xb0 <CJK>
+<U7A5C> /xed/xb1 <CJK>
+<U7A5B> /xed/xb2 <CJK>
+<U7A56> /xed/xb3 <CJK>
+<U7A58> /xed/xb4 <CJK>
+<U7A54> /xed/xb5 <CJK>
+<U7A5A> /xed/xb6 <CJK>
+<U7ABE> /xed/xb7 <CJK>
+<U7AC0> /xed/xb8 <CJK>
+<U7AC1> /xed/xb9 <CJK>
+<U7C05> /xed/xba <CJK>
+<U7C0F> /xed/xbb <CJK>
+<U7BF2> /xed/xbc <CJK>
+<U7C00> /xed/xbd <CJK>
+<U7BFF> /xed/xbe <CJK>
+<U7BFB> /xed/xbf <CJK>
+<U7C0E> /xed/xc0 <CJK>
+<U7BF4> /xed/xc1 <CJK>
+<U7C0B> /xed/xc2 <CJK>
+<U7BF3> /xed/xc3 <CJK>
+<U7C02> /xed/xc4 <CJK>
+<U7C09> /xed/xc5 <CJK>
+<U7C03> /xed/xc6 <CJK>
+<U7C01> /xed/xc7 <CJK>
+<U7BF8> /xed/xc8 <CJK>
+<U7BFD> /xed/xc9 <CJK>
+<U7C06> /xed/xca <CJK>
+<U7BF0> /xed/xcb <CJK>
+<U7BF1> /xed/xcc <CJK>
+<U7C10> /xed/xcd <CJK>
+<U7C0A> /xed/xce <CJK>
+<U7CE8> /xed/xcf <CJK>
+<U7E2D> /xed/xd0 <CJK>
+<U7E3C> /xed/xd1 <CJK>
+<U7E42> /xed/xd2 <CJK>
+<U7E33> /xed/xd3 <CJK>
+<U9848> /xed/xd4 <CJK>
+<U7E38> /xed/xd5 <CJK>
+<U7E2A> /xed/xd6 <CJK>
+<U7E49> /xed/xd7 <CJK>
+<U7E40> /xed/xd8 <CJK>
+<U7E47> /xed/xd9 <CJK>
+<U7E29> /xed/xda <CJK>
+<U7E4C> /xed/xdb <CJK>
+<U7E30> /xed/xdc <CJK>
+<U7E3B> /xed/xdd <CJK>
+<U7E36> /xed/xde <CJK>
+<U7E44> /xed/xdf <CJK>
+<U7E3A> /xed/xe0 <CJK>
+<U7F45> /xed/xe1 <CJK>
+<U7F7F> /xed/xe2 <CJK>
+<U7F7E> /xed/xe3 <CJK>
+<U7F7D> /xed/xe4 <CJK>
+<U7FF4> /xed/xe5 <CJK>
+<U7FF2> /xed/xe6 <CJK>
+<U802C> /xed/xe7 <CJK>
+<U81BB> /xed/xe8 <CJK>
+<U81C4> /xed/xe9 <CJK>
+<U81CC> /xed/xea <CJK>
+<U81CA> /xed/xeb <CJK>
+<U81C5> /xed/xec <CJK>
+<U81C7> /xed/xed <CJK>
+<U81BC> /xed/xee <CJK>
+<U81E9> /xed/xef <CJK>
+<U825B> /xed/xf0 <CJK>
+<U825A> /xed/xf1 <CJK>
+<U825C> /xed/xf2 <CJK>
+<U8583> /xed/xf3 <CJK>
+<U8580> /xed/xf4 <CJK>
+<U858F> /xed/xf5 <CJK>
+<U85A7> /xed/xf6 <CJK>
+<U8595> /xed/xf7 <CJK>
+<U85A0> /xed/xf8 <CJK>
+<U858B> /xed/xf9 <CJK>
+<U85A3> /xed/xfa <CJK>
+<U857B> /xed/xfb <CJK>
+<U85A4> /xed/xfc <CJK>
+<U859A> /xed/xfd <CJK>
+<U859E> /xed/xfe <CJK>
+<U8577> /xee/x40 <CJK>
+<U857C> /xee/x41 <CJK>
+<U8589> /xee/x42 <CJK>
+<U85A1> /xee/x43 <CJK>
+<U857A> /xee/x44 <CJK>
+<U8578> /xee/x45 <CJK>
+<U8557> /xee/x46 <CJK>
+<U858E> /xee/x47 <CJK>
+<U8596> /xee/x48 <CJK>
+<U8586> /xee/x49 <CJK>
+<U858D> /xee/x4a <CJK>
+<U8599> /xee/x4b <CJK>
+<U859D> /xee/x4c <CJK>
+<U8581> /xee/x4d <CJK>
+<U85A2> /xee/x4e <CJK>
+<U8582> /xee/x4f <CJK>
+<U8588> /xee/x50 <CJK>
+<U8585> /xee/x51 <CJK>
+<U8579> /xee/x52 <CJK>
+<U8576> /xee/x53 <CJK>
+<U8598> /xee/x54 <CJK>
+<U8590> /xee/x55 <CJK>
+<U859F> /xee/x56 <CJK>
+<U8668> /xee/x57 <CJK>
+<U87BE> /xee/x58 <CJK>
+<U87AA> /xee/x59 <CJK>
+<U87AD> /xee/x5a <CJK>
+<U87C5> /xee/x5b <CJK>
+<U87B0> /xee/x5c <CJK>
+<U87AC> /xee/x5d <CJK>
+<U87B9> /xee/x5e <CJK>
+<U87B5> /xee/x5f <CJK>
+<U87BC> /xee/x60 <CJK>
+<U87AE> /xee/x61 <CJK>
+<U87C9> /xee/x62 <CJK>
+<U87C3> /xee/x63 <CJK>
+<U87C2> /xee/x64 <CJK>
+<U87CC> /xee/x65 <CJK>
+<U87B7> /xee/x66 <CJK>
+<U87AF> /xee/x67 <CJK>
+<U87C4> /xee/x68 <CJK>
+<U87CA> /xee/x69 <CJK>
+<U87B4> /xee/x6a <CJK>
+<U87B6> /xee/x6b <CJK>
+<U87BF> /xee/x6c <CJK>
+<U87B8> /xee/x6d <CJK>
+<U87BD> /xee/x6e <CJK>
+<U87DE> /xee/x6f <CJK>
+<U87B2> /xee/x70 <CJK>
+<U8935> /xee/x71 <CJK>
+<U8933> /xee/x72 <CJK>
+<U893C> /xee/x73 <CJK>
+<U893E> /xee/x74 <CJK>
+<U8941> /xee/x75 <CJK>
+<U8952> /xee/x76 <CJK>
+<U8937> /xee/x77 <CJK>
+<U8942> /xee/x78 <CJK>
+<U89AD> /xee/x79 <CJK>
+<U89AF> /xee/x7a <CJK>
+<U89AE> /xee/x7b <CJK>
+<U89F2> /xee/x7c <CJK>
+<U89F3> /xee/x7d <CJK>
+<U8B1E> /xee/x7e <CJK>
+<U8B18> /xee/xa1 <CJK>
+<U8B16> /xee/xa2 <CJK>
+<U8B11> /xee/xa3 <CJK>
+<U8B05> /xee/xa4 <CJK>
+<U8B0B> /xee/xa5 <CJK>
+<U8B22> /xee/xa6 <CJK>
+<U8B0F> /xee/xa7 <CJK>
+<U8B12> /xee/xa8 <CJK>
+<U8B15> /xee/xa9 <CJK>
+<U8B07> /xee/xaa <CJK>
+<U8B0D> /xee/xab <CJK>
+<U8B08> /xee/xac <CJK>
+<U8B06> /xee/xad <CJK>
+<U8B1C> /xee/xae <CJK>
+<U8B13> /xee/xaf <CJK>
+<U8B1A> /xee/xb0 <CJK>
+<U8C4F> /xee/xb1 <CJK>
+<U8C70> /xee/xb2 <CJK>
+<U8C72> /xee/xb3 <CJK>
+<U8C71> /xee/xb4 <CJK>
+<U8C6F> /xee/xb5 <CJK>
+<U8C95> /xee/xb6 <CJK>
+<U8C94> /xee/xb7 <CJK>
+<U8CF9> /xee/xb8 <CJK>
+<U8D6F> /xee/xb9 <CJK>
+<U8E4E> /xee/xba <CJK>
+<U8E4D> /xee/xbb <CJK>
+<U8E53> /xee/xbc <CJK>
+<U8E50> /xee/xbd <CJK>
+<U8E4C> /xee/xbe <CJK>
+<U8E47> /xee/xbf <CJK>
+<U8F43> /xee/xc0 <CJK>
+<U8F40> /xee/xc1 <CJK>
+<U9085> /xee/xc2 <CJK>
+<U907E> /xee/xc3 <CJK>
+<U9138> /xee/xc4 <CJK>
+<U919A> /xee/xc5 <CJK>
+<U91A2> /xee/xc6 <CJK>
+<U919B> /xee/xc7 <CJK>
+<U9199> /xee/xc8 <CJK>
+<U919F> /xee/xc9 <CJK>
+<U91A1> /xee/xca <CJK>
+<U919D> /xee/xcb <CJK>
+<U91A0> /xee/xcc <CJK>
+<U93A1> /xee/xcd <CJK>
+<U9383> /xee/xce <CJK>
+<U93AF> /xee/xcf <CJK>
+<U9364> /xee/xd0 <CJK>
+<U9356> /xee/xd1 <CJK>
+<U9347> /xee/xd2 <CJK>
+<U937C> /xee/xd3 <CJK>
+<U9358> /xee/xd4 <CJK>
+<U935C> /xee/xd5 <CJK>
+<U9376> /xee/xd6 <CJK>
+<U9349> /xee/xd7 <CJK>
+<U9350> /xee/xd8 <CJK>
+<U9351> /xee/xd9 <CJK>
+<U9360> /xee/xda <CJK>
+<U936D> /xee/xdb <CJK>
+<U938F> /xee/xdc <CJK>
+<U934C> /xee/xdd <CJK>
+<U936A> /xee/xde <CJK>
+<U9379> /xee/xdf <CJK>
+<U9357> /xee/xe0 <CJK>
+<U9355> /xee/xe1 <CJK>
+<U9352> /xee/xe2 <CJK>
+<U934F> /xee/xe3 <CJK>
+<U9371> /xee/xe4 <CJK>
+<U9377> /xee/xe5 <CJK>
+<U937B> /xee/xe6 <CJK>
+<U9361> /xee/xe7 <CJK>
+<U935E> /xee/xe8 <CJK>
+<U9363> /xee/xe9 <CJK>
+<U9367> /xee/xea <CJK>
+<U9380> /xee/xeb <CJK>
+<U934E> /xee/xec <CJK>
+<U9359> /xee/xed <CJK>
+<U95C7> /xee/xee <CJK>
+<U95C0> /xee/xef <CJK>
+<U95C9> /xee/xf0 <CJK>
+<U95C3> /xee/xf1 <CJK>
+<U95C5> /xee/xf2 <CJK>
+<U95B7> /xee/xf3 <CJK>
+<U96AE> /xee/xf4 <CJK>
+<U96B0> /xee/xf5 <CJK>
+<U96AC> /xee/xf6 <CJK>
+<U9720> /xee/xf7 <CJK>
+<U971F> /xee/xf8 <CJK>
+<U9718> /xee/xf9 <CJK>
+<U971D> /xee/xfa <CJK>
+<U9719> /xee/xfb <CJK>
+<U979A> /xee/xfc <CJK>
+<U97A1> /xee/xfd <CJK>
+<U979C> /xee/xfe <CJK>
+<U979E> /xef/x40 <CJK>
+<U979D> /xef/x41 <CJK>
+<U97D5> /xef/x42 <CJK>
+<U97D4> /xef/x43 <CJK>
+<U97F1> /xef/x44 <CJK>
+<U9841> /xef/x45 <CJK>
+<U9844> /xef/x46 <CJK>
+<U984A> /xef/x47 <CJK>
+<U9849> /xef/x48 <CJK>
+<U9845> /xef/x49 <CJK>
+<U9843> /xef/x4a <CJK>
+<U9925> /xef/x4b <CJK>
+<U992B> /xef/x4c <CJK>
+<U992C> /xef/x4d <CJK>
+<U992A> /xef/x4e <CJK>
+<U9933> /xef/x4f <CJK>
+<U9932> /xef/x50 <CJK>
+<U992F> /xef/x51 <CJK>
+<U992D> /xef/x52 <CJK>
+<U9931> /xef/x53 <CJK>
+<U9930> /xef/x54 <CJK>
+<U9998> /xef/x55 <CJK>
+<U99A3> /xef/x56 <CJK>
+<U99A1> /xef/x57 <CJK>
+<U9A02> /xef/x58 <CJK>
+<U99FA> /xef/x59 <CJK>
+<U99F4> /xef/x5a <CJK>
+<U99F7> /xef/x5b <CJK>
+<U99F9> /xef/x5c <CJK>
+<U99F8> /xef/x5d <CJK>
+<U99F6> /xef/x5e <CJK>
+<U99FB> /xef/x5f <CJK>
+<U99FD> /xef/x60 <CJK>
+<U99FE> /xef/x61 <CJK>
+<U99FC> /xef/x62 <CJK>
+<U9A03> /xef/x63 <CJK>
+<U9ABE> /xef/x64 <CJK>
+<U9AFE> /xef/x65 <CJK>
+<U9AFD> /xef/x66 <CJK>
+<U9B01> /xef/x67 <CJK>
+<U9AFC> /xef/x68 <CJK>
+<U9B48> /xef/x69 <CJK>
+<U9B9A> /xef/x6a <CJK>
+<U9BA8> /xef/x6b <CJK>
+<U9B9E> /xef/x6c <CJK>
+<U9B9B> /xef/x6d <CJK>
+<U9BA6> /xef/x6e <CJK>
+<U9BA1> /xef/x6f <CJK>
+<U9BA5> /xef/x70 <CJK>
+<U9BA4> /xef/x71 <CJK>
+<U9B86> /xef/x72 <CJK>
+<U9BA2> /xef/x73 <CJK>
+<U9BA0> /xef/x74 <CJK>
+<U9BAF> /xef/x75 <CJK>
+<U9D33> /xef/x76 <CJK>
+<U9D41> /xef/x77 <CJK>
+<U9D67> /xef/x78 <CJK>
+<U9D36> /xef/x79 <CJK>
+<U9D2E> /xef/x7a <CJK>
+<U9D2F> /xef/x7b <CJK>
+<U9D31> /xef/x7c <CJK>
+<U9D38> /xef/x7d <CJK>
+<U9D30> /xef/x7e <CJK>
+<U9D45> /xef/xa1 <CJK>
+<U9D42> /xef/xa2 <CJK>
+<U9D43> /xef/xa3 <CJK>
+<U9D3E> /xef/xa4 <CJK>
+<U9D37> /xef/xa5 <CJK>
+<U9D40> /xef/xa6 <CJK>
+<U9D3D> /xef/xa7 <CJK>
+<U7FF5> /xef/xa8 <CJK>
+<U9D2D> /xef/xa9 <CJK>
+<U9E8A> /xef/xaa <CJK>
+<U9E89> /xef/xab <CJK>
+<U9E8D> /xef/xac <CJK>
+<U9EB0> /xef/xad <CJK>
+<U9EC8> /xef/xae <CJK>
+<U9EDA> /xef/xaf <CJK>
+<U9EFB> /xef/xb0 <CJK>
+<U9EFF> /xef/xb1 <CJK>
+<U9F24> /xef/xb2 <CJK>
+<U9F23> /xef/xb3 <CJK>
+<U9F22> /xef/xb4 <CJK>
+<U9F54> /xef/xb5 <CJK>
+<U9FA0> /xef/xb6 <CJK>
+<U5131> /xef/xb7 <CJK>
+<U512D> /xef/xb8 <CJK>
+<U512E> /xef/xb9 <CJK>
+<U5698> /xef/xba <CJK>
+<U569C> /xef/xbb <CJK>
+<U5697> /xef/xbc <CJK>
+<U569A> /xef/xbd <CJK>
+<U569D> /xef/xbe <CJK>
+<U5699> /xef/xbf <CJK>
+<U5970> /xef/xc0 <CJK>
+<U5B3C> /xef/xc1 <CJK>
+<U5C69> /xef/xc2 <CJK>
+<U5C6A> /xef/xc3 <CJK>
+<U5DC0> /xef/xc4 <CJK>
+<U5E6D> /xef/xc5 <CJK>
+<U5E6E> /xef/xc6 <CJK>
+<U61D8> /xef/xc7 <CJK>
+<U61DF> /xef/xc8 <CJK>
+<U61ED> /xef/xc9 <CJK>
+<U61EE> /xef/xca <CJK>
+<U61F1> /xef/xcb <CJK>
+<U61EA> /xef/xcc <CJK>
+<U61F0> /xef/xcd <CJK>
+<U61EB> /xef/xce <CJK>
+<U61D6> /xef/xcf <CJK>
+<U61E9> /xef/xd0 <CJK>
+<U64FF> /xef/xd1 <CJK>
+<U6504> /xef/xd2 <CJK>
+<U64FD> /xef/xd3 <CJK>
+<U64F8> /xef/xd4 <CJK>
+<U6501> /xef/xd5 <CJK>
+<U6503> /xef/xd6 <CJK>
+<U64FC> /xef/xd7 <CJK>
+<U6594> /xef/xd8 <CJK>
+<U65DB> /xef/xd9 <CJK>
+<U66DA> /xef/xda <CJK>
+<U66DB> /xef/xdb <CJK>
+<U66D8> /xef/xdc <CJK>
+<U6AC5> /xef/xdd <CJK>
+<U6AB9> /xef/xde <CJK>
+<U6ABD> /xef/xdf <CJK>
+<U6AE1> /xef/xe0 <CJK>
+<U6AC6> /xef/xe1 <CJK>
+<U6ABA> /xef/xe2 <CJK>
+<U6AB6> /xef/xe3 <CJK>
+<U6AB7> /xef/xe4 <CJK>
+<U6AC7> /xef/xe5 <CJK>
+<U6AB4> /xef/xe6 <CJK>
+<U6AAD> /xef/xe7 <CJK>
+<U6B5E> /xef/xe8 <CJK>
+<U6BC9> /xef/xe9 <CJK>
+<U6C0B> /xef/xea <CJK>
+<U7007> /xef/xeb <CJK>
+<U700C> /xef/xec <CJK>
+<U700D> /xef/xed <CJK>
+<U7001> /xef/xee <CJK>
+<U7005> /xef/xef <CJK>
+<U7014> /xef/xf0 <CJK>
+<U700E> /xef/xf1 <CJK>
+<U6FFF> /xef/xf2 <CJK>
+<U7000> /xef/xf3 <CJK>
+<U6FFB> /xef/xf4 <CJK>
+<U7026> /xef/xf5 <CJK>
+<U6FFC> /xef/xf6 <CJK>
+<U6FF7> /xef/xf7 <CJK>
+<U700A> /xef/xf8 <CJK>
+<U7201> /xef/xf9 <CJK>
+<U71FF> /xef/xfa <CJK>
+<U71F9> /xef/xfb <CJK>
+<U7203> /xef/xfc <CJK>
+<U71FD> /xef/xfd <CJK>
+<U7376> /xef/xfe <CJK>
+<U74B8> /xf0/x40 <CJK>
+<U74C0> /xf0/x41 <CJK>
+<U74B5> /xf0/x42 <CJK>
+<U74C1> /xf0/x43 <CJK>
+<U74BE> /xf0/x44 <CJK>
+<U74B6> /xf0/x45 <CJK>
+<U74BB> /xf0/x46 <CJK>
+<U74C2> /xf0/x47 <CJK>
+<U7514> /xf0/x48 <CJK>
+<U7513> /xf0/x49 <CJK>
+<U765C> /xf0/x4a <CJK>
+<U7664> /xf0/x4b <CJK>
+<U7659> /xf0/x4c <CJK>
+<U7650> /xf0/x4d <CJK>
+<U7653> /xf0/x4e <CJK>
+<U7657> /xf0/x4f <CJK>
+<U765A> /xf0/x50 <CJK>
+<U76A6> /xf0/x51 <CJK>
+<U76BD> /xf0/x52 <CJK>
+<U76EC> /xf0/x53 <CJK>
+<U77C2> /xf0/x54 <CJK>
+<U77BA> /xf0/x55 <CJK>
+<U78FF> /xf0/x56 <CJK>
+<U790C> /xf0/x57 <CJK>
+<U7913> /xf0/x58 <CJK>
+<U7914> /xf0/x59 <CJK>
+<U7909> /xf0/x5a <CJK>
+<U7910> /xf0/x5b <CJK>
+<U7912> /xf0/x5c <CJK>
+<U7911> /xf0/x5d <CJK>
+<U79AD> /xf0/x5e <CJK>
+<U79AC> /xf0/x5f <CJK>
+<U7A5F> /xf0/x60 <CJK>
+<U7C1C> /xf0/x61 <CJK>
+<U7C29> /xf0/x62 <CJK>
+<U7C19> /xf0/x63 <CJK>
+<U7C20> /xf0/x64 <CJK>
+<U7C1F> /xf0/x65 <CJK>
+<U7C2D> /xf0/x66 <CJK>
+<U7C1D> /xf0/x67 <CJK>
+<U7C26> /xf0/x68 <CJK>
+<U7C28> /xf0/x69 <CJK>
+<U7C22> /xf0/x6a <CJK>
+<U7C25> /xf0/x6b <CJK>
+<U7C30> /xf0/x6c <CJK>
+<U7E5C> /xf0/x6d <CJK>
+<U7E50> /xf0/x6e <CJK>
+<U7E56> /xf0/x6f <CJK>
+<U7E63> /xf0/x70 <CJK>
+<U7E58> /xf0/x71 <CJK>
+<U7E62> /xf0/x72 <CJK>
+<U7E5F> /xf0/x73 <CJK>
+<U7E51> /xf0/x74 <CJK>
+<U7E60> /xf0/x75 <CJK>
+<U7E57> /xf0/x76 <CJK>
+<U7E53> /xf0/x77 <CJK>
+<U7FB5> /xf0/x78 <CJK>
+<U7FB3> /xf0/x79 <CJK>
+<U7FF7> /xf0/x7a <CJK>
+<U7FF8> /xf0/x7b <CJK>
+<U8075> /xf0/x7c <CJK>
+<U81D1> /xf0/x7d <CJK>
+<U81D2> /xf0/x7e <CJK>
+<U81D0> /xf0/xa1 <CJK>
+<U825F> /xf0/xa2 <CJK>
+<U825E> /xf0/xa3 <CJK>
+<U85B4> /xf0/xa4 <CJK>
+<U85C6> /xf0/xa5 <CJK>
+<U85C0> /xf0/xa6 <CJK>
+<U85C3> /xf0/xa7 <CJK>
+<U85C2> /xf0/xa8 <CJK>
+<U85B3> /xf0/xa9 <CJK>
+<U85B5> /xf0/xaa <CJK>
+<U85BD> /xf0/xab <CJK>
+<U85C7> /xf0/xac <CJK>
+<U85C4> /xf0/xad <CJK>
+<U85BF> /xf0/xae <CJK>
+<U85CB> /xf0/xaf <CJK>
+<U85CE> /xf0/xb0 <CJK>
+<U85C8> /xf0/xb1 <CJK>
+<U85C5> /xf0/xb2 <CJK>
+<U85B1> /xf0/xb3 <CJK>
+<U85B6> /xf0/xb4 <CJK>
+<U85D2> /xf0/xb5 <CJK>
+<U8624> /xf0/xb6 <CJK>
+<U85B8> /xf0/xb7 <CJK>
+<U85B7> /xf0/xb8 <CJK>
+<U85BE> /xf0/xb9 <CJK>
+<U8669> /xf0/xba <CJK>
+<U87E7> /xf0/xbb <CJK>
+<U87E6> /xf0/xbc <CJK>
+<U87E2> /xf0/xbd <CJK>
+<U87DB> /xf0/xbe <CJK>
+<U87EB> /xf0/xbf <CJK>
+<U87EA> /xf0/xc0 <CJK>
+<U87E5> /xf0/xc1 <CJK>
+<U87DF> /xf0/xc2 <CJK>
+<U87F3> /xf0/xc3 <CJK>
+<U87E4> /xf0/xc4 <CJK>
+<U87D4> /xf0/xc5 <CJK>
+<U87DC> /xf0/xc6 <CJK>
+<U87D3> /xf0/xc7 <CJK>
+<U87ED> /xf0/xc8 <CJK>
+<U87D8> /xf0/xc9 <CJK>
+<U87E3> /xf0/xca <CJK>
+<U87A4> /xf0/xcb <CJK>
+<U87D7> /xf0/xcc <CJK>
+<U87D9> /xf0/xcd <CJK>
+<U8801> /xf0/xce <CJK>
+<U87F4> /xf0/xcf <CJK>
+<U87E8> /xf0/xd0 <CJK>
+<U87DD> /xf0/xd1 <CJK>
+<U8953> /xf0/xd2 <CJK>
+<U894B> /xf0/xd3 <CJK>
+<U894F> /xf0/xd4 <CJK>
+<U894C> /xf0/xd5 <CJK>
+<U8946> /xf0/xd6 <CJK>
+<U8950> /xf0/xd7 <CJK>
+<U8951> /xf0/xd8 <CJK>
+<U8949> /xf0/xd9 <CJK>
+<U8B2A> /xf0/xda <CJK>
+<U8B27> /xf0/xdb <CJK>
+<U8B23> /xf0/xdc <CJK>
+<U8B33> /xf0/xdd <CJK>
+<U8B30> /xf0/xde <CJK>
+<U8B35> /xf0/xdf <CJK>
+<U8B47> /xf0/xe0 <CJK>
+<U8B2F> /xf0/xe1 <CJK>
+<U8B3C> /xf0/xe2 <CJK>
+<U8B3E> /xf0/xe3 <CJK>
+<U8B31> /xf0/xe4 <CJK>
+<U8B25> /xf0/xe5 <CJK>
+<U8B37> /xf0/xe6 <CJK>
+<U8B26> /xf0/xe7 <CJK>
+<U8B36> /xf0/xe8 <CJK>
+<U8B2E> /xf0/xe9 <CJK>
+<U8B24> /xf0/xea <CJK>
+<U8B3B> /xf0/xeb <CJK>
+<U8B3D> /xf0/xec <CJK>
+<U8B3A> /xf0/xed <CJK>
+<U8C42> /xf0/xee <CJK>
+<U8C75> /xf0/xef <CJK>
+<U8C99> /xf0/xf0 <CJK>
+<U8C98> /xf0/xf1 <CJK>
+<U8C97> /xf0/xf2 <CJK>
+<U8CFE> /xf0/xf3 <CJK>
+<U8D04> /xf0/xf4 <CJK>
+<U8D02> /xf0/xf5 <CJK>
+<U8D00> /xf0/xf6 <CJK>
+<U8E5C> /xf0/xf7 <CJK>
+<U8E62> /xf0/xf8 <CJK>
+<U8E60> /xf0/xf9 <CJK>
+<U8E57> /xf0/xfa <CJK>
+<U8E56> /xf0/xfb <CJK>
+<U8E5E> /xf0/xfc <CJK>
+<U8E65> /xf0/xfd <CJK>
+<U8E67> /xf0/xfe <CJK>
+<U8E5B> /xf1/x40 <CJK>
+<U8E5A> /xf1/x41 <CJK>
+<U8E61> /xf1/x42 <CJK>
+<U8E5D> /xf1/x43 <CJK>
+<U8E69> /xf1/x44 <CJK>
+<U8E54> /xf1/x45 <CJK>
+<U8F46> /xf1/x46 <CJK>
+<U8F47> /xf1/x47 <CJK>
+<U8F48> /xf1/x48 <CJK>
+<U8F4B> /xf1/x49 <CJK>
+<U9128> /xf1/x4a <CJK>
+<U913A> /xf1/x4b <CJK>
+<U913B> /xf1/x4c <CJK>
+<U913E> /xf1/x4d <CJK>
+<U91A8> /xf1/x4e <CJK>
+<U91A5> /xf1/x4f <CJK>
+<U91A7> /xf1/x50 <CJK>
+<U91AF> /xf1/x51 <CJK>
+<U91AA> /xf1/x52 <CJK>
+<U93B5> /xf1/x53 <CJK>
+<U938C> /xf1/x54 <CJK>
+<U9392> /xf1/x55 <CJK>
+<U93B7> /xf1/x56 <CJK>
+<U939B> /xf1/x57 <CJK>
+<U939D> /xf1/x58 <CJK>
+<U9389> /xf1/x59 <CJK>
+<U93A7> /xf1/x5a <CJK>
+<U938E> /xf1/x5b <CJK>
+<U93AA> /xf1/x5c <CJK>
+<U939E> /xf1/x5d <CJK>
+<U93A6> /xf1/x5e <CJK>
+<U9395> /xf1/x5f <CJK>
+<U9388> /xf1/x60 <CJK>
+<U9399> /xf1/x61 <CJK>
+<U939F> /xf1/x62 <CJK>
+<U938D> /xf1/x63 <CJK>
+<U93B1> /xf1/x64 <CJK>
+<U9391> /xf1/x65 <CJK>
+<U93B2> /xf1/x66 <CJK>
+<U93A4> /xf1/x67 <CJK>
+<U93A8> /xf1/x68 <CJK>
+<U93B4> /xf1/x69 <CJK>
+<U93A3> /xf1/x6a <CJK>
+<U93A5> /xf1/x6b <CJK>
+<U95D2> /xf1/x6c <CJK>
+<U95D3> /xf1/x6d <CJK>
+<U95D1> /xf1/x6e <CJK>
+<U96B3> /xf1/x6f <CJK>
+<U96D7> /xf1/x70 <CJK>
+<U96DA> /xf1/x71 <CJK>
+<U5DC2> /xf1/x72 <CJK>
+<U96DF> /xf1/x73 <CJK>
+<U96D8> /xf1/x74 <CJK>
+<U96DD> /xf1/x75 <CJK>
+<U9723> /xf1/x76 <CJK>
+<U9722> /xf1/x77 <CJK>
+<U9725> /xf1/x78 <CJK>
+<U97AC> /xf1/x79 <CJK>
+<U97AE> /xf1/x7a <CJK>
+<U97A8> /xf1/x7b <CJK>
+<U97AB> /xf1/x7c <CJK>
+<U97A4> /xf1/x7d <CJK>
+<U97AA> /xf1/x7e <CJK>
+<U97A2> /xf1/xa1 <CJK>
+<U97A5> /xf1/xa2 <CJK>
+<U97D7> /xf1/xa3 <CJK>
+<U97D9> /xf1/xa4 <CJK>
+<U97D6> /xf1/xa5 <CJK>
+<U97D8> /xf1/xa6 <CJK>
+<U97FA> /xf1/xa7 <CJK>
+<U9850> /xf1/xa8 <CJK>
+<U9851> /xf1/xa9 <CJK>
+<U9852> /xf1/xaa <CJK>
+<U98B8> /xf1/xab <CJK>
+<U9941> /xf1/xac <CJK>
+<U993C> /xf1/xad <CJK>
+<U993A> /xf1/xae <CJK>
+<U9A0F> /xf1/xaf <CJK>
+<U9A0B> /xf1/xb0 <CJK>
+<U9A09> /xf1/xb1 <CJK>
+<U9A0D> /xf1/xb2 <CJK>
+<U9A04> /xf1/xb3 <CJK>
+<U9A11> /xf1/xb4 <CJK>
+<U9A0A> /xf1/xb5 <CJK>
+<U9A05> /xf1/xb6 <CJK>
+<U9A07> /xf1/xb7 <CJK>
+<U9A06> /xf1/xb8 <CJK>
+<U9AC0> /xf1/xb9 <CJK>
+<U9ADC> /xf1/xba <CJK>
+<U9B08> /xf1/xbb <CJK>
+<U9B04> /xf1/xbc <CJK>
+<U9B05> /xf1/xbd <CJK>
+<U9B29> /xf1/xbe <CJK>
+<U9B35> /xf1/xbf <CJK>
+<U9B4A> /xf1/xc0 <CJK>
+<U9B4C> /xf1/xc1 <CJK>
+<U9B4B> /xf1/xc2 <CJK>
+<U9BC7> /xf1/xc3 <CJK>
+<U9BC6> /xf1/xc4 <CJK>
+<U9BC3> /xf1/xc5 <CJK>
+<U9BBF> /xf1/xc6 <CJK>
+<U9BC1> /xf1/xc7 <CJK>
+<U9BB5> /xf1/xc8 <CJK>
+<U9BB8> /xf1/xc9 <CJK>
+<U9BD3> /xf1/xca <CJK>
+<U9BB6> /xf1/xcb <CJK>
+<U9BC4> /xf1/xcc <CJK>
+<U9BB9> /xf1/xcd <CJK>
+<U9BBD> /xf1/xce <CJK>
+<U9D5C> /xf1/xcf <CJK>
+<U9D53> /xf1/xd0 <CJK>
+<U9D4F> /xf1/xd1 <CJK>
+<U9D4A> /xf1/xd2 <CJK>
+<U9D5B> /xf1/xd3 <CJK>
+<U9D4B> /xf1/xd4 <CJK>
+<U9D59> /xf1/xd5 <CJK>
+<U9D56> /xf1/xd6 <CJK>
+<U9D4C> /xf1/xd7 <CJK>
+<U9D57> /xf1/xd8 <CJK>
+<U9D52> /xf1/xd9 <CJK>
+<U9D54> /xf1/xda <CJK>
+<U9D5F> /xf1/xdb <CJK>
+<U9D58> /xf1/xdc <CJK>
+<U9D5A> /xf1/xdd <CJK>
+<U9E8E> /xf1/xde <CJK>
+<U9E8C> /xf1/xdf <CJK>
+<U9EDF> /xf1/xe0 <CJK>
+<U9F01> /xf1/xe1 <CJK>
+<U9F00> /xf1/xe2 <CJK>
+<U9F16> /xf1/xe3 <CJK>
+<U9F25> /xf1/xe4 <CJK>
+<U9F2B> /xf1/xe5 <CJK>
+<U9F2A> /xf1/xe6 <CJK>
+<U9F29> /xf1/xe7 <CJK>
+<U9F28> /xf1/xe8 <CJK>
+<U9F4C> /xf1/xe9 <CJK>
+<U9F55> /xf1/xea <CJK>
+<U5134> /xf1/xeb <CJK>
+<U5135> /xf1/xec <CJK>
+<U5296> /xf1/xed <CJK>
+<U52F7> /xf1/xee <CJK>
+<U53B4> /xf1/xef <CJK>
+<U56AB> /xf1/xf0 <CJK>
+<U56AD> /xf1/xf1 <CJK>
+<U56A6> /xf1/xf2 <CJK>
+<U56A7> /xf1/xf3 <CJK>
+<U56AA> /xf1/xf4 <CJK>
+<U56AC> /xf1/xf5 <CJK>
+<U58DA> /xf1/xf6 <CJK>
+<U58DD> /xf1/xf7 <CJK>
+<U58DB> /xf1/xf8 <CJK>
+<U5912> /xf1/xf9 <CJK>
+<U5B3D> /xf1/xfa <CJK>
+<U5B3E> /xf1/xfb <CJK>
+<U5B3F> /xf1/xfc <CJK>
+<U5DC3> /xf1/xfd <CJK>
+<U5E70> /xf1/xfe <CJK>
+<U5FBF> /xf2/x40 <CJK>
+<U61FB> /xf2/x41 <CJK>
+<U6507> /xf2/x42 <CJK>
+<U6510> /xf2/x43 <CJK>
+<U650D> /xf2/x44 <CJK>
+<U6509> /xf2/x45 <CJK>
+<U650C> /xf2/x46 <CJK>
+<U650E> /xf2/x47 <CJK>
+<U6584> /xf2/x48 <CJK>
+<U65DE> /xf2/x49 <CJK>
+<U65DD> /xf2/x4a <CJK>
+<U66DE> /xf2/x4b <CJK>
+<U6AE7> /xf2/x4c <CJK>
+<U6AE0> /xf2/x4d <CJK>
+<U6ACC> /xf2/x4e <CJK>
+<U6AD1> /xf2/x4f <CJK>
+<U6AD9> /xf2/x50 <CJK>
+<U6ACB> /xf2/x51 <CJK>
+<U6ADF> /xf2/x52 <CJK>
+<U6ADC> /xf2/x53 <CJK>
+<U6AD0> /xf2/x54 <CJK>
+<U6AEB> /xf2/x55 <CJK>
+<U6ACF> /xf2/x56 <CJK>
+<U6ACD> /xf2/x57 <CJK>
+<U6ADE> /xf2/x58 <CJK>
+<U6B60> /xf2/x59 <CJK>
+<U6BB0> /xf2/x5a <CJK>
+<U6C0C> /xf2/x5b <CJK>
+<U7019> /xf2/x5c <CJK>
+<U7027> /xf2/x5d <CJK>
+<U7020> /xf2/x5e <CJK>
+<U7016> /xf2/x5f <CJK>
+<U702B> /xf2/x60 <CJK>
+<U7021> /xf2/x61 <CJK>
+<U7022> /xf2/x62 <CJK>
+<U7023> /xf2/x63 <CJK>
+<U7029> /xf2/x64 <CJK>
+<U7017> /xf2/x65 <CJK>
+<U7024> /xf2/x66 <CJK>
+<U701C> /xf2/x67 <CJK>
+<U702A> /xf2/x68 <CJK>
+<U720C> /xf2/x69 <CJK>
+<U720A> /xf2/x6a <CJK>
+<U7207> /xf2/x6b <CJK>
+<U7202> /xf2/x6c <CJK>
+<U7205> /xf2/x6d <CJK>
+<U72A5> /xf2/x6e <CJK>
+<U72A6> /xf2/x6f <CJK>
+<U72A4> /xf2/x70 <CJK>
+<U72A3> /xf2/x71 <CJK>
+<U72A1> /xf2/x72 <CJK>
+<U74CB> /xf2/x73 <CJK>
+<U74C5> /xf2/x74 <CJK>
+<U74B7> /xf2/x75 <CJK>
+<U74C3> /xf2/x76 <CJK>
+<U7516> /xf2/x77 <CJK>
+<U7660> /xf2/x78 <CJK>
+<U77C9> /xf2/x79 <CJK>
+<U77CA> /xf2/x7a <CJK>
+<U77C4> /xf2/x7b <CJK>
+<U77F1> /xf2/x7c <CJK>
+<U791D> /xf2/x7d <CJK>
+<U791B> /xf2/x7e <CJK>
+<U7921> /xf2/xa1 <CJK>
+<U791C> /xf2/xa2 <CJK>
+<U7917> /xf2/xa3 <CJK>
+<U791E> /xf2/xa4 <CJK>
+<U79B0> /xf2/xa5 <CJK>
+<U7A67> /xf2/xa6 <CJK>
+<U7A68> /xf2/xa7 <CJK>
+<U7C33> /xf2/xa8 <CJK>
+<U7C3C> /xf2/xa9 <CJK>
+<U7C39> /xf2/xaa <CJK>
+<U7C2C> /xf2/xab <CJK>
+<U7C3B> /xf2/xac <CJK>
+<U7CEC> /xf2/xad <CJK>
+<U7CEA> /xf2/xae <CJK>
+<U7E76> /xf2/xaf <CJK>
+<U7E75> /xf2/xb0 <CJK>
+<U7E78> /xf2/xb1 <CJK>
+<U7E70> /xf2/xb2 <CJK>
+<U7E77> /xf2/xb3 <CJK>
+<U7E6F> /xf2/xb4 <CJK>
+<U7E7A> /xf2/xb5 <CJK>
+<U7E72> /xf2/xb6 <CJK>
+<U7E74> /xf2/xb7 <CJK>
+<U7E68> /xf2/xb8 <CJK>
+<U7F4B> /xf2/xb9 <CJK>
+<U7F4A> /xf2/xba <CJK>
+<U7F83> /xf2/xbb <CJK>
+<U7F86> /xf2/xbc <CJK>
+<U7FB7> /xf2/xbd <CJK>
+<U7FFD> /xf2/xbe <CJK>
+<U7FFE> /xf2/xbf <CJK>
+<U8078> /xf2/xc0 <CJK>
+<U81D7> /xf2/xc1 <CJK>
+<U81D5> /xf2/xc2 <CJK>
+<U8264> /xf2/xc3 <CJK>
+<U8261> /xf2/xc4 <CJK>
+<U8263> /xf2/xc5 <CJK>
+<U85EB> /xf2/xc6 <CJK>
+<U85F1> /xf2/xc7 <CJK>
+<U85ED> /xf2/xc8 <CJK>
+<U85D9> /xf2/xc9 <CJK>
+<U85E1> /xf2/xca <CJK>
+<U85E8> /xf2/xcb <CJK>
+<U85DA> /xf2/xcc <CJK>
+<U85D7> /xf2/xcd <CJK>
+<U85EC> /xf2/xce <CJK>
+<U85F2> /xf2/xcf <CJK>
+<U85F8> /xf2/xd0 <CJK>
+<U85D8> /xf2/xd1 <CJK>
+<U85DF> /xf2/xd2 <CJK>
+<U85E3> /xf2/xd3 <CJK>
+<U85DC> /xf2/xd4 <CJK>
+<U85D1> /xf2/xd5 <CJK>
+<U85F0> /xf2/xd6 <CJK>
+<U85E6> /xf2/xd7 <CJK>
+<U85EF> /xf2/xd8 <CJK>
+<U85DE> /xf2/xd9 <CJK>
+<U85E2> /xf2/xda <CJK>
+<U8800> /xf2/xdb <CJK>
+<U87FA> /xf2/xdc <CJK>
+<U8803> /xf2/xdd <CJK>
+<U87F6> /xf2/xde <CJK>
+<U87F7> /xf2/xdf <CJK>
+<U8809> /xf2/xe0 <CJK>
+<U880C> /xf2/xe1 <CJK>
+<U880B> /xf2/xe2 <CJK>
+<U8806> /xf2/xe3 <CJK>
+<U87FC> /xf2/xe4 <CJK>
+<U8808> /xf2/xe5 <CJK>
+<U87FF> /xf2/xe6 <CJK>
+<U880A> /xf2/xe7 <CJK>
+<U8802> /xf2/xe8 <CJK>
+<U8962> /xf2/xe9 <CJK>
+<U895A> /xf2/xea <CJK>
+<U895B> /xf2/xeb <CJK>
+<U8957> /xf2/xec <CJK>
+<U8961> /xf2/xed <CJK>
+<U895C> /xf2/xee <CJK>
+<U8958> /xf2/xef <CJK>
+<U895D> /xf2/xf0 <CJK>
+<U8959> /xf2/xf1 <CJK>
+<U8988> /xf2/xf2 <CJK>
+<U89B7> /xf2/xf3 <CJK>
+<U89B6> /xf2/xf4 <CJK>
+<U89F6> /xf2/xf5 <CJK>
+<U8B50> /xf2/xf6 <CJK>
+<U8B48> /xf2/xf7 <CJK>
+<U8B4A> /xf2/xf8 <CJK>
+<U8B40> /xf2/xf9 <CJK>
+<U8B53> /xf2/xfa <CJK>
+<U8B56> /xf2/xfb <CJK>
+<U8B54> /xf2/xfc <CJK>
+<U8B4B> /xf2/xfd <CJK>
+<U8B55> /xf2/xfe <CJK>
+<U8B51> /xf3/x40 <CJK>
+<U8B42> /xf3/x41 <CJK>
+<U8B52> /xf3/x42 <CJK>
+<U8B57> /xf3/x43 <CJK>
+<U8C43> /xf3/x44 <CJK>
+<U8C77> /xf3/x45 <CJK>
+<U8C76> /xf3/x46 <CJK>
+<U8C9A> /xf3/x47 <CJK>
+<U8D06> /xf3/x48 <CJK>
+<U8D07> /xf3/x49 <CJK>
+<U8D09> /xf3/x4a <CJK>
+<U8DAC> /xf3/x4b <CJK>
+<U8DAA> /xf3/x4c <CJK>
+<U8DAD> /xf3/x4d <CJK>
+<U8DAB> /xf3/x4e <CJK>
+<U8E6D> /xf3/x4f <CJK>
+<U8E78> /xf3/x50 <CJK>
+<U8E73> /xf3/x51 <CJK>
+<U8E6A> /xf3/x52 <CJK>
+<U8E6F> /xf3/x53 <CJK>
+<U8E7B> /xf3/x54 <CJK>
+<U8EC2> /xf3/x55 <CJK>
+<U8F52> /xf3/x56 <CJK>
+<U8F51> /xf3/x57 <CJK>
+<U8F4F> /xf3/x58 <CJK>
+<U8F50> /xf3/x59 <CJK>
+<U8F53> /xf3/x5a <CJK>
+<U8FB4> /xf3/x5b <CJK>
+<U9140> /xf3/x5c <CJK>
+<U913F> /xf3/x5d <CJK>
+<U91B0> /xf3/x5e <CJK>
+<U91AD> /xf3/x5f <CJK>
+<U93DE> /xf3/x60 <CJK>
+<U93C7> /xf3/x61 <CJK>
+<U93CF> /xf3/x62 <CJK>
+<U93C2> /xf3/x63 <CJK>
+<U93DA> /xf3/x64 <CJK>
+<U93D0> /xf3/x65 <CJK>
+<U93F9> /xf3/x66 <CJK>
+<U93EC> /xf3/x67 <CJK>
+<U93CC> /xf3/x68 <CJK>
+<U93D9> /xf3/x69 <CJK>
+<U93A9> /xf3/x6a <CJK>
+<U93E6> /xf3/x6b <CJK>
+<U93CA> /xf3/x6c <CJK>
+<U93D4> /xf3/x6d <CJK>
+<U93EE> /xf3/x6e <CJK>
+<U93E3> /xf3/x6f <CJK>
+<U93D5> /xf3/x70 <CJK>
+<U93C4> /xf3/x71 <CJK>
+<U93CE> /xf3/x72 <CJK>
+<U93C0> /xf3/x73 <CJK>
+<U93D2> /xf3/x74 <CJK>
+<U93E7> /xf3/x75 <CJK>
+<U957D> /xf3/x76 <CJK>
+<U95DA> /xf3/x77 <CJK>
+<U95DB> /xf3/x78 <CJK>
+<U96E1> /xf3/x79 <CJK>
+<U9729> /xf3/x7a <CJK>
+<U972B> /xf3/x7b <CJK>
+<U972C> /xf3/x7c <CJK>
+<U9728> /xf3/x7d <CJK>
+<U9726> /xf3/x7e <CJK>
+<U97B3> /xf3/xa1 <CJK>
+<U97B7> /xf3/xa2 <CJK>
+<U97B6> /xf3/xa3 <CJK>
+<U97DD> /xf3/xa4 <CJK>
+<U97DE> /xf3/xa5 <CJK>
+<U97DF> /xf3/xa6 <CJK>
+<U985C> /xf3/xa7 <CJK>
+<U9859> /xf3/xa8 <CJK>
+<U985D> /xf3/xa9 <CJK>
+<U9857> /xf3/xaa <CJK>
+<U98BF> /xf3/xab <CJK>
+<U98BD> /xf3/xac <CJK>
+<U98BB> /xf3/xad <CJK>
+<U98BE> /xf3/xae <CJK>
+<U9948> /xf3/xaf <CJK>
+<U9947> /xf3/xb0 <CJK>
+<U9943> /xf3/xb1 <CJK>
+<U99A6> /xf3/xb2 <CJK>
+<U99A7> /xf3/xb3 <CJK>
+<U9A1A> /xf3/xb4 <CJK>
+<U9A15> /xf3/xb5 <CJK>
+<U9A25> /xf3/xb6 <CJK>
+<U9A1D> /xf3/xb7 <CJK>
+<U9A24> /xf3/xb8 <CJK>
+<U9A1B> /xf3/xb9 <CJK>
+<U9A22> /xf3/xba <CJK>
+<U9A20> /xf3/xbb <CJK>
+<U9A27> /xf3/xbc <CJK>
+<U9A23> /xf3/xbd <CJK>
+<U9A1E> /xf3/xbe <CJK>
+<U9A1C> /xf3/xbf <CJK>
+<U9A14> /xf3/xc0 <CJK>
+<U9AC2> /xf3/xc1 <CJK>
+<U9B0B> /xf3/xc2 <CJK>
+<U9B0A> /xf3/xc3 <CJK>
+<U9B0E> /xf3/xc4 <CJK>
+<U9B0C> /xf3/xc5 <CJK>
+<U9B37> /xf3/xc6 <CJK>
+<U9BEA> /xf3/xc7 <CJK>
+<U9BEB> /xf3/xc8 <CJK>
+<U9BE0> /xf3/xc9 <CJK>
+<U9BDE> /xf3/xca <CJK>
+<U9BE4> /xf3/xcb <CJK>
+<U9BE6> /xf3/xcc <CJK>
+<U9BE2> /xf3/xcd <CJK>
+<U9BF0> /xf3/xce <CJK>
+<U9BD4> /xf3/xcf <CJK>
+<U9BD7> /xf3/xd0 <CJK>
+<U9BEC> /xf3/xd1 <CJK>
+<U9BDC> /xf3/xd2 <CJK>
+<U9BD9> /xf3/xd3 <CJK>
+<U9BE5> /xf3/xd4 <CJK>
+<U9BD5> /xf3/xd5 <CJK>
+<U9BE1> /xf3/xd6 <CJK>
+<U9BDA> /xf3/xd7 <CJK>
+<U9D77> /xf3/xd8 <CJK>
+<U9D81> /xf3/xd9 <CJK>
+<U9D8A> /xf3/xda <CJK>
+<U9D84> /xf3/xdb <CJK>
+<U9D88> /xf3/xdc <CJK>
+<U9D71> /xf3/xdd <CJK>
+<U9D80> /xf3/xde <CJK>
+<U9D78> /xf3/xdf <CJK>
+<U9D86> /xf3/xe0 <CJK>
+<U9D8B> /xf3/xe1 <CJK>
+<U9D8C> /xf3/xe2 <CJK>
+<U9D7D> /xf3/xe3 <CJK>
+<U9D6B> /xf3/xe4 <CJK>
+<U9D74> /xf3/xe5 <CJK>
+<U9D75> /xf3/xe6 <CJK>
+<U9D70> /xf3/xe7 <CJK>
+<U9D69> /xf3/xe8 <CJK>
+<U9D85> /xf3/xe9 <CJK>
+<U9D73> /xf3/xea <CJK>
+<U9D7B> /xf3/xeb <CJK>
+<U9D82> /xf3/xec <CJK>
+<U9D6F> /xf3/xed <CJK>
+<U9D79> /xf3/xee <CJK>
+<U9D7F> /xf3/xef <CJK>
+<U9D87> /xf3/xf0 <CJK>
+<U9D68> /xf3/xf1 <CJK>
+<U9E94> /xf3/xf2 <CJK>
+<U9E91> /xf3/xf3 <CJK>
+<U9EC0> /xf3/xf4 <CJK>
+<U9EFC> /xf3/xf5 <CJK>
+<U9F2D> /xf3/xf6 <CJK>
+<U9F40> /xf3/xf7 <CJK>
+<U9F41> /xf3/xf8 <CJK>
+<U9F4D> /xf3/xf9 <CJK>
+<U9F56> /xf3/xfa <CJK>
+<U9F57> /xf3/xfb <CJK>
+<U9F58> /xf3/xfc <CJK>
+<U5337> /xf3/xfd <CJK>
+<U56B2> /xf3/xfe <CJK>
+<U56B5> /xf4/x40 <CJK>
+<U56B3> /xf4/x41 <CJK>
+<U58E3> /xf4/x42 <CJK>
+<U5B45> /xf4/x43 <CJK>
+<U5DC6> /xf4/x44 <CJK>
+<U5DC7> /xf4/x45 <CJK>
+<U5EEE> /xf4/x46 <CJK>
+<U5EEF> /xf4/x47 <CJK>
+<U5FC0> /xf4/x48 <CJK>
+<U5FC1> /xf4/x49 <CJK>
+<U61F9> /xf4/x4a <CJK>
+<U6517> /xf4/x4b <CJK>
+<U6516> /xf4/x4c <CJK>
+<U6515> /xf4/x4d <CJK>
+<U6513> /xf4/x4e <CJK>
+<U65DF> /xf4/x4f <CJK>
+<U66E8> /xf4/x50 <CJK>
+<U66E3> /xf4/x51 <CJK>
+<U66E4> /xf4/x52 <CJK>
+<U6AF3> /xf4/x53 <CJK>
+<U6AF0> /xf4/x54 <CJK>
+<U6AEA> /xf4/x55 <CJK>
+<U6AE8> /xf4/x56 <CJK>
+<U6AF9> /xf4/x57 <CJK>
+<U6AF1> /xf4/x58 <CJK>
+<U6AEE> /xf4/x59 <CJK>
+<U6AEF> /xf4/x5a <CJK>
+<U703C> /xf4/x5b <CJK>
+<U7035> /xf4/x5c <CJK>
+<U702F> /xf4/x5d <CJK>
+<U7037> /xf4/x5e <CJK>
+<U7034> /xf4/x5f <CJK>
+<U7031> /xf4/x60 <CJK>
+<U7042> /xf4/x61 <CJK>
+<U7038> /xf4/x62 <CJK>
+<U703F> /xf4/x63 <CJK>
+<U703A> /xf4/x64 <CJK>
+<U7039> /xf4/x65 <CJK>
+<U7040> /xf4/x66 <CJK>
+<U703B> /xf4/x67 <CJK>
+<U7033> /xf4/x68 <CJK>
+<U7041> /xf4/x69 <CJK>
+<U7213> /xf4/x6a <CJK>
+<U7214> /xf4/x6b <CJK>
+<U72A8> /xf4/x6c <CJK>
+<U737D> /xf4/x6d <CJK>
+<U737C> /xf4/x6e <CJK>
+<U74BA> /xf4/x6f <CJK>
+<U76AB> /xf4/x70 <CJK>
+<U76AA> /xf4/x71 <CJK>
+<U76BE> /xf4/x72 <CJK>
+<U76ED> /xf4/x73 <CJK>
+<U77CC> /xf4/x74 <CJK>
+<U77CE> /xf4/x75 <CJK>
+<U77CF> /xf4/x76 <CJK>
+<U77CD> /xf4/x77 <CJK>
+<U77F2> /xf4/x78 <CJK>
+<U7925> /xf4/x79 <CJK>
+<U7923> /xf4/x7a <CJK>
+<U7927> /xf4/x7b <CJK>
+<U7928> /xf4/x7c <CJK>
+<U7924> /xf4/x7d <CJK>
+<U7929> /xf4/x7e <CJK>
+<U79B2> /xf4/xa1 <CJK>
+<U7A6E> /xf4/xa2 <CJK>
+<U7A6C> /xf4/xa3 <CJK>
+<U7A6D> /xf4/xa4 <CJK>
+<U7AF7> /xf4/xa5 <CJK>
+<U7C49> /xf4/xa6 <CJK>
+<U7C48> /xf4/xa7 <CJK>
+<U7C4A> /xf4/xa8 <CJK>
+<U7C47> /xf4/xa9 <CJK>
+<U7C45> /xf4/xaa <CJK>
+<U7CEE> /xf4/xab <CJK>
+<U7E7B> /xf4/xac <CJK>
+<U7E7E> /xf4/xad <CJK>
+<U7E81> /xf4/xae <CJK>
+<U7E80> /xf4/xaf <CJK>
+<U7FBA> /xf4/xb0 <CJK>
+<U7FFF> /xf4/xb1 <CJK>
+<U8079> /xf4/xb2 <CJK>
+<U81DB> /xf4/xb3 <CJK>
+<U81D9> /xf4/xb4 <CJK>
+<U820B> /xf4/xb5 <CJK>
+<U8268> /xf4/xb6 <CJK>
+<U8269> /xf4/xb7 <CJK>
+<U8622> /xf4/xb8 <CJK>
+<U85FF> /xf4/xb9 <CJK>
+<U8601> /xf4/xba <CJK>
+<U85FE> /xf4/xbb <CJK>
+<U861B> /xf4/xbc <CJK>
+<U8600> /xf4/xbd <CJK>
+<U85F6> /xf4/xbe <CJK>
+<U8604> /xf4/xbf <CJK>
+<U8609> /xf4/xc0 <CJK>
+<U8605> /xf4/xc1 <CJK>
+<U860C> /xf4/xc2 <CJK>
+<U85FD> /xf4/xc3 <CJK>
+<U8819> /xf4/xc4 <CJK>
+<U8810> /xf4/xc5 <CJK>
+<U8811> /xf4/xc6 <CJK>
+<U8817> /xf4/xc7 <CJK>
+<U8813> /xf4/xc8 <CJK>
+<U8816> /xf4/xc9 <CJK>
+<U8963> /xf4/xca <CJK>
+<U8966> /xf4/xcb <CJK>
+<U89B9> /xf4/xcc <CJK>
+<U89F7> /xf4/xcd <CJK>
+<U8B60> /xf4/xce <CJK>
+<U8B6A> /xf4/xcf <CJK>
+<U8B5D> /xf4/xd0 <CJK>
+<U8B68> /xf4/xd1 <CJK>
+<U8B63> /xf4/xd2 <CJK>
+<U8B65> /xf4/xd3 <CJK>
+<U8B67> /xf4/xd4 <CJK>
+<U8B6D> /xf4/xd5 <CJK>
+<U8DAE> /xf4/xd6 <CJK>
+<U8E86> /xf4/xd7 <CJK>
+<U8E88> /xf4/xd8 <CJK>
+<U8E84> /xf4/xd9 <CJK>
+<U8F59> /xf4/xda <CJK>
+<U8F56> /xf4/xdb <CJK>
+<U8F57> /xf4/xdc <CJK>
+<U8F55> /xf4/xdd <CJK>
+<U8F58> /xf4/xde <CJK>
+<U8F5A> /xf4/xdf <CJK>
+<U908D> /xf4/xe0 <CJK>
+<U9143> /xf4/xe1 <CJK>
+<U9141> /xf4/xe2 <CJK>
+<U91B7> /xf4/xe3 <CJK>
+<U91B5> /xf4/xe4 <CJK>
+<U91B2> /xf4/xe5 <CJK>
+<U91B3> /xf4/xe6 <CJK>
+<U940B> /xf4/xe7 <CJK>
+<U9413> /xf4/xe8 <CJK>
+<U93FB> /xf4/xe9 <CJK>
+<U9420> /xf4/xea <CJK>
+<U940F> /xf4/xeb <CJK>
+<U9414> /xf4/xec <CJK>
+<U93FE> /xf4/xed <CJK>
+<U9415> /xf4/xee <CJK>
+<U9410> /xf4/xef <CJK>
+<U9428> /xf4/xf0 <CJK>
+<U9419> /xf4/xf1 <CJK>
+<U940D> /xf4/xf2 <CJK>
+<U93F5> /xf4/xf3 <CJK>
+<U9400> /xf4/xf4 <CJK>
+<U93F7> /xf4/xf5 <CJK>
+<U9407> /xf4/xf6 <CJK>
+<U940E> /xf4/xf7 <CJK>
+<U9416> /xf4/xf8 <CJK>
+<U9412> /xf4/xf9 <CJK>
+<U93FA> /xf4/xfa <CJK>
+<U9409> /xf4/xfb <CJK>
+<U93F8> /xf4/xfc <CJK>
+<U940A> /xf4/xfd <CJK>
+<U93FF> /xf4/xfe <CJK>
+<U93FC> /xf5/x40 <CJK>
+<U940C> /xf5/x41 <CJK>
+<U93F6> /xf5/x42 <CJK>
+<U9411> /xf5/x43 <CJK>
+<U9406> /xf5/x44 <CJK>
+<U95DE> /xf5/x45 <CJK>
+<U95E0> /xf5/x46 <CJK>
+<U95DF> /xf5/x47 <CJK>
+<U972E> /xf5/x48 <CJK>
+<U972F> /xf5/x49 <CJK>
+<U97B9> /xf5/x4a <CJK>
+<U97BB> /xf5/x4b <CJK>
+<U97FD> /xf5/x4c <CJK>
+<U97FE> /xf5/x4d <CJK>
+<U9860> /xf5/x4e <CJK>
+<U9862> /xf5/x4f <CJK>
+<U9863> /xf5/x50 <CJK>
+<U985F> /xf5/x51 <CJK>
+<U98C1> /xf5/x52 <CJK>
+<U98C2> /xf5/x53 <CJK>
+<U9950> /xf5/x54 <CJK>
+<U994E> /xf5/x55 <CJK>
+<U9959> /xf5/x56 <CJK>
+<U994C> /xf5/x57 <CJK>
+<U994B> /xf5/x58 <CJK>
+<U9953> /xf5/x59 <CJK>
+<U9A32> /xf5/x5a <CJK>
+<U9A34> /xf5/x5b <CJK>
+<U9A31> /xf5/x5c <CJK>
+<U9A2C> /xf5/x5d <CJK>
+<U9A2A> /xf5/x5e <CJK>
+<U9A36> /xf5/x5f <CJK>
+<U9A29> /xf5/x60 <CJK>
+<U9A2E> /xf5/x61 <CJK>
+<U9A38> /xf5/x62 <CJK>
+<U9A2D> /xf5/x63 <CJK>
+<U9AC7> /xf5/x64 <CJK>
+<U9ACA> /xf5/x65 <CJK>
+<U9AC6> /xf5/x66 <CJK>
+<U9B10> /xf5/x67 <CJK>
+<U9B12> /xf5/x68 <CJK>
+<U9B11> /xf5/x69 <CJK>
+<U9C0B> /xf5/x6a <CJK>
+<U9C08> /xf5/x6b <CJK>
+<U9BF7> /xf5/x6c <CJK>
+<U9C05> /xf5/x6d <CJK>
+<U9C12> /xf5/x6e <CJK>
+<U9BF8> /xf5/x6f <CJK>
+<U9C40> /xf5/x70 <CJK>
+<U9C07> /xf5/x71 <CJK>
+<U9C0E> /xf5/x72 <CJK>
+<U9C06> /xf5/x73 <CJK>
+<U9C17> /xf5/x74 <CJK>
+<U9C14> /xf5/x75 <CJK>
+<U9C09> /xf5/x76 <CJK>
+<U9D9F> /xf5/x77 <CJK>
+<U9D99> /xf5/x78 <CJK>
+<U9DA4> /xf5/x79 <CJK>
+<U9D9D> /xf5/x7a <CJK>
+<U9D92> /xf5/x7b <CJK>
+<U9D98> /xf5/x7c <CJK>
+<U9D90> /xf5/x7d <CJK>
+<U9D9B> /xf5/x7e <CJK>
+<U9DA0> /xf5/xa1 <CJK>
+<U9D94> /xf5/xa2 <CJK>
+<U9D9C> /xf5/xa3 <CJK>
+<U9DAA> /xf5/xa4 <CJK>
+<U9D97> /xf5/xa5 <CJK>
+<U9DA1> /xf5/xa6 <CJK>
+<U9D9A> /xf5/xa7 <CJK>
+<U9DA2> /xf5/xa8 <CJK>
+<U9DA8> /xf5/xa9 <CJK>
+<U9D9E> /xf5/xaa <CJK>
+<U9DA3> /xf5/xab <CJK>
+<U9DBF> /xf5/xac <CJK>
+<U9DA9> /xf5/xad <CJK>
+<U9D96> /xf5/xae <CJK>
+<U9DA6> /xf5/xaf <CJK>
+<U9DA7> /xf5/xb0 <CJK>
+<U9E99> /xf5/xb1 <CJK>
+<U9E9B> /xf5/xb2 <CJK>
+<U9E9A> /xf5/xb3 <CJK>
+<U9EE5> /xf5/xb4 <CJK>
+<U9EE4> /xf5/xb5 <CJK>
+<U9EE7> /xf5/xb6 <CJK>
+<U9EE6> /xf5/xb7 <CJK>
+<U9F30> /xf5/xb8 <CJK>
+<U9F2E> /xf5/xb9 <CJK>
+<U9F5B> /xf5/xba <CJK>
+<U9F60> /xf5/xbb <CJK>
+<U9F5E> /xf5/xbc <CJK>
+<U9F5D> /xf5/xbd <CJK>
+<U9F59> /xf5/xbe <CJK>
+<U9F91> /xf5/xbf <CJK>
+<U513A> /xf5/xc0 <CJK>
+<U5139> /xf5/xc1 <CJK>
+<U5298> /xf5/xc2 <CJK>
+<U5297> /xf5/xc3 <CJK>
+<U56C3> /xf5/xc4 <CJK>
+<U56BD> /xf5/xc5 <CJK>
+<U56BE> /xf5/xc6 <CJK>
+<U5B48> /xf5/xc7 <CJK>
+<U5B47> /xf5/xc8 <CJK>
+<U5DCB> /xf5/xc9 <CJK>
+<U5DCF> /xf5/xca <CJK>
+<U5EF1> /xf5/xcb <CJK>
+<U61FD> /xf5/xcc <CJK>
+<U651B> /xf5/xcd <CJK>
+<U6B02> /xf5/xce <CJK>
+<U6AFC> /xf5/xcf <CJK>
+<U6B03> /xf5/xd0 <CJK>
+<U6AF8> /xf5/xd1 <CJK>
+<U6B00> /xf5/xd2 <CJK>
+<U7043> /xf5/xd3 <CJK>
+<U7044> /xf5/xd4 <CJK>
+<U704A> /xf5/xd5 <CJK>
+<U7048> /xf5/xd6 <CJK>
+<U7049> /xf5/xd7 <CJK>
+<U7045> /xf5/xd8 <CJK>
+<U7046> /xf5/xd9 <CJK>
+<U721D> /xf5/xda <CJK>
+<U721A> /xf5/xdb <CJK>
+<U7219> /xf5/xdc <CJK>
+<U737E> /xf5/xdd <CJK>
+<U7517> /xf5/xde <CJK>
+<U766A> /xf5/xdf <CJK>
+<U77D0> /xf5/xe0 <CJK>
+<U792D> /xf5/xe1 <CJK>
+<U7931> /xf5/xe2 <CJK>
+<U792F> /xf5/xe3 <CJK>
+<U7C54> /xf5/xe4 <CJK>
+<U7C53> /xf5/xe5 <CJK>
+<U7CF2> /xf5/xe6 <CJK>
+<U7E8A> /xf5/xe7 <CJK>
+<U7E87> /xf5/xe8 <CJK>
+<U7E88> /xf5/xe9 <CJK>
+<U7E8B> /xf5/xea <CJK>
+<U7E86> /xf5/xeb <CJK>
+<U7E8D> /xf5/xec <CJK>
+<U7F4D> /xf5/xed <CJK>
+<U7FBB> /xf5/xee <CJK>
+<U8030> /xf5/xef <CJK>
+<U81DD> /xf5/xf0 <CJK>
+<U8618> /xf5/xf1 <CJK>
+<U862A> /xf5/xf2 <CJK>
+<U8626> /xf5/xf3 <CJK>
+<U861F> /xf5/xf4 <CJK>
+<U8623> /xf5/xf5 <CJK>
+<U861C> /xf5/xf6 <CJK>
+<U8619> /xf5/xf7 <CJK>
+<U8627> /xf5/xf8 <CJK>
+<U862E> /xf5/xf9 <CJK>
+<U8621> /xf5/xfa <CJK>
+<U8620> /xf5/xfb <CJK>
+<U8629> /xf5/xfc <CJK>
+<U861E> /xf5/xfd <CJK>
+<U8625> /xf5/xfe <CJK>
+<U8829> /xf6/x40 <CJK>
+<U881D> /xf6/x41 <CJK>
+<U881B> /xf6/x42 <CJK>
+<U8820> /xf6/x43 <CJK>
+<U8824> /xf6/x44 <CJK>
+<U881C> /xf6/x45 <CJK>
+<U882B> /xf6/x46 <CJK>
+<U884A> /xf6/x47 <CJK>
+<U896D> /xf6/x48 <CJK>
+<U8969> /xf6/x49 <CJK>
+<U896E> /xf6/x4a <CJK>
+<U896B> /xf6/x4b <CJK>
+<U89FA> /xf6/x4c <CJK>
+<U8B79> /xf6/x4d <CJK>
+<U8B78> /xf6/x4e <CJK>
+<U8B45> /xf6/x4f <CJK>
+<U8B7A> /xf6/x50 <CJK>
+<U8B7B> /xf6/x51 <CJK>
+<U8D10> /xf6/x52 <CJK>
+<U8D14> /xf6/x53 <CJK>
+<U8DAF> /xf6/x54 <CJK>
+<U8E8E> /xf6/x55 <CJK>
+<U8E8C> /xf6/x56 <CJK>
+<U8F5E> /xf6/x57 <CJK>
+<U8F5B> /xf6/x58 <CJK>
+<U8F5D> /xf6/x59 <CJK>
+<U9146> /xf6/x5a <CJK>
+<U9144> /xf6/x5b <CJK>
+<U9145> /xf6/x5c <CJK>
+<U91B9> /xf6/x5d <CJK>
+<U943F> /xf6/x5e <CJK>
+<U943B> /xf6/x5f <CJK>
+<U9436> /xf6/x60 <CJK>
+<U9429> /xf6/x61 <CJK>
+<U943D> /xf6/x62 <CJK>
+<U943C> /xf6/x63 <CJK>
+<U9430> /xf6/x64 <CJK>
+<U9439> /xf6/x65 <CJK>
+<U942A> /xf6/x66 <CJK>
+<U9437> /xf6/x67 <CJK>
+<U942C> /xf6/x68 <CJK>
+<U9440> /xf6/x69 <CJK>
+<U9431> /xf6/x6a <CJK>
+<U95E5> /xf6/x6b <CJK>
+<U95E4> /xf6/x6c <CJK>
+<U95E3> /xf6/x6d <CJK>
+<U9735> /xf6/x6e <CJK>
+<U973A> /xf6/x6f <CJK>
+<U97BF> /xf6/x70 <CJK>
+<U97E1> /xf6/x71 <CJK>
+<U9864> /xf6/x72 <CJK>
+<U98C9> /xf6/x73 <CJK>
+<U98C6> /xf6/x74 <CJK>
+<U98C0> /xf6/x75 <CJK>
+<U9958> /xf6/x76 <CJK>
+<U9956> /xf6/x77 <CJK>
+<U9A39> /xf6/x78 <CJK>
+<U9A3D> /xf6/x79 <CJK>
+<U9A46> /xf6/x7a <CJK>
+<U9A44> /xf6/x7b <CJK>
+<U9A42> /xf6/x7c <CJK>
+<U9A41> /xf6/x7d <CJK>
+<U9A3A> /xf6/x7e <CJK>
+<U9A3F> /xf6/xa1 <CJK>
+<U9ACD> /xf6/xa2 <CJK>
+<U9B15> /xf6/xa3 <CJK>
+<U9B17> /xf6/xa4 <CJK>
+<U9B18> /xf6/xa5 <CJK>
+<U9B16> /xf6/xa6 <CJK>
+<U9B3A> /xf6/xa7 <CJK>
+<U9B52> /xf6/xa8 <CJK>
+<U9C2B> /xf6/xa9 <CJK>
+<U9C1D> /xf6/xaa <CJK>
+<U9C1C> /xf6/xab <CJK>
+<U9C2C> /xf6/xac <CJK>
+<U9C23> /xf6/xad <CJK>
+<U9C28> /xf6/xae <CJK>
+<U9C29> /xf6/xaf <CJK>
+<U9C24> /xf6/xb0 <CJK>
+<U9C21> /xf6/xb1 <CJK>
+<U9DB7> /xf6/xb2 <CJK>
+<U9DB6> /xf6/xb3 <CJK>
+<U9DBC> /xf6/xb4 <CJK>
+<U9DC1> /xf6/xb5 <CJK>
+<U9DC7> /xf6/xb6 <CJK>
+<U9DCA> /xf6/xb7 <CJK>
+<U9DCF> /xf6/xb8 <CJK>
+<U9DBE> /xf6/xb9 <CJK>
+<U9DC5> /xf6/xba <CJK>
+<U9DC3> /xf6/xbb <CJK>
+<U9DBB> /xf6/xbc <CJK>
+<U9DB5> /xf6/xbd <CJK>
+<U9DCE> /xf6/xbe <CJK>
+<U9DB9> /xf6/xbf <CJK>
+<U9DBA> /xf6/xc0 <CJK>
+<U9DAC> /xf6/xc1 <CJK>
+<U9DC8> /xf6/xc2 <CJK>
+<U9DB1> /xf6/xc3 <CJK>
+<U9DAD> /xf6/xc4 <CJK>
+<U9DCC> /xf6/xc5 <CJK>
+<U9DB3> /xf6/xc6 <CJK>
+<U9DCD> /xf6/xc7 <CJK>
+<U9DB2> /xf6/xc8 <CJK>
+<U9E7A> /xf6/xc9 <CJK>
+<U9E9C> /xf6/xca <CJK>
+<U9EEB> /xf6/xcb <CJK>
+<U9EEE> /xf6/xcc <CJK>
+<U9EED> /xf6/xcd <CJK>
+<U9F1B> /xf6/xce <CJK>
+<U9F18> /xf6/xcf <CJK>
+<U9F1A> /xf6/xd0 <CJK>
+<U9F31> /xf6/xd1 <CJK>
+<U9F4E> /xf6/xd2 <CJK>
+<U9F65> /xf6/xd3 <CJK>
+<U9F64> /xf6/xd4 <CJK>
+<U9F92> /xf6/xd5 <CJK>
+<U4EB9> /xf6/xd6 <CJK>
+<U56C6> /xf6/xd7 <CJK>
+<U56C5> /xf6/xd8 <CJK>
+<U56CB> /xf6/xd9 <CJK>
+<U5971> /xf6/xda <CJK>
+<U5B4B> /xf6/xdb <CJK>
+<U5B4C> /xf6/xdc <CJK>
+<U5DD5> /xf6/xdd <CJK>
+<U5DD1> /xf6/xde <CJK>
+<U5EF2> /xf6/xdf <CJK>
+<U6521> /xf6/xe0 <CJK>
+<U6520> /xf6/xe1 <CJK>
+<U6526> /xf6/xe2 <CJK>
+<U6522> /xf6/xe3 <CJK>
+<U6B0B> /xf6/xe4 <CJK>
+<U6B08> /xf6/xe5 <CJK>
+<U6B09> /xf6/xe6 <CJK>
+<U6C0D> /xf6/xe7 <CJK>
+<U7055> /xf6/xe8 <CJK>
+<U7056> /xf6/xe9 <CJK>
+<U7057> /xf6/xea <CJK>
+<U7052> /xf6/xeb <CJK>
+<U721E> /xf6/xec <CJK>
+<U721F> /xf6/xed <CJK>
+<U72A9> /xf6/xee <CJK>
+<U737F> /xf6/xef <CJK>
+<U74D8> /xf6/xf0 <CJK>
+<U74D5> /xf6/xf1 <CJK>
+<U74D9> /xf6/xf2 <CJK>
+<U74D7> /xf6/xf3 <CJK>
+<U766D> /xf6/xf4 <CJK>
+<U76AD> /xf6/xf5 <CJK>
+<U7935> /xf6/xf6 <CJK>
+<U79B4> /xf6/xf7 <CJK>
+<U7A70> /xf6/xf8 <CJK>
+<U7A71> /xf6/xf9 <CJK>
+<U7C57> /xf6/xfa <CJK>
+<U7C5C> /xf6/xfb <CJK>
+<U7C59> /xf6/xfc <CJK>
+<U7C5B> /xf6/xfd <CJK>
+<U7C5A> /xf6/xfe <CJK>
+<U7CF4> /xf7/x40 <CJK>
+<U7CF1> /xf7/x41 <CJK>
+<U7E91> /xf7/x42 <CJK>
+<U7F4F> /xf7/x43 <CJK>
+<U7F87> /xf7/x44 <CJK>
+<U81DE> /xf7/x45 <CJK>
+<U826B> /xf7/x46 <CJK>
+<U8634> /xf7/x47 <CJK>
+<U8635> /xf7/x48 <CJK>
+<U8633> /xf7/x49 <CJK>
+<U862C> /xf7/x4a <CJK>
+<U8632> /xf7/x4b <CJK>
+<U8636> /xf7/x4c <CJK>
+<U882C> /xf7/x4d <CJK>
+<U8828> /xf7/x4e <CJK>
+<U8826> /xf7/x4f <CJK>
+<U882A> /xf7/x50 <CJK>
+<U8825> /xf7/x51 <CJK>
+<U8971> /xf7/x52 <CJK>
+<U89BF> /xf7/x53 <CJK>
+<U89BE> /xf7/x54 <CJK>
+<U89FB> /xf7/x55 <CJK>
+<U8B7E> /xf7/x56 <CJK>
+<U8B84> /xf7/x57 <CJK>
+<U8B82> /xf7/x58 <CJK>
+<U8B86> /xf7/x59 <CJK>
+<U8B85> /xf7/x5a <CJK>
+<U8B7F> /xf7/x5b <CJK>
+<U8D15> /xf7/x5c <CJK>
+<U8E95> /xf7/x5d <CJK>
+<U8E94> /xf7/x5e <CJK>
+<U8E9A> /xf7/x5f <CJK>
+<U8E92> /xf7/x60 <CJK>
+<U8E90> /xf7/x61 <CJK>
+<U8E96> /xf7/x62 <CJK>
+<U8E97> /xf7/x63 <CJK>
+<U8F60> /xf7/x64 <CJK>
+<U8F62> /xf7/x65 <CJK>
+<U9147> /xf7/x66 <CJK>
+<U944C> /xf7/x67 <CJK>
+<U9450> /xf7/x68 <CJK>
+<U944A> /xf7/x69 <CJK>
+<U944B> /xf7/x6a <CJK>
+<U944F> /xf7/x6b <CJK>
+<U9447> /xf7/x6c <CJK>
+<U9445> /xf7/x6d <CJK>
+<U9448> /xf7/x6e <CJK>
+<U9449> /xf7/x6f <CJK>
+<U9446> /xf7/x70 <CJK>
+<U973F> /xf7/x71 <CJK>
+<U97E3> /xf7/x72 <CJK>
+<U986A> /xf7/x73 <CJK>
+<U9869> /xf7/x74 <CJK>
+<U98CB> /xf7/x75 <CJK>
+<U9954> /xf7/x76 <CJK>
+<U995B> /xf7/x77 <CJK>
+<U9A4E> /xf7/x78 <CJK>
+<U9A53> /xf7/x79 <CJK>
+<U9A54> /xf7/x7a <CJK>
+<U9A4C> /xf7/x7b <CJK>
+<U9A4F> /xf7/x7c <CJK>
+<U9A48> /xf7/x7d <CJK>
+<U9A4A> /xf7/x7e <CJK>
+<U9A49> /xf7/xa1 <CJK>
+<U9A52> /xf7/xa2 <CJK>
+<U9A50> /xf7/xa3 <CJK>
+<U9AD0> /xf7/xa4 <CJK>
+<U9B19> /xf7/xa5 <CJK>
+<U9B2B> /xf7/xa6 <CJK>
+<U9B3B> /xf7/xa7 <CJK>
+<U9B56> /xf7/xa8 <CJK>
+<U9B55> /xf7/xa9 <CJK>
+<U9C46> /xf7/xaa <CJK>
+<U9C48> /xf7/xab <CJK>
+<U9C3F> /xf7/xac <CJK>
+<U9C44> /xf7/xad <CJK>
+<U9C39> /xf7/xae <CJK>
+<U9C33> /xf7/xaf <CJK>
+<U9C41> /xf7/xb0 <CJK>
+<U9C3C> /xf7/xb1 <CJK>
+<U9C37> /xf7/xb2 <CJK>
+<U9C34> /xf7/xb3 <CJK>
+<U9C32> /xf7/xb4 <CJK>
+<U9C3D> /xf7/xb5 <CJK>
+<U9C36> /xf7/xb6 <CJK>
+<U9DDB> /xf7/xb7 <CJK>
+<U9DD2> /xf7/xb8 <CJK>
+<U9DDE> /xf7/xb9 <CJK>
+<U9DDA> /xf7/xba <CJK>
+<U9DCB> /xf7/xbb <CJK>
+<U9DD0> /xf7/xbc <CJK>
+<U9DDC> /xf7/xbd <CJK>
+<U9DD1> /xf7/xbe <CJK>
+<U9DDF> /xf7/xbf <CJK>
+<U9DE9> /xf7/xc0 <CJK>
+<U9DD9> /xf7/xc1 <CJK>
+<U9DD8> /xf7/xc2 <CJK>
+<U9DD6> /xf7/xc3 <CJK>
+<U9DF5> /xf7/xc4 <CJK>
+<U9DD5> /xf7/xc5 <CJK>
+<U9DDD> /xf7/xc6 <CJK>
+<U9EB6> /xf7/xc7 <CJK>
+<U9EF0> /xf7/xc8 <CJK>
+<U9F35> /xf7/xc9 <CJK>
+<U9F33> /xf7/xca <CJK>
+<U9F32> /xf7/xcb <CJK>
+<U9F42> /xf7/xcc <CJK>
+<U9F6B> /xf7/xcd <CJK>
+<U9F95> /xf7/xce <CJK>
+<U9FA2> /xf7/xcf <CJK>
+<U513D> /xf7/xd0 <CJK>
+<U5299> /xf7/xd1 <CJK>
+<U58E8> /xf7/xd2 <CJK>
+<U58E7> /xf7/xd3 <CJK>
+<U5972> /xf7/xd4 <CJK>
+<U5B4D> /xf7/xd5 <CJK>
+<U5DD8> /xf7/xd6 <CJK>
+<U882F> /xf7/xd7 <CJK>
+<U5F4F> /xf7/xd8 <CJK>
+<U6201> /xf7/xd9 <CJK>
+<U6203> /xf7/xda <CJK>
+<U6204> /xf7/xdb <CJK>
+<U6529> /xf7/xdc <CJK>
+<U6525> /xf7/xdd <CJK>
+<U6596> /xf7/xde <CJK>
+<U66EB> /xf7/xdf <CJK>
+<U6B11> /xf7/xe0 <CJK>
+<U6B12> /xf7/xe1 <CJK>
+<U6B0F> /xf7/xe2 <CJK>
+<U6BCA> /xf7/xe3 <CJK>
+<U705B> /xf7/xe4 <CJK>
+<U705A> /xf7/xe5 <CJK>
+<U7222> /xf7/xe6 <CJK>
+<U7382> /xf7/xe7 <CJK>
+<U7381> /xf7/xe8 <CJK>
+<U7383> /xf7/xe9 <CJK>
+<U7670> /xf7/xea <CJK>
+<U77D4> /xf7/xeb <CJK>
+<U7C67> /xf7/xec <CJK>
+<U7C66> /xf7/xed <CJK>
+<U7E95> /xf7/xee <CJK>
+<U826C> /xf7/xef <CJK>
+<U863A> /xf7/xf0 <CJK>
+<U8640> /xf7/xf1 <CJK>
+<U8639> /xf7/xf2 <CJK>
+<U863C> /xf7/xf3 <CJK>
+<U8631> /xf7/xf4 <CJK>
+<U863B> /xf7/xf5 <CJK>
+<U863E> /xf7/xf6 <CJK>
+<U8830> /xf7/xf7 <CJK>
+<U8832> /xf7/xf8 <CJK>
+<U882E> /xf7/xf9 <CJK>
+<U8833> /xf7/xfa <CJK>
+<U8976> /xf7/xfb <CJK>
+<U8974> /xf7/xfc <CJK>
+<U8973> /xf7/xfd <CJK>
+<U89FE> /xf7/xfe <CJK>
+<U8B8C> /xf8/x40 <CJK>
+<U8B8E> /xf8/x41 <CJK>
+<U8B8B> /xf8/x42 <CJK>
+<U8B88> /xf8/x43 <CJK>
+<U8C45> /xf8/x44 <CJK>
+<U8D19> /xf8/x45 <CJK>
+<U8E98> /xf8/x46 <CJK>
+<U8F64> /xf8/x47 <CJK>
+<U8F63> /xf8/x48 <CJK>
+<U91BC> /xf8/x49 <CJK>
+<U9462> /xf8/x4a <CJK>
+<U9455> /xf8/x4b <CJK>
+<U945D> /xf8/x4c <CJK>
+<U9457> /xf8/x4d <CJK>
+<U945E> /xf8/x4e <CJK>
+<U97C4> /xf8/x4f <CJK>
+<U97C5> /xf8/x50 <CJK>
+<U9800> /xf8/x51 <CJK>
+<U9A56> /xf8/x52 <CJK>
+<U9A59> /xf8/x53 <CJK>
+<U9B1E> /xf8/x54 <CJK>
+<U9B1F> /xf8/x55 <CJK>
+<U9B20> /xf8/x56 <CJK>
+<U9C52> /xf8/x57 <CJK>
+<U9C58> /xf8/x58 <CJK>
+<U9C50> /xf8/x59 <CJK>
+<U9C4A> /xf8/x5a <CJK>
+<U9C4D> /xf8/x5b <CJK>
+<U9C4B> /xf8/x5c <CJK>
+<U9C55> /xf8/x5d <CJK>
+<U9C59> /xf8/x5e <CJK>
+<U9C4C> /xf8/x5f <CJK>
+<U9C4E> /xf8/x60 <CJK>
+<U9DFB> /xf8/x61 <CJK>
+<U9DF7> /xf8/x62 <CJK>
+<U9DEF> /xf8/x63 <CJK>
+<U9DE3> /xf8/x64 <CJK>
+<U9DEB> /xf8/x65 <CJK>
+<U9DF8> /xf8/x66 <CJK>
+<U9DE4> /xf8/x67 <CJK>
+<U9DF6> /xf8/x68 <CJK>
+<U9DE1> /xf8/x69 <CJK>
+<U9DEE> /xf8/x6a <CJK>
+<U9DE6> /xf8/x6b <CJK>
+<U9DF2> /xf8/x6c <CJK>
+<U9DF0> /xf8/x6d <CJK>
+<U9DE2> /xf8/x6e <CJK>
+<U9DEC> /xf8/x6f <CJK>
+<U9DF4> /xf8/x70 <CJK>
+<U9DF3> /xf8/x71 <CJK>
+<U9DE8> /xf8/x72 <CJK>
+<U9DED> /xf8/x73 <CJK>
+<U9EC2> /xf8/x74 <CJK>
+<U9ED0> /xf8/x75 <CJK>
+<U9EF2> /xf8/x76 <CJK>
+<U9EF3> /xf8/x77 <CJK>
+<U9F06> /xf8/x78 <CJK>
+<U9F1C> /xf8/x79 <CJK>
+<U9F38> /xf8/x7a <CJK>
+<U9F37> /xf8/x7b <CJK>
+<U9F36> /xf8/x7c <CJK>
+<U9F43> /xf8/x7d <CJK>
+<U9F4F> /xf8/x7e <CJK>
+<U9F71> /xf8/xa1 <CJK>
+<U9F70> /xf8/xa2 <CJK>
+<U9F6E> /xf8/xa3 <CJK>
+<U9F6F> /xf8/xa4 <CJK>
+<U56D3> /xf8/xa5 <CJK>
+<U56CD> /xf8/xa6 <CJK>
+<U5B4E> /xf8/xa7 <CJK>
+<U5C6D> /xf8/xa8 <CJK>
+<U652D> /xf8/xa9 <CJK>
+<U66ED> /xf8/xaa <CJK>
+<U66EE> /xf8/xab <CJK>
+<U6B13> /xf8/xac <CJK>
+<U705F> /xf8/xad <CJK>
+<U7061> /xf8/xae <CJK>
+<U705D> /xf8/xaf <CJK>
+<U7060> /xf8/xb0 <CJK>
+<U7223> /xf8/xb1 <CJK>
+<U74DB> /xf8/xb2 <CJK>
+<U74E5> /xf8/xb3 <CJK>
+<U77D5> /xf8/xb4 <CJK>
+<U7938> /xf8/xb5 <CJK>
+<U79B7> /xf8/xb6 <CJK>
+<U79B6> /xf8/xb7 <CJK>
+<U7C6A> /xf8/xb8 <CJK>
+<U7E97> /xf8/xb9 <CJK>
+<U7F89> /xf8/xba <CJK>
+<U826D> /xf8/xbb <CJK>
+<U8643> /xf8/xbc <CJK>
+<U8838> /xf8/xbd <CJK>
+<U8837> /xf8/xbe <CJK>
+<U8835> /xf8/xbf <CJK>
+<U884B> /xf8/xc0 <CJK>
+<U8B94> /xf8/xc1 <CJK>
+<U8B95> /xf8/xc2 <CJK>
+<U8E9E> /xf8/xc3 <CJK>
+<U8E9F> /xf8/xc4 <CJK>
+<U8EA0> /xf8/xc5 <CJK>
+<U8E9D> /xf8/xc6 <CJK>
+<U91BE> /xf8/xc7 <CJK>
+<U91BD> /xf8/xc8 <CJK>
+<U91C2> /xf8/xc9 <CJK>
+<U946B> /xf8/xca <CJK>
+<U9468> /xf8/xcb <CJK>
+<U9469> /xf8/xcc <CJK>
+<U96E5> /xf8/xcd <CJK>
+<U9746> /xf8/xce <CJK>
+<U9743> /xf8/xcf <CJK>
+<U9747> /xf8/xd0 <CJK>
+<U97C7> /xf8/xd1 <CJK>
+<U97E5> /xf8/xd2 <CJK>
+<U9A5E> /xf8/xd3 <CJK>
+<U9AD5> /xf8/xd4 <CJK>
+<U9B59> /xf8/xd5 <CJK>
+<U9C63> /xf8/xd6 <CJK>
+<U9C67> /xf8/xd7 <CJK>
+<U9C66> /xf8/xd8 <CJK>
+<U9C62> /xf8/xd9 <CJK>
+<U9C5E> /xf8/xda <CJK>
+<U9C60> /xf8/xdb <CJK>
+<U9E02> /xf8/xdc <CJK>
+<U9DFE> /xf8/xdd <CJK>
+<U9E07> /xf8/xde <CJK>
+<U9E03> /xf8/xdf <CJK>
+<U9E06> /xf8/xe0 <CJK>
+<U9E05> /xf8/xe1 <CJK>
+<U9E00> /xf8/xe2 <CJK>
+<U9E01> /xf8/xe3 <CJK>
+<U9E09> /xf8/xe4 <CJK>
+<U9DFF> /xf8/xe5 <CJK>
+<U9DFD> /xf8/xe6 <CJK>
+<U9E04> /xf8/xe7 <CJK>
+<U9EA0> /xf8/xe8 <CJK>
+<U9F1E> /xf8/xe9 <CJK>
+<U9F46> /xf8/xea <CJK>
+<U9F74> /xf8/xeb <CJK>
+<U9F75> /xf8/xec <CJK>
+<U9F76> /xf8/xed <CJK>
+<U56D4> /xf8/xee <CJK>
+<U652E> /xf8/xef <CJK>
+<U65B8> /xf8/xf0 <CJK>
+<U6B18> /xf8/xf1 <CJK>
+<U6B19> /xf8/xf2 <CJK>
+<U6B17> /xf8/xf3 <CJK>
+<U6B1A> /xf8/xf4 <CJK>
+<U7062> /xf8/xf5 <CJK>
+<U7226> /xf8/xf6 <CJK>
+<U72AA> /xf8/xf7 <CJK>
+<U77D8> /xf8/xf8 <CJK>
+<U77D9> /xf8/xf9 <CJK>
+<U7939> /xf8/xfa <CJK>
+<U7C69> /xf8/xfb <CJK>
+<U7C6B> /xf8/xfc <CJK>
+<U7CF6> /xf8/xfd <CJK>
+<U7E9A> /xf8/xfe <CJK>
+<U7E98> /xf9/x40 <CJK>
+<U7E9B> /xf9/x41 <CJK>
+<U7E99> /xf9/x42 <CJK>
+<U81E0> /xf9/x43 <CJK>
+<U81E1> /xf9/x44 <CJK>
+<U8646> /xf9/x45 <CJK>
+<U8647> /xf9/x46 <CJK>
+<U8648> /xf9/x47 <CJK>
+<U8979> /xf9/x48 <CJK>
+<U897A> /xf9/x49 <CJK>
+<U897C> /xf9/x4a <CJK>
+<U897B> /xf9/x4b <CJK>
+<U89FF> /xf9/x4c <CJK>
+<U8B98> /xf9/x4d <CJK>
+<U8B99> /xf9/x4e <CJK>
+<U8EA5> /xf9/x4f <CJK>
+<U8EA4> /xf9/x50 <CJK>
+<U8EA3> /xf9/x51 <CJK>
+<U946E> /xf9/x52 <CJK>
+<U946D> /xf9/x53 <CJK>
+<U946F> /xf9/x54 <CJK>
+<U9471> /xf9/x55 <CJK>
+<U9473> /xf9/x56 <CJK>
+<U9749> /xf9/x57 <CJK>
+<U9872> /xf9/x58 <CJK>
+<U995F> /xf9/x59 <CJK>
+<U9C68> /xf9/x5a <CJK>
+<U9C6E> /xf9/x5b <CJK>
+<U9C6D> /xf9/x5c <CJK>
+<U9E0B> /xf9/x5d <CJK>
+<U9E0D> /xf9/x5e <CJK>
+<U9E10> /xf9/x5f <CJK>
+<U9E0F> /xf9/x60 <CJK>
+<U9E12> /xf9/x61 <CJK>
+<U9E11> /xf9/x62 <CJK>
+<U9EA1> /xf9/x63 <CJK>
+<U9EF5> /xf9/x64 <CJK>
+<U9F09> /xf9/x65 <CJK>
+<U9F47> /xf9/x66 <CJK>
+<U9F78> /xf9/x67 <CJK>
+<U9F7B> /xf9/x68 <CJK>
+<U9F7A> /xf9/x69 <CJK>
+<U9F79> /xf9/x6a <CJK>
+<U571E> /xf9/x6b <CJK>
+<U7066> /xf9/x6c <CJK>
+<U7C6F> /xf9/x6d <CJK>
+<U883C> /xf9/x6e <CJK>
+<U8DB2> /xf9/x6f <CJK>
+<U8EA6> /xf9/x70 <CJK>
+<U91C3> /xf9/x71 <CJK>
+<U9474> /xf9/x72 <CJK>
+<U9478> /xf9/x73 <CJK>
+<U9476> /xf9/x74 <CJK>
+<U9475> /xf9/x75 <CJK>
+<U9A60> /xf9/x76 <CJK>
+<U9C74> /xf9/x77 <CJK>
+<U9C73> /xf9/x78 <CJK>
+<U9C71> /xf9/x79 <CJK>
+<U9C75> /xf9/x7a <CJK>
+<U9E14> /xf9/x7b <CJK>
+<U9E13> /xf9/x7c <CJK>
+<U9EF6> /xf9/x7d <CJK>
+<U9F0A> /xf9/x7e <CJK>
+<U9FA4> /xf9/xa1 <CJK>
+<U7068> /xf9/xa2 <CJK>
+<U7065> /xf9/xa3 <CJK>
+<U7CF7> /xf9/xa4 <CJK>
+<U866A> /xf9/xa5 <CJK>
+<U883E> /xf9/xa6 <CJK>
+<U883D> /xf9/xa7 <CJK>
+<U883F> /xf9/xa8 <CJK>
+<U8B9E> /xf9/xa9 <CJK>
+<U8C9C> /xf9/xaa <CJK>
+<U8EA9> /xf9/xab <CJK>
+<U8EC9> /xf9/xac <CJK>
+<U974B> /xf9/xad <CJK>
+<U9873> /xf9/xae <CJK>
+<U9874> /xf9/xaf <CJK>
+<U98CC> /xf9/xb0 <CJK>
+<U9961> /xf9/xb1 <CJK>
+<U99AB> /xf9/xb2 <CJK>
+<U9A64> /xf9/xb3 <CJK>
+<U9A66> /xf9/xb4 <CJK>
+<U9A67> /xf9/xb5 <CJK>
+<U9B24> /xf9/xb6 <CJK>
+<U9E15> /xf9/xb7 <CJK>
+<U9E17> /xf9/xb8 <CJK>
+<U9F48> /xf9/xb9 <CJK>
+<U6207> /xf9/xba <CJK>
+<U6B1E> /xf9/xbb <CJK>
+<U7227> /xf9/xbc <CJK>
+<U864C> /xf9/xbd <CJK>
+<U8EA8> /xf9/xbe <CJK>
+<U9482> /xf9/xbf <CJK>
+<U9480> /xf9/xc0 <CJK>
+<U9481> /xf9/xc1 <CJK>
+<U9A69> /xf9/xc2 <CJK>
+<U9A68> /xf9/xc3 <CJK>
+<U9B2E> /xf9/xc4 <CJK>
+<U9E19> /xf9/xc5 <CJK>
+<U7229> /xf9/xc6 <CJK>
+<U864B> /xf9/xc7 <CJK>
+<U8B9F> /xf9/xc8 <CJK>
+<U9483> /xf9/xc9 <CJK>
+<U9C79> /xf9/xca <CJK>
+<U9EB7> /xf9/xcb <CJK>
+<U7675> /xf9/xcc <CJK>
+<U9A6B> /xf9/xcd <CJK>
+<U9C7A> /xf9/xce <CJK>
+<U9E1D> /xf9/xcf <CJK>
+<U7069> /xf9/xd0 <CJK>
+<U706A> /xf9/xd1 <CJK>
+<U9EA4> /xf9/xd2 <CJK>
+<U9F7E> /xf9/xd3 <CJK>
+<U9F49> /xf9/xd4 <CJK>
+<U9F98> /xf9/xd5 <CJK>
+<U7881> /xf9/xd6 <CJK>
+<U92B9> /xf9/xd7 <CJK>
+<U88CF> /xf9/xd8 <CJK>
+<U58BB> /xf9/xd9 <CJK>
+<U6052> /xf9/xda <CJK>
+<U7CA7> /xf9/xdb <CJK>
+<U5AFA> /xf9/xdc <CJK>
+<U2554> /xf9/xdd BOX DRAWINGS DOUBLE DOWN AND RIGHT
+<U2566> /xf9/xde BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+<U2557> /xf9/xdf BOX DRAWINGS DOUBLE DOWN AND LEFT
+<U2560> /xf9/xe0 BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+<U256C> /xf9/xe1 BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+<U2563> /xf9/xe2 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+<U255A> /xf9/xe3 BOX DRAWINGS DOUBLE UP AND RIGHT
+<U2569> /xf9/xe4 BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+<U255D> /xf9/xe5 BOX DRAWINGS DOUBLE UP AND LEFT
+<U2552> /xf9/xe6 BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+<U2564> /xf9/xe7 BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+<U2555> /xf9/xe8 BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+%IRREVERSIBLE%<U255E> /xf9/xe9 BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+%IRREVERSIBLE%<U256A> /xf9/xea BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+%IRREVERSIBLE%<U2561> /xf9/xeb BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+<U2558> /xf9/xec BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+<U2567> /xf9/xed BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+<U255B> /xf9/xee BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+<U2553> /xf9/xef BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+<U2565> /xf9/xf0 BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+<U2556> /xf9/xf1 BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+<U255F> /xf9/xf2 BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+<U256B> /xf9/xf3 BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+<U2562> /xf9/xf4 BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+<U2559> /xf9/xf5 BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+<U2568> /xf9/xf6 BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+<U255C> /xf9/xf7 BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+<U2551> /xf9/xf8 BOX DRAWINGS DOUBLE VERTICAL
+%IRREVERSIBLE%<U2550> /xf9/xf9 BOX DRAWINGS DOUBLE HORIZONTAL
+%IRREVERSIBLE%<U256D> /xf9/xfa BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+%IRREVERSIBLE%<U256E> /xf9/xfb BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+%IRREVERSIBLE%<U2570> /xf9/xfc BOX DRAWINGS LIGHT ARC UP AND RIGHT
+%IRREVERSIBLE%<U256F> /xf9/xfd BOX DRAWINGS LIGHT ARC UP AND LEFT
+<U2593> /xf9/xfe DARK SHADE
+END CHARMAP
+
+WIDTH
+<U3000>...<U2593> 2
+END WIDTH
diff --git a/util/unicode/codecs/big5/big5.pro b/util/unicode/codecs/big5/big5.pro
new file mode 100644
index 0000000000..84cf33033c
--- /dev/null
+++ b/util/unicode/codecs/big5/big5.pro
@@ -0,0 +1,6 @@
+TEMPLATE = app
+CONFIG -= moc
+
+# Input
+SOURCES += main.cpp
+RESOURCES += big5.qrc
diff --git a/util/unicode/codecs/big5/big5.qrc b/util/unicode/codecs/big5/big5.qrc
new file mode 100644
index 0000000000..033eb0a510
--- /dev/null
+++ b/util/unicode/codecs/big5/big5.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/">
+ <file>BIG5</file>
+</qresource>
+</RCC>
+
diff --git a/util/unicode/codecs/big5/main.cpp b/util/unicode/codecs/big5/main.cpp
new file mode 100644
index 0000000000..edd70e5ddc
--- /dev/null
+++ b/util/unicode/codecs/big5/main.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qtextcodec.h>
+#include <qbytearray.h>
+#include <qstring.h>
+#include <qdebug.h>
+#include <qfile.h>
+#include <qcoreapplication.h>
+#include <qset.h>
+
+struct Map { Map(uint u, uint b) : uc(u), b5(b) {} uint uc; uint b5; };
+
+int main(int argc, char **argv)
+{
+ QCoreApplication app(argc, argv);
+ QTextCodec *big5 = QTextCodec::codecForName("Big5-hkscs");
+
+#if 0
+ QFile f("/home/lars/dev/qt-4.0/util/unicode/data/big5-eten.txt");
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line = f.readLine();
+ if (line.startsWith("#"))
+ continue;
+ line.replace("0x", "");
+ line.replace("U+", "");
+ line.replace("\t", " ");
+ line = line.simplified();
+ QList<QByteArray> split = line.split(' ');
+ bool ok;
+ int b5 = split.at(0).toInt(&ok, 16);
+ Q_ASSERT(ok);
+ int uc = split.at(1).toInt(&ok, 16);
+ Q_ASSERT(ok);
+ if (b5 < 0x100)
+ continue;
+#else
+ QFile f(":/BIG5");
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line = f.readLine();
+ if (line.startsWith("CHARMAP"))
+ break;
+ }
+ QSet<uint> b5_ok;
+ QSet<uint> uc_ok;
+ QList<Map> b5_to_uc_map;
+ QList<Map> uc_to_b5_map;
+ while (!f.atEnd()) {
+ QByteArray line = f.readLine();
+ if (line.startsWith("%"))
+ continue;
+ if (line.startsWith("END CHARMAP"))
+ break;
+ line.replace("/x", "");
+ line.replace("<U", "");
+ line.replace(">", "");
+ line.replace("\t", " ");
+ line = line.simplified();
+ QList<QByteArray> split = line.split(' ');
+ bool ok;
+ int b5 = split.at(1).toInt(&ok, 16);
+ Q_ASSERT(ok);
+ int uc = split.at(0).toInt(&ok, 16);
+ Q_ASSERT(ok);
+ if (b5 < 0x100 || uc > 0xffff)
+ continue;
+#endif
+
+// qDebug() << hex << "testing: '" << b5 << "' - '" << uc << "'";
+ QByteArray ba;
+
+ ba += (char)(uchar)(b5 >> 8);
+ ba += (char)(uchar)(b5 & 0xff);
+
+ QString s = big5->toUnicode(ba);
+ Q_ASSERT(s.length() == 1);
+ QString s2;
+ s2 = QChar(uc);
+ ba = big5->fromUnicode(s2);
+ Q_ASSERT(ba.length() <= 2);
+ int round;
+ if (ba.length() == 1)
+ round = (int)(uchar)ba[0];
+ else
+ round = ((int)(uchar)ba[0] << 8) + (int)(uchar)ba[1];
+ if (b5 != round)
+ uc_to_b5_map += Map(uc, b5);
+ else
+ b5_ok.insert(b5);
+
+ if (s[0].unicode() != uc)
+ b5_to_uc_map += Map(uc, b5);
+ else
+ uc_ok.insert(uc);
+ };
+
+ QList<QByteArray> list;
+ foreach(Map m, b5_to_uc_map) {
+ if (!uc_ok.contains(m.b5))
+ list += QByteArray(" { 0x" + QByteArray::number(m.b5, 16) + ", 0x" + QByteArray::number(m.uc, 16) + " }\n");;
+ }
+ QByteArray ba;
+ qSort(list);
+ foreach(QByteArray a, list)
+ ba += a;
+ qDebug() << "struct B5Map b5_to_uc_map = {\n" << ba + "\n};";
+
+ list = QList<QByteArray>();
+ foreach(Map m, uc_to_b5_map)
+ if (!b5_ok.contains(m.uc))
+ list += QByteArray(" { 0x" + QByteArray::number(m.uc, 16) + ", 0x" + QByteArray::number(m.b5, 16) + " }\n");;
+ ba = QByteArray();
+ qSort(list);
+ foreach(QByteArray a, list)
+ ba += a;
+ qDebug() << "struct B5Map uc_to_b5_map = {\n" << ba + "\n};";
+}
diff --git a/util/unicode/data/ArabicShaping.txt b/util/unicode/data/ArabicShaping.txt
new file mode 100644
index 0000000000..9c0514ff57
--- /dev/null
+++ b/util/unicode/data/ArabicShaping.txt
@@ -0,0 +1,338 @@
+# ArabicShaping-5.0.0.txt
+# Date: 2006-07-14, 11:23:00 PST [KW]
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# This file defines the shaping classes for Arabic and Syriac
+# positional shaping, repeating in machine readable form the
+# information printed in Tables 8-3, 8-7, 8-8, 8-11, 8-12, and
+# 8-13 of The Unicode Standard, Version 4.0.
+#
+# See sections 8.2 and 8.3 of The Unicode Standard, Version 4.0
+# for more information.
+#
+# Each line contains four fields, separated by a semicolon.
+#
+# Field 0: the code point, in 4-digit hexadecimal
+# form, of an Arabic or Syriac character.
+# Field 1: gives a short schematic name for that character,
+# abbreviated from the normative Unicode character name.
+# Field 2: defines the joining type (property name: Joining_Type)
+# R Right_Joining
+# L Left_Joining
+# D Dual_Joining
+# C Join_Causing
+# U Non_Joining
+# T Transparent
+# See the Arabic block description for more information on these types.
+# Field 3: defines the joining group (property name: Joining_Group)
+#
+# The values of the joining group are based schematically on character
+# names. Where a schematic character name consists of two or more parts separated
+# by spaces, the formal Joining_Group property value, as specified in
+# PropertyValueAliases.txt, consists of the same name parts joined by
+# underscores. Hence, the entry:
+#
+# 0629; TEH MARBUTA; R; TEH MARBUTA
+#
+# corresponds to [Joining_Group = Teh_Marbuta].
+#
+# Note: For historical reasons, the property value [Joining_Group = Hamza_On_Heh_Goal]
+# is anachronistically named. It used to apply to both of the following characters
+# in earlier versions of the standard:
+#
+# U+06C2 ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+# U+06C3 ARABIC LETTER TEH MARBUTA GOAL
+#
+# However, it currently applies only to U+06C3, and *not* to U+06C2.
+# To avoid destabilizing existing Joining_Group property aliases, the
+# value Hamza_On_Heh_Goal has not been changed, despite the fact that it
+# no longer applies to Hamza On Heh Goal, but only to Teh Marbuta Goal.
+#
+# Note: Code points that are not explicitly listed in this file are
+# either of joining type T or U:
+#
+# - Those that not explicitly listed that are of General Category Mn, Me, or Cf
+# have joining type T.
+# - All others not explicitly listed have type U.
+#
+# For an explicit listing of characters of joining type T, see
+# the derived property file DerivedJoiningType.txt.
+#
+# There are currently no characters of type L defined in Unicode.
+#
+# #############################################################
+
+# Unicode; Schematic Name; Joining Type; Joining Group
+
+# Arabic characters
+
+0600; ARABIC NUMBER SIGN; U; No_Joining_Group
+0601; ARABIC SIGN SANAH; U; No_Joining_Group
+0602; ARABIC FOOTNOTE MARKER; U; No_Joining_Group
+0603; ARABIC SIGN SAFHA; U; No_Joining_Group
+060B; AFGHANI SIGN; U; No_Joining_Group
+0621; HAMZA; U; No_Joining_Group
+0622; MADDA ON ALEF; R; ALEF
+0623; HAMZA ON ALEF; R; ALEF
+0624; HAMZA ON WAW; R; WAW
+0625; HAMZA UNDER ALEF; R; ALEF
+0626; HAMZA ON YEH; D; YEH
+0627; ALEF; R; ALEF
+0628; BEH; D; BEH
+0629; TEH MARBUTA; R; TEH MARBUTA
+062A; TEH; D; BEH
+062B; THEH; D; BEH
+062C; JEEM; D; HAH
+062D; HAH; D; HAH
+062E; KHAH; D; HAH
+062F; DAL; R; DAL
+0630; THAL; R; DAL
+0631; REH; R; REH
+0632; ZAIN; R; REH
+0633; SEEN; D; SEEN
+0634; SHEEN; D; SEEN
+0635; SAD; D; SAD
+0636; DAD; D; SAD
+0637; TAH; D; TAH
+0638; ZAH; D; TAH
+0639; AIN; D; AIN
+063A; GHAIN; D; AIN
+0640; TATWEEL; C; No_Joining_Group
+0641; FEH; D; FEH
+0642; QAF; D; QAF
+0643; KAF; D; KAF
+0644; LAM; D; LAM
+0645; MEEM; D; MEEM
+0646; NOON; D; NOON
+0647; HEH; D; HEH
+0648; WAW; R; WAW
+0649; ALEF MAKSURA; D; YEH
+064A; YEH; D; YEH
+066E; DOTLESS BEH; D; BEH
+066F; DOTLESS QAF; D; QAF
+0671; HAMZAT WASL ON ALEF; R; ALEF
+0672; WAVY HAMZA ON ALEF; R; ALEF
+0673; WAVY HAMZA UNDER ALEF; R; ALEF
+0674; HIGH HAMZA; U; No_Joining_Group
+0675; HIGH HAMZA ALEF; R; ALEF
+0676; HIGH HAMZA WAW; R; WAW
+0677; HIGH HAMZA WAW WITH DAMMA; R; WAW
+0678; HIGH HAMZA YEH; D; YEH
+0679; TEH WITH SMALL TAH; D; BEH
+067A; TEH WITH 2 DOTS VERTICAL ABOVE; D; BEH
+067B; BEH WITH 2 DOTS VERTICAL BELOW; D; BEH
+067C; TEH WITH RING; D; BEH
+067D; TEH WITH 3 DOTS ABOVE DOWNWARD; D; BEH
+067E; TEH WITH 3 DOTS BELOW; D; BEH
+067F; TEH WITH 4 DOTS ABOVE; D; BEH
+0680; BEH WITH 4 DOTS BELOW; D; BEH
+0681; HAMZA ON HAH; D; HAH
+0682; HAH WITH 2 DOTS VERTICAL ABOVE; D; HAH
+0683; HAH WITH MIDDLE 2 DOTS; D; HAH
+0684; HAH WITH MIDDLE 2 DOTS VERTICAL; D; HAH
+0685; HAH WITH 3 DOTS ABOVE; D; HAH
+0686; HAH WITH MIDDLE 3 DOTS DOWNWARD; D; HAH
+0687; HAH WITH MIDDLE 4 DOTS; D; HAH
+0688; DAL WITH SMALL TAH; R; DAL
+0689; DAL WITH RING; R; DAL
+068A; DAL WITH DOT BELOW; R; DAL
+068B; DAL WITH DOT BELOW AND SMALL TAH; R; DAL
+068C; DAL WITH 2 DOTS ABOVE; R; DAL
+068D; DAL WITH 2 DOTS BELOW; R; DAL
+068E; DAL WITH 3 DOTS ABOVE; R; DAL
+068F; DAL WITH 3 DOTS ABOVE DOWNWARD; R; DAL
+0690; DAL WITH 4 DOTS ABOVE; R; DAL
+0691; REH WITH SMALL TAH; R; REH
+0692; REH WITH SMALL V; R; REH
+0693; REH WITH RING; R; REH
+0694; REH WITH DOT BELOW; R; REH
+0695; REH WITH SMALL V BELOW; R; REH
+0696; REH WITH DOT BELOW AND DOT ABOVE; R; REH
+0697; REH WITH 2 DOTS ABOVE; R; REH
+0698; REH WITH 3 DOTS ABOVE; R; REH
+0699; REH WITH 4 DOTS ABOVE; R; REH
+069A; SEEN WITH DOT BELOW AND DOT ABOVE; D; SEEN
+069B; SEEN WITH 3 DOTS BELOW; D; SEEN
+069C; SEEN WITH 3 DOTS BELOW AND 3 DOTS ABOVE; D; SEEN
+069D; SAD WITH 2 DOTS BELOW; D; SAD
+069E; SAD WITH 3 DOTS ABOVE; D; SAD
+069F; TAH WITH 3 DOTS ABOVE; D; TAH
+06A0; AIN WITH 3 DOTS ABOVE; D; AIN
+06A1; DOTLESS FEH; D; FEH
+06A2; FEH WITH DOT MOVED BELOW; D; FEH
+06A3; FEH WITH DOT BELOW; D; FEH
+06A4; FEH WITH 3 DOTS ABOVE; D; FEH
+06A5; FEH WITH 3 DOTS BELOW; D; FEH
+06A6; FEH WITH 4 DOTS ABOVE; D; FEH
+06A7; QAF WITH DOT ABOVE; D; QAF
+06A8; QAF WITH 3 DOTS ABOVE; D; QAF
+06A9; KEHEH; D; GAF
+06AA; SWASH KAF; D; SWASH KAF
+06AB; KAF WITH RING; D; GAF
+06AC; KAF WITH DOT ABOVE; D; KAF
+06AD; KAF WITH 3 DOTS ABOVE; D; KAF
+06AE; KAF WITH 3 DOTS BELOW; D; KAF
+06AF; GAF; D; GAF
+06B0; GAF WITH RING; D; GAF
+06B1; GAF WITH 2 DOTS ABOVE; D; GAF
+06B2; GAF WITH 2 DOTS BELOW; D; GAF
+06B3; GAF WITH 2 DOTS VERTICAL BELOW; D; GAF
+06B4; GAF WITH 3 DOTS ABOVE; D; GAF
+06B5; LAM WITH SMALL V; D; LAM
+06B6; LAM WITH DOT ABOVE; D; LAM
+06B7; LAM WITH 3 DOTS ABOVE; D; LAM
+06B8; LAM WITH 3 DOTS BELOW; D; LAM
+06B9; NOON WITH DOT BELOW; D; NOON
+06BA; DOTLESS NOON; D; NOON
+06BB; DOTLESS NOON WITH SMALL TAH; D; NOON
+06BC; NOON WITH RING; D; NOON
+06BD; NOON WITH 3 DOTS ABOVE; D; NOON
+06BE; KNOTTED HEH; D; KNOTTED HEH
+06BF; HAH WITH MIDDLE 3 DOTS DOWNWARD AND DOT ABOVE; D; HAH
+06C0; HAMZA ON HEH; R; TEH MARBUTA
+06C1; HEH GOAL; D; HEH GOAL
+06C2; HAMZA ON HEH GOAL; D; HEH GOAL
+06C3; TEH MARBUTA GOAL; R; HAMZA ON HEH GOAL
+06C4; WAW WITH RING; R; WAW
+06C5; WAW WITH BAR; R; WAW
+06C6; WAW WITH SMALL V; R; WAW
+06C7; WAW WITH DAMMA; R; WAW
+06C8; WAW WITH ALEF ABOVE; R; WAW
+06C9; WAW WITH INVERTED SMALL V; R; WAW
+06CA; WAW WITH 2 DOTS ABOVE; R; WAW
+06CB; WAW WITH 3 DOTS ABOVE; R; WAW
+06CC; DOTLESS YEH; D; YEH
+06CD; YEH WITH TAIL; R; YEH WITH TAIL
+06CE; YEH WITH SMALL V; D; YEH
+06CF; WAW WITH DOT ABOVE; R; WAW
+06D0; YEH WITH 2 DOTS VERTICAL BELOW; D; YEH
+06D1; YEH WITH 3 DOTS BELOW; D; YEH
+06D2; YEH BARREE; R; YEH BARREE
+06D3; HAMZA ON YEH BARREE; R; YEH BARREE
+06D5; AE; R; TEH MARBUTA
+06DD; ARABIC END OF AYAH; U; No_Joining_Group
+06EE; DAL WITH INVERTED V; R; DAL
+06EF; REH WITH INVERTED V; R; REH
+06FA; SEEN WITH DOT BELOW AND 3 DOTS ABOVE; D; SEEN
+06FB; DAD WITH DOT BELOW; D; SAD
+06FC; GHAIN WITH DOT BELOW; D; AIN
+06FF; HEH WITH INVERTED V; D; KNOTTED HEH
+
+# Syriac characters
+
+0710; ALAPH; R; ALAPH
+0712; BETH; D; BETH
+0713; GAMAL; D; GAMAL
+0714; GAMAL GARSHUNI; D; GAMAL
+0715; DALATH; R; DALATH RISH
+0716; DOTLESS DALATH RISH; R; DALATH RISH
+0717; HE; R; HE
+0718; WAW; R; SYRIAC WAW
+0719; ZAIN; R; ZAIN
+071A; HETH; D; HETH
+071B; TETH; D; TETH
+071C; TETH GARSHUNI; D; TETH
+071D; YUDH; D; YUDH
+071E; YUDH HE; R; YUDH HE
+071F; KAPH; D; KAPH
+0720; LAMADH; D; LAMADH
+0721; MIM; D; MIM
+0722; NUN; D; NUN
+0723; SEMKATH; D; SEMKATH
+0724; FINAL SEMKATH; D; FINAL SEMKATH
+0725; E; D; E
+0726; PE; D; PE
+0727; REVERSED PE; D; REVERSED PE
+0728; SADHE; R; SADHE
+0729; QAPH; D; QAPH
+072A; RISH; R; DALATH RISH
+072B; SHIN; D; SHIN
+072C; TAW; R; TAW
+072D; PERSIAN BHETH; D; BETH
+072E; PERSIAN GHAMAL; D; GAMAL
+072F; PERSIAN DHALATH; R; DALATH RISH
+074D; SOGDIAN ZHAIN; R; ZHAIN
+074E; SOGDIAN KHAPH; D; KHAPH
+074F; SOGDIAN FE; D; FE
+
+# Arabic supplement characters
+
+0750; BEH WITH 3 DOTS HORIZONTALLY BELOW; D; BEH
+0751; BEH WITH DOT BELOW AND 3 DOTS ABOVE; D; BEH
+0752; BEH WITH 3 DOTS POINTING UPWARDS BELOW; D; BEH
+0753; BEH WITH 3 DOTS POINTING UPWARDS BELOW AND 2 DOTS ABOVE; D; BEH
+0754; BEH WITH 2 DOTS BELOW AND DOT ABOVE; D; BEH
+0755; BEH WITH INVERTED SMALL V BELOW; D; BEH
+0756; BEH WITH SMALL V; D; BEH
+0757; HAH WITH 2 DOTS ABOVE; D; HAH
+0758; HAH WITH 3 DOTS POINTING UPWARDS BELOW; D; HAH
+0759; DAL WITH 2 DOTS VERTICALLY BELOW AND SMALL TAH; R; DAL
+075A; DAL WITH INVERTED SMALL V BELOW; R; DAL
+075B; REH WITH STROKE; R; REH
+075C; SEEN WITH 4 DOTS ABOVE; D; SEEN
+075D; AIN WITH 2 DOTS ABOVE; D; AIN
+075E; AIN WITH 3 DOTS POINTING DOWNWARDS ABOVE; D; AIN
+075F; AIN WITH 2 DOTS VERTICALLY ABOVE; D; AIN
+0760; FEH WITH 2 DOTS BELOW; D; FEH
+0761; FEH WITH 3 DOTS POINTING UPWARDS BELOW; D; FEH
+0762; KEHEH WITH DOT ABOVE; D; GAF
+0763; KEHEH WITH 3 DOTS ABOVE; D; GAF
+0764; KEHEH WITH 3 DOTS POINTING UPWARDS BELOW; D; GAF
+0765; MEEM WITH DOT ABOVE; D; MEEM
+0766; MEEM WITH DOT BELOW; D; MEEM
+0767; NOON WITH 2 DOTS BELOW; D; NOON
+0768; NOON WITH SMALL TAH; D; NOON
+0769; NOON WITH SMALL V; D; NOON
+076A; LAM WITH BAR; D; LAM
+076B; REH WITH 2 DOTS VERTICALLY ABOVE; R; REH
+076C; REH WITH HAMZA ABOVE; R; REH
+076D; SEEN WITH 2 DOTS VERTICALLY ABOVE; D; SEEN
+
+# N'Ko Characters
+
+07CA; NKO A; D; No_Joining_Group
+07CB; NKO EE; D; No_Joining_Group
+07CC; NKO I; D; No_Joining_Group
+07CD; NKO E; D; No_Joining_Group
+07CE; NKO U; D; No_Joining_Group
+07CF; NKO OO; D; No_Joining_Group
+07D0; NKO O; D; No_Joining_Group
+07D1; NKO DAGBASINNA; D; No_Joining_Group
+07D2; NKO N; D; No_Joining_Group
+07D3; NKO BA; D; No_Joining_Group
+07D4; NKO PA; D; No_Joining_Group
+07D5; NKO TA; D; No_Joining_Group
+07D6; NKO JA; D; No_Joining_Group
+07D7; NKO CHA; D; No_Joining_Group
+07D8; NKO DA; D; No_Joining_Group
+07D9; NKO RA; D; No_Joining_Group
+07DA; NKO RRA; D; No_Joining_Group
+07DB; NKO SA; D; No_Joining_Group
+07DC; NKO GBA; D; No_Joining_Group
+07DD; NKO FA; D; No_Joining_Group
+07DE; NKO KA; D; No_Joining_Group
+07DF; NKO LA; D; No_Joining_Group
+07E0; NKO NA WOLOSO; D; No_Joining_Group
+07E1; NKO MA; D; No_Joining_Group
+07E2; NKO NYA; D; No_Joining_Group
+07E3; NKO NA; D; No_Joining_Group
+07E4; NKO HA; D; No_Joining_Group
+07E5; NKO WA; D; No_Joining_Group
+07E6; NKO YA; D; No_Joining_Group
+07E7; NKO NYA WOLOSO; D; No_Joining_Group
+07E8; NKO JONA JA; D; No_Joining_Group
+07E9; NKO JONA CHA; D; No_Joining_Group
+07EA; NKO JONA RA; D; No_Joining_Group
+07FA; NKO LAJANYALAN; C; No_Joining_Group
+
+# Other
+
+200D; ZERO WIDTH JOINER; C; No_Joining_Group
+200C; ZERO WIDTH NON-JOINER; U; No_Joining_Group
+
+# EOF
diff --git a/util/unicode/data/BidiMirroring.txt b/util/unicode/data/BidiMirroring.txt
new file mode 100644
index 0000000000..f9a09c1345
--- /dev/null
+++ b/util/unicode/data/BidiMirroring.txt
@@ -0,0 +1,582 @@
+# BidiMirroring-5.0.0.txt
+# Date: 2006-02-16, 16:11:00 PST [KW]
+#
+# Bidi_Mirroring_Glyph Property
+#
+# This file is an informative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# This data file lists characters that have the mirrored property
+# where there is another Unicode character that typically has a glyph
+# that is the mirror image of the original character's glyph.
+# The repertoire covered by the file is Unicode 5.0.0.
+#
+# The file contains a list of lines with mappings from one code point
+# to another one for character-based mirroring.
+# Note that for "real" mirroring, a rendering engine needs to select
+# appropriate alternative glyphs, and that many Unicode characters do not
+# have a mirror-image Unicode character.
+#
+# Each mapping line contains two fields, separated by a semicolon (';').
+# Each of the two fields contains a code point represented as a
+# variable-length hexadecimal value with 4 to 6 digits.
+# A comment indicates where the characters are "BEST FIT" mirroring.
+#
+# Code points with the "mirrored" property but no appropriate mirrors are
+# listed as comments at the end of the file.
+#
+# For information on bidi mirroring, see UAX #9: Bidirectional Algorithm,
+# at http://www.unicode.org/unicode/reports/tr9/
+#
+# This file was originally created by Markus Scherer.
+# Extended for Unicode 3.2, 4.0, 4.1, and 5.0 by Ken Whistler.
+#
+# ############################################################
+
+0028; 0029 # LEFT PARENTHESIS
+0029; 0028 # RIGHT PARENTHESIS
+003C; 003E # LESS-THAN SIGN
+003E; 003C # GREATER-THAN SIGN
+005B; 005D # LEFT SQUARE BRACKET
+005D; 005B # RIGHT SQUARE BRACKET
+007B; 007D # LEFT CURLY BRACKET
+007D; 007B # RIGHT CURLY BRACKET
+00AB; 00BB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BB; 00AB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0F3A; 0F3B # TIBETAN MARK GUG RTAGS GYON
+0F3B; 0F3A # TIBETAN MARK GUG RTAGS GYAS
+0F3C; 0F3D # TIBETAN MARK ANG KHANG GYON
+0F3D; 0F3C # TIBETAN MARK ANG KHANG GYAS
+169B; 169C # OGHAM FEATHER MARK
+169C; 169B # OGHAM REVERSED FEATHER MARK
+2018; 2019 # [BEST FIT] LEFT SINGLE QUOTATION MARK
+2019; 2018 # [BEST FIT] RIGHT SINGLE QUOTATION MARK
+201C; 201D # [BEST FIT] LEFT DOUBLE QUOTATION MARK
+201D; 201C # [BEST FIT] RIGHT DOUBLE QUOTATION MARK
+2039; 203A # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A; 2039 # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+2045; 2046 # LEFT SQUARE BRACKET WITH QUILL
+2046; 2045 # RIGHT SQUARE BRACKET WITH QUILL
+207D; 207E # SUPERSCRIPT LEFT PARENTHESIS
+207E; 207D # SUPERSCRIPT RIGHT PARENTHESIS
+208D; 208E # SUBSCRIPT LEFT PARENTHESIS
+208E; 208D # SUBSCRIPT RIGHT PARENTHESIS
+2208; 220B # ELEMENT OF
+2209; 220C # NOT AN ELEMENT OF
+220A; 220D # SMALL ELEMENT OF
+220B; 2208 # CONTAINS AS MEMBER
+220C; 2209 # DOES NOT CONTAIN AS MEMBER
+220D; 220A # SMALL CONTAINS AS MEMBER
+2215; 29F5 # DIVISION SLASH
+223C; 223D # TILDE OPERATOR
+223D; 223C # REVERSED TILDE
+2243; 22CD # ASYMPTOTICALLY EQUAL TO
+2252; 2253 # APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253; 2252 # IMAGE OF OR APPROXIMATELY EQUAL TO
+2254; 2255 # COLON EQUALS
+2255; 2254 # EQUALS COLON
+2264; 2265 # LESS-THAN OR EQUAL TO
+2265; 2264 # GREATER-THAN OR EQUAL TO
+2266; 2267 # LESS-THAN OVER EQUAL TO
+2267; 2266 # GREATER-THAN OVER EQUAL TO
+2268; 2269 # [BEST FIT] LESS-THAN BUT NOT EQUAL TO
+2269; 2268 # [BEST FIT] GREATER-THAN BUT NOT EQUAL TO
+226A; 226B # MUCH LESS-THAN
+226B; 226A # MUCH GREATER-THAN
+226E; 226F # [BEST FIT] NOT LESS-THAN
+226F; 226E # [BEST FIT] NOT GREATER-THAN
+2270; 2271 # [BEST FIT] NEITHER LESS-THAN NOR EQUAL TO
+2271; 2270 # [BEST FIT] NEITHER GREATER-THAN NOR EQUAL TO
+2272; 2273 # [BEST FIT] LESS-THAN OR EQUIVALENT TO
+2273; 2272 # [BEST FIT] GREATER-THAN OR EQUIVALENT TO
+2274; 2275 # [BEST FIT] NEITHER LESS-THAN NOR EQUIVALENT TO
+2275; 2274 # [BEST FIT] NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276; 2277 # LESS-THAN OR GREATER-THAN
+2277; 2276 # GREATER-THAN OR LESS-THAN
+2278; 2279 # NEITHER LESS-THAN NOR GREATER-THAN
+2279; 2278 # NEITHER GREATER-THAN NOR LESS-THAN
+227A; 227B # PRECEDES
+227B; 227A # SUCCEEDS
+227C; 227D # PRECEDES OR EQUAL TO
+227D; 227C # SUCCEEDS OR EQUAL TO
+227E; 227F # [BEST FIT] PRECEDES OR EQUIVALENT TO
+227F; 227E # [BEST FIT] SUCCEEDS OR EQUIVALENT TO
+2280; 2281 # [BEST FIT] DOES NOT PRECEDE
+2281; 2280 # [BEST FIT] DOES NOT SUCCEED
+2282; 2283 # SUBSET OF
+2283; 2282 # SUPERSET OF
+2284; 2285 # [BEST FIT] NOT A SUBSET OF
+2285; 2284 # [BEST FIT] NOT A SUPERSET OF
+2286; 2287 # SUBSET OF OR EQUAL TO
+2287; 2286 # SUPERSET OF OR EQUAL TO
+2288; 2289 # [BEST FIT] NEITHER A SUBSET OF NOR EQUAL TO
+2289; 2288 # [BEST FIT] NEITHER A SUPERSET OF NOR EQUAL TO
+228A; 228B # [BEST FIT] SUBSET OF WITH NOT EQUAL TO
+228B; 228A # [BEST FIT] SUPERSET OF WITH NOT EQUAL TO
+228F; 2290 # SQUARE IMAGE OF
+2290; 228F # SQUARE ORIGINAL OF
+2291; 2292 # SQUARE IMAGE OF OR EQUAL TO
+2292; 2291 # SQUARE ORIGINAL OF OR EQUAL TO
+2298; 29B8 # CIRCLED DIVISION SLASH
+22A2; 22A3 # RIGHT TACK
+22A3; 22A2 # LEFT TACK
+22A6; 2ADE # ASSERTION
+22A8; 2AE4 # TRUE
+22A9; 2AE3 # FORCES
+22AB; 2AE5 # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0; 22B1 # PRECEDES UNDER RELATION
+22B1; 22B0 # SUCCEEDS UNDER RELATION
+22B2; 22B3 # NORMAL SUBGROUP OF
+22B3; 22B2 # CONTAINS AS NORMAL SUBGROUP
+22B4; 22B5 # NORMAL SUBGROUP OF OR EQUAL TO
+22B5; 22B4 # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6; 22B7 # ORIGINAL OF
+22B7; 22B6 # IMAGE OF
+22C9; 22CA # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA; 22C9 # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB; 22CC # LEFT SEMIDIRECT PRODUCT
+22CC; 22CB # RIGHT SEMIDIRECT PRODUCT
+22CD; 2243 # REVERSED TILDE EQUALS
+22D0; 22D1 # DOUBLE SUBSET
+22D1; 22D0 # DOUBLE SUPERSET
+22D6; 22D7 # LESS-THAN WITH DOT
+22D7; 22D6 # GREATER-THAN WITH DOT
+22D8; 22D9 # VERY MUCH LESS-THAN
+22D9; 22D8 # VERY MUCH GREATER-THAN
+22DA; 22DB # LESS-THAN EQUAL TO OR GREATER-THAN
+22DB; 22DA # GREATER-THAN EQUAL TO OR LESS-THAN
+22DC; 22DD # EQUAL TO OR LESS-THAN
+22DD; 22DC # EQUAL TO OR GREATER-THAN
+22DE; 22DF # EQUAL TO OR PRECEDES
+22DF; 22DE # EQUAL TO OR SUCCEEDS
+22E0; 22E1 # [BEST FIT] DOES NOT PRECEDE OR EQUAL
+22E1; 22E0 # [BEST FIT] DOES NOT SUCCEED OR EQUAL
+22E2; 22E3 # [BEST FIT] NOT SQUARE IMAGE OF OR EQUAL TO
+22E3; 22E2 # [BEST FIT] NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4; 22E5 # [BEST FIT] SQUARE IMAGE OF OR NOT EQUAL TO
+22E5; 22E4 # [BEST FIT] SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6; 22E7 # [BEST FIT] LESS-THAN BUT NOT EQUIVALENT TO
+22E7; 22E6 # [BEST FIT] GREATER-THAN BUT NOT EQUIVALENT TO
+22E8; 22E9 # [BEST FIT] PRECEDES BUT NOT EQUIVALENT TO
+22E9; 22E8 # [BEST FIT] SUCCEEDS BUT NOT EQUIVALENT TO
+22EA; 22EB # [BEST FIT] NOT NORMAL SUBGROUP OF
+22EB; 22EA # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC; 22ED # [BEST FIT] NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED; 22EC # [BEST FIT] DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22F0; 22F1 # UP RIGHT DIAGONAL ELLIPSIS
+22F1; 22F0 # DOWN RIGHT DIAGONAL ELLIPSIS
+22F2; 22FA # ELEMENT OF WITH LONG HORIZONTAL STROKE
+22F3; 22FB # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F4; 22FC # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F6; 22FD # ELEMENT OF WITH OVERBAR
+22F7; 22FE # SMALL ELEMENT OF WITH OVERBAR
+22FA; 22F2 # CONTAINS WITH LONG HORIZONTAL STROKE
+22FB; 22F3 # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FC; 22F4 # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FD; 22F6 # CONTAINS WITH OVERBAR
+22FE; 22F7 # SMALL CONTAINS WITH OVERBAR
+2308; 2309 # LEFT CEILING
+2309; 2308 # RIGHT CEILING
+230A; 230B # LEFT FLOOR
+230B; 230A # RIGHT FLOOR
+2329; 232A # LEFT-POINTING ANGLE BRACKET
+232A; 2329 # RIGHT-POINTING ANGLE BRACKET
+2768; 2769 # MEDIUM LEFT PARENTHESIS ORNAMENT
+2769; 2768 # MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A; 276B # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B; 276A # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C; 276D # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D; 276C # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E; 276F # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F; 276E # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770; 2771 # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771; 2770 # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772; 2773 # LIGHT LEFT TORTOISE SHELL BRACKET
+2773; 2772 # LIGHT RIGHT TORTOISE SHELL BRACKET
+2774; 2775 # MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775; 2774 # MEDIUM RIGHT CURLY BRACKET ORNAMENT
+27C3; 27C4 # OPEN SUBSET
+27C4; 27C3 # OPEN SUPERSET
+27C5; 27C6 # LEFT S-SHAPED BAG DELIMITER
+27C6; 27C5 # RIGHT S-SHAPED BAG DELIMITER
+27D5; 27D6 # LEFT OUTER JOIN
+27D6; 27D5 # RIGHT OUTER JOIN
+27DD; 27DE # LONG RIGHT TACK
+27DE; 27DD # LONG LEFT TACK
+27E2; 27E3 # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+27E3; 27E2 # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+27E4; 27E5 # WHITE SQUARE WITH LEFTWARDS TICK
+27E5; 27E4 # WHITE SQUARE WITH RIGHTWARDS TICK
+27E6; 27E7 # MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7; 27E6 # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8; 27E9 # MATHEMATICAL LEFT ANGLE BRACKET
+27E9; 27E8 # MATHEMATICAL RIGHT ANGLE BRACKET
+27EA; 27EB # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB; 27EA # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+2983; 2984 # LEFT WHITE CURLY BRACKET
+2984; 2983 # RIGHT WHITE CURLY BRACKET
+2985; 2986 # LEFT WHITE PARENTHESIS
+2986; 2985 # RIGHT WHITE PARENTHESIS
+2987; 2988 # Z NOTATION LEFT IMAGE BRACKET
+2988; 2987 # Z NOTATION RIGHT IMAGE BRACKET
+2989; 298A # Z NOTATION LEFT BINDING BRACKET
+298A; 2989 # Z NOTATION RIGHT BINDING BRACKET
+298B; 298C # LEFT SQUARE BRACKET WITH UNDERBAR
+298C; 298B # RIGHT SQUARE BRACKET WITH UNDERBAR
+298D; 2990 # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E; 298F # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F; 298E # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990; 298D # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991; 2992 # LEFT ANGLE BRACKET WITH DOT
+2992; 2991 # RIGHT ANGLE BRACKET WITH DOT
+2993; 2994 # LEFT ARC LESS-THAN BRACKET
+2994; 2993 # RIGHT ARC GREATER-THAN BRACKET
+2995; 2996 # DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996; 2995 # DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997; 2998 # LEFT BLACK TORTOISE SHELL BRACKET
+2998; 2997 # RIGHT BLACK TORTOISE SHELL BRACKET
+29B8; 2298 # CIRCLED REVERSE SOLIDUS
+29C0; 29C1 # CIRCLED LESS-THAN
+29C1; 29C0 # CIRCLED GREATER-THAN
+29C4; 29C5 # SQUARED RISING DIAGONAL SLASH
+29C5; 29C4 # SQUARED FALLING DIAGONAL SLASH
+29CF; 29D0 # LEFT TRIANGLE BESIDE VERTICAL BAR
+29D0; 29CF # VERTICAL BAR BESIDE RIGHT TRIANGLE
+29D1; 29D2 # BOWTIE WITH LEFT HALF BLACK
+29D2; 29D1 # BOWTIE WITH RIGHT HALF BLACK
+29D4; 29D5 # TIMES WITH LEFT HALF BLACK
+29D5; 29D4 # TIMES WITH RIGHT HALF BLACK
+29D8; 29D9 # LEFT WIGGLY FENCE
+29D9; 29D8 # RIGHT WIGGLY FENCE
+29DA; 29DB # LEFT DOUBLE WIGGLY FENCE
+29DB; 29DA # RIGHT DOUBLE WIGGLY FENCE
+29F5; 2215 # REVERSE SOLIDUS OPERATOR
+29F8; 29F9 # BIG SOLIDUS
+29F9; 29F8 # BIG REVERSE SOLIDUS
+29FC; 29FD # LEFT-POINTING CURVED ANGLE BRACKET
+29FD; 29FC # RIGHT-POINTING CURVED ANGLE BRACKET
+2A2B; 2A2C # MINUS SIGN WITH FALLING DOTS
+2A2C; 2A2B # MINUS SIGN WITH RISING DOTS
+2A2D; 2A2E # PLUS SIGN IN LEFT HALF CIRCLE
+2A2E; 2A2D # PLUS SIGN IN RIGHT HALF CIRCLE
+2A34; 2A35 # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+2A35; 2A34 # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+2A3C; 2A3D # INTERIOR PRODUCT
+2A3D; 2A3C # RIGHTHAND INTERIOR PRODUCT
+2A64; 2A65 # Z NOTATION DOMAIN ANTIRESTRICTION
+2A65; 2A64 # Z NOTATION RANGE ANTIRESTRICTION
+2A79; 2A7A # LESS-THAN WITH CIRCLE INSIDE
+2A7A; 2A79 # GREATER-THAN WITH CIRCLE INSIDE
+2A7D; 2A7E # LESS-THAN OR SLANTED EQUAL TO
+2A7E; 2A7D # GREATER-THAN OR SLANTED EQUAL TO
+2A7F; 2A80 # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A80; 2A7F # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A81; 2A82 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A82; 2A81 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A83; 2A84 # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+2A84; 2A83 # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+2A8B; 2A8C # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+2A8C; 2A8B # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+2A91; 2A92 # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+2A92; 2A91 # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+2A93; 2A94 # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+2A94; 2A93 # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+2A95; 2A96 # SLANTED EQUAL TO OR LESS-THAN
+2A96; 2A95 # SLANTED EQUAL TO OR GREATER-THAN
+2A97; 2A98 # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+2A98; 2A97 # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+2A99; 2A9A # DOUBLE-LINE EQUAL TO OR LESS-THAN
+2A9A; 2A99 # DOUBLE-LINE EQUAL TO OR GREATER-THAN
+2A9B; 2A9C # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+2A9C; 2A9B # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+2AA1; 2AA2 # DOUBLE NESTED LESS-THAN
+2AA2; 2AA1 # DOUBLE NESTED GREATER-THAN
+2AA6; 2AA7 # LESS-THAN CLOSED BY CURVE
+2AA7; 2AA6 # GREATER-THAN CLOSED BY CURVE
+2AA8; 2AA9 # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AA9; 2AA8 # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AAA; 2AAB # SMALLER THAN
+2AAB; 2AAA # LARGER THAN
+2AAC; 2AAD # SMALLER THAN OR EQUAL TO
+2AAD; 2AAC # LARGER THAN OR EQUAL TO
+2AAF; 2AB0 # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+2AB0; 2AAF # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+2AB3; 2AB4 # PRECEDES ABOVE EQUALS SIGN
+2AB4; 2AB3 # SUCCEEDS ABOVE EQUALS SIGN
+2ABB; 2ABC # DOUBLE PRECEDES
+2ABC; 2ABB # DOUBLE SUCCEEDS
+2ABD; 2ABE # SUBSET WITH DOT
+2ABE; 2ABD # SUPERSET WITH DOT
+2ABF; 2AC0 # SUBSET WITH PLUS SIGN BELOW
+2AC0; 2ABF # SUPERSET WITH PLUS SIGN BELOW
+2AC1; 2AC2 # SUBSET WITH MULTIPLICATION SIGN BELOW
+2AC2; 2AC1 # SUPERSET WITH MULTIPLICATION SIGN BELOW
+2AC3; 2AC4 # SUBSET OF OR EQUAL TO WITH DOT ABOVE
+2AC4; 2AC3 # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+2AC5; 2AC6 # SUBSET OF ABOVE EQUALS SIGN
+2AC6; 2AC5 # SUPERSET OF ABOVE EQUALS SIGN
+2ACD; 2ACE # SQUARE LEFT OPEN BOX OPERATOR
+2ACE; 2ACD # SQUARE RIGHT OPEN BOX OPERATOR
+2ACF; 2AD0 # CLOSED SUBSET
+2AD0; 2ACF # CLOSED SUPERSET
+2AD1; 2AD2 # CLOSED SUBSET OR EQUAL TO
+2AD2; 2AD1 # CLOSED SUPERSET OR EQUAL TO
+2AD3; 2AD4 # SUBSET ABOVE SUPERSET
+2AD4; 2AD3 # SUPERSET ABOVE SUBSET
+2AD5; 2AD6 # SUBSET ABOVE SUBSET
+2AD6; 2AD5 # SUPERSET ABOVE SUPERSET
+2ADE; 22A6 # SHORT LEFT TACK
+2AE3; 22A9 # DOUBLE VERTICAL BAR LEFT TURNSTILE
+2AE4; 22A8 # VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE5; 22AB # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AEC; 2AED # DOUBLE STROKE NOT SIGN
+2AED; 2AEC # REVERSED DOUBLE STROKE NOT SIGN
+2AF7; 2AF8 # TRIPLE NESTED LESS-THAN
+2AF8; 2AF7 # TRIPLE NESTED GREATER-THAN
+2AF9; 2AFA # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+2AFA; 2AF9 # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+2E02; 2E03 # LEFT SUBSTITUTION BRACKET
+2E03; 2E02 # RIGHT SUBSTITUTION BRACKET
+2E04; 2E05 # LEFT DOTTED SUBSTITUTION BRACKET
+2E05; 2E04 # RIGHT DOTTED SUBSTITUTION BRACKET
+2E09; 2E0A # LEFT TRANSPOSITION BRACKET
+2E0A; 2E09 # RIGHT TRANSPOSITION BRACKET
+2E0C; 2E0D # LEFT RAISED OMISSION BRACKET
+2E0D; 2E0C # RIGHT RAISED OMISSION BRACKET
+2E1C; 2E1D # LEFT LOW PARAPHRASE BRACKET
+2E1D; 2E1C # RIGHT LOW PARAPHRASE BRACKET
+3008; 3009 # LEFT ANGLE BRACKET
+3009; 3008 # RIGHT ANGLE BRACKET
+300A; 300B # LEFT DOUBLE ANGLE BRACKET
+300B; 300A # RIGHT DOUBLE ANGLE BRACKET
+300C; 300D # [BEST FIT] LEFT CORNER BRACKET
+300D; 300C # [BEST FIT] RIGHT CORNER BRACKET
+300E; 300F # [BEST FIT] LEFT WHITE CORNER BRACKET
+300F; 300E # [BEST FIT] RIGHT WHITE CORNER BRACKET
+3010; 3011 # LEFT BLACK LENTICULAR BRACKET
+3011; 3010 # RIGHT BLACK LENTICULAR BRACKET
+3014; 3015 # LEFT TORTOISE SHELL BRACKET
+3015; 3014 # RIGHT TORTOISE SHELL BRACKET
+3016; 3017 # LEFT WHITE LENTICULAR BRACKET
+3017; 3016 # RIGHT WHITE LENTICULAR BRACKET
+3018; 3019 # LEFT WHITE TORTOISE SHELL BRACKET
+3019; 3018 # RIGHT WHITE TORTOISE SHELL BRACKET
+301A; 301B # LEFT WHITE SQUARE BRACKET
+301B; 301A # RIGHT WHITE SQUARE BRACKET
+301D; 301E # REVERSED DOUBLE PRIME QUOTATION MARK
+301E; 301D # DOUBLE PRIME QUOTATION MARK
+FE59; FE5A # SMALL LEFT PARENTHESIS
+FE5A; FE59 # SMALL RIGHT PARENTHESIS
+FE5B; FE5C # SMALL LEFT CURLY BRACKET
+FE5C; FE5B # SMALL RIGHT CURLY BRACKET
+FE5D; FE5E # SMALL LEFT TORTOISE SHELL BRACKET
+FE5E; FE5D # SMALL RIGHT TORTOISE SHELL BRACKET
+FE64; FE65 # SMALL LESS-THAN SIGN
+FE65; FE64 # SMALL GREATER-THAN SIGN
+FF08; FF09 # FULLWIDTH LEFT PARENTHESIS
+FF09; FF08 # FULLWIDTH RIGHT PARENTHESIS
+FF1C; FF1E # FULLWIDTH LESS-THAN SIGN
+FF1E; FF1C # FULLWIDTH GREATER-THAN SIGN
+FF3B; FF3D # FULLWIDTH LEFT SQUARE BRACKET
+FF3D; FF3B # FULLWIDTH RIGHT SQUARE BRACKET
+FF5B; FF5D # FULLWIDTH LEFT CURLY BRACKET
+FF5D; FF5B # FULLWIDTH RIGHT CURLY BRACKET
+FF5F; FF60 # FULLWIDTH LEFT WHITE PARENTHESIS
+FF60; FF5F # FULLWIDTH RIGHT WHITE PARENTHESIS
+FF62; FF63 # [BEST FIT] HALFWIDTH LEFT CORNER BRACKET
+FF63; FF62 # [BEST FIT] HALFWIDTH RIGHT CORNER BRACKET
+
+# The following characters have no appropriate mirroring character.
+# For these characters it is up to the rendering system
+# to provide mirrored glyphs.
+
+# 201A; SINGLE LOW-9 QUOTATION MARK
+# 201B; SINGLE HIGH-REVERSED-9 QUOTATION MARK
+# 201E; DOUBLE LOW-9 QUOTATION MARK
+# 201F; DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+# 2140; DOUBLE-STRUCK N-ARY SUMMATION
+# 2201; COMPLEMENT
+# 2202; PARTIAL DIFFERENTIAL
+# 2203; THERE EXISTS
+# 2204; THERE DOES NOT EXIST
+# 2211; N-ARY SUMMATION
+# 2216; SET MINUS
+# 221A; SQUARE ROOT
+# 221B; CUBE ROOT
+# 221C; FOURTH ROOT
+# 221D; PROPORTIONAL TO
+# 221F; RIGHT ANGLE
+# 2220; ANGLE
+# 2221; MEASURED ANGLE
+# 2222; SPHERICAL ANGLE
+# 2224; DOES NOT DIVIDE
+# 2226; NOT PARALLEL TO
+# 222B; INTEGRAL
+# 222C; DOUBLE INTEGRAL
+# 222D; TRIPLE INTEGRAL
+# 222E; CONTOUR INTEGRAL
+# 222F; SURFACE INTEGRAL
+# 2230; VOLUME INTEGRAL
+# 2231; CLOCKWISE INTEGRAL
+# 2232; CLOCKWISE CONTOUR INTEGRAL
+# 2233; ANTICLOCKWISE CONTOUR INTEGRAL
+# 2239; EXCESS
+# 223B; HOMOTHETIC
+# 223E; INVERTED LAZY S
+# 223F; SINE WAVE
+# 2240; WREATH PRODUCT
+# 2241; NOT TILDE
+# 2242; MINUS TILDE
+# 2244; NOT ASYMPTOTICALLY EQUAL TO
+# 2245; APPROXIMATELY EQUAL TO
+# 2246; APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+# 2247; NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+# 2248; ALMOST EQUAL TO
+# 2249; NOT ALMOST EQUAL TO
+# 224A; ALMOST EQUAL OR EQUAL TO
+# 224B; TRIPLE TILDE
+# 224C; ALL EQUAL TO
+# 225F; QUESTIONED EQUAL TO
+# 2260; NOT EQUAL TO
+# 2262; NOT IDENTICAL TO
+# 228C; MULTISET
+# 22A7; MODELS
+# 22AA; TRIPLE VERTICAL BAR RIGHT TURNSTILE
+# 22AC; DOES NOT PROVE
+# 22AD; NOT TRUE
+# 22AE; DOES NOT FORCE
+# 22AF; NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+# 22B8; MULTIMAP
+# 22BE; RIGHT ANGLE WITH ARC
+# 22BF; RIGHT TRIANGLE
+# 22F5; ELEMENT OF WITH DOT ABOVE
+# 22F8; ELEMENT OF WITH UNDERBAR
+# 22F9; ELEMENT OF WITH TWO HORIZONTAL STROKES
+# 22FF; Z NOTATION BAG MEMBERSHIP
+# 2320; TOP HALF INTEGRAL
+# 2321; BOTTOM HALF INTEGRAL
+# 27C0; THREE DIMENSIONAL ANGLE
+# 27D3; LOWER RIGHT CORNER WITH DOT
+# 27D4; UPPER LEFT CORNER WITH DOT
+# 27DC; LEFT MULTIMAP
+# 299B; MEASURED ANGLE OPENING LEFT
+# 299C; RIGHT ANGLE VARIANT WITH SQUARE
+# 299D; MEASURED RIGHT ANGLE WITH DOT
+# 299E; ANGLE WITH S INSIDE
+# 299F; ACUTE ANGLE
+# 29A0; SPHERICAL ANGLE OPENING LEFT
+# 29A1; SPHERICAL ANGLE OPENING UP
+# 29A2; TURNED ANGLE
+# 29A3; REVERSED ANGLE
+# 29A4; ANGLE WITH UNDERBAR
+# 29A5; REVERSED ANGLE WITH UNDERBAR
+# 29A6; OBLIQUE ANGLE OPENING UP
+# 29A7; OBLIQUE ANGLE OPENING DOWN
+# 29A8; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+# 29A9; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+# 29AA; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+# 29AB; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+# 29AC; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+# 29AD; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+# 29AE; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+# 29AF; MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+# 29C2; CIRCLE WITH SMALL CIRCLE TO THE RIGHT
+# 29C3; CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
+# 29C9; TWO JOINED SQUARES
+# 29CE; RIGHT TRIANGLE ABOVE LEFT TRIANGLE
+# 29DC; INCOMPLETE INFINITY
+# 29E1; INCREASES AS
+# 29E3; EQUALS SIGN AND SLANTED PARALLEL
+# 29E4; EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+# 29E5; IDENTICAL TO AND SLANTED PARALLEL
+# 29E8; DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
+# 29E9; DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
+# 29F4; RULE-DELAYED
+# 29F6; SOLIDUS WITH OVERBAR
+# 29F7; REVERSE SOLIDUS WITH HORIZONTAL STROKE
+# 2A0A; MODULO TWO SUM
+# 2A0B; SUMMATION WITH INTEGRAL
+# 2A0C; QUADRUPLE INTEGRAL OPERATOR
+# 2A0D; FINITE PART INTEGRAL
+# 2A0E; INTEGRAL WITH DOUBLE STROKE
+# 2A0F; INTEGRAL AVERAGE WITH SLASH
+# 2A10; CIRCULATION FUNCTION
+# 2A11; ANTICLOCKWISE INTEGRATION
+# 2A12; LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+# 2A13; LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+# 2A14; LINE INTEGRATION NOT INCLUDING THE POLE
+# 2A15; INTEGRAL AROUND A POINT OPERATOR
+# 2A16; QUATERNION INTEGRAL OPERATOR
+# 2A17; INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
+# 2A18; INTEGRAL WITH TIMES SIGN
+# 2A19; INTEGRAL WITH INTERSECTION
+# 2A1A; INTEGRAL WITH UNION
+# 2A1B; INTEGRAL WITH OVERBAR
+# 2A1C; INTEGRAL WITH UNDERBAR
+# 2A1E; LARGE LEFT TRIANGLE OPERATOR
+# 2A1F; Z NOTATION SCHEMA COMPOSITION
+# 2A20; Z NOTATION SCHEMA PIPING
+# 2A21; Z NOTATION SCHEMA PROJECTION
+# 2A24; PLUS SIGN WITH TILDE ABOVE
+# 2A26; PLUS SIGN WITH TILDE BELOW
+# 2A29; MINUS SIGN WITH COMMA ABOVE
+# 2A3E; Z NOTATION RELATIONAL COMPOSITION
+# 2A57; SLOPING LARGE OR
+# 2A58; SLOPING LARGE AND
+# 2A6A; TILDE OPERATOR WITH DOT ABOVE
+# 2A6B; TILDE OPERATOR WITH RISING DOTS
+# 2A6C; SIMILAR MINUS SIMILAR
+# 2A6D; CONGRUENT WITH DOT ABOVE
+# 2A6F; ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+# 2A70; APPROXIMATELY EQUAL OR EQUAL TO
+# 2A73; EQUALS SIGN ABOVE TILDE OPERATOR
+# 2A74; DOUBLE COLON EQUAL
+# 2A7B; LESS-THAN WITH QUESTION MARK ABOVE
+# 2A7C; GREATER-THAN WITH QUESTION MARK ABOVE
+# 2A85; LESS-THAN OR APPROXIMATE
+# 2A86; GREATER-THAN OR APPROXIMATE
+# 2A87; LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+# 2A88; GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+# 2A89; LESS-THAN AND NOT APPROXIMATE
+# 2A8A; GREATER-THAN AND NOT APPROXIMATE
+# 2A8D; LESS-THAN ABOVE SIMILAR OR EQUAL
+# 2A8E; GREATER-THAN ABOVE SIMILAR OR EQUAL
+# 2A8F; LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+# 2A90; GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+# 2A9D; SIMILAR OR LESS-THAN
+# 2A9E; SIMILAR OR GREATER-THAN
+# 2A9F; SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+# 2AA0; SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+# 2AA3; DOUBLE NESTED LESS-THAN WITH UNDERBAR
+# 2AB1; PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+# 2AB2; SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+# 2AB5; PRECEDES ABOVE NOT EQUAL TO
+# 2AB6; SUCCEEDS ABOVE NOT EQUAL TO
+# 2AB7; PRECEDES ABOVE ALMOST EQUAL TO
+# 2AB8; SUCCEEDS ABOVE ALMOST EQUAL TO
+# 2AB9; PRECEDES ABOVE NOT ALMOST EQUAL TO
+# 2ABA; SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+# 2AC7; SUBSET OF ABOVE TILDE OPERATOR
+# 2AC8; SUPERSET OF ABOVE TILDE OPERATOR
+# 2AC9; SUBSET OF ABOVE ALMOST EQUAL TO
+# 2ACA; SUPERSET OF ABOVE ALMOST EQUAL TO
+# 2ACB; SUBSET OF ABOVE NOT EQUAL TO
+# 2ACC; SUPERSET OF ABOVE NOT EQUAL TO
+# 2ADC; FORKING
+# 2AE2; VERTICAL BAR TRIPLE RIGHT TURNSTILE
+# 2AE6; LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
+# 2AEE; DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
+# 2AF3; PARALLEL WITH TILDE OPERATOR
+# 2AFB; TRIPLE SOLIDUS BINARY RELATION
+# 2AFD; DOUBLE SOLIDUS OPERATOR
+# 301F; LOW DOUBLE PRIME QUOTATION MARK
+# 1D6DB; MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+# 1D715; MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+# 1D74F; MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+# 1D789; MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+# 1D7C3; MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+
+# EOF
diff --git a/util/unicode/data/Blocks.txt b/util/unicode/data/Blocks.txt
new file mode 100644
index 0000000000..9cc87547f2
--- /dev/null
+++ b/util/unicode/data/Blocks.txt
@@ -0,0 +1,185 @@
+# Blocks-5.0.0.txt
+# Date: 2006-02-15, 15:40:00 [KW]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Note: The casing of block names is not normative.
+# For example, "Basic Latin" and "BASIC LATIN" are equivalent.
+#
+# Format:
+# Start Code..End Code; Block Name
+
+# ================================================
+
+# Note: When comparing block names, casing, whitespace, hyphens,
+# and underbars are ignored.
+# For example, "Latin Extended-A" and "latin extended a" are equivalent.
+# For more information on the comparison of property values,
+# see UCD.html.
+#
+# All code points not explicitly listed for Block
+# have the value No_Block.
+
+# Property: Block
+#
+# @missing: 0000..10FFFF; No_Block
+
+0000..007F; Basic Latin
+0080..00FF; Latin-1 Supplement
+0100..017F; Latin Extended-A
+0180..024F; Latin Extended-B
+0250..02AF; IPA Extensions
+02B0..02FF; Spacing Modifier Letters
+0300..036F; Combining Diacritical Marks
+0370..03FF; Greek and Coptic
+0400..04FF; Cyrillic
+0500..052F; Cyrillic Supplement
+0530..058F; Armenian
+0590..05FF; Hebrew
+0600..06FF; Arabic
+0700..074F; Syriac
+0750..077F; Arabic Supplement
+0780..07BF; Thaana
+07C0..07FF; NKo
+0900..097F; Devanagari
+0980..09FF; Bengali
+0A00..0A7F; Gurmukhi
+0A80..0AFF; Gujarati
+0B00..0B7F; Oriya
+0B80..0BFF; Tamil
+0C00..0C7F; Telugu
+0C80..0CFF; Kannada
+0D00..0D7F; Malayalam
+0D80..0DFF; Sinhala
+0E00..0E7F; Thai
+0E80..0EFF; Lao
+0F00..0FFF; Tibetan
+1000..109F; Myanmar
+10A0..10FF; Georgian
+1100..11FF; Hangul Jamo
+1200..137F; Ethiopic
+1380..139F; Ethiopic Supplement
+13A0..13FF; Cherokee
+1400..167F; Unified Canadian Aboriginal Syllabics
+1680..169F; Ogham
+16A0..16FF; Runic
+1700..171F; Tagalog
+1720..173F; Hanunoo
+1740..175F; Buhid
+1760..177F; Tagbanwa
+1780..17FF; Khmer
+1800..18AF; Mongolian
+1900..194F; Limbu
+1950..197F; Tai Le
+1980..19DF; New Tai Lue
+19E0..19FF; Khmer Symbols
+1A00..1A1F; Buginese
+1B00..1B7F; Balinese
+1D00..1D7F; Phonetic Extensions
+1D80..1DBF; Phonetic Extensions Supplement
+1DC0..1DFF; Combining Diacritical Marks Supplement
+1E00..1EFF; Latin Extended Additional
+1F00..1FFF; Greek Extended
+2000..206F; General Punctuation
+2070..209F; Superscripts and Subscripts
+20A0..20CF; Currency Symbols
+20D0..20FF; Combining Diacritical Marks for Symbols
+2100..214F; Letterlike Symbols
+2150..218F; Number Forms
+2190..21FF; Arrows
+2200..22FF; Mathematical Operators
+2300..23FF; Miscellaneous Technical
+2400..243F; Control Pictures
+2440..245F; Optical Character Recognition
+2460..24FF; Enclosed Alphanumerics
+2500..257F; Box Drawing
+2580..259F; Block Elements
+25A0..25FF; Geometric Shapes
+2600..26FF; Miscellaneous Symbols
+2700..27BF; Dingbats
+27C0..27EF; Miscellaneous Mathematical Symbols-A
+27F0..27FF; Supplemental Arrows-A
+2800..28FF; Braille Patterns
+2900..297F; Supplemental Arrows-B
+2980..29FF; Miscellaneous Mathematical Symbols-B
+2A00..2AFF; Supplemental Mathematical Operators
+2B00..2BFF; Miscellaneous Symbols and Arrows
+2C00..2C5F; Glagolitic
+2C60..2C7F; Latin Extended-C
+2C80..2CFF; Coptic
+2D00..2D2F; Georgian Supplement
+2D30..2D7F; Tifinagh
+2D80..2DDF; Ethiopic Extended
+2E00..2E7F; Supplemental Punctuation
+2E80..2EFF; CJK Radicals Supplement
+2F00..2FDF; Kangxi Radicals
+2FF0..2FFF; Ideographic Description Characters
+3000..303F; CJK Symbols and Punctuation
+3040..309F; Hiragana
+30A0..30FF; Katakana
+3100..312F; Bopomofo
+3130..318F; Hangul Compatibility Jamo
+3190..319F; Kanbun
+31A0..31BF; Bopomofo Extended
+31C0..31EF; CJK Strokes
+31F0..31FF; Katakana Phonetic Extensions
+3200..32FF; Enclosed CJK Letters and Months
+3300..33FF; CJK Compatibility
+3400..4DBF; CJK Unified Ideographs Extension A
+4DC0..4DFF; Yijing Hexagram Symbols
+4E00..9FFF; CJK Unified Ideographs
+A000..A48F; Yi Syllables
+A490..A4CF; Yi Radicals
+A700..A71F; Modifier Tone Letters
+A720..A7FF; Latin Extended-D
+A800..A82F; Syloti Nagri
+A840..A87F; Phags-pa
+AC00..D7AF; Hangul Syllables
+D800..DB7F; High Surrogates
+DB80..DBFF; High Private Use Surrogates
+DC00..DFFF; Low Surrogates
+E000..F8FF; Private Use Area
+F900..FAFF; CJK Compatibility Ideographs
+FB00..FB4F; Alphabetic Presentation Forms
+FB50..FDFF; Arabic Presentation Forms-A
+FE00..FE0F; Variation Selectors
+FE10..FE1F; Vertical Forms
+FE20..FE2F; Combining Half Marks
+FE30..FE4F; CJK Compatibility Forms
+FE50..FE6F; Small Form Variants
+FE70..FEFF; Arabic Presentation Forms-B
+FF00..FFEF; Halfwidth and Fullwidth Forms
+FFF0..FFFF; Specials
+10000..1007F; Linear B Syllabary
+10080..100FF; Linear B Ideograms
+10100..1013F; Aegean Numbers
+10140..1018F; Ancient Greek Numbers
+10300..1032F; Old Italic
+10330..1034F; Gothic
+10380..1039F; Ugaritic
+103A0..103DF; Old Persian
+10400..1044F; Deseret
+10450..1047F; Shavian
+10480..104AF; Osmanya
+10800..1083F; Cypriot Syllabary
+10900..1091F; Phoenician
+10A00..10A5F; Kharoshthi
+12000..123FF; Cuneiform
+12400..1247F; Cuneiform Numbers and Punctuation
+1D000..1D0FF; Byzantine Musical Symbols
+1D100..1D1FF; Musical Symbols
+1D200..1D24F; Ancient Greek Musical Notation
+1D300..1D35F; Tai Xuan Jing Symbols
+1D360..1D37F; Counting Rod Numerals
+1D400..1D7FF; Mathematical Alphanumeric Symbols
+20000..2A6DF; CJK Unified Ideographs Extension B
+2F800..2FA1F; CJK Compatibility Ideographs Supplement
+E0000..E007F; Tags
+E0100..E01EF; Variation Selectors Supplement
+F0000..FFFFF; Supplementary Private Use Area-A
+100000..10FFFF; Supplementary Private Use Area-B
+
+# EOF \ No newline at end of file
diff --git a/util/unicode/data/CaseFolding.txt b/util/unicode/data/CaseFolding.txt
new file mode 100644
index 0000000000..83a79b2fe2
--- /dev/null
+++ b/util/unicode/data/CaseFolding.txt
@@ -0,0 +1,1093 @@
+# CaseFolding-5.0.0.txt
+# Date: 2006-03-03, 08:22:43 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Case Folding Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It provides a case folding mapping generated from the Unicode Character Database.
+# If all characters are mapped according to the full mapping below, then
+# case differences (according to UnicodeData.txt and SpecialCasing.txt)
+# are eliminated.
+#
+# The data supports both implementations that require simple case foldings
+# (where string lengths don't change), and implementations that allow full case folding
+# (where string lengths may grow). Note that where they can be supported, the
+# full case foldings are superior: for example, they allow "MASSE" and "Maße" to match.
+#
+# All code points not listed in this file map to themselves.
+#
+# NOTE: case folding does not preserve normalization formats!
+#
+# For information on case folding, see
+# UTR #21 Case Mappings, at http://www.unicode.org/unicode/reports/tr21/
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <status>; <mapping>; # <name>
+#
+# The status field is:
+# C: common case folding, common mappings shared by both simple and full mappings.
+# F: full case folding, mappings that cause strings to grow in length. Multiple characters are separated by spaces.
+# S: simple case folding, mappings to single characters where different from F.
+# T: special case for uppercase I and dotted uppercase I
+# - For non-Turkic languages, this mapping is normally not used.
+# - For Turkic languages (tr, az), this mapping can be used instead of the normal mapping for these characters.
+# Note that the Turkic mappings do not maintain canonical equivalence without additional processing.
+# See the discussions of case mapping in the Unicode Standard for more information.
+#
+# Usage:
+# A. To do a simple case folding, use the mappings with status C + S.
+# B. To do a full case folding, use the mappings with status C + F.
+#
+# The mappings with status T can be used or omitted depending on the desired case-folding
+# behavior. (The default option is to exclude them.)
+#
+# =================================================================
+
+0041; C; 0061; # LATIN CAPITAL LETTER A
+0042; C; 0062; # LATIN CAPITAL LETTER B
+0043; C; 0063; # LATIN CAPITAL LETTER C
+0044; C; 0064; # LATIN CAPITAL LETTER D
+0045; C; 0065; # LATIN CAPITAL LETTER E
+0046; C; 0066; # LATIN CAPITAL LETTER F
+0047; C; 0067; # LATIN CAPITAL LETTER G
+0048; C; 0068; # LATIN CAPITAL LETTER H
+0049; C; 0069; # LATIN CAPITAL LETTER I
+0049; T; 0131; # LATIN CAPITAL LETTER I
+004A; C; 006A; # LATIN CAPITAL LETTER J
+004B; C; 006B; # LATIN CAPITAL LETTER K
+004C; C; 006C; # LATIN CAPITAL LETTER L
+004D; C; 006D; # LATIN CAPITAL LETTER M
+004E; C; 006E; # LATIN CAPITAL LETTER N
+004F; C; 006F; # LATIN CAPITAL LETTER O
+0050; C; 0070; # LATIN CAPITAL LETTER P
+0051; C; 0071; # LATIN CAPITAL LETTER Q
+0052; C; 0072; # LATIN CAPITAL LETTER R
+0053; C; 0073; # LATIN CAPITAL LETTER S
+0054; C; 0074; # LATIN CAPITAL LETTER T
+0055; C; 0075; # LATIN CAPITAL LETTER U
+0056; C; 0076; # LATIN CAPITAL LETTER V
+0057; C; 0077; # LATIN CAPITAL LETTER W
+0058; C; 0078; # LATIN CAPITAL LETTER X
+0059; C; 0079; # LATIN CAPITAL LETTER Y
+005A; C; 007A; # LATIN CAPITAL LETTER Z
+00B5; C; 03BC; # MICRO SIGN
+00C0; C; 00E0; # LATIN CAPITAL LETTER A WITH GRAVE
+00C1; C; 00E1; # LATIN CAPITAL LETTER A WITH ACUTE
+00C2; C; 00E2; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3; C; 00E3; # LATIN CAPITAL LETTER A WITH TILDE
+00C4; C; 00E4; # LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5; C; 00E5; # LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6; C; 00E6; # LATIN CAPITAL LETTER AE
+00C7; C; 00E7; # LATIN CAPITAL LETTER C WITH CEDILLA
+00C8; C; 00E8; # LATIN CAPITAL LETTER E WITH GRAVE
+00C9; C; 00E9; # LATIN CAPITAL LETTER E WITH ACUTE
+00CA; C; 00EA; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB; C; 00EB; # LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC; C; 00EC; # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; C; 00ED; # LATIN CAPITAL LETTER I WITH ACUTE
+00CE; C; 00EE; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF; C; 00EF; # LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0; C; 00F0; # LATIN CAPITAL LETTER ETH
+00D1; C; 00F1; # LATIN CAPITAL LETTER N WITH TILDE
+00D2; C; 00F2; # LATIN CAPITAL LETTER O WITH GRAVE
+00D3; C; 00F3; # LATIN CAPITAL LETTER O WITH ACUTE
+00D4; C; 00F4; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5; C; 00F5; # LATIN CAPITAL LETTER O WITH TILDE
+00D6; C; 00F6; # LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8; C; 00F8; # LATIN CAPITAL LETTER O WITH STROKE
+00D9; C; 00F9; # LATIN CAPITAL LETTER U WITH GRAVE
+00DA; C; 00FA; # LATIN CAPITAL LETTER U WITH ACUTE
+00DB; C; 00FB; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC; C; 00FC; # LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD; C; 00FD; # LATIN CAPITAL LETTER Y WITH ACUTE
+00DE; C; 00FE; # LATIN CAPITAL LETTER THORN
+00DF; F; 0073 0073; # LATIN SMALL LETTER SHARP S
+0100; C; 0101; # LATIN CAPITAL LETTER A WITH MACRON
+0102; C; 0103; # LATIN CAPITAL LETTER A WITH BREVE
+0104; C; 0105; # LATIN CAPITAL LETTER A WITH OGONEK
+0106; C; 0107; # LATIN CAPITAL LETTER C WITH ACUTE
+0108; C; 0109; # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010A; C; 010B; # LATIN CAPITAL LETTER C WITH DOT ABOVE
+010C; C; 010D; # LATIN CAPITAL LETTER C WITH CARON
+010E; C; 010F; # LATIN CAPITAL LETTER D WITH CARON
+0110; C; 0111; # LATIN CAPITAL LETTER D WITH STROKE
+0112; C; 0113; # LATIN CAPITAL LETTER E WITH MACRON
+0114; C; 0115; # LATIN CAPITAL LETTER E WITH BREVE
+0116; C; 0117; # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0118; C; 0119; # LATIN CAPITAL LETTER E WITH OGONEK
+011A; C; 011B; # LATIN CAPITAL LETTER E WITH CARON
+011C; C; 011D; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011E; C; 011F; # LATIN CAPITAL LETTER G WITH BREVE
+0120; C; 0121; # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0122; C; 0123; # LATIN CAPITAL LETTER G WITH CEDILLA
+0124; C; 0125; # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0126; C; 0127; # LATIN CAPITAL LETTER H WITH STROKE
+0128; C; 0129; # LATIN CAPITAL LETTER I WITH TILDE
+012A; C; 012B; # LATIN CAPITAL LETTER I WITH MACRON
+012C; C; 012D; # LATIN CAPITAL LETTER I WITH BREVE
+012E; C; 012F; # LATIN CAPITAL LETTER I WITH OGONEK
+0130; F; 0069 0307; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0130; T; 0069; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132; C; 0133; # LATIN CAPITAL LIGATURE IJ
+0134; C; 0135; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0136; C; 0137; # LATIN CAPITAL LETTER K WITH CEDILLA
+0139; C; 013A; # LATIN CAPITAL LETTER L WITH ACUTE
+013B; C; 013C; # LATIN CAPITAL LETTER L WITH CEDILLA
+013D; C; 013E; # LATIN CAPITAL LETTER L WITH CARON
+013F; C; 0140; # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0141; C; 0142; # LATIN CAPITAL LETTER L WITH STROKE
+0143; C; 0144; # LATIN CAPITAL LETTER N WITH ACUTE
+0145; C; 0146; # LATIN CAPITAL LETTER N WITH CEDILLA
+0147; C; 0148; # LATIN CAPITAL LETTER N WITH CARON
+0149; F; 02BC 006E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A; C; 014B; # LATIN CAPITAL LETTER ENG
+014C; C; 014D; # LATIN CAPITAL LETTER O WITH MACRON
+014E; C; 014F; # LATIN CAPITAL LETTER O WITH BREVE
+0150; C; 0151; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0152; C; 0153; # LATIN CAPITAL LIGATURE OE
+0154; C; 0155; # LATIN CAPITAL LETTER R WITH ACUTE
+0156; C; 0157; # LATIN CAPITAL LETTER R WITH CEDILLA
+0158; C; 0159; # LATIN CAPITAL LETTER R WITH CARON
+015A; C; 015B; # LATIN CAPITAL LETTER S WITH ACUTE
+015C; C; 015D; # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015E; C; 015F; # LATIN CAPITAL LETTER S WITH CEDILLA
+0160; C; 0161; # LATIN CAPITAL LETTER S WITH CARON
+0162; C; 0163; # LATIN CAPITAL LETTER T WITH CEDILLA
+0164; C; 0165; # LATIN CAPITAL LETTER T WITH CARON
+0166; C; 0167; # LATIN CAPITAL LETTER T WITH STROKE
+0168; C; 0169; # LATIN CAPITAL LETTER U WITH TILDE
+016A; C; 016B; # LATIN CAPITAL LETTER U WITH MACRON
+016C; C; 016D; # LATIN CAPITAL LETTER U WITH BREVE
+016E; C; 016F; # LATIN CAPITAL LETTER U WITH RING ABOVE
+0170; C; 0171; # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0172; C; 0173; # LATIN CAPITAL LETTER U WITH OGONEK
+0174; C; 0175; # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0176; C; 0177; # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0178; C; 00FF; # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179; C; 017A; # LATIN CAPITAL LETTER Z WITH ACUTE
+017B; C; 017C; # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017D; C; 017E; # LATIN CAPITAL LETTER Z WITH CARON
+017F; C; 0073; # LATIN SMALL LETTER LONG S
+0181; C; 0253; # LATIN CAPITAL LETTER B WITH HOOK
+0182; C; 0183; # LATIN CAPITAL LETTER B WITH TOPBAR
+0184; C; 0185; # LATIN CAPITAL LETTER TONE SIX
+0186; C; 0254; # LATIN CAPITAL LETTER OPEN O
+0187; C; 0188; # LATIN CAPITAL LETTER C WITH HOOK
+0189; C; 0256; # LATIN CAPITAL LETTER AFRICAN D
+018A; C; 0257; # LATIN CAPITAL LETTER D WITH HOOK
+018B; C; 018C; # LATIN CAPITAL LETTER D WITH TOPBAR
+018E; C; 01DD; # LATIN CAPITAL LETTER REVERSED E
+018F; C; 0259; # LATIN CAPITAL LETTER SCHWA
+0190; C; 025B; # LATIN CAPITAL LETTER OPEN E
+0191; C; 0192; # LATIN CAPITAL LETTER F WITH HOOK
+0193; C; 0260; # LATIN CAPITAL LETTER G WITH HOOK
+0194; C; 0263; # LATIN CAPITAL LETTER GAMMA
+0196; C; 0269; # LATIN CAPITAL LETTER IOTA
+0197; C; 0268; # LATIN CAPITAL LETTER I WITH STROKE
+0198; C; 0199; # LATIN CAPITAL LETTER K WITH HOOK
+019C; C; 026F; # LATIN CAPITAL LETTER TURNED M
+019D; C; 0272; # LATIN CAPITAL LETTER N WITH LEFT HOOK
+019F; C; 0275; # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01A0; C; 01A1; # LATIN CAPITAL LETTER O WITH HORN
+01A2; C; 01A3; # LATIN CAPITAL LETTER OI
+01A4; C; 01A5; # LATIN CAPITAL LETTER P WITH HOOK
+01A6; C; 0280; # LATIN LETTER YR
+01A7; C; 01A8; # LATIN CAPITAL LETTER TONE TWO
+01A9; C; 0283; # LATIN CAPITAL LETTER ESH
+01AC; C; 01AD; # LATIN CAPITAL LETTER T WITH HOOK
+01AE; C; 0288; # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01AF; C; 01B0; # LATIN CAPITAL LETTER U WITH HORN
+01B1; C; 028A; # LATIN CAPITAL LETTER UPSILON
+01B2; C; 028B; # LATIN CAPITAL LETTER V WITH HOOK
+01B3; C; 01B4; # LATIN CAPITAL LETTER Y WITH HOOK
+01B5; C; 01B6; # LATIN CAPITAL LETTER Z WITH STROKE
+01B7; C; 0292; # LATIN CAPITAL LETTER EZH
+01B8; C; 01B9; # LATIN CAPITAL LETTER EZH REVERSED
+01BC; C; 01BD; # LATIN CAPITAL LETTER TONE FIVE
+01C4; C; 01C6; # LATIN CAPITAL LETTER DZ WITH CARON
+01C5; C; 01C6; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C7; C; 01C9; # LATIN CAPITAL LETTER LJ
+01C8; C; 01C9; # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01CA; C; 01CC; # LATIN CAPITAL LETTER NJ
+01CB; C; 01CC; # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CD; C; 01CE; # LATIN CAPITAL LETTER A WITH CARON
+01CF; C; 01D0; # LATIN CAPITAL LETTER I WITH CARON
+01D1; C; 01D2; # LATIN CAPITAL LETTER O WITH CARON
+01D3; C; 01D4; # LATIN CAPITAL LETTER U WITH CARON
+01D5; C; 01D6; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D7; C; 01D8; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D9; C; 01DA; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DB; C; 01DC; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DE; C; 01DF; # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01E0; C; 01E1; # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E2; C; 01E3; # LATIN CAPITAL LETTER AE WITH MACRON
+01E4; C; 01E5; # LATIN CAPITAL LETTER G WITH STROKE
+01E6; C; 01E7; # LATIN CAPITAL LETTER G WITH CARON
+01E8; C; 01E9; # LATIN CAPITAL LETTER K WITH CARON
+01EA; C; 01EB; # LATIN CAPITAL LETTER O WITH OGONEK
+01EC; C; 01ED; # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01EE; C; 01EF; # LATIN CAPITAL LETTER EZH WITH CARON
+01F0; F; 006A 030C; # LATIN SMALL LETTER J WITH CARON
+01F1; C; 01F3; # LATIN CAPITAL LETTER DZ
+01F2; C; 01F3; # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F4; C; 01F5; # LATIN CAPITAL LETTER G WITH ACUTE
+01F6; C; 0195; # LATIN CAPITAL LETTER HWAIR
+01F7; C; 01BF; # LATIN CAPITAL LETTER WYNN
+01F8; C; 01F9; # LATIN CAPITAL LETTER N WITH GRAVE
+01FA; C; 01FB; # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FC; C; 01FD; # LATIN CAPITAL LETTER AE WITH ACUTE
+01FE; C; 01FF; # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0200; C; 0201; # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0202; C; 0203; # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0204; C; 0205; # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0206; C; 0207; # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0208; C; 0209; # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+020A; C; 020B; # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020C; C; 020D; # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020E; C; 020F; # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+0210; C; 0211; # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0212; C; 0213; # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0214; C; 0215; # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0216; C; 0217; # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0218; C; 0219; # LATIN CAPITAL LETTER S WITH COMMA BELOW
+021A; C; 021B; # LATIN CAPITAL LETTER T WITH COMMA BELOW
+021C; C; 021D; # LATIN CAPITAL LETTER YOGH
+021E; C; 021F; # LATIN CAPITAL LETTER H WITH CARON
+0220; C; 019E; # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+0222; C; 0223; # LATIN CAPITAL LETTER OU
+0224; C; 0225; # LATIN CAPITAL LETTER Z WITH HOOK
+0226; C; 0227; # LATIN CAPITAL LETTER A WITH DOT ABOVE
+0228; C; 0229; # LATIN CAPITAL LETTER E WITH CEDILLA
+022A; C; 022B; # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022C; C; 022D; # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022E; C; 022F; # LATIN CAPITAL LETTER O WITH DOT ABOVE
+0230; C; 0231; # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0232; C; 0233; # LATIN CAPITAL LETTER Y WITH MACRON
+023A; C; 2C65; # LATIN CAPITAL LETTER A WITH STROKE
+023B; C; 023C; # LATIN CAPITAL LETTER C WITH STROKE
+023D; C; 019A; # LATIN CAPITAL LETTER L WITH BAR
+023E; C; 2C66; # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+0241; C; 0242; # LATIN CAPITAL LETTER GLOTTAL STOP
+0243; C; 0180; # LATIN CAPITAL LETTER B WITH STROKE
+0244; C; 0289; # LATIN CAPITAL LETTER U BAR
+0245; C; 028C; # LATIN CAPITAL LETTER TURNED V
+0246; C; 0247; # LATIN CAPITAL LETTER E WITH STROKE
+0248; C; 0249; # LATIN CAPITAL LETTER J WITH STROKE
+024A; C; 024B; # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+024C; C; 024D; # LATIN CAPITAL LETTER R WITH STROKE
+024E; C; 024F; # LATIN CAPITAL LETTER Y WITH STROKE
+0345; C; 03B9; # COMBINING GREEK YPOGEGRAMMENI
+0386; C; 03AC; # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388; C; 03AD; # GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389; C; 03AE; # GREEK CAPITAL LETTER ETA WITH TONOS
+038A; C; 03AF; # GREEK CAPITAL LETTER IOTA WITH TONOS
+038C; C; 03CC; # GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E; C; 03CD; # GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F; C; 03CE; # GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391; C; 03B1; # GREEK CAPITAL LETTER ALPHA
+0392; C; 03B2; # GREEK CAPITAL LETTER BETA
+0393; C; 03B3; # GREEK CAPITAL LETTER GAMMA
+0394; C; 03B4; # GREEK CAPITAL LETTER DELTA
+0395; C; 03B5; # GREEK CAPITAL LETTER EPSILON
+0396; C; 03B6; # GREEK CAPITAL LETTER ZETA
+0397; C; 03B7; # GREEK CAPITAL LETTER ETA
+0398; C; 03B8; # GREEK CAPITAL LETTER THETA
+0399; C; 03B9; # GREEK CAPITAL LETTER IOTA
+039A; C; 03BA; # GREEK CAPITAL LETTER KAPPA
+039B; C; 03BB; # GREEK CAPITAL LETTER LAMDA
+039C; C; 03BC; # GREEK CAPITAL LETTER MU
+039D; C; 03BD; # GREEK CAPITAL LETTER NU
+039E; C; 03BE; # GREEK CAPITAL LETTER XI
+039F; C; 03BF; # GREEK CAPITAL LETTER OMICRON
+03A0; C; 03C0; # GREEK CAPITAL LETTER PI
+03A1; C; 03C1; # GREEK CAPITAL LETTER RHO
+03A3; C; 03C3; # GREEK CAPITAL LETTER SIGMA
+03A4; C; 03C4; # GREEK CAPITAL LETTER TAU
+03A5; C; 03C5; # GREEK CAPITAL LETTER UPSILON
+03A6; C; 03C6; # GREEK CAPITAL LETTER PHI
+03A7; C; 03C7; # GREEK CAPITAL LETTER CHI
+03A8; C; 03C8; # GREEK CAPITAL LETTER PSI
+03A9; C; 03C9; # GREEK CAPITAL LETTER OMEGA
+03AA; C; 03CA; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB; C; 03CB; # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03B0; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03C2; C; 03C3; # GREEK SMALL LETTER FINAL SIGMA
+03D0; C; 03B2; # GREEK BETA SYMBOL
+03D1; C; 03B8; # GREEK THETA SYMBOL
+03D5; C; 03C6; # GREEK PHI SYMBOL
+03D6; C; 03C0; # GREEK PI SYMBOL
+03D8; C; 03D9; # GREEK LETTER ARCHAIC KOPPA
+03DA; C; 03DB; # GREEK LETTER STIGMA
+03DC; C; 03DD; # GREEK LETTER DIGAMMA
+03DE; C; 03DF; # GREEK LETTER KOPPA
+03E0; C; 03E1; # GREEK LETTER SAMPI
+03E2; C; 03E3; # COPTIC CAPITAL LETTER SHEI
+03E4; C; 03E5; # COPTIC CAPITAL LETTER FEI
+03E6; C; 03E7; # COPTIC CAPITAL LETTER KHEI
+03E8; C; 03E9; # COPTIC CAPITAL LETTER HORI
+03EA; C; 03EB; # COPTIC CAPITAL LETTER GANGIA
+03EC; C; 03ED; # COPTIC CAPITAL LETTER SHIMA
+03EE; C; 03EF; # COPTIC CAPITAL LETTER DEI
+03F0; C; 03BA; # GREEK KAPPA SYMBOL
+03F1; C; 03C1; # GREEK RHO SYMBOL
+03F4; C; 03B8; # GREEK CAPITAL THETA SYMBOL
+03F5; C; 03B5; # GREEK LUNATE EPSILON SYMBOL
+03F7; C; 03F8; # GREEK CAPITAL LETTER SHO
+03F9; C; 03F2; # GREEK CAPITAL LUNATE SIGMA SYMBOL
+03FA; C; 03FB; # GREEK CAPITAL LETTER SAN
+03FD; C; 037B; # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
+03FE; C; 037C; # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
+03FF; C; 037D; # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0400; C; 0450; # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401; C; 0451; # CYRILLIC CAPITAL LETTER IO
+0402; C; 0452; # CYRILLIC CAPITAL LETTER DJE
+0403; C; 0453; # CYRILLIC CAPITAL LETTER GJE
+0404; C; 0454; # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405; C; 0455; # CYRILLIC CAPITAL LETTER DZE
+0406; C; 0456; # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407; C; 0457; # CYRILLIC CAPITAL LETTER YI
+0408; C; 0458; # CYRILLIC CAPITAL LETTER JE
+0409; C; 0459; # CYRILLIC CAPITAL LETTER LJE
+040A; C; 045A; # CYRILLIC CAPITAL LETTER NJE
+040B; C; 045B; # CYRILLIC CAPITAL LETTER TSHE
+040C; C; 045C; # CYRILLIC CAPITAL LETTER KJE
+040D; C; 045D; # CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E; C; 045E; # CYRILLIC CAPITAL LETTER SHORT U
+040F; C; 045F; # CYRILLIC CAPITAL LETTER DZHE
+0410; C; 0430; # CYRILLIC CAPITAL LETTER A
+0411; C; 0431; # CYRILLIC CAPITAL LETTER BE
+0412; C; 0432; # CYRILLIC CAPITAL LETTER VE
+0413; C; 0433; # CYRILLIC CAPITAL LETTER GHE
+0414; C; 0434; # CYRILLIC CAPITAL LETTER DE
+0415; C; 0435; # CYRILLIC CAPITAL LETTER IE
+0416; C; 0436; # CYRILLIC CAPITAL LETTER ZHE
+0417; C; 0437; # CYRILLIC CAPITAL LETTER ZE
+0418; C; 0438; # CYRILLIC CAPITAL LETTER I
+0419; C; 0439; # CYRILLIC CAPITAL LETTER SHORT I
+041A; C; 043A; # CYRILLIC CAPITAL LETTER KA
+041B; C; 043B; # CYRILLIC CAPITAL LETTER EL
+041C; C; 043C; # CYRILLIC CAPITAL LETTER EM
+041D; C; 043D; # CYRILLIC CAPITAL LETTER EN
+041E; C; 043E; # CYRILLIC CAPITAL LETTER O
+041F; C; 043F; # CYRILLIC CAPITAL LETTER PE
+0420; C; 0440; # CYRILLIC CAPITAL LETTER ER
+0421; C; 0441; # CYRILLIC CAPITAL LETTER ES
+0422; C; 0442; # CYRILLIC CAPITAL LETTER TE
+0423; C; 0443; # CYRILLIC CAPITAL LETTER U
+0424; C; 0444; # CYRILLIC CAPITAL LETTER EF
+0425; C; 0445; # CYRILLIC CAPITAL LETTER HA
+0426; C; 0446; # CYRILLIC CAPITAL LETTER TSE
+0427; C; 0447; # CYRILLIC CAPITAL LETTER CHE
+0428; C; 0448; # CYRILLIC CAPITAL LETTER SHA
+0429; C; 0449; # CYRILLIC CAPITAL LETTER SHCHA
+042A; C; 044A; # CYRILLIC CAPITAL LETTER HARD SIGN
+042B; C; 044B; # CYRILLIC CAPITAL LETTER YERU
+042C; C; 044C; # CYRILLIC CAPITAL LETTER SOFT SIGN
+042D; C; 044D; # CYRILLIC CAPITAL LETTER E
+042E; C; 044E; # CYRILLIC CAPITAL LETTER YU
+042F; C; 044F; # CYRILLIC CAPITAL LETTER YA
+0460; C; 0461; # CYRILLIC CAPITAL LETTER OMEGA
+0462; C; 0463; # CYRILLIC CAPITAL LETTER YAT
+0464; C; 0465; # CYRILLIC CAPITAL LETTER IOTIFIED E
+0466; C; 0467; # CYRILLIC CAPITAL LETTER LITTLE YUS
+0468; C; 0469; # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+046A; C; 046B; # CYRILLIC CAPITAL LETTER BIG YUS
+046C; C; 046D; # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046E; C; 046F; # CYRILLIC CAPITAL LETTER KSI
+0470; C; 0471; # CYRILLIC CAPITAL LETTER PSI
+0472; C; 0473; # CYRILLIC CAPITAL LETTER FITA
+0474; C; 0475; # CYRILLIC CAPITAL LETTER IZHITSA
+0476; C; 0477; # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478; C; 0479; # CYRILLIC CAPITAL LETTER UK
+047A; C; 047B; # CYRILLIC CAPITAL LETTER ROUND OMEGA
+047C; C; 047D; # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047E; C; 047F; # CYRILLIC CAPITAL LETTER OT
+0480; C; 0481; # CYRILLIC CAPITAL LETTER KOPPA
+048A; C; 048B; # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+048C; C; 048D; # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048E; C; 048F; # CYRILLIC CAPITAL LETTER ER WITH TICK
+0490; C; 0491; # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0492; C; 0493; # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0494; C; 0495; # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0496; C; 0497; # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0498; C; 0499; # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+049A; C; 049B; # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049C; C; 049D; # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049E; C; 049F; # CYRILLIC CAPITAL LETTER KA WITH STROKE
+04A0; C; 04A1; # CYRILLIC CAPITAL LETTER BASHKIR KA
+04A2; C; 04A3; # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A4; C; 04A5; # CYRILLIC CAPITAL LIGATURE EN GHE
+04A6; C; 04A7; # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A8; C; 04A9; # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04AA; C; 04AB; # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AC; C; 04AD; # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AE; C; 04AF; # CYRILLIC CAPITAL LETTER STRAIGHT U
+04B0; C; 04B1; # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B2; C; 04B3; # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B4; C; 04B5; # CYRILLIC CAPITAL LIGATURE TE TSE
+04B6; C; 04B7; # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B8; C; 04B9; # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04BA; C; 04BB; # CYRILLIC CAPITAL LETTER SHHA
+04BC; C; 04BD; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BE; C; 04BF; # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0; C; 04CF; # CYRILLIC LETTER PALOCHKA
+04C1; C; 04C2; # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C3; C; 04C4; # CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C5; C; 04C6; # CYRILLIC CAPITAL LETTER EL WITH TAIL
+04C7; C; 04C8; # CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C9; C; 04CA; # CYRILLIC CAPITAL LETTER EN WITH TAIL
+04CB; C; 04CC; # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CD; C; 04CE; # CYRILLIC CAPITAL LETTER EM WITH TAIL
+04D0; C; 04D1; # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D2; C; 04D3; # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D4; C; 04D5; # CYRILLIC CAPITAL LIGATURE A IE
+04D6; C; 04D7; # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D8; C; 04D9; # CYRILLIC CAPITAL LETTER SCHWA
+04DA; C; 04DB; # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DC; C; 04DD; # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DE; C; 04DF; # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E0; C; 04E1; # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E2; C; 04E3; # CYRILLIC CAPITAL LETTER I WITH MACRON
+04E4; C; 04E5; # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E6; C; 04E7; # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E8; C; 04E9; # CYRILLIC CAPITAL LETTER BARRED O
+04EA; C; 04EB; # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EC; C; 04ED; # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04EE; C; 04EF; # CYRILLIC CAPITAL LETTER U WITH MACRON
+04F0; C; 04F1; # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F2; C; 04F3; # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F4; C; 04F5; # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F6; C; 04F7; # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+04F8; C; 04F9; # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04FA; C; 04FB; # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+04FC; C; 04FD; # CYRILLIC CAPITAL LETTER HA WITH HOOK
+04FE; C; 04FF; # CYRILLIC CAPITAL LETTER HA WITH STROKE
+0500; C; 0501; # CYRILLIC CAPITAL LETTER KOMI DE
+0502; C; 0503; # CYRILLIC CAPITAL LETTER KOMI DJE
+0504; C; 0505; # CYRILLIC CAPITAL LETTER KOMI ZJE
+0506; C; 0507; # CYRILLIC CAPITAL LETTER KOMI DZJE
+0508; C; 0509; # CYRILLIC CAPITAL LETTER KOMI LJE
+050A; C; 050B; # CYRILLIC CAPITAL LETTER KOMI NJE
+050C; C; 050D; # CYRILLIC CAPITAL LETTER KOMI SJE
+050E; C; 050F; # CYRILLIC CAPITAL LETTER KOMI TJE
+0510; C; 0511; # CYRILLIC CAPITAL LETTER REVERSED ZE
+0512; C; 0513; # CYRILLIC CAPITAL LETTER EL WITH HOOK
+0531; C; 0561; # ARMENIAN CAPITAL LETTER AYB
+0532; C; 0562; # ARMENIAN CAPITAL LETTER BEN
+0533; C; 0563; # ARMENIAN CAPITAL LETTER GIM
+0534; C; 0564; # ARMENIAN CAPITAL LETTER DA
+0535; C; 0565; # ARMENIAN CAPITAL LETTER ECH
+0536; C; 0566; # ARMENIAN CAPITAL LETTER ZA
+0537; C; 0567; # ARMENIAN CAPITAL LETTER EH
+0538; C; 0568; # ARMENIAN CAPITAL LETTER ET
+0539; C; 0569; # ARMENIAN CAPITAL LETTER TO
+053A; C; 056A; # ARMENIAN CAPITAL LETTER ZHE
+053B; C; 056B; # ARMENIAN CAPITAL LETTER INI
+053C; C; 056C; # ARMENIAN CAPITAL LETTER LIWN
+053D; C; 056D; # ARMENIAN CAPITAL LETTER XEH
+053E; C; 056E; # ARMENIAN CAPITAL LETTER CA
+053F; C; 056F; # ARMENIAN CAPITAL LETTER KEN
+0540; C; 0570; # ARMENIAN CAPITAL LETTER HO
+0541; C; 0571; # ARMENIAN CAPITAL LETTER JA
+0542; C; 0572; # ARMENIAN CAPITAL LETTER GHAD
+0543; C; 0573; # ARMENIAN CAPITAL LETTER CHEH
+0544; C; 0574; # ARMENIAN CAPITAL LETTER MEN
+0545; C; 0575; # ARMENIAN CAPITAL LETTER YI
+0546; C; 0576; # ARMENIAN CAPITAL LETTER NOW
+0547; C; 0577; # ARMENIAN CAPITAL LETTER SHA
+0548; C; 0578; # ARMENIAN CAPITAL LETTER VO
+0549; C; 0579; # ARMENIAN CAPITAL LETTER CHA
+054A; C; 057A; # ARMENIAN CAPITAL LETTER PEH
+054B; C; 057B; # ARMENIAN CAPITAL LETTER JHEH
+054C; C; 057C; # ARMENIAN CAPITAL LETTER RA
+054D; C; 057D; # ARMENIAN CAPITAL LETTER SEH
+054E; C; 057E; # ARMENIAN CAPITAL LETTER VEW
+054F; C; 057F; # ARMENIAN CAPITAL LETTER TIWN
+0550; C; 0580; # ARMENIAN CAPITAL LETTER REH
+0551; C; 0581; # ARMENIAN CAPITAL LETTER CO
+0552; C; 0582; # ARMENIAN CAPITAL LETTER YIWN
+0553; C; 0583; # ARMENIAN CAPITAL LETTER PIWR
+0554; C; 0584; # ARMENIAN CAPITAL LETTER KEH
+0555; C; 0585; # ARMENIAN CAPITAL LETTER OH
+0556; C; 0586; # ARMENIAN CAPITAL LETTER FEH
+0587; F; 0565 0582; # ARMENIAN SMALL LIGATURE ECH YIWN
+10A0; C; 2D00; # GEORGIAN CAPITAL LETTER AN
+10A1; C; 2D01; # GEORGIAN CAPITAL LETTER BAN
+10A2; C; 2D02; # GEORGIAN CAPITAL LETTER GAN
+10A3; C; 2D03; # GEORGIAN CAPITAL LETTER DON
+10A4; C; 2D04; # GEORGIAN CAPITAL LETTER EN
+10A5; C; 2D05; # GEORGIAN CAPITAL LETTER VIN
+10A6; C; 2D06; # GEORGIAN CAPITAL LETTER ZEN
+10A7; C; 2D07; # GEORGIAN CAPITAL LETTER TAN
+10A8; C; 2D08; # GEORGIAN CAPITAL LETTER IN
+10A9; C; 2D09; # GEORGIAN CAPITAL LETTER KAN
+10AA; C; 2D0A; # GEORGIAN CAPITAL LETTER LAS
+10AB; C; 2D0B; # GEORGIAN CAPITAL LETTER MAN
+10AC; C; 2D0C; # GEORGIAN CAPITAL LETTER NAR
+10AD; C; 2D0D; # GEORGIAN CAPITAL LETTER ON
+10AE; C; 2D0E; # GEORGIAN CAPITAL LETTER PAR
+10AF; C; 2D0F; # GEORGIAN CAPITAL LETTER ZHAR
+10B0; C; 2D10; # GEORGIAN CAPITAL LETTER RAE
+10B1; C; 2D11; # GEORGIAN CAPITAL LETTER SAN
+10B2; C; 2D12; # GEORGIAN CAPITAL LETTER TAR
+10B3; C; 2D13; # GEORGIAN CAPITAL LETTER UN
+10B4; C; 2D14; # GEORGIAN CAPITAL LETTER PHAR
+10B5; C; 2D15; # GEORGIAN CAPITAL LETTER KHAR
+10B6; C; 2D16; # GEORGIAN CAPITAL LETTER GHAN
+10B7; C; 2D17; # GEORGIAN CAPITAL LETTER QAR
+10B8; C; 2D18; # GEORGIAN CAPITAL LETTER SHIN
+10B9; C; 2D19; # GEORGIAN CAPITAL LETTER CHIN
+10BA; C; 2D1A; # GEORGIAN CAPITAL LETTER CAN
+10BB; C; 2D1B; # GEORGIAN CAPITAL LETTER JIL
+10BC; C; 2D1C; # GEORGIAN CAPITAL LETTER CIL
+10BD; C; 2D1D; # GEORGIAN CAPITAL LETTER CHAR
+10BE; C; 2D1E; # GEORGIAN CAPITAL LETTER XAN
+10BF; C; 2D1F; # GEORGIAN CAPITAL LETTER JHAN
+10C0; C; 2D20; # GEORGIAN CAPITAL LETTER HAE
+10C1; C; 2D21; # GEORGIAN CAPITAL LETTER HE
+10C2; C; 2D22; # GEORGIAN CAPITAL LETTER HIE
+10C3; C; 2D23; # GEORGIAN CAPITAL LETTER WE
+10C4; C; 2D24; # GEORGIAN CAPITAL LETTER HAR
+10C5; C; 2D25; # GEORGIAN CAPITAL LETTER HOE
+1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW
+1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW
+1E06; C; 1E07; # LATIN CAPITAL LETTER B WITH LINE BELOW
+1E08; C; 1E09; # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E0A; C; 1E0B; # LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0C; C; 1E0D; # LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0E; C; 1E0F; # LATIN CAPITAL LETTER D WITH LINE BELOW
+1E10; C; 1E11; # LATIN CAPITAL LETTER D WITH CEDILLA
+1E12; C; 1E13; # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E14; C; 1E15; # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E16; C; 1E17; # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E18; C; 1E19; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E1A; C; 1E1B; # LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1C; C; 1E1D; # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1E; C; 1E1F; # LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E20; C; 1E21; # LATIN CAPITAL LETTER G WITH MACRON
+1E22; C; 1E23; # LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E24; C; 1E25; # LATIN CAPITAL LETTER H WITH DOT BELOW
+1E26; C; 1E27; # LATIN CAPITAL LETTER H WITH DIAERESIS
+1E28; C; 1E29; # LATIN CAPITAL LETTER H WITH CEDILLA
+1E2A; C; 1E2B; # LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2C; C; 1E2D; # LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2E; C; 1E2F; # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E30; C; 1E31; # LATIN CAPITAL LETTER K WITH ACUTE
+1E32; C; 1E33; # LATIN CAPITAL LETTER K WITH DOT BELOW
+1E34; C; 1E35; # LATIN CAPITAL LETTER K WITH LINE BELOW
+1E36; C; 1E37; # LATIN CAPITAL LETTER L WITH DOT BELOW
+1E38; C; 1E39; # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E3A; C; 1E3B; # LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3C; C; 1E3D; # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3E; C; 1E3F; # LATIN CAPITAL LETTER M WITH ACUTE
+1E40; C; 1E41; # LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E42; C; 1E43; # LATIN CAPITAL LETTER M WITH DOT BELOW
+1E44; C; 1E45; # LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E46; C; 1E47; # LATIN CAPITAL LETTER N WITH DOT BELOW
+1E48; C; 1E49; # LATIN CAPITAL LETTER N WITH LINE BELOW
+1E4A; C; 1E4B; # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4C; C; 1E4D; # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4E; C; 1E4F; # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E50; C; 1E51; # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E52; C; 1E53; # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E54; C; 1E55; # LATIN CAPITAL LETTER P WITH ACUTE
+1E56; C; 1E57; # LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E58; C; 1E59; # LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E5A; C; 1E5B; # LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5C; C; 1E5D; # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5E; C; 1E5F; # LATIN CAPITAL LETTER R WITH LINE BELOW
+1E60; C; 1E61; # LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E62; C; 1E63; # LATIN CAPITAL LETTER S WITH DOT BELOW
+1E64; C; 1E65; # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E66; C; 1E67; # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E68; C; 1E69; # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A; C; 1E6B; # LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6C; C; 1E6D; # LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6E; C; 1E6F; # LATIN CAPITAL LETTER T WITH LINE BELOW
+1E70; C; 1E71; # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E72; C; 1E73; # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E74; C; 1E75; # LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E76; C; 1E77; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E78; C; 1E79; # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E7A; C; 1E7B; # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7C; C; 1E7D; # LATIN CAPITAL LETTER V WITH TILDE
+1E7E; C; 1E7F; # LATIN CAPITAL LETTER V WITH DOT BELOW
+1E80; C; 1E81; # LATIN CAPITAL LETTER W WITH GRAVE
+1E82; C; 1E83; # LATIN CAPITAL LETTER W WITH ACUTE
+1E84; C; 1E85; # LATIN CAPITAL LETTER W WITH DIAERESIS
+1E86; C; 1E87; # LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E88; C; 1E89; # LATIN CAPITAL LETTER W WITH DOT BELOW
+1E8A; C; 1E8B; # LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8C; C; 1E8D; # LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8E; C; 1E8F; # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E90; C; 1E91; # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E92; C; 1E93; # LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E94; C; 1E95; # LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E96; F; 0068 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; F; 0074 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; F; 0077 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; F; 0079 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; F; 0061 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B; C; 1E61; # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0; C; 1EA1; # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA2; C; 1EA3; # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA4; C; 1EA5; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6; C; 1EA7; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8; C; 1EA9; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA; C; 1EAB; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC; C; 1EAD; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE; C; 1EAF; # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB0; C; 1EB1; # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB2; C; 1EB3; # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4; C; 1EB5; # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB6; C; 1EB7; # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB8; C; 1EB9; # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EBA; C; 1EBB; # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBC; C; 1EBD; # LATIN CAPITAL LETTER E WITH TILDE
+1EBE; C; 1EBF; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0; C; 1EC1; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2; C; 1EC3; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4; C; 1EC5; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6; C; 1EC7; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8; C; 1EC9; # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECA; C; 1ECB; # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECC; C; 1ECD; # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECE; C; 1ECF; # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ED0; C; 1ED1; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2; C; 1ED3; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4; C; 1ED5; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6; C; 1ED7; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8; C; 1ED9; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA; C; 1EDB; # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDC; C; 1EDD; # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDE; C; 1EDF; # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE0; C; 1EE1; # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE2; C; 1EE3; # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE4; C; 1EE5; # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE6; C; 1EE7; # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE8; C; 1EE9; # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEA; C; 1EEB; # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEC; C; 1EED; # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EEE; C; 1EEF; # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EF0; C; 1EF1; # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF2; C; 1EF3; # LATIN CAPITAL LETTER Y WITH GRAVE
+1EF4; C; 1EF5; # LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF6; C; 1EF7; # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF8; C; 1EF9; # LATIN CAPITAL LETTER Y WITH TILDE
+1F08; C; 1F00; # GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09; C; 1F01; # GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A; C; 1F02; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B; C; 1F03; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C; C; 1F04; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D; C; 1F05; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E; C; 1F06; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F; C; 1F07; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F18; C; 1F10; # GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19; C; 1F11; # GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A; C; 1F12; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B; C; 1F13; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C; C; 1F14; # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D; C; 1F15; # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F28; C; 1F20; # GREEK CAPITAL LETTER ETA WITH PSILI
+1F29; C; 1F21; # GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A; C; 1F22; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B; C; 1F23; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C; C; 1F24; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D; C; 1F25; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E; C; 1F26; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F; C; 1F27; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F38; C; 1F30; # GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39; C; 1F31; # GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A; C; 1F32; # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B; C; 1F33; # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C; C; 1F34; # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D; C; 1F35; # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E; C; 1F36; # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F; C; 1F37; # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F48; C; 1F40; # GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49; C; 1F41; # GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A; C; 1F42; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B; C; 1F43; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C; C; 1F44; # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D; C; 1F45; # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50; F; 03C5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; F; 03C5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; F; 03C5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; F; 03C5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F59; C; 1F51; # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B; C; 1F53; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D; C; 1F55; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F; C; 1F57; # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F68; C; 1F60; # GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69; C; 1F61; # GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A; C; 1F62; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B; C; 1F63; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C; C; 1F64; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D; C; 1F65; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E; C; 1F66; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F; C; 1F67; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F80; F; 1F00 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; F; 1F01 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; F; 1F02 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; F; 1F03 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; F; 1F04 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; F; 1F05 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; F; 1F06 03B9; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; F; 1F07 03B9; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; F; 1F00 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F88; S; 1F80; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; F; 1F01 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F89; S; 1F81; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; F; 1F02 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8A; S; 1F82; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; F; 1F03 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8B; S; 1F83; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; F; 1F04 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8C; S; 1F84; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; F; 1F05 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8D; S; 1F85; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; F; 1F06 03B9; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8E; S; 1F86; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; F; 1F07 03B9; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; S; 1F87; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; F; 1F20 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; F; 1F21 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; F; 1F22 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; F; 1F23 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; F; 1F24 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; F; 1F25 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; F; 1F26 03B9; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; F; 1F27 03B9; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; F; 1F20 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F98; S; 1F90; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; F; 1F21 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F99; S; 1F91; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; F; 1F22 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9A; S; 1F92; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; F; 1F23 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9B; S; 1F93; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; F; 1F24 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9C; S; 1F94; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; F; 1F25 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9D; S; 1F95; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; F; 1F26 03B9; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9E; S; 1F96; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; F; 1F27 03B9; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; S; 1F97; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; F; 1F60 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; F; 1F61 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; F; 1F62 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; F; 1F63 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; F; 1F64 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; F; 1F65 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; F; 1F66 03B9; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; F; 1F67 03B9; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; F; 1F60 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA8; S; 1FA0; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; F; 1F61 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FA9; S; 1FA1; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; F; 1F62 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAA; S; 1FA2; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; F; 1F63 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAB; S; 1FA3; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; F; 1F64 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAC; S; 1FA4; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; F; 1F65 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAD; S; 1FA5; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; F; 1F66 03B9; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAE; S; 1FA6; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; F; 1F67 03B9; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; S; 1FA7; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB2; F; 1F70 03B9; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3; F; 03B1 03B9; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4; F; 03AC 03B9; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6; F; 03B1 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7; F; 03B1 0342 03B9; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8; C; 1FB0; # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9; C; 1FB1; # GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA; C; 1F70; # GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB; C; 1F71; # GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC; F; 03B1 03B9; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBC; S; 1FB3; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBE; C; 03B9; # GREEK PROSGEGRAMMENI
+1FC2; F; 1F74 03B9; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3; F; 03B7 03B9; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4; F; 03AE 03B9; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6; F; 03B7 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7; F; 03B7 0342 03B9; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8; C; 1F72; # GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9; C; 1F73; # GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA; C; 1F74; # GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB; C; 1F75; # GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC; F; 03B7 03B9; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCC; S; 1FC3; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FD2; F; 03B9 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; F; 03B9 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; F; 03B9 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; F; 03B9 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8; C; 1FD0; # GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9; C; 1FD1; # GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA; C; 1F76; # GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB; C; 1F77; # GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE2; F; 03C5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; F; 03C5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; F; 03C1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; F; 03C5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; F; 03C5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8; C; 1FE0; # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9; C; 1FE1; # GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA; C; 1F7A; # GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB; C; 1F7B; # GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC; C; 1FE5; # GREEK CAPITAL LETTER RHO WITH DASIA
+1FF2; F; 1F7C 03B9; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3; F; 03C9 03B9; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4; F; 03CE 03B9; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6; F; 03C9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7; F; 03C9 0342 03B9; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8; C; 1F78; # GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9; C; 1F79; # GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA; C; 1F7C; # GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB; C; 1F7D; # GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC; F; 03C9 03B9; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFC; S; 1FF3; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+2126; C; 03C9; # OHM SIGN
+212A; C; 006B; # KELVIN SIGN
+212B; C; 00E5; # ANGSTROM SIGN
+2132; C; 214E; # TURNED CAPITAL F
+2160; C; 2170; # ROMAN NUMERAL ONE
+2161; C; 2171; # ROMAN NUMERAL TWO
+2162; C; 2172; # ROMAN NUMERAL THREE
+2163; C; 2173; # ROMAN NUMERAL FOUR
+2164; C; 2174; # ROMAN NUMERAL FIVE
+2165; C; 2175; # ROMAN NUMERAL SIX
+2166; C; 2176; # ROMAN NUMERAL SEVEN
+2167; C; 2177; # ROMAN NUMERAL EIGHT
+2168; C; 2178; # ROMAN NUMERAL NINE
+2169; C; 2179; # ROMAN NUMERAL TEN
+216A; C; 217A; # ROMAN NUMERAL ELEVEN
+216B; C; 217B; # ROMAN NUMERAL TWELVE
+216C; C; 217C; # ROMAN NUMERAL FIFTY
+216D; C; 217D; # ROMAN NUMERAL ONE HUNDRED
+216E; C; 217E; # ROMAN NUMERAL FIVE HUNDRED
+216F; C; 217F; # ROMAN NUMERAL ONE THOUSAND
+2183; C; 2184; # ROMAN NUMERAL REVERSED ONE HUNDRED
+24B6; C; 24D0; # CIRCLED LATIN CAPITAL LETTER A
+24B7; C; 24D1; # CIRCLED LATIN CAPITAL LETTER B
+24B8; C; 24D2; # CIRCLED LATIN CAPITAL LETTER C
+24B9; C; 24D3; # CIRCLED LATIN CAPITAL LETTER D
+24BA; C; 24D4; # CIRCLED LATIN CAPITAL LETTER E
+24BB; C; 24D5; # CIRCLED LATIN CAPITAL LETTER F
+24BC; C; 24D6; # CIRCLED LATIN CAPITAL LETTER G
+24BD; C; 24D7; # CIRCLED LATIN CAPITAL LETTER H
+24BE; C; 24D8; # CIRCLED LATIN CAPITAL LETTER I
+24BF; C; 24D9; # CIRCLED LATIN CAPITAL LETTER J
+24C0; C; 24DA; # CIRCLED LATIN CAPITAL LETTER K
+24C1; C; 24DB; # CIRCLED LATIN CAPITAL LETTER L
+24C2; C; 24DC; # CIRCLED LATIN CAPITAL LETTER M
+24C3; C; 24DD; # CIRCLED LATIN CAPITAL LETTER N
+24C4; C; 24DE; # CIRCLED LATIN CAPITAL LETTER O
+24C5; C; 24DF; # CIRCLED LATIN CAPITAL LETTER P
+24C6; C; 24E0; # CIRCLED LATIN CAPITAL LETTER Q
+24C7; C; 24E1; # CIRCLED LATIN CAPITAL LETTER R
+24C8; C; 24E2; # CIRCLED LATIN CAPITAL LETTER S
+24C9; C; 24E3; # CIRCLED LATIN CAPITAL LETTER T
+24CA; C; 24E4; # CIRCLED LATIN CAPITAL LETTER U
+24CB; C; 24E5; # CIRCLED LATIN CAPITAL LETTER V
+24CC; C; 24E6; # CIRCLED LATIN CAPITAL LETTER W
+24CD; C; 24E7; # CIRCLED LATIN CAPITAL LETTER X
+24CE; C; 24E8; # CIRCLED LATIN CAPITAL LETTER Y
+24CF; C; 24E9; # CIRCLED LATIN CAPITAL LETTER Z
+2C00; C; 2C30; # GLAGOLITIC CAPITAL LETTER AZU
+2C01; C; 2C31; # GLAGOLITIC CAPITAL LETTER BUKY
+2C02; C; 2C32; # GLAGOLITIC CAPITAL LETTER VEDE
+2C03; C; 2C33; # GLAGOLITIC CAPITAL LETTER GLAGOLI
+2C04; C; 2C34; # GLAGOLITIC CAPITAL LETTER DOBRO
+2C05; C; 2C35; # GLAGOLITIC CAPITAL LETTER YESTU
+2C06; C; 2C36; # GLAGOLITIC CAPITAL LETTER ZHIVETE
+2C07; C; 2C37; # GLAGOLITIC CAPITAL LETTER DZELO
+2C08; C; 2C38; # GLAGOLITIC CAPITAL LETTER ZEMLJA
+2C09; C; 2C39; # GLAGOLITIC CAPITAL LETTER IZHE
+2C0A; C; 2C3A; # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+2C0B; C; 2C3B; # GLAGOLITIC CAPITAL LETTER I
+2C0C; C; 2C3C; # GLAGOLITIC CAPITAL LETTER DJERVI
+2C0D; C; 2C3D; # GLAGOLITIC CAPITAL LETTER KAKO
+2C0E; C; 2C3E; # GLAGOLITIC CAPITAL LETTER LJUDIJE
+2C0F; C; 2C3F; # GLAGOLITIC CAPITAL LETTER MYSLITE
+2C10; C; 2C40; # GLAGOLITIC CAPITAL LETTER NASHI
+2C11; C; 2C41; # GLAGOLITIC CAPITAL LETTER ONU
+2C12; C; 2C42; # GLAGOLITIC CAPITAL LETTER POKOJI
+2C13; C; 2C43; # GLAGOLITIC CAPITAL LETTER RITSI
+2C14; C; 2C44; # GLAGOLITIC CAPITAL LETTER SLOVO
+2C15; C; 2C45; # GLAGOLITIC CAPITAL LETTER TVRIDO
+2C16; C; 2C46; # GLAGOLITIC CAPITAL LETTER UKU
+2C17; C; 2C47; # GLAGOLITIC CAPITAL LETTER FRITU
+2C18; C; 2C48; # GLAGOLITIC CAPITAL LETTER HERU
+2C19; C; 2C49; # GLAGOLITIC CAPITAL LETTER OTU
+2C1A; C; 2C4A; # GLAGOLITIC CAPITAL LETTER PE
+2C1B; C; 2C4B; # GLAGOLITIC CAPITAL LETTER SHTA
+2C1C; C; 2C4C; # GLAGOLITIC CAPITAL LETTER TSI
+2C1D; C; 2C4D; # GLAGOLITIC CAPITAL LETTER CHRIVI
+2C1E; C; 2C4E; # GLAGOLITIC CAPITAL LETTER SHA
+2C1F; C; 2C4F; # GLAGOLITIC CAPITAL LETTER YERU
+2C20; C; 2C50; # GLAGOLITIC CAPITAL LETTER YERI
+2C21; C; 2C51; # GLAGOLITIC CAPITAL LETTER YATI
+2C22; C; 2C52; # GLAGOLITIC CAPITAL LETTER SPIDERY HA
+2C23; C; 2C53; # GLAGOLITIC CAPITAL LETTER YU
+2C24; C; 2C54; # GLAGOLITIC CAPITAL LETTER SMALL YUS
+2C25; C; 2C55; # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+2C26; C; 2C56; # GLAGOLITIC CAPITAL LETTER YO
+2C27; C; 2C57; # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+2C28; C; 2C58; # GLAGOLITIC CAPITAL LETTER BIG YUS
+2C29; C; 2C59; # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+2C2A; C; 2C5A; # GLAGOLITIC CAPITAL LETTER FITA
+2C2B; C; 2C5B; # GLAGOLITIC CAPITAL LETTER IZHITSA
+2C2C; C; 2C5C; # GLAGOLITIC CAPITAL LETTER SHTAPIC
+2C2D; C; 2C5D; # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+2C2E; C; 2C5E; # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C60; C; 2C61; # LATIN CAPITAL LETTER L WITH DOUBLE BAR
+2C62; C; 026B; # LATIN CAPITAL LETTER L WITH MIDDLE TILDE
+2C63; C; 1D7D; # LATIN CAPITAL LETTER P WITH STROKE
+2C64; C; 027D; # LATIN CAPITAL LETTER R WITH TAIL
+2C67; C; 2C68; # LATIN CAPITAL LETTER H WITH DESCENDER
+2C69; C; 2C6A; # LATIN CAPITAL LETTER K WITH DESCENDER
+2C6B; C; 2C6C; # LATIN CAPITAL LETTER Z WITH DESCENDER
+2C75; C; 2C76; # LATIN CAPITAL LETTER HALF H
+2C80; C; 2C81; # COPTIC CAPITAL LETTER ALFA
+2C82; C; 2C83; # COPTIC CAPITAL LETTER VIDA
+2C84; C; 2C85; # COPTIC CAPITAL LETTER GAMMA
+2C86; C; 2C87; # COPTIC CAPITAL LETTER DALDA
+2C88; C; 2C89; # COPTIC CAPITAL LETTER EIE
+2C8A; C; 2C8B; # COPTIC CAPITAL LETTER SOU
+2C8C; C; 2C8D; # COPTIC CAPITAL LETTER ZATA
+2C8E; C; 2C8F; # COPTIC CAPITAL LETTER HATE
+2C90; C; 2C91; # COPTIC CAPITAL LETTER THETHE
+2C92; C; 2C93; # COPTIC CAPITAL LETTER IAUDA
+2C94; C; 2C95; # COPTIC CAPITAL LETTER KAPA
+2C96; C; 2C97; # COPTIC CAPITAL LETTER LAULA
+2C98; C; 2C99; # COPTIC CAPITAL LETTER MI
+2C9A; C; 2C9B; # COPTIC CAPITAL LETTER NI
+2C9C; C; 2C9D; # COPTIC CAPITAL LETTER KSI
+2C9E; C; 2C9F; # COPTIC CAPITAL LETTER O
+2CA0; C; 2CA1; # COPTIC CAPITAL LETTER PI
+2CA2; C; 2CA3; # COPTIC CAPITAL LETTER RO
+2CA4; C; 2CA5; # COPTIC CAPITAL LETTER SIMA
+2CA6; C; 2CA7; # COPTIC CAPITAL LETTER TAU
+2CA8; C; 2CA9; # COPTIC CAPITAL LETTER UA
+2CAA; C; 2CAB; # COPTIC CAPITAL LETTER FI
+2CAC; C; 2CAD; # COPTIC CAPITAL LETTER KHI
+2CAE; C; 2CAF; # COPTIC CAPITAL LETTER PSI
+2CB0; C; 2CB1; # COPTIC CAPITAL LETTER OOU
+2CB2; C; 2CB3; # COPTIC CAPITAL LETTER DIALECT-P ALEF
+2CB4; C; 2CB5; # COPTIC CAPITAL LETTER OLD COPTIC AIN
+2CB6; C; 2CB7; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+2CB8; C; 2CB9; # COPTIC CAPITAL LETTER DIALECT-P KAPA
+2CBA; C; 2CBB; # COPTIC CAPITAL LETTER DIALECT-P NI
+2CBC; C; 2CBD; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+2CBE; C; 2CBF; # COPTIC CAPITAL LETTER OLD COPTIC OOU
+2CC0; C; 2CC1; # COPTIC CAPITAL LETTER SAMPI
+2CC2; C; 2CC3; # COPTIC CAPITAL LETTER CROSSED SHEI
+2CC4; C; 2CC5; # COPTIC CAPITAL LETTER OLD COPTIC SHEI
+2CC6; C; 2CC7; # COPTIC CAPITAL LETTER OLD COPTIC ESH
+2CC8; C; 2CC9; # COPTIC CAPITAL LETTER AKHMIMIC KHEI
+2CCA; C; 2CCB; # COPTIC CAPITAL LETTER DIALECT-P HORI
+2CCC; C; 2CCD; # COPTIC CAPITAL LETTER OLD COPTIC HORI
+2CCE; C; 2CCF; # COPTIC CAPITAL LETTER OLD COPTIC HA
+2CD0; C; 2CD1; # COPTIC CAPITAL LETTER L-SHAPED HA
+2CD2; C; 2CD3; # COPTIC CAPITAL LETTER OLD COPTIC HEI
+2CD4; C; 2CD5; # COPTIC CAPITAL LETTER OLD COPTIC HAT
+2CD6; C; 2CD7; # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+2CD8; C; 2CD9; # COPTIC CAPITAL LETTER OLD COPTIC DJA
+2CDA; C; 2CDB; # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+2CDC; C; 2CDD; # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+2CDE; C; 2CDF; # COPTIC CAPITAL LETTER OLD NUBIAN NGI
+2CE0; C; 2CE1; # COPTIC CAPITAL LETTER OLD NUBIAN NYI
+2CE2; C; 2CE3; # COPTIC CAPITAL LETTER OLD NUBIAN WAU
+FB00; F; 0066 0066; # LATIN SMALL LIGATURE FF
+FB01; F; 0066 0069; # LATIN SMALL LIGATURE FI
+FB02; F; 0066 006C; # LATIN SMALL LIGATURE FL
+FB03; F; 0066 0066 0069; # LATIN SMALL LIGATURE FFI
+FB04; F; 0066 0066 006C; # LATIN SMALL LIGATURE FFL
+FB05; F; 0073 0074; # LATIN SMALL LIGATURE LONG S T
+FB06; F; 0073 0074; # LATIN SMALL LIGATURE ST
+FB13; F; 0574 0576; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; F; 0574 0565; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; F; 0574 056B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; F; 057E 0576; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; F; 0574 056D; # ARMENIAN SMALL LIGATURE MEN XEH
+FF21; C; FF41; # FULLWIDTH LATIN CAPITAL LETTER A
+FF22; C; FF42; # FULLWIDTH LATIN CAPITAL LETTER B
+FF23; C; FF43; # FULLWIDTH LATIN CAPITAL LETTER C
+FF24; C; FF44; # FULLWIDTH LATIN CAPITAL LETTER D
+FF25; C; FF45; # FULLWIDTH LATIN CAPITAL LETTER E
+FF26; C; FF46; # FULLWIDTH LATIN CAPITAL LETTER F
+FF27; C; FF47; # FULLWIDTH LATIN CAPITAL LETTER G
+FF28; C; FF48; # FULLWIDTH LATIN CAPITAL LETTER H
+FF29; C; FF49; # FULLWIDTH LATIN CAPITAL LETTER I
+FF2A; C; FF4A; # FULLWIDTH LATIN CAPITAL LETTER J
+FF2B; C; FF4B; # FULLWIDTH LATIN CAPITAL LETTER K
+FF2C; C; FF4C; # FULLWIDTH LATIN CAPITAL LETTER L
+FF2D; C; FF4D; # FULLWIDTH LATIN CAPITAL LETTER M
+FF2E; C; FF4E; # FULLWIDTH LATIN CAPITAL LETTER N
+FF2F; C; FF4F; # FULLWIDTH LATIN CAPITAL LETTER O
+FF30; C; FF50; # FULLWIDTH LATIN CAPITAL LETTER P
+FF31; C; FF51; # FULLWIDTH LATIN CAPITAL LETTER Q
+FF32; C; FF52; # FULLWIDTH LATIN CAPITAL LETTER R
+FF33; C; FF53; # FULLWIDTH LATIN CAPITAL LETTER S
+FF34; C; FF54; # FULLWIDTH LATIN CAPITAL LETTER T
+FF35; C; FF55; # FULLWIDTH LATIN CAPITAL LETTER U
+FF36; C; FF56; # FULLWIDTH LATIN CAPITAL LETTER V
+FF37; C; FF57; # FULLWIDTH LATIN CAPITAL LETTER W
+FF38; C; FF58; # FULLWIDTH LATIN CAPITAL LETTER X
+FF39; C; FF59; # FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
+10400; C; 10428; # DESERET CAPITAL LETTER LONG I
+10401; C; 10429; # DESERET CAPITAL LETTER LONG E
+10402; C; 1042A; # DESERET CAPITAL LETTER LONG A
+10403; C; 1042B; # DESERET CAPITAL LETTER LONG AH
+10404; C; 1042C; # DESERET CAPITAL LETTER LONG O
+10405; C; 1042D; # DESERET CAPITAL LETTER LONG OO
+10406; C; 1042E; # DESERET CAPITAL LETTER SHORT I
+10407; C; 1042F; # DESERET CAPITAL LETTER SHORT E
+10408; C; 10430; # DESERET CAPITAL LETTER SHORT A
+10409; C; 10431; # DESERET CAPITAL LETTER SHORT AH
+1040A; C; 10432; # DESERET CAPITAL LETTER SHORT O
+1040B; C; 10433; # DESERET CAPITAL LETTER SHORT OO
+1040C; C; 10434; # DESERET CAPITAL LETTER AY
+1040D; C; 10435; # DESERET CAPITAL LETTER OW
+1040E; C; 10436; # DESERET CAPITAL LETTER WU
+1040F; C; 10437; # DESERET CAPITAL LETTER YEE
+10410; C; 10438; # DESERET CAPITAL LETTER H
+10411; C; 10439; # DESERET CAPITAL LETTER PEE
+10412; C; 1043A; # DESERET CAPITAL LETTER BEE
+10413; C; 1043B; # DESERET CAPITAL LETTER TEE
+10414; C; 1043C; # DESERET CAPITAL LETTER DEE
+10415; C; 1043D; # DESERET CAPITAL LETTER CHEE
+10416; C; 1043E; # DESERET CAPITAL LETTER JEE
+10417; C; 1043F; # DESERET CAPITAL LETTER KAY
+10418; C; 10440; # DESERET CAPITAL LETTER GAY
+10419; C; 10441; # DESERET CAPITAL LETTER EF
+1041A; C; 10442; # DESERET CAPITAL LETTER VEE
+1041B; C; 10443; # DESERET CAPITAL LETTER ETH
+1041C; C; 10444; # DESERET CAPITAL LETTER THEE
+1041D; C; 10445; # DESERET CAPITAL LETTER ES
+1041E; C; 10446; # DESERET CAPITAL LETTER ZEE
+1041F; C; 10447; # DESERET CAPITAL LETTER ESH
+10420; C; 10448; # DESERET CAPITAL LETTER ZHEE
+10421; C; 10449; # DESERET CAPITAL LETTER ER
+10422; C; 1044A; # DESERET CAPITAL LETTER EL
+10423; C; 1044B; # DESERET CAPITAL LETTER EM
+10424; C; 1044C; # DESERET CAPITAL LETTER EN
+10425; C; 1044D; # DESERET CAPITAL LETTER ENG
+10426; C; 1044E; # DESERET CAPITAL LETTER OI
+10427; C; 1044F; # DESERET CAPITAL LETTER EW
diff --git a/util/unicode/data/CompositionExclusions.txt b/util/unicode/data/CompositionExclusions.txt
new file mode 100644
index 0000000000..8a9b7be8dd
--- /dev/null
+++ b/util/unicode/data/CompositionExclusions.txt
@@ -0,0 +1,197 @@
+# CompositionExclusions-5.0.0.txt
+# Date: 2006-05-23, 12:42:00 PST [KW]
+#
+# This file lists the characters for the Composition Exclusion Table
+# defined in UAX #15, Unicode Normalization Forms.
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+#
+# For a full derivation of composition exclusions, see the derived property
+# Full_Composition_Exclusion in DerivedNormalizationProps.txt
+#
+
+# ================================================
+# (1) Script Specifics
+#
+# This list of characters cannot be derived from the UnicodeData.txt file.
+# ================================================
+
+0958 # DEVANAGARI LETTER QA
+0959 # DEVANAGARI LETTER KHHA
+095A # DEVANAGARI LETTER GHHA
+095B # DEVANAGARI LETTER ZA
+095C # DEVANAGARI LETTER DDDHA
+095D # DEVANAGARI LETTER RHA
+095E # DEVANAGARI LETTER FA
+095F # DEVANAGARI LETTER YYA
+09DC # BENGALI LETTER RRA
+09DD # BENGALI LETTER RHA
+09DF # BENGALI LETTER YYA
+0A33 # GURMUKHI LETTER LLA
+0A36 # GURMUKHI LETTER SHA
+0A59 # GURMUKHI LETTER KHHA
+0A5A # GURMUKHI LETTER GHHA
+0A5B # GURMUKHI LETTER ZA
+0A5E # GURMUKHI LETTER FA
+0B5C # ORIYA LETTER RRA
+0B5D # ORIYA LETTER RHA
+0F43 # TIBETAN LETTER GHA
+0F4D # TIBETAN LETTER DDHA
+0F52 # TIBETAN LETTER DHA
+0F57 # TIBETAN LETTER BHA
+0F5C # TIBETAN LETTER DZHA
+0F69 # TIBETAN LETTER KSSA
+0F76 # TIBETAN VOWEL SIGN VOCALIC R
+0F78 # TIBETAN VOWEL SIGN VOCALIC L
+0F93 # TIBETAN SUBJOINED LETTER GHA
+0F9D # TIBETAN SUBJOINED LETTER DDHA
+0FA2 # TIBETAN SUBJOINED LETTER DHA
+0FA7 # TIBETAN SUBJOINED LETTER BHA
+0FAC # TIBETAN SUBJOINED LETTER DZHA
+0FB9 # TIBETAN SUBJOINED LETTER KSSA
+FB1D # HEBREW LETTER YOD WITH HIRIQ
+FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B # HEBREW LETTER SHIN WITH SIN DOT
+FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E # HEBREW LETTER ALEF WITH PATAH
+FB2F # HEBREW LETTER ALEF WITH QAMATS
+FB30 # HEBREW LETTER ALEF WITH MAPIQ
+FB31 # HEBREW LETTER BET WITH DAGESH
+FB32 # HEBREW LETTER GIMEL WITH DAGESH
+FB33 # HEBREW LETTER DALET WITH DAGESH
+FB34 # HEBREW LETTER HE WITH MAPIQ
+FB35 # HEBREW LETTER VAV WITH DAGESH
+FB36 # HEBREW LETTER ZAYIN WITH DAGESH
+FB38 # HEBREW LETTER TET WITH DAGESH
+FB39 # HEBREW LETTER YOD WITH DAGESH
+FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B # HEBREW LETTER KAF WITH DAGESH
+FB3C # HEBREW LETTER LAMED WITH DAGESH
+FB3E # HEBREW LETTER MEM WITH DAGESH
+FB40 # HEBREW LETTER NUN WITH DAGESH
+FB41 # HEBREW LETTER SAMEKH WITH DAGESH
+FB43 # HEBREW LETTER FINAL PE WITH DAGESH
+FB44 # HEBREW LETTER PE WITH DAGESH
+FB46 # HEBREW LETTER TSADI WITH DAGESH
+FB47 # HEBREW LETTER QOF WITH DAGESH
+FB48 # HEBREW LETTER RESH WITH DAGESH
+FB49 # HEBREW LETTER SHIN WITH DAGESH
+FB4A # HEBREW LETTER TAV WITH DAGESH
+FB4B # HEBREW LETTER VAV WITH HOLAM
+FB4C # HEBREW LETTER BET WITH RAFE
+FB4D # HEBREW LETTER KAF WITH RAFE
+FB4E # HEBREW LETTER PE WITH RAFE
+
+# Total code points: 67
+
+# ================================================
+# (2) Post Composition Version precomposed characters
+#
+# These characters cannot be derived solely from the UnicodeData.txt file
+# in this version of Unicode.
+#
+# Note that characters added to the standard after the
+# Composition Version and which have canonical decomposition mappings
+# are not automatically added to this list of Post Composition
+# Version precomposed characters.
+# ================================================
+
+2ADC # FORKING
+1D15E # MUSICAL SYMBOL HALF NOTE
+1D15F # MUSICAL SYMBOL QUARTER NOTE
+1D160 # MUSICAL SYMBOL EIGHTH NOTE
+1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB # MUSICAL SYMBOL MINIMA
+1D1BC # MUSICAL SYMBOL MINIMA BLACK
+1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF # MUSICAL SYMBOL FUSA WHITE
+1D1C0 # MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 14
+
+# ================================================
+# (3) Singleton Decompositions
+#
+# These characters can be derived from the UnicodeData.txt file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+#
+# These characters are simply quoted here for reference.
+# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt
+# ================================================
+
+# 0340..0341 [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+# 0343 COMBINING GREEK KORONIS
+# 0374 GREEK NUMERAL SIGN
+# 037E GREEK QUESTION MARK
+# 0387 GREEK ANO TELEIA
+# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE GREEK PROSGEGRAMMENI
+# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000..2001 [2] EN QUAD..EM QUAD
+# 2126 OHM SIGN
+# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A..FA2D [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+# FA30..FA6A [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+# FA70..FAD9 [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 924
+
+# ================================================
+# (4) Non-Starter Decompositions
+#
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition consists
+# of a sequence of characters, the first of which has a non-zero
+# combining class.
+#
+# These characters are simply quoted here for reference.
+# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt
+# ================================================
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
+
+# Total code points: 4
+
diff --git a/util/unicode/data/DerivedAge.txt b/util/unicode/data/DerivedAge.txt
new file mode 100644
index 0000000000..00f5a51a78
--- /dev/null
+++ b/util/unicode/data/DerivedAge.txt
@@ -0,0 +1,867 @@
+# DerivedAge-5.0.0.txt
+# Date: 2006-07-14, 17:25:00 PST [MD/KW]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Unicode Character Database: Derived Property Data
+# This file shows when various code points were first assigned in Unicode.
+#
+# Caution: When using the Age *property*, all assigned code points
+# in each version are included, not just the newly assigned code points.
+# For more information, see http://www.unicode.org/reports/tr18/
+#
+# Notes:
+#
+# - The term 'assigned' means that a previously reserved code point was assigned
+# to be a character (graphic, format, control, or private-use);
+# a noncharacter code point; or a surrogate code point.
+# For more information, see The Unicode Standard Section 2.4
+#
+# - Versions are only tracked from 1.1 onwards, since version 1.0
+# predated changes required by the ISO 10646 merger.
+#
+# - The Hangul Syllables that were removed from 2.0 are not included in the 1.1 listing.
+#
+# - The supplementary private use code points and the non-character code points
+# were assigned in version 2.0, but not specifically listed in the UCD
+# until versions 3.0 and 3.1 respectively.
+#
+# - Contiguous ranges are broken into separate lines where they would cross code point
+# types: graphic, format, control, private-use, surrogate, noncharacter
+#
+# For details on the contents of each version, see
+# http://www.unicode.org/versions/enumeratedversions.html.
+
+# ================================================
+
+# Property: Age
+
+# All code points not explicitly listed for Age
+# have the value unassigned.
+
+# @missing: 0000..10FFFF; unassigned
+
+# ================================================
+
+# Assigned as of Unicode 1.1.0 (June, 1993)
+# [excluding removed Hangul Syllables]
+
+0000..001F ; 1.1 # [32] <control-0000>..<control-001F>
+0020..007E ; 1.1 # [95] SPACE..TILDE
+007F..009F ; 1.1 # [33] <control-007F>..<control-009F>
+00A0..00AC ; 1.1 # [13] NO-BREAK SPACE..NOT SIGN
+00AD ; 1.1 # SOFT HYPHEN
+00AE..01F5 ; 1.1 # [328] REGISTERED SIGN..LATIN SMALL LETTER G WITH ACUTE
+01FA..0217 ; 1.1 # [30] LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE..LATIN SMALL LETTER U WITH INVERTED BREVE
+0250..02A8 ; 1.1 # [89] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TC DIGRAPH WITH CURL
+02B0..02DE ; 1.1 # [47] MODIFIER LETTER SMALL H..MODIFIER LETTER RHOTIC HOOK
+02E0..02E9 ; 1.1 # [10] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER EXTRA-LOW TONE BAR
+0300..0345 ; 1.1 # [70] COMBINING GRAVE ACCENT..COMBINING GREEK YPOGEGRAMMENI
+0360..0361 ; 1.1 # [2] COMBINING DOUBLE TILDE..COMBINING DOUBLE INVERTED BREVE
+0374..0375 ; 1.1 # [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN
+037A ; 1.1 # GREEK YPOGEGRAMMENI
+037E ; 1.1 # GREEK QUESTION MARK
+0384..038A ; 1.1 # [7] GREEK TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; 1.1 # GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..03A1 ; 1.1 # [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+03A3..03CE ; 1.1 # [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03D6 ; 1.1 # [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+03DA ; 1.1 # GREEK LETTER STIGMA
+03DC ; 1.1 # GREEK LETTER DIGAMMA
+03DE ; 1.1 # GREEK LETTER KOPPA
+03E0 ; 1.1 # GREEK LETTER SAMPI
+03E2..03F3 ; 1.1 # [18] COPTIC CAPITAL LETTER SHEI..GREEK LETTER YOT
+0401..040C ; 1.1 # [12] CYRILLIC CAPITAL LETTER IO..CYRILLIC CAPITAL LETTER KJE
+040E..044F ; 1.1 # [66] CYRILLIC CAPITAL LETTER SHORT U..CYRILLIC SMALL LETTER YA
+0451..045C ; 1.1 # [12] CYRILLIC SMALL LETTER IO..CYRILLIC SMALL LETTER KJE
+045E..0486 ; 1.1 # [41] CYRILLIC SMALL LETTER SHORT U..COMBINING CYRILLIC PSILI PNEUMATA
+0490..04C4 ; 1.1 # [53] CYRILLIC CAPITAL LETTER GHE WITH UPTURN..CYRILLIC SMALL LETTER KA WITH HOOK
+04C7..04C8 ; 1.1 # [2] CYRILLIC CAPITAL LETTER EN WITH HOOK..CYRILLIC SMALL LETTER EN WITH HOOK
+04CB..04CC ; 1.1 # [2] CYRILLIC CAPITAL LETTER KHAKASSIAN CHE..CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04D0..04EB ; 1.1 # [28] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EE..04F5 ; 1.1 # [8] CYRILLIC CAPITAL LETTER U WITH MACRON..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; 1.1 # [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0531..0556 ; 1.1 # [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+0559..055F ; 1.1 # [7] ARMENIAN MODIFIER LETTER LEFT HALF RING..ARMENIAN ABBREVIATION MARK
+0561..0587 ; 1.1 # [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+0589 ; 1.1 # ARMENIAN FULL STOP
+05B0..05B9 ; 1.1 # [10] HEBREW POINT SHEVA..HEBREW POINT HOLAM
+05BB..05C3 ; 1.1 # [9] HEBREW POINT QUBUTS..HEBREW PUNCTUATION SOF PASUQ
+05D0..05EA ; 1.1 # [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F4 ; 1.1 # [5] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW PUNCTUATION GERSHAYIM
+060C ; 1.1 # ARABIC COMMA
+061B ; 1.1 # ARABIC SEMICOLON
+061F ; 1.1 # ARABIC QUESTION MARK
+0621..063A ; 1.1 # [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
+0640..0652 ; 1.1 # [19] ARABIC TATWEEL..ARABIC SUKUN
+0660..066D ; 1.1 # [14] ARABIC-INDIC DIGIT ZERO..ARABIC FIVE POINTED STAR
+0670..06B7 ; 1.1 # [72] ARABIC LETTER SUPERSCRIPT ALEF..ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06BA..06BE ; 1.1 # [5] ARABIC LETTER NOON GHUNNA..ARABIC LETTER HEH DOACHASHMEE
+06C0..06CE ; 1.1 # [15] ARABIC LETTER HEH WITH YEH ABOVE..ARABIC LETTER YEH WITH SMALL V
+06D0..06DC ; 1.1 # [13] ARABIC LETTER E..ARABIC SMALL HIGH SEEN
+06DD ; 1.1 # ARABIC END OF AYAH
+06DE..06ED ; 1.1 # [16] ARABIC START OF RUB EL HIZB..ARABIC SMALL LOW MEEM
+06F0..06F9 ; 1.1 # [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+0901..0903 ; 1.1 # [3] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN VISARGA
+0905..0939 ; 1.1 # [53] DEVANAGARI LETTER A..DEVANAGARI LETTER HA
+093C..094D ; 1.1 # [18] DEVANAGARI SIGN NUKTA..DEVANAGARI SIGN VIRAMA
+0950..0954 ; 1.1 # [5] DEVANAGARI OM..DEVANAGARI ACUTE ACCENT
+0958..0970 ; 1.1 # [25] DEVANAGARI LETTER QA..DEVANAGARI ABBREVIATION SIGN
+0981..0983 ; 1.1 # [3] BENGALI SIGN CANDRABINDU..BENGALI SIGN VISARGA
+0985..098C ; 1.1 # [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; 1.1 # [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; 1.1 # [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; 1.1 # [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; 1.1 # BENGALI LETTER LA
+09B6..09B9 ; 1.1 # [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BC ; 1.1 # BENGALI SIGN NUKTA
+09BE..09C4 ; 1.1 # [7] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN VOCALIC RR
+09C7..09C8 ; 1.1 # [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CD ; 1.1 # [3] BENGALI VOWEL SIGN O..BENGALI SIGN VIRAMA
+09D7 ; 1.1 # BENGALI AU LENGTH MARK
+09DC..09DD ; 1.1 # [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E3 ; 1.1 # [5] BENGALI LETTER YYA..BENGALI VOWEL SIGN VOCALIC LL
+09E6..09FA ; 1.1 # [21] BENGALI DIGIT ZERO..BENGALI ISSHAR
+0A02 ; 1.1 # GURMUKHI SIGN BINDI
+0A05..0A0A ; 1.1 # [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; 1.1 # [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; 1.1 # [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; 1.1 # [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; 1.1 # [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; 1.1 # [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; 1.1 # [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A3C ; 1.1 # GURMUKHI SIGN NUKTA
+0A3E..0A42 ; 1.1 # [5] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; 1.1 # [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; 1.1 # [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A59..0A5C ; 1.1 # [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; 1.1 # GURMUKHI LETTER FA
+0A66..0A74 ; 1.1 # [15] GURMUKHI DIGIT ZERO..GURMUKHI EK ONKAR
+0A81..0A83 ; 1.1 # [3] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN VISARGA
+0A85..0A8B ; 1.1 # [7] GUJARATI LETTER A..GUJARATI LETTER VOCALIC R
+0A8D ; 1.1 # GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; 1.1 # [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; 1.1 # [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; 1.1 # [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; 1.1 # [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; 1.1 # [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABC..0AC5 ; 1.1 # [10] GUJARATI SIGN NUKTA..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC9 ; 1.1 # [3] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACD ; 1.1 # [3] GUJARATI VOWEL SIGN O..GUJARATI SIGN VIRAMA
+0AD0 ; 1.1 # GUJARATI OM
+0AE0 ; 1.1 # GUJARATI LETTER VOCALIC RR
+0AE6..0AEF ; 1.1 # [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0B01..0B03 ; 1.1 # [3] ORIYA SIGN CANDRABINDU..ORIYA SIGN VISARGA
+0B05..0B0C ; 1.1 # [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; 1.1 # [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; 1.1 # [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; 1.1 # [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; 1.1 # [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B36..0B39 ; 1.1 # [4] ORIYA LETTER SHA..ORIYA LETTER HA
+0B3C..0B43 ; 1.1 # [8] ORIYA SIGN NUKTA..ORIYA VOWEL SIGN VOCALIC R
+0B47..0B48 ; 1.1 # [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4D ; 1.1 # [3] ORIYA VOWEL SIGN O..ORIYA SIGN VIRAMA
+0B56..0B57 ; 1.1 # [2] ORIYA AI LENGTH MARK..ORIYA AU LENGTH MARK
+0B5C..0B5D ; 1.1 # [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; 1.1 # [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B66..0B70 ; 1.1 # [11] ORIYA DIGIT ZERO..ORIYA ISSHAR
+0B82..0B83 ; 1.1 # [2] TAMIL SIGN ANUSVARA..TAMIL SIGN VISARGA
+0B85..0B8A ; 1.1 # [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; 1.1 # [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; 1.1 # [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; 1.1 # [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; 1.1 # TAMIL LETTER JA
+0B9E..0B9F ; 1.1 # [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; 1.1 # [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; 1.1 # [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB5 ; 1.1 # [8] TAMIL LETTER MA..TAMIL LETTER VA
+0BB7..0BB9 ; 1.1 # [3] TAMIL LETTER SSA..TAMIL LETTER HA
+0BBE..0BC2 ; 1.1 # [5] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; 1.1 # [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCD ; 1.1 # [4] TAMIL VOWEL SIGN O..TAMIL SIGN VIRAMA
+0BD7 ; 1.1 # TAMIL AU LENGTH MARK
+0BE7..0BF2 ; 1.1 # [12] TAMIL DIGIT ONE..TAMIL NUMBER ONE THOUSAND
+0C01..0C03 ; 1.1 # [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C05..0C0C ; 1.1 # [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; 1.1 # [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; 1.1 # [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33 ; 1.1 # [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39 ; 1.1 # [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C3E..0C44 ; 1.1 # [7] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN VOCALIC RR
+0C46..0C48 ; 1.1 # [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; 1.1 # [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; 1.1 # [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C60..0C61 ; 1.1 # [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C66..0C6F ; 1.1 # [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0C82..0C83 ; 1.1 # [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C85..0C8C ; 1.1 # [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; 1.1 # [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; 1.1 # [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; 1.1 # [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; 1.1 # [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBE..0CC4 ; 1.1 # [7] KANNADA VOWEL SIGN AA..KANNADA VOWEL SIGN VOCALIC RR
+0CC6..0CC8 ; 1.1 # [3] KANNADA VOWEL SIGN E..KANNADA VOWEL SIGN AI
+0CCA..0CCD ; 1.1 # [4] KANNADA VOWEL SIGN O..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; 1.1 # [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CDE ; 1.1 # KANNADA LETTER FA
+0CE0..0CE1 ; 1.1 # [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0CE6..0CEF ; 1.1 # [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0D02..0D03 ; 1.1 # [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D05..0D0C ; 1.1 # [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; 1.1 # [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28 ; 1.1 # [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39 ; 1.1 # [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D3E..0D43 ; 1.1 # [6] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN VOCALIC R
+0D46..0D48 ; 1.1 # [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4D ; 1.1 # [4] MALAYALAM VOWEL SIGN O..MALAYALAM SIGN VIRAMA
+0D57 ; 1.1 # MALAYALAM AU LENGTH MARK
+0D60..0D61 ; 1.1 # [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D66..0D6F ; 1.1 # [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0E01..0E3A ; 1.1 # [58] THAI CHARACTER KO KAI..THAI CHARACTER PHINTHU
+0E3F..0E5B ; 1.1 # [29] THAI CURRENCY SYMBOL BAHT..THAI CHARACTER KHOMUT
+0E81..0E82 ; 1.1 # [2] LAO LETTER KO..LAO LETTER KHO SUNG
+0E84 ; 1.1 # LAO LETTER KHO TAM
+0E87..0E88 ; 1.1 # [2] LAO LETTER NGO..LAO LETTER CO
+0E8A ; 1.1 # LAO LETTER SO TAM
+0E8D ; 1.1 # LAO LETTER NYO
+0E94..0E97 ; 1.1 # [4] LAO LETTER DO..LAO LETTER THO TAM
+0E99..0E9F ; 1.1 # [7] LAO LETTER NO..LAO LETTER FO SUNG
+0EA1..0EA3 ; 1.1 # [3] LAO LETTER MO..LAO LETTER LO LING
+0EA5 ; 1.1 # LAO LETTER LO LOOT
+0EA7 ; 1.1 # LAO LETTER WO
+0EAA..0EAB ; 1.1 # [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
+0EAD..0EB9 ; 1.1 # [13] LAO LETTER O..LAO VOWEL SIGN UU
+0EBB..0EBD ; 1.1 # [3] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN NYO
+0EC0..0EC4 ; 1.1 # [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+0EC6 ; 1.1 # LAO KO LA
+0EC8..0ECD ; 1.1 # [6] LAO TONE MAI EK..LAO NIGGAHITA
+0ED0..0ED9 ; 1.1 # [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0EDC..0EDD ; 1.1 # [2] LAO HO NO..LAO HO MO
+10A0..10C5 ; 1.1 # [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+10D0..10F6 ; 1.1 # [39] GEORGIAN LETTER AN..GEORGIAN LETTER FI
+10FB ; 1.1 # GEORGIAN PARAGRAPH SEPARATOR
+1100..1159 ; 1.1 # [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2 ; 1.1 # [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9 ; 1.1 # [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+1E00..1E9A ; 1.1 # [155] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER A WITH RIGHT HALF RING
+1EA0..1EF9 ; 1.1 # [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; 1.1 # [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; 1.1 # [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; 1.1 # [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; 1.1 # [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; 1.1 # [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; 1.1 # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; 1.1 # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; 1.1 # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; 1.1 # [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; 1.1 # [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FC4 ; 1.1 # [15] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FD3 ; 1.1 # [14] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; 1.1 # [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FEF ; 1.1 # [19] GREEK DASIA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; 1.1 # [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFE ; 1.1 # [9] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK DASIA
+2000..200A ; 1.1 # [11] EN QUAD..HAIR SPACE
+200B..200F ; 1.1 # [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+2010..2027 ; 1.1 # [24] HYPHEN..HYPHENATION POINT
+2028..202E ; 1.1 # [7] LINE SEPARATOR..RIGHT-TO-LEFT OVERRIDE
+2030..2046 ; 1.1 # [23] PER MILLE SIGN..RIGHT SQUARE BRACKET WITH QUILL
+206A..206F ; 1.1 # [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+2070 ; 1.1 # SUPERSCRIPT ZERO
+2074..208E ; 1.1 # [27] SUPERSCRIPT FOUR..SUBSCRIPT RIGHT PARENTHESIS
+20A0..20AA ; 1.1 # [11] EURO-CURRENCY SIGN..NEW SHEQEL SIGN
+20D0..20E1 ; 1.1 # [18] COMBINING LEFT HARPOON ABOVE..COMBINING LEFT RIGHT ARROW ABOVE
+2100..2138 ; 1.1 # [57] ACCOUNT OF..DALET SYMBOL
+2153..2182 ; 1.1 # [48] VULGAR FRACTION ONE THIRD..ROMAN NUMERAL TEN THOUSAND
+2190..21EA ; 1.1 # [91] LEFTWARDS ARROW..UPWARDS WHITE ARROW FROM BAR
+2200..22F1 ; 1.1 # [242] FOR ALL..DOWN RIGHT DIAGONAL ELLIPSIS
+2300 ; 1.1 # DIAMETER SIGN
+2302..237A ; 1.1 # [121] HOUSE..APL FUNCTIONAL SYMBOL ALPHA
+2400..2424 ; 1.1 # [37] SYMBOL FOR NULL..SYMBOL FOR NEWLINE
+2440..244A ; 1.1 # [11] OCR HOOK..OCR DOUBLE BACKSLASH
+2460..24EA ; 1.1 # [139] CIRCLED DIGIT ONE..CIRCLED DIGIT ZERO
+2500..2595 ; 1.1 # [150] BOX DRAWINGS LIGHT HORIZONTAL..RIGHT ONE EIGHTH BLOCK
+25A0..25EF ; 1.1 # [80] BLACK SQUARE..LARGE CIRCLE
+2600..2613 ; 1.1 # [20] BLACK SUN WITH RAYS..SALTIRE
+261A..266F ; 1.1 # [86] BLACK LEFT POINTING INDEX..MUSIC SHARP SIGN
+2701..2704 ; 1.1 # [4] UPPER BLADE SCISSORS..WHITE SCISSORS
+2706..2709 ; 1.1 # [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270C..2727 ; 1.1 # [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2729..274B ; 1.1 # [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D ; 1.1 # SHADOWED WHITE CIRCLE
+274F..2752 ; 1.1 # [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2756 ; 1.1 # BLACK DIAMOND MINUS WHITE X
+2758..275E ; 1.1 # [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761..2767 ; 1.1 # [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
+2776..2794 ; 1.1 # [31] DINGBAT NEGATIVE CIRCLED DIGIT ONE..HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798..27AF ; 1.1 # [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1..27BE ; 1.1 # [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
+3000..3037 ; 1.1 # [56] IDEOGRAPHIC SPACE..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+303F ; 1.1 # IDEOGRAPHIC HALF FILL SPACE
+3041..3094 ; 1.1 # [84] HIRAGANA LETTER SMALL A..HIRAGANA LETTER VU
+3099..309E ; 1.1 # [6] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..HIRAGANA VOICED ITERATION MARK
+30A1..30FE ; 1.1 # [94] KATAKANA LETTER SMALL A..KATAKANA VOICED ITERATION MARK
+3105..312C ; 1.1 # [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN
+3131..318E ; 1.1 # [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3190..319F ; 1.1 # [16] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+3200..321C ; 1.1 # [29] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED HANGUL CIEUC U
+3220..3243 ; 1.1 # [36] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH REACH
+3260..327B ; 1.1 # [28] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL HIEUH A
+327F..32B0 ; 1.1 # [50] KOREAN STANDARD SYMBOL..CIRCLED IDEOGRAPH NIGHT
+32C0..32CB ; 1.1 # [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32D0..32FE ; 1.1 # [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO
+3300..3376 ; 1.1 # [119] SQUARE APAATO..SQUARE PC
+337B..33DD ; 1.1 # [99] SQUARE ERA NAME HEISEI..SQUARE WB
+33E0..33FE ; 1.1 # [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+4E00..9FA5 ; 1.1 # [20902] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5
+E000..F8FF ; 1.1 # [6400] <private-use-E000>..<private-use-F8FF>
+F900..FA2D ; 1.1 # [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FB00..FB06 ; 1.1 # [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; 1.1 # [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1E..FB36 ; 1.1 # [25] HEBREW POINT JUDEO-SPANISH VARIKA..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; 1.1 # [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; 1.1 # HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; 1.1 # [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; 1.1 # [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; 1.1 # [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3F ; 1.1 # [365] ARABIC LETTER NG ISOLATED FORM..ORNATE RIGHT PARENTHESIS
+FD50..FD8F ; 1.1 # [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; 1.1 # [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; 1.1 # [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FE20..FE23 ; 1.1 # [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
+FE30..FE44 ; 1.1 # [21] PRESENTATION FORM FOR VERTICAL TWO DOT LEADER..PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE49..FE52 ; 1.1 # [10] DASHED OVERLINE..SMALL FULL STOP
+FE54..FE66 ; 1.1 # [19] SMALL SEMICOLON..SMALL EQUALS SIGN
+FE68..FE6B ; 1.1 # [4] SMALL REVERSE SOLIDUS..SMALL COMMERCIAL AT
+FE70..FE72 ; 1.1 # [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; 1.1 # ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; 1.1 # [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFF ; 1.1 # ZERO WIDTH NO-BREAK SPACE
+FF01..FF5E ; 1.1 # [94] FULLWIDTH EXCLAMATION MARK..FULLWIDTH TILDE
+FF61..FFBE ; 1.1 # [94] HALFWIDTH IDEOGRAPHIC FULL STOP..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; 1.1 # [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; 1.1 # [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; 1.1 # [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; 1.1 # [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE6 ; 1.1 # [7] FULLWIDTH CENT SIGN..FULLWIDTH WON SIGN
+FFE8..FFEE ; 1.1 # [7] HALFWIDTH FORMS LIGHT VERTICAL..HALFWIDTH WHITE CIRCLE
+FFFD ; 1.1 # REPLACEMENT CHARACTER
+FFFE..FFFF ; 1.1 # [2] <noncharacter-FFFE>..<noncharacter-FFFF>
+
+# Total code points: 33979
+
+# ================================================
+
+# Newly assigned in Unicode 2.0.0 (July, 1996)
+
+0591..05A1 ; 2.0 # [17] HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER
+05A3..05AF ; 2.0 # [13] HEBREW ACCENT MUNAH..HEBREW MARK MASORA CIRCLE
+05C4 ; 2.0 # HEBREW MARK UPPER DOT
+0F00..0F47 ; 2.0 # [72] TIBETAN SYLLABLE OM..TIBETAN LETTER JA
+0F49..0F69 ; 2.0 # [33] TIBETAN LETTER NYA..TIBETAN LETTER KSSA
+0F71..0F8B ; 2.0 # [27] TIBETAN VOWEL SIGN AA..TIBETAN SIGN GRU MED RGYINGS
+0F90..0F95 ; 2.0 # [6] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER CA
+0F97 ; 2.0 # TIBETAN SUBJOINED LETTER JA
+0F99..0FAD ; 2.0 # [21] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER WA
+0FB1..0FB7 ; 2.0 # [7] TIBETAN SUBJOINED LETTER YA..TIBETAN SUBJOINED LETTER HA
+0FB9 ; 2.0 # TIBETAN SUBJOINED LETTER KSSA
+1E9B ; 2.0 # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+20AB ; 2.0 # DONG SIGN
+AC00..D7A3 ; 2.0 # [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+D800..DFFF ; 2.0 # [2048] <surrogate-D800>..<surrogate-DFFF>
+1FFFE..1FFFF ; 2.0 # [2] <noncharacter-1FFFE>..<noncharacter-1FFFF>
+2FFFE..2FFFF ; 2.0 # [2] <noncharacter-2FFFE>..<noncharacter-2FFFF>
+3FFFE..3FFFF ; 2.0 # [2] <noncharacter-3FFFE>..<noncharacter-3FFFF>
+4FFFE..4FFFF ; 2.0 # [2] <noncharacter-4FFFE>..<noncharacter-4FFFF>
+5FFFE..5FFFF ; 2.0 # [2] <noncharacter-5FFFE>..<noncharacter-5FFFF>
+6FFFE..6FFFF ; 2.0 # [2] <noncharacter-6FFFE>..<noncharacter-6FFFF>
+7FFFE..7FFFF ; 2.0 # [2] <noncharacter-7FFFE>..<noncharacter-7FFFF>
+8FFFE..8FFFF ; 2.0 # [2] <noncharacter-8FFFE>..<noncharacter-8FFFF>
+9FFFE..9FFFF ; 2.0 # [2] <noncharacter-9FFFE>..<noncharacter-9FFFF>
+AFFFE..AFFFF ; 2.0 # [2] <noncharacter-AFFFE>..<noncharacter-AFFFF>
+BFFFE..BFFFF ; 2.0 # [2] <noncharacter-BFFFE>..<noncharacter-BFFFF>
+CFFFE..CFFFF ; 2.0 # [2] <noncharacter-CFFFE>..<noncharacter-CFFFF>
+DFFFE..DFFFF ; 2.0 # [2] <noncharacter-DFFFE>..<noncharacter-DFFFF>
+EFFFE..EFFFF ; 2.0 # [2] <noncharacter-EFFFE>..<noncharacter-EFFFF>
+F0000..FFFFD ; 2.0 # [65534] <private-use-F0000>..<private-use-FFFFD>
+FFFFE..FFFFF ; 2.0 # [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
+100000..10FFFD; 2.0 # [65534] <private-use-100000>..<private-use-10FFFD>
+10FFFE..10FFFF; 2.0 # [2] <noncharacter-10FFFE>..<noncharacter-10FFFF>
+
+# Total code points: 144521
+
+# ================================================
+
+# Newly assigned in Unicode 2.1.2 (May, 1998)
+
+20AC ; 2.1 # EURO SIGN
+FFFC ; 2.1 # OBJECT REPLACEMENT CHARACTER
+
+# Total code points: 2
+
+# ================================================
+
+# Newly assigned in Unicode 3.0.0 (September, 1999)
+
+01F6..01F9 ; 3.0 # [4] LATIN CAPITAL LETTER HWAIR..LATIN SMALL LETTER N WITH GRAVE
+0218..021F ; 3.0 # [8] LATIN CAPITAL LETTER S WITH COMMA BELOW..LATIN SMALL LETTER H WITH CARON
+0222..0233 ; 3.0 # [18] LATIN CAPITAL LETTER OU..LATIN SMALL LETTER Y WITH MACRON
+02A9..02AD ; 3.0 # [5] LATIN SMALL LETTER FENG DIGRAPH..LATIN LETTER BIDENTAL PERCUSSIVE
+02DF ; 3.0 # MODIFIER LETTER CROSS ACCENT
+02EA..02EE ; 3.0 # [5] MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER DOUBLE APOSTROPHE
+0346..034E ; 3.0 # [9] COMBINING BRIDGE ABOVE..COMBINING UPWARDS ARROW BELOW
+0362 ; 3.0 # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+03D7 ; 3.0 # GREEK KAI SYMBOL
+03DB ; 3.0 # GREEK SMALL LETTER STIGMA
+03DD ; 3.0 # GREEK SMALL LETTER DIGAMMA
+03DF ; 3.0 # GREEK SMALL LETTER KOPPA
+03E1 ; 3.0 # GREEK SMALL LETTER SAMPI
+0400 ; 3.0 # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+040D ; 3.0 # CYRILLIC CAPITAL LETTER I WITH GRAVE
+0450 ; 3.0 # CYRILLIC SMALL LETTER IE WITH GRAVE
+045D ; 3.0 # CYRILLIC SMALL LETTER I WITH GRAVE
+0488..0489 ; 3.0 # [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+048C..048F ; 3.0 # [4] CYRILLIC CAPITAL LETTER SEMISOFT SIGN..CYRILLIC SMALL LETTER ER WITH TICK
+04EC..04ED ; 3.0 # [2] CYRILLIC CAPITAL LETTER E WITH DIAERESIS..CYRILLIC SMALL LETTER E WITH DIAERESIS
+058A ; 3.0 # ARMENIAN HYPHEN
+0653..0655 ; 3.0 # [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+06B8..06B9 ; 3.0 # [2] ARABIC LETTER LAM WITH THREE DOTS BELOW..ARABIC LETTER NOON WITH DOT BELOW
+06BF ; 3.0 # ARABIC LETTER TCHEH WITH DOT ABOVE
+06CF ; 3.0 # ARABIC LETTER WAW WITH DOT ABOVE
+06FA..06FE ; 3.0 # [5] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC SIGN SINDHI POSTPOSITION MEN
+0700..070D ; 3.0 # [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
+070F ; 3.0 # SYRIAC ABBREVIATION MARK
+0710..072C ; 3.0 # [29] SYRIAC LETTER ALAPH..SYRIAC LETTER TAW
+0730..074A ; 3.0 # [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+0780..07B0 ; 3.0 # [49] THAANA LETTER HAA..THAANA SUKUN
+0D82..0D83 ; 3.0 # [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0D85..0D96 ; 3.0 # [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; 3.0 # [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; 3.0 # [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; 3.0 # SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; 3.0 # [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0DCA ; 3.0 # SINHALA SIGN AL-LAKUNA
+0DCF..0DD4 ; 3.0 # [6] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; 3.0 # SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8..0DDF ; 3.0 # [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+0DF2..0DF4 ; 3.0 # [3] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA PUNCTUATION KUNDDALIYA
+0F6A ; 3.0 # TIBETAN LETTER FIXED-FORM RA
+0F96 ; 3.0 # TIBETAN SUBJOINED LETTER CHA
+0FAE..0FB0 ; 3.0 # [3] TIBETAN SUBJOINED LETTER ZHA..TIBETAN SUBJOINED LETTER -A
+0FB8 ; 3.0 # TIBETAN SUBJOINED LETTER A
+0FBA..0FBC ; 3.0 # [3] TIBETAN SUBJOINED LETTER FIXED-FORM WA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE..0FCC ; 3.0 # [15] TIBETAN KU RU KHA..TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCF ; 3.0 # TIBETAN SIGN RDEL NAG GSUM
+1000..1021 ; 3.0 # [34] MYANMAR LETTER KA..MYANMAR LETTER A
+1023..1027 ; 3.0 # [5] MYANMAR LETTER I..MYANMAR LETTER E
+1029..102A ; 3.0 # [2] MYANMAR LETTER O..MYANMAR LETTER AU
+102C..1032 ; 3.0 # [7] MYANMAR VOWEL SIGN AA..MYANMAR VOWEL SIGN AI
+1036..1039 ; 3.0 # [4] MYANMAR SIGN ANUSVARA..MYANMAR SIGN VIRAMA
+1040..1059 ; 3.0 # [26] MYANMAR DIGIT ZERO..MYANMAR VOWEL SIGN VOCALIC LL
+1200..1206 ; 3.0 # [7] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO
+1208..1246 ; 3.0 # [63] ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO
+1248 ; 3.0 # ETHIOPIC SYLLABLE QWA
+124A..124D ; 3.0 # [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; 3.0 # [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; 3.0 # ETHIOPIC SYLLABLE QHWA
+125A..125D ; 3.0 # [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1286 ; 3.0 # [39] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO
+1288 ; 3.0 # ETHIOPIC SYLLABLE XWA
+128A..128D ; 3.0 # [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12AE ; 3.0 # [31] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO
+12B0 ; 3.0 # ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; 3.0 # [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; 3.0 # [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; 3.0 # ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; 3.0 # [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12CE ; 3.0 # [7] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO
+12D0..12D6 ; 3.0 # [7] ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..12EE ; 3.0 # [23] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO
+12F0..130E ; 3.0 # [31] ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO
+1310 ; 3.0 # ETHIOPIC SYLLABLE GWA
+1312..1315 ; 3.0 # [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..131E ; 3.0 # [7] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO
+1320..1346 ; 3.0 # [39] ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO
+1348..135A ; 3.0 # [19] ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA
+1361..137C ; 3.0 # [28] ETHIOPIC WORDSPACE..ETHIOPIC NUMBER TEN THOUSAND
+13A0..13F4 ; 3.0 # [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+1401..1676 ; 3.0 # [630] CANADIAN SYLLABICS E..CANADIAN SYLLABICS NNGAA
+1680..169C ; 3.0 # [29] OGHAM SPACE MARK..OGHAM REVERSED FEATHER MARK
+16A0..16F0 ; 3.0 # [81] RUNIC LETTER FEHU FEOH FE F..RUNIC BELGTHOR SYMBOL
+1780..17B3 ; 3.0 # [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+17B4..17B5 ; 3.0 # [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B6..17DC ; 3.0 # [39] KHMER VOWEL SIGN AA..KHMER SIGN AVAKRAHASANYA
+17E0..17E9 ; 3.0 # [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+1800..180E ; 3.0 # [15] MONGOLIAN BIRGA..MONGOLIAN VOWEL SEPARATOR
+1810..1819 ; 3.0 # [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1820..1877 ; 3.0 # [88] MONGOLIAN LETTER A..MONGOLIAN LETTER MANCHU ZHA
+1880..18A9 ; 3.0 # [42] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI DAGALGA
+202F ; 3.0 # NARROW NO-BREAK SPACE
+2048..204D ; 3.0 # [6] QUESTION EXCLAMATION MARK..BLACK RIGHTWARDS BULLET
+20AD..20AF ; 3.0 # [3] KIP SIGN..DRACHMA SIGN
+20E2..20E3 ; 3.0 # [2] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING KEYCAP
+2139..213A ; 3.0 # [2] INFORMATION SOURCE..ROTATED CAPITAL Q
+2183 ; 3.0 # ROMAN NUMERAL REVERSED ONE HUNDRED
+21EB..21F3 ; 3.0 # [9] UPWARDS WHITE ARROW ON PEDESTAL..UP DOWN WHITE ARROW
+2301 ; 3.0 # ELECTRIC ARROW
+237B ; 3.0 # NOT CHECK MARK
+237D..239A ; 3.0 # [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
+2425..2426 ; 3.0 # [2] SYMBOL FOR DELETE FORM TWO..SYMBOL FOR SUBSTITUTE FORM TWO
+25F0..25F7 ; 3.0 # [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+2619 ; 3.0 # REVERSED ROTATED FLORAL HEART BULLET
+2670..2671 ; 3.0 # [2] WEST SYRIAC CROSS..EAST SYRIAC CROSS
+2800..28FF ; 3.0 # [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
+2E80..2E99 ; 3.0 # [26] CJK RADICAL REPEAT..CJK RADICAL RAP
+2E9B..2EF3 ; 3.0 # [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; 3.0 # [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+2FF0..2FFB ; 3.0 # [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3038..303A ; 3.0 # [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+303E ; 3.0 # IDEOGRAPHIC VARIATION INDICATOR
+31A0..31B7 ; 3.0 # [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+3400..4DB5 ; 3.0 # [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
+A000..A48C ; 3.0 # [1165] YI SYLLABLE IT..YI SYLLABLE YYR
+A490..A4A1 ; 3.0 # [18] YI RADICAL QOT..YI RADICAL GA
+A4A4..A4B3 ; 3.0 # [16] YI RADICAL DDUR..YI RADICAL JO
+A4B5..A4C0 ; 3.0 # [12] YI RADICAL JJY..YI RADICAL SHAT
+A4C2..A4C4 ; 3.0 # [3] YI RADICAL SHOP..YI RADICAL ZZIET
+A4C6 ; 3.0 # YI RADICAL KE
+FB1D ; 3.0 # HEBREW LETTER YOD WITH HIRIQ
+FFF9..FFFB ; 3.0 # [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+
+# Total code points: 10307
+
+# ================================================
+
+# Newly assigned in Unicode 3.1.0 (March, 2001)
+
+03F4..03F5 ; 3.1 # [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+FDD0..FDEF ; 3.1 # [32] <noncharacter-FDD0>..<noncharacter-FDEF>
+10300..1031E ; 3.1 # [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10320..10323 ; 3.1 # [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
+10330..1034A ; 3.1 # [27] GOTHIC LETTER AHSA..GOTHIC LETTER NINE HUNDRED
+10400..10425 ; 3.1 # [38] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER ENG
+10428..1044D ; 3.1 # [38] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER ENG
+1D000..1D0F5 ; 3.1 # [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100..1D126 ; 3.1 # [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
+1D12A..1D172 ; 3.1 # [73] MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL COMBINING FLAG-5
+1D173..1D17A ; 3.1 # [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+1D17B..1D1DD ; 3.1 # [99] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL PES SUBPUNCTIS
+1D400..1D454 ; 3.1 # [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; 3.1 # [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; 3.1 # [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; 3.1 # MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; 3.1 # [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; 3.1 # [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; 3.1 # [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; 3.1 # MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C0 ; 3.1 # [4] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL K
+1D4C2..1D4C3 ; 3.1 # [2] MATHEMATICAL SCRIPT SMALL M..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; 3.1 # [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; 3.1 # [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; 3.1 # [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; 3.1 # [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; 3.1 # [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; 3.1 # [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; 3.1 # [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; 3.1 # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; 3.1 # [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A3 ; 3.1 # [338] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL MONOSPACE SMALL Z
+1D6A8..1D7C9 ; 3.1 # [290] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CE..1D7FF ; 3.1 # [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+20000..2A6D6 ; 3.1 # [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
+2F800..2FA1D ; 3.1 # [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+E0001 ; 3.1 # LANGUAGE TAG
+E0020..E007F ; 3.1 # [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 44978
+
+# ================================================
+
+# Newly assigned in Unicode 3.2.0 (March, 2002)
+
+0220 ; 3.2 # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+034F ; 3.2 # COMBINING GRAPHEME JOINER
+0363..036F ; 3.2 # [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
+03D8..03D9 ; 3.2 # [2] GREEK LETTER ARCHAIC KOPPA..GREEK SMALL LETTER ARCHAIC KOPPA
+03F6 ; 3.2 # GREEK REVERSED LUNATE EPSILON SYMBOL
+048A..048B ; 3.2 # [2] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER SHORT I WITH TAIL
+04C5..04C6 ; 3.2 # [2] CYRILLIC CAPITAL LETTER EL WITH TAIL..CYRILLIC SMALL LETTER EL WITH TAIL
+04C9..04CA ; 3.2 # [2] CYRILLIC CAPITAL LETTER EN WITH TAIL..CYRILLIC SMALL LETTER EN WITH TAIL
+04CD..04CE ; 3.2 # [2] CYRILLIC CAPITAL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER EM WITH TAIL
+0500..050F ; 3.2 # [16] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER KOMI TJE
+066E..066F ; 3.2 # [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+07B1 ; 3.2 # THAANA LETTER NAA
+10F7..10F8 ; 3.2 # [2] GEORGIAN LETTER YN..GEORGIAN LETTER ELIFI
+1700..170C ; 3.2 # [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1714 ; 3.2 # [7] TAGALOG LETTER LA..TAGALOG SIGN VIRAMA
+1720..1736 ; 3.2 # [23] HANUNOO LETTER A..PHILIPPINE DOUBLE PUNCTUATION
+1740..1753 ; 3.2 # [20] BUHID LETTER A..BUHID VOWEL SIGN U
+1760..176C ; 3.2 # [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; 3.2 # [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1772..1773 ; 3.2 # [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+2047 ; 3.2 # DOUBLE QUESTION MARK
+204E..2052 ; 3.2 # [5] LOW ASTERISK..COMMERCIAL MINUS SIGN
+2057 ; 3.2 # QUADRUPLE PRIME
+205F ; 3.2 # MEDIUM MATHEMATICAL SPACE
+2060..2063 ; 3.2 # [4] WORD JOINER..INVISIBLE SEPARATOR
+2071 ; 3.2 # SUPERSCRIPT LATIN SMALL LETTER I
+20B0..20B1 ; 3.2 # [2] GERMAN PENNY SIGN..PESO SIGN
+20E4..20EA ; 3.2 # [7] COMBINING ENCLOSING UPWARD POINTING TRIANGLE..COMBINING LEFTWARDS ARROW OVERLAY
+213D..214B ; 3.2 # [15] DOUBLE-STRUCK SMALL GAMMA..TURNED AMPERSAND
+21F4..21FF ; 3.2 # [12] RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW
+22F2..22FF ; 3.2 # [14] ELEMENT OF WITH LONG HORIZONTAL STROKE..Z NOTATION BAG MEMBERSHIP
+237C ; 3.2 # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+239B..23CE ; 3.2 # [52] LEFT PARENTHESIS UPPER HOOK..RETURN SYMBOL
+24EB..24FE ; 3.2 # [20] NEGATIVE CIRCLED NUMBER ELEVEN..DOUBLE CIRCLED NUMBER TEN
+2596..259F ; 3.2 # [10] QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
+25F8..25FF ; 3.2 # [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+2616..2617 ; 3.2 # [2] WHITE SHOGI PIECE..BLACK SHOGI PIECE
+2672..267D ; 3.2 # [12] UNIVERSAL RECYCLING SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
+2680..2689 ; 3.2 # [10] DIE FACE-1..BLACK CIRCLE WITH TWO WHITE DOTS
+2768..2775 ; 3.2 # [14] MEDIUM LEFT PARENTHESIS ORNAMENT..MEDIUM RIGHT CURLY BRACKET ORNAMENT
+27D0..27EB ; 3.2 # [28] WHITE DIAMOND WITH CENTRED DOT..MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27F0..27FF ; 3.2 # [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+2900..2AFF ; 3.2 # [512] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..N-ARY WHITE VERTICAL BAR
+303B..303D ; 3.2 # [3] VERTICAL IDEOGRAPHIC ITERATION MARK..PART ALTERNATION MARK
+3095..3096 ; 3.2 # [2] HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE
+309F..30A0 ; 3.2 # [2] HIRAGANA DIGRAPH YORI..KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FF ; 3.2 # KATAKANA DIGRAPH KOTO
+31F0..31FF ; 3.2 # [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+3251..325F ; 3.2 # [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+32B1..32BF ; 3.2 # [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+A4A2..A4A3 ; 3.2 # [2] YI RADICAL ZUP..YI RADICAL CYT
+A4B4 ; 3.2 # YI RADICAL NZUP
+A4C1 ; 3.2 # YI RADICAL ZUR
+A4C5 ; 3.2 # YI RADICAL NBIE
+FA30..FA6A ; 3.2 # [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FDFC ; 3.2 # RIAL SIGN
+FE00..FE0F ; 3.2 # [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE45..FE46 ; 3.2 # [2] SESAME DOT..WHITE SESAME DOT
+FE73 ; 3.2 # ARABIC TAIL FRAGMENT
+FF5F..FF60 ; 3.2 # [2] FULLWIDTH LEFT WHITE PARENTHESIS..FULLWIDTH RIGHT WHITE PARENTHESIS
+
+# Total code points: 1016
+
+# ================================================
+
+# Newly assigned in Unicode 4.0.0 (April, 2003)
+
+0221 ; 4.0 # LATIN SMALL LETTER D WITH CURL
+0234..0236 ; 4.0 # [3] LATIN SMALL LETTER L WITH CURL..LATIN SMALL LETTER T WITH CURL
+02AE..02AF ; 4.0 # [2] LATIN SMALL LETTER TURNED H WITH FISHHOOK..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02EF..02FF ; 4.0 # [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+0350..0357 ; 4.0 # [8] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE
+035D..035F ; 4.0 # [3] COMBINING DOUBLE BREVE..COMBINING DOUBLE MACRON BELOW
+03F7..03FB ; 4.0 # [5] GREEK CAPITAL LETTER SHO..GREEK SMALL LETTER SAN
+0600..0603 ; 4.0 # [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+060D..0615 ; 4.0 # [9] ARABIC DATE SEPARATOR..ARABIC SMALL HIGH TAH
+0656..0658 ; 4.0 # [3] ARABIC SUBSCRIPT ALEF..ARABIC MARK NOON GHUNNA
+06EE..06EF ; 4.0 # [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06FF ; 4.0 # ARABIC LETTER HEH WITH INVERTED V
+072D..072F ; 4.0 # [3] SYRIAC LETTER PERSIAN BHETH..SYRIAC LETTER PERSIAN DHALATH
+074D..074F ; 4.0 # [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE
+0904 ; 4.0 # DEVANAGARI LETTER SHORT A
+09BD ; 4.0 # BENGALI SIGN AVAGRAHA
+0A01 ; 4.0 # GURMUKHI SIGN ADAK BINDI
+0A03 ; 4.0 # GURMUKHI SIGN VISARGA
+0A8C ; 4.0 # GUJARATI LETTER VOCALIC L
+0AE1..0AE3 ; 4.0 # [3] GUJARATI LETTER VOCALIC LL..GUJARATI VOWEL SIGN VOCALIC LL
+0AF1 ; 4.0 # GUJARATI RUPEE SIGN
+0B35 ; 4.0 # ORIYA LETTER VA
+0B71 ; 4.0 # ORIYA LETTER WA
+0BF3..0BFA ; 4.0 # [8] TAMIL DAY SIGN..TAMIL NUMBER SIGN
+0CBC..0CBD ; 4.0 # [2] KANNADA SIGN NUKTA..KANNADA SIGN AVAGRAHA
+17DD ; 4.0 # KHMER SIGN ATTHACAN
+17F0..17F9 ; 4.0 # [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
+1900..191C ; 4.0 # [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1920..192B ; 4.0 # [12] LIMBU VOWEL SIGN A..LIMBU SUBJOINED LETTER WA
+1930..193B ; 4.0 # [12] LIMBU SMALL LETTER KA..LIMBU SIGN SA-I
+1940 ; 4.0 # LIMBU SIGN LOO
+1944..196D ; 4.0 # [42] LIMBU EXCLAMATION MARK..TAI LE LETTER AI
+1970..1974 ; 4.0 # [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+19E0..19FF ; 4.0 # [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
+1D00..1D6B ; 4.0 # [108] LATIN LETTER SMALL CAPITAL A..LATIN SMALL LETTER UE
+2053..2054 ; 4.0 # [2] SWUNG DASH..INVERTED UNDERTIE
+213B ; 4.0 # FACSIMILE SIGN
+23CF..23D0 ; 4.0 # [2] EJECT SYMBOL..VERTICAL LINE EXTENSION
+24FF ; 4.0 # NEGATIVE CIRCLED DIGIT ZERO
+2614..2615 ; 4.0 # [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
+268A..2691 ; 4.0 # [8] MONOGRAM FOR YANG..BLACK FLAG
+26A0..26A1 ; 4.0 # [2] WARNING SIGN..HIGH VOLTAGE SIGN
+2B00..2B0D ; 4.0 # [14] NORTH EAST WHITE ARROW..UP DOWN BLACK ARROW
+321D..321E ; 4.0 # [2] PARENTHESIZED KOREAN CHARACTER OJEON..PARENTHESIZED KOREAN CHARACTER O HU
+3250 ; 4.0 # PARTNERSHIP SIGN
+327C..327D ; 4.0 # [2] CIRCLED KOREAN CHARACTER CHAMKO..CIRCLED KOREAN CHARACTER JUEUI
+32CC..32CF ; 4.0 # [4] SQUARE HG..LIMITED LIABILITY SIGN
+3377..337A ; 4.0 # [4] SQUARE DM..SQUARE IU
+33DE..33DF ; 4.0 # [2] SQUARE V OVER M..SQUARE A OVER M
+33FF ; 4.0 # SQUARE GAL
+4DC0..4DFF ; 4.0 # [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+FDFD ; 4.0 # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FE47..FE48 ; 4.0 # [2] PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET..PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+10000..1000B ; 4.0 # [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; 4.0 # [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; 4.0 # [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; 4.0 # [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; 4.0 # [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; 4.0 # [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; 4.0 # [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+10100..10102 ; 4.0 # [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK
+10107..10133 ; 4.0 # [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+10137..1013F ; 4.0 # [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+10380..1039D ; 4.0 # [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+1039F ; 4.0 # UGARITIC WORD DIVIDER
+10426..10427 ; 4.0 # [2] DESERET CAPITAL LETTER OI..DESERET CAPITAL LETTER EW
+1044E..1049D ; 4.0 # [80] DESERET SMALL LETTER OI..OSMANYA LETTER OO
+104A0..104A9 ; 4.0 # [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+10800..10805 ; 4.0 # [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; 4.0 # CYPRIOT SYLLABLE JO
+1080A..10835 ; 4.0 # [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; 4.0 # [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; 4.0 # CYPRIOT SYLLABLE ZA
+1083F ; 4.0 # CYPRIOT SYLLABLE ZO
+1D300..1D356 ; 4.0 # [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+1D4C1 ; 4.0 # MATHEMATICAL SCRIPT SMALL L
+E0100..E01EF ; 4.0 # [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 1226
+
+# ================================================
+
+# Newly assigned in Unicode 4.1.0 (March, 2005)
+
+0237..0241 ; 4.1 # [11] LATIN SMALL LETTER DOTLESS J..LATIN CAPITAL LETTER GLOTTAL STOP
+0358..035C ; 4.1 # [5] COMBINING DOT ABOVE RIGHT..COMBINING DOUBLE BREVE BELOW
+03FC..03FF ; 4.1 # [4] GREEK RHO WITH STROKE SYMBOL..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+04F6..04F7 ; 4.1 # [2] CYRILLIC CAPITAL LETTER GHE WITH DESCENDER..CYRILLIC SMALL LETTER GHE WITH DESCENDER
+05A2 ; 4.1 # HEBREW ACCENT ATNAH HAFUKH
+05C5..05C7 ; 4.1 # [3] HEBREW MARK LOWER DOT..HEBREW POINT QAMATS QATAN
+060B ; 4.1 # AFGHANI SIGN
+061E ; 4.1 # ARABIC TRIPLE DOT PUNCTUATION MARK
+0659..065E ; 4.1 # [6] ARABIC ZWARAKAY..ARABIC FATHA WITH TWO DOTS
+0750..076D ; 4.1 # [30] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+097D ; 4.1 # DEVANAGARI LETTER GLOTTAL STOP
+09CE ; 4.1 # BENGALI LETTER KHANDA TA
+0BB6 ; 4.1 # TAMIL LETTER SHA
+0BE6 ; 4.1 # TAMIL DIGIT ZERO
+0FD0..0FD1 ; 4.1 # [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN
+10F9..10FA ; 4.1 # [2] GEORGIAN LETTER TURNED GAN..GEORGIAN LETTER AIN
+10FC ; 4.1 # MODIFIER LETTER GEORGIAN NAR
+1207 ; 4.1 # ETHIOPIC SYLLABLE HOA
+1247 ; 4.1 # ETHIOPIC SYLLABLE QOA
+1287 ; 4.1 # ETHIOPIC SYLLABLE XOA
+12AF ; 4.1 # ETHIOPIC SYLLABLE KOA
+12CF ; 4.1 # ETHIOPIC SYLLABLE WOA
+12EF ; 4.1 # ETHIOPIC SYLLABLE YOA
+130F ; 4.1 # ETHIOPIC SYLLABLE GOA
+131F ; 4.1 # ETHIOPIC SYLLABLE GGWAA
+1347 ; 4.1 # ETHIOPIC SYLLABLE TZOA
+135F..1360 ; 4.1 # [2] ETHIOPIC COMBINING GEMINATION MARK..ETHIOPIC SECTION MARK
+1380..1399 ; 4.1 # [26] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC TONAL MARK KURT
+1980..19A9 ; 4.1 # [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
+19B0..19C9 ; 4.1 # [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
+19D0..19D9 ; 4.1 # [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+19DE..19DF ; 4.1 # [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
+1A00..1A1B ; 4.1 # [28] BUGINESE LETTER KA..BUGINESE VOWEL SIGN AE
+1A1E..1A1F ; 4.1 # [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
+1D6C..1DC3 ; 4.1 # [88] LATIN SMALL LETTER B WITH MIDDLE TILDE..COMBINING SUSPENSION MARK
+2055..2056 ; 4.1 # [2] FLOWER PUNCTUATION MARK..THREE DOT PUNCTUATION
+2058..205E ; 4.1 # [7] FOUR DOT PUNCTUATION..VERTICAL FOUR DOTS
+2090..2094 ; 4.1 # [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20B2..20B5 ; 4.1 # [4] GUARANI SIGN..CEDI SIGN
+20EB ; 4.1 # COMBINING LONG DOUBLE SOLIDUS OVERLAY
+213C ; 4.1 # DOUBLE-STRUCK SMALL PI
+214C ; 4.1 # PER SIGN
+23D1..23DB ; 4.1 # [11] METRICAL BREVE..FUSE
+2618 ; 4.1 # SHAMROCK
+267E..267F ; 4.1 # [2] PERMANENT PAPER SIGN..WHEELCHAIR SYMBOL
+2692..269C ; 4.1 # [11] HAMMER AND PICK..FLEUR-DE-LIS
+26A2..26B1 ; 4.1 # [16] DOUBLED FEMALE SIGN..FUNERAL URN
+27C0..27C6 ; 4.1 # [7] THREE DIMENSIONAL ANGLE..RIGHT S-SHAPED BAG DELIMITER
+2B0E..2B13 ; 4.1 # [6] RIGHTWARDS ARROW WITH TIP DOWNWARDS..SQUARE WITH BOTTOM HALF BLACK
+2C00..2C2E ; 4.1 # [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C30..2C5E ; 4.1 # [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C80..2CEA ; 4.1 # [107] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL SHIMA SIMA
+2CF9..2D25 ; 4.1 # [45] COPTIC OLD NUBIAN FULL STOP..GEORGIAN SMALL LETTER HOE
+2D30..2D65 ; 4.1 # [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D6F ; 4.1 # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2D80..2D96 ; 4.1 # [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; 4.1 # [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; 4.1 # [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; 4.1 # [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; 4.1 # [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; 4.1 # [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; 4.1 # [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; 4.1 # [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; 4.1 # [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+2E00..2E17 ; 4.1 # [24] RIGHT ANGLE SUBSTITUTION MARKER..DOUBLE OBLIQUE HYPHEN
+2E1C..2E1D ; 4.1 # [2] LEFT LOW PARAPHRASE BRACKET..RIGHT LOW PARAPHRASE BRACKET
+31C0..31CF ; 4.1 # [16] CJK STROKE T..CJK STROKE N
+327E ; 4.1 # CIRCLED HANGUL IEUNG U
+9FA6..9FBB ; 4.1 # [22] CJK UNIFIED IDEOGRAPH-9FA6..CJK UNIFIED IDEOGRAPH-9FBB
+A700..A716 ; 4.1 # [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A800..A82B ; 4.1 # [44] SYLOTI NAGRI LETTER A..SYLOTI NAGRI POETRY MARK-4
+FA70..FAD9 ; 4.1 # [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FE10..FE19 ; 4.1 # [10] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+10140..1018A ; 4.1 # [75] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ZERO SIGN
+103A0..103C3 ; 4.1 # [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103D5 ; 4.1 # [14] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN NUMBER HUNDRED
+10A00..10A03 ; 4.1 # [4] KHAROSHTHI LETTER A..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; 4.1 # [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A13 ; 4.1 # [8] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI LETTER GHA
+10A15..10A17 ; 4.1 # [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33 ; 4.1 # [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+10A38..10A3A ; 4.1 # [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F..10A47 ; 4.1 # [9] KHAROSHTHI VIRAMA..KHAROSHTHI NUMBER ONE THOUSAND
+10A50..10A58 ; 4.1 # [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
+1D200..1D245 ; 4.1 # [70] GREEK VOCAL NOTATION SYMBOL-1..GREEK MUSICAL LEIMMA
+1D6A4..1D6A5 ; 4.1 # [2] MATHEMATICAL ITALIC SMALL DOTLESS I..MATHEMATICAL ITALIC SMALL DOTLESS J
+
+# Total code points: 1273
+
+# ================================================
+
+# Newly assigned in Unicode 5.0.0 (July, 2006)
+
+0242..024F ; 5.0 # [14] LATIN SMALL LETTER GLOTTAL STOP..LATIN SMALL LETTER Y WITH STROKE
+037B..037D ; 5.0 # [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+04CF ; 5.0 # CYRILLIC SMALL LETTER PALOCHKA
+04FA..04FF ; 5.0 # [6] CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK..CYRILLIC SMALL LETTER HA WITH STROKE
+0510..0513 ; 5.0 # [4] CYRILLIC CAPITAL LETTER REVERSED ZE..CYRILLIC SMALL LETTER EL WITH HOOK
+05BA ; 5.0 # HEBREW POINT HOLAM HASER FOR VAV
+07C0..07FA ; 5.0 # [59] NKO DIGIT ZERO..NKO LAJANYALAN
+097B..097C ; 5.0 # [2] DEVANAGARI LETTER GGA..DEVANAGARI LETTER JJA
+097E..097F ; 5.0 # [2] DEVANAGARI LETTER DDDA..DEVANAGARI LETTER BBA
+0CE2..0CE3 ; 5.0 # [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0CF1..0CF2 ; 5.0 # [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+1B00..1B4B ; 5.0 # [76] BALINESE SIGN ULU RICEM..BALINESE LETTER ASYURA SASAK
+1B50..1B7C ; 5.0 # [45] BALINESE DIGIT ZERO..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+1DC4..1DCA ; 5.0 # [7] COMBINING MACRON-ACUTE..COMBINING LATIN SMALL LETTER R BELOW
+1DFE..1DFF ; 5.0 # [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+20EC..20EF ; 5.0 # [4] COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS..COMBINING RIGHT ARROW BELOW
+214D..214E ; 5.0 # [2] AKTIESELSKAB..TURNED SMALL F
+2184 ; 5.0 # LATIN SMALL LETTER REVERSED C
+23DC..23E7 ; 5.0 # [12] TOP PARENTHESIS..ELECTRICAL INTERSECTION
+26B2 ; 5.0 # NEUTER
+27C7..27CA ; 5.0 # [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
+2B14..2B1A ; 5.0 # [7] SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK..DOTTED SQUARE
+2B20..2B23 ; 5.0 # [4] WHITE PENTAGON..HORIZONTAL BLACK HEXAGON
+2C60..2C6C ; 5.0 # [13] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN SMALL LETTER Z WITH DESCENDER
+2C74..2C77 ; 5.0 # [4] LATIN SMALL LETTER V WITH CURL..LATIN SMALL LETTER TAILLESS PHI
+A717..A71A ; 5.0 # [4] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE
+A720..A721 ; 5.0 # [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+A840..A877 ; 5.0 # [56] PHAGS-PA LETTER KA..PHAGS-PA MARK DOUBLE SHAD
+10900..10919 ; 5.0 # [26] PHOENICIAN LETTER ALF..PHOENICIAN NUMBER ONE HUNDRED
+1091F ; 5.0 # PHOENICIAN WORD SEPARATOR
+12000..1236E ; 5.0 # [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+12400..12462 ; 5.0 # [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12470..12473 ; 5.0 # [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+1D360..1D371 ; 5.0 # [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1D7CA..1D7CB ; 5.0 # [2] MATHEMATICAL BOLD CAPITAL DIGAMMA..MATHEMATICAL BOLD SMALL DIGAMMA
+
+# Total code points: 1369
+
+# EOF
diff --git a/util/unicode/data/GraphemeBreakProperty.txt b/util/unicode/data/GraphemeBreakProperty.txt
new file mode 100644
index 0000000000..c1eea543cf
--- /dev/null
+++ b/util/unicode/data/GraphemeBreakProperty.txt
@@ -0,0 +1,1039 @@
+# GraphemeBreakProperty-5.0.0.txt
+# Date: 2006-03-09, 23:14:04 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property: Grapheme_Cluster_Break
+
+# All code points not explicitly listed for Grapheme_Cluster_Break
+# have the value Other (XX).
+
+# @missing: 0000..10FFFF; Other
+
+# ================================================
+
+000D ; CR # Cc <control-000D>
+
+# Total code points: 1
+
+# ================================================
+
+000A ; LF # Cc <control-000A>
+
+# Total code points: 1
+
+# ================================================
+
+0000..0009 ; Control # Cc [10] <control-0000>..<control-0009>
+000B..000C ; Control # Cc [2] <control-000B>..<control-000C>
+000E..001F ; Control # Cc [18] <control-000E>..<control-001F>
+007F..009F ; Control # Cc [33] <control-007F>..<control-009F>
+00AD ; Control # Cf SOFT HYPHEN
+0600..0603 ; Control # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+06DD ; Control # Cf ARABIC END OF AYAH
+070F ; Control # Cf SYRIAC ABBREVIATION MARK
+17B4..17B5 ; Control # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+200B ; Control # Cf ZERO WIDTH SPACE
+200E..200F ; Control # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+2028 ; Control # Zl LINE SEPARATOR
+2029 ; Control # Zp PARAGRAPH SEPARATOR
+202A..202E ; Control # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2063 ; Control # Cf [4] WORD JOINER..INVISIBLE SEPARATOR
+206A..206F ; Control # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+FEFF ; Control # Cf ZERO WIDTH NO-BREAK SPACE
+FFF9..FFFB ; Control # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+1D173..1D17A ; Control # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0001 ; Control # Cf LANGUAGE TAG
+E0020..E007F ; Control # Cf [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 201
+
+# ================================================
+
+0300..036F ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0486 ; Extend # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
+0488..0489 ; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+0591..05BD ; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF ; Extend # Mn HEBREW POINT RAFE
+05C1..05C2 ; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5 ; Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7 ; Extend # Mn HEBREW POINT QAMATS QATAN
+0610..0615 ; Extend # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
+064B..065E ; Extend # Mn [20] ARABIC FATHATAN..ARABIC FATHA WITH TWO DOTS
+0670 ; Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC ; Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DE ; Extend # Me ARABIC START OF RUB EL HIZB
+06DF..06E4 ; Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8 ; Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED ; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711 ; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+0901..0902 ; Extend # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+093C ; Extend # Mn DEVANAGARI SIGN NUKTA
+0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+094D ; Extend # Mn DEVANAGARI SIGN VIRAMA
+0951..0954 ; Extend # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
+0962..0963 ; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981 ; Extend # Mn BENGALI SIGN CANDRABINDU
+09BC ; Extend # Mn BENGALI SIGN NUKTA
+09BE ; Extend # Mc BENGALI VOWEL SIGN AA
+09C1..09C4 ; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09CD ; Extend # Mn BENGALI SIGN VIRAMA
+09D7 ; Extend # Mc BENGALI AU LENGTH MARK
+09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A3C ; Extend # Mn GURMUKHI SIGN NUKTA
+0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A70..0A71 ; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A81..0A82 ; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0ABC ; Extend # Mn GUJARATI SIGN NUKTA
+0AC1..0AC5 ; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0ACD ; Extend # Mn GUJARATI SIGN VIRAMA
+0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU
+0B3C ; Extend # Mn ORIYA SIGN NUKTA
+0B3E ; Extend # Mc ORIYA VOWEL SIGN AA
+0B3F ; Extend # Mn ORIYA VOWEL SIGN I
+0B41..0B43 ; Extend # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R
+0B4D ; Extend # Mn ORIYA SIGN VIRAMA
+0B56 ; Extend # Mn ORIYA AI LENGTH MARK
+0B57 ; Extend # Mc ORIYA AU LENGTH MARK
+0B82 ; Extend # Mn TAMIL SIGN ANUSVARA
+0BBE ; Extend # Mc TAMIL VOWEL SIGN AA
+0BC0 ; Extend # Mn TAMIL VOWEL SIGN II
+0BCD ; Extend # Mn TAMIL SIGN VIRAMA
+0BD7 ; Extend # Mc TAMIL AU LENGTH MARK
+0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0CBC ; Extend # Mn KANNADA SIGN NUKTA
+0CBF ; Extend # Mn KANNADA VOWEL SIGN I
+0CC2 ; Extend # Mc KANNADA VOWEL SIGN UU
+0CC6 ; Extend # Mn KANNADA VOWEL SIGN E
+0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D3E ; Extend # Mc MALAYALAM VOWEL SIGN AA
+0D41..0D43 ; Extend # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R
+0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA
+0D57 ; Extend # Mc MALAYALAM AU LENGTH MARK
+0DCA ; Extend # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DD2..0DD4 ; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DDF ; Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
+0E31 ; Extend # Mn THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN
+0EB4..0EB9 ; Extend # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+0EBB..0EBC ; Extend # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EC8..0ECD ; Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
+0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37 ; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39 ; Extend # Mn TIBETAN MARK TSA -PHRU
+0F71..0F7E ; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84 ; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87 ; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F90..0F97 ; Extend # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6 ; Extend # Mn TIBETAN SYMBOL PADMA GDAN
+102D..1030 ; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032 ; Extend # Mn MYANMAR VOWEL SIGN AI
+1036..1037 ; Extend # Mn [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW
+1039 ; Extend # Mn MYANMAR SIGN VIRAMA
+1058..1059 ; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+135F ; Extend # Mn ETHIOPIC COMBINING GEMINATION MARK
+1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1732..1734 ; Extend # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B7..17BD ; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6 ; Extend # Mn KHMER SIGN NIKAHIT
+17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD ; Extend # Mn KHMER SIGN ATTHACAN
+180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA
+1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B34 ; Extend # Mn BALINESE SIGN REREKAN
+1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET
+1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1DC0..1DCA ; Extend # Mn [11] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER R BELOW
+1DFE..1DFF ; Extend # Mn [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C..200D ; Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20EF ; Extend # Mn [11] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW
+302A..302F ; Extend # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA
+A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA
+A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE23 ; Extend # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
+10A01..10A03 ; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Extend # Mn KHAROSHTHI VIRAMA
+1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM
+1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16E..1D172 ; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 911
+
+# ================================================
+
+1100..1159 ; L # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F ; L # Lo HANGUL CHOSEONG FILLER
+
+# Total code points: 91
+
+# ================================================
+
+1160..11A2 ; V # Lo [67] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+
+# Total code points: 67
+
+# ================================================
+
+11A8..11F9 ; T # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+
+# Total code points: 82
+
+# ================================================
+
+AC00 ; LV # Lo HANGUL SYLLABLE GA
+AC1C ; LV # Lo HANGUL SYLLABLE GAE
+AC38 ; LV # Lo HANGUL SYLLABLE GYA
+AC54 ; LV # Lo HANGUL SYLLABLE GYAE
+AC70 ; LV # Lo HANGUL SYLLABLE GEO
+AC8C ; LV # Lo HANGUL SYLLABLE GE
+ACA8 ; LV # Lo HANGUL SYLLABLE GYEO
+ACC4 ; LV # Lo HANGUL SYLLABLE GYE
+ACE0 ; LV # Lo HANGUL SYLLABLE GO
+ACFC ; LV # Lo HANGUL SYLLABLE GWA
+AD18 ; LV # Lo HANGUL SYLLABLE GWAE
+AD34 ; LV # Lo HANGUL SYLLABLE GOE
+AD50 ; LV # Lo HANGUL SYLLABLE GYO
+AD6C ; LV # Lo HANGUL SYLLABLE GU
+AD88 ; LV # Lo HANGUL SYLLABLE GWEO
+ADA4 ; LV # Lo HANGUL SYLLABLE GWE
+ADC0 ; LV # Lo HANGUL SYLLABLE GWI
+ADDC ; LV # Lo HANGUL SYLLABLE GYU
+ADF8 ; LV # Lo HANGUL SYLLABLE GEU
+AE14 ; LV # Lo HANGUL SYLLABLE GYI
+AE30 ; LV # Lo HANGUL SYLLABLE GI
+AE4C ; LV # Lo HANGUL SYLLABLE GGA
+AE68 ; LV # Lo HANGUL SYLLABLE GGAE
+AE84 ; LV # Lo HANGUL SYLLABLE GGYA
+AEA0 ; LV # Lo HANGUL SYLLABLE GGYAE
+AEBC ; LV # Lo HANGUL SYLLABLE GGEO
+AED8 ; LV # Lo HANGUL SYLLABLE GGE
+AEF4 ; LV # Lo HANGUL SYLLABLE GGYEO
+AF10 ; LV # Lo HANGUL SYLLABLE GGYE
+AF2C ; LV # Lo HANGUL SYLLABLE GGO
+AF48 ; LV # Lo HANGUL SYLLABLE GGWA
+AF64 ; LV # Lo HANGUL SYLLABLE GGWAE
+AF80 ; LV # Lo HANGUL SYLLABLE GGOE
+AF9C ; LV # Lo HANGUL SYLLABLE GGYO
+AFB8 ; LV # Lo HANGUL SYLLABLE GGU
+AFD4 ; LV # Lo HANGUL SYLLABLE GGWEO
+AFF0 ; LV # Lo HANGUL SYLLABLE GGWE
+B00C ; LV # Lo HANGUL SYLLABLE GGWI
+B028 ; LV # Lo HANGUL SYLLABLE GGYU
+B044 ; LV # Lo HANGUL SYLLABLE GGEU
+B060 ; LV # Lo HANGUL SYLLABLE GGYI
+B07C ; LV # Lo HANGUL SYLLABLE GGI
+B098 ; LV # Lo HANGUL SYLLABLE NA
+B0B4 ; LV # Lo HANGUL SYLLABLE NAE
+B0D0 ; LV # Lo HANGUL SYLLABLE NYA
+B0EC ; LV # Lo HANGUL SYLLABLE NYAE
+B108 ; LV # Lo HANGUL SYLLABLE NEO
+B124 ; LV # Lo HANGUL SYLLABLE NE
+B140 ; LV # Lo HANGUL SYLLABLE NYEO
+B15C ; LV # Lo HANGUL SYLLABLE NYE
+B178 ; LV # Lo HANGUL SYLLABLE NO
+B194 ; LV # Lo HANGUL SYLLABLE NWA
+B1B0 ; LV # Lo HANGUL SYLLABLE NWAE
+B1CC ; LV # Lo HANGUL SYLLABLE NOE
+B1E8 ; LV # Lo HANGUL SYLLABLE NYO
+B204 ; LV # Lo HANGUL SYLLABLE NU
+B220 ; LV # Lo HANGUL SYLLABLE NWEO
+B23C ; LV # Lo HANGUL SYLLABLE NWE
+B258 ; LV # Lo HANGUL SYLLABLE NWI
+B274 ; LV # Lo HANGUL SYLLABLE NYU
+B290 ; LV # Lo HANGUL SYLLABLE NEU
+B2AC ; LV # Lo HANGUL SYLLABLE NYI
+B2C8 ; LV # Lo HANGUL SYLLABLE NI
+B2E4 ; LV # Lo HANGUL SYLLABLE DA
+B300 ; LV # Lo HANGUL SYLLABLE DAE
+B31C ; LV # Lo HANGUL SYLLABLE DYA
+B338 ; LV # Lo HANGUL SYLLABLE DYAE
+B354 ; LV # Lo HANGUL SYLLABLE DEO
+B370 ; LV # Lo HANGUL SYLLABLE DE
+B38C ; LV # Lo HANGUL SYLLABLE DYEO
+B3A8 ; LV # Lo HANGUL SYLLABLE DYE
+B3C4 ; LV # Lo HANGUL SYLLABLE DO
+B3E0 ; LV # Lo HANGUL SYLLABLE DWA
+B3FC ; LV # Lo HANGUL SYLLABLE DWAE
+B418 ; LV # Lo HANGUL SYLLABLE DOE
+B434 ; LV # Lo HANGUL SYLLABLE DYO
+B450 ; LV # Lo HANGUL SYLLABLE DU
+B46C ; LV # Lo HANGUL SYLLABLE DWEO
+B488 ; LV # Lo HANGUL SYLLABLE DWE
+B4A4 ; LV # Lo HANGUL SYLLABLE DWI
+B4C0 ; LV # Lo HANGUL SYLLABLE DYU
+B4DC ; LV # Lo HANGUL SYLLABLE DEU
+B4F8 ; LV # Lo HANGUL SYLLABLE DYI
+B514 ; LV # Lo HANGUL SYLLABLE DI
+B530 ; LV # Lo HANGUL SYLLABLE DDA
+B54C ; LV # Lo HANGUL SYLLABLE DDAE
+B568 ; LV # Lo HANGUL SYLLABLE DDYA
+B584 ; LV # Lo HANGUL SYLLABLE DDYAE
+B5A0 ; LV # Lo HANGUL SYLLABLE DDEO
+B5BC ; LV # Lo HANGUL SYLLABLE DDE
+B5D8 ; LV # Lo HANGUL SYLLABLE DDYEO
+B5F4 ; LV # Lo HANGUL SYLLABLE DDYE
+B610 ; LV # Lo HANGUL SYLLABLE DDO
+B62C ; LV # Lo HANGUL SYLLABLE DDWA
+B648 ; LV # Lo HANGUL SYLLABLE DDWAE
+B664 ; LV # Lo HANGUL SYLLABLE DDOE
+B680 ; LV # Lo HANGUL SYLLABLE DDYO
+B69C ; LV # Lo HANGUL SYLLABLE DDU
+B6B8 ; LV # Lo HANGUL SYLLABLE DDWEO
+B6D4 ; LV # Lo HANGUL SYLLABLE DDWE
+B6F0 ; LV # Lo HANGUL SYLLABLE DDWI
+B70C ; LV # Lo HANGUL SYLLABLE DDYU
+B728 ; LV # Lo HANGUL SYLLABLE DDEU
+B744 ; LV # Lo HANGUL SYLLABLE DDYI
+B760 ; LV # Lo HANGUL SYLLABLE DDI
+B77C ; LV # Lo HANGUL SYLLABLE RA
+B798 ; LV # Lo HANGUL SYLLABLE RAE
+B7B4 ; LV # Lo HANGUL SYLLABLE RYA
+B7D0 ; LV # Lo HANGUL SYLLABLE RYAE
+B7EC ; LV # Lo HANGUL SYLLABLE REO
+B808 ; LV # Lo HANGUL SYLLABLE RE
+B824 ; LV # Lo HANGUL SYLLABLE RYEO
+B840 ; LV # Lo HANGUL SYLLABLE RYE
+B85C ; LV # Lo HANGUL SYLLABLE RO
+B878 ; LV # Lo HANGUL SYLLABLE RWA
+B894 ; LV # Lo HANGUL SYLLABLE RWAE
+B8B0 ; LV # Lo HANGUL SYLLABLE ROE
+B8CC ; LV # Lo HANGUL SYLLABLE RYO
+B8E8 ; LV # Lo HANGUL SYLLABLE RU
+B904 ; LV # Lo HANGUL SYLLABLE RWEO
+B920 ; LV # Lo HANGUL SYLLABLE RWE
+B93C ; LV # Lo HANGUL SYLLABLE RWI
+B958 ; LV # Lo HANGUL SYLLABLE RYU
+B974 ; LV # Lo HANGUL SYLLABLE REU
+B990 ; LV # Lo HANGUL SYLLABLE RYI
+B9AC ; LV # Lo HANGUL SYLLABLE RI
+B9C8 ; LV # Lo HANGUL SYLLABLE MA
+B9E4 ; LV # Lo HANGUL SYLLABLE MAE
+BA00 ; LV # Lo HANGUL SYLLABLE MYA
+BA1C ; LV # Lo HANGUL SYLLABLE MYAE
+BA38 ; LV # Lo HANGUL SYLLABLE MEO
+BA54 ; LV # Lo HANGUL SYLLABLE ME
+BA70 ; LV # Lo HANGUL SYLLABLE MYEO
+BA8C ; LV # Lo HANGUL SYLLABLE MYE
+BAA8 ; LV # Lo HANGUL SYLLABLE MO
+BAC4 ; LV # Lo HANGUL SYLLABLE MWA
+BAE0 ; LV # Lo HANGUL SYLLABLE MWAE
+BAFC ; LV # Lo HANGUL SYLLABLE MOE
+BB18 ; LV # Lo HANGUL SYLLABLE MYO
+BB34 ; LV # Lo HANGUL SYLLABLE MU
+BB50 ; LV # Lo HANGUL SYLLABLE MWEO
+BB6C ; LV # Lo HANGUL SYLLABLE MWE
+BB88 ; LV # Lo HANGUL SYLLABLE MWI
+BBA4 ; LV # Lo HANGUL SYLLABLE MYU
+BBC0 ; LV # Lo HANGUL SYLLABLE MEU
+BBDC ; LV # Lo HANGUL SYLLABLE MYI
+BBF8 ; LV # Lo HANGUL SYLLABLE MI
+BC14 ; LV # Lo HANGUL SYLLABLE BA
+BC30 ; LV # Lo HANGUL SYLLABLE BAE
+BC4C ; LV # Lo HANGUL SYLLABLE BYA
+BC68 ; LV # Lo HANGUL SYLLABLE BYAE
+BC84 ; LV # Lo HANGUL SYLLABLE BEO
+BCA0 ; LV # Lo HANGUL SYLLABLE BE
+BCBC ; LV # Lo HANGUL SYLLABLE BYEO
+BCD8 ; LV # Lo HANGUL SYLLABLE BYE
+BCF4 ; LV # Lo HANGUL SYLLABLE BO
+BD10 ; LV # Lo HANGUL SYLLABLE BWA
+BD2C ; LV # Lo HANGUL SYLLABLE BWAE
+BD48 ; LV # Lo HANGUL SYLLABLE BOE
+BD64 ; LV # Lo HANGUL SYLLABLE BYO
+BD80 ; LV # Lo HANGUL SYLLABLE BU
+BD9C ; LV # Lo HANGUL SYLLABLE BWEO
+BDB8 ; LV # Lo HANGUL SYLLABLE BWE
+BDD4 ; LV # Lo HANGUL SYLLABLE BWI
+BDF0 ; LV # Lo HANGUL SYLLABLE BYU
+BE0C ; LV # Lo HANGUL SYLLABLE BEU
+BE28 ; LV # Lo HANGUL SYLLABLE BYI
+BE44 ; LV # Lo HANGUL SYLLABLE BI
+BE60 ; LV # Lo HANGUL SYLLABLE BBA
+BE7C ; LV # Lo HANGUL SYLLABLE BBAE
+BE98 ; LV # Lo HANGUL SYLLABLE BBYA
+BEB4 ; LV # Lo HANGUL SYLLABLE BBYAE
+BED0 ; LV # Lo HANGUL SYLLABLE BBEO
+BEEC ; LV # Lo HANGUL SYLLABLE BBE
+BF08 ; LV # Lo HANGUL SYLLABLE BBYEO
+BF24 ; LV # Lo HANGUL SYLLABLE BBYE
+BF40 ; LV # Lo HANGUL SYLLABLE BBO
+BF5C ; LV # Lo HANGUL SYLLABLE BBWA
+BF78 ; LV # Lo HANGUL SYLLABLE BBWAE
+BF94 ; LV # Lo HANGUL SYLLABLE BBOE
+BFB0 ; LV # Lo HANGUL SYLLABLE BBYO
+BFCC ; LV # Lo HANGUL SYLLABLE BBU
+BFE8 ; LV # Lo HANGUL SYLLABLE BBWEO
+C004 ; LV # Lo HANGUL SYLLABLE BBWE
+C020 ; LV # Lo HANGUL SYLLABLE BBWI
+C03C ; LV # Lo HANGUL SYLLABLE BBYU
+C058 ; LV # Lo HANGUL SYLLABLE BBEU
+C074 ; LV # Lo HANGUL SYLLABLE BBYI
+C090 ; LV # Lo HANGUL SYLLABLE BBI
+C0AC ; LV # Lo HANGUL SYLLABLE SA
+C0C8 ; LV # Lo HANGUL SYLLABLE SAE
+C0E4 ; LV # Lo HANGUL SYLLABLE SYA
+C100 ; LV # Lo HANGUL SYLLABLE SYAE
+C11C ; LV # Lo HANGUL SYLLABLE SEO
+C138 ; LV # Lo HANGUL SYLLABLE SE
+C154 ; LV # Lo HANGUL SYLLABLE SYEO
+C170 ; LV # Lo HANGUL SYLLABLE SYE
+C18C ; LV # Lo HANGUL SYLLABLE SO
+C1A8 ; LV # Lo HANGUL SYLLABLE SWA
+C1C4 ; LV # Lo HANGUL SYLLABLE SWAE
+C1E0 ; LV # Lo HANGUL SYLLABLE SOE
+C1FC ; LV # Lo HANGUL SYLLABLE SYO
+C218 ; LV # Lo HANGUL SYLLABLE SU
+C234 ; LV # Lo HANGUL SYLLABLE SWEO
+C250 ; LV # Lo HANGUL SYLLABLE SWE
+C26C ; LV # Lo HANGUL SYLLABLE SWI
+C288 ; LV # Lo HANGUL SYLLABLE SYU
+C2A4 ; LV # Lo HANGUL SYLLABLE SEU
+C2C0 ; LV # Lo HANGUL SYLLABLE SYI
+C2DC ; LV # Lo HANGUL SYLLABLE SI
+C2F8 ; LV # Lo HANGUL SYLLABLE SSA
+C314 ; LV # Lo HANGUL SYLLABLE SSAE
+C330 ; LV # Lo HANGUL SYLLABLE SSYA
+C34C ; LV # Lo HANGUL SYLLABLE SSYAE
+C368 ; LV # Lo HANGUL SYLLABLE SSEO
+C384 ; LV # Lo HANGUL SYLLABLE SSE
+C3A0 ; LV # Lo HANGUL SYLLABLE SSYEO
+C3BC ; LV # Lo HANGUL SYLLABLE SSYE
+C3D8 ; LV # Lo HANGUL SYLLABLE SSO
+C3F4 ; LV # Lo HANGUL SYLLABLE SSWA
+C410 ; LV # Lo HANGUL SYLLABLE SSWAE
+C42C ; LV # Lo HANGUL SYLLABLE SSOE
+C448 ; LV # Lo HANGUL SYLLABLE SSYO
+C464 ; LV # Lo HANGUL SYLLABLE SSU
+C480 ; LV # Lo HANGUL SYLLABLE SSWEO
+C49C ; LV # Lo HANGUL SYLLABLE SSWE
+C4B8 ; LV # Lo HANGUL SYLLABLE SSWI
+C4D4 ; LV # Lo HANGUL SYLLABLE SSYU
+C4F0 ; LV # Lo HANGUL SYLLABLE SSEU
+C50C ; LV # Lo HANGUL SYLLABLE SSYI
+C528 ; LV # Lo HANGUL SYLLABLE SSI
+C544 ; LV # Lo HANGUL SYLLABLE A
+C560 ; LV # Lo HANGUL SYLLABLE AE
+C57C ; LV # Lo HANGUL SYLLABLE YA
+C598 ; LV # Lo HANGUL SYLLABLE YAE
+C5B4 ; LV # Lo HANGUL SYLLABLE EO
+C5D0 ; LV # Lo HANGUL SYLLABLE E
+C5EC ; LV # Lo HANGUL SYLLABLE YEO
+C608 ; LV # Lo HANGUL SYLLABLE YE
+C624 ; LV # Lo HANGUL SYLLABLE O
+C640 ; LV # Lo HANGUL SYLLABLE WA
+C65C ; LV # Lo HANGUL SYLLABLE WAE
+C678 ; LV # Lo HANGUL SYLLABLE OE
+C694 ; LV # Lo HANGUL SYLLABLE YO
+C6B0 ; LV # Lo HANGUL SYLLABLE U
+C6CC ; LV # Lo HANGUL SYLLABLE WEO
+C6E8 ; LV # Lo HANGUL SYLLABLE WE
+C704 ; LV # Lo HANGUL SYLLABLE WI
+C720 ; LV # Lo HANGUL SYLLABLE YU
+C73C ; LV # Lo HANGUL SYLLABLE EU
+C758 ; LV # Lo HANGUL SYLLABLE YI
+C774 ; LV # Lo HANGUL SYLLABLE I
+C790 ; LV # Lo HANGUL SYLLABLE JA
+C7AC ; LV # Lo HANGUL SYLLABLE JAE
+C7C8 ; LV # Lo HANGUL SYLLABLE JYA
+C7E4 ; LV # Lo HANGUL SYLLABLE JYAE
+C800 ; LV # Lo HANGUL SYLLABLE JEO
+C81C ; LV # Lo HANGUL SYLLABLE JE
+C838 ; LV # Lo HANGUL SYLLABLE JYEO
+C854 ; LV # Lo HANGUL SYLLABLE JYE
+C870 ; LV # Lo HANGUL SYLLABLE JO
+C88C ; LV # Lo HANGUL SYLLABLE JWA
+C8A8 ; LV # Lo HANGUL SYLLABLE JWAE
+C8C4 ; LV # Lo HANGUL SYLLABLE JOE
+C8E0 ; LV # Lo HANGUL SYLLABLE JYO
+C8FC ; LV # Lo HANGUL SYLLABLE JU
+C918 ; LV # Lo HANGUL SYLLABLE JWEO
+C934 ; LV # Lo HANGUL SYLLABLE JWE
+C950 ; LV # Lo HANGUL SYLLABLE JWI
+C96C ; LV # Lo HANGUL SYLLABLE JYU
+C988 ; LV # Lo HANGUL SYLLABLE JEU
+C9A4 ; LV # Lo HANGUL SYLLABLE JYI
+C9C0 ; LV # Lo HANGUL SYLLABLE JI
+C9DC ; LV # Lo HANGUL SYLLABLE JJA
+C9F8 ; LV # Lo HANGUL SYLLABLE JJAE
+CA14 ; LV # Lo HANGUL SYLLABLE JJYA
+CA30 ; LV # Lo HANGUL SYLLABLE JJYAE
+CA4C ; LV # Lo HANGUL SYLLABLE JJEO
+CA68 ; LV # Lo HANGUL SYLLABLE JJE
+CA84 ; LV # Lo HANGUL SYLLABLE JJYEO
+CAA0 ; LV # Lo HANGUL SYLLABLE JJYE
+CABC ; LV # Lo HANGUL SYLLABLE JJO
+CAD8 ; LV # Lo HANGUL SYLLABLE JJWA
+CAF4 ; LV # Lo HANGUL SYLLABLE JJWAE
+CB10 ; LV # Lo HANGUL SYLLABLE JJOE
+CB2C ; LV # Lo HANGUL SYLLABLE JJYO
+CB48 ; LV # Lo HANGUL SYLLABLE JJU
+CB64 ; LV # Lo HANGUL SYLLABLE JJWEO
+CB80 ; LV # Lo HANGUL SYLLABLE JJWE
+CB9C ; LV # Lo HANGUL SYLLABLE JJWI
+CBB8 ; LV # Lo HANGUL SYLLABLE JJYU
+CBD4 ; LV # Lo HANGUL SYLLABLE JJEU
+CBF0 ; LV # Lo HANGUL SYLLABLE JJYI
+CC0C ; LV # Lo HANGUL SYLLABLE JJI
+CC28 ; LV # Lo HANGUL SYLLABLE CA
+CC44 ; LV # Lo HANGUL SYLLABLE CAE
+CC60 ; LV # Lo HANGUL SYLLABLE CYA
+CC7C ; LV # Lo HANGUL SYLLABLE CYAE
+CC98 ; LV # Lo HANGUL SYLLABLE CEO
+CCB4 ; LV # Lo HANGUL SYLLABLE CE
+CCD0 ; LV # Lo HANGUL SYLLABLE CYEO
+CCEC ; LV # Lo HANGUL SYLLABLE CYE
+CD08 ; LV # Lo HANGUL SYLLABLE CO
+CD24 ; LV # Lo HANGUL SYLLABLE CWA
+CD40 ; LV # Lo HANGUL SYLLABLE CWAE
+CD5C ; LV # Lo HANGUL SYLLABLE COE
+CD78 ; LV # Lo HANGUL SYLLABLE CYO
+CD94 ; LV # Lo HANGUL SYLLABLE CU
+CDB0 ; LV # Lo HANGUL SYLLABLE CWEO
+CDCC ; LV # Lo HANGUL SYLLABLE CWE
+CDE8 ; LV # Lo HANGUL SYLLABLE CWI
+CE04 ; LV # Lo HANGUL SYLLABLE CYU
+CE20 ; LV # Lo HANGUL SYLLABLE CEU
+CE3C ; LV # Lo HANGUL SYLLABLE CYI
+CE58 ; LV # Lo HANGUL SYLLABLE CI
+CE74 ; LV # Lo HANGUL SYLLABLE KA
+CE90 ; LV # Lo HANGUL SYLLABLE KAE
+CEAC ; LV # Lo HANGUL SYLLABLE KYA
+CEC8 ; LV # Lo HANGUL SYLLABLE KYAE
+CEE4 ; LV # Lo HANGUL SYLLABLE KEO
+CF00 ; LV # Lo HANGUL SYLLABLE KE
+CF1C ; LV # Lo HANGUL SYLLABLE KYEO
+CF38 ; LV # Lo HANGUL SYLLABLE KYE
+CF54 ; LV # Lo HANGUL SYLLABLE KO
+CF70 ; LV # Lo HANGUL SYLLABLE KWA
+CF8C ; LV # Lo HANGUL SYLLABLE KWAE
+CFA8 ; LV # Lo HANGUL SYLLABLE KOE
+CFC4 ; LV # Lo HANGUL SYLLABLE KYO
+CFE0 ; LV # Lo HANGUL SYLLABLE KU
+CFFC ; LV # Lo HANGUL SYLLABLE KWEO
+D018 ; LV # Lo HANGUL SYLLABLE KWE
+D034 ; LV # Lo HANGUL SYLLABLE KWI
+D050 ; LV # Lo HANGUL SYLLABLE KYU
+D06C ; LV # Lo HANGUL SYLLABLE KEU
+D088 ; LV # Lo HANGUL SYLLABLE KYI
+D0A4 ; LV # Lo HANGUL SYLLABLE KI
+D0C0 ; LV # Lo HANGUL SYLLABLE TA
+D0DC ; LV # Lo HANGUL SYLLABLE TAE
+D0F8 ; LV # Lo HANGUL SYLLABLE TYA
+D114 ; LV # Lo HANGUL SYLLABLE TYAE
+D130 ; LV # Lo HANGUL SYLLABLE TEO
+D14C ; LV # Lo HANGUL SYLLABLE TE
+D168 ; LV # Lo HANGUL SYLLABLE TYEO
+D184 ; LV # Lo HANGUL SYLLABLE TYE
+D1A0 ; LV # Lo HANGUL SYLLABLE TO
+D1BC ; LV # Lo HANGUL SYLLABLE TWA
+D1D8 ; LV # Lo HANGUL SYLLABLE TWAE
+D1F4 ; LV # Lo HANGUL SYLLABLE TOE
+D210 ; LV # Lo HANGUL SYLLABLE TYO
+D22C ; LV # Lo HANGUL SYLLABLE TU
+D248 ; LV # Lo HANGUL SYLLABLE TWEO
+D264 ; LV # Lo HANGUL SYLLABLE TWE
+D280 ; LV # Lo HANGUL SYLLABLE TWI
+D29C ; LV # Lo HANGUL SYLLABLE TYU
+D2B8 ; LV # Lo HANGUL SYLLABLE TEU
+D2D4 ; LV # Lo HANGUL SYLLABLE TYI
+D2F0 ; LV # Lo HANGUL SYLLABLE TI
+D30C ; LV # Lo HANGUL SYLLABLE PA
+D328 ; LV # Lo HANGUL SYLLABLE PAE
+D344 ; LV # Lo HANGUL SYLLABLE PYA
+D360 ; LV # Lo HANGUL SYLLABLE PYAE
+D37C ; LV # Lo HANGUL SYLLABLE PEO
+D398 ; LV # Lo HANGUL SYLLABLE PE
+D3B4 ; LV # Lo HANGUL SYLLABLE PYEO
+D3D0 ; LV # Lo HANGUL SYLLABLE PYE
+D3EC ; LV # Lo HANGUL SYLLABLE PO
+D408 ; LV # Lo HANGUL SYLLABLE PWA
+D424 ; LV # Lo HANGUL SYLLABLE PWAE
+D440 ; LV # Lo HANGUL SYLLABLE POE
+D45C ; LV # Lo HANGUL SYLLABLE PYO
+D478 ; LV # Lo HANGUL SYLLABLE PU
+D494 ; LV # Lo HANGUL SYLLABLE PWEO
+D4B0 ; LV # Lo HANGUL SYLLABLE PWE
+D4CC ; LV # Lo HANGUL SYLLABLE PWI
+D4E8 ; LV # Lo HANGUL SYLLABLE PYU
+D504 ; LV # Lo HANGUL SYLLABLE PEU
+D520 ; LV # Lo HANGUL SYLLABLE PYI
+D53C ; LV # Lo HANGUL SYLLABLE PI
+D558 ; LV # Lo HANGUL SYLLABLE HA
+D574 ; LV # Lo HANGUL SYLLABLE HAE
+D590 ; LV # Lo HANGUL SYLLABLE HYA
+D5AC ; LV # Lo HANGUL SYLLABLE HYAE
+D5C8 ; LV # Lo HANGUL SYLLABLE HEO
+D5E4 ; LV # Lo HANGUL SYLLABLE HE
+D600 ; LV # Lo HANGUL SYLLABLE HYEO
+D61C ; LV # Lo HANGUL SYLLABLE HYE
+D638 ; LV # Lo HANGUL SYLLABLE HO
+D654 ; LV # Lo HANGUL SYLLABLE HWA
+D670 ; LV # Lo HANGUL SYLLABLE HWAE
+D68C ; LV # Lo HANGUL SYLLABLE HOE
+D6A8 ; LV # Lo HANGUL SYLLABLE HYO
+D6C4 ; LV # Lo HANGUL SYLLABLE HU
+D6E0 ; LV # Lo HANGUL SYLLABLE HWEO
+D6FC ; LV # Lo HANGUL SYLLABLE HWE
+D718 ; LV # Lo HANGUL SYLLABLE HWI
+D734 ; LV # Lo HANGUL SYLLABLE HYU
+D750 ; LV # Lo HANGUL SYLLABLE HEU
+D76C ; LV # Lo HANGUL SYLLABLE HYI
+D788 ; LV # Lo HANGUL SYLLABLE HI
+
+# Total code points: 399
+
+# ================================================
+
+AC01..AC1B ; LVT # Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
+AC1D..AC37 ; LVT # Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
+AC39..AC53 ; LVT # Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
+AC55..AC6F ; LVT # Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
+AC71..AC8B ; LVT # Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
+AC8D..ACA7 ; LVT # Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
+ACA9..ACC3 ; LVT # Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
+ACC5..ACDF ; LVT # Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
+ACE1..ACFB ; LVT # Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
+ACFD..AD17 ; LVT # Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
+AD19..AD33 ; LVT # Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
+AD35..AD4F ; LVT # Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
+AD51..AD6B ; LVT # Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
+AD6D..AD87 ; LVT # Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
+AD89..ADA3 ; LVT # Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
+ADA5..ADBF ; LVT # Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
+ADC1..ADDB ; LVT # Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
+ADDD..ADF7 ; LVT # Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
+ADF9..AE13 ; LVT # Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
+AE15..AE2F ; LVT # Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
+AE31..AE4B ; LVT # Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
+AE4D..AE67 ; LVT # Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
+AE69..AE83 ; LVT # Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
+AE85..AE9F ; LVT # Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
+AEA1..AEBB ; LVT # Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
+AEBD..AED7 ; LVT # Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
+AED9..AEF3 ; LVT # Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
+AEF5..AF0F ; LVT # Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
+AF11..AF2B ; LVT # Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
+AF2D..AF47 ; LVT # Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
+AF49..AF63 ; LVT # Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
+AF65..AF7F ; LVT # Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
+AF81..AF9B ; LVT # Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
+AF9D..AFB7 ; LVT # Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
+AFB9..AFD3 ; LVT # Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
+AFD5..AFEF ; LVT # Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
+AFF1..B00B ; LVT # Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
+B00D..B027 ; LVT # Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
+B029..B043 ; LVT # Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
+B045..B05F ; LVT # Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
+B061..B07B ; LVT # Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
+B07D..B097 ; LVT # Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
+B099..B0B3 ; LVT # Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
+B0B5..B0CF ; LVT # Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
+B0D1..B0EB ; LVT # Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
+B0ED..B107 ; LVT # Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
+B109..B123 ; LVT # Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
+B125..B13F ; LVT # Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
+B141..B15B ; LVT # Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
+B15D..B177 ; LVT # Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
+B179..B193 ; LVT # Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
+B195..B1AF ; LVT # Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
+B1B1..B1CB ; LVT # Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
+B1CD..B1E7 ; LVT # Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
+B1E9..B203 ; LVT # Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
+B205..B21F ; LVT # Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
+B221..B23B ; LVT # Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
+B23D..B257 ; LVT # Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
+B259..B273 ; LVT # Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
+B275..B28F ; LVT # Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
+B291..B2AB ; LVT # Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
+B2AD..B2C7 ; LVT # Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
+B2C9..B2E3 ; LVT # Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
+B2E5..B2FF ; LVT # Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
+B301..B31B ; LVT # Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
+B31D..B337 ; LVT # Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
+B339..B353 ; LVT # Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
+B355..B36F ; LVT # Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
+B371..B38B ; LVT # Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
+B38D..B3A7 ; LVT # Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
+B3A9..B3C3 ; LVT # Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
+B3C5..B3DF ; LVT # Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
+B3E1..B3FB ; LVT # Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
+B3FD..B417 ; LVT # Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
+B419..B433 ; LVT # Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
+B435..B44F ; LVT # Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
+B451..B46B ; LVT # Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
+B46D..B487 ; LVT # Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
+B489..B4A3 ; LVT # Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
+B4A5..B4BF ; LVT # Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
+B4C1..B4DB ; LVT # Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
+B4DD..B4F7 ; LVT # Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
+B4F9..B513 ; LVT # Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
+B515..B52F ; LVT # Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
+B531..B54B ; LVT # Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
+B54D..B567 ; LVT # Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
+B569..B583 ; LVT # Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
+B585..B59F ; LVT # Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
+B5A1..B5BB ; LVT # Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
+B5BD..B5D7 ; LVT # Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
+B5D9..B5F3 ; LVT # Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
+B5F5..B60F ; LVT # Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
+B611..B62B ; LVT # Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
+B62D..B647 ; LVT # Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
+B649..B663 ; LVT # Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
+B665..B67F ; LVT # Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
+B681..B69B ; LVT # Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
+B69D..B6B7 ; LVT # Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
+B6B9..B6D3 ; LVT # Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
+B6D5..B6EF ; LVT # Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
+B6F1..B70B ; LVT # Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
+B70D..B727 ; LVT # Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
+B729..B743 ; LVT # Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
+B745..B75F ; LVT # Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
+B761..B77B ; LVT # Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
+B77D..B797 ; LVT # Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
+B799..B7B3 ; LVT # Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
+B7B5..B7CF ; LVT # Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
+B7D1..B7EB ; LVT # Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
+B7ED..B807 ; LVT # Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
+B809..B823 ; LVT # Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
+B825..B83F ; LVT # Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
+B841..B85B ; LVT # Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
+B85D..B877 ; LVT # Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
+B879..B893 ; LVT # Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
+B895..B8AF ; LVT # Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
+B8B1..B8CB ; LVT # Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
+B8CD..B8E7 ; LVT # Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
+B8E9..B903 ; LVT # Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
+B905..B91F ; LVT # Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
+B921..B93B ; LVT # Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
+B93D..B957 ; LVT # Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
+B959..B973 ; LVT # Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
+B975..B98F ; LVT # Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
+B991..B9AB ; LVT # Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
+B9AD..B9C7 ; LVT # Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
+B9C9..B9E3 ; LVT # Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
+B9E5..B9FF ; LVT # Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
+BA01..BA1B ; LVT # Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
+BA1D..BA37 ; LVT # Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
+BA39..BA53 ; LVT # Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
+BA55..BA6F ; LVT # Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
+BA71..BA8B ; LVT # Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
+BA8D..BAA7 ; LVT # Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
+BAA9..BAC3 ; LVT # Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
+BAC5..BADF ; LVT # Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
+BAE1..BAFB ; LVT # Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
+BAFD..BB17 ; LVT # Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
+BB19..BB33 ; LVT # Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
+BB35..BB4F ; LVT # Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
+BB51..BB6B ; LVT # Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
+BB6D..BB87 ; LVT # Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
+BB89..BBA3 ; LVT # Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
+BBA5..BBBF ; LVT # Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
+BBC1..BBDB ; LVT # Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
+BBDD..BBF7 ; LVT # Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
+BBF9..BC13 ; LVT # Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
+BC15..BC2F ; LVT # Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
+BC31..BC4B ; LVT # Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
+BC4D..BC67 ; LVT # Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
+BC69..BC83 ; LVT # Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
+BC85..BC9F ; LVT # Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
+BCA1..BCBB ; LVT # Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
+BCBD..BCD7 ; LVT # Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
+BCD9..BCF3 ; LVT # Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
+BCF5..BD0F ; LVT # Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
+BD11..BD2B ; LVT # Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
+BD2D..BD47 ; LVT # Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
+BD49..BD63 ; LVT # Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
+BD65..BD7F ; LVT # Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
+BD81..BD9B ; LVT # Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
+BD9D..BDB7 ; LVT # Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
+BDB9..BDD3 ; LVT # Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
+BDD5..BDEF ; LVT # Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
+BDF1..BE0B ; LVT # Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
+BE0D..BE27 ; LVT # Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
+BE29..BE43 ; LVT # Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
+BE45..BE5F ; LVT # Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
+BE61..BE7B ; LVT # Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
+BE7D..BE97 ; LVT # Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
+BE99..BEB3 ; LVT # Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
+BEB5..BECF ; LVT # Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
+BED1..BEEB ; LVT # Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
+BEED..BF07 ; LVT # Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
+BF09..BF23 ; LVT # Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
+BF25..BF3F ; LVT # Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
+BF41..BF5B ; LVT # Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
+BF5D..BF77 ; LVT # Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
+BF79..BF93 ; LVT # Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
+BF95..BFAF ; LVT # Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
+BFB1..BFCB ; LVT # Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
+BFCD..BFE7 ; LVT # Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
+BFE9..C003 ; LVT # Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
+C005..C01F ; LVT # Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
+C021..C03B ; LVT # Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
+C03D..C057 ; LVT # Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
+C059..C073 ; LVT # Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
+C075..C08F ; LVT # Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
+C091..C0AB ; LVT # Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
+C0AD..C0C7 ; LVT # Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
+C0C9..C0E3 ; LVT # Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
+C0E5..C0FF ; LVT # Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
+C101..C11B ; LVT # Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
+C11D..C137 ; LVT # Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
+C139..C153 ; LVT # Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
+C155..C16F ; LVT # Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
+C171..C18B ; LVT # Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
+C18D..C1A7 ; LVT # Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
+C1A9..C1C3 ; LVT # Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
+C1C5..C1DF ; LVT # Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
+C1E1..C1FB ; LVT # Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
+C1FD..C217 ; LVT # Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
+C219..C233 ; LVT # Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
+C235..C24F ; LVT # Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
+C251..C26B ; LVT # Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
+C26D..C287 ; LVT # Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
+C289..C2A3 ; LVT # Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
+C2A5..C2BF ; LVT # Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
+C2C1..C2DB ; LVT # Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
+C2DD..C2F7 ; LVT # Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
+C2F9..C313 ; LVT # Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
+C315..C32F ; LVT # Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
+C331..C34B ; LVT # Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
+C34D..C367 ; LVT # Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
+C369..C383 ; LVT # Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
+C385..C39F ; LVT # Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
+C3A1..C3BB ; LVT # Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
+C3BD..C3D7 ; LVT # Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
+C3D9..C3F3 ; LVT # Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
+C3F5..C40F ; LVT # Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
+C411..C42B ; LVT # Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
+C42D..C447 ; LVT # Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
+C449..C463 ; LVT # Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
+C465..C47F ; LVT # Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
+C481..C49B ; LVT # Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
+C49D..C4B7 ; LVT # Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
+C4B9..C4D3 ; LVT # Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
+C4D5..C4EF ; LVT # Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
+C4F1..C50B ; LVT # Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
+C50D..C527 ; LVT # Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
+C529..C543 ; LVT # Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
+C545..C55F ; LVT # Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
+C561..C57B ; LVT # Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
+C57D..C597 ; LVT # Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
+C599..C5B3 ; LVT # Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
+C5B5..C5CF ; LVT # Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
+C5D1..C5EB ; LVT # Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
+C5ED..C607 ; LVT # Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
+C609..C623 ; LVT # Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
+C625..C63F ; LVT # Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
+C641..C65B ; LVT # Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
+C65D..C677 ; LVT # Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
+C679..C693 ; LVT # Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
+C695..C6AF ; LVT # Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
+C6B1..C6CB ; LVT # Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
+C6CD..C6E7 ; LVT # Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
+C6E9..C703 ; LVT # Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
+C705..C71F ; LVT # Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
+C721..C73B ; LVT # Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
+C73D..C757 ; LVT # Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
+C759..C773 ; LVT # Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
+C775..C78F ; LVT # Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
+C791..C7AB ; LVT # Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
+C7AD..C7C7 ; LVT # Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
+C7C9..C7E3 ; LVT # Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
+C7E5..C7FF ; LVT # Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
+C801..C81B ; LVT # Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
+C81D..C837 ; LVT # Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
+C839..C853 ; LVT # Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
+C855..C86F ; LVT # Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
+C871..C88B ; LVT # Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
+C88D..C8A7 ; LVT # Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
+C8A9..C8C3 ; LVT # Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
+C8C5..C8DF ; LVT # Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
+C8E1..C8FB ; LVT # Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
+C8FD..C917 ; LVT # Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
+C919..C933 ; LVT # Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
+C935..C94F ; LVT # Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
+C951..C96B ; LVT # Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
+C96D..C987 ; LVT # Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
+C989..C9A3 ; LVT # Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
+C9A5..C9BF ; LVT # Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
+C9C1..C9DB ; LVT # Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
+C9DD..C9F7 ; LVT # Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
+C9F9..CA13 ; LVT # Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
+CA15..CA2F ; LVT # Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
+CA31..CA4B ; LVT # Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
+CA4D..CA67 ; LVT # Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
+CA69..CA83 ; LVT # Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
+CA85..CA9F ; LVT # Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
+CAA1..CABB ; LVT # Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
+CABD..CAD7 ; LVT # Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
+CAD9..CAF3 ; LVT # Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
+CAF5..CB0F ; LVT # Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
+CB11..CB2B ; LVT # Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
+CB2D..CB47 ; LVT # Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
+CB49..CB63 ; LVT # Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
+CB65..CB7F ; LVT # Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
+CB81..CB9B ; LVT # Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
+CB9D..CBB7 ; LVT # Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
+CBB9..CBD3 ; LVT # Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
+CBD5..CBEF ; LVT # Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
+CBF1..CC0B ; LVT # Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
+CC0D..CC27 ; LVT # Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
+CC29..CC43 ; LVT # Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
+CC45..CC5F ; LVT # Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
+CC61..CC7B ; LVT # Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
+CC7D..CC97 ; LVT # Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
+CC99..CCB3 ; LVT # Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
+CCB5..CCCF ; LVT # Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
+CCD1..CCEB ; LVT # Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
+CCED..CD07 ; LVT # Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
+CD09..CD23 ; LVT # Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
+CD25..CD3F ; LVT # Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
+CD41..CD5B ; LVT # Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
+CD5D..CD77 ; LVT # Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
+CD79..CD93 ; LVT # Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
+CD95..CDAF ; LVT # Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
+CDB1..CDCB ; LVT # Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
+CDCD..CDE7 ; LVT # Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
+CDE9..CE03 ; LVT # Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
+CE05..CE1F ; LVT # Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
+CE21..CE3B ; LVT # Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
+CE3D..CE57 ; LVT # Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
+CE59..CE73 ; LVT # Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
+CE75..CE8F ; LVT # Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
+CE91..CEAB ; LVT # Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
+CEAD..CEC7 ; LVT # Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
+CEC9..CEE3 ; LVT # Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
+CEE5..CEFF ; LVT # Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
+CF01..CF1B ; LVT # Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
+CF1D..CF37 ; LVT # Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
+CF39..CF53 ; LVT # Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
+CF55..CF6F ; LVT # Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
+CF71..CF8B ; LVT # Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
+CF8D..CFA7 ; LVT # Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
+CFA9..CFC3 ; LVT # Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
+CFC5..CFDF ; LVT # Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
+CFE1..CFFB ; LVT # Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
+CFFD..D017 ; LVT # Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
+D019..D033 ; LVT # Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
+D035..D04F ; LVT # Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
+D051..D06B ; LVT # Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
+D06D..D087 ; LVT # Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
+D089..D0A3 ; LVT # Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
+D0A5..D0BF ; LVT # Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
+D0C1..D0DB ; LVT # Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
+D0DD..D0F7 ; LVT # Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
+D0F9..D113 ; LVT # Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
+D115..D12F ; LVT # Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
+D131..D14B ; LVT # Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
+D14D..D167 ; LVT # Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
+D169..D183 ; LVT # Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
+D185..D19F ; LVT # Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
+D1A1..D1BB ; LVT # Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
+D1BD..D1D7 ; LVT # Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
+D1D9..D1F3 ; LVT # Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
+D1F5..D20F ; LVT # Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
+D211..D22B ; LVT # Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
+D22D..D247 ; LVT # Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
+D249..D263 ; LVT # Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
+D265..D27F ; LVT # Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
+D281..D29B ; LVT # Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
+D29D..D2B7 ; LVT # Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
+D2B9..D2D3 ; LVT # Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
+D2D5..D2EF ; LVT # Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
+D2F1..D30B ; LVT # Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
+D30D..D327 ; LVT # Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
+D329..D343 ; LVT # Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
+D345..D35F ; LVT # Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
+D361..D37B ; LVT # Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
+D37D..D397 ; LVT # Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
+D399..D3B3 ; LVT # Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
+D3B5..D3CF ; LVT # Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
+D3D1..D3EB ; LVT # Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
+D3ED..D407 ; LVT # Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
+D409..D423 ; LVT # Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
+D425..D43F ; LVT # Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
+D441..D45B ; LVT # Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
+D45D..D477 ; LVT # Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
+D479..D493 ; LVT # Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
+D495..D4AF ; LVT # Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
+D4B1..D4CB ; LVT # Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
+D4CD..D4E7 ; LVT # Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
+D4E9..D503 ; LVT # Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
+D505..D51F ; LVT # Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
+D521..D53B ; LVT # Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
+D53D..D557 ; LVT # Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
+D559..D573 ; LVT # Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
+D575..D58F ; LVT # Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
+D591..D5AB ; LVT # Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
+D5AD..D5C7 ; LVT # Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
+D5C9..D5E3 ; LVT # Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
+D5E5..D5FF ; LVT # Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
+D601..D61B ; LVT # Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
+D61D..D637 ; LVT # Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
+D639..D653 ; LVT # Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
+D655..D66F ; LVT # Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
+D671..D68B ; LVT # Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
+D68D..D6A7 ; LVT # Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
+D6A9..D6C3 ; LVT # Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
+D6C5..D6DF ; LVT # Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
+D6E1..D6FB ; LVT # Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
+D6FD..D717 ; LVT # Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
+D719..D733 ; LVT # Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
+D735..D74F ; LVT # Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
+D751..D76B ; LVT # Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
+D76D..D787 ; LVT # Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
+D789..D7A3 ; LVT # Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
+
+# Total code points: 10773
+
+# EOF
diff --git a/util/unicode/data/LineBreak.txt b/util/unicode/data/LineBreak.txt
new file mode 100644
index 0000000000..2b75e4829f
--- /dev/null
+++ b/util/unicode/data/LineBreak.txt
@@ -0,0 +1,18542 @@
+# LineBreak-5.0.0.txt
+# Date: 2006-05-23, 11:43:00 PST [KW]
+#
+# Line Break Properties
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+# It contains both normative and informative data.
+#
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# The format is two fields separated by a semicolon.
+# Field 0: Unicode value
+# Field 1: LineBreak property, consisting of one of the following values:
+# Normative:
+# "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW",
+# "NL", "WJ", "JL", "JV", "JT", "H2", "H3"
+# Informative:
+# "XX", "OP", "CL", "QU", "NS", "EX", "SY",
+# "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY",
+# "BB", "BA", "SA", "AI", "B2"
+# - All code points, assigned and unassigned, that are not listed
+# explicitly are given the value "XX".
+# - Characters ranges are specified as for other property files in
+# the Unicode Character Database.
+#
+# The Unicode name of each character is provided in a comment for help
+# in identifying the characters.
+#
+# See UAX #14: Line Breaking Properties, for more information
+#
+# @missing: 0000..10FFFF; XX
+0000;CM # <control>
+0001;CM # <control>
+0002;CM # <control>
+0003;CM # <control>
+0004;CM # <control>
+0005;CM # <control>
+0006;CM # <control>
+0007;CM # <control>
+0008;CM # <control>
+0009;BA # <control>
+000A;LF # <control>
+000B;BK # <control>
+000C;BK # <control>
+000D;CR # <control>
+000E;CM # <control>
+000F;CM # <control>
+0010;CM # <control>
+0011;CM # <control>
+0012;CM # <control>
+0013;CM # <control>
+0014;CM # <control>
+0015;CM # <control>
+0016;CM # <control>
+0017;CM # <control>
+0018;CM # <control>
+0019;CM # <control>
+001A;CM # <control>
+001B;CM # <control>
+001C;CM # <control>
+001D;CM # <control>
+001E;CM # <control>
+001F;CM # <control>
+0020;SP # SPACE
+0021;EX # EXCLAMATION MARK
+0022;QU # QUOTATION MARK
+0023;AL # NUMBER SIGN
+0024;PR # DOLLAR SIGN
+0025;PO # PERCENT SIGN
+0026;AL # AMPERSAND
+0027;QU # APOSTROPHE
+0028;OP # LEFT PARENTHESIS
+0029;CL # RIGHT PARENTHESIS
+002A;AL # ASTERISK
+002B;PR # PLUS SIGN
+002C;IS # COMMA
+002D;HY # HYPHEN-MINUS
+002E;IS # FULL STOP
+002F;SY # SOLIDUS
+0030;NU # DIGIT ZERO
+0031;NU # DIGIT ONE
+0032;NU # DIGIT TWO
+0033;NU # DIGIT THREE
+0034;NU # DIGIT FOUR
+0035;NU # DIGIT FIVE
+0036;NU # DIGIT SIX
+0037;NU # DIGIT SEVEN
+0038;NU # DIGIT EIGHT
+0039;NU # DIGIT NINE
+003A;IS # COLON
+003B;IS # SEMICOLON
+003C;AL # LESS-THAN SIGN
+003D;AL # EQUALS SIGN
+003E;AL # GREATER-THAN SIGN
+003F;EX # QUESTION MARK
+0040;AL # COMMERCIAL AT
+0041;AL # LATIN CAPITAL LETTER A
+0042;AL # LATIN CAPITAL LETTER B
+0043;AL # LATIN CAPITAL LETTER C
+0044;AL # LATIN CAPITAL LETTER D
+0045;AL # LATIN CAPITAL LETTER E
+0046;AL # LATIN CAPITAL LETTER F
+0047;AL # LATIN CAPITAL LETTER G
+0048;AL # LATIN CAPITAL LETTER H
+0049;AL # LATIN CAPITAL LETTER I
+004A;AL # LATIN CAPITAL LETTER J
+004B;AL # LATIN CAPITAL LETTER K
+004C;AL # LATIN CAPITAL LETTER L
+004D;AL # LATIN CAPITAL LETTER M
+004E;AL # LATIN CAPITAL LETTER N
+004F;AL # LATIN CAPITAL LETTER O
+0050;AL # LATIN CAPITAL LETTER P
+0051;AL # LATIN CAPITAL LETTER Q
+0052;AL # LATIN CAPITAL LETTER R
+0053;AL # LATIN CAPITAL LETTER S
+0054;AL # LATIN CAPITAL LETTER T
+0055;AL # LATIN CAPITAL LETTER U
+0056;AL # LATIN CAPITAL LETTER V
+0057;AL # LATIN CAPITAL LETTER W
+0058;AL # LATIN CAPITAL LETTER X
+0059;AL # LATIN CAPITAL LETTER Y
+005A;AL # LATIN CAPITAL LETTER Z
+005B;OP # LEFT SQUARE BRACKET
+005C;PR # REVERSE SOLIDUS
+005D;CL # RIGHT SQUARE BRACKET
+005E;AL # CIRCUMFLEX ACCENT
+005F;AL # LOW LINE
+0060;AL # GRAVE ACCENT
+0061;AL # LATIN SMALL LETTER A
+0062;AL # LATIN SMALL LETTER B
+0063;AL # LATIN SMALL LETTER C
+0064;AL # LATIN SMALL LETTER D
+0065;AL # LATIN SMALL LETTER E
+0066;AL # LATIN SMALL LETTER F
+0067;AL # LATIN SMALL LETTER G
+0068;AL # LATIN SMALL LETTER H
+0069;AL # LATIN SMALL LETTER I
+006A;AL # LATIN SMALL LETTER J
+006B;AL # LATIN SMALL LETTER K
+006C;AL # LATIN SMALL LETTER L
+006D;AL # LATIN SMALL LETTER M
+006E;AL # LATIN SMALL LETTER N
+006F;AL # LATIN SMALL LETTER O
+0070;AL # LATIN SMALL LETTER P
+0071;AL # LATIN SMALL LETTER Q
+0072;AL # LATIN SMALL LETTER R
+0073;AL # LATIN SMALL LETTER S
+0074;AL # LATIN SMALL LETTER T
+0075;AL # LATIN SMALL LETTER U
+0076;AL # LATIN SMALL LETTER V
+0077;AL # LATIN SMALL LETTER W
+0078;AL # LATIN SMALL LETTER X
+0079;AL # LATIN SMALL LETTER Y
+007A;AL # LATIN SMALL LETTER Z
+007B;OP # LEFT CURLY BRACKET
+007C;BA # VERTICAL LINE
+007D;CL # RIGHT CURLY BRACKET
+007E;AL # TILDE
+007F;CM # <control>
+0080;CM # <control>
+0081;CM # <control>
+0082;CM # <control>
+0083;CM # <control>
+0084;CM # <control>
+0085;NL # <control>
+0086;CM # <control>
+0087;CM # <control>
+0088;CM # <control>
+0089;CM # <control>
+008A;CM # <control>
+008B;CM # <control>
+008C;CM # <control>
+008D;CM # <control>
+008E;CM # <control>
+008F;CM # <control>
+0090;CM # <control>
+0091;CM # <control>
+0092;CM # <control>
+0093;CM # <control>
+0094;CM # <control>
+0095;CM # <control>
+0096;CM # <control>
+0097;CM # <control>
+0098;CM # <control>
+0099;CM # <control>
+009A;CM # <control>
+009B;CM # <control>
+009C;CM # <control>
+009D;CM # <control>
+009E;CM # <control>
+009F;CM # <control>
+00A0;GL # NO-BREAK SPACE
+00A1;AI # INVERTED EXCLAMATION MARK
+00A2;PO # CENT SIGN
+00A3;PR # POUND SIGN
+00A4;PR # CURRENCY SIGN
+00A5;PR # YEN SIGN
+00A6;AL # BROKEN BAR
+00A7;AI # SECTION SIGN
+00A8;AI # DIAERESIS
+00A9;AL # COPYRIGHT SIGN
+00AA;AI # FEMININE ORDINAL INDICATOR
+00AB;QU # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC;AL # NOT SIGN
+00AD;BA # SOFT HYPHEN
+00AE;AL # REGISTERED SIGN
+00AF;AL # MACRON
+00B0;PO # DEGREE SIGN
+00B1;PR # PLUS-MINUS SIGN
+00B2;AI # SUPERSCRIPT TWO
+00B3;AI # SUPERSCRIPT THREE
+00B4;BB # ACUTE ACCENT
+00B5;AL # MICRO SIGN
+00B6;AI # PILCROW SIGN
+00B7;AI # MIDDLE DOT
+00B8;AI # CEDILLA
+00B9;AI # SUPERSCRIPT ONE
+00BA;AI # MASCULINE ORDINAL INDICATOR
+00BB;QU # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC;AI # VULGAR FRACTION ONE QUARTER
+00BD;AI # VULGAR FRACTION ONE HALF
+00BE;AI # VULGAR FRACTION THREE QUARTERS
+00BF;AI # INVERTED QUESTION MARK
+00C0;AL # LATIN CAPITAL LETTER A WITH GRAVE
+00C1;AL # LATIN CAPITAL LETTER A WITH ACUTE
+00C2;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00C3;AL # LATIN CAPITAL LETTER A WITH TILDE
+00C4;AL # LATIN CAPITAL LETTER A WITH DIAERESIS
+00C5;AL # LATIN CAPITAL LETTER A WITH RING ABOVE
+00C6;AL # LATIN CAPITAL LETTER AE
+00C7;AL # LATIN CAPITAL LETTER C WITH CEDILLA
+00C8;AL # LATIN CAPITAL LETTER E WITH GRAVE
+00C9;AL # LATIN CAPITAL LETTER E WITH ACUTE
+00CA;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00CB;AL # LATIN CAPITAL LETTER E WITH DIAERESIS
+00CC;AL # LATIN CAPITAL LETTER I WITH GRAVE
+00CD;AL # LATIN CAPITAL LETTER I WITH ACUTE
+00CE;AL # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00CF;AL # LATIN CAPITAL LETTER I WITH DIAERESIS
+00D0;AL # LATIN CAPITAL LETTER ETH
+00D1;AL # LATIN CAPITAL LETTER N WITH TILDE
+00D2;AL # LATIN CAPITAL LETTER O WITH GRAVE
+00D3;AL # LATIN CAPITAL LETTER O WITH ACUTE
+00D4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00D5;AL # LATIN CAPITAL LETTER O WITH TILDE
+00D6;AL # LATIN CAPITAL LETTER O WITH DIAERESIS
+00D7;AI # MULTIPLICATION SIGN
+00D8;AL # LATIN CAPITAL LETTER O WITH STROKE
+00D9;AL # LATIN CAPITAL LETTER U WITH GRAVE
+00DA;AL # LATIN CAPITAL LETTER U WITH ACUTE
+00DB;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+00DC;AL # LATIN CAPITAL LETTER U WITH DIAERESIS
+00DD;AL # LATIN CAPITAL LETTER Y WITH ACUTE
+00DE;AL # LATIN CAPITAL LETTER THORN
+00DF;AL # LATIN SMALL LETTER SHARP S
+00E0;AL # LATIN SMALL LETTER A WITH GRAVE
+00E1;AL # LATIN SMALL LETTER A WITH ACUTE
+00E2;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00E3;AL # LATIN SMALL LETTER A WITH TILDE
+00E4;AL # LATIN SMALL LETTER A WITH DIAERESIS
+00E5;AL # LATIN SMALL LETTER A WITH RING ABOVE
+00E6;AL # LATIN SMALL LETTER AE
+00E7;AL # LATIN SMALL LETTER C WITH CEDILLA
+00E8;AL # LATIN SMALL LETTER E WITH GRAVE
+00E9;AL # LATIN SMALL LETTER E WITH ACUTE
+00EA;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00EB;AL # LATIN SMALL LETTER E WITH DIAERESIS
+00EC;AL # LATIN SMALL LETTER I WITH GRAVE
+00ED;AL # LATIN SMALL LETTER I WITH ACUTE
+00EE;AL # LATIN SMALL LETTER I WITH CIRCUMFLEX
+00EF;AL # LATIN SMALL LETTER I WITH DIAERESIS
+00F0;AL # LATIN SMALL LETTER ETH
+00F1;AL # LATIN SMALL LETTER N WITH TILDE
+00F2;AL # LATIN SMALL LETTER O WITH GRAVE
+00F3;AL # LATIN SMALL LETTER O WITH ACUTE
+00F4;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00F5;AL # LATIN SMALL LETTER O WITH TILDE
+00F6;AL # LATIN SMALL LETTER O WITH DIAERESIS
+00F7;AI # DIVISION SIGN
+00F8;AL # LATIN SMALL LETTER O WITH STROKE
+00F9;AL # LATIN SMALL LETTER U WITH GRAVE
+00FA;AL # LATIN SMALL LETTER U WITH ACUTE
+00FB;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX
+00FC;AL # LATIN SMALL LETTER U WITH DIAERESIS
+00FD;AL # LATIN SMALL LETTER Y WITH ACUTE
+00FE;AL # LATIN SMALL LETTER THORN
+00FF;AL # LATIN SMALL LETTER Y WITH DIAERESIS
+0100;AL # LATIN CAPITAL LETTER A WITH MACRON
+0101;AL # LATIN SMALL LETTER A WITH MACRON
+0102;AL # LATIN CAPITAL LETTER A WITH BREVE
+0103;AL # LATIN SMALL LETTER A WITH BREVE
+0104;AL # LATIN CAPITAL LETTER A WITH OGONEK
+0105;AL # LATIN SMALL LETTER A WITH OGONEK
+0106;AL # LATIN CAPITAL LETTER C WITH ACUTE
+0107;AL # LATIN SMALL LETTER C WITH ACUTE
+0108;AL # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+0109;AL # LATIN SMALL LETTER C WITH CIRCUMFLEX
+010A;AL # LATIN CAPITAL LETTER C WITH DOT ABOVE
+010B;AL # LATIN SMALL LETTER C WITH DOT ABOVE
+010C;AL # LATIN CAPITAL LETTER C WITH CARON
+010D;AL # LATIN SMALL LETTER C WITH CARON
+010E;AL # LATIN CAPITAL LETTER D WITH CARON
+010F;AL # LATIN SMALL LETTER D WITH CARON
+0110;AL # LATIN CAPITAL LETTER D WITH STROKE
+0111;AL # LATIN SMALL LETTER D WITH STROKE
+0112;AL # LATIN CAPITAL LETTER E WITH MACRON
+0113;AL # LATIN SMALL LETTER E WITH MACRON
+0114;AL # LATIN CAPITAL LETTER E WITH BREVE
+0115;AL # LATIN SMALL LETTER E WITH BREVE
+0116;AL # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0117;AL # LATIN SMALL LETTER E WITH DOT ABOVE
+0118;AL # LATIN CAPITAL LETTER E WITH OGONEK
+0119;AL # LATIN SMALL LETTER E WITH OGONEK
+011A;AL # LATIN CAPITAL LETTER E WITH CARON
+011B;AL # LATIN SMALL LETTER E WITH CARON
+011C;AL # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011D;AL # LATIN SMALL LETTER G WITH CIRCUMFLEX
+011E;AL # LATIN CAPITAL LETTER G WITH BREVE
+011F;AL # LATIN SMALL LETTER G WITH BREVE
+0120;AL # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0121;AL # LATIN SMALL LETTER G WITH DOT ABOVE
+0122;AL # LATIN CAPITAL LETTER G WITH CEDILLA
+0123;AL # LATIN SMALL LETTER G WITH CEDILLA
+0124;AL # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0125;AL # LATIN SMALL LETTER H WITH CIRCUMFLEX
+0126;AL # LATIN CAPITAL LETTER H WITH STROKE
+0127;AL # LATIN SMALL LETTER H WITH STROKE
+0128;AL # LATIN CAPITAL LETTER I WITH TILDE
+0129;AL # LATIN SMALL LETTER I WITH TILDE
+012A;AL # LATIN CAPITAL LETTER I WITH MACRON
+012B;AL # LATIN SMALL LETTER I WITH MACRON
+012C;AL # LATIN CAPITAL LETTER I WITH BREVE
+012D;AL # LATIN SMALL LETTER I WITH BREVE
+012E;AL # LATIN CAPITAL LETTER I WITH OGONEK
+012F;AL # LATIN SMALL LETTER I WITH OGONEK
+0130;AL # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0131;AL # LATIN SMALL LETTER DOTLESS I
+0132;AL # LATIN CAPITAL LIGATURE IJ
+0133;AL # LATIN SMALL LIGATURE IJ
+0134;AL # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0135;AL # LATIN SMALL LETTER J WITH CIRCUMFLEX
+0136;AL # LATIN CAPITAL LETTER K WITH CEDILLA
+0137;AL # LATIN SMALL LETTER K WITH CEDILLA
+0138;AL # LATIN SMALL LETTER KRA
+0139;AL # LATIN CAPITAL LETTER L WITH ACUTE
+013A;AL # LATIN SMALL LETTER L WITH ACUTE
+013B;AL # LATIN CAPITAL LETTER L WITH CEDILLA
+013C;AL # LATIN SMALL LETTER L WITH CEDILLA
+013D;AL # LATIN CAPITAL LETTER L WITH CARON
+013E;AL # LATIN SMALL LETTER L WITH CARON
+013F;AL # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0140;AL # LATIN SMALL LETTER L WITH MIDDLE DOT
+0141;AL # LATIN CAPITAL LETTER L WITH STROKE
+0142;AL # LATIN SMALL LETTER L WITH STROKE
+0143;AL # LATIN CAPITAL LETTER N WITH ACUTE
+0144;AL # LATIN SMALL LETTER N WITH ACUTE
+0145;AL # LATIN CAPITAL LETTER N WITH CEDILLA
+0146;AL # LATIN SMALL LETTER N WITH CEDILLA
+0147;AL # LATIN CAPITAL LETTER N WITH CARON
+0148;AL # LATIN SMALL LETTER N WITH CARON
+0149;AL # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014A;AL # LATIN CAPITAL LETTER ENG
+014B;AL # LATIN SMALL LETTER ENG
+014C;AL # LATIN CAPITAL LETTER O WITH MACRON
+014D;AL # LATIN SMALL LETTER O WITH MACRON
+014E;AL # LATIN CAPITAL LETTER O WITH BREVE
+014F;AL # LATIN SMALL LETTER O WITH BREVE
+0150;AL # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0151;AL # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0152;AL # LATIN CAPITAL LIGATURE OE
+0153;AL # LATIN SMALL LIGATURE OE
+0154;AL # LATIN CAPITAL LETTER R WITH ACUTE
+0155;AL # LATIN SMALL LETTER R WITH ACUTE
+0156;AL # LATIN CAPITAL LETTER R WITH CEDILLA
+0157;AL # LATIN SMALL LETTER R WITH CEDILLA
+0158;AL # LATIN CAPITAL LETTER R WITH CARON
+0159;AL # LATIN SMALL LETTER R WITH CARON
+015A;AL # LATIN CAPITAL LETTER S WITH ACUTE
+015B;AL # LATIN SMALL LETTER S WITH ACUTE
+015C;AL # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015D;AL # LATIN SMALL LETTER S WITH CIRCUMFLEX
+015E;AL # LATIN CAPITAL LETTER S WITH CEDILLA
+015F;AL # LATIN SMALL LETTER S WITH CEDILLA
+0160;AL # LATIN CAPITAL LETTER S WITH CARON
+0161;AL # LATIN SMALL LETTER S WITH CARON
+0162;AL # LATIN CAPITAL LETTER T WITH CEDILLA
+0163;AL # LATIN SMALL LETTER T WITH CEDILLA
+0164;AL # LATIN CAPITAL LETTER T WITH CARON
+0165;AL # LATIN SMALL LETTER T WITH CARON
+0166;AL # LATIN CAPITAL LETTER T WITH STROKE
+0167;AL # LATIN SMALL LETTER T WITH STROKE
+0168;AL # LATIN CAPITAL LETTER U WITH TILDE
+0169;AL # LATIN SMALL LETTER U WITH TILDE
+016A;AL # LATIN CAPITAL LETTER U WITH MACRON
+016B;AL # LATIN SMALL LETTER U WITH MACRON
+016C;AL # LATIN CAPITAL LETTER U WITH BREVE
+016D;AL # LATIN SMALL LETTER U WITH BREVE
+016E;AL # LATIN CAPITAL LETTER U WITH RING ABOVE
+016F;AL # LATIN SMALL LETTER U WITH RING ABOVE
+0170;AL # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0171;AL # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0172;AL # LATIN CAPITAL LETTER U WITH OGONEK
+0173;AL # LATIN SMALL LETTER U WITH OGONEK
+0174;AL # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0175;AL # LATIN SMALL LETTER W WITH CIRCUMFLEX
+0176;AL # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0177;AL # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0178;AL # LATIN CAPITAL LETTER Y WITH DIAERESIS
+0179;AL # LATIN CAPITAL LETTER Z WITH ACUTE
+017A;AL # LATIN SMALL LETTER Z WITH ACUTE
+017B;AL # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017C;AL # LATIN SMALL LETTER Z WITH DOT ABOVE
+017D;AL # LATIN CAPITAL LETTER Z WITH CARON
+017E;AL # LATIN SMALL LETTER Z WITH CARON
+017F;AL # LATIN SMALL LETTER LONG S
+0180;AL # LATIN SMALL LETTER B WITH STROKE
+0181;AL # LATIN CAPITAL LETTER B WITH HOOK
+0182;AL # LATIN CAPITAL LETTER B WITH TOPBAR
+0183;AL # LATIN SMALL LETTER B WITH TOPBAR
+0184;AL # LATIN CAPITAL LETTER TONE SIX
+0185;AL # LATIN SMALL LETTER TONE SIX
+0186;AL # LATIN CAPITAL LETTER OPEN O
+0187;AL # LATIN CAPITAL LETTER C WITH HOOK
+0188;AL # LATIN SMALL LETTER C WITH HOOK
+0189;AL # LATIN CAPITAL LETTER AFRICAN D
+018A;AL # LATIN CAPITAL LETTER D WITH HOOK
+018B;AL # LATIN CAPITAL LETTER D WITH TOPBAR
+018C;AL # LATIN SMALL LETTER D WITH TOPBAR
+018D;AL # LATIN SMALL LETTER TURNED DELTA
+018E;AL # LATIN CAPITAL LETTER REVERSED E
+018F;AL # LATIN CAPITAL LETTER SCHWA
+0190;AL # LATIN CAPITAL LETTER OPEN E
+0191;AL # LATIN CAPITAL LETTER F WITH HOOK
+0192;AL # LATIN SMALL LETTER F WITH HOOK
+0193;AL # LATIN CAPITAL LETTER G WITH HOOK
+0194;AL # LATIN CAPITAL LETTER GAMMA
+0195;AL # LATIN SMALL LETTER HV
+0196;AL # LATIN CAPITAL LETTER IOTA
+0197;AL # LATIN CAPITAL LETTER I WITH STROKE
+0198;AL # LATIN CAPITAL LETTER K WITH HOOK
+0199;AL # LATIN SMALL LETTER K WITH HOOK
+019A;AL # LATIN SMALL LETTER L WITH BAR
+019B;AL # LATIN SMALL LETTER LAMBDA WITH STROKE
+019C;AL # LATIN CAPITAL LETTER TURNED M
+019D;AL # LATIN CAPITAL LETTER N WITH LEFT HOOK
+019E;AL # LATIN SMALL LETTER N WITH LONG RIGHT LEG
+019F;AL # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+01A0;AL # LATIN CAPITAL LETTER O WITH HORN
+01A1;AL # LATIN SMALL LETTER O WITH HORN
+01A2;AL # LATIN CAPITAL LETTER OI
+01A3;AL # LATIN SMALL LETTER OI
+01A4;AL # LATIN CAPITAL LETTER P WITH HOOK
+01A5;AL # LATIN SMALL LETTER P WITH HOOK
+01A6;AL # LATIN LETTER YR
+01A7;AL # LATIN CAPITAL LETTER TONE TWO
+01A8;AL # LATIN SMALL LETTER TONE TWO
+01A9;AL # LATIN CAPITAL LETTER ESH
+01AA;AL # LATIN LETTER REVERSED ESH LOOP
+01AB;AL # LATIN SMALL LETTER T WITH PALATAL HOOK
+01AC;AL # LATIN CAPITAL LETTER T WITH HOOK
+01AD;AL # LATIN SMALL LETTER T WITH HOOK
+01AE;AL # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+01AF;AL # LATIN CAPITAL LETTER U WITH HORN
+01B0;AL # LATIN SMALL LETTER U WITH HORN
+01B1;AL # LATIN CAPITAL LETTER UPSILON
+01B2;AL # LATIN CAPITAL LETTER V WITH HOOK
+01B3;AL # LATIN CAPITAL LETTER Y WITH HOOK
+01B4;AL # LATIN SMALL LETTER Y WITH HOOK
+01B5;AL # LATIN CAPITAL LETTER Z WITH STROKE
+01B6;AL # LATIN SMALL LETTER Z WITH STROKE
+01B7;AL # LATIN CAPITAL LETTER EZH
+01B8;AL # LATIN CAPITAL LETTER EZH REVERSED
+01B9;AL # LATIN SMALL LETTER EZH REVERSED
+01BA;AL # LATIN SMALL LETTER EZH WITH TAIL
+01BB;AL # LATIN LETTER TWO WITH STROKE
+01BC;AL # LATIN CAPITAL LETTER TONE FIVE
+01BD;AL # LATIN SMALL LETTER TONE FIVE
+01BE;AL # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+01BF;AL # LATIN LETTER WYNN
+01C0;AL # LATIN LETTER DENTAL CLICK
+01C1;AL # LATIN LETTER LATERAL CLICK
+01C2;AL # LATIN LETTER ALVEOLAR CLICK
+01C3;AL # LATIN LETTER RETROFLEX CLICK
+01C4;AL # LATIN CAPITAL LETTER DZ WITH CARON
+01C5;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C6;AL # LATIN SMALL LETTER DZ WITH CARON
+01C7;AL # LATIN CAPITAL LETTER LJ
+01C8;AL # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C9;AL # LATIN SMALL LETTER LJ
+01CA;AL # LATIN CAPITAL LETTER NJ
+01CB;AL # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CC;AL # LATIN SMALL LETTER NJ
+01CD;AL # LATIN CAPITAL LETTER A WITH CARON
+01CE;AL # LATIN SMALL LETTER A WITH CARON
+01CF;AL # LATIN CAPITAL LETTER I WITH CARON
+01D0;AL # LATIN SMALL LETTER I WITH CARON
+01D1;AL # LATIN CAPITAL LETTER O WITH CARON
+01D2;AL # LATIN SMALL LETTER O WITH CARON
+01D3;AL # LATIN CAPITAL LETTER U WITH CARON
+01D4;AL # LATIN SMALL LETTER U WITH CARON
+01D5;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D6;AL # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D7;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D8;AL # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D9;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DA;AL # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DB;AL # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DC;AL # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DD;AL # LATIN SMALL LETTER TURNED E
+01DE;AL # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01DF;AL # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E0;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E1;AL # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E2;AL # LATIN CAPITAL LETTER AE WITH MACRON
+01E3;AL # LATIN SMALL LETTER AE WITH MACRON
+01E4;AL # LATIN CAPITAL LETTER G WITH STROKE
+01E5;AL # LATIN SMALL LETTER G WITH STROKE
+01E6;AL # LATIN CAPITAL LETTER G WITH CARON
+01E7;AL # LATIN SMALL LETTER G WITH CARON
+01E8;AL # LATIN CAPITAL LETTER K WITH CARON
+01E9;AL # LATIN SMALL LETTER K WITH CARON
+01EA;AL # LATIN CAPITAL LETTER O WITH OGONEK
+01EB;AL # LATIN SMALL LETTER O WITH OGONEK
+01EC;AL # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01ED;AL # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EE;AL # LATIN CAPITAL LETTER EZH WITH CARON
+01EF;AL # LATIN SMALL LETTER EZH WITH CARON
+01F0;AL # LATIN SMALL LETTER J WITH CARON
+01F1;AL # LATIN CAPITAL LETTER DZ
+01F2;AL # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F3;AL # LATIN SMALL LETTER DZ
+01F4;AL # LATIN CAPITAL LETTER G WITH ACUTE
+01F5;AL # LATIN SMALL LETTER G WITH ACUTE
+01F6;AL # LATIN CAPITAL LETTER HWAIR
+01F7;AL # LATIN CAPITAL LETTER WYNN
+01F8;AL # LATIN CAPITAL LETTER N WITH GRAVE
+01F9;AL # LATIN SMALL LETTER N WITH GRAVE
+01FA;AL # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FB;AL # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FC;AL # LATIN CAPITAL LETTER AE WITH ACUTE
+01FD;AL # LATIN SMALL LETTER AE WITH ACUTE
+01FE;AL # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01FF;AL # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0200;AL # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0201;AL # LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0202;AL # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0203;AL # LATIN SMALL LETTER A WITH INVERTED BREVE
+0204;AL # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0205;AL # LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0206;AL # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0207;AL # LATIN SMALL LETTER E WITH INVERTED BREVE
+0208;AL # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+0209;AL # LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020A;AL # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020B;AL # LATIN SMALL LETTER I WITH INVERTED BREVE
+020C;AL # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020D;AL # LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020E;AL # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+020F;AL # LATIN SMALL LETTER O WITH INVERTED BREVE
+0210;AL # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0211;AL # LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0212;AL # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0213;AL # LATIN SMALL LETTER R WITH INVERTED BREVE
+0214;AL # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0215;AL # LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0216;AL # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0217;AL # LATIN SMALL LETTER U WITH INVERTED BREVE
+0218;AL # LATIN CAPITAL LETTER S WITH COMMA BELOW
+0219;AL # LATIN SMALL LETTER S WITH COMMA BELOW
+021A;AL # LATIN CAPITAL LETTER T WITH COMMA BELOW
+021B;AL # LATIN SMALL LETTER T WITH COMMA BELOW
+021C;AL # LATIN CAPITAL LETTER YOGH
+021D;AL # LATIN SMALL LETTER YOGH
+021E;AL # LATIN CAPITAL LETTER H WITH CARON
+021F;AL # LATIN SMALL LETTER H WITH CARON
+0220;AL # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+0221;AL # LATIN SMALL LETTER D WITH CURL
+0222;AL # LATIN CAPITAL LETTER OU
+0223;AL # LATIN SMALL LETTER OU
+0224;AL # LATIN CAPITAL LETTER Z WITH HOOK
+0225;AL # LATIN SMALL LETTER Z WITH HOOK
+0226;AL # LATIN CAPITAL LETTER A WITH DOT ABOVE
+0227;AL # LATIN SMALL LETTER A WITH DOT ABOVE
+0228;AL # LATIN CAPITAL LETTER E WITH CEDILLA
+0229;AL # LATIN SMALL LETTER E WITH CEDILLA
+022A;AL # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022B;AL # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022C;AL # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022D;AL # LATIN SMALL LETTER O WITH TILDE AND MACRON
+022E;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE
+022F;AL # LATIN SMALL LETTER O WITH DOT ABOVE
+0230;AL # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0231;AL # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0232;AL # LATIN CAPITAL LETTER Y WITH MACRON
+0233;AL # LATIN SMALL LETTER Y WITH MACRON
+0234;AL # LATIN SMALL LETTER L WITH CURL
+0235;AL # LATIN SMALL LETTER N WITH CURL
+0236;AL # LATIN SMALL LETTER T WITH CURL
+0237;AL # LATIN SMALL LETTER DOTLESS J
+0238;AL # LATIN SMALL LETTER DB DIGRAPH
+0239;AL # LATIN SMALL LETTER QP DIGRAPH
+023A;AL # LATIN CAPITAL LETTER A WITH STROKE
+023B;AL # LATIN CAPITAL LETTER C WITH STROKE
+023C;AL # LATIN SMALL LETTER C WITH STROKE
+023D;AL # LATIN CAPITAL LETTER L WITH BAR
+023E;AL # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+023F;AL # LATIN SMALL LETTER S WITH SWASH TAIL
+0240;AL # LATIN SMALL LETTER Z WITH SWASH TAIL
+0241;AL # LATIN CAPITAL LETTER GLOTTAL STOP
+0242;AL # LATIN SMALL LETTER GLOTTAL STOP
+0243;AL # LATIN CAPITAL LETTER B WITH STROKE
+0244;AL # LATIN CAPITAL LETTER U BAR
+0245;AL # LATIN CAPITAL LETTER TURNED V
+0246;AL # LATIN CAPITAL LETTER E WITH STROKE
+0247;AL # LATIN SMALL LETTER E WITH STROKE
+0248;AL # LATIN CAPITAL LETTER J WITH STROKE
+0249;AL # LATIN SMALL LETTER J WITH STROKE
+024A;AL # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+024B;AL # LATIN SMALL LETTER Q WITH HOOK TAIL
+024C;AL # LATIN CAPITAL LETTER R WITH STROKE
+024D;AL # LATIN SMALL LETTER R WITH STROKE
+024E;AL # LATIN CAPITAL LETTER Y WITH STROKE
+024F;AL # LATIN SMALL LETTER Y WITH STROKE
+0250;AL # LATIN SMALL LETTER TURNED A
+0251;AL # LATIN SMALL LETTER ALPHA
+0252;AL # LATIN SMALL LETTER TURNED ALPHA
+0253;AL # LATIN SMALL LETTER B WITH HOOK
+0254;AL # LATIN SMALL LETTER OPEN O
+0255;AL # LATIN SMALL LETTER C WITH CURL
+0256;AL # LATIN SMALL LETTER D WITH TAIL
+0257;AL # LATIN SMALL LETTER D WITH HOOK
+0258;AL # LATIN SMALL LETTER REVERSED E
+0259;AL # LATIN SMALL LETTER SCHWA
+025A;AL # LATIN SMALL LETTER SCHWA WITH HOOK
+025B;AL # LATIN SMALL LETTER OPEN E
+025C;AL # LATIN SMALL LETTER REVERSED OPEN E
+025D;AL # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025E;AL # LATIN SMALL LETTER CLOSED REVERSED OPEN E
+025F;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE
+0260;AL # LATIN SMALL LETTER G WITH HOOK
+0261;AL # LATIN SMALL LETTER SCRIPT G
+0262;AL # LATIN LETTER SMALL CAPITAL G
+0263;AL # LATIN SMALL LETTER GAMMA
+0264;AL # LATIN SMALL LETTER RAMS HORN
+0265;AL # LATIN SMALL LETTER TURNED H
+0266;AL # LATIN SMALL LETTER H WITH HOOK
+0267;AL # LATIN SMALL LETTER HENG WITH HOOK
+0268;AL # LATIN SMALL LETTER I WITH STROKE
+0269;AL # LATIN SMALL LETTER IOTA
+026A;AL # LATIN LETTER SMALL CAPITAL I
+026B;AL # LATIN SMALL LETTER L WITH MIDDLE TILDE
+026C;AL # LATIN SMALL LETTER L WITH BELT
+026D;AL # LATIN SMALL LETTER L WITH RETROFLEX HOOK
+026E;AL # LATIN SMALL LETTER LEZH
+026F;AL # LATIN SMALL LETTER TURNED M
+0270;AL # LATIN SMALL LETTER TURNED M WITH LONG LEG
+0271;AL # LATIN SMALL LETTER M WITH HOOK
+0272;AL # LATIN SMALL LETTER N WITH LEFT HOOK
+0273;AL # LATIN SMALL LETTER N WITH RETROFLEX HOOK
+0274;AL # LATIN LETTER SMALL CAPITAL N
+0275;AL # LATIN SMALL LETTER BARRED O
+0276;AL # LATIN LETTER SMALL CAPITAL OE
+0277;AL # LATIN SMALL LETTER CLOSED OMEGA
+0278;AL # LATIN SMALL LETTER PHI
+0279;AL # LATIN SMALL LETTER TURNED R
+027A;AL # LATIN SMALL LETTER TURNED R WITH LONG LEG
+027B;AL # LATIN SMALL LETTER TURNED R WITH HOOK
+027C;AL # LATIN SMALL LETTER R WITH LONG LEG
+027D;AL # LATIN SMALL LETTER R WITH TAIL
+027E;AL # LATIN SMALL LETTER R WITH FISHHOOK
+027F;AL # LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+0280;AL # LATIN LETTER SMALL CAPITAL R
+0281;AL # LATIN LETTER SMALL CAPITAL INVERTED R
+0282;AL # LATIN SMALL LETTER S WITH HOOK
+0283;AL # LATIN SMALL LETTER ESH
+0284;AL # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+0285;AL # LATIN SMALL LETTER SQUAT REVERSED ESH
+0286;AL # LATIN SMALL LETTER ESH WITH CURL
+0287;AL # LATIN SMALL LETTER TURNED T
+0288;AL # LATIN SMALL LETTER T WITH RETROFLEX HOOK
+0289;AL # LATIN SMALL LETTER U BAR
+028A;AL # LATIN SMALL LETTER UPSILON
+028B;AL # LATIN SMALL LETTER V WITH HOOK
+028C;AL # LATIN SMALL LETTER TURNED V
+028D;AL # LATIN SMALL LETTER TURNED W
+028E;AL # LATIN SMALL LETTER TURNED Y
+028F;AL # LATIN LETTER SMALL CAPITAL Y
+0290;AL # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+0291;AL # LATIN SMALL LETTER Z WITH CURL
+0292;AL # LATIN SMALL LETTER EZH
+0293;AL # LATIN SMALL LETTER EZH WITH CURL
+0294;AL # LATIN LETTER GLOTTAL STOP
+0295;AL # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+0296;AL # LATIN LETTER INVERTED GLOTTAL STOP
+0297;AL # LATIN LETTER STRETCHED C
+0298;AL # LATIN LETTER BILABIAL CLICK
+0299;AL # LATIN LETTER SMALL CAPITAL B
+029A;AL # LATIN SMALL LETTER CLOSED OPEN E
+029B;AL # LATIN LETTER SMALL CAPITAL G WITH HOOK
+029C;AL # LATIN LETTER SMALL CAPITAL H
+029D;AL # LATIN SMALL LETTER J WITH CROSSED-TAIL
+029E;AL # LATIN SMALL LETTER TURNED K
+029F;AL # LATIN LETTER SMALL CAPITAL L
+02A0;AL # LATIN SMALL LETTER Q WITH HOOK
+02A1;AL # LATIN LETTER GLOTTAL STOP WITH STROKE
+02A2;AL # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+02A3;AL # LATIN SMALL LETTER DZ DIGRAPH
+02A4;AL # LATIN SMALL LETTER DEZH DIGRAPH
+02A5;AL # LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+02A6;AL # LATIN SMALL LETTER TS DIGRAPH
+02A7;AL # LATIN SMALL LETTER TESH DIGRAPH
+02A8;AL # LATIN SMALL LETTER TC DIGRAPH WITH CURL
+02A9;AL # LATIN SMALL LETTER FENG DIGRAPH
+02AA;AL # LATIN SMALL LETTER LS DIGRAPH
+02AB;AL # LATIN SMALL LETTER LZ DIGRAPH
+02AC;AL # LATIN LETTER BILABIAL PERCUSSIVE
+02AD;AL # LATIN LETTER BIDENTAL PERCUSSIVE
+02AE;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK
+02AF;AL # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0;AL # MODIFIER LETTER SMALL H
+02B1;AL # MODIFIER LETTER SMALL H WITH HOOK
+02B2;AL # MODIFIER LETTER SMALL J
+02B3;AL # MODIFIER LETTER SMALL R
+02B4;AL # MODIFIER LETTER SMALL TURNED R
+02B5;AL # MODIFIER LETTER SMALL TURNED R WITH HOOK
+02B6;AL # MODIFIER LETTER SMALL CAPITAL INVERTED R
+02B7;AL # MODIFIER LETTER SMALL W
+02B8;AL # MODIFIER LETTER SMALL Y
+02B9;AL # MODIFIER LETTER PRIME
+02BA;AL # MODIFIER LETTER DOUBLE PRIME
+02BB;AL # MODIFIER LETTER TURNED COMMA
+02BC;AL # MODIFIER LETTER APOSTROPHE
+02BD;AL # MODIFIER LETTER REVERSED COMMA
+02BE;AL # MODIFIER LETTER RIGHT HALF RING
+02BF;AL # MODIFIER LETTER LEFT HALF RING
+02C0;AL # MODIFIER LETTER GLOTTAL STOP
+02C1;AL # MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2;AL # MODIFIER LETTER LEFT ARROWHEAD
+02C3;AL # MODIFIER LETTER RIGHT ARROWHEAD
+02C4;AL # MODIFIER LETTER UP ARROWHEAD
+02C5;AL # MODIFIER LETTER DOWN ARROWHEAD
+02C6;AL # MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7;AI # CARON
+02C8;BB # MODIFIER LETTER VERTICAL LINE
+02C9;AI # MODIFIER LETTER MACRON
+02CA;AI # MODIFIER LETTER ACUTE ACCENT
+02CB;AI # MODIFIER LETTER GRAVE ACCENT
+02CC;BB # MODIFIER LETTER LOW VERTICAL LINE
+02CD;AI # MODIFIER LETTER LOW MACRON
+02CE;AL # MODIFIER LETTER LOW GRAVE ACCENT
+02CF;AL # MODIFIER LETTER LOW ACUTE ACCENT
+02D0;AI # MODIFIER LETTER TRIANGULAR COLON
+02D1;AL # MODIFIER LETTER HALF TRIANGULAR COLON
+02D2;AL # MODIFIER LETTER CENTRED RIGHT HALF RING
+02D3;AL # MODIFIER LETTER CENTRED LEFT HALF RING
+02D4;AL # MODIFIER LETTER UP TACK
+02D5;AL # MODIFIER LETTER DOWN TACK
+02D6;AL # MODIFIER LETTER PLUS SIGN
+02D7;AL # MODIFIER LETTER MINUS SIGN
+02D8;AI # BREVE
+02D9;AI # DOT ABOVE
+02DA;AI # RING ABOVE
+02DB;AI # OGONEK
+02DC;AL # SMALL TILDE
+02DD;AI # DOUBLE ACUTE ACCENT
+02DE;AL # MODIFIER LETTER RHOTIC HOOK
+02DF;AL # MODIFIER LETTER CROSS ACCENT
+02E0;AL # MODIFIER LETTER SMALL GAMMA
+02E1;AL # MODIFIER LETTER SMALL L
+02E2;AL # MODIFIER LETTER SMALL S
+02E3;AL # MODIFIER LETTER SMALL X
+02E4;AL # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02E5;AL # MODIFIER LETTER EXTRA-HIGH TONE BAR
+02E6;AL # MODIFIER LETTER HIGH TONE BAR
+02E7;AL # MODIFIER LETTER MID TONE BAR
+02E8;AL # MODIFIER LETTER LOW TONE BAR
+02E9;AL # MODIFIER LETTER EXTRA-LOW TONE BAR
+02EA;AL # MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB;AL # MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC;AL # MODIFIER LETTER VOICING
+02ED;AL # MODIFIER LETTER UNASPIRATED
+02EE;AL # MODIFIER LETTER DOUBLE APOSTROPHE
+02EF;AL # MODIFIER LETTER LOW DOWN ARROWHEAD
+02F0;AL # MODIFIER LETTER LOW UP ARROWHEAD
+02F1;AL # MODIFIER LETTER LOW LEFT ARROWHEAD
+02F2;AL # MODIFIER LETTER LOW RIGHT ARROWHEAD
+02F3;AL # MODIFIER LETTER LOW RING
+02F4;AL # MODIFIER LETTER MIDDLE GRAVE ACCENT
+02F5;AL # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
+02F6;AL # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
+02F7;AL # MODIFIER LETTER LOW TILDE
+02F8;AL # MODIFIER LETTER RAISED COLON
+02F9;AL # MODIFIER LETTER BEGIN HIGH TONE
+02FA;AL # MODIFIER LETTER END HIGH TONE
+02FB;AL # MODIFIER LETTER BEGIN LOW TONE
+02FC;AL # MODIFIER LETTER END LOW TONE
+02FD;AL # MODIFIER LETTER SHELF
+02FE;AL # MODIFIER LETTER OPEN SHELF
+02FF;AL # MODIFIER LETTER LOW LEFT ARROW
+0300;CM # COMBINING GRAVE ACCENT
+0301;CM # COMBINING ACUTE ACCENT
+0302;CM # COMBINING CIRCUMFLEX ACCENT
+0303;CM # COMBINING TILDE
+0304;CM # COMBINING MACRON
+0305;CM # COMBINING OVERLINE
+0306;CM # COMBINING BREVE
+0307;CM # COMBINING DOT ABOVE
+0308;CM # COMBINING DIAERESIS
+0309;CM # COMBINING HOOK ABOVE
+030A;CM # COMBINING RING ABOVE
+030B;CM # COMBINING DOUBLE ACUTE ACCENT
+030C;CM # COMBINING CARON
+030D;CM # COMBINING VERTICAL LINE ABOVE
+030E;CM # COMBINING DOUBLE VERTICAL LINE ABOVE
+030F;CM # COMBINING DOUBLE GRAVE ACCENT
+0310;CM # COMBINING CANDRABINDU
+0311;CM # COMBINING INVERTED BREVE
+0312;CM # COMBINING TURNED COMMA ABOVE
+0313;CM # COMBINING COMMA ABOVE
+0314;CM # COMBINING REVERSED COMMA ABOVE
+0315;CM # COMBINING COMMA ABOVE RIGHT
+0316;CM # COMBINING GRAVE ACCENT BELOW
+0317;CM # COMBINING ACUTE ACCENT BELOW
+0318;CM # COMBINING LEFT TACK BELOW
+0319;CM # COMBINING RIGHT TACK BELOW
+031A;CM # COMBINING LEFT ANGLE ABOVE
+031B;CM # COMBINING HORN
+031C;CM # COMBINING LEFT HALF RING BELOW
+031D;CM # COMBINING UP TACK BELOW
+031E;CM # COMBINING DOWN TACK BELOW
+031F;CM # COMBINING PLUS SIGN BELOW
+0320;CM # COMBINING MINUS SIGN BELOW
+0321;CM # COMBINING PALATALIZED HOOK BELOW
+0322;CM # COMBINING RETROFLEX HOOK BELOW
+0323;CM # COMBINING DOT BELOW
+0324;CM # COMBINING DIAERESIS BELOW
+0325;CM # COMBINING RING BELOW
+0326;CM # COMBINING COMMA BELOW
+0327;CM # COMBINING CEDILLA
+0328;CM # COMBINING OGONEK
+0329;CM # COMBINING VERTICAL LINE BELOW
+032A;CM # COMBINING BRIDGE BELOW
+032B;CM # COMBINING INVERTED DOUBLE ARCH BELOW
+032C;CM # COMBINING CARON BELOW
+032D;CM # COMBINING CIRCUMFLEX ACCENT BELOW
+032E;CM # COMBINING BREVE BELOW
+032F;CM # COMBINING INVERTED BREVE BELOW
+0330;CM # COMBINING TILDE BELOW
+0331;CM # COMBINING MACRON BELOW
+0332;CM # COMBINING LOW LINE
+0333;CM # COMBINING DOUBLE LOW LINE
+0334;CM # COMBINING TILDE OVERLAY
+0335;CM # COMBINING SHORT STROKE OVERLAY
+0336;CM # COMBINING LONG STROKE OVERLAY
+0337;CM # COMBINING SHORT SOLIDUS OVERLAY
+0338;CM # COMBINING LONG SOLIDUS OVERLAY
+0339;CM # COMBINING RIGHT HALF RING BELOW
+033A;CM # COMBINING INVERTED BRIDGE BELOW
+033B;CM # COMBINING SQUARE BELOW
+033C;CM # COMBINING SEAGULL BELOW
+033D;CM # COMBINING X ABOVE
+033E;CM # COMBINING VERTICAL TILDE
+033F;CM # COMBINING DOUBLE OVERLINE
+0340;CM # COMBINING GRAVE TONE MARK
+0341;CM # COMBINING ACUTE TONE MARK
+0342;CM # COMBINING GREEK PERISPOMENI
+0343;CM # COMBINING GREEK KORONIS
+0344;CM # COMBINING GREEK DIALYTIKA TONOS
+0345;CM # COMBINING GREEK YPOGEGRAMMENI
+0346;CM # COMBINING BRIDGE ABOVE
+0347;CM # COMBINING EQUALS SIGN BELOW
+0348;CM # COMBINING DOUBLE VERTICAL LINE BELOW
+0349;CM # COMBINING LEFT ANGLE BELOW
+034A;CM # COMBINING NOT TILDE ABOVE
+034B;CM # COMBINING HOMOTHETIC ABOVE
+034C;CM # COMBINING ALMOST EQUAL TO ABOVE
+034D;CM # COMBINING LEFT RIGHT ARROW BELOW
+034E;CM # COMBINING UPWARDS ARROW BELOW
+034F;GL # COMBINING GRAPHEME JOINER
+0350;CM # COMBINING RIGHT ARROWHEAD ABOVE
+0351;CM # COMBINING LEFT HALF RING ABOVE
+0352;CM # COMBINING FERMATA
+0353;CM # COMBINING X BELOW
+0354;CM # COMBINING LEFT ARROWHEAD BELOW
+0355;CM # COMBINING RIGHT ARROWHEAD BELOW
+0356;CM # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
+0357;CM # COMBINING RIGHT HALF RING ABOVE
+0358;CM # COMBINING DOT ABOVE RIGHT
+0359;CM # COMBINING ASTERISK BELOW
+035A;CM # COMBINING DOUBLE RING BELOW
+035B;CM # COMBINING ZIGZAG ABOVE
+035C;GL # COMBINING DOUBLE BREVE BELOW
+035D;GL # COMBINING DOUBLE BREVE
+035E;GL # COMBINING DOUBLE MACRON
+035F;GL # COMBINING DOUBLE MACRON BELOW
+0360;GL # COMBINING DOUBLE TILDE
+0361;GL # COMBINING DOUBLE INVERTED BREVE
+0362;GL # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+0363;CM # COMBINING LATIN SMALL LETTER A
+0364;CM # COMBINING LATIN SMALL LETTER E
+0365;CM # COMBINING LATIN SMALL LETTER I
+0366;CM # COMBINING LATIN SMALL LETTER O
+0367;CM # COMBINING LATIN SMALL LETTER U
+0368;CM # COMBINING LATIN SMALL LETTER C
+0369;CM # COMBINING LATIN SMALL LETTER D
+036A;CM # COMBINING LATIN SMALL LETTER H
+036B;CM # COMBINING LATIN SMALL LETTER M
+036C;CM # COMBINING LATIN SMALL LETTER R
+036D;CM # COMBINING LATIN SMALL LETTER T
+036E;CM # COMBINING LATIN SMALL LETTER V
+036F;CM # COMBINING LATIN SMALL LETTER X
+0374;AL # GREEK NUMERAL SIGN
+0375;AL # GREEK LOWER NUMERAL SIGN
+037A;AL # GREEK YPOGEGRAMMENI
+037B;AL # GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
+037C;AL # GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
+037D;AL # GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+037E;IS # GREEK QUESTION MARK
+0384;AL # GREEK TONOS
+0385;AL # GREEK DIALYTIKA TONOS
+0386;AL # GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387;AL # GREEK ANO TELEIA
+0388;AL # GREEK CAPITAL LETTER EPSILON WITH TONOS
+0389;AL # GREEK CAPITAL LETTER ETA WITH TONOS
+038A;AL # GREEK CAPITAL LETTER IOTA WITH TONOS
+038C;AL # GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E;AL # GREEK CAPITAL LETTER UPSILON WITH TONOS
+038F;AL # GREEK CAPITAL LETTER OMEGA WITH TONOS
+0390;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+0391;AL # GREEK CAPITAL LETTER ALPHA
+0392;AL # GREEK CAPITAL LETTER BETA
+0393;AL # GREEK CAPITAL LETTER GAMMA
+0394;AL # GREEK CAPITAL LETTER DELTA
+0395;AL # GREEK CAPITAL LETTER EPSILON
+0396;AL # GREEK CAPITAL LETTER ZETA
+0397;AL # GREEK CAPITAL LETTER ETA
+0398;AL # GREEK CAPITAL LETTER THETA
+0399;AL # GREEK CAPITAL LETTER IOTA
+039A;AL # GREEK CAPITAL LETTER KAPPA
+039B;AL # GREEK CAPITAL LETTER LAMDA
+039C;AL # GREEK CAPITAL LETTER MU
+039D;AL # GREEK CAPITAL LETTER NU
+039E;AL # GREEK CAPITAL LETTER XI
+039F;AL # GREEK CAPITAL LETTER OMICRON
+03A0;AL # GREEK CAPITAL LETTER PI
+03A1;AL # GREEK CAPITAL LETTER RHO
+03A3;AL # GREEK CAPITAL LETTER SIGMA
+03A4;AL # GREEK CAPITAL LETTER TAU
+03A5;AL # GREEK CAPITAL LETTER UPSILON
+03A6;AL # GREEK CAPITAL LETTER PHI
+03A7;AL # GREEK CAPITAL LETTER CHI
+03A8;AL # GREEK CAPITAL LETTER PSI
+03A9;AL # GREEK CAPITAL LETTER OMEGA
+03AA;AL # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+03AB;AL # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03AC;AL # GREEK SMALL LETTER ALPHA WITH TONOS
+03AD;AL # GREEK SMALL LETTER EPSILON WITH TONOS
+03AE;AL # GREEK SMALL LETTER ETA WITH TONOS
+03AF;AL # GREEK SMALL LETTER IOTA WITH TONOS
+03B0;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03B1;AL # GREEK SMALL LETTER ALPHA
+03B2;AL # GREEK SMALL LETTER BETA
+03B3;AL # GREEK SMALL LETTER GAMMA
+03B4;AL # GREEK SMALL LETTER DELTA
+03B5;AL # GREEK SMALL LETTER EPSILON
+03B6;AL # GREEK SMALL LETTER ZETA
+03B7;AL # GREEK SMALL LETTER ETA
+03B8;AL # GREEK SMALL LETTER THETA
+03B9;AL # GREEK SMALL LETTER IOTA
+03BA;AL # GREEK SMALL LETTER KAPPA
+03BB;AL # GREEK SMALL LETTER LAMDA
+03BC;AL # GREEK SMALL LETTER MU
+03BD;AL # GREEK SMALL LETTER NU
+03BE;AL # GREEK SMALL LETTER XI
+03BF;AL # GREEK SMALL LETTER OMICRON
+03C0;AL # GREEK SMALL LETTER PI
+03C1;AL # GREEK SMALL LETTER RHO
+03C2;AL # GREEK SMALL LETTER FINAL SIGMA
+03C3;AL # GREEK SMALL LETTER SIGMA
+03C4;AL # GREEK SMALL LETTER TAU
+03C5;AL # GREEK SMALL LETTER UPSILON
+03C6;AL # GREEK SMALL LETTER PHI
+03C7;AL # GREEK SMALL LETTER CHI
+03C8;AL # GREEK SMALL LETTER PSI
+03C9;AL # GREEK SMALL LETTER OMEGA
+03CA;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03CB;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03CC;AL # GREEK SMALL LETTER OMICRON WITH TONOS
+03CD;AL # GREEK SMALL LETTER UPSILON WITH TONOS
+03CE;AL # GREEK SMALL LETTER OMEGA WITH TONOS
+03D0;AL # GREEK BETA SYMBOL
+03D1;AL # GREEK THETA SYMBOL
+03D2;AL # GREEK UPSILON WITH HOOK SYMBOL
+03D3;AL # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4;AL # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D5;AL # GREEK PHI SYMBOL
+03D6;AL # GREEK PI SYMBOL
+03D7;AL # GREEK KAI SYMBOL
+03D8;AL # GREEK LETTER ARCHAIC KOPPA
+03D9;AL # GREEK SMALL LETTER ARCHAIC KOPPA
+03DA;AL # GREEK LETTER STIGMA
+03DB;AL # GREEK SMALL LETTER STIGMA
+03DC;AL # GREEK LETTER DIGAMMA
+03DD;AL # GREEK SMALL LETTER DIGAMMA
+03DE;AL # GREEK LETTER KOPPA
+03DF;AL # GREEK SMALL LETTER KOPPA
+03E0;AL # GREEK LETTER SAMPI
+03E1;AL # GREEK SMALL LETTER SAMPI
+03E2;AL # COPTIC CAPITAL LETTER SHEI
+03E3;AL # COPTIC SMALL LETTER SHEI
+03E4;AL # COPTIC CAPITAL LETTER FEI
+03E5;AL # COPTIC SMALL LETTER FEI
+03E6;AL # COPTIC CAPITAL LETTER KHEI
+03E7;AL # COPTIC SMALL LETTER KHEI
+03E8;AL # COPTIC CAPITAL LETTER HORI
+03E9;AL # COPTIC SMALL LETTER HORI
+03EA;AL # COPTIC CAPITAL LETTER GANGIA
+03EB;AL # COPTIC SMALL LETTER GANGIA
+03EC;AL # COPTIC CAPITAL LETTER SHIMA
+03ED;AL # COPTIC SMALL LETTER SHIMA
+03EE;AL # COPTIC CAPITAL LETTER DEI
+03EF;AL # COPTIC SMALL LETTER DEI
+03F0;AL # GREEK KAPPA SYMBOL
+03F1;AL # GREEK RHO SYMBOL
+03F2;AL # GREEK LUNATE SIGMA SYMBOL
+03F3;AL # GREEK LETTER YOT
+03F4;AL # GREEK CAPITAL THETA SYMBOL
+03F5;AL # GREEK LUNATE EPSILON SYMBOL
+03F6;AL # GREEK REVERSED LUNATE EPSILON SYMBOL
+03F7;AL # GREEK CAPITAL LETTER SHO
+03F8;AL # GREEK SMALL LETTER SHO
+03F9;AL # GREEK CAPITAL LUNATE SIGMA SYMBOL
+03FA;AL # GREEK CAPITAL LETTER SAN
+03FB;AL # GREEK SMALL LETTER SAN
+03FC;AL # GREEK RHO WITH STROKE SYMBOL
+03FD;AL # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
+03FE;AL # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
+03FF;AL # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0400;AL # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+0401;AL # CYRILLIC CAPITAL LETTER IO
+0402;AL # CYRILLIC CAPITAL LETTER DJE
+0403;AL # CYRILLIC CAPITAL LETTER GJE
+0404;AL # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0405;AL # CYRILLIC CAPITAL LETTER DZE
+0406;AL # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0407;AL # CYRILLIC CAPITAL LETTER YI
+0408;AL # CYRILLIC CAPITAL LETTER JE
+0409;AL # CYRILLIC CAPITAL LETTER LJE
+040A;AL # CYRILLIC CAPITAL LETTER NJE
+040B;AL # CYRILLIC CAPITAL LETTER TSHE
+040C;AL # CYRILLIC CAPITAL LETTER KJE
+040D;AL # CYRILLIC CAPITAL LETTER I WITH GRAVE
+040E;AL # CYRILLIC CAPITAL LETTER SHORT U
+040F;AL # CYRILLIC CAPITAL LETTER DZHE
+0410;AL # CYRILLIC CAPITAL LETTER A
+0411;AL # CYRILLIC CAPITAL LETTER BE
+0412;AL # CYRILLIC CAPITAL LETTER VE
+0413;AL # CYRILLIC CAPITAL LETTER GHE
+0414;AL # CYRILLIC CAPITAL LETTER DE
+0415;AL # CYRILLIC CAPITAL LETTER IE
+0416;AL # CYRILLIC CAPITAL LETTER ZHE
+0417;AL # CYRILLIC CAPITAL LETTER ZE
+0418;AL # CYRILLIC CAPITAL LETTER I
+0419;AL # CYRILLIC CAPITAL LETTER SHORT I
+041A;AL # CYRILLIC CAPITAL LETTER KA
+041B;AL # CYRILLIC CAPITAL LETTER EL
+041C;AL # CYRILLIC CAPITAL LETTER EM
+041D;AL # CYRILLIC CAPITAL LETTER EN
+041E;AL # CYRILLIC CAPITAL LETTER O
+041F;AL # CYRILLIC CAPITAL LETTER PE
+0420;AL # CYRILLIC CAPITAL LETTER ER
+0421;AL # CYRILLIC CAPITAL LETTER ES
+0422;AL # CYRILLIC CAPITAL LETTER TE
+0423;AL # CYRILLIC CAPITAL LETTER U
+0424;AL # CYRILLIC CAPITAL LETTER EF
+0425;AL # CYRILLIC CAPITAL LETTER HA
+0426;AL # CYRILLIC CAPITAL LETTER TSE
+0427;AL # CYRILLIC CAPITAL LETTER CHE
+0428;AL # CYRILLIC CAPITAL LETTER SHA
+0429;AL # CYRILLIC CAPITAL LETTER SHCHA
+042A;AL # CYRILLIC CAPITAL LETTER HARD SIGN
+042B;AL # CYRILLIC CAPITAL LETTER YERU
+042C;AL # CYRILLIC CAPITAL LETTER SOFT SIGN
+042D;AL # CYRILLIC CAPITAL LETTER E
+042E;AL # CYRILLIC CAPITAL LETTER YU
+042F;AL # CYRILLIC CAPITAL LETTER YA
+0430;AL # CYRILLIC SMALL LETTER A
+0431;AL # CYRILLIC SMALL LETTER BE
+0432;AL # CYRILLIC SMALL LETTER VE
+0433;AL # CYRILLIC SMALL LETTER GHE
+0434;AL # CYRILLIC SMALL LETTER DE
+0435;AL # CYRILLIC SMALL LETTER IE
+0436;AL # CYRILLIC SMALL LETTER ZHE
+0437;AL # CYRILLIC SMALL LETTER ZE
+0438;AL # CYRILLIC SMALL LETTER I
+0439;AL # CYRILLIC SMALL LETTER SHORT I
+043A;AL # CYRILLIC SMALL LETTER KA
+043B;AL # CYRILLIC SMALL LETTER EL
+043C;AL # CYRILLIC SMALL LETTER EM
+043D;AL # CYRILLIC SMALL LETTER EN
+043E;AL # CYRILLIC SMALL LETTER O
+043F;AL # CYRILLIC SMALL LETTER PE
+0440;AL # CYRILLIC SMALL LETTER ER
+0441;AL # CYRILLIC SMALL LETTER ES
+0442;AL # CYRILLIC SMALL LETTER TE
+0443;AL # CYRILLIC SMALL LETTER U
+0444;AL # CYRILLIC SMALL LETTER EF
+0445;AL # CYRILLIC SMALL LETTER HA
+0446;AL # CYRILLIC SMALL LETTER TSE
+0447;AL # CYRILLIC SMALL LETTER CHE
+0448;AL # CYRILLIC SMALL LETTER SHA
+0449;AL # CYRILLIC SMALL LETTER SHCHA
+044A;AL # CYRILLIC SMALL LETTER HARD SIGN
+044B;AL # CYRILLIC SMALL LETTER YERU
+044C;AL # CYRILLIC SMALL LETTER SOFT SIGN
+044D;AL # CYRILLIC SMALL LETTER E
+044E;AL # CYRILLIC SMALL LETTER YU
+044F;AL # CYRILLIC SMALL LETTER YA
+0450;AL # CYRILLIC SMALL LETTER IE WITH GRAVE
+0451;AL # CYRILLIC SMALL LETTER IO
+0452;AL # CYRILLIC SMALL LETTER DJE
+0453;AL # CYRILLIC SMALL LETTER GJE
+0454;AL # CYRILLIC SMALL LETTER UKRAINIAN IE
+0455;AL # CYRILLIC SMALL LETTER DZE
+0456;AL # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0457;AL # CYRILLIC SMALL LETTER YI
+0458;AL # CYRILLIC SMALL LETTER JE
+0459;AL # CYRILLIC SMALL LETTER LJE
+045A;AL # CYRILLIC SMALL LETTER NJE
+045B;AL # CYRILLIC SMALL LETTER TSHE
+045C;AL # CYRILLIC SMALL LETTER KJE
+045D;AL # CYRILLIC SMALL LETTER I WITH GRAVE
+045E;AL # CYRILLIC SMALL LETTER SHORT U
+045F;AL # CYRILLIC SMALL LETTER DZHE
+0460;AL # CYRILLIC CAPITAL LETTER OMEGA
+0461;AL # CYRILLIC SMALL LETTER OMEGA
+0462;AL # CYRILLIC CAPITAL LETTER YAT
+0463;AL # CYRILLIC SMALL LETTER YAT
+0464;AL # CYRILLIC CAPITAL LETTER IOTIFIED E
+0465;AL # CYRILLIC SMALL LETTER IOTIFIED E
+0466;AL # CYRILLIC CAPITAL LETTER LITTLE YUS
+0467;AL # CYRILLIC SMALL LETTER LITTLE YUS
+0468;AL # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+0469;AL # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046A;AL # CYRILLIC CAPITAL LETTER BIG YUS
+046B;AL # CYRILLIC SMALL LETTER BIG YUS
+046C;AL # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046D;AL # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046E;AL # CYRILLIC CAPITAL LETTER KSI
+046F;AL # CYRILLIC SMALL LETTER KSI
+0470;AL # CYRILLIC CAPITAL LETTER PSI
+0471;AL # CYRILLIC SMALL LETTER PSI
+0472;AL # CYRILLIC CAPITAL LETTER FITA
+0473;AL # CYRILLIC SMALL LETTER FITA
+0474;AL # CYRILLIC CAPITAL LETTER IZHITSA
+0475;AL # CYRILLIC SMALL LETTER IZHITSA
+0476;AL # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0477;AL # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478;AL # CYRILLIC CAPITAL LETTER UK
+0479;AL # CYRILLIC SMALL LETTER UK
+047A;AL # CYRILLIC CAPITAL LETTER ROUND OMEGA
+047B;AL # CYRILLIC SMALL LETTER ROUND OMEGA
+047C;AL # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047D;AL # CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047E;AL # CYRILLIC CAPITAL LETTER OT
+047F;AL # CYRILLIC SMALL LETTER OT
+0480;AL # CYRILLIC CAPITAL LETTER KOPPA
+0481;AL # CYRILLIC SMALL LETTER KOPPA
+0482;AL # CYRILLIC THOUSANDS SIGN
+0483;CM # COMBINING CYRILLIC TITLO
+0484;CM # COMBINING CYRILLIC PALATALIZATION
+0485;CM # COMBINING CYRILLIC DASIA PNEUMATA
+0486;CM # COMBINING CYRILLIC PSILI PNEUMATA
+0488;CM # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489;CM # COMBINING CYRILLIC MILLIONS SIGN
+048A;AL # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+048B;AL # CYRILLIC SMALL LETTER SHORT I WITH TAIL
+048C;AL # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048D;AL # CYRILLIC SMALL LETTER SEMISOFT SIGN
+048E;AL # CYRILLIC CAPITAL LETTER ER WITH TICK
+048F;AL # CYRILLIC SMALL LETTER ER WITH TICK
+0490;AL # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0491;AL # CYRILLIC SMALL LETTER GHE WITH UPTURN
+0492;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0493;AL # CYRILLIC SMALL LETTER GHE WITH STROKE
+0494;AL # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0495;AL # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0496;AL # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0497;AL # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0498;AL # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0499;AL # CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049A;AL # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049B;AL # CYRILLIC SMALL LETTER KA WITH DESCENDER
+049C;AL # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049D;AL # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049E;AL # CYRILLIC CAPITAL LETTER KA WITH STROKE
+049F;AL # CYRILLIC SMALL LETTER KA WITH STROKE
+04A0;AL # CYRILLIC CAPITAL LETTER BASHKIR KA
+04A1;AL # CYRILLIC SMALL LETTER BASHKIR KA
+04A2;AL # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A3;AL # CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A4;AL # CYRILLIC CAPITAL LIGATURE EN GHE
+04A5;AL # CYRILLIC SMALL LIGATURE EN GHE
+04A6;AL # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A7;AL # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A8;AL # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04A9;AL # CYRILLIC SMALL LETTER ABKHASIAN HA
+04AA;AL # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AB;AL # CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AC;AL # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AD;AL # CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AE;AL # CYRILLIC CAPITAL LETTER STRAIGHT U
+04AF;AL # CYRILLIC SMALL LETTER STRAIGHT U
+04B0;AL # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B1;AL # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B2;AL # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B3;AL # CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B4;AL # CYRILLIC CAPITAL LIGATURE TE TSE
+04B5;AL # CYRILLIC SMALL LIGATURE TE TSE
+04B6;AL # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B7;AL # CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B8;AL # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04B9;AL # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BA;AL # CYRILLIC CAPITAL LETTER SHHA
+04BB;AL # CYRILLIC SMALL LETTER SHHA
+04BC;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BD;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BE;AL # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04BF;AL # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0;AL # CYRILLIC LETTER PALOCHKA
+04C1;AL # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C2;AL # CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C3;AL # CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C4;AL # CYRILLIC SMALL LETTER KA WITH HOOK
+04C5;AL # CYRILLIC CAPITAL LETTER EL WITH TAIL
+04C6;AL # CYRILLIC SMALL LETTER EL WITH TAIL
+04C7;AL # CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C8;AL # CYRILLIC SMALL LETTER EN WITH HOOK
+04C9;AL # CYRILLIC CAPITAL LETTER EN WITH TAIL
+04CA;AL # CYRILLIC SMALL LETTER EN WITH TAIL
+04CB;AL # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CC;AL # CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04CD;AL # CYRILLIC CAPITAL LETTER EM WITH TAIL
+04CE;AL # CYRILLIC SMALL LETTER EM WITH TAIL
+04CF;AL # CYRILLIC SMALL LETTER PALOCHKA
+04D0;AL # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D1;AL # CYRILLIC SMALL LETTER A WITH BREVE
+04D2;AL # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D3;AL # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D4;AL # CYRILLIC CAPITAL LIGATURE A IE
+04D5;AL # CYRILLIC SMALL LIGATURE A IE
+04D6;AL # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D7;AL # CYRILLIC SMALL LETTER IE WITH BREVE
+04D8;AL # CYRILLIC CAPITAL LETTER SCHWA
+04D9;AL # CYRILLIC SMALL LETTER SCHWA
+04DA;AL # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DB;AL # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DC;AL # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DD;AL # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DE;AL # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04DF;AL # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E0;AL # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E1;AL # CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E2;AL # CYRILLIC CAPITAL LETTER I WITH MACRON
+04E3;AL # CYRILLIC SMALL LETTER I WITH MACRON
+04E4;AL # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E5;AL # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E6;AL # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E7;AL # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E8;AL # CYRILLIC CAPITAL LETTER BARRED O
+04E9;AL # CYRILLIC SMALL LETTER BARRED O
+04EA;AL # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EB;AL # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EC;AL # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04ED;AL # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EE;AL # CYRILLIC CAPITAL LETTER U WITH MACRON
+04EF;AL # CYRILLIC SMALL LETTER U WITH MACRON
+04F0;AL # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F1;AL # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F2;AL # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F3;AL # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F4;AL # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F5;AL # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F6;AL # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+04F7;AL # CYRILLIC SMALL LETTER GHE WITH DESCENDER
+04F8;AL # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04F9;AL # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04FA;AL # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+04FB;AL # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+04FC;AL # CYRILLIC CAPITAL LETTER HA WITH HOOK
+04FD;AL # CYRILLIC SMALL LETTER HA WITH HOOK
+04FE;AL # CYRILLIC CAPITAL LETTER HA WITH STROKE
+04FF;AL # CYRILLIC SMALL LETTER HA WITH STROKE
+0500;AL # CYRILLIC CAPITAL LETTER KOMI DE
+0501;AL # CYRILLIC SMALL LETTER KOMI DE
+0502;AL # CYRILLIC CAPITAL LETTER KOMI DJE
+0503;AL # CYRILLIC SMALL LETTER KOMI DJE
+0504;AL # CYRILLIC CAPITAL LETTER KOMI ZJE
+0505;AL # CYRILLIC SMALL LETTER KOMI ZJE
+0506;AL # CYRILLIC CAPITAL LETTER KOMI DZJE
+0507;AL # CYRILLIC SMALL LETTER KOMI DZJE
+0508;AL # CYRILLIC CAPITAL LETTER KOMI LJE
+0509;AL # CYRILLIC SMALL LETTER KOMI LJE
+050A;AL # CYRILLIC CAPITAL LETTER KOMI NJE
+050B;AL # CYRILLIC SMALL LETTER KOMI NJE
+050C;AL # CYRILLIC CAPITAL LETTER KOMI SJE
+050D;AL # CYRILLIC SMALL LETTER KOMI SJE
+050E;AL # CYRILLIC CAPITAL LETTER KOMI TJE
+050F;AL # CYRILLIC SMALL LETTER KOMI TJE
+0510;AL # CYRILLIC CAPITAL LETTER REVERSED ZE
+0511;AL # CYRILLIC SMALL LETTER REVERSED ZE
+0512;AL # CYRILLIC CAPITAL LETTER EL WITH HOOK
+0513;AL # CYRILLIC SMALL LETTER EL WITH HOOK
+0531;AL # ARMENIAN CAPITAL LETTER AYB
+0532;AL # ARMENIAN CAPITAL LETTER BEN
+0533;AL # ARMENIAN CAPITAL LETTER GIM
+0534;AL # ARMENIAN CAPITAL LETTER DA
+0535;AL # ARMENIAN CAPITAL LETTER ECH
+0536;AL # ARMENIAN CAPITAL LETTER ZA
+0537;AL # ARMENIAN CAPITAL LETTER EH
+0538;AL # ARMENIAN CAPITAL LETTER ET
+0539;AL # ARMENIAN CAPITAL LETTER TO
+053A;AL # ARMENIAN CAPITAL LETTER ZHE
+053B;AL # ARMENIAN CAPITAL LETTER INI
+053C;AL # ARMENIAN CAPITAL LETTER LIWN
+053D;AL # ARMENIAN CAPITAL LETTER XEH
+053E;AL # ARMENIAN CAPITAL LETTER CA
+053F;AL # ARMENIAN CAPITAL LETTER KEN
+0540;AL # ARMENIAN CAPITAL LETTER HO
+0541;AL # ARMENIAN CAPITAL LETTER JA
+0542;AL # ARMENIAN CAPITAL LETTER GHAD
+0543;AL # ARMENIAN CAPITAL LETTER CHEH
+0544;AL # ARMENIAN CAPITAL LETTER MEN
+0545;AL # ARMENIAN CAPITAL LETTER YI
+0546;AL # ARMENIAN CAPITAL LETTER NOW
+0547;AL # ARMENIAN CAPITAL LETTER SHA
+0548;AL # ARMENIAN CAPITAL LETTER VO
+0549;AL # ARMENIAN CAPITAL LETTER CHA
+054A;AL # ARMENIAN CAPITAL LETTER PEH
+054B;AL # ARMENIAN CAPITAL LETTER JHEH
+054C;AL # ARMENIAN CAPITAL LETTER RA
+054D;AL # ARMENIAN CAPITAL LETTER SEH
+054E;AL # ARMENIAN CAPITAL LETTER VEW
+054F;AL # ARMENIAN CAPITAL LETTER TIWN
+0550;AL # ARMENIAN CAPITAL LETTER REH
+0551;AL # ARMENIAN CAPITAL LETTER CO
+0552;AL # ARMENIAN CAPITAL LETTER YIWN
+0553;AL # ARMENIAN CAPITAL LETTER PIWR
+0554;AL # ARMENIAN CAPITAL LETTER KEH
+0555;AL # ARMENIAN CAPITAL LETTER OH
+0556;AL # ARMENIAN CAPITAL LETTER FEH
+0559;AL # ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A;AL # ARMENIAN APOSTROPHE
+055B;AL # ARMENIAN EMPHASIS MARK
+055C;AL # ARMENIAN EXCLAMATION MARK
+055D;AL # ARMENIAN COMMA
+055E;AL # ARMENIAN QUESTION MARK
+055F;AL # ARMENIAN ABBREVIATION MARK
+0561;AL # ARMENIAN SMALL LETTER AYB
+0562;AL # ARMENIAN SMALL LETTER BEN
+0563;AL # ARMENIAN SMALL LETTER GIM
+0564;AL # ARMENIAN SMALL LETTER DA
+0565;AL # ARMENIAN SMALL LETTER ECH
+0566;AL # ARMENIAN SMALL LETTER ZA
+0567;AL # ARMENIAN SMALL LETTER EH
+0568;AL # ARMENIAN SMALL LETTER ET
+0569;AL # ARMENIAN SMALL LETTER TO
+056A;AL # ARMENIAN SMALL LETTER ZHE
+056B;AL # ARMENIAN SMALL LETTER INI
+056C;AL # ARMENIAN SMALL LETTER LIWN
+056D;AL # ARMENIAN SMALL LETTER XEH
+056E;AL # ARMENIAN SMALL LETTER CA
+056F;AL # ARMENIAN SMALL LETTER KEN
+0570;AL # ARMENIAN SMALL LETTER HO
+0571;AL # ARMENIAN SMALL LETTER JA
+0572;AL # ARMENIAN SMALL LETTER GHAD
+0573;AL # ARMENIAN SMALL LETTER CHEH
+0574;AL # ARMENIAN SMALL LETTER MEN
+0575;AL # ARMENIAN SMALL LETTER YI
+0576;AL # ARMENIAN SMALL LETTER NOW
+0577;AL # ARMENIAN SMALL LETTER SHA
+0578;AL # ARMENIAN SMALL LETTER VO
+0579;AL # ARMENIAN SMALL LETTER CHA
+057A;AL # ARMENIAN SMALL LETTER PEH
+057B;AL # ARMENIAN SMALL LETTER JHEH
+057C;AL # ARMENIAN SMALL LETTER RA
+057D;AL # ARMENIAN SMALL LETTER SEH
+057E;AL # ARMENIAN SMALL LETTER VEW
+057F;AL # ARMENIAN SMALL LETTER TIWN
+0580;AL # ARMENIAN SMALL LETTER REH
+0581;AL # ARMENIAN SMALL LETTER CO
+0582;AL # ARMENIAN SMALL LETTER YIWN
+0583;AL # ARMENIAN SMALL LETTER PIWR
+0584;AL # ARMENIAN SMALL LETTER KEH
+0585;AL # ARMENIAN SMALL LETTER OH
+0586;AL # ARMENIAN SMALL LETTER FEH
+0587;AL # ARMENIAN SMALL LIGATURE ECH YIWN
+0589;IS # ARMENIAN FULL STOP
+058A;BA # ARMENIAN HYPHEN
+0591;CM # HEBREW ACCENT ETNAHTA
+0592;CM # HEBREW ACCENT SEGOL
+0593;CM # HEBREW ACCENT SHALSHELET
+0594;CM # HEBREW ACCENT ZAQEF QATAN
+0595;CM # HEBREW ACCENT ZAQEF GADOL
+0596;CM # HEBREW ACCENT TIPEHA
+0597;CM # HEBREW ACCENT REVIA
+0598;CM # HEBREW ACCENT ZARQA
+0599;CM # HEBREW ACCENT PASHTA
+059A;CM # HEBREW ACCENT YETIV
+059B;CM # HEBREW ACCENT TEVIR
+059C;CM # HEBREW ACCENT GERESH
+059D;CM # HEBREW ACCENT GERESH MUQDAM
+059E;CM # HEBREW ACCENT GERSHAYIM
+059F;CM # HEBREW ACCENT QARNEY PARA
+05A0;CM # HEBREW ACCENT TELISHA GEDOLA
+05A1;CM # HEBREW ACCENT PAZER
+05A2;CM # HEBREW ACCENT ATNAH HAFUKH
+05A3;CM # HEBREW ACCENT MUNAH
+05A4;CM # HEBREW ACCENT MAHAPAKH
+05A5;CM # HEBREW ACCENT MERKHA
+05A6;CM # HEBREW ACCENT MERKHA KEFULA
+05A7;CM # HEBREW ACCENT DARGA
+05A8;CM # HEBREW ACCENT QADMA
+05A9;CM # HEBREW ACCENT TELISHA QETANA
+05AA;CM # HEBREW ACCENT YERAH BEN YOMO
+05AB;CM # HEBREW ACCENT OLE
+05AC;CM # HEBREW ACCENT ILUY
+05AD;CM # HEBREW ACCENT DEHI
+05AE;CM # HEBREW ACCENT ZINOR
+05AF;CM # HEBREW MARK MASORA CIRCLE
+05B0;CM # HEBREW POINT SHEVA
+05B1;CM # HEBREW POINT HATAF SEGOL
+05B2;CM # HEBREW POINT HATAF PATAH
+05B3;CM # HEBREW POINT HATAF QAMATS
+05B4;CM # HEBREW POINT HIRIQ
+05B5;CM # HEBREW POINT TSERE
+05B6;CM # HEBREW POINT SEGOL
+05B7;CM # HEBREW POINT PATAH
+05B8;CM # HEBREW POINT QAMATS
+05B9;CM # HEBREW POINT HOLAM
+05BA;CM # HEBREW POINT HOLAM HASER FOR VAV
+05BB;CM # HEBREW POINT QUBUTS
+05BC;CM # HEBREW POINT DAGESH OR MAPIQ
+05BD;CM # HEBREW POINT METEG
+05BE;BA # HEBREW PUNCTUATION MAQAF
+05BF;CM # HEBREW POINT RAFE
+05C0;AL # HEBREW PUNCTUATION PASEQ
+05C1;CM # HEBREW POINT SHIN DOT
+05C2;CM # HEBREW POINT SIN DOT
+05C3;AL # HEBREW PUNCTUATION SOF PASUQ
+05C4;CM # HEBREW MARK UPPER DOT
+05C5;CM # HEBREW MARK LOWER DOT
+05C6;EX # HEBREW PUNCTUATION NUN HAFUKHA
+05C7;CM # HEBREW POINT QAMATS QATAN
+05D0;AL # HEBREW LETTER ALEF
+05D1;AL # HEBREW LETTER BET
+05D2;AL # HEBREW LETTER GIMEL
+05D3;AL # HEBREW LETTER DALET
+05D4;AL # HEBREW LETTER HE
+05D5;AL # HEBREW LETTER VAV
+05D6;AL # HEBREW LETTER ZAYIN
+05D7;AL # HEBREW LETTER HET
+05D8;AL # HEBREW LETTER TET
+05D9;AL # HEBREW LETTER YOD
+05DA;AL # HEBREW LETTER FINAL KAF
+05DB;AL # HEBREW LETTER KAF
+05DC;AL # HEBREW LETTER LAMED
+05DD;AL # HEBREW LETTER FINAL MEM
+05DE;AL # HEBREW LETTER MEM
+05DF;AL # HEBREW LETTER FINAL NUN
+05E0;AL # HEBREW LETTER NUN
+05E1;AL # HEBREW LETTER SAMEKH
+05E2;AL # HEBREW LETTER AYIN
+05E3;AL # HEBREW LETTER FINAL PE
+05E4;AL # HEBREW LETTER PE
+05E5;AL # HEBREW LETTER FINAL TSADI
+05E6;AL # HEBREW LETTER TSADI
+05E7;AL # HEBREW LETTER QOF
+05E8;AL # HEBREW LETTER RESH
+05E9;AL # HEBREW LETTER SHIN
+05EA;AL # HEBREW LETTER TAV
+05F0;AL # HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1;AL # HEBREW LIGATURE YIDDISH VAV YOD
+05F2;AL # HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3;AL # HEBREW PUNCTUATION GERESH
+05F4;AL # HEBREW PUNCTUATION GERSHAYIM
+0600;AL # ARABIC NUMBER SIGN
+0601;AL # ARABIC SIGN SANAH
+0602;AL # ARABIC FOOTNOTE MARKER
+0603;AL # ARABIC SIGN SAFHA
+060B;PO # AFGHANI SIGN
+060C;EX # ARABIC COMMA
+060D;IS # ARABIC DATE SEPARATOR
+060E;AL # ARABIC POETIC VERSE SIGN
+060F;AL # ARABIC SIGN MISRA
+0610;CM # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
+0611;CM # ARABIC SIGN ALAYHE ASSALLAM
+0612;CM # ARABIC SIGN RAHMATULLAH ALAYHE
+0613;CM # ARABIC SIGN RADI ALLAHOU ANHU
+0614;CM # ARABIC SIGN TAKHALLUS
+0615;CM # ARABIC SMALL HIGH TAH
+061B;EX # ARABIC SEMICOLON
+061E;EX # ARABIC TRIPLE DOT PUNCTUATION MARK
+061F;EX # ARABIC QUESTION MARK
+0621;AL # ARABIC LETTER HAMZA
+0622;AL # ARABIC LETTER ALEF WITH MADDA ABOVE
+0623;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0624;AL # ARABIC LETTER WAW WITH HAMZA ABOVE
+0625;AL # ARABIC LETTER ALEF WITH HAMZA BELOW
+0626;AL # ARABIC LETTER YEH WITH HAMZA ABOVE
+0627;AL # ARABIC LETTER ALEF
+0628;AL # ARABIC LETTER BEH
+0629;AL # ARABIC LETTER TEH MARBUTA
+062A;AL # ARABIC LETTER TEH
+062B;AL # ARABIC LETTER THEH
+062C;AL # ARABIC LETTER JEEM
+062D;AL # ARABIC LETTER HAH
+062E;AL # ARABIC LETTER KHAH
+062F;AL # ARABIC LETTER DAL
+0630;AL # ARABIC LETTER THAL
+0631;AL # ARABIC LETTER REH
+0632;AL # ARABIC LETTER ZAIN
+0633;AL # ARABIC LETTER SEEN
+0634;AL # ARABIC LETTER SHEEN
+0635;AL # ARABIC LETTER SAD
+0636;AL # ARABIC LETTER DAD
+0637;AL # ARABIC LETTER TAH
+0638;AL # ARABIC LETTER ZAH
+0639;AL # ARABIC LETTER AIN
+063A;AL # ARABIC LETTER GHAIN
+0640;AL # ARABIC TATWEEL
+0641;AL # ARABIC LETTER FEH
+0642;AL # ARABIC LETTER QAF
+0643;AL # ARABIC LETTER KAF
+0644;AL # ARABIC LETTER LAM
+0645;AL # ARABIC LETTER MEEM
+0646;AL # ARABIC LETTER NOON
+0647;AL # ARABIC LETTER HEH
+0648;AL # ARABIC LETTER WAW
+0649;AL # ARABIC LETTER ALEF MAKSURA
+064A;AL # ARABIC LETTER YEH
+064B;CM # ARABIC FATHATAN
+064C;CM # ARABIC DAMMATAN
+064D;CM # ARABIC KASRATAN
+064E;CM # ARABIC FATHA
+064F;CM # ARABIC DAMMA
+0650;CM # ARABIC KASRA
+0651;CM # ARABIC SHADDA
+0652;CM # ARABIC SUKUN
+0653;CM # ARABIC MADDAH ABOVE
+0654;CM # ARABIC HAMZA ABOVE
+0655;CM # ARABIC HAMZA BELOW
+0656;CM # ARABIC SUBSCRIPT ALEF
+0657;CM # ARABIC INVERTED DAMMA
+0658;CM # ARABIC MARK NOON GHUNNA
+0659;CM # ARABIC ZWARAKAY
+065A;CM # ARABIC VOWEL SIGN SMALL V ABOVE
+065B;CM # ARABIC VOWEL SIGN INVERTED SMALL V ABOVE
+065C;CM # ARABIC VOWEL SIGN DOT BELOW
+065D;CM # ARABIC REVERSED DAMMA
+065E;CM # ARABIC FATHA WITH TWO DOTS
+0660;NU # ARABIC-INDIC DIGIT ZERO
+0661;NU # ARABIC-INDIC DIGIT ONE
+0662;NU # ARABIC-INDIC DIGIT TWO
+0663;NU # ARABIC-INDIC DIGIT THREE
+0664;NU # ARABIC-INDIC DIGIT FOUR
+0665;NU # ARABIC-INDIC DIGIT FIVE
+0666;NU # ARABIC-INDIC DIGIT SIX
+0667;NU # ARABIC-INDIC DIGIT SEVEN
+0668;NU # ARABIC-INDIC DIGIT EIGHT
+0669;NU # ARABIC-INDIC DIGIT NINE
+066A;EX # ARABIC PERCENT SIGN
+066B;NU # ARABIC DECIMAL SEPARATOR
+066C;NU # ARABIC THOUSANDS SEPARATOR
+066D;AL # ARABIC FIVE POINTED STAR
+066E;AL # ARABIC LETTER DOTLESS BEH
+066F;AL # ARABIC LETTER DOTLESS QAF
+0670;CM # ARABIC LETTER SUPERSCRIPT ALEF
+0671;AL # ARABIC LETTER ALEF WASLA
+0672;AL # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0673;AL # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0674;AL # ARABIC LETTER HIGH HAMZA
+0675;AL # ARABIC LETTER HIGH HAMZA ALEF
+0676;AL # ARABIC LETTER HIGH HAMZA WAW
+0677;AL # ARABIC LETTER U WITH HAMZA ABOVE
+0678;AL # ARABIC LETTER HIGH HAMZA YEH
+0679;AL # ARABIC LETTER TTEH
+067A;AL # ARABIC LETTER TTEHEH
+067B;AL # ARABIC LETTER BEEH
+067C;AL # ARABIC LETTER TEH WITH RING
+067D;AL # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+067E;AL # ARABIC LETTER PEH
+067F;AL # ARABIC LETTER TEHEH
+0680;AL # ARABIC LETTER BEHEH
+0681;AL # ARABIC LETTER HAH WITH HAMZA ABOVE
+0682;AL # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+0683;AL # ARABIC LETTER NYEH
+0684;AL # ARABIC LETTER DYEH
+0685;AL # ARABIC LETTER HAH WITH THREE DOTS ABOVE
+0686;AL # ARABIC LETTER TCHEH
+0687;AL # ARABIC LETTER TCHEHEH
+0688;AL # ARABIC LETTER DDAL
+0689;AL # ARABIC LETTER DAL WITH RING
+068A;AL # ARABIC LETTER DAL WITH DOT BELOW
+068B;AL # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+068C;AL # ARABIC LETTER DAHAL
+068D;AL # ARABIC LETTER DDAHAL
+068E;AL # ARABIC LETTER DUL
+068F;AL # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+0690;AL # ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+0691;AL # ARABIC LETTER RREH
+0692;AL # ARABIC LETTER REH WITH SMALL V
+0693;AL # ARABIC LETTER REH WITH RING
+0694;AL # ARABIC LETTER REH WITH DOT BELOW
+0695;AL # ARABIC LETTER REH WITH SMALL V BELOW
+0696;AL # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+0697;AL # ARABIC LETTER REH WITH TWO DOTS ABOVE
+0698;AL # ARABIC LETTER JEH
+0699;AL # ARABIC LETTER REH WITH FOUR DOTS ABOVE
+069A;AL # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+069B;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW
+069C;AL # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+069D;AL # ARABIC LETTER SAD WITH TWO DOTS BELOW
+069E;AL # ARABIC LETTER SAD WITH THREE DOTS ABOVE
+069F;AL # ARABIC LETTER TAH WITH THREE DOTS ABOVE
+06A0;AL # ARABIC LETTER AIN WITH THREE DOTS ABOVE
+06A1;AL # ARABIC LETTER DOTLESS FEH
+06A2;AL # ARABIC LETTER FEH WITH DOT MOVED BELOW
+06A3;AL # ARABIC LETTER FEH WITH DOT BELOW
+06A4;AL # ARABIC LETTER VEH
+06A5;AL # ARABIC LETTER FEH WITH THREE DOTS BELOW
+06A6;AL # ARABIC LETTER PEHEH
+06A7;AL # ARABIC LETTER QAF WITH DOT ABOVE
+06A8;AL # ARABIC LETTER QAF WITH THREE DOTS ABOVE
+06A9;AL # ARABIC LETTER KEHEH
+06AA;AL # ARABIC LETTER SWASH KAF
+06AB;AL # ARABIC LETTER KAF WITH RING
+06AC;AL # ARABIC LETTER KAF WITH DOT ABOVE
+06AD;AL # ARABIC LETTER NG
+06AE;AL # ARABIC LETTER KAF WITH THREE DOTS BELOW
+06AF;AL # ARABIC LETTER GAF
+06B0;AL # ARABIC LETTER GAF WITH RING
+06B1;AL # ARABIC LETTER NGOEH
+06B2;AL # ARABIC LETTER GAF WITH TWO DOTS BELOW
+06B3;AL # ARABIC LETTER GUEH
+06B4;AL # ARABIC LETTER GAF WITH THREE DOTS ABOVE
+06B5;AL # ARABIC LETTER LAM WITH SMALL V
+06B6;AL # ARABIC LETTER LAM WITH DOT ABOVE
+06B7;AL # ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06B8;AL # ARABIC LETTER LAM WITH THREE DOTS BELOW
+06B9;AL # ARABIC LETTER NOON WITH DOT BELOW
+06BA;AL # ARABIC LETTER NOON GHUNNA
+06BB;AL # ARABIC LETTER RNOON
+06BC;AL # ARABIC LETTER NOON WITH RING
+06BD;AL # ARABIC LETTER NOON WITH THREE DOTS ABOVE
+06BE;AL # ARABIC LETTER HEH DOACHASHMEE
+06BF;AL # ARABIC LETTER TCHEH WITH DOT ABOVE
+06C0;AL # ARABIC LETTER HEH WITH YEH ABOVE
+06C1;AL # ARABIC LETTER HEH GOAL
+06C2;AL # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C3;AL # ARABIC LETTER TEH MARBUTA GOAL
+06C4;AL # ARABIC LETTER WAW WITH RING
+06C5;AL # ARABIC LETTER KIRGHIZ OE
+06C6;AL # ARABIC LETTER OE
+06C7;AL # ARABIC LETTER U
+06C8;AL # ARABIC LETTER YU
+06C9;AL # ARABIC LETTER KIRGHIZ YU
+06CA;AL # ARABIC LETTER WAW WITH TWO DOTS ABOVE
+06CB;AL # ARABIC LETTER VE
+06CC;AL # ARABIC LETTER FARSI YEH
+06CD;AL # ARABIC LETTER YEH WITH TAIL
+06CE;AL # ARABIC LETTER YEH WITH SMALL V
+06CF;AL # ARABIC LETTER WAW WITH DOT ABOVE
+06D0;AL # ARABIC LETTER E
+06D1;AL # ARABIC LETTER YEH WITH THREE DOTS BELOW
+06D2;AL # ARABIC LETTER YEH BARREE
+06D3;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D4;EX # ARABIC FULL STOP
+06D5;AL # ARABIC LETTER AE
+06D6;CM # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06D7;CM # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06D8;CM # ARABIC SMALL HIGH MEEM INITIAL FORM
+06D9;CM # ARABIC SMALL HIGH LAM ALEF
+06DA;CM # ARABIC SMALL HIGH JEEM
+06DB;CM # ARABIC SMALL HIGH THREE DOTS
+06DC;CM # ARABIC SMALL HIGH SEEN
+06DD;AL # ARABIC END OF AYAH
+06DE;CM # ARABIC START OF RUB EL HIZB
+06DF;CM # ARABIC SMALL HIGH ROUNDED ZERO
+06E0;CM # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06E1;CM # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06E2;CM # ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E3;CM # ARABIC SMALL LOW SEEN
+06E4;CM # ARABIC SMALL HIGH MADDA
+06E5;AL # ARABIC SMALL WAW
+06E6;AL # ARABIC SMALL YEH
+06E7;CM # ARABIC SMALL HIGH YEH
+06E8;CM # ARABIC SMALL HIGH NOON
+06E9;AL # ARABIC PLACE OF SAJDAH
+06EA;CM # ARABIC EMPTY CENTRE LOW STOP
+06EB;CM # ARABIC EMPTY CENTRE HIGH STOP
+06EC;CM # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ED;CM # ARABIC SMALL LOW MEEM
+06EE;AL # ARABIC LETTER DAL WITH INVERTED V
+06EF;AL # ARABIC LETTER REH WITH INVERTED V
+06F0;NU # EXTENDED ARABIC-INDIC DIGIT ZERO
+06F1;NU # EXTENDED ARABIC-INDIC DIGIT ONE
+06F2;NU # EXTENDED ARABIC-INDIC DIGIT TWO
+06F3;NU # EXTENDED ARABIC-INDIC DIGIT THREE
+06F4;NU # EXTENDED ARABIC-INDIC DIGIT FOUR
+06F5;NU # EXTENDED ARABIC-INDIC DIGIT FIVE
+06F6;NU # EXTENDED ARABIC-INDIC DIGIT SIX
+06F7;NU # EXTENDED ARABIC-INDIC DIGIT SEVEN
+06F8;NU # EXTENDED ARABIC-INDIC DIGIT EIGHT
+06F9;NU # EXTENDED ARABIC-INDIC DIGIT NINE
+06FA;AL # ARABIC LETTER SHEEN WITH DOT BELOW
+06FB;AL # ARABIC LETTER DAD WITH DOT BELOW
+06FC;AL # ARABIC LETTER GHAIN WITH DOT BELOW
+06FD;AL # ARABIC SIGN SINDHI AMPERSAND
+06FE;AL # ARABIC SIGN SINDHI POSTPOSITION MEN
+06FF;AL # ARABIC LETTER HEH WITH INVERTED V
+0700;AL # SYRIAC END OF PARAGRAPH
+0701;AL # SYRIAC SUPRALINEAR FULL STOP
+0702;AL # SYRIAC SUBLINEAR FULL STOP
+0703;AL # SYRIAC SUPRALINEAR COLON
+0704;AL # SYRIAC SUBLINEAR COLON
+0705;AL # SYRIAC HORIZONTAL COLON
+0706;AL # SYRIAC COLON SKEWED LEFT
+0707;AL # SYRIAC COLON SKEWED RIGHT
+0708;AL # SYRIAC SUPRALINEAR COLON SKEWED LEFT
+0709;AL # SYRIAC SUBLINEAR COLON SKEWED RIGHT
+070A;AL # SYRIAC CONTRACTION
+070B;AL # SYRIAC HARKLEAN OBELUS
+070C;AL # SYRIAC HARKLEAN METOBELUS
+070D;AL # SYRIAC HARKLEAN ASTERISCUS
+070F;AL # SYRIAC ABBREVIATION MARK
+0710;AL # SYRIAC LETTER ALAPH
+0711;CM # SYRIAC LETTER SUPERSCRIPT ALAPH
+0712;AL # SYRIAC LETTER BETH
+0713;AL # SYRIAC LETTER GAMAL
+0714;AL # SYRIAC LETTER GAMAL GARSHUNI
+0715;AL # SYRIAC LETTER DALATH
+0716;AL # SYRIAC LETTER DOTLESS DALATH RISH
+0717;AL # SYRIAC LETTER HE
+0718;AL # SYRIAC LETTER WAW
+0719;AL # SYRIAC LETTER ZAIN
+071A;AL # SYRIAC LETTER HETH
+071B;AL # SYRIAC LETTER TETH
+071C;AL # SYRIAC LETTER TETH GARSHUNI
+071D;AL # SYRIAC LETTER YUDH
+071E;AL # SYRIAC LETTER YUDH HE
+071F;AL # SYRIAC LETTER KAPH
+0720;AL # SYRIAC LETTER LAMADH
+0721;AL # SYRIAC LETTER MIM
+0722;AL # SYRIAC LETTER NUN
+0723;AL # SYRIAC LETTER SEMKATH
+0724;AL # SYRIAC LETTER FINAL SEMKATH
+0725;AL # SYRIAC LETTER E
+0726;AL # SYRIAC LETTER PE
+0727;AL # SYRIAC LETTER REVERSED PE
+0728;AL # SYRIAC LETTER SADHE
+0729;AL # SYRIAC LETTER QAPH
+072A;AL # SYRIAC LETTER RISH
+072B;AL # SYRIAC LETTER SHIN
+072C;AL # SYRIAC LETTER TAW
+072D;AL # SYRIAC LETTER PERSIAN BHETH
+072E;AL # SYRIAC LETTER PERSIAN GHAMAL
+072F;AL # SYRIAC LETTER PERSIAN DHALATH
+0730;CM # SYRIAC PTHAHA ABOVE
+0731;CM # SYRIAC PTHAHA BELOW
+0732;CM # SYRIAC PTHAHA DOTTED
+0733;CM # SYRIAC ZQAPHA ABOVE
+0734;CM # SYRIAC ZQAPHA BELOW
+0735;CM # SYRIAC ZQAPHA DOTTED
+0736;CM # SYRIAC RBASA ABOVE
+0737;CM # SYRIAC RBASA BELOW
+0738;CM # SYRIAC DOTTED ZLAMA HORIZONTAL
+0739;CM # SYRIAC DOTTED ZLAMA ANGULAR
+073A;CM # SYRIAC HBASA ABOVE
+073B;CM # SYRIAC HBASA BELOW
+073C;CM # SYRIAC HBASA-ESASA DOTTED
+073D;CM # SYRIAC ESASA ABOVE
+073E;CM # SYRIAC ESASA BELOW
+073F;CM # SYRIAC RWAHA
+0740;CM # SYRIAC FEMININE DOT
+0741;CM # SYRIAC QUSHSHAYA
+0742;CM # SYRIAC RUKKAKHA
+0743;CM # SYRIAC TWO VERTICAL DOTS ABOVE
+0744;CM # SYRIAC TWO VERTICAL DOTS BELOW
+0745;CM # SYRIAC THREE DOTS ABOVE
+0746;CM # SYRIAC THREE DOTS BELOW
+0747;CM # SYRIAC OBLIQUE LINE ABOVE
+0748;CM # SYRIAC OBLIQUE LINE BELOW
+0749;CM # SYRIAC MUSIC
+074A;CM # SYRIAC BARREKH
+074D;AL # SYRIAC LETTER SOGDIAN ZHAIN
+074E;AL # SYRIAC LETTER SOGDIAN KHAPH
+074F;AL # SYRIAC LETTER SOGDIAN FE
+0750;AL # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
+0751;AL # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
+0752;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
+0753;AL # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
+0754;AL # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
+0755;AL # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
+0756;AL # ARABIC LETTER BEH WITH SMALL V
+0757;AL # ARABIC LETTER HAH WITH TWO DOTS ABOVE
+0758;AL # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
+0759;AL # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
+075A;AL # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
+075B;AL # ARABIC LETTER REH WITH STROKE
+075C;AL # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
+075D;AL # ARABIC LETTER AIN WITH TWO DOTS ABOVE
+075E;AL # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
+075F;AL # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
+0760;AL # ARABIC LETTER FEH WITH TWO DOTS BELOW
+0761;AL # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
+0762;AL # ARABIC LETTER KEHEH WITH DOT ABOVE
+0763;AL # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
+0764;AL # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
+0765;AL # ARABIC LETTER MEEM WITH DOT ABOVE
+0766;AL # ARABIC LETTER MEEM WITH DOT BELOW
+0767;AL # ARABIC LETTER NOON WITH TWO DOTS BELOW
+0768;AL # ARABIC LETTER NOON WITH SMALL TAH
+0769;AL # ARABIC LETTER NOON WITH SMALL V
+076A;AL # ARABIC LETTER LAM WITH BAR
+076B;AL # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
+076C;AL # ARABIC LETTER REH WITH HAMZA ABOVE
+076D;AL # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+0780;AL # THAANA LETTER HAA
+0781;AL # THAANA LETTER SHAVIYANI
+0782;AL # THAANA LETTER NOONU
+0783;AL # THAANA LETTER RAA
+0784;AL # THAANA LETTER BAA
+0785;AL # THAANA LETTER LHAVIYANI
+0786;AL # THAANA LETTER KAAFU
+0787;AL # THAANA LETTER ALIFU
+0788;AL # THAANA LETTER VAAVU
+0789;AL # THAANA LETTER MEEMU
+078A;AL # THAANA LETTER FAAFU
+078B;AL # THAANA LETTER DHAALU
+078C;AL # THAANA LETTER THAA
+078D;AL # THAANA LETTER LAAMU
+078E;AL # THAANA LETTER GAAFU
+078F;AL # THAANA LETTER GNAVIYANI
+0790;AL # THAANA LETTER SEENU
+0791;AL # THAANA LETTER DAVIYANI
+0792;AL # THAANA LETTER ZAVIYANI
+0793;AL # THAANA LETTER TAVIYANI
+0794;AL # THAANA LETTER YAA
+0795;AL # THAANA LETTER PAVIYANI
+0796;AL # THAANA LETTER JAVIYANI
+0797;AL # THAANA LETTER CHAVIYANI
+0798;AL # THAANA LETTER TTAA
+0799;AL # THAANA LETTER HHAA
+079A;AL # THAANA LETTER KHAA
+079B;AL # THAANA LETTER THAALU
+079C;AL # THAANA LETTER ZAA
+079D;AL # THAANA LETTER SHEENU
+079E;AL # THAANA LETTER SAADHU
+079F;AL # THAANA LETTER DAADHU
+07A0;AL # THAANA LETTER TO
+07A1;AL # THAANA LETTER ZO
+07A2;AL # THAANA LETTER AINU
+07A3;AL # THAANA LETTER GHAINU
+07A4;AL # THAANA LETTER QAAFU
+07A5;AL # THAANA LETTER WAAVU
+07A6;CM # THAANA ABAFILI
+07A7;CM # THAANA AABAAFILI
+07A8;CM # THAANA IBIFILI
+07A9;CM # THAANA EEBEEFILI
+07AA;CM # THAANA UBUFILI
+07AB;CM # THAANA OOBOOFILI
+07AC;CM # THAANA EBEFILI
+07AD;CM # THAANA EYBEYFILI
+07AE;CM # THAANA OBOFILI
+07AF;CM # THAANA OABOAFILI
+07B0;CM # THAANA SUKUN
+07B1;AL # THAANA LETTER NAA
+07C0;NU # NKO DIGIT ZERO
+07C1;NU # NKO DIGIT ONE
+07C2;NU # NKO DIGIT TWO
+07C3;NU # NKO DIGIT THREE
+07C4;NU # NKO DIGIT FOUR
+07C5;NU # NKO DIGIT FIVE
+07C6;NU # NKO DIGIT SIX
+07C7;NU # NKO DIGIT SEVEN
+07C8;NU # NKO DIGIT EIGHT
+07C9;NU # NKO DIGIT NINE
+07CA;AL # NKO LETTER A
+07CB;AL # NKO LETTER EE
+07CC;AL # NKO LETTER I
+07CD;AL # NKO LETTER E
+07CE;AL # NKO LETTER U
+07CF;AL # NKO LETTER OO
+07D0;AL # NKO LETTER O
+07D1;AL # NKO LETTER DAGBASINNA
+07D2;AL # NKO LETTER N
+07D3;AL # NKO LETTER BA
+07D4;AL # NKO LETTER PA
+07D5;AL # NKO LETTER TA
+07D6;AL # NKO LETTER JA
+07D7;AL # NKO LETTER CHA
+07D8;AL # NKO LETTER DA
+07D9;AL # NKO LETTER RA
+07DA;AL # NKO LETTER RRA
+07DB;AL # NKO LETTER SA
+07DC;AL # NKO LETTER GBA
+07DD;AL # NKO LETTER FA
+07DE;AL # NKO LETTER KA
+07DF;AL # NKO LETTER LA
+07E0;AL # NKO LETTER NA WOLOSO
+07E1;AL # NKO LETTER MA
+07E2;AL # NKO LETTER NYA
+07E3;AL # NKO LETTER NA
+07E4;AL # NKO LETTER HA
+07E5;AL # NKO LETTER WA
+07E6;AL # NKO LETTER YA
+07E7;AL # NKO LETTER NYA WOLOSO
+07E8;AL # NKO LETTER JONA JA
+07E9;AL # NKO LETTER JONA CHA
+07EA;AL # NKO LETTER JONA RA
+07EB;CM # NKO COMBINING SHORT HIGH TONE
+07EC;CM # NKO COMBINING SHORT LOW TONE
+07ED;CM # NKO COMBINING SHORT RISING TONE
+07EE;CM # NKO COMBINING LONG DESCENDING TONE
+07EF;CM # NKO COMBINING LONG HIGH TONE
+07F0;CM # NKO COMBINING LONG LOW TONE
+07F1;CM # NKO COMBINING LONG RISING TONE
+07F2;CM # NKO COMBINING NASALIZATION MARK
+07F3;CM # NKO COMBINING DOUBLE DOT ABOVE
+07F4;AL # NKO HIGH TONE APOSTROPHE
+07F5;AL # NKO LOW TONE APOSTROPHE
+07F6;AL # NKO SYMBOL OO DENNEN
+07F7;AL # NKO SYMBOL GBAKURUNEN
+07F8;IS # NKO COMMA
+07F9;EX # NKO EXCLAMATION MARK
+07FA;AL # NKO LAJANYALAN
+0901;CM # DEVANAGARI SIGN CANDRABINDU
+0902;CM # DEVANAGARI SIGN ANUSVARA
+0903;CM # DEVANAGARI SIGN VISARGA
+0904;AL # DEVANAGARI LETTER SHORT A
+0905;AL # DEVANAGARI LETTER A
+0906;AL # DEVANAGARI LETTER AA
+0907;AL # DEVANAGARI LETTER I
+0908;AL # DEVANAGARI LETTER II
+0909;AL # DEVANAGARI LETTER U
+090A;AL # DEVANAGARI LETTER UU
+090B;AL # DEVANAGARI LETTER VOCALIC R
+090C;AL # DEVANAGARI LETTER VOCALIC L
+090D;AL # DEVANAGARI LETTER CANDRA E
+090E;AL # DEVANAGARI LETTER SHORT E
+090F;AL # DEVANAGARI LETTER E
+0910;AL # DEVANAGARI LETTER AI
+0911;AL # DEVANAGARI LETTER CANDRA O
+0912;AL # DEVANAGARI LETTER SHORT O
+0913;AL # DEVANAGARI LETTER O
+0914;AL # DEVANAGARI LETTER AU
+0915;AL # DEVANAGARI LETTER KA
+0916;AL # DEVANAGARI LETTER KHA
+0917;AL # DEVANAGARI LETTER GA
+0918;AL # DEVANAGARI LETTER GHA
+0919;AL # DEVANAGARI LETTER NGA
+091A;AL # DEVANAGARI LETTER CA
+091B;AL # DEVANAGARI LETTER CHA
+091C;AL # DEVANAGARI LETTER JA
+091D;AL # DEVANAGARI LETTER JHA
+091E;AL # DEVANAGARI LETTER NYA
+091F;AL # DEVANAGARI LETTER TTA
+0920;AL # DEVANAGARI LETTER TTHA
+0921;AL # DEVANAGARI LETTER DDA
+0922;AL # DEVANAGARI LETTER DDHA
+0923;AL # DEVANAGARI LETTER NNA
+0924;AL # DEVANAGARI LETTER TA
+0925;AL # DEVANAGARI LETTER THA
+0926;AL # DEVANAGARI LETTER DA
+0927;AL # DEVANAGARI LETTER DHA
+0928;AL # DEVANAGARI LETTER NA
+0929;AL # DEVANAGARI LETTER NNNA
+092A;AL # DEVANAGARI LETTER PA
+092B;AL # DEVANAGARI LETTER PHA
+092C;AL # DEVANAGARI LETTER BA
+092D;AL # DEVANAGARI LETTER BHA
+092E;AL # DEVANAGARI LETTER MA
+092F;AL # DEVANAGARI LETTER YA
+0930;AL # DEVANAGARI LETTER RA
+0931;AL # DEVANAGARI LETTER RRA
+0932;AL # DEVANAGARI LETTER LA
+0933;AL # DEVANAGARI LETTER LLA
+0934;AL # DEVANAGARI LETTER LLLA
+0935;AL # DEVANAGARI LETTER VA
+0936;AL # DEVANAGARI LETTER SHA
+0937;AL # DEVANAGARI LETTER SSA
+0938;AL # DEVANAGARI LETTER SA
+0939;AL # DEVANAGARI LETTER HA
+093C;CM # DEVANAGARI SIGN NUKTA
+093D;AL # DEVANAGARI SIGN AVAGRAHA
+093E;CM # DEVANAGARI VOWEL SIGN AA
+093F;CM # DEVANAGARI VOWEL SIGN I
+0940;CM # DEVANAGARI VOWEL SIGN II
+0941;CM # DEVANAGARI VOWEL SIGN U
+0942;CM # DEVANAGARI VOWEL SIGN UU
+0943;CM # DEVANAGARI VOWEL SIGN VOCALIC R
+0944;CM # DEVANAGARI VOWEL SIGN VOCALIC RR
+0945;CM # DEVANAGARI VOWEL SIGN CANDRA E
+0946;CM # DEVANAGARI VOWEL SIGN SHORT E
+0947;CM # DEVANAGARI VOWEL SIGN E
+0948;CM # DEVANAGARI VOWEL SIGN AI
+0949;CM # DEVANAGARI VOWEL SIGN CANDRA O
+094A;CM # DEVANAGARI VOWEL SIGN SHORT O
+094B;CM # DEVANAGARI VOWEL SIGN O
+094C;CM # DEVANAGARI VOWEL SIGN AU
+094D;CM # DEVANAGARI SIGN VIRAMA
+0950;AL # DEVANAGARI OM
+0951;CM # DEVANAGARI STRESS SIGN UDATTA
+0952;CM # DEVANAGARI STRESS SIGN ANUDATTA
+0953;CM # DEVANAGARI GRAVE ACCENT
+0954;CM # DEVANAGARI ACUTE ACCENT
+0958;AL # DEVANAGARI LETTER QA
+0959;AL # DEVANAGARI LETTER KHHA
+095A;AL # DEVANAGARI LETTER GHHA
+095B;AL # DEVANAGARI LETTER ZA
+095C;AL # DEVANAGARI LETTER DDDHA
+095D;AL # DEVANAGARI LETTER RHA
+095E;AL # DEVANAGARI LETTER FA
+095F;AL # DEVANAGARI LETTER YYA
+0960;AL # DEVANAGARI LETTER VOCALIC RR
+0961;AL # DEVANAGARI LETTER VOCALIC LL
+0962;CM # DEVANAGARI VOWEL SIGN VOCALIC L
+0963;CM # DEVANAGARI VOWEL SIGN VOCALIC LL
+0964;BA # DEVANAGARI DANDA
+0965;BA # DEVANAGARI DOUBLE DANDA
+0966;NU # DEVANAGARI DIGIT ZERO
+0967;NU # DEVANAGARI DIGIT ONE
+0968;NU # DEVANAGARI DIGIT TWO
+0969;NU # DEVANAGARI DIGIT THREE
+096A;NU # DEVANAGARI DIGIT FOUR
+096B;NU # DEVANAGARI DIGIT FIVE
+096C;NU # DEVANAGARI DIGIT SIX
+096D;NU # DEVANAGARI DIGIT SEVEN
+096E;NU # DEVANAGARI DIGIT EIGHT
+096F;NU # DEVANAGARI DIGIT NINE
+0970;AL # DEVANAGARI ABBREVIATION SIGN
+097B;AL # DEVANAGARI LETTER GGA
+097C;AL # DEVANAGARI LETTER JJA
+097D;AL # DEVANAGARI LETTER GLOTTAL STOP
+097E;AL # DEVANAGARI LETTER DDDA
+097F;AL # DEVANAGARI LETTER BBA
+0981;CM # BENGALI SIGN CANDRABINDU
+0982;CM # BENGALI SIGN ANUSVARA
+0983;CM # BENGALI SIGN VISARGA
+0985;AL # BENGALI LETTER A
+0986;AL # BENGALI LETTER AA
+0987;AL # BENGALI LETTER I
+0988;AL # BENGALI LETTER II
+0989;AL # BENGALI LETTER U
+098A;AL # BENGALI LETTER UU
+098B;AL # BENGALI LETTER VOCALIC R
+098C;AL # BENGALI LETTER VOCALIC L
+098F;AL # BENGALI LETTER E
+0990;AL # BENGALI LETTER AI
+0993;AL # BENGALI LETTER O
+0994;AL # BENGALI LETTER AU
+0995;AL # BENGALI LETTER KA
+0996;AL # BENGALI LETTER KHA
+0997;AL # BENGALI LETTER GA
+0998;AL # BENGALI LETTER GHA
+0999;AL # BENGALI LETTER NGA
+099A;AL # BENGALI LETTER CA
+099B;AL # BENGALI LETTER CHA
+099C;AL # BENGALI LETTER JA
+099D;AL # BENGALI LETTER JHA
+099E;AL # BENGALI LETTER NYA
+099F;AL # BENGALI LETTER TTA
+09A0;AL # BENGALI LETTER TTHA
+09A1;AL # BENGALI LETTER DDA
+09A2;AL # BENGALI LETTER DDHA
+09A3;AL # BENGALI LETTER NNA
+09A4;AL # BENGALI LETTER TA
+09A5;AL # BENGALI LETTER THA
+09A6;AL # BENGALI LETTER DA
+09A7;AL # BENGALI LETTER DHA
+09A8;AL # BENGALI LETTER NA
+09AA;AL # BENGALI LETTER PA
+09AB;AL # BENGALI LETTER PHA
+09AC;AL # BENGALI LETTER BA
+09AD;AL # BENGALI LETTER BHA
+09AE;AL # BENGALI LETTER MA
+09AF;AL # BENGALI LETTER YA
+09B0;AL # BENGALI LETTER RA
+09B2;AL # BENGALI LETTER LA
+09B6;AL # BENGALI LETTER SHA
+09B7;AL # BENGALI LETTER SSA
+09B8;AL # BENGALI LETTER SA
+09B9;AL # BENGALI LETTER HA
+09BC;CM # BENGALI SIGN NUKTA
+09BD;AL # BENGALI SIGN AVAGRAHA
+09BE;CM # BENGALI VOWEL SIGN AA
+09BF;CM # BENGALI VOWEL SIGN I
+09C0;CM # BENGALI VOWEL SIGN II
+09C1;CM # BENGALI VOWEL SIGN U
+09C2;CM # BENGALI VOWEL SIGN UU
+09C3;CM # BENGALI VOWEL SIGN VOCALIC R
+09C4;CM # BENGALI VOWEL SIGN VOCALIC RR
+09C7;CM # BENGALI VOWEL SIGN E
+09C8;CM # BENGALI VOWEL SIGN AI
+09CB;CM # BENGALI VOWEL SIGN O
+09CC;CM # BENGALI VOWEL SIGN AU
+09CD;CM # BENGALI SIGN VIRAMA
+09CE;AL # BENGALI LETTER KHANDA TA
+09D7;CM # BENGALI AU LENGTH MARK
+09DC;AL # BENGALI LETTER RRA
+09DD;AL # BENGALI LETTER RHA
+09DF;AL # BENGALI LETTER YYA
+09E0;AL # BENGALI LETTER VOCALIC RR
+09E1;AL # BENGALI LETTER VOCALIC LL
+09E2;CM # BENGALI VOWEL SIGN VOCALIC L
+09E3;CM # BENGALI VOWEL SIGN VOCALIC LL
+09E6;NU # BENGALI DIGIT ZERO
+09E7;NU # BENGALI DIGIT ONE
+09E8;NU # BENGALI DIGIT TWO
+09E9;NU # BENGALI DIGIT THREE
+09EA;NU # BENGALI DIGIT FOUR
+09EB;NU # BENGALI DIGIT FIVE
+09EC;NU # BENGALI DIGIT SIX
+09ED;NU # BENGALI DIGIT SEVEN
+09EE;NU # BENGALI DIGIT EIGHT
+09EF;NU # BENGALI DIGIT NINE
+09F0;AL # BENGALI LETTER RA WITH MIDDLE DIAGONAL
+09F1;AL # BENGALI LETTER RA WITH LOWER DIAGONAL
+09F2;PR # BENGALI RUPEE MARK
+09F3;PR # BENGALI RUPEE SIGN
+09F4;AL # BENGALI CURRENCY NUMERATOR ONE
+09F5;AL # BENGALI CURRENCY NUMERATOR TWO
+09F6;AL # BENGALI CURRENCY NUMERATOR THREE
+09F7;AL # BENGALI CURRENCY NUMERATOR FOUR
+09F8;AL # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09F9;AL # BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA;AL # BENGALI ISSHAR
+0A01;CM # GURMUKHI SIGN ADAK BINDI
+0A02;CM # GURMUKHI SIGN BINDI
+0A03;CM # GURMUKHI SIGN VISARGA
+0A05;AL # GURMUKHI LETTER A
+0A06;AL # GURMUKHI LETTER AA
+0A07;AL # GURMUKHI LETTER I
+0A08;AL # GURMUKHI LETTER II
+0A09;AL # GURMUKHI LETTER U
+0A0A;AL # GURMUKHI LETTER UU
+0A0F;AL # GURMUKHI LETTER EE
+0A10;AL # GURMUKHI LETTER AI
+0A13;AL # GURMUKHI LETTER OO
+0A14;AL # GURMUKHI LETTER AU
+0A15;AL # GURMUKHI LETTER KA
+0A16;AL # GURMUKHI LETTER KHA
+0A17;AL # GURMUKHI LETTER GA
+0A18;AL # GURMUKHI LETTER GHA
+0A19;AL # GURMUKHI LETTER NGA
+0A1A;AL # GURMUKHI LETTER CA
+0A1B;AL # GURMUKHI LETTER CHA
+0A1C;AL # GURMUKHI LETTER JA
+0A1D;AL # GURMUKHI LETTER JHA
+0A1E;AL # GURMUKHI LETTER NYA
+0A1F;AL # GURMUKHI LETTER TTA
+0A20;AL # GURMUKHI LETTER TTHA
+0A21;AL # GURMUKHI LETTER DDA
+0A22;AL # GURMUKHI LETTER DDHA
+0A23;AL # GURMUKHI LETTER NNA
+0A24;AL # GURMUKHI LETTER TA
+0A25;AL # GURMUKHI LETTER THA
+0A26;AL # GURMUKHI LETTER DA
+0A27;AL # GURMUKHI LETTER DHA
+0A28;AL # GURMUKHI LETTER NA
+0A2A;AL # GURMUKHI LETTER PA
+0A2B;AL # GURMUKHI LETTER PHA
+0A2C;AL # GURMUKHI LETTER BA
+0A2D;AL # GURMUKHI LETTER BHA
+0A2E;AL # GURMUKHI LETTER MA
+0A2F;AL # GURMUKHI LETTER YA
+0A30;AL # GURMUKHI LETTER RA
+0A32;AL # GURMUKHI LETTER LA
+0A33;AL # GURMUKHI LETTER LLA
+0A35;AL # GURMUKHI LETTER VA
+0A36;AL # GURMUKHI LETTER SHA
+0A38;AL # GURMUKHI LETTER SA
+0A39;AL # GURMUKHI LETTER HA
+0A3C;CM # GURMUKHI SIGN NUKTA
+0A3E;CM # GURMUKHI VOWEL SIGN AA
+0A3F;CM # GURMUKHI VOWEL SIGN I
+0A40;CM # GURMUKHI VOWEL SIGN II
+0A41;CM # GURMUKHI VOWEL SIGN U
+0A42;CM # GURMUKHI VOWEL SIGN UU
+0A47;CM # GURMUKHI VOWEL SIGN EE
+0A48;CM # GURMUKHI VOWEL SIGN AI
+0A4B;CM # GURMUKHI VOWEL SIGN OO
+0A4C;CM # GURMUKHI VOWEL SIGN AU
+0A4D;CM # GURMUKHI SIGN VIRAMA
+0A59;AL # GURMUKHI LETTER KHHA
+0A5A;AL # GURMUKHI LETTER GHHA
+0A5B;AL # GURMUKHI LETTER ZA
+0A5C;AL # GURMUKHI LETTER RRA
+0A5E;AL # GURMUKHI LETTER FA
+0A66;NU # GURMUKHI DIGIT ZERO
+0A67;NU # GURMUKHI DIGIT ONE
+0A68;NU # GURMUKHI DIGIT TWO
+0A69;NU # GURMUKHI DIGIT THREE
+0A6A;NU # GURMUKHI DIGIT FOUR
+0A6B;NU # GURMUKHI DIGIT FIVE
+0A6C;NU # GURMUKHI DIGIT SIX
+0A6D;NU # GURMUKHI DIGIT SEVEN
+0A6E;NU # GURMUKHI DIGIT EIGHT
+0A6F;NU # GURMUKHI DIGIT NINE
+0A70;CM # GURMUKHI TIPPI
+0A71;CM # GURMUKHI ADDAK
+0A72;AL # GURMUKHI IRI
+0A73;AL # GURMUKHI URA
+0A74;AL # GURMUKHI EK ONKAR
+0A81;CM # GUJARATI SIGN CANDRABINDU
+0A82;CM # GUJARATI SIGN ANUSVARA
+0A83;CM # GUJARATI SIGN VISARGA
+0A85;AL # GUJARATI LETTER A
+0A86;AL # GUJARATI LETTER AA
+0A87;AL # GUJARATI LETTER I
+0A88;AL # GUJARATI LETTER II
+0A89;AL # GUJARATI LETTER U
+0A8A;AL # GUJARATI LETTER UU
+0A8B;AL # GUJARATI LETTER VOCALIC R
+0A8C;AL # GUJARATI LETTER VOCALIC L
+0A8D;AL # GUJARATI VOWEL CANDRA E
+0A8F;AL # GUJARATI LETTER E
+0A90;AL # GUJARATI LETTER AI
+0A91;AL # GUJARATI VOWEL CANDRA O
+0A93;AL # GUJARATI LETTER O
+0A94;AL # GUJARATI LETTER AU
+0A95;AL # GUJARATI LETTER KA
+0A96;AL # GUJARATI LETTER KHA
+0A97;AL # GUJARATI LETTER GA
+0A98;AL # GUJARATI LETTER GHA
+0A99;AL # GUJARATI LETTER NGA
+0A9A;AL # GUJARATI LETTER CA
+0A9B;AL # GUJARATI LETTER CHA
+0A9C;AL # GUJARATI LETTER JA
+0A9D;AL # GUJARATI LETTER JHA
+0A9E;AL # GUJARATI LETTER NYA
+0A9F;AL # GUJARATI LETTER TTA
+0AA0;AL # GUJARATI LETTER TTHA
+0AA1;AL # GUJARATI LETTER DDA
+0AA2;AL # GUJARATI LETTER DDHA
+0AA3;AL # GUJARATI LETTER NNA
+0AA4;AL # GUJARATI LETTER TA
+0AA5;AL # GUJARATI LETTER THA
+0AA6;AL # GUJARATI LETTER DA
+0AA7;AL # GUJARATI LETTER DHA
+0AA8;AL # GUJARATI LETTER NA
+0AAA;AL # GUJARATI LETTER PA
+0AAB;AL # GUJARATI LETTER PHA
+0AAC;AL # GUJARATI LETTER BA
+0AAD;AL # GUJARATI LETTER BHA
+0AAE;AL # GUJARATI LETTER MA
+0AAF;AL # GUJARATI LETTER YA
+0AB0;AL # GUJARATI LETTER RA
+0AB2;AL # GUJARATI LETTER LA
+0AB3;AL # GUJARATI LETTER LLA
+0AB5;AL # GUJARATI LETTER VA
+0AB6;AL # GUJARATI LETTER SHA
+0AB7;AL # GUJARATI LETTER SSA
+0AB8;AL # GUJARATI LETTER SA
+0AB9;AL # GUJARATI LETTER HA
+0ABC;CM # GUJARATI SIGN NUKTA
+0ABD;AL # GUJARATI SIGN AVAGRAHA
+0ABE;CM # GUJARATI VOWEL SIGN AA
+0ABF;CM # GUJARATI VOWEL SIGN I
+0AC0;CM # GUJARATI VOWEL SIGN II
+0AC1;CM # GUJARATI VOWEL SIGN U
+0AC2;CM # GUJARATI VOWEL SIGN UU
+0AC3;CM # GUJARATI VOWEL SIGN VOCALIC R
+0AC4;CM # GUJARATI VOWEL SIGN VOCALIC RR
+0AC5;CM # GUJARATI VOWEL SIGN CANDRA E
+0AC7;CM # GUJARATI VOWEL SIGN E
+0AC8;CM # GUJARATI VOWEL SIGN AI
+0AC9;CM # GUJARATI VOWEL SIGN CANDRA O
+0ACB;CM # GUJARATI VOWEL SIGN O
+0ACC;CM # GUJARATI VOWEL SIGN AU
+0ACD;CM # GUJARATI SIGN VIRAMA
+0AD0;AL # GUJARATI OM
+0AE0;AL # GUJARATI LETTER VOCALIC RR
+0AE1;AL # GUJARATI LETTER VOCALIC LL
+0AE2;CM # GUJARATI VOWEL SIGN VOCALIC L
+0AE3;CM # GUJARATI VOWEL SIGN VOCALIC LL
+0AE6;NU # GUJARATI DIGIT ZERO
+0AE7;NU # GUJARATI DIGIT ONE
+0AE8;NU # GUJARATI DIGIT TWO
+0AE9;NU # GUJARATI DIGIT THREE
+0AEA;NU # GUJARATI DIGIT FOUR
+0AEB;NU # GUJARATI DIGIT FIVE
+0AEC;NU # GUJARATI DIGIT SIX
+0AED;NU # GUJARATI DIGIT SEVEN
+0AEE;NU # GUJARATI DIGIT EIGHT
+0AEF;NU # GUJARATI DIGIT NINE
+0AF1;PR # GUJARATI RUPEE SIGN
+0B01;CM # ORIYA SIGN CANDRABINDU
+0B02;CM # ORIYA SIGN ANUSVARA
+0B03;CM # ORIYA SIGN VISARGA
+0B05;AL # ORIYA LETTER A
+0B06;AL # ORIYA LETTER AA
+0B07;AL # ORIYA LETTER I
+0B08;AL # ORIYA LETTER II
+0B09;AL # ORIYA LETTER U
+0B0A;AL # ORIYA LETTER UU
+0B0B;AL # ORIYA LETTER VOCALIC R
+0B0C;AL # ORIYA LETTER VOCALIC L
+0B0F;AL # ORIYA LETTER E
+0B10;AL # ORIYA LETTER AI
+0B13;AL # ORIYA LETTER O
+0B14;AL # ORIYA LETTER AU
+0B15;AL # ORIYA LETTER KA
+0B16;AL # ORIYA LETTER KHA
+0B17;AL # ORIYA LETTER GA
+0B18;AL # ORIYA LETTER GHA
+0B19;AL # ORIYA LETTER NGA
+0B1A;AL # ORIYA LETTER CA
+0B1B;AL # ORIYA LETTER CHA
+0B1C;AL # ORIYA LETTER JA
+0B1D;AL # ORIYA LETTER JHA
+0B1E;AL # ORIYA LETTER NYA
+0B1F;AL # ORIYA LETTER TTA
+0B20;AL # ORIYA LETTER TTHA
+0B21;AL # ORIYA LETTER DDA
+0B22;AL # ORIYA LETTER DDHA
+0B23;AL # ORIYA LETTER NNA
+0B24;AL # ORIYA LETTER TA
+0B25;AL # ORIYA LETTER THA
+0B26;AL # ORIYA LETTER DA
+0B27;AL # ORIYA LETTER DHA
+0B28;AL # ORIYA LETTER NA
+0B2A;AL # ORIYA LETTER PA
+0B2B;AL # ORIYA LETTER PHA
+0B2C;AL # ORIYA LETTER BA
+0B2D;AL # ORIYA LETTER BHA
+0B2E;AL # ORIYA LETTER MA
+0B2F;AL # ORIYA LETTER YA
+0B30;AL # ORIYA LETTER RA
+0B32;AL # ORIYA LETTER LA
+0B33;AL # ORIYA LETTER LLA
+0B35;AL # ORIYA LETTER VA
+0B36;AL # ORIYA LETTER SHA
+0B37;AL # ORIYA LETTER SSA
+0B38;AL # ORIYA LETTER SA
+0B39;AL # ORIYA LETTER HA
+0B3C;CM # ORIYA SIGN NUKTA
+0B3D;AL # ORIYA SIGN AVAGRAHA
+0B3E;CM # ORIYA VOWEL SIGN AA
+0B3F;CM # ORIYA VOWEL SIGN I
+0B40;CM # ORIYA VOWEL SIGN II
+0B41;CM # ORIYA VOWEL SIGN U
+0B42;CM # ORIYA VOWEL SIGN UU
+0B43;CM # ORIYA VOWEL SIGN VOCALIC R
+0B47;CM # ORIYA VOWEL SIGN E
+0B48;CM # ORIYA VOWEL SIGN AI
+0B4B;CM # ORIYA VOWEL SIGN O
+0B4C;CM # ORIYA VOWEL SIGN AU
+0B4D;CM # ORIYA SIGN VIRAMA
+0B56;CM # ORIYA AI LENGTH MARK
+0B57;CM # ORIYA AU LENGTH MARK
+0B5C;AL # ORIYA LETTER RRA
+0B5D;AL # ORIYA LETTER RHA
+0B5F;AL # ORIYA LETTER YYA
+0B60;AL # ORIYA LETTER VOCALIC RR
+0B61;AL # ORIYA LETTER VOCALIC LL
+0B66;NU # ORIYA DIGIT ZERO
+0B67;NU # ORIYA DIGIT ONE
+0B68;NU # ORIYA DIGIT TWO
+0B69;NU # ORIYA DIGIT THREE
+0B6A;NU # ORIYA DIGIT FOUR
+0B6B;NU # ORIYA DIGIT FIVE
+0B6C;NU # ORIYA DIGIT SIX
+0B6D;NU # ORIYA DIGIT SEVEN
+0B6E;NU # ORIYA DIGIT EIGHT
+0B6F;NU # ORIYA DIGIT NINE
+0B70;AL # ORIYA ISSHAR
+0B71;AL # ORIYA LETTER WA
+0B82;CM # TAMIL SIGN ANUSVARA
+0B83;AL # TAMIL SIGN VISARGA
+0B85;AL # TAMIL LETTER A
+0B86;AL # TAMIL LETTER AA
+0B87;AL # TAMIL LETTER I
+0B88;AL # TAMIL LETTER II
+0B89;AL # TAMIL LETTER U
+0B8A;AL # TAMIL LETTER UU
+0B8E;AL # TAMIL LETTER E
+0B8F;AL # TAMIL LETTER EE
+0B90;AL # TAMIL LETTER AI
+0B92;AL # TAMIL LETTER O
+0B93;AL # TAMIL LETTER OO
+0B94;AL # TAMIL LETTER AU
+0B95;AL # TAMIL LETTER KA
+0B99;AL # TAMIL LETTER NGA
+0B9A;AL # TAMIL LETTER CA
+0B9C;AL # TAMIL LETTER JA
+0B9E;AL # TAMIL LETTER NYA
+0B9F;AL # TAMIL LETTER TTA
+0BA3;AL # TAMIL LETTER NNA
+0BA4;AL # TAMIL LETTER TA
+0BA8;AL # TAMIL LETTER NA
+0BA9;AL # TAMIL LETTER NNNA
+0BAA;AL # TAMIL LETTER PA
+0BAE;AL # TAMIL LETTER MA
+0BAF;AL # TAMIL LETTER YA
+0BB0;AL # TAMIL LETTER RA
+0BB1;AL # TAMIL LETTER RRA
+0BB2;AL # TAMIL LETTER LA
+0BB3;AL # TAMIL LETTER LLA
+0BB4;AL # TAMIL LETTER LLLA
+0BB5;AL # TAMIL LETTER VA
+0BB6;AL # TAMIL LETTER SHA
+0BB7;AL # TAMIL LETTER SSA
+0BB8;AL # TAMIL LETTER SA
+0BB9;AL # TAMIL LETTER HA
+0BBE;CM # TAMIL VOWEL SIGN AA
+0BBF;CM # TAMIL VOWEL SIGN I
+0BC0;CM # TAMIL VOWEL SIGN II
+0BC1;CM # TAMIL VOWEL SIGN U
+0BC2;CM # TAMIL VOWEL SIGN UU
+0BC6;CM # TAMIL VOWEL SIGN E
+0BC7;CM # TAMIL VOWEL SIGN EE
+0BC8;CM # TAMIL VOWEL SIGN AI
+0BCA;CM # TAMIL VOWEL SIGN O
+0BCB;CM # TAMIL VOWEL SIGN OO
+0BCC;CM # TAMIL VOWEL SIGN AU
+0BCD;CM # TAMIL SIGN VIRAMA
+0BD7;CM # TAMIL AU LENGTH MARK
+0BE6;NU # TAMIL DIGIT ZERO
+0BE7;NU # TAMIL DIGIT ONE
+0BE8;NU # TAMIL DIGIT TWO
+0BE9;NU # TAMIL DIGIT THREE
+0BEA;NU # TAMIL DIGIT FOUR
+0BEB;NU # TAMIL DIGIT FIVE
+0BEC;NU # TAMIL DIGIT SIX
+0BED;NU # TAMIL DIGIT SEVEN
+0BEE;NU # TAMIL DIGIT EIGHT
+0BEF;NU # TAMIL DIGIT NINE
+0BF0;AL # TAMIL NUMBER TEN
+0BF1;AL # TAMIL NUMBER ONE HUNDRED
+0BF2;AL # TAMIL NUMBER ONE THOUSAND
+0BF3;AL # TAMIL DAY SIGN
+0BF4;AL # TAMIL MONTH SIGN
+0BF5;AL # TAMIL YEAR SIGN
+0BF6;AL # TAMIL DEBIT SIGN
+0BF7;AL # TAMIL CREDIT SIGN
+0BF8;AL # TAMIL AS ABOVE SIGN
+0BF9;PR # TAMIL RUPEE SIGN
+0BFA;AL # TAMIL NUMBER SIGN
+0C01;CM # TELUGU SIGN CANDRABINDU
+0C02;CM # TELUGU SIGN ANUSVARA
+0C03;CM # TELUGU SIGN VISARGA
+0C05;AL # TELUGU LETTER A
+0C06;AL # TELUGU LETTER AA
+0C07;AL # TELUGU LETTER I
+0C08;AL # TELUGU LETTER II
+0C09;AL # TELUGU LETTER U
+0C0A;AL # TELUGU LETTER UU
+0C0B;AL # TELUGU LETTER VOCALIC R
+0C0C;AL # TELUGU LETTER VOCALIC L
+0C0E;AL # TELUGU LETTER E
+0C0F;AL # TELUGU LETTER EE
+0C10;AL # TELUGU LETTER AI
+0C12;AL # TELUGU LETTER O
+0C13;AL # TELUGU LETTER OO
+0C14;AL # TELUGU LETTER AU
+0C15;AL # TELUGU LETTER KA
+0C16;AL # TELUGU LETTER KHA
+0C17;AL # TELUGU LETTER GA
+0C18;AL # TELUGU LETTER GHA
+0C19;AL # TELUGU LETTER NGA
+0C1A;AL # TELUGU LETTER CA
+0C1B;AL # TELUGU LETTER CHA
+0C1C;AL # TELUGU LETTER JA
+0C1D;AL # TELUGU LETTER JHA
+0C1E;AL # TELUGU LETTER NYA
+0C1F;AL # TELUGU LETTER TTA
+0C20;AL # TELUGU LETTER TTHA
+0C21;AL # TELUGU LETTER DDA
+0C22;AL # TELUGU LETTER DDHA
+0C23;AL # TELUGU LETTER NNA
+0C24;AL # TELUGU LETTER TA
+0C25;AL # TELUGU LETTER THA
+0C26;AL # TELUGU LETTER DA
+0C27;AL # TELUGU LETTER DHA
+0C28;AL # TELUGU LETTER NA
+0C2A;AL # TELUGU LETTER PA
+0C2B;AL # TELUGU LETTER PHA
+0C2C;AL # TELUGU LETTER BA
+0C2D;AL # TELUGU LETTER BHA
+0C2E;AL # TELUGU LETTER MA
+0C2F;AL # TELUGU LETTER YA
+0C30;AL # TELUGU LETTER RA
+0C31;AL # TELUGU LETTER RRA
+0C32;AL # TELUGU LETTER LA
+0C33;AL # TELUGU LETTER LLA
+0C35;AL # TELUGU LETTER VA
+0C36;AL # TELUGU LETTER SHA
+0C37;AL # TELUGU LETTER SSA
+0C38;AL # TELUGU LETTER SA
+0C39;AL # TELUGU LETTER HA
+0C3E;CM # TELUGU VOWEL SIGN AA
+0C3F;CM # TELUGU VOWEL SIGN I
+0C40;CM # TELUGU VOWEL SIGN II
+0C41;CM # TELUGU VOWEL SIGN U
+0C42;CM # TELUGU VOWEL SIGN UU
+0C43;CM # TELUGU VOWEL SIGN VOCALIC R
+0C44;CM # TELUGU VOWEL SIGN VOCALIC RR
+0C46;CM # TELUGU VOWEL SIGN E
+0C47;CM # TELUGU VOWEL SIGN EE
+0C48;CM # TELUGU VOWEL SIGN AI
+0C4A;CM # TELUGU VOWEL SIGN O
+0C4B;CM # TELUGU VOWEL SIGN OO
+0C4C;CM # TELUGU VOWEL SIGN AU
+0C4D;CM # TELUGU SIGN VIRAMA
+0C55;CM # TELUGU LENGTH MARK
+0C56;CM # TELUGU AI LENGTH MARK
+0C60;AL # TELUGU LETTER VOCALIC RR
+0C61;AL # TELUGU LETTER VOCALIC LL
+0C66;NU # TELUGU DIGIT ZERO
+0C67;NU # TELUGU DIGIT ONE
+0C68;NU # TELUGU DIGIT TWO
+0C69;NU # TELUGU DIGIT THREE
+0C6A;NU # TELUGU DIGIT FOUR
+0C6B;NU # TELUGU DIGIT FIVE
+0C6C;NU # TELUGU DIGIT SIX
+0C6D;NU # TELUGU DIGIT SEVEN
+0C6E;NU # TELUGU DIGIT EIGHT
+0C6F;NU # TELUGU DIGIT NINE
+0C82;CM # KANNADA SIGN ANUSVARA
+0C83;CM # KANNADA SIGN VISARGA
+0C85;AL # KANNADA LETTER A
+0C86;AL # KANNADA LETTER AA
+0C87;AL # KANNADA LETTER I
+0C88;AL # KANNADA LETTER II
+0C89;AL # KANNADA LETTER U
+0C8A;AL # KANNADA LETTER UU
+0C8B;AL # KANNADA LETTER VOCALIC R
+0C8C;AL # KANNADA LETTER VOCALIC L
+0C8E;AL # KANNADA LETTER E
+0C8F;AL # KANNADA LETTER EE
+0C90;AL # KANNADA LETTER AI
+0C92;AL # KANNADA LETTER O
+0C93;AL # KANNADA LETTER OO
+0C94;AL # KANNADA LETTER AU
+0C95;AL # KANNADA LETTER KA
+0C96;AL # KANNADA LETTER KHA
+0C97;AL # KANNADA LETTER GA
+0C98;AL # KANNADA LETTER GHA
+0C99;AL # KANNADA LETTER NGA
+0C9A;AL # KANNADA LETTER CA
+0C9B;AL # KANNADA LETTER CHA
+0C9C;AL # KANNADA LETTER JA
+0C9D;AL # KANNADA LETTER JHA
+0C9E;AL # KANNADA LETTER NYA
+0C9F;AL # KANNADA LETTER TTA
+0CA0;AL # KANNADA LETTER TTHA
+0CA1;AL # KANNADA LETTER DDA
+0CA2;AL # KANNADA LETTER DDHA
+0CA3;AL # KANNADA LETTER NNA
+0CA4;AL # KANNADA LETTER TA
+0CA5;AL # KANNADA LETTER THA
+0CA6;AL # KANNADA LETTER DA
+0CA7;AL # KANNADA LETTER DHA
+0CA8;AL # KANNADA LETTER NA
+0CAA;AL # KANNADA LETTER PA
+0CAB;AL # KANNADA LETTER PHA
+0CAC;AL # KANNADA LETTER BA
+0CAD;AL # KANNADA LETTER BHA
+0CAE;AL # KANNADA LETTER MA
+0CAF;AL # KANNADA LETTER YA
+0CB0;AL # KANNADA LETTER RA
+0CB1;AL # KANNADA LETTER RRA
+0CB2;AL # KANNADA LETTER LA
+0CB3;AL # KANNADA LETTER LLA
+0CB5;AL # KANNADA LETTER VA
+0CB6;AL # KANNADA LETTER SHA
+0CB7;AL # KANNADA LETTER SSA
+0CB8;AL # KANNADA LETTER SA
+0CB9;AL # KANNADA LETTER HA
+0CBC;CM # KANNADA SIGN NUKTA
+0CBD;AL # KANNADA SIGN AVAGRAHA
+0CBE;CM # KANNADA VOWEL SIGN AA
+0CBF;CM # KANNADA VOWEL SIGN I
+0CC0;CM # KANNADA VOWEL SIGN II
+0CC1;CM # KANNADA VOWEL SIGN U
+0CC2;CM # KANNADA VOWEL SIGN UU
+0CC3;CM # KANNADA VOWEL SIGN VOCALIC R
+0CC4;CM # KANNADA VOWEL SIGN VOCALIC RR
+0CC6;CM # KANNADA VOWEL SIGN E
+0CC7;CM # KANNADA VOWEL SIGN EE
+0CC8;CM # KANNADA VOWEL SIGN AI
+0CCA;CM # KANNADA VOWEL SIGN O
+0CCB;CM # KANNADA VOWEL SIGN OO
+0CCC;CM # KANNADA VOWEL SIGN AU
+0CCD;CM # KANNADA SIGN VIRAMA
+0CD5;CM # KANNADA LENGTH MARK
+0CD6;CM # KANNADA AI LENGTH MARK
+0CDE;AL # KANNADA LETTER FA
+0CE0;AL # KANNADA LETTER VOCALIC RR
+0CE1;AL # KANNADA LETTER VOCALIC LL
+0CE2;CM # KANNADA VOWEL SIGN VOCALIC L
+0CE3;CM # KANNADA VOWEL SIGN VOCALIC LL
+0CE6;NU # KANNADA DIGIT ZERO
+0CE7;NU # KANNADA DIGIT ONE
+0CE8;NU # KANNADA DIGIT TWO
+0CE9;NU # KANNADA DIGIT THREE
+0CEA;NU # KANNADA DIGIT FOUR
+0CEB;NU # KANNADA DIGIT FIVE
+0CEC;NU # KANNADA DIGIT SIX
+0CED;NU # KANNADA DIGIT SEVEN
+0CEE;NU # KANNADA DIGIT EIGHT
+0CEF;NU # KANNADA DIGIT NINE
+0CF1;AL # KANNADA SIGN JIHVAMULIYA
+0CF2;AL # KANNADA SIGN UPADHMANIYA
+0D02;CM # MALAYALAM SIGN ANUSVARA
+0D03;CM # MALAYALAM SIGN VISARGA
+0D05;AL # MALAYALAM LETTER A
+0D06;AL # MALAYALAM LETTER AA
+0D07;AL # MALAYALAM LETTER I
+0D08;AL # MALAYALAM LETTER II
+0D09;AL # MALAYALAM LETTER U
+0D0A;AL # MALAYALAM LETTER UU
+0D0B;AL # MALAYALAM LETTER VOCALIC R
+0D0C;AL # MALAYALAM LETTER VOCALIC L
+0D0E;AL # MALAYALAM LETTER E
+0D0F;AL # MALAYALAM LETTER EE
+0D10;AL # MALAYALAM LETTER AI
+0D12;AL # MALAYALAM LETTER O
+0D13;AL # MALAYALAM LETTER OO
+0D14;AL # MALAYALAM LETTER AU
+0D15;AL # MALAYALAM LETTER KA
+0D16;AL # MALAYALAM LETTER KHA
+0D17;AL # MALAYALAM LETTER GA
+0D18;AL # MALAYALAM LETTER GHA
+0D19;AL # MALAYALAM LETTER NGA
+0D1A;AL # MALAYALAM LETTER CA
+0D1B;AL # MALAYALAM LETTER CHA
+0D1C;AL # MALAYALAM LETTER JA
+0D1D;AL # MALAYALAM LETTER JHA
+0D1E;AL # MALAYALAM LETTER NYA
+0D1F;AL # MALAYALAM LETTER TTA
+0D20;AL # MALAYALAM LETTER TTHA
+0D21;AL # MALAYALAM LETTER DDA
+0D22;AL # MALAYALAM LETTER DDHA
+0D23;AL # MALAYALAM LETTER NNA
+0D24;AL # MALAYALAM LETTER TA
+0D25;AL # MALAYALAM LETTER THA
+0D26;AL # MALAYALAM LETTER DA
+0D27;AL # MALAYALAM LETTER DHA
+0D28;AL # MALAYALAM LETTER NA
+0D2A;AL # MALAYALAM LETTER PA
+0D2B;AL # MALAYALAM LETTER PHA
+0D2C;AL # MALAYALAM LETTER BA
+0D2D;AL # MALAYALAM LETTER BHA
+0D2E;AL # MALAYALAM LETTER MA
+0D2F;AL # MALAYALAM LETTER YA
+0D30;AL # MALAYALAM LETTER RA
+0D31;AL # MALAYALAM LETTER RRA
+0D32;AL # MALAYALAM LETTER LA
+0D33;AL # MALAYALAM LETTER LLA
+0D34;AL # MALAYALAM LETTER LLLA
+0D35;AL # MALAYALAM LETTER VA
+0D36;AL # MALAYALAM LETTER SHA
+0D37;AL # MALAYALAM LETTER SSA
+0D38;AL # MALAYALAM LETTER SA
+0D39;AL # MALAYALAM LETTER HA
+0D3E;CM # MALAYALAM VOWEL SIGN AA
+0D3F;CM # MALAYALAM VOWEL SIGN I
+0D40;CM # MALAYALAM VOWEL SIGN II
+0D41;CM # MALAYALAM VOWEL SIGN U
+0D42;CM # MALAYALAM VOWEL SIGN UU
+0D43;CM # MALAYALAM VOWEL SIGN VOCALIC R
+0D46;CM # MALAYALAM VOWEL SIGN E
+0D47;CM # MALAYALAM VOWEL SIGN EE
+0D48;CM # MALAYALAM VOWEL SIGN AI
+0D4A;CM # MALAYALAM VOWEL SIGN O
+0D4B;CM # MALAYALAM VOWEL SIGN OO
+0D4C;CM # MALAYALAM VOWEL SIGN AU
+0D4D;CM # MALAYALAM SIGN VIRAMA
+0D57;CM # MALAYALAM AU LENGTH MARK
+0D60;AL # MALAYALAM LETTER VOCALIC RR
+0D61;AL # MALAYALAM LETTER VOCALIC LL
+0D66;NU # MALAYALAM DIGIT ZERO
+0D67;NU # MALAYALAM DIGIT ONE
+0D68;NU # MALAYALAM DIGIT TWO
+0D69;NU # MALAYALAM DIGIT THREE
+0D6A;NU # MALAYALAM DIGIT FOUR
+0D6B;NU # MALAYALAM DIGIT FIVE
+0D6C;NU # MALAYALAM DIGIT SIX
+0D6D;NU # MALAYALAM DIGIT SEVEN
+0D6E;NU # MALAYALAM DIGIT EIGHT
+0D6F;NU # MALAYALAM DIGIT NINE
+0D82;CM # SINHALA SIGN ANUSVARAYA
+0D83;CM # SINHALA SIGN VISARGAYA
+0D85;AL # SINHALA LETTER AYANNA
+0D86;AL # SINHALA LETTER AAYANNA
+0D87;AL # SINHALA LETTER AEYANNA
+0D88;AL # SINHALA LETTER AEEYANNA
+0D89;AL # SINHALA LETTER IYANNA
+0D8A;AL # SINHALA LETTER IIYANNA
+0D8B;AL # SINHALA LETTER UYANNA
+0D8C;AL # SINHALA LETTER UUYANNA
+0D8D;AL # SINHALA LETTER IRUYANNA
+0D8E;AL # SINHALA LETTER IRUUYANNA
+0D8F;AL # SINHALA LETTER ILUYANNA
+0D90;AL # SINHALA LETTER ILUUYANNA
+0D91;AL # SINHALA LETTER EYANNA
+0D92;AL # SINHALA LETTER EEYANNA
+0D93;AL # SINHALA LETTER AIYANNA
+0D94;AL # SINHALA LETTER OYANNA
+0D95;AL # SINHALA LETTER OOYANNA
+0D96;AL # SINHALA LETTER AUYANNA
+0D9A;AL # SINHALA LETTER ALPAPRAANA KAYANNA
+0D9B;AL # SINHALA LETTER MAHAAPRAANA KAYANNA
+0D9C;AL # SINHALA LETTER ALPAPRAANA GAYANNA
+0D9D;AL # SINHALA LETTER MAHAAPRAANA GAYANNA
+0D9E;AL # SINHALA LETTER KANTAJA NAASIKYAYA
+0D9F;AL # SINHALA LETTER SANYAKA GAYANNA
+0DA0;AL # SINHALA LETTER ALPAPRAANA CAYANNA
+0DA1;AL # SINHALA LETTER MAHAAPRAANA CAYANNA
+0DA2;AL # SINHALA LETTER ALPAPRAANA JAYANNA
+0DA3;AL # SINHALA LETTER MAHAAPRAANA JAYANNA
+0DA4;AL # SINHALA LETTER TAALUJA NAASIKYAYA
+0DA5;AL # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA6;AL # SINHALA LETTER SANYAKA JAYANNA
+0DA7;AL # SINHALA LETTER ALPAPRAANA TTAYANNA
+0DA8;AL # SINHALA LETTER MAHAAPRAANA TTAYANNA
+0DA9;AL # SINHALA LETTER ALPAPRAANA DDAYANNA
+0DAA;AL # SINHALA LETTER MAHAAPRAANA DDAYANNA
+0DAB;AL # SINHALA LETTER MUURDHAJA NAYANNA
+0DAC;AL # SINHALA LETTER SANYAKA DDAYANNA
+0DAD;AL # SINHALA LETTER ALPAPRAANA TAYANNA
+0DAE;AL # SINHALA LETTER MAHAAPRAANA TAYANNA
+0DAF;AL # SINHALA LETTER ALPAPRAANA DAYANNA
+0DB0;AL # SINHALA LETTER MAHAAPRAANA DAYANNA
+0DB1;AL # SINHALA LETTER DANTAJA NAYANNA
+0DB3;AL # SINHALA LETTER SANYAKA DAYANNA
+0DB4;AL # SINHALA LETTER ALPAPRAANA PAYANNA
+0DB5;AL # SINHALA LETTER MAHAAPRAANA PAYANNA
+0DB6;AL # SINHALA LETTER ALPAPRAANA BAYANNA
+0DB7;AL # SINHALA LETTER MAHAAPRAANA BAYANNA
+0DB8;AL # SINHALA LETTER MAYANNA
+0DB9;AL # SINHALA LETTER AMBA BAYANNA
+0DBA;AL # SINHALA LETTER YAYANNA
+0DBB;AL # SINHALA LETTER RAYANNA
+0DBD;AL # SINHALA LETTER DANTAJA LAYANNA
+0DC0;AL # SINHALA LETTER VAYANNA
+0DC1;AL # SINHALA LETTER TAALUJA SAYANNA
+0DC2;AL # SINHALA LETTER MUURDHAJA SAYANNA
+0DC3;AL # SINHALA LETTER DANTAJA SAYANNA
+0DC4;AL # SINHALA LETTER HAYANNA
+0DC5;AL # SINHALA LETTER MUURDHAJA LAYANNA
+0DC6;AL # SINHALA LETTER FAYANNA
+0DCA;CM # SINHALA SIGN AL-LAKUNA
+0DCF;CM # SINHALA VOWEL SIGN AELA-PILLA
+0DD0;CM # SINHALA VOWEL SIGN KETTI AEDA-PILLA
+0DD1;CM # SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2;CM # SINHALA VOWEL SIGN KETTI IS-PILLA
+0DD3;CM # SINHALA VOWEL SIGN DIGA IS-PILLA
+0DD4;CM # SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6;CM # SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8;CM # SINHALA VOWEL SIGN GAETTA-PILLA
+0DD9;CM # SINHALA VOWEL SIGN KOMBUVA
+0DDA;CM # SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDB;CM # SINHALA VOWEL SIGN KOMBU DEKA
+0DDC;CM # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD;CM # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE;CM # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DDF;CM # SINHALA VOWEL SIGN GAYANUKITTA
+0DF2;CM # SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+0DF3;CM # SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DF4;AL # SINHALA PUNCTUATION KUNDDALIYA
+0E01;SA # THAI CHARACTER KO KAI
+0E02;SA # THAI CHARACTER KHO KHAI
+0E03;SA # THAI CHARACTER KHO KHUAT
+0E04;SA # THAI CHARACTER KHO KHWAI
+0E05;SA # THAI CHARACTER KHO KHON
+0E06;SA # THAI CHARACTER KHO RAKHANG
+0E07;SA # THAI CHARACTER NGO NGU
+0E08;SA # THAI CHARACTER CHO CHAN
+0E09;SA # THAI CHARACTER CHO CHING
+0E0A;SA # THAI CHARACTER CHO CHANG
+0E0B;SA # THAI CHARACTER SO SO
+0E0C;SA # THAI CHARACTER CHO CHOE
+0E0D;SA # THAI CHARACTER YO YING
+0E0E;SA # THAI CHARACTER DO CHADA
+0E0F;SA # THAI CHARACTER TO PATAK
+0E10;SA # THAI CHARACTER THO THAN
+0E11;SA # THAI CHARACTER THO NANGMONTHO
+0E12;SA # THAI CHARACTER THO PHUTHAO
+0E13;SA # THAI CHARACTER NO NEN
+0E14;SA # THAI CHARACTER DO DEK
+0E15;SA # THAI CHARACTER TO TAO
+0E16;SA # THAI CHARACTER THO THUNG
+0E17;SA # THAI CHARACTER THO THAHAN
+0E18;SA # THAI CHARACTER THO THONG
+0E19;SA # THAI CHARACTER NO NU
+0E1A;SA # THAI CHARACTER BO BAIMAI
+0E1B;SA # THAI CHARACTER PO PLA
+0E1C;SA # THAI CHARACTER PHO PHUNG
+0E1D;SA # THAI CHARACTER FO FA
+0E1E;SA # THAI CHARACTER PHO PHAN
+0E1F;SA # THAI CHARACTER FO FAN
+0E20;SA # THAI CHARACTER PHO SAMPHAO
+0E21;SA # THAI CHARACTER MO MA
+0E22;SA # THAI CHARACTER YO YAK
+0E23;SA # THAI CHARACTER RO RUA
+0E24;SA # THAI CHARACTER RU
+0E25;SA # THAI CHARACTER LO LING
+0E26;SA # THAI CHARACTER LU
+0E27;SA # THAI CHARACTER WO WAEN
+0E28;SA # THAI CHARACTER SO SALA
+0E29;SA # THAI CHARACTER SO RUSI
+0E2A;SA # THAI CHARACTER SO SUA
+0E2B;SA # THAI CHARACTER HO HIP
+0E2C;SA # THAI CHARACTER LO CHULA
+0E2D;SA # THAI CHARACTER O ANG
+0E2E;SA # THAI CHARACTER HO NOKHUK
+0E2F;SA # THAI CHARACTER PAIYANNOI
+0E30;SA # THAI CHARACTER SARA A
+0E31;SA # THAI CHARACTER MAI HAN-AKAT
+0E32;SA # THAI CHARACTER SARA AA
+0E33;SA # THAI CHARACTER SARA AM
+0E34;SA # THAI CHARACTER SARA I
+0E35;SA # THAI CHARACTER SARA II
+0E36;SA # THAI CHARACTER SARA UE
+0E37;SA # THAI CHARACTER SARA UEE
+0E38;SA # THAI CHARACTER SARA U
+0E39;SA # THAI CHARACTER SARA UU
+0E3A;SA # THAI CHARACTER PHINTHU
+0E3F;PR # THAI CURRENCY SYMBOL BAHT
+0E40;SA # THAI CHARACTER SARA E
+0E41;SA # THAI CHARACTER SARA AE
+0E42;SA # THAI CHARACTER SARA O
+0E43;SA # THAI CHARACTER SARA AI MAIMUAN
+0E44;SA # THAI CHARACTER SARA AI MAIMALAI
+0E45;SA # THAI CHARACTER LAKKHANGYAO
+0E46;SA # THAI CHARACTER MAIYAMOK
+0E47;SA # THAI CHARACTER MAITAIKHU
+0E48;SA # THAI CHARACTER MAI EK
+0E49;SA # THAI CHARACTER MAI THO
+0E4A;SA # THAI CHARACTER MAI TRI
+0E4B;SA # THAI CHARACTER MAI CHATTAWA
+0E4C;SA # THAI CHARACTER THANTHAKHAT
+0E4D;SA # THAI CHARACTER NIKHAHIT
+0E4E;SA # THAI CHARACTER YAMAKKAN
+0E4F;AL # THAI CHARACTER FONGMAN
+0E50;NU # THAI DIGIT ZERO
+0E51;NU # THAI DIGIT ONE
+0E52;NU # THAI DIGIT TWO
+0E53;NU # THAI DIGIT THREE
+0E54;NU # THAI DIGIT FOUR
+0E55;NU # THAI DIGIT FIVE
+0E56;NU # THAI DIGIT SIX
+0E57;NU # THAI DIGIT SEVEN
+0E58;NU # THAI DIGIT EIGHT
+0E59;NU # THAI DIGIT NINE
+0E5A;BA # THAI CHARACTER ANGKHANKHU
+0E5B;BA # THAI CHARACTER KHOMUT
+0E81;SA # LAO LETTER KO
+0E82;SA # LAO LETTER KHO SUNG
+0E84;SA # LAO LETTER KHO TAM
+0E87;SA # LAO LETTER NGO
+0E88;SA # LAO LETTER CO
+0E8A;SA # LAO LETTER SO TAM
+0E8D;SA # LAO LETTER NYO
+0E94;SA # LAO LETTER DO
+0E95;SA # LAO LETTER TO
+0E96;SA # LAO LETTER THO SUNG
+0E97;SA # LAO LETTER THO TAM
+0E99;SA # LAO LETTER NO
+0E9A;SA # LAO LETTER BO
+0E9B;SA # LAO LETTER PO
+0E9C;SA # LAO LETTER PHO SUNG
+0E9D;SA # LAO LETTER FO TAM
+0E9E;SA # LAO LETTER PHO TAM
+0E9F;SA # LAO LETTER FO SUNG
+0EA1;SA # LAO LETTER MO
+0EA2;SA # LAO LETTER YO
+0EA3;SA # LAO LETTER LO LING
+0EA5;SA # LAO LETTER LO LOOT
+0EA7;SA # LAO LETTER WO
+0EAA;SA # LAO LETTER SO SUNG
+0EAB;SA # LAO LETTER HO SUNG
+0EAD;SA # LAO LETTER O
+0EAE;SA # LAO LETTER HO TAM
+0EAF;SA # LAO ELLIPSIS
+0EB0;SA # LAO VOWEL SIGN A
+0EB1;SA # LAO VOWEL SIGN MAI KAN
+0EB2;SA # LAO VOWEL SIGN AA
+0EB3;SA # LAO VOWEL SIGN AM
+0EB4;SA # LAO VOWEL SIGN I
+0EB5;SA # LAO VOWEL SIGN II
+0EB6;SA # LAO VOWEL SIGN Y
+0EB7;SA # LAO VOWEL SIGN YY
+0EB8;SA # LAO VOWEL SIGN U
+0EB9;SA # LAO VOWEL SIGN UU
+0EBB;SA # LAO VOWEL SIGN MAI KON
+0EBC;SA # LAO SEMIVOWEL SIGN LO
+0EBD;SA # LAO SEMIVOWEL SIGN NYO
+0EC0;SA # LAO VOWEL SIGN E
+0EC1;SA # LAO VOWEL SIGN EI
+0EC2;SA # LAO VOWEL SIGN O
+0EC3;SA # LAO VOWEL SIGN AY
+0EC4;SA # LAO VOWEL SIGN AI
+0EC6;SA # LAO KO LA
+0EC8;SA # LAO TONE MAI EK
+0EC9;SA # LAO TONE MAI THO
+0ECA;SA # LAO TONE MAI TI
+0ECB;SA # LAO TONE MAI CATAWA
+0ECC;SA # LAO CANCELLATION MARK
+0ECD;SA # LAO NIGGAHITA
+0ED0;NU # LAO DIGIT ZERO
+0ED1;NU # LAO DIGIT ONE
+0ED2;NU # LAO DIGIT TWO
+0ED3;NU # LAO DIGIT THREE
+0ED4;NU # LAO DIGIT FOUR
+0ED5;NU # LAO DIGIT FIVE
+0ED6;NU # LAO DIGIT SIX
+0ED7;NU # LAO DIGIT SEVEN
+0ED8;NU # LAO DIGIT EIGHT
+0ED9;NU # LAO DIGIT NINE
+0EDC;SA # LAO HO NO
+0EDD;SA # LAO HO MO
+0F00;AL # TIBETAN SYLLABLE OM
+0F01;BB # TIBETAN MARK GTER YIG MGO TRUNCATED A
+0F02;BB # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
+0F03;BB # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04;BB # TIBETAN MARK INITIAL YIG MGO MDUN MA
+0F05;AL # TIBETAN MARK CLOSING YIG MGO SGAB MA
+0F06;BB # TIBETAN MARK CARET YIG MGO PHUR SHAD MA
+0F07;BB # TIBETAN MARK YIG MGO TSHEG SHAD MA
+0F08;GL # TIBETAN MARK SBRUL SHAD
+0F09;BB # TIBETAN MARK BSKUR YIG MGO
+0F0A;BB # TIBETAN MARK BKA- SHOG YIG MGO
+0F0B;BA # TIBETAN MARK INTERSYLLABIC TSHEG
+0F0C;GL # TIBETAN MARK DELIMITER TSHEG BSTAR
+0F0D;EX # TIBETAN MARK SHAD
+0F0E;EX # TIBETAN MARK NYIS SHAD
+0F0F;EX # TIBETAN MARK TSHEG SHAD
+0F10;EX # TIBETAN MARK NYIS TSHEG SHAD
+0F11;EX # TIBETAN MARK RIN CHEN SPUNGS SHAD
+0F12;GL # TIBETAN MARK RGYA GRAM SHAD
+0F13;AL # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
+0F14;EX # TIBETAN MARK GTER TSHEG
+0F15;AL # TIBETAN LOGOTYPE SIGN CHAD RTAGS
+0F16;AL # TIBETAN LOGOTYPE SIGN LHAG RTAGS
+0F17;AL # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F18;CM # TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+0F19;CM # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F1A;AL # TIBETAN SIGN RDEL DKAR GCIG
+0F1B;AL # TIBETAN SIGN RDEL DKAR GNYIS
+0F1C;AL # TIBETAN SIGN RDEL DKAR GSUM
+0F1D;AL # TIBETAN SIGN RDEL NAG GCIG
+0F1E;AL # TIBETAN SIGN RDEL NAG GNYIS
+0F1F;AL # TIBETAN SIGN RDEL DKAR RDEL NAG
+0F20;NU # TIBETAN DIGIT ZERO
+0F21;NU # TIBETAN DIGIT ONE
+0F22;NU # TIBETAN DIGIT TWO
+0F23;NU # TIBETAN DIGIT THREE
+0F24;NU # TIBETAN DIGIT FOUR
+0F25;NU # TIBETAN DIGIT FIVE
+0F26;NU # TIBETAN DIGIT SIX
+0F27;NU # TIBETAN DIGIT SEVEN
+0F28;NU # TIBETAN DIGIT EIGHT
+0F29;NU # TIBETAN DIGIT NINE
+0F2A;AL # TIBETAN DIGIT HALF ONE
+0F2B;AL # TIBETAN DIGIT HALF TWO
+0F2C;AL # TIBETAN DIGIT HALF THREE
+0F2D;AL # TIBETAN DIGIT HALF FOUR
+0F2E;AL # TIBETAN DIGIT HALF FIVE
+0F2F;AL # TIBETAN DIGIT HALF SIX
+0F30;AL # TIBETAN DIGIT HALF SEVEN
+0F31;AL # TIBETAN DIGIT HALF EIGHT
+0F32;AL # TIBETAN DIGIT HALF NINE
+0F33;AL # TIBETAN DIGIT HALF ZERO
+0F34;BA # TIBETAN MARK BSDUS RTAGS
+0F35;CM # TIBETAN MARK NGAS BZUNG NYI ZLA
+0F36;AL # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F37;CM # TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F38;AL # TIBETAN MARK CHE MGO
+0F39;CM # TIBETAN MARK TSA -PHRU
+0F3A;OP # TIBETAN MARK GUG RTAGS GYON
+0F3B;CL # TIBETAN MARK GUG RTAGS GYAS
+0F3C;OP # TIBETAN MARK ANG KHANG GYON
+0F3D;CL # TIBETAN MARK ANG KHANG GYAS
+0F3E;CM # TIBETAN SIGN YAR TSHES
+0F3F;CM # TIBETAN SIGN MAR TSHES
+0F40;AL # TIBETAN LETTER KA
+0F41;AL # TIBETAN LETTER KHA
+0F42;AL # TIBETAN LETTER GA
+0F43;AL # TIBETAN LETTER GHA
+0F44;AL # TIBETAN LETTER NGA
+0F45;AL # TIBETAN LETTER CA
+0F46;AL # TIBETAN LETTER CHA
+0F47;AL # TIBETAN LETTER JA
+0F49;AL # TIBETAN LETTER NYA
+0F4A;AL # TIBETAN LETTER TTA
+0F4B;AL # TIBETAN LETTER TTHA
+0F4C;AL # TIBETAN LETTER DDA
+0F4D;AL # TIBETAN LETTER DDHA
+0F4E;AL # TIBETAN LETTER NNA
+0F4F;AL # TIBETAN LETTER TA
+0F50;AL # TIBETAN LETTER THA
+0F51;AL # TIBETAN LETTER DA
+0F52;AL # TIBETAN LETTER DHA
+0F53;AL # TIBETAN LETTER NA
+0F54;AL # TIBETAN LETTER PA
+0F55;AL # TIBETAN LETTER PHA
+0F56;AL # TIBETAN LETTER BA
+0F57;AL # TIBETAN LETTER BHA
+0F58;AL # TIBETAN LETTER MA
+0F59;AL # TIBETAN LETTER TSA
+0F5A;AL # TIBETAN LETTER TSHA
+0F5B;AL # TIBETAN LETTER DZA
+0F5C;AL # TIBETAN LETTER DZHA
+0F5D;AL # TIBETAN LETTER WA
+0F5E;AL # TIBETAN LETTER ZHA
+0F5F;AL # TIBETAN LETTER ZA
+0F60;AL # TIBETAN LETTER -A
+0F61;AL # TIBETAN LETTER YA
+0F62;AL # TIBETAN LETTER RA
+0F63;AL # TIBETAN LETTER LA
+0F64;AL # TIBETAN LETTER SHA
+0F65;AL # TIBETAN LETTER SSA
+0F66;AL # TIBETAN LETTER SA
+0F67;AL # TIBETAN LETTER HA
+0F68;AL # TIBETAN LETTER A
+0F69;AL # TIBETAN LETTER KSSA
+0F6A;AL # TIBETAN LETTER FIXED-FORM RA
+0F71;CM # TIBETAN VOWEL SIGN AA
+0F72;CM # TIBETAN VOWEL SIGN I
+0F73;CM # TIBETAN VOWEL SIGN II
+0F74;CM # TIBETAN VOWEL SIGN U
+0F75;CM # TIBETAN VOWEL SIGN UU
+0F76;CM # TIBETAN VOWEL SIGN VOCALIC R
+0F77;CM # TIBETAN VOWEL SIGN VOCALIC RR
+0F78;CM # TIBETAN VOWEL SIGN VOCALIC L
+0F79;CM # TIBETAN VOWEL SIGN VOCALIC LL
+0F7A;CM # TIBETAN VOWEL SIGN E
+0F7B;CM # TIBETAN VOWEL SIGN EE
+0F7C;CM # TIBETAN VOWEL SIGN O
+0F7D;CM # TIBETAN VOWEL SIGN OO
+0F7E;CM # TIBETAN SIGN RJES SU NGA RO
+0F7F;BA # TIBETAN SIGN RNAM BCAD
+0F80;CM # TIBETAN VOWEL SIGN REVERSED I
+0F81;CM # TIBETAN VOWEL SIGN REVERSED II
+0F82;CM # TIBETAN SIGN NYI ZLA NAA DA
+0F83;CM # TIBETAN SIGN SNA LDAN
+0F84;CM # TIBETAN MARK HALANTA
+0F85;BA # TIBETAN MARK PALUTA
+0F86;CM # TIBETAN SIGN LCI RTAGS
+0F87;CM # TIBETAN SIGN YANG RTAGS
+0F88;AL # TIBETAN SIGN LCE TSA CAN
+0F89;AL # TIBETAN SIGN MCHU CAN
+0F8A;AL # TIBETAN SIGN GRU CAN RGYINGS
+0F8B;AL # TIBETAN SIGN GRU MED RGYINGS
+0F90;CM # TIBETAN SUBJOINED LETTER KA
+0F91;CM # TIBETAN SUBJOINED LETTER KHA
+0F92;CM # TIBETAN SUBJOINED LETTER GA
+0F93;CM # TIBETAN SUBJOINED LETTER GHA
+0F94;CM # TIBETAN SUBJOINED LETTER NGA
+0F95;CM # TIBETAN SUBJOINED LETTER CA
+0F96;CM # TIBETAN SUBJOINED LETTER CHA
+0F97;CM # TIBETAN SUBJOINED LETTER JA
+0F99;CM # TIBETAN SUBJOINED LETTER NYA
+0F9A;CM # TIBETAN SUBJOINED LETTER TTA
+0F9B;CM # TIBETAN SUBJOINED LETTER TTHA
+0F9C;CM # TIBETAN SUBJOINED LETTER DDA
+0F9D;CM # TIBETAN SUBJOINED LETTER DDHA
+0F9E;CM # TIBETAN SUBJOINED LETTER NNA
+0F9F;CM # TIBETAN SUBJOINED LETTER TA
+0FA0;CM # TIBETAN SUBJOINED LETTER THA
+0FA1;CM # TIBETAN SUBJOINED LETTER DA
+0FA2;CM # TIBETAN SUBJOINED LETTER DHA
+0FA3;CM # TIBETAN SUBJOINED LETTER NA
+0FA4;CM # TIBETAN SUBJOINED LETTER PA
+0FA5;CM # TIBETAN SUBJOINED LETTER PHA
+0FA6;CM # TIBETAN SUBJOINED LETTER BA
+0FA7;CM # TIBETAN SUBJOINED LETTER BHA
+0FA8;CM # TIBETAN SUBJOINED LETTER MA
+0FA9;CM # TIBETAN SUBJOINED LETTER TSA
+0FAA;CM # TIBETAN SUBJOINED LETTER TSHA
+0FAB;CM # TIBETAN SUBJOINED LETTER DZA
+0FAC;CM # TIBETAN SUBJOINED LETTER DZHA
+0FAD;CM # TIBETAN SUBJOINED LETTER WA
+0FAE;CM # TIBETAN SUBJOINED LETTER ZHA
+0FAF;CM # TIBETAN SUBJOINED LETTER ZA
+0FB0;CM # TIBETAN SUBJOINED LETTER -A
+0FB1;CM # TIBETAN SUBJOINED LETTER YA
+0FB2;CM # TIBETAN SUBJOINED LETTER RA
+0FB3;CM # TIBETAN SUBJOINED LETTER LA
+0FB4;CM # TIBETAN SUBJOINED LETTER SHA
+0FB5;CM # TIBETAN SUBJOINED LETTER SSA
+0FB6;CM # TIBETAN SUBJOINED LETTER SA
+0FB7;CM # TIBETAN SUBJOINED LETTER HA
+0FB8;CM # TIBETAN SUBJOINED LETTER A
+0FB9;CM # TIBETAN SUBJOINED LETTER KSSA
+0FBA;CM # TIBETAN SUBJOINED LETTER FIXED-FORM WA
+0FBB;CM # TIBETAN SUBJOINED LETTER FIXED-FORM YA
+0FBC;CM # TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE;BA # TIBETAN KU RU KHA
+0FBF;BA # TIBETAN KU RU KHA BZHI MIG CAN
+0FC0;AL # TIBETAN CANTILLATION SIGN HEAVY BEAT
+0FC1;AL # TIBETAN CANTILLATION SIGN LIGHT BEAT
+0FC2;AL # TIBETAN CANTILLATION SIGN CANG TE-U
+0FC3;AL # TIBETAN CANTILLATION SIGN SBUB -CHAL
+0FC4;AL # TIBETAN SYMBOL DRIL BU
+0FC5;AL # TIBETAN SYMBOL RDO RJE
+0FC6;CM # TIBETAN SYMBOL PADMA GDAN
+0FC7;AL # TIBETAN SYMBOL RDO RJE RGYA GRAM
+0FC8;AL # TIBETAN SYMBOL PHUR PA
+0FC9;AL # TIBETAN SYMBOL NOR BU
+0FCA;AL # TIBETAN SYMBOL NOR BU NYIS -KHYIL
+0FCB;AL # TIBETAN SYMBOL NOR BU GSUM -KHYIL
+0FCC;AL # TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCF;AL # TIBETAN SIGN RDEL NAG GSUM
+0FD0;BB # TIBETAN MARK BSKA- SHOG GI MGO RGYAN
+0FD1;BB # TIBETAN MARK MNYAM YIG GI MGO RGYAN
+1000;SA # MYANMAR LETTER KA
+1001;SA # MYANMAR LETTER KHA
+1002;SA # MYANMAR LETTER GA
+1003;SA # MYANMAR LETTER GHA
+1004;SA # MYANMAR LETTER NGA
+1005;SA # MYANMAR LETTER CA
+1006;SA # MYANMAR LETTER CHA
+1007;SA # MYANMAR LETTER JA
+1008;SA # MYANMAR LETTER JHA
+1009;SA # MYANMAR LETTER NYA
+100A;SA # MYANMAR LETTER NNYA
+100B;SA # MYANMAR LETTER TTA
+100C;SA # MYANMAR LETTER TTHA
+100D;SA # MYANMAR LETTER DDA
+100E;SA # MYANMAR LETTER DDHA
+100F;SA # MYANMAR LETTER NNA
+1010;SA # MYANMAR LETTER TA
+1011;SA # MYANMAR LETTER THA
+1012;SA # MYANMAR LETTER DA
+1013;SA # MYANMAR LETTER DHA
+1014;SA # MYANMAR LETTER NA
+1015;SA # MYANMAR LETTER PA
+1016;SA # MYANMAR LETTER PHA
+1017;SA # MYANMAR LETTER BA
+1018;SA # MYANMAR LETTER BHA
+1019;SA # MYANMAR LETTER MA
+101A;SA # MYANMAR LETTER YA
+101B;SA # MYANMAR LETTER RA
+101C;SA # MYANMAR LETTER LA
+101D;SA # MYANMAR LETTER WA
+101E;SA # MYANMAR LETTER SA
+101F;SA # MYANMAR LETTER HA
+1020;SA # MYANMAR LETTER LLA
+1021;SA # MYANMAR LETTER A
+1023;SA # MYANMAR LETTER I
+1024;SA # MYANMAR LETTER II
+1025;SA # MYANMAR LETTER U
+1026;SA # MYANMAR LETTER UU
+1027;SA # MYANMAR LETTER E
+1029;SA # MYANMAR LETTER O
+102A;SA # MYANMAR LETTER AU
+102C;SA # MYANMAR VOWEL SIGN AA
+102D;SA # MYANMAR VOWEL SIGN I
+102E;SA # MYANMAR VOWEL SIGN II
+102F;SA # MYANMAR VOWEL SIGN U
+1030;SA # MYANMAR VOWEL SIGN UU
+1031;SA # MYANMAR VOWEL SIGN E
+1032;SA # MYANMAR VOWEL SIGN AI
+1036;SA # MYANMAR SIGN ANUSVARA
+1037;SA # MYANMAR SIGN DOT BELOW
+1038;SA # MYANMAR SIGN VISARGA
+1039;SA # MYANMAR SIGN VIRAMA
+1040;NU # MYANMAR DIGIT ZERO
+1041;NU # MYANMAR DIGIT ONE
+1042;NU # MYANMAR DIGIT TWO
+1043;NU # MYANMAR DIGIT THREE
+1044;NU # MYANMAR DIGIT FOUR
+1045;NU # MYANMAR DIGIT FIVE
+1046;NU # MYANMAR DIGIT SIX
+1047;NU # MYANMAR DIGIT SEVEN
+1048;NU # MYANMAR DIGIT EIGHT
+1049;NU # MYANMAR DIGIT NINE
+104A;BA # MYANMAR SIGN LITTLE SECTION
+104B;BA # MYANMAR SIGN SECTION
+104C;AL # MYANMAR SYMBOL LOCATIVE
+104D;AL # MYANMAR SYMBOL COMPLETED
+104E;AL # MYANMAR SYMBOL AFOREMENTIONED
+104F;AL # MYANMAR SYMBOL GENITIVE
+1050;SA # MYANMAR LETTER SHA
+1051;SA # MYANMAR LETTER SSA
+1052;SA # MYANMAR LETTER VOCALIC R
+1053;SA # MYANMAR LETTER VOCALIC RR
+1054;SA # MYANMAR LETTER VOCALIC L
+1055;SA # MYANMAR LETTER VOCALIC LL
+1056;SA # MYANMAR VOWEL SIGN VOCALIC R
+1057;SA # MYANMAR VOWEL SIGN VOCALIC RR
+1058;SA # MYANMAR VOWEL SIGN VOCALIC L
+1059;SA # MYANMAR VOWEL SIGN VOCALIC LL
+10A0;AL # GEORGIAN CAPITAL LETTER AN
+10A1;AL # GEORGIAN CAPITAL LETTER BAN
+10A2;AL # GEORGIAN CAPITAL LETTER GAN
+10A3;AL # GEORGIAN CAPITAL LETTER DON
+10A4;AL # GEORGIAN CAPITAL LETTER EN
+10A5;AL # GEORGIAN CAPITAL LETTER VIN
+10A6;AL # GEORGIAN CAPITAL LETTER ZEN
+10A7;AL # GEORGIAN CAPITAL LETTER TAN
+10A8;AL # GEORGIAN CAPITAL LETTER IN
+10A9;AL # GEORGIAN CAPITAL LETTER KAN
+10AA;AL # GEORGIAN CAPITAL LETTER LAS
+10AB;AL # GEORGIAN CAPITAL LETTER MAN
+10AC;AL # GEORGIAN CAPITAL LETTER NAR
+10AD;AL # GEORGIAN CAPITAL LETTER ON
+10AE;AL # GEORGIAN CAPITAL LETTER PAR
+10AF;AL # GEORGIAN CAPITAL LETTER ZHAR
+10B0;AL # GEORGIAN CAPITAL LETTER RAE
+10B1;AL # GEORGIAN CAPITAL LETTER SAN
+10B2;AL # GEORGIAN CAPITAL LETTER TAR
+10B3;AL # GEORGIAN CAPITAL LETTER UN
+10B4;AL # GEORGIAN CAPITAL LETTER PHAR
+10B5;AL # GEORGIAN CAPITAL LETTER KHAR
+10B6;AL # GEORGIAN CAPITAL LETTER GHAN
+10B7;AL # GEORGIAN CAPITAL LETTER QAR
+10B8;AL # GEORGIAN CAPITAL LETTER SHIN
+10B9;AL # GEORGIAN CAPITAL LETTER CHIN
+10BA;AL # GEORGIAN CAPITAL LETTER CAN
+10BB;AL # GEORGIAN CAPITAL LETTER JIL
+10BC;AL # GEORGIAN CAPITAL LETTER CIL
+10BD;AL # GEORGIAN CAPITAL LETTER CHAR
+10BE;AL # GEORGIAN CAPITAL LETTER XAN
+10BF;AL # GEORGIAN CAPITAL LETTER JHAN
+10C0;AL # GEORGIAN CAPITAL LETTER HAE
+10C1;AL # GEORGIAN CAPITAL LETTER HE
+10C2;AL # GEORGIAN CAPITAL LETTER HIE
+10C3;AL # GEORGIAN CAPITAL LETTER WE
+10C4;AL # GEORGIAN CAPITAL LETTER HAR
+10C5;AL # GEORGIAN CAPITAL LETTER HOE
+10D0;AL # GEORGIAN LETTER AN
+10D1;AL # GEORGIAN LETTER BAN
+10D2;AL # GEORGIAN LETTER GAN
+10D3;AL # GEORGIAN LETTER DON
+10D4;AL # GEORGIAN LETTER EN
+10D5;AL # GEORGIAN LETTER VIN
+10D6;AL # GEORGIAN LETTER ZEN
+10D7;AL # GEORGIAN LETTER TAN
+10D8;AL # GEORGIAN LETTER IN
+10D9;AL # GEORGIAN LETTER KAN
+10DA;AL # GEORGIAN LETTER LAS
+10DB;AL # GEORGIAN LETTER MAN
+10DC;AL # GEORGIAN LETTER NAR
+10DD;AL # GEORGIAN LETTER ON
+10DE;AL # GEORGIAN LETTER PAR
+10DF;AL # GEORGIAN LETTER ZHAR
+10E0;AL # GEORGIAN LETTER RAE
+10E1;AL # GEORGIAN LETTER SAN
+10E2;AL # GEORGIAN LETTER TAR
+10E3;AL # GEORGIAN LETTER UN
+10E4;AL # GEORGIAN LETTER PHAR
+10E5;AL # GEORGIAN LETTER KHAR
+10E6;AL # GEORGIAN LETTER GHAN
+10E7;AL # GEORGIAN LETTER QAR
+10E8;AL # GEORGIAN LETTER SHIN
+10E9;AL # GEORGIAN LETTER CHIN
+10EA;AL # GEORGIAN LETTER CAN
+10EB;AL # GEORGIAN LETTER JIL
+10EC;AL # GEORGIAN LETTER CIL
+10ED;AL # GEORGIAN LETTER CHAR
+10EE;AL # GEORGIAN LETTER XAN
+10EF;AL # GEORGIAN LETTER JHAN
+10F0;AL # GEORGIAN LETTER HAE
+10F1;AL # GEORGIAN LETTER HE
+10F2;AL # GEORGIAN LETTER HIE
+10F3;AL # GEORGIAN LETTER WE
+10F4;AL # GEORGIAN LETTER HAR
+10F5;AL # GEORGIAN LETTER HOE
+10F6;AL # GEORGIAN LETTER FI
+10F7;AL # GEORGIAN LETTER YN
+10F8;AL # GEORGIAN LETTER ELIFI
+10F9;AL # GEORGIAN LETTER TURNED GAN
+10FA;AL # GEORGIAN LETTER AIN
+10FB;AL # GEORGIAN PARAGRAPH SEPARATOR
+10FC;AL # MODIFIER LETTER GEORGIAN NAR
+1100;JL # HANGUL CHOSEONG KIYEOK
+1101;JL # HANGUL CHOSEONG SSANGKIYEOK
+1102;JL # HANGUL CHOSEONG NIEUN
+1103;JL # HANGUL CHOSEONG TIKEUT
+1104;JL # HANGUL CHOSEONG SSANGTIKEUT
+1105;JL # HANGUL CHOSEONG RIEUL
+1106;JL # HANGUL CHOSEONG MIEUM
+1107;JL # HANGUL CHOSEONG PIEUP
+1108;JL # HANGUL CHOSEONG SSANGPIEUP
+1109;JL # HANGUL CHOSEONG SIOS
+110A;JL # HANGUL CHOSEONG SSANGSIOS
+110B;JL # HANGUL CHOSEONG IEUNG
+110C;JL # HANGUL CHOSEONG CIEUC
+110D;JL # HANGUL CHOSEONG SSANGCIEUC
+110E;JL # HANGUL CHOSEONG CHIEUCH
+110F;JL # HANGUL CHOSEONG KHIEUKH
+1110;JL # HANGUL CHOSEONG THIEUTH
+1111;JL # HANGUL CHOSEONG PHIEUPH
+1112;JL # HANGUL CHOSEONG HIEUH
+1113;JL # HANGUL CHOSEONG NIEUN-KIYEOK
+1114;JL # HANGUL CHOSEONG SSANGNIEUN
+1115;JL # HANGUL CHOSEONG NIEUN-TIKEUT
+1116;JL # HANGUL CHOSEONG NIEUN-PIEUP
+1117;JL # HANGUL CHOSEONG TIKEUT-KIYEOK
+1118;JL # HANGUL CHOSEONG RIEUL-NIEUN
+1119;JL # HANGUL CHOSEONG SSANGRIEUL
+111A;JL # HANGUL CHOSEONG RIEUL-HIEUH
+111B;JL # HANGUL CHOSEONG KAPYEOUNRIEUL
+111C;JL # HANGUL CHOSEONG MIEUM-PIEUP
+111D;JL # HANGUL CHOSEONG KAPYEOUNMIEUM
+111E;JL # HANGUL CHOSEONG PIEUP-KIYEOK
+111F;JL # HANGUL CHOSEONG PIEUP-NIEUN
+1120;JL # HANGUL CHOSEONG PIEUP-TIKEUT
+1121;JL # HANGUL CHOSEONG PIEUP-SIOS
+1122;JL # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+1123;JL # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+1124;JL # HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125;JL # HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126;JL # HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127;JL # HANGUL CHOSEONG PIEUP-CIEUC
+1128;JL # HANGUL CHOSEONG PIEUP-CHIEUCH
+1129;JL # HANGUL CHOSEONG PIEUP-THIEUTH
+112A;JL # HANGUL CHOSEONG PIEUP-PHIEUPH
+112B;JL # HANGUL CHOSEONG KAPYEOUNPIEUP
+112C;JL # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+112D;JL # HANGUL CHOSEONG SIOS-KIYEOK
+112E;JL # HANGUL CHOSEONG SIOS-NIEUN
+112F;JL # HANGUL CHOSEONG SIOS-TIKEUT
+1130;JL # HANGUL CHOSEONG SIOS-RIEUL
+1131;JL # HANGUL CHOSEONG SIOS-MIEUM
+1132;JL # HANGUL CHOSEONG SIOS-PIEUP
+1133;JL # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134;JL # HANGUL CHOSEONG SIOS-SSANGSIOS
+1135;JL # HANGUL CHOSEONG SIOS-IEUNG
+1136;JL # HANGUL CHOSEONG SIOS-CIEUC
+1137;JL # HANGUL CHOSEONG SIOS-CHIEUCH
+1138;JL # HANGUL CHOSEONG SIOS-KHIEUKH
+1139;JL # HANGUL CHOSEONG SIOS-THIEUTH
+113A;JL # HANGUL CHOSEONG SIOS-PHIEUPH
+113B;JL # HANGUL CHOSEONG SIOS-HIEUH
+113C;JL # HANGUL CHOSEONG CHITUEUMSIOS
+113D;JL # HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113E;JL # HANGUL CHOSEONG CEONGCHIEUMSIOS
+113F;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140;JL # HANGUL CHOSEONG PANSIOS
+1141;JL # HANGUL CHOSEONG IEUNG-KIYEOK
+1142;JL # HANGUL CHOSEONG IEUNG-TIKEUT
+1143;JL # HANGUL CHOSEONG IEUNG-MIEUM
+1144;JL # HANGUL CHOSEONG IEUNG-PIEUP
+1145;JL # HANGUL CHOSEONG IEUNG-SIOS
+1146;JL # HANGUL CHOSEONG IEUNG-PANSIOS
+1147;JL # HANGUL CHOSEONG SSANGIEUNG
+1148;JL # HANGUL CHOSEONG IEUNG-CIEUC
+1149;JL # HANGUL CHOSEONG IEUNG-CHIEUCH
+114A;JL # HANGUL CHOSEONG IEUNG-THIEUTH
+114B;JL # HANGUL CHOSEONG IEUNG-PHIEUPH
+114C;JL # HANGUL CHOSEONG YESIEUNG
+114D;JL # HANGUL CHOSEONG CIEUC-IEUNG
+114E;JL # HANGUL CHOSEONG CHITUEUMCIEUC
+114F;JL # HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150;JL # HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151;JL # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152;JL # HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153;JL # HANGUL CHOSEONG CHIEUCH-HIEUH
+1154;JL # HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155;JL # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156;JL # HANGUL CHOSEONG PHIEUPH-PIEUP
+1157;JL # HANGUL CHOSEONG KAPYEOUNPHIEUPH
+1158;JL # HANGUL CHOSEONG SSANGHIEUH
+1159;JL # HANGUL CHOSEONG YEORINHIEUH
+115F;JL # HANGUL CHOSEONG FILLER
+1160;JV # HANGUL JUNGSEONG FILLER
+1161;JV # HANGUL JUNGSEONG A
+1162;JV # HANGUL JUNGSEONG AE
+1163;JV # HANGUL JUNGSEONG YA
+1164;JV # HANGUL JUNGSEONG YAE
+1165;JV # HANGUL JUNGSEONG EO
+1166;JV # HANGUL JUNGSEONG E
+1167;JV # HANGUL JUNGSEONG YEO
+1168;JV # HANGUL JUNGSEONG YE
+1169;JV # HANGUL JUNGSEONG O
+116A;JV # HANGUL JUNGSEONG WA
+116B;JV # HANGUL JUNGSEONG WAE
+116C;JV # HANGUL JUNGSEONG OE
+116D;JV # HANGUL JUNGSEONG YO
+116E;JV # HANGUL JUNGSEONG U
+116F;JV # HANGUL JUNGSEONG WEO
+1170;JV # HANGUL JUNGSEONG WE
+1171;JV # HANGUL JUNGSEONG WI
+1172;JV # HANGUL JUNGSEONG YU
+1173;JV # HANGUL JUNGSEONG EU
+1174;JV # HANGUL JUNGSEONG YI
+1175;JV # HANGUL JUNGSEONG I
+1176;JV # HANGUL JUNGSEONG A-O
+1177;JV # HANGUL JUNGSEONG A-U
+1178;JV # HANGUL JUNGSEONG YA-O
+1179;JV # HANGUL JUNGSEONG YA-YO
+117A;JV # HANGUL JUNGSEONG EO-O
+117B;JV # HANGUL JUNGSEONG EO-U
+117C;JV # HANGUL JUNGSEONG EO-EU
+117D;JV # HANGUL JUNGSEONG YEO-O
+117E;JV # HANGUL JUNGSEONG YEO-U
+117F;JV # HANGUL JUNGSEONG O-EO
+1180;JV # HANGUL JUNGSEONG O-E
+1181;JV # HANGUL JUNGSEONG O-YE
+1182;JV # HANGUL JUNGSEONG O-O
+1183;JV # HANGUL JUNGSEONG O-U
+1184;JV # HANGUL JUNGSEONG YO-YA
+1185;JV # HANGUL JUNGSEONG YO-YAE
+1186;JV # HANGUL JUNGSEONG YO-YEO
+1187;JV # HANGUL JUNGSEONG YO-O
+1188;JV # HANGUL JUNGSEONG YO-I
+1189;JV # HANGUL JUNGSEONG U-A
+118A;JV # HANGUL JUNGSEONG U-AE
+118B;JV # HANGUL JUNGSEONG U-EO-EU
+118C;JV # HANGUL JUNGSEONG U-YE
+118D;JV # HANGUL JUNGSEONG U-U
+118E;JV # HANGUL JUNGSEONG YU-A
+118F;JV # HANGUL JUNGSEONG YU-EO
+1190;JV # HANGUL JUNGSEONG YU-E
+1191;JV # HANGUL JUNGSEONG YU-YEO
+1192;JV # HANGUL JUNGSEONG YU-YE
+1193;JV # HANGUL JUNGSEONG YU-U
+1194;JV # HANGUL JUNGSEONG YU-I
+1195;JV # HANGUL JUNGSEONG EU-U
+1196;JV # HANGUL JUNGSEONG EU-EU
+1197;JV # HANGUL JUNGSEONG YI-U
+1198;JV # HANGUL JUNGSEONG I-A
+1199;JV # HANGUL JUNGSEONG I-YA
+119A;JV # HANGUL JUNGSEONG I-O
+119B;JV # HANGUL JUNGSEONG I-U
+119C;JV # HANGUL JUNGSEONG I-EU
+119D;JV # HANGUL JUNGSEONG I-ARAEA
+119E;JV # HANGUL JUNGSEONG ARAEA
+119F;JV # HANGUL JUNGSEONG ARAEA-EO
+11A0;JV # HANGUL JUNGSEONG ARAEA-U
+11A1;JV # HANGUL JUNGSEONG ARAEA-I
+11A2;JV # HANGUL JUNGSEONG SSANGARAEA
+11A8;JT # HANGUL JONGSEONG KIYEOK
+11A9;JT # HANGUL JONGSEONG SSANGKIYEOK
+11AA;JT # HANGUL JONGSEONG KIYEOK-SIOS
+11AB;JT # HANGUL JONGSEONG NIEUN
+11AC;JT # HANGUL JONGSEONG NIEUN-CIEUC
+11AD;JT # HANGUL JONGSEONG NIEUN-HIEUH
+11AE;JT # HANGUL JONGSEONG TIKEUT
+11AF;JT # HANGUL JONGSEONG RIEUL
+11B0;JT # HANGUL JONGSEONG RIEUL-KIYEOK
+11B1;JT # HANGUL JONGSEONG RIEUL-MIEUM
+11B2;JT # HANGUL JONGSEONG RIEUL-PIEUP
+11B3;JT # HANGUL JONGSEONG RIEUL-SIOS
+11B4;JT # HANGUL JONGSEONG RIEUL-THIEUTH
+11B5;JT # HANGUL JONGSEONG RIEUL-PHIEUPH
+11B6;JT # HANGUL JONGSEONG RIEUL-HIEUH
+11B7;JT # HANGUL JONGSEONG MIEUM
+11B8;JT # HANGUL JONGSEONG PIEUP
+11B9;JT # HANGUL JONGSEONG PIEUP-SIOS
+11BA;JT # HANGUL JONGSEONG SIOS
+11BB;JT # HANGUL JONGSEONG SSANGSIOS
+11BC;JT # HANGUL JONGSEONG IEUNG
+11BD;JT # HANGUL JONGSEONG CIEUC
+11BE;JT # HANGUL JONGSEONG CHIEUCH
+11BF;JT # HANGUL JONGSEONG KHIEUKH
+11C0;JT # HANGUL JONGSEONG THIEUTH
+11C1;JT # HANGUL JONGSEONG PHIEUPH
+11C2;JT # HANGUL JONGSEONG HIEUH
+11C3;JT # HANGUL JONGSEONG KIYEOK-RIEUL
+11C4;JT # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11C5;JT # HANGUL JONGSEONG NIEUN-KIYEOK
+11C6;JT # HANGUL JONGSEONG NIEUN-TIKEUT
+11C7;JT # HANGUL JONGSEONG NIEUN-SIOS
+11C8;JT # HANGUL JONGSEONG NIEUN-PANSIOS
+11C9;JT # HANGUL JONGSEONG NIEUN-THIEUTH
+11CA;JT # HANGUL JONGSEONG TIKEUT-KIYEOK
+11CB;JT # HANGUL JONGSEONG TIKEUT-RIEUL
+11CC;JT # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+11CD;JT # HANGUL JONGSEONG RIEUL-NIEUN
+11CE;JT # HANGUL JONGSEONG RIEUL-TIKEUT
+11CF;JT # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11D0;JT # HANGUL JONGSEONG SSANGRIEUL
+11D1;JT # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11D2;JT # HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11D3;JT # HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+11D4;JT # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11D5;JT # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11D6;JT # HANGUL JONGSEONG RIEUL-SSANGSIOS
+11D7;JT # HANGUL JONGSEONG RIEUL-PANSIOS
+11D8;JT # HANGUL JONGSEONG RIEUL-KHIEUKH
+11D9;JT # HANGUL JONGSEONG RIEUL-YEORINHIEUH
+11DA;JT # HANGUL JONGSEONG MIEUM-KIYEOK
+11DB;JT # HANGUL JONGSEONG MIEUM-RIEUL
+11DC;JT # HANGUL JONGSEONG MIEUM-PIEUP
+11DD;JT # HANGUL JONGSEONG MIEUM-SIOS
+11DE;JT # HANGUL JONGSEONG MIEUM-SSANGSIOS
+11DF;JT # HANGUL JONGSEONG MIEUM-PANSIOS
+11E0;JT # HANGUL JONGSEONG MIEUM-CHIEUCH
+11E1;JT # HANGUL JONGSEONG MIEUM-HIEUH
+11E2;JT # HANGUL JONGSEONG KAPYEOUNMIEUM
+11E3;JT # HANGUL JONGSEONG PIEUP-RIEUL
+11E4;JT # HANGUL JONGSEONG PIEUP-PHIEUPH
+11E5;JT # HANGUL JONGSEONG PIEUP-HIEUH
+11E6;JT # HANGUL JONGSEONG KAPYEOUNPIEUP
+11E7;JT # HANGUL JONGSEONG SIOS-KIYEOK
+11E8;JT # HANGUL JONGSEONG SIOS-TIKEUT
+11E9;JT # HANGUL JONGSEONG SIOS-RIEUL
+11EA;JT # HANGUL JONGSEONG SIOS-PIEUP
+11EB;JT # HANGUL JONGSEONG PANSIOS
+11EC;JT # HANGUL JONGSEONG IEUNG-KIYEOK
+11ED;JT # HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11EE;JT # HANGUL JONGSEONG SSANGIEUNG
+11EF;JT # HANGUL JONGSEONG IEUNG-KHIEUKH
+11F0;JT # HANGUL JONGSEONG YESIEUNG
+11F1;JT # HANGUL JONGSEONG YESIEUNG-SIOS
+11F2;JT # HANGUL JONGSEONG YESIEUNG-PANSIOS
+11F3;JT # HANGUL JONGSEONG PHIEUPH-PIEUP
+11F4;JT # HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11F5;JT # HANGUL JONGSEONG HIEUH-NIEUN
+11F6;JT # HANGUL JONGSEONG HIEUH-RIEUL
+11F7;JT # HANGUL JONGSEONG HIEUH-MIEUM
+11F8;JT # HANGUL JONGSEONG HIEUH-PIEUP
+11F9;JT # HANGUL JONGSEONG YEORINHIEUH
+1200;AL # ETHIOPIC SYLLABLE HA
+1201;AL # ETHIOPIC SYLLABLE HU
+1202;AL # ETHIOPIC SYLLABLE HI
+1203;AL # ETHIOPIC SYLLABLE HAA
+1204;AL # ETHIOPIC SYLLABLE HEE
+1205;AL # ETHIOPIC SYLLABLE HE
+1206;AL # ETHIOPIC SYLLABLE HO
+1207;AL # ETHIOPIC SYLLABLE HOA
+1208;AL # ETHIOPIC SYLLABLE LA
+1209;AL # ETHIOPIC SYLLABLE LU
+120A;AL # ETHIOPIC SYLLABLE LI
+120B;AL # ETHIOPIC SYLLABLE LAA
+120C;AL # ETHIOPIC SYLLABLE LEE
+120D;AL # ETHIOPIC SYLLABLE LE
+120E;AL # ETHIOPIC SYLLABLE LO
+120F;AL # ETHIOPIC SYLLABLE LWA
+1210;AL # ETHIOPIC SYLLABLE HHA
+1211;AL # ETHIOPIC SYLLABLE HHU
+1212;AL # ETHIOPIC SYLLABLE HHI
+1213;AL # ETHIOPIC SYLLABLE HHAA
+1214;AL # ETHIOPIC SYLLABLE HHEE
+1215;AL # ETHIOPIC SYLLABLE HHE
+1216;AL # ETHIOPIC SYLLABLE HHO
+1217;AL # ETHIOPIC SYLLABLE HHWA
+1218;AL # ETHIOPIC SYLLABLE MA
+1219;AL # ETHIOPIC SYLLABLE MU
+121A;AL # ETHIOPIC SYLLABLE MI
+121B;AL # ETHIOPIC SYLLABLE MAA
+121C;AL # ETHIOPIC SYLLABLE MEE
+121D;AL # ETHIOPIC SYLLABLE ME
+121E;AL # ETHIOPIC SYLLABLE MO
+121F;AL # ETHIOPIC SYLLABLE MWA
+1220;AL # ETHIOPIC SYLLABLE SZA
+1221;AL # ETHIOPIC SYLLABLE SZU
+1222;AL # ETHIOPIC SYLLABLE SZI
+1223;AL # ETHIOPIC SYLLABLE SZAA
+1224;AL # ETHIOPIC SYLLABLE SZEE
+1225;AL # ETHIOPIC SYLLABLE SZE
+1226;AL # ETHIOPIC SYLLABLE SZO
+1227;AL # ETHIOPIC SYLLABLE SZWA
+1228;AL # ETHIOPIC SYLLABLE RA
+1229;AL # ETHIOPIC SYLLABLE RU
+122A;AL # ETHIOPIC SYLLABLE RI
+122B;AL # ETHIOPIC SYLLABLE RAA
+122C;AL # ETHIOPIC SYLLABLE REE
+122D;AL # ETHIOPIC SYLLABLE RE
+122E;AL # ETHIOPIC SYLLABLE RO
+122F;AL # ETHIOPIC SYLLABLE RWA
+1230;AL # ETHIOPIC SYLLABLE SA
+1231;AL # ETHIOPIC SYLLABLE SU
+1232;AL # ETHIOPIC SYLLABLE SI
+1233;AL # ETHIOPIC SYLLABLE SAA
+1234;AL # ETHIOPIC SYLLABLE SEE
+1235;AL # ETHIOPIC SYLLABLE SE
+1236;AL # ETHIOPIC SYLLABLE SO
+1237;AL # ETHIOPIC SYLLABLE SWA
+1238;AL # ETHIOPIC SYLLABLE SHA
+1239;AL # ETHIOPIC SYLLABLE SHU
+123A;AL # ETHIOPIC SYLLABLE SHI
+123B;AL # ETHIOPIC SYLLABLE SHAA
+123C;AL # ETHIOPIC SYLLABLE SHEE
+123D;AL # ETHIOPIC SYLLABLE SHE
+123E;AL # ETHIOPIC SYLLABLE SHO
+123F;AL # ETHIOPIC SYLLABLE SHWA
+1240;AL # ETHIOPIC SYLLABLE QA
+1241;AL # ETHIOPIC SYLLABLE QU
+1242;AL # ETHIOPIC SYLLABLE QI
+1243;AL # ETHIOPIC SYLLABLE QAA
+1244;AL # ETHIOPIC SYLLABLE QEE
+1245;AL # ETHIOPIC SYLLABLE QE
+1246;AL # ETHIOPIC SYLLABLE QO
+1247;AL # ETHIOPIC SYLLABLE QOA
+1248;AL # ETHIOPIC SYLLABLE QWA
+124A;AL # ETHIOPIC SYLLABLE QWI
+124B;AL # ETHIOPIC SYLLABLE QWAA
+124C;AL # ETHIOPIC SYLLABLE QWEE
+124D;AL # ETHIOPIC SYLLABLE QWE
+1250;AL # ETHIOPIC SYLLABLE QHA
+1251;AL # ETHIOPIC SYLLABLE QHU
+1252;AL # ETHIOPIC SYLLABLE QHI
+1253;AL # ETHIOPIC SYLLABLE QHAA
+1254;AL # ETHIOPIC SYLLABLE QHEE
+1255;AL # ETHIOPIC SYLLABLE QHE
+1256;AL # ETHIOPIC SYLLABLE QHO
+1258;AL # ETHIOPIC SYLLABLE QHWA
+125A;AL # ETHIOPIC SYLLABLE QHWI
+125B;AL # ETHIOPIC SYLLABLE QHWAA
+125C;AL # ETHIOPIC SYLLABLE QHWEE
+125D;AL # ETHIOPIC SYLLABLE QHWE
+1260;AL # ETHIOPIC SYLLABLE BA
+1261;AL # ETHIOPIC SYLLABLE BU
+1262;AL # ETHIOPIC SYLLABLE BI
+1263;AL # ETHIOPIC SYLLABLE BAA
+1264;AL # ETHIOPIC SYLLABLE BEE
+1265;AL # ETHIOPIC SYLLABLE BE
+1266;AL # ETHIOPIC SYLLABLE BO
+1267;AL # ETHIOPIC SYLLABLE BWA
+1268;AL # ETHIOPIC SYLLABLE VA
+1269;AL # ETHIOPIC SYLLABLE VU
+126A;AL # ETHIOPIC SYLLABLE VI
+126B;AL # ETHIOPIC SYLLABLE VAA
+126C;AL # ETHIOPIC SYLLABLE VEE
+126D;AL # ETHIOPIC SYLLABLE VE
+126E;AL # ETHIOPIC SYLLABLE VO
+126F;AL # ETHIOPIC SYLLABLE VWA
+1270;AL # ETHIOPIC SYLLABLE TA
+1271;AL # ETHIOPIC SYLLABLE TU
+1272;AL # ETHIOPIC SYLLABLE TI
+1273;AL # ETHIOPIC SYLLABLE TAA
+1274;AL # ETHIOPIC SYLLABLE TEE
+1275;AL # ETHIOPIC SYLLABLE TE
+1276;AL # ETHIOPIC SYLLABLE TO
+1277;AL # ETHIOPIC SYLLABLE TWA
+1278;AL # ETHIOPIC SYLLABLE CA
+1279;AL # ETHIOPIC SYLLABLE CU
+127A;AL # ETHIOPIC SYLLABLE CI
+127B;AL # ETHIOPIC SYLLABLE CAA
+127C;AL # ETHIOPIC SYLLABLE CEE
+127D;AL # ETHIOPIC SYLLABLE CE
+127E;AL # ETHIOPIC SYLLABLE CO
+127F;AL # ETHIOPIC SYLLABLE CWA
+1280;AL # ETHIOPIC SYLLABLE XA
+1281;AL # ETHIOPIC SYLLABLE XU
+1282;AL # ETHIOPIC SYLLABLE XI
+1283;AL # ETHIOPIC SYLLABLE XAA
+1284;AL # ETHIOPIC SYLLABLE XEE
+1285;AL # ETHIOPIC SYLLABLE XE
+1286;AL # ETHIOPIC SYLLABLE XO
+1287;AL # ETHIOPIC SYLLABLE XOA
+1288;AL # ETHIOPIC SYLLABLE XWA
+128A;AL # ETHIOPIC SYLLABLE XWI
+128B;AL # ETHIOPIC SYLLABLE XWAA
+128C;AL # ETHIOPIC SYLLABLE XWEE
+128D;AL # ETHIOPIC SYLLABLE XWE
+1290;AL # ETHIOPIC SYLLABLE NA
+1291;AL # ETHIOPIC SYLLABLE NU
+1292;AL # ETHIOPIC SYLLABLE NI
+1293;AL # ETHIOPIC SYLLABLE NAA
+1294;AL # ETHIOPIC SYLLABLE NEE
+1295;AL # ETHIOPIC SYLLABLE NE
+1296;AL # ETHIOPIC SYLLABLE NO
+1297;AL # ETHIOPIC SYLLABLE NWA
+1298;AL # ETHIOPIC SYLLABLE NYA
+1299;AL # ETHIOPIC SYLLABLE NYU
+129A;AL # ETHIOPIC SYLLABLE NYI
+129B;AL # ETHIOPIC SYLLABLE NYAA
+129C;AL # ETHIOPIC SYLLABLE NYEE
+129D;AL # ETHIOPIC SYLLABLE NYE
+129E;AL # ETHIOPIC SYLLABLE NYO
+129F;AL # ETHIOPIC SYLLABLE NYWA
+12A0;AL # ETHIOPIC SYLLABLE GLOTTAL A
+12A1;AL # ETHIOPIC SYLLABLE GLOTTAL U
+12A2;AL # ETHIOPIC SYLLABLE GLOTTAL I
+12A3;AL # ETHIOPIC SYLLABLE GLOTTAL AA
+12A4;AL # ETHIOPIC SYLLABLE GLOTTAL EE
+12A5;AL # ETHIOPIC SYLLABLE GLOTTAL E
+12A6;AL # ETHIOPIC SYLLABLE GLOTTAL O
+12A7;AL # ETHIOPIC SYLLABLE GLOTTAL WA
+12A8;AL # ETHIOPIC SYLLABLE KA
+12A9;AL # ETHIOPIC SYLLABLE KU
+12AA;AL # ETHIOPIC SYLLABLE KI
+12AB;AL # ETHIOPIC SYLLABLE KAA
+12AC;AL # ETHIOPIC SYLLABLE KEE
+12AD;AL # ETHIOPIC SYLLABLE KE
+12AE;AL # ETHIOPIC SYLLABLE KO
+12AF;AL # ETHIOPIC SYLLABLE KOA
+12B0;AL # ETHIOPIC SYLLABLE KWA
+12B2;AL # ETHIOPIC SYLLABLE KWI
+12B3;AL # ETHIOPIC SYLLABLE KWAA
+12B4;AL # ETHIOPIC SYLLABLE KWEE
+12B5;AL # ETHIOPIC SYLLABLE KWE
+12B8;AL # ETHIOPIC SYLLABLE KXA
+12B9;AL # ETHIOPIC SYLLABLE KXU
+12BA;AL # ETHIOPIC SYLLABLE KXI
+12BB;AL # ETHIOPIC SYLLABLE KXAA
+12BC;AL # ETHIOPIC SYLLABLE KXEE
+12BD;AL # ETHIOPIC SYLLABLE KXE
+12BE;AL # ETHIOPIC SYLLABLE KXO
+12C0;AL # ETHIOPIC SYLLABLE KXWA
+12C2;AL # ETHIOPIC SYLLABLE KXWI
+12C3;AL # ETHIOPIC SYLLABLE KXWAA
+12C4;AL # ETHIOPIC SYLLABLE KXWEE
+12C5;AL # ETHIOPIC SYLLABLE KXWE
+12C8;AL # ETHIOPIC SYLLABLE WA
+12C9;AL # ETHIOPIC SYLLABLE WU
+12CA;AL # ETHIOPIC SYLLABLE WI
+12CB;AL # ETHIOPIC SYLLABLE WAA
+12CC;AL # ETHIOPIC SYLLABLE WEE
+12CD;AL # ETHIOPIC SYLLABLE WE
+12CE;AL # ETHIOPIC SYLLABLE WO
+12CF;AL # ETHIOPIC SYLLABLE WOA
+12D0;AL # ETHIOPIC SYLLABLE PHARYNGEAL A
+12D1;AL # ETHIOPIC SYLLABLE PHARYNGEAL U
+12D2;AL # ETHIOPIC SYLLABLE PHARYNGEAL I
+12D3;AL # ETHIOPIC SYLLABLE PHARYNGEAL AA
+12D4;AL # ETHIOPIC SYLLABLE PHARYNGEAL EE
+12D5;AL # ETHIOPIC SYLLABLE PHARYNGEAL E
+12D6;AL # ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8;AL # ETHIOPIC SYLLABLE ZA
+12D9;AL # ETHIOPIC SYLLABLE ZU
+12DA;AL # ETHIOPIC SYLLABLE ZI
+12DB;AL # ETHIOPIC SYLLABLE ZAA
+12DC;AL # ETHIOPIC SYLLABLE ZEE
+12DD;AL # ETHIOPIC SYLLABLE ZE
+12DE;AL # ETHIOPIC SYLLABLE ZO
+12DF;AL # ETHIOPIC SYLLABLE ZWA
+12E0;AL # ETHIOPIC SYLLABLE ZHA
+12E1;AL # ETHIOPIC SYLLABLE ZHU
+12E2;AL # ETHIOPIC SYLLABLE ZHI
+12E3;AL # ETHIOPIC SYLLABLE ZHAA
+12E4;AL # ETHIOPIC SYLLABLE ZHEE
+12E5;AL # ETHIOPIC SYLLABLE ZHE
+12E6;AL # ETHIOPIC SYLLABLE ZHO
+12E7;AL # ETHIOPIC SYLLABLE ZHWA
+12E8;AL # ETHIOPIC SYLLABLE YA
+12E9;AL # ETHIOPIC SYLLABLE YU
+12EA;AL # ETHIOPIC SYLLABLE YI
+12EB;AL # ETHIOPIC SYLLABLE YAA
+12EC;AL # ETHIOPIC SYLLABLE YEE
+12ED;AL # ETHIOPIC SYLLABLE YE
+12EE;AL # ETHIOPIC SYLLABLE YO
+12EF;AL # ETHIOPIC SYLLABLE YOA
+12F0;AL # ETHIOPIC SYLLABLE DA
+12F1;AL # ETHIOPIC SYLLABLE DU
+12F2;AL # ETHIOPIC SYLLABLE DI
+12F3;AL # ETHIOPIC SYLLABLE DAA
+12F4;AL # ETHIOPIC SYLLABLE DEE
+12F5;AL # ETHIOPIC SYLLABLE DE
+12F6;AL # ETHIOPIC SYLLABLE DO
+12F7;AL # ETHIOPIC SYLLABLE DWA
+12F8;AL # ETHIOPIC SYLLABLE DDA
+12F9;AL # ETHIOPIC SYLLABLE DDU
+12FA;AL # ETHIOPIC SYLLABLE DDI
+12FB;AL # ETHIOPIC SYLLABLE DDAA
+12FC;AL # ETHIOPIC SYLLABLE DDEE
+12FD;AL # ETHIOPIC SYLLABLE DDE
+12FE;AL # ETHIOPIC SYLLABLE DDO
+12FF;AL # ETHIOPIC SYLLABLE DDWA
+1300;AL # ETHIOPIC SYLLABLE JA
+1301;AL # ETHIOPIC SYLLABLE JU
+1302;AL # ETHIOPIC SYLLABLE JI
+1303;AL # ETHIOPIC SYLLABLE JAA
+1304;AL # ETHIOPIC SYLLABLE JEE
+1305;AL # ETHIOPIC SYLLABLE JE
+1306;AL # ETHIOPIC SYLLABLE JO
+1307;AL # ETHIOPIC SYLLABLE JWA
+1308;AL # ETHIOPIC SYLLABLE GA
+1309;AL # ETHIOPIC SYLLABLE GU
+130A;AL # ETHIOPIC SYLLABLE GI
+130B;AL # ETHIOPIC SYLLABLE GAA
+130C;AL # ETHIOPIC SYLLABLE GEE
+130D;AL # ETHIOPIC SYLLABLE GE
+130E;AL # ETHIOPIC SYLLABLE GO
+130F;AL # ETHIOPIC SYLLABLE GOA
+1310;AL # ETHIOPIC SYLLABLE GWA
+1312;AL # ETHIOPIC SYLLABLE GWI
+1313;AL # ETHIOPIC SYLLABLE GWAA
+1314;AL # ETHIOPIC SYLLABLE GWEE
+1315;AL # ETHIOPIC SYLLABLE GWE
+1318;AL # ETHIOPIC SYLLABLE GGA
+1319;AL # ETHIOPIC SYLLABLE GGU
+131A;AL # ETHIOPIC SYLLABLE GGI
+131B;AL # ETHIOPIC SYLLABLE GGAA
+131C;AL # ETHIOPIC SYLLABLE GGEE
+131D;AL # ETHIOPIC SYLLABLE GGE
+131E;AL # ETHIOPIC SYLLABLE GGO
+131F;AL # ETHIOPIC SYLLABLE GGWAA
+1320;AL # ETHIOPIC SYLLABLE THA
+1321;AL # ETHIOPIC SYLLABLE THU
+1322;AL # ETHIOPIC SYLLABLE THI
+1323;AL # ETHIOPIC SYLLABLE THAA
+1324;AL # ETHIOPIC SYLLABLE THEE
+1325;AL # ETHIOPIC SYLLABLE THE
+1326;AL # ETHIOPIC SYLLABLE THO
+1327;AL # ETHIOPIC SYLLABLE THWA
+1328;AL # ETHIOPIC SYLLABLE CHA
+1329;AL # ETHIOPIC SYLLABLE CHU
+132A;AL # ETHIOPIC SYLLABLE CHI
+132B;AL # ETHIOPIC SYLLABLE CHAA
+132C;AL # ETHIOPIC SYLLABLE CHEE
+132D;AL # ETHIOPIC SYLLABLE CHE
+132E;AL # ETHIOPIC SYLLABLE CHO
+132F;AL # ETHIOPIC SYLLABLE CHWA
+1330;AL # ETHIOPIC SYLLABLE PHA
+1331;AL # ETHIOPIC SYLLABLE PHU
+1332;AL # ETHIOPIC SYLLABLE PHI
+1333;AL # ETHIOPIC SYLLABLE PHAA
+1334;AL # ETHIOPIC SYLLABLE PHEE
+1335;AL # ETHIOPIC SYLLABLE PHE
+1336;AL # ETHIOPIC SYLLABLE PHO
+1337;AL # ETHIOPIC SYLLABLE PHWA
+1338;AL # ETHIOPIC SYLLABLE TSA
+1339;AL # ETHIOPIC SYLLABLE TSU
+133A;AL # ETHIOPIC SYLLABLE TSI
+133B;AL # ETHIOPIC SYLLABLE TSAA
+133C;AL # ETHIOPIC SYLLABLE TSEE
+133D;AL # ETHIOPIC SYLLABLE TSE
+133E;AL # ETHIOPIC SYLLABLE TSO
+133F;AL # ETHIOPIC SYLLABLE TSWA
+1340;AL # ETHIOPIC SYLLABLE TZA
+1341;AL # ETHIOPIC SYLLABLE TZU
+1342;AL # ETHIOPIC SYLLABLE TZI
+1343;AL # ETHIOPIC SYLLABLE TZAA
+1344;AL # ETHIOPIC SYLLABLE TZEE
+1345;AL # ETHIOPIC SYLLABLE TZE
+1346;AL # ETHIOPIC SYLLABLE TZO
+1347;AL # ETHIOPIC SYLLABLE TZOA
+1348;AL # ETHIOPIC SYLLABLE FA
+1349;AL # ETHIOPIC SYLLABLE FU
+134A;AL # ETHIOPIC SYLLABLE FI
+134B;AL # ETHIOPIC SYLLABLE FAA
+134C;AL # ETHIOPIC SYLLABLE FEE
+134D;AL # ETHIOPIC SYLLABLE FE
+134E;AL # ETHIOPIC SYLLABLE FO
+134F;AL # ETHIOPIC SYLLABLE FWA
+1350;AL # ETHIOPIC SYLLABLE PA
+1351;AL # ETHIOPIC SYLLABLE PU
+1352;AL # ETHIOPIC SYLLABLE PI
+1353;AL # ETHIOPIC SYLLABLE PAA
+1354;AL # ETHIOPIC SYLLABLE PEE
+1355;AL # ETHIOPIC SYLLABLE PE
+1356;AL # ETHIOPIC SYLLABLE PO
+1357;AL # ETHIOPIC SYLLABLE PWA
+1358;AL # ETHIOPIC SYLLABLE RYA
+1359;AL # ETHIOPIC SYLLABLE MYA
+135A;AL # ETHIOPIC SYLLABLE FYA
+135F;CM # ETHIOPIC COMBINING GEMINATION MARK
+1360;AL # ETHIOPIC SECTION MARK
+1361;BA # ETHIOPIC WORDSPACE
+1362;AL # ETHIOPIC FULL STOP
+1363;AL # ETHIOPIC COMMA
+1364;AL # ETHIOPIC SEMICOLON
+1365;AL # ETHIOPIC COLON
+1366;AL # ETHIOPIC PREFACE COLON
+1367;AL # ETHIOPIC QUESTION MARK
+1368;AL # ETHIOPIC PARAGRAPH SEPARATOR
+1369;AL # ETHIOPIC DIGIT ONE
+136A;AL # ETHIOPIC DIGIT TWO
+136B;AL # ETHIOPIC DIGIT THREE
+136C;AL # ETHIOPIC DIGIT FOUR
+136D;AL # ETHIOPIC DIGIT FIVE
+136E;AL # ETHIOPIC DIGIT SIX
+136F;AL # ETHIOPIC DIGIT SEVEN
+1370;AL # ETHIOPIC DIGIT EIGHT
+1371;AL # ETHIOPIC DIGIT NINE
+1372;AL # ETHIOPIC NUMBER TEN
+1373;AL # ETHIOPIC NUMBER TWENTY
+1374;AL # ETHIOPIC NUMBER THIRTY
+1375;AL # ETHIOPIC NUMBER FORTY
+1376;AL # ETHIOPIC NUMBER FIFTY
+1377;AL # ETHIOPIC NUMBER SIXTY
+1378;AL # ETHIOPIC NUMBER SEVENTY
+1379;AL # ETHIOPIC NUMBER EIGHTY
+137A;AL # ETHIOPIC NUMBER NINETY
+137B;AL # ETHIOPIC NUMBER HUNDRED
+137C;AL # ETHIOPIC NUMBER TEN THOUSAND
+1380;AL # ETHIOPIC SYLLABLE SEBATBEIT MWA
+1381;AL # ETHIOPIC SYLLABLE MWI
+1382;AL # ETHIOPIC SYLLABLE MWEE
+1383;AL # ETHIOPIC SYLLABLE MWE
+1384;AL # ETHIOPIC SYLLABLE SEBATBEIT BWA
+1385;AL # ETHIOPIC SYLLABLE BWI
+1386;AL # ETHIOPIC SYLLABLE BWEE
+1387;AL # ETHIOPIC SYLLABLE BWE
+1388;AL # ETHIOPIC SYLLABLE SEBATBEIT FWA
+1389;AL # ETHIOPIC SYLLABLE FWI
+138A;AL # ETHIOPIC SYLLABLE FWEE
+138B;AL # ETHIOPIC SYLLABLE FWE
+138C;AL # ETHIOPIC SYLLABLE SEBATBEIT PWA
+138D;AL # ETHIOPIC SYLLABLE PWI
+138E;AL # ETHIOPIC SYLLABLE PWEE
+138F;AL # ETHIOPIC SYLLABLE PWE
+1390;AL # ETHIOPIC TONAL MARK YIZET
+1391;AL # ETHIOPIC TONAL MARK DERET
+1392;AL # ETHIOPIC TONAL MARK RIKRIK
+1393;AL # ETHIOPIC TONAL MARK SHORT RIKRIK
+1394;AL # ETHIOPIC TONAL MARK DIFAT
+1395;AL # ETHIOPIC TONAL MARK KENAT
+1396;AL # ETHIOPIC TONAL MARK CHIRET
+1397;AL # ETHIOPIC TONAL MARK HIDET
+1398;AL # ETHIOPIC TONAL MARK DERET-HIDET
+1399;AL # ETHIOPIC TONAL MARK KURT
+13A0;AL # CHEROKEE LETTER A
+13A1;AL # CHEROKEE LETTER E
+13A2;AL # CHEROKEE LETTER I
+13A3;AL # CHEROKEE LETTER O
+13A4;AL # CHEROKEE LETTER U
+13A5;AL # CHEROKEE LETTER V
+13A6;AL # CHEROKEE LETTER GA
+13A7;AL # CHEROKEE LETTER KA
+13A8;AL # CHEROKEE LETTER GE
+13A9;AL # CHEROKEE LETTER GI
+13AA;AL # CHEROKEE LETTER GO
+13AB;AL # CHEROKEE LETTER GU
+13AC;AL # CHEROKEE LETTER GV
+13AD;AL # CHEROKEE LETTER HA
+13AE;AL # CHEROKEE LETTER HE
+13AF;AL # CHEROKEE LETTER HI
+13B0;AL # CHEROKEE LETTER HO
+13B1;AL # CHEROKEE LETTER HU
+13B2;AL # CHEROKEE LETTER HV
+13B3;AL # CHEROKEE LETTER LA
+13B4;AL # CHEROKEE LETTER LE
+13B5;AL # CHEROKEE LETTER LI
+13B6;AL # CHEROKEE LETTER LO
+13B7;AL # CHEROKEE LETTER LU
+13B8;AL # CHEROKEE LETTER LV
+13B9;AL # CHEROKEE LETTER MA
+13BA;AL # CHEROKEE LETTER ME
+13BB;AL # CHEROKEE LETTER MI
+13BC;AL # CHEROKEE LETTER MO
+13BD;AL # CHEROKEE LETTER MU
+13BE;AL # CHEROKEE LETTER NA
+13BF;AL # CHEROKEE LETTER HNA
+13C0;AL # CHEROKEE LETTER NAH
+13C1;AL # CHEROKEE LETTER NE
+13C2;AL # CHEROKEE LETTER NI
+13C3;AL # CHEROKEE LETTER NO
+13C4;AL # CHEROKEE LETTER NU
+13C5;AL # CHEROKEE LETTER NV
+13C6;AL # CHEROKEE LETTER QUA
+13C7;AL # CHEROKEE LETTER QUE
+13C8;AL # CHEROKEE LETTER QUI
+13C9;AL # CHEROKEE LETTER QUO
+13CA;AL # CHEROKEE LETTER QUU
+13CB;AL # CHEROKEE LETTER QUV
+13CC;AL # CHEROKEE LETTER SA
+13CD;AL # CHEROKEE LETTER S
+13CE;AL # CHEROKEE LETTER SE
+13CF;AL # CHEROKEE LETTER SI
+13D0;AL # CHEROKEE LETTER SO
+13D1;AL # CHEROKEE LETTER SU
+13D2;AL # CHEROKEE LETTER SV
+13D3;AL # CHEROKEE LETTER DA
+13D4;AL # CHEROKEE LETTER TA
+13D5;AL # CHEROKEE LETTER DE
+13D6;AL # CHEROKEE LETTER TE
+13D7;AL # CHEROKEE LETTER DI
+13D8;AL # CHEROKEE LETTER TI
+13D9;AL # CHEROKEE LETTER DO
+13DA;AL # CHEROKEE LETTER DU
+13DB;AL # CHEROKEE LETTER DV
+13DC;AL # CHEROKEE LETTER DLA
+13DD;AL # CHEROKEE LETTER TLA
+13DE;AL # CHEROKEE LETTER TLE
+13DF;AL # CHEROKEE LETTER TLI
+13E0;AL # CHEROKEE LETTER TLO
+13E1;AL # CHEROKEE LETTER TLU
+13E2;AL # CHEROKEE LETTER TLV
+13E3;AL # CHEROKEE LETTER TSA
+13E4;AL # CHEROKEE LETTER TSE
+13E5;AL # CHEROKEE LETTER TSI
+13E6;AL # CHEROKEE LETTER TSO
+13E7;AL # CHEROKEE LETTER TSU
+13E8;AL # CHEROKEE LETTER TSV
+13E9;AL # CHEROKEE LETTER WA
+13EA;AL # CHEROKEE LETTER WE
+13EB;AL # CHEROKEE LETTER WI
+13EC;AL # CHEROKEE LETTER WO
+13ED;AL # CHEROKEE LETTER WU
+13EE;AL # CHEROKEE LETTER WV
+13EF;AL # CHEROKEE LETTER YA
+13F0;AL # CHEROKEE LETTER YE
+13F1;AL # CHEROKEE LETTER YI
+13F2;AL # CHEROKEE LETTER YO
+13F3;AL # CHEROKEE LETTER YU
+13F4;AL # CHEROKEE LETTER YV
+1401;AL # CANADIAN SYLLABICS E
+1402;AL # CANADIAN SYLLABICS AAI
+1403;AL # CANADIAN SYLLABICS I
+1404;AL # CANADIAN SYLLABICS II
+1405;AL # CANADIAN SYLLABICS O
+1406;AL # CANADIAN SYLLABICS OO
+1407;AL # CANADIAN SYLLABICS Y-CREE OO
+1408;AL # CANADIAN SYLLABICS CARRIER EE
+1409;AL # CANADIAN SYLLABICS CARRIER I
+140A;AL # CANADIAN SYLLABICS A
+140B;AL # CANADIAN SYLLABICS AA
+140C;AL # CANADIAN SYLLABICS WE
+140D;AL # CANADIAN SYLLABICS WEST-CREE WE
+140E;AL # CANADIAN SYLLABICS WI
+140F;AL # CANADIAN SYLLABICS WEST-CREE WI
+1410;AL # CANADIAN SYLLABICS WII
+1411;AL # CANADIAN SYLLABICS WEST-CREE WII
+1412;AL # CANADIAN SYLLABICS WO
+1413;AL # CANADIAN SYLLABICS WEST-CREE WO
+1414;AL # CANADIAN SYLLABICS WOO
+1415;AL # CANADIAN SYLLABICS WEST-CREE WOO
+1416;AL # CANADIAN SYLLABICS NASKAPI WOO
+1417;AL # CANADIAN SYLLABICS WA
+1418;AL # CANADIAN SYLLABICS WEST-CREE WA
+1419;AL # CANADIAN SYLLABICS WAA
+141A;AL # CANADIAN SYLLABICS WEST-CREE WAA
+141B;AL # CANADIAN SYLLABICS NASKAPI WAA
+141C;AL # CANADIAN SYLLABICS AI
+141D;AL # CANADIAN SYLLABICS Y-CREE W
+141E;AL # CANADIAN SYLLABICS GLOTTAL STOP
+141F;AL # CANADIAN SYLLABICS FINAL ACUTE
+1420;AL # CANADIAN SYLLABICS FINAL GRAVE
+1421;AL # CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422;AL # CANADIAN SYLLABICS FINAL TOP HALF RING
+1423;AL # CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424;AL # CANADIAN SYLLABICS FINAL RING
+1425;AL # CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426;AL # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427;AL # CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428;AL # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429;AL # CANADIAN SYLLABICS FINAL PLUS
+142A;AL # CANADIAN SYLLABICS FINAL DOWN TACK
+142B;AL # CANADIAN SYLLABICS EN
+142C;AL # CANADIAN SYLLABICS IN
+142D;AL # CANADIAN SYLLABICS ON
+142E;AL # CANADIAN SYLLABICS AN
+142F;AL # CANADIAN SYLLABICS PE
+1430;AL # CANADIAN SYLLABICS PAAI
+1431;AL # CANADIAN SYLLABICS PI
+1432;AL # CANADIAN SYLLABICS PII
+1433;AL # CANADIAN SYLLABICS PO
+1434;AL # CANADIAN SYLLABICS POO
+1435;AL # CANADIAN SYLLABICS Y-CREE POO
+1436;AL # CANADIAN SYLLABICS CARRIER HEE
+1437;AL # CANADIAN SYLLABICS CARRIER HI
+1438;AL # CANADIAN SYLLABICS PA
+1439;AL # CANADIAN SYLLABICS PAA
+143A;AL # CANADIAN SYLLABICS PWE
+143B;AL # CANADIAN SYLLABICS WEST-CREE PWE
+143C;AL # CANADIAN SYLLABICS PWI
+143D;AL # CANADIAN SYLLABICS WEST-CREE PWI
+143E;AL # CANADIAN SYLLABICS PWII
+143F;AL # CANADIAN SYLLABICS WEST-CREE PWII
+1440;AL # CANADIAN SYLLABICS PWO
+1441;AL # CANADIAN SYLLABICS WEST-CREE PWO
+1442;AL # CANADIAN SYLLABICS PWOO
+1443;AL # CANADIAN SYLLABICS WEST-CREE PWOO
+1444;AL # CANADIAN SYLLABICS PWA
+1445;AL # CANADIAN SYLLABICS WEST-CREE PWA
+1446;AL # CANADIAN SYLLABICS PWAA
+1447;AL # CANADIAN SYLLABICS WEST-CREE PWAA
+1448;AL # CANADIAN SYLLABICS Y-CREE PWAA
+1449;AL # CANADIAN SYLLABICS P
+144A;AL # CANADIAN SYLLABICS WEST-CREE P
+144B;AL # CANADIAN SYLLABICS CARRIER H
+144C;AL # CANADIAN SYLLABICS TE
+144D;AL # CANADIAN SYLLABICS TAAI
+144E;AL # CANADIAN SYLLABICS TI
+144F;AL # CANADIAN SYLLABICS TII
+1450;AL # CANADIAN SYLLABICS TO
+1451;AL # CANADIAN SYLLABICS TOO
+1452;AL # CANADIAN SYLLABICS Y-CREE TOO
+1453;AL # CANADIAN SYLLABICS CARRIER DEE
+1454;AL # CANADIAN SYLLABICS CARRIER DI
+1455;AL # CANADIAN SYLLABICS TA
+1456;AL # CANADIAN SYLLABICS TAA
+1457;AL # CANADIAN SYLLABICS TWE
+1458;AL # CANADIAN SYLLABICS WEST-CREE TWE
+1459;AL # CANADIAN SYLLABICS TWI
+145A;AL # CANADIAN SYLLABICS WEST-CREE TWI
+145B;AL # CANADIAN SYLLABICS TWII
+145C;AL # CANADIAN SYLLABICS WEST-CREE TWII
+145D;AL # CANADIAN SYLLABICS TWO
+145E;AL # CANADIAN SYLLABICS WEST-CREE TWO
+145F;AL # CANADIAN SYLLABICS TWOO
+1460;AL # CANADIAN SYLLABICS WEST-CREE TWOO
+1461;AL # CANADIAN SYLLABICS TWA
+1462;AL # CANADIAN SYLLABICS WEST-CREE TWA
+1463;AL # CANADIAN SYLLABICS TWAA
+1464;AL # CANADIAN SYLLABICS WEST-CREE TWAA
+1465;AL # CANADIAN SYLLABICS NASKAPI TWAA
+1466;AL # CANADIAN SYLLABICS T
+1467;AL # CANADIAN SYLLABICS TTE
+1468;AL # CANADIAN SYLLABICS TTI
+1469;AL # CANADIAN SYLLABICS TTO
+146A;AL # CANADIAN SYLLABICS TTA
+146B;AL # CANADIAN SYLLABICS KE
+146C;AL # CANADIAN SYLLABICS KAAI
+146D;AL # CANADIAN SYLLABICS KI
+146E;AL # CANADIAN SYLLABICS KII
+146F;AL # CANADIAN SYLLABICS KO
+1470;AL # CANADIAN SYLLABICS KOO
+1471;AL # CANADIAN SYLLABICS Y-CREE KOO
+1472;AL # CANADIAN SYLLABICS KA
+1473;AL # CANADIAN SYLLABICS KAA
+1474;AL # CANADIAN SYLLABICS KWE
+1475;AL # CANADIAN SYLLABICS WEST-CREE KWE
+1476;AL # CANADIAN SYLLABICS KWI
+1477;AL # CANADIAN SYLLABICS WEST-CREE KWI
+1478;AL # CANADIAN SYLLABICS KWII
+1479;AL # CANADIAN SYLLABICS WEST-CREE KWII
+147A;AL # CANADIAN SYLLABICS KWO
+147B;AL # CANADIAN SYLLABICS WEST-CREE KWO
+147C;AL # CANADIAN SYLLABICS KWOO
+147D;AL # CANADIAN SYLLABICS WEST-CREE KWOO
+147E;AL # CANADIAN SYLLABICS KWA
+147F;AL # CANADIAN SYLLABICS WEST-CREE KWA
+1480;AL # CANADIAN SYLLABICS KWAA
+1481;AL # CANADIAN SYLLABICS WEST-CREE KWAA
+1482;AL # CANADIAN SYLLABICS NASKAPI KWAA
+1483;AL # CANADIAN SYLLABICS K
+1484;AL # CANADIAN SYLLABICS KW
+1485;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488;AL # CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489;AL # CANADIAN SYLLABICS CE
+148A;AL # CANADIAN SYLLABICS CAAI
+148B;AL # CANADIAN SYLLABICS CI
+148C;AL # CANADIAN SYLLABICS CII
+148D;AL # CANADIAN SYLLABICS CO
+148E;AL # CANADIAN SYLLABICS COO
+148F;AL # CANADIAN SYLLABICS Y-CREE COO
+1490;AL # CANADIAN SYLLABICS CA
+1491;AL # CANADIAN SYLLABICS CAA
+1492;AL # CANADIAN SYLLABICS CWE
+1493;AL # CANADIAN SYLLABICS WEST-CREE CWE
+1494;AL # CANADIAN SYLLABICS CWI
+1495;AL # CANADIAN SYLLABICS WEST-CREE CWI
+1496;AL # CANADIAN SYLLABICS CWII
+1497;AL # CANADIAN SYLLABICS WEST-CREE CWII
+1498;AL # CANADIAN SYLLABICS CWO
+1499;AL # CANADIAN SYLLABICS WEST-CREE CWO
+149A;AL # CANADIAN SYLLABICS CWOO
+149B;AL # CANADIAN SYLLABICS WEST-CREE CWOO
+149C;AL # CANADIAN SYLLABICS CWA
+149D;AL # CANADIAN SYLLABICS WEST-CREE CWA
+149E;AL # CANADIAN SYLLABICS CWAA
+149F;AL # CANADIAN SYLLABICS WEST-CREE CWAA
+14A0;AL # CANADIAN SYLLABICS NASKAPI CWAA
+14A1;AL # CANADIAN SYLLABICS C
+14A2;AL # CANADIAN SYLLABICS SAYISI TH
+14A3;AL # CANADIAN SYLLABICS ME
+14A4;AL # CANADIAN SYLLABICS MAAI
+14A5;AL # CANADIAN SYLLABICS MI
+14A6;AL # CANADIAN SYLLABICS MII
+14A7;AL # CANADIAN SYLLABICS MO
+14A8;AL # CANADIAN SYLLABICS MOO
+14A9;AL # CANADIAN SYLLABICS Y-CREE MOO
+14AA;AL # CANADIAN SYLLABICS MA
+14AB;AL # CANADIAN SYLLABICS MAA
+14AC;AL # CANADIAN SYLLABICS MWE
+14AD;AL # CANADIAN SYLLABICS WEST-CREE MWE
+14AE;AL # CANADIAN SYLLABICS MWI
+14AF;AL # CANADIAN SYLLABICS WEST-CREE MWI
+14B0;AL # CANADIAN SYLLABICS MWII
+14B1;AL # CANADIAN SYLLABICS WEST-CREE MWII
+14B2;AL # CANADIAN SYLLABICS MWO
+14B3;AL # CANADIAN SYLLABICS WEST-CREE MWO
+14B4;AL # CANADIAN SYLLABICS MWOO
+14B5;AL # CANADIAN SYLLABICS WEST-CREE MWOO
+14B6;AL # CANADIAN SYLLABICS MWA
+14B7;AL # CANADIAN SYLLABICS WEST-CREE MWA
+14B8;AL # CANADIAN SYLLABICS MWAA
+14B9;AL # CANADIAN SYLLABICS WEST-CREE MWAA
+14BA;AL # CANADIAN SYLLABICS NASKAPI MWAA
+14BB;AL # CANADIAN SYLLABICS M
+14BC;AL # CANADIAN SYLLABICS WEST-CREE M
+14BD;AL # CANADIAN SYLLABICS MH
+14BE;AL # CANADIAN SYLLABICS ATHAPASCAN M
+14BF;AL # CANADIAN SYLLABICS SAYISI M
+14C0;AL # CANADIAN SYLLABICS NE
+14C1;AL # CANADIAN SYLLABICS NAAI
+14C2;AL # CANADIAN SYLLABICS NI
+14C3;AL # CANADIAN SYLLABICS NII
+14C4;AL # CANADIAN SYLLABICS NO
+14C5;AL # CANADIAN SYLLABICS NOO
+14C6;AL # CANADIAN SYLLABICS Y-CREE NOO
+14C7;AL # CANADIAN SYLLABICS NA
+14C8;AL # CANADIAN SYLLABICS NAA
+14C9;AL # CANADIAN SYLLABICS NWE
+14CA;AL # CANADIAN SYLLABICS WEST-CREE NWE
+14CB;AL # CANADIAN SYLLABICS NWA
+14CC;AL # CANADIAN SYLLABICS WEST-CREE NWA
+14CD;AL # CANADIAN SYLLABICS NWAA
+14CE;AL # CANADIAN SYLLABICS WEST-CREE NWAA
+14CF;AL # CANADIAN SYLLABICS NASKAPI NWAA
+14D0;AL # CANADIAN SYLLABICS N
+14D1;AL # CANADIAN SYLLABICS CARRIER NG
+14D2;AL # CANADIAN SYLLABICS NH
+14D3;AL # CANADIAN SYLLABICS LE
+14D4;AL # CANADIAN SYLLABICS LAAI
+14D5;AL # CANADIAN SYLLABICS LI
+14D6;AL # CANADIAN SYLLABICS LII
+14D7;AL # CANADIAN SYLLABICS LO
+14D8;AL # CANADIAN SYLLABICS LOO
+14D9;AL # CANADIAN SYLLABICS Y-CREE LOO
+14DA;AL # CANADIAN SYLLABICS LA
+14DB;AL # CANADIAN SYLLABICS LAA
+14DC;AL # CANADIAN SYLLABICS LWE
+14DD;AL # CANADIAN SYLLABICS WEST-CREE LWE
+14DE;AL # CANADIAN SYLLABICS LWI
+14DF;AL # CANADIAN SYLLABICS WEST-CREE LWI
+14E0;AL # CANADIAN SYLLABICS LWII
+14E1;AL # CANADIAN SYLLABICS WEST-CREE LWII
+14E2;AL # CANADIAN SYLLABICS LWO
+14E3;AL # CANADIAN SYLLABICS WEST-CREE LWO
+14E4;AL # CANADIAN SYLLABICS LWOO
+14E5;AL # CANADIAN SYLLABICS WEST-CREE LWOO
+14E6;AL # CANADIAN SYLLABICS LWA
+14E7;AL # CANADIAN SYLLABICS WEST-CREE LWA
+14E8;AL # CANADIAN SYLLABICS LWAA
+14E9;AL # CANADIAN SYLLABICS WEST-CREE LWAA
+14EA;AL # CANADIAN SYLLABICS L
+14EB;AL # CANADIAN SYLLABICS WEST-CREE L
+14EC;AL # CANADIAN SYLLABICS MEDIAL L
+14ED;AL # CANADIAN SYLLABICS SE
+14EE;AL # CANADIAN SYLLABICS SAAI
+14EF;AL # CANADIAN SYLLABICS SI
+14F0;AL # CANADIAN SYLLABICS SII
+14F1;AL # CANADIAN SYLLABICS SO
+14F2;AL # CANADIAN SYLLABICS SOO
+14F3;AL # CANADIAN SYLLABICS Y-CREE SOO
+14F4;AL # CANADIAN SYLLABICS SA
+14F5;AL # CANADIAN SYLLABICS SAA
+14F6;AL # CANADIAN SYLLABICS SWE
+14F7;AL # CANADIAN SYLLABICS WEST-CREE SWE
+14F8;AL # CANADIAN SYLLABICS SWI
+14F9;AL # CANADIAN SYLLABICS WEST-CREE SWI
+14FA;AL # CANADIAN SYLLABICS SWII
+14FB;AL # CANADIAN SYLLABICS WEST-CREE SWII
+14FC;AL # CANADIAN SYLLABICS SWO
+14FD;AL # CANADIAN SYLLABICS WEST-CREE SWO
+14FE;AL # CANADIAN SYLLABICS SWOO
+14FF;AL # CANADIAN SYLLABICS WEST-CREE SWOO
+1500;AL # CANADIAN SYLLABICS SWA
+1501;AL # CANADIAN SYLLABICS WEST-CREE SWA
+1502;AL # CANADIAN SYLLABICS SWAA
+1503;AL # CANADIAN SYLLABICS WEST-CREE SWAA
+1504;AL # CANADIAN SYLLABICS NASKAPI SWAA
+1505;AL # CANADIAN SYLLABICS S
+1506;AL # CANADIAN SYLLABICS ATHAPASCAN S
+1507;AL # CANADIAN SYLLABICS SW
+1508;AL # CANADIAN SYLLABICS BLACKFOOT S
+1509;AL # CANADIAN SYLLABICS MOOSE-CREE SK
+150A;AL # CANADIAN SYLLABICS NASKAPI SKW
+150B;AL # CANADIAN SYLLABICS NASKAPI S-W
+150C;AL # CANADIAN SYLLABICS NASKAPI SPWA
+150D;AL # CANADIAN SYLLABICS NASKAPI STWA
+150E;AL # CANADIAN SYLLABICS NASKAPI SKWA
+150F;AL # CANADIAN SYLLABICS NASKAPI SCWA
+1510;AL # CANADIAN SYLLABICS SHE
+1511;AL # CANADIAN SYLLABICS SHI
+1512;AL # CANADIAN SYLLABICS SHII
+1513;AL # CANADIAN SYLLABICS SHO
+1514;AL # CANADIAN SYLLABICS SHOO
+1515;AL # CANADIAN SYLLABICS SHA
+1516;AL # CANADIAN SYLLABICS SHAA
+1517;AL # CANADIAN SYLLABICS SHWE
+1518;AL # CANADIAN SYLLABICS WEST-CREE SHWE
+1519;AL # CANADIAN SYLLABICS SHWI
+151A;AL # CANADIAN SYLLABICS WEST-CREE SHWI
+151B;AL # CANADIAN SYLLABICS SHWII
+151C;AL # CANADIAN SYLLABICS WEST-CREE SHWII
+151D;AL # CANADIAN SYLLABICS SHWO
+151E;AL # CANADIAN SYLLABICS WEST-CREE SHWO
+151F;AL # CANADIAN SYLLABICS SHWOO
+1520;AL # CANADIAN SYLLABICS WEST-CREE SHWOO
+1521;AL # CANADIAN SYLLABICS SHWA
+1522;AL # CANADIAN SYLLABICS WEST-CREE SHWA
+1523;AL # CANADIAN SYLLABICS SHWAA
+1524;AL # CANADIAN SYLLABICS WEST-CREE SHWAA
+1525;AL # CANADIAN SYLLABICS SH
+1526;AL # CANADIAN SYLLABICS YE
+1527;AL # CANADIAN SYLLABICS YAAI
+1528;AL # CANADIAN SYLLABICS YI
+1529;AL # CANADIAN SYLLABICS YII
+152A;AL # CANADIAN SYLLABICS YO
+152B;AL # CANADIAN SYLLABICS YOO
+152C;AL # CANADIAN SYLLABICS Y-CREE YOO
+152D;AL # CANADIAN SYLLABICS YA
+152E;AL # CANADIAN SYLLABICS YAA
+152F;AL # CANADIAN SYLLABICS YWE
+1530;AL # CANADIAN SYLLABICS WEST-CREE YWE
+1531;AL # CANADIAN SYLLABICS YWI
+1532;AL # CANADIAN SYLLABICS WEST-CREE YWI
+1533;AL # CANADIAN SYLLABICS YWII
+1534;AL # CANADIAN SYLLABICS WEST-CREE YWII
+1535;AL # CANADIAN SYLLABICS YWO
+1536;AL # CANADIAN SYLLABICS WEST-CREE YWO
+1537;AL # CANADIAN SYLLABICS YWOO
+1538;AL # CANADIAN SYLLABICS WEST-CREE YWOO
+1539;AL # CANADIAN SYLLABICS YWA
+153A;AL # CANADIAN SYLLABICS WEST-CREE YWA
+153B;AL # CANADIAN SYLLABICS YWAA
+153C;AL # CANADIAN SYLLABICS WEST-CREE YWAA
+153D;AL # CANADIAN SYLLABICS NASKAPI YWAA
+153E;AL # CANADIAN SYLLABICS Y
+153F;AL # CANADIAN SYLLABICS BIBLE-CREE Y
+1540;AL # CANADIAN SYLLABICS WEST-CREE Y
+1541;AL # CANADIAN SYLLABICS SAYISI YI
+1542;AL # CANADIAN SYLLABICS RE
+1543;AL # CANADIAN SYLLABICS R-CREE RE
+1544;AL # CANADIAN SYLLABICS WEST-CREE LE
+1545;AL # CANADIAN SYLLABICS RAAI
+1546;AL # CANADIAN SYLLABICS RI
+1547;AL # CANADIAN SYLLABICS RII
+1548;AL # CANADIAN SYLLABICS RO
+1549;AL # CANADIAN SYLLABICS ROO
+154A;AL # CANADIAN SYLLABICS WEST-CREE LO
+154B;AL # CANADIAN SYLLABICS RA
+154C;AL # CANADIAN SYLLABICS RAA
+154D;AL # CANADIAN SYLLABICS WEST-CREE LA
+154E;AL # CANADIAN SYLLABICS RWAA
+154F;AL # CANADIAN SYLLABICS WEST-CREE RWAA
+1550;AL # CANADIAN SYLLABICS R
+1551;AL # CANADIAN SYLLABICS WEST-CREE R
+1552;AL # CANADIAN SYLLABICS MEDIAL R
+1553;AL # CANADIAN SYLLABICS FE
+1554;AL # CANADIAN SYLLABICS FAAI
+1555;AL # CANADIAN SYLLABICS FI
+1556;AL # CANADIAN SYLLABICS FII
+1557;AL # CANADIAN SYLLABICS FO
+1558;AL # CANADIAN SYLLABICS FOO
+1559;AL # CANADIAN SYLLABICS FA
+155A;AL # CANADIAN SYLLABICS FAA
+155B;AL # CANADIAN SYLLABICS FWAA
+155C;AL # CANADIAN SYLLABICS WEST-CREE FWAA
+155D;AL # CANADIAN SYLLABICS F
+155E;AL # CANADIAN SYLLABICS THE
+155F;AL # CANADIAN SYLLABICS N-CREE THE
+1560;AL # CANADIAN SYLLABICS THI
+1561;AL # CANADIAN SYLLABICS N-CREE THI
+1562;AL # CANADIAN SYLLABICS THII
+1563;AL # CANADIAN SYLLABICS N-CREE THII
+1564;AL # CANADIAN SYLLABICS THO
+1565;AL # CANADIAN SYLLABICS THOO
+1566;AL # CANADIAN SYLLABICS THA
+1567;AL # CANADIAN SYLLABICS THAA
+1568;AL # CANADIAN SYLLABICS THWAA
+1569;AL # CANADIAN SYLLABICS WEST-CREE THWAA
+156A;AL # CANADIAN SYLLABICS TH
+156B;AL # CANADIAN SYLLABICS TTHE
+156C;AL # CANADIAN SYLLABICS TTHI
+156D;AL # CANADIAN SYLLABICS TTHO
+156E;AL # CANADIAN SYLLABICS TTHA
+156F;AL # CANADIAN SYLLABICS TTH
+1570;AL # CANADIAN SYLLABICS TYE
+1571;AL # CANADIAN SYLLABICS TYI
+1572;AL # CANADIAN SYLLABICS TYO
+1573;AL # CANADIAN SYLLABICS TYA
+1574;AL # CANADIAN SYLLABICS NUNAVIK HE
+1575;AL # CANADIAN SYLLABICS NUNAVIK HI
+1576;AL # CANADIAN SYLLABICS NUNAVIK HII
+1577;AL # CANADIAN SYLLABICS NUNAVIK HO
+1578;AL # CANADIAN SYLLABICS NUNAVIK HOO
+1579;AL # CANADIAN SYLLABICS NUNAVIK HA
+157A;AL # CANADIAN SYLLABICS NUNAVIK HAA
+157B;AL # CANADIAN SYLLABICS NUNAVIK H
+157C;AL # CANADIAN SYLLABICS NUNAVUT H
+157D;AL # CANADIAN SYLLABICS HK
+157E;AL # CANADIAN SYLLABICS QAAI
+157F;AL # CANADIAN SYLLABICS QI
+1580;AL # CANADIAN SYLLABICS QII
+1581;AL # CANADIAN SYLLABICS QO
+1582;AL # CANADIAN SYLLABICS QOO
+1583;AL # CANADIAN SYLLABICS QA
+1584;AL # CANADIAN SYLLABICS QAA
+1585;AL # CANADIAN SYLLABICS Q
+1586;AL # CANADIAN SYLLABICS TLHE
+1587;AL # CANADIAN SYLLABICS TLHI
+1588;AL # CANADIAN SYLLABICS TLHO
+1589;AL # CANADIAN SYLLABICS TLHA
+158A;AL # CANADIAN SYLLABICS WEST-CREE RE
+158B;AL # CANADIAN SYLLABICS WEST-CREE RI
+158C;AL # CANADIAN SYLLABICS WEST-CREE RO
+158D;AL # CANADIAN SYLLABICS WEST-CREE RA
+158E;AL # CANADIAN SYLLABICS NGAAI
+158F;AL # CANADIAN SYLLABICS NGI
+1590;AL # CANADIAN SYLLABICS NGII
+1591;AL # CANADIAN SYLLABICS NGO
+1592;AL # CANADIAN SYLLABICS NGOO
+1593;AL # CANADIAN SYLLABICS NGA
+1594;AL # CANADIAN SYLLABICS NGAA
+1595;AL # CANADIAN SYLLABICS NG
+1596;AL # CANADIAN SYLLABICS NNG
+1597;AL # CANADIAN SYLLABICS SAYISI SHE
+1598;AL # CANADIAN SYLLABICS SAYISI SHI
+1599;AL # CANADIAN SYLLABICS SAYISI SHO
+159A;AL # CANADIAN SYLLABICS SAYISI SHA
+159B;AL # CANADIAN SYLLABICS WOODS-CREE THE
+159C;AL # CANADIAN SYLLABICS WOODS-CREE THI
+159D;AL # CANADIAN SYLLABICS WOODS-CREE THO
+159E;AL # CANADIAN SYLLABICS WOODS-CREE THA
+159F;AL # CANADIAN SYLLABICS WOODS-CREE TH
+15A0;AL # CANADIAN SYLLABICS LHI
+15A1;AL # CANADIAN SYLLABICS LHII
+15A2;AL # CANADIAN SYLLABICS LHO
+15A3;AL # CANADIAN SYLLABICS LHOO
+15A4;AL # CANADIAN SYLLABICS LHA
+15A5;AL # CANADIAN SYLLABICS LHAA
+15A6;AL # CANADIAN SYLLABICS LH
+15A7;AL # CANADIAN SYLLABICS TH-CREE THE
+15A8;AL # CANADIAN SYLLABICS TH-CREE THI
+15A9;AL # CANADIAN SYLLABICS TH-CREE THII
+15AA;AL # CANADIAN SYLLABICS TH-CREE THO
+15AB;AL # CANADIAN SYLLABICS TH-CREE THOO
+15AC;AL # CANADIAN SYLLABICS TH-CREE THA
+15AD;AL # CANADIAN SYLLABICS TH-CREE THAA
+15AE;AL # CANADIAN SYLLABICS TH-CREE TH
+15AF;AL # CANADIAN SYLLABICS AIVILIK B
+15B0;AL # CANADIAN SYLLABICS BLACKFOOT E
+15B1;AL # CANADIAN SYLLABICS BLACKFOOT I
+15B2;AL # CANADIAN SYLLABICS BLACKFOOT O
+15B3;AL # CANADIAN SYLLABICS BLACKFOOT A
+15B4;AL # CANADIAN SYLLABICS BLACKFOOT WE
+15B5;AL # CANADIAN SYLLABICS BLACKFOOT WI
+15B6;AL # CANADIAN SYLLABICS BLACKFOOT WO
+15B7;AL # CANADIAN SYLLABICS BLACKFOOT WA
+15B8;AL # CANADIAN SYLLABICS BLACKFOOT NE
+15B9;AL # CANADIAN SYLLABICS BLACKFOOT NI
+15BA;AL # CANADIAN SYLLABICS BLACKFOOT NO
+15BB;AL # CANADIAN SYLLABICS BLACKFOOT NA
+15BC;AL # CANADIAN SYLLABICS BLACKFOOT KE
+15BD;AL # CANADIAN SYLLABICS BLACKFOOT KI
+15BE;AL # CANADIAN SYLLABICS BLACKFOOT KO
+15BF;AL # CANADIAN SYLLABICS BLACKFOOT KA
+15C0;AL # CANADIAN SYLLABICS SAYISI HE
+15C1;AL # CANADIAN SYLLABICS SAYISI HI
+15C2;AL # CANADIAN SYLLABICS SAYISI HO
+15C3;AL # CANADIAN SYLLABICS SAYISI HA
+15C4;AL # CANADIAN SYLLABICS CARRIER GHU
+15C5;AL # CANADIAN SYLLABICS CARRIER GHO
+15C6;AL # CANADIAN SYLLABICS CARRIER GHE
+15C7;AL # CANADIAN SYLLABICS CARRIER GHEE
+15C8;AL # CANADIAN SYLLABICS CARRIER GHI
+15C9;AL # CANADIAN SYLLABICS CARRIER GHA
+15CA;AL # CANADIAN SYLLABICS CARRIER RU
+15CB;AL # CANADIAN SYLLABICS CARRIER RO
+15CC;AL # CANADIAN SYLLABICS CARRIER RE
+15CD;AL # CANADIAN SYLLABICS CARRIER REE
+15CE;AL # CANADIAN SYLLABICS CARRIER RI
+15CF;AL # CANADIAN SYLLABICS CARRIER RA
+15D0;AL # CANADIAN SYLLABICS CARRIER WU
+15D1;AL # CANADIAN SYLLABICS CARRIER WO
+15D2;AL # CANADIAN SYLLABICS CARRIER WE
+15D3;AL # CANADIAN SYLLABICS CARRIER WEE
+15D4;AL # CANADIAN SYLLABICS CARRIER WI
+15D5;AL # CANADIAN SYLLABICS CARRIER WA
+15D6;AL # CANADIAN SYLLABICS CARRIER HWU
+15D7;AL # CANADIAN SYLLABICS CARRIER HWO
+15D8;AL # CANADIAN SYLLABICS CARRIER HWE
+15D9;AL # CANADIAN SYLLABICS CARRIER HWEE
+15DA;AL # CANADIAN SYLLABICS CARRIER HWI
+15DB;AL # CANADIAN SYLLABICS CARRIER HWA
+15DC;AL # CANADIAN SYLLABICS CARRIER THU
+15DD;AL # CANADIAN SYLLABICS CARRIER THO
+15DE;AL # CANADIAN SYLLABICS CARRIER THE
+15DF;AL # CANADIAN SYLLABICS CARRIER THEE
+15E0;AL # CANADIAN SYLLABICS CARRIER THI
+15E1;AL # CANADIAN SYLLABICS CARRIER THA
+15E2;AL # CANADIAN SYLLABICS CARRIER TTU
+15E3;AL # CANADIAN SYLLABICS CARRIER TTO
+15E4;AL # CANADIAN SYLLABICS CARRIER TTE
+15E5;AL # CANADIAN SYLLABICS CARRIER TTEE
+15E6;AL # CANADIAN SYLLABICS CARRIER TTI
+15E7;AL # CANADIAN SYLLABICS CARRIER TTA
+15E8;AL # CANADIAN SYLLABICS CARRIER PU
+15E9;AL # CANADIAN SYLLABICS CARRIER PO
+15EA;AL # CANADIAN SYLLABICS CARRIER PE
+15EB;AL # CANADIAN SYLLABICS CARRIER PEE
+15EC;AL # CANADIAN SYLLABICS CARRIER PI
+15ED;AL # CANADIAN SYLLABICS CARRIER PA
+15EE;AL # CANADIAN SYLLABICS CARRIER P
+15EF;AL # CANADIAN SYLLABICS CARRIER GU
+15F0;AL # CANADIAN SYLLABICS CARRIER GO
+15F1;AL # CANADIAN SYLLABICS CARRIER GE
+15F2;AL # CANADIAN SYLLABICS CARRIER GEE
+15F3;AL # CANADIAN SYLLABICS CARRIER GI
+15F4;AL # CANADIAN SYLLABICS CARRIER GA
+15F5;AL # CANADIAN SYLLABICS CARRIER KHU
+15F6;AL # CANADIAN SYLLABICS CARRIER KHO
+15F7;AL # CANADIAN SYLLABICS CARRIER KHE
+15F8;AL # CANADIAN SYLLABICS CARRIER KHEE
+15F9;AL # CANADIAN SYLLABICS CARRIER KHI
+15FA;AL # CANADIAN SYLLABICS CARRIER KHA
+15FB;AL # CANADIAN SYLLABICS CARRIER KKU
+15FC;AL # CANADIAN SYLLABICS CARRIER KKO
+15FD;AL # CANADIAN SYLLABICS CARRIER KKE
+15FE;AL # CANADIAN SYLLABICS CARRIER KKEE
+15FF;AL # CANADIAN SYLLABICS CARRIER KKI
+1600;AL # CANADIAN SYLLABICS CARRIER KKA
+1601;AL # CANADIAN SYLLABICS CARRIER KK
+1602;AL # CANADIAN SYLLABICS CARRIER NU
+1603;AL # CANADIAN SYLLABICS CARRIER NO
+1604;AL # CANADIAN SYLLABICS CARRIER NE
+1605;AL # CANADIAN SYLLABICS CARRIER NEE
+1606;AL # CANADIAN SYLLABICS CARRIER NI
+1607;AL # CANADIAN SYLLABICS CARRIER NA
+1608;AL # CANADIAN SYLLABICS CARRIER MU
+1609;AL # CANADIAN SYLLABICS CARRIER MO
+160A;AL # CANADIAN SYLLABICS CARRIER ME
+160B;AL # CANADIAN SYLLABICS CARRIER MEE
+160C;AL # CANADIAN SYLLABICS CARRIER MI
+160D;AL # CANADIAN SYLLABICS CARRIER MA
+160E;AL # CANADIAN SYLLABICS CARRIER YU
+160F;AL # CANADIAN SYLLABICS CARRIER YO
+1610;AL # CANADIAN SYLLABICS CARRIER YE
+1611;AL # CANADIAN SYLLABICS CARRIER YEE
+1612;AL # CANADIAN SYLLABICS CARRIER YI
+1613;AL # CANADIAN SYLLABICS CARRIER YA
+1614;AL # CANADIAN SYLLABICS CARRIER JU
+1615;AL # CANADIAN SYLLABICS SAYISI JU
+1616;AL # CANADIAN SYLLABICS CARRIER JO
+1617;AL # CANADIAN SYLLABICS CARRIER JE
+1618;AL # CANADIAN SYLLABICS CARRIER JEE
+1619;AL # CANADIAN SYLLABICS CARRIER JI
+161A;AL # CANADIAN SYLLABICS SAYISI JI
+161B;AL # CANADIAN SYLLABICS CARRIER JA
+161C;AL # CANADIAN SYLLABICS CARRIER JJU
+161D;AL # CANADIAN SYLLABICS CARRIER JJO
+161E;AL # CANADIAN SYLLABICS CARRIER JJE
+161F;AL # CANADIAN SYLLABICS CARRIER JJEE
+1620;AL # CANADIAN SYLLABICS CARRIER JJI
+1621;AL # CANADIAN SYLLABICS CARRIER JJA
+1622;AL # CANADIAN SYLLABICS CARRIER LU
+1623;AL # CANADIAN SYLLABICS CARRIER LO
+1624;AL # CANADIAN SYLLABICS CARRIER LE
+1625;AL # CANADIAN SYLLABICS CARRIER LEE
+1626;AL # CANADIAN SYLLABICS CARRIER LI
+1627;AL # CANADIAN SYLLABICS CARRIER LA
+1628;AL # CANADIAN SYLLABICS CARRIER DLU
+1629;AL # CANADIAN SYLLABICS CARRIER DLO
+162A;AL # CANADIAN SYLLABICS CARRIER DLE
+162B;AL # CANADIAN SYLLABICS CARRIER DLEE
+162C;AL # CANADIAN SYLLABICS CARRIER DLI
+162D;AL # CANADIAN SYLLABICS CARRIER DLA
+162E;AL # CANADIAN SYLLABICS CARRIER LHU
+162F;AL # CANADIAN SYLLABICS CARRIER LHO
+1630;AL # CANADIAN SYLLABICS CARRIER LHE
+1631;AL # CANADIAN SYLLABICS CARRIER LHEE
+1632;AL # CANADIAN SYLLABICS CARRIER LHI
+1633;AL # CANADIAN SYLLABICS CARRIER LHA
+1634;AL # CANADIAN SYLLABICS CARRIER TLHU
+1635;AL # CANADIAN SYLLABICS CARRIER TLHO
+1636;AL # CANADIAN SYLLABICS CARRIER TLHE
+1637;AL # CANADIAN SYLLABICS CARRIER TLHEE
+1638;AL # CANADIAN SYLLABICS CARRIER TLHI
+1639;AL # CANADIAN SYLLABICS CARRIER TLHA
+163A;AL # CANADIAN SYLLABICS CARRIER TLU
+163B;AL # CANADIAN SYLLABICS CARRIER TLO
+163C;AL # CANADIAN SYLLABICS CARRIER TLE
+163D;AL # CANADIAN SYLLABICS CARRIER TLEE
+163E;AL # CANADIAN SYLLABICS CARRIER TLI
+163F;AL # CANADIAN SYLLABICS CARRIER TLA
+1640;AL # CANADIAN SYLLABICS CARRIER ZU
+1641;AL # CANADIAN SYLLABICS CARRIER ZO
+1642;AL # CANADIAN SYLLABICS CARRIER ZE
+1643;AL # CANADIAN SYLLABICS CARRIER ZEE
+1644;AL # CANADIAN SYLLABICS CARRIER ZI
+1645;AL # CANADIAN SYLLABICS CARRIER ZA
+1646;AL # CANADIAN SYLLABICS CARRIER Z
+1647;AL # CANADIAN SYLLABICS CARRIER INITIAL Z
+1648;AL # CANADIAN SYLLABICS CARRIER DZU
+1649;AL # CANADIAN SYLLABICS CARRIER DZO
+164A;AL # CANADIAN SYLLABICS CARRIER DZE
+164B;AL # CANADIAN SYLLABICS CARRIER DZEE
+164C;AL # CANADIAN SYLLABICS CARRIER DZI
+164D;AL # CANADIAN SYLLABICS CARRIER DZA
+164E;AL # CANADIAN SYLLABICS CARRIER SU
+164F;AL # CANADIAN SYLLABICS CARRIER SO
+1650;AL # CANADIAN SYLLABICS CARRIER SE
+1651;AL # CANADIAN SYLLABICS CARRIER SEE
+1652;AL # CANADIAN SYLLABICS CARRIER SI
+1653;AL # CANADIAN SYLLABICS CARRIER SA
+1654;AL # CANADIAN SYLLABICS CARRIER SHU
+1655;AL # CANADIAN SYLLABICS CARRIER SHO
+1656;AL # CANADIAN SYLLABICS CARRIER SHE
+1657;AL # CANADIAN SYLLABICS CARRIER SHEE
+1658;AL # CANADIAN SYLLABICS CARRIER SHI
+1659;AL # CANADIAN SYLLABICS CARRIER SHA
+165A;AL # CANADIAN SYLLABICS CARRIER SH
+165B;AL # CANADIAN SYLLABICS CARRIER TSU
+165C;AL # CANADIAN SYLLABICS CARRIER TSO
+165D;AL # CANADIAN SYLLABICS CARRIER TSE
+165E;AL # CANADIAN SYLLABICS CARRIER TSEE
+165F;AL # CANADIAN SYLLABICS CARRIER TSI
+1660;AL # CANADIAN SYLLABICS CARRIER TSA
+1661;AL # CANADIAN SYLLABICS CARRIER CHU
+1662;AL # CANADIAN SYLLABICS CARRIER CHO
+1663;AL # CANADIAN SYLLABICS CARRIER CHE
+1664;AL # CANADIAN SYLLABICS CARRIER CHEE
+1665;AL # CANADIAN SYLLABICS CARRIER CHI
+1666;AL # CANADIAN SYLLABICS CARRIER CHA
+1667;AL # CANADIAN SYLLABICS CARRIER TTSU
+1668;AL # CANADIAN SYLLABICS CARRIER TTSO
+1669;AL # CANADIAN SYLLABICS CARRIER TTSE
+166A;AL # CANADIAN SYLLABICS CARRIER TTSEE
+166B;AL # CANADIAN SYLLABICS CARRIER TTSI
+166C;AL # CANADIAN SYLLABICS CARRIER TTSA
+166D;AL # CANADIAN SYLLABICS CHI SIGN
+166E;AL # CANADIAN SYLLABICS FULL STOP
+166F;AL # CANADIAN SYLLABICS QAI
+1670;AL # CANADIAN SYLLABICS NGAI
+1671;AL # CANADIAN SYLLABICS NNGI
+1672;AL # CANADIAN SYLLABICS NNGII
+1673;AL # CANADIAN SYLLABICS NNGO
+1674;AL # CANADIAN SYLLABICS NNGOO
+1675;AL # CANADIAN SYLLABICS NNGA
+1676;AL # CANADIAN SYLLABICS NNGAA
+1680;BA # OGHAM SPACE MARK
+1681;AL # OGHAM LETTER BEITH
+1682;AL # OGHAM LETTER LUIS
+1683;AL # OGHAM LETTER FEARN
+1684;AL # OGHAM LETTER SAIL
+1685;AL # OGHAM LETTER NION
+1686;AL # OGHAM LETTER UATH
+1687;AL # OGHAM LETTER DAIR
+1688;AL # OGHAM LETTER TINNE
+1689;AL # OGHAM LETTER COLL
+168A;AL # OGHAM LETTER CEIRT
+168B;AL # OGHAM LETTER MUIN
+168C;AL # OGHAM LETTER GORT
+168D;AL # OGHAM LETTER NGEADAL
+168E;AL # OGHAM LETTER STRAIF
+168F;AL # OGHAM LETTER RUIS
+1690;AL # OGHAM LETTER AILM
+1691;AL # OGHAM LETTER ONN
+1692;AL # OGHAM LETTER UR
+1693;AL # OGHAM LETTER EADHADH
+1694;AL # OGHAM LETTER IODHADH
+1695;AL # OGHAM LETTER EABHADH
+1696;AL # OGHAM LETTER OR
+1697;AL # OGHAM LETTER UILLEANN
+1698;AL # OGHAM LETTER IFIN
+1699;AL # OGHAM LETTER EAMHANCHOLL
+169A;AL # OGHAM LETTER PEITH
+169B;OP # OGHAM FEATHER MARK
+169C;CL # OGHAM REVERSED FEATHER MARK
+16A0;AL # RUNIC LETTER FEHU FEOH FE F
+16A1;AL # RUNIC LETTER V
+16A2;AL # RUNIC LETTER URUZ UR U
+16A3;AL # RUNIC LETTER YR
+16A4;AL # RUNIC LETTER Y
+16A5;AL # RUNIC LETTER W
+16A6;AL # RUNIC LETTER THURISAZ THURS THORN
+16A7;AL # RUNIC LETTER ETH
+16A8;AL # RUNIC LETTER ANSUZ A
+16A9;AL # RUNIC LETTER OS O
+16AA;AL # RUNIC LETTER AC A
+16AB;AL # RUNIC LETTER AESC
+16AC;AL # RUNIC LETTER LONG-BRANCH-OSS O
+16AD;AL # RUNIC LETTER SHORT-TWIG-OSS O
+16AE;AL # RUNIC LETTER O
+16AF;AL # RUNIC LETTER OE
+16B0;AL # RUNIC LETTER ON
+16B1;AL # RUNIC LETTER RAIDO RAD REID R
+16B2;AL # RUNIC LETTER KAUNA
+16B3;AL # RUNIC LETTER CEN
+16B4;AL # RUNIC LETTER KAUN K
+16B5;AL # RUNIC LETTER G
+16B6;AL # RUNIC LETTER ENG
+16B7;AL # RUNIC LETTER GEBO GYFU G
+16B8;AL # RUNIC LETTER GAR
+16B9;AL # RUNIC LETTER WUNJO WYNN W
+16BA;AL # RUNIC LETTER HAGLAZ H
+16BB;AL # RUNIC LETTER HAEGL H
+16BC;AL # RUNIC LETTER LONG-BRANCH-HAGALL H
+16BD;AL # RUNIC LETTER SHORT-TWIG-HAGALL H
+16BE;AL # RUNIC LETTER NAUDIZ NYD NAUD N
+16BF;AL # RUNIC LETTER SHORT-TWIG-NAUD N
+16C0;AL # RUNIC LETTER DOTTED-N
+16C1;AL # RUNIC LETTER ISAZ IS ISS I
+16C2;AL # RUNIC LETTER E
+16C3;AL # RUNIC LETTER JERAN J
+16C4;AL # RUNIC LETTER GER
+16C5;AL # RUNIC LETTER LONG-BRANCH-AR AE
+16C6;AL # RUNIC LETTER SHORT-TWIG-AR A
+16C7;AL # RUNIC LETTER IWAZ EOH
+16C8;AL # RUNIC LETTER PERTHO PEORTH P
+16C9;AL # RUNIC LETTER ALGIZ EOLHX
+16CA;AL # RUNIC LETTER SOWILO S
+16CB;AL # RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16CC;AL # RUNIC LETTER SHORT-TWIG-SOL S
+16CD;AL # RUNIC LETTER C
+16CE;AL # RUNIC LETTER Z
+16CF;AL # RUNIC LETTER TIWAZ TIR TYR T
+16D0;AL # RUNIC LETTER SHORT-TWIG-TYR T
+16D1;AL # RUNIC LETTER D
+16D2;AL # RUNIC LETTER BERKANAN BEORC BJARKAN B
+16D3;AL # RUNIC LETTER SHORT-TWIG-BJARKAN B
+16D4;AL # RUNIC LETTER DOTTED-P
+16D5;AL # RUNIC LETTER OPEN-P
+16D6;AL # RUNIC LETTER EHWAZ EH E
+16D7;AL # RUNIC LETTER MANNAZ MAN M
+16D8;AL # RUNIC LETTER LONG-BRANCH-MADR M
+16D9;AL # RUNIC LETTER SHORT-TWIG-MADR M
+16DA;AL # RUNIC LETTER LAUKAZ LAGU LOGR L
+16DB;AL # RUNIC LETTER DOTTED-L
+16DC;AL # RUNIC LETTER INGWAZ
+16DD;AL # RUNIC LETTER ING
+16DE;AL # RUNIC LETTER DAGAZ DAEG D
+16DF;AL # RUNIC LETTER OTHALAN ETHEL O
+16E0;AL # RUNIC LETTER EAR
+16E1;AL # RUNIC LETTER IOR
+16E2;AL # RUNIC LETTER CWEORTH
+16E3;AL # RUNIC LETTER CALC
+16E4;AL # RUNIC LETTER CEALC
+16E5;AL # RUNIC LETTER STAN
+16E6;AL # RUNIC LETTER LONG-BRANCH-YR
+16E7;AL # RUNIC LETTER SHORT-TWIG-YR
+16E8;AL # RUNIC LETTER ICELANDIC-YR
+16E9;AL # RUNIC LETTER Q
+16EA;AL # RUNIC LETTER X
+16EB;BA # RUNIC SINGLE PUNCTUATION
+16EC;BA # RUNIC MULTIPLE PUNCTUATION
+16ED;BA # RUNIC CROSS PUNCTUATION
+16EE;AL # RUNIC ARLAUG SYMBOL
+16EF;AL # RUNIC TVIMADUR SYMBOL
+16F0;AL # RUNIC BELGTHOR SYMBOL
+1700;AL # TAGALOG LETTER A
+1701;AL # TAGALOG LETTER I
+1702;AL # TAGALOG LETTER U
+1703;AL # TAGALOG LETTER KA
+1704;AL # TAGALOG LETTER GA
+1705;AL # TAGALOG LETTER NGA
+1706;AL # TAGALOG LETTER TA
+1707;AL # TAGALOG LETTER DA
+1708;AL # TAGALOG LETTER NA
+1709;AL # TAGALOG LETTER PA
+170A;AL # TAGALOG LETTER BA
+170B;AL # TAGALOG LETTER MA
+170C;AL # TAGALOG LETTER YA
+170E;AL # TAGALOG LETTER LA
+170F;AL # TAGALOG LETTER WA
+1710;AL # TAGALOG LETTER SA
+1711;AL # TAGALOG LETTER HA
+1712;CM # TAGALOG VOWEL SIGN I
+1713;CM # TAGALOG VOWEL SIGN U
+1714;CM # TAGALOG SIGN VIRAMA
+1720;AL # HANUNOO LETTER A
+1721;AL # HANUNOO LETTER I
+1722;AL # HANUNOO LETTER U
+1723;AL # HANUNOO LETTER KA
+1724;AL # HANUNOO LETTER GA
+1725;AL # HANUNOO LETTER NGA
+1726;AL # HANUNOO LETTER TA
+1727;AL # HANUNOO LETTER DA
+1728;AL # HANUNOO LETTER NA
+1729;AL # HANUNOO LETTER PA
+172A;AL # HANUNOO LETTER BA
+172B;AL # HANUNOO LETTER MA
+172C;AL # HANUNOO LETTER YA
+172D;AL # HANUNOO LETTER RA
+172E;AL # HANUNOO LETTER LA
+172F;AL # HANUNOO LETTER WA
+1730;AL # HANUNOO LETTER SA
+1731;AL # HANUNOO LETTER HA
+1732;CM # HANUNOO VOWEL SIGN I
+1733;CM # HANUNOO VOWEL SIGN U
+1734;CM # HANUNOO SIGN PAMUDPOD
+1735;BA # PHILIPPINE SINGLE PUNCTUATION
+1736;BA # PHILIPPINE DOUBLE PUNCTUATION
+1740;AL # BUHID LETTER A
+1741;AL # BUHID LETTER I
+1742;AL # BUHID LETTER U
+1743;AL # BUHID LETTER KA
+1744;AL # BUHID LETTER GA
+1745;AL # BUHID LETTER NGA
+1746;AL # BUHID LETTER TA
+1747;AL # BUHID LETTER DA
+1748;AL # BUHID LETTER NA
+1749;AL # BUHID LETTER PA
+174A;AL # BUHID LETTER BA
+174B;AL # BUHID LETTER MA
+174C;AL # BUHID LETTER YA
+174D;AL # BUHID LETTER RA
+174E;AL # BUHID LETTER LA
+174F;AL # BUHID LETTER WA
+1750;AL # BUHID LETTER SA
+1751;AL # BUHID LETTER HA
+1752;CM # BUHID VOWEL SIGN I
+1753;CM # BUHID VOWEL SIGN U
+1760;AL # TAGBANWA LETTER A
+1761;AL # TAGBANWA LETTER I
+1762;AL # TAGBANWA LETTER U
+1763;AL # TAGBANWA LETTER KA
+1764;AL # TAGBANWA LETTER GA
+1765;AL # TAGBANWA LETTER NGA
+1766;AL # TAGBANWA LETTER TA
+1767;AL # TAGBANWA LETTER DA
+1768;AL # TAGBANWA LETTER NA
+1769;AL # TAGBANWA LETTER PA
+176A;AL # TAGBANWA LETTER BA
+176B;AL # TAGBANWA LETTER MA
+176C;AL # TAGBANWA LETTER YA
+176E;AL # TAGBANWA LETTER LA
+176F;AL # TAGBANWA LETTER WA
+1770;AL # TAGBANWA LETTER SA
+1772;CM # TAGBANWA VOWEL SIGN I
+1773;CM # TAGBANWA VOWEL SIGN U
+1780;SA # KHMER LETTER KA
+1781;SA # KHMER LETTER KHA
+1782;SA # KHMER LETTER KO
+1783;SA # KHMER LETTER KHO
+1784;SA # KHMER LETTER NGO
+1785;SA # KHMER LETTER CA
+1786;SA # KHMER LETTER CHA
+1787;SA # KHMER LETTER CO
+1788;SA # KHMER LETTER CHO
+1789;SA # KHMER LETTER NYO
+178A;SA # KHMER LETTER DA
+178B;SA # KHMER LETTER TTHA
+178C;SA # KHMER LETTER DO
+178D;SA # KHMER LETTER TTHO
+178E;SA # KHMER LETTER NNO
+178F;SA # KHMER LETTER TA
+1790;SA # KHMER LETTER THA
+1791;SA # KHMER LETTER TO
+1792;SA # KHMER LETTER THO
+1793;SA # KHMER LETTER NO
+1794;SA # KHMER LETTER BA
+1795;SA # KHMER LETTER PHA
+1796;SA # KHMER LETTER PO
+1797;SA # KHMER LETTER PHO
+1798;SA # KHMER LETTER MO
+1799;SA # KHMER LETTER YO
+179A;SA # KHMER LETTER RO
+179B;SA # KHMER LETTER LO
+179C;SA # KHMER LETTER VO
+179D;SA # KHMER LETTER SHA
+179E;SA # KHMER LETTER SSO
+179F;SA # KHMER LETTER SA
+17A0;SA # KHMER LETTER HA
+17A1;SA # KHMER LETTER LA
+17A2;SA # KHMER LETTER QA
+17A3;SA # KHMER INDEPENDENT VOWEL QAQ
+17A4;SA # KHMER INDEPENDENT VOWEL QAA
+17A5;SA # KHMER INDEPENDENT VOWEL QI
+17A6;SA # KHMER INDEPENDENT VOWEL QII
+17A7;SA # KHMER INDEPENDENT VOWEL QU
+17A8;SA # KHMER INDEPENDENT VOWEL QUK
+17A9;SA # KHMER INDEPENDENT VOWEL QUU
+17AA;SA # KHMER INDEPENDENT VOWEL QUUV
+17AB;SA # KHMER INDEPENDENT VOWEL RY
+17AC;SA # KHMER INDEPENDENT VOWEL RYY
+17AD;SA # KHMER INDEPENDENT VOWEL LY
+17AE;SA # KHMER INDEPENDENT VOWEL LYY
+17AF;SA # KHMER INDEPENDENT VOWEL QE
+17B0;SA # KHMER INDEPENDENT VOWEL QAI
+17B1;SA # KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17B2;SA # KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17B3;SA # KHMER INDEPENDENT VOWEL QAU
+17B4;SA # KHMER VOWEL INHERENT AQ
+17B5;SA # KHMER VOWEL INHERENT AA
+17B6;SA # KHMER VOWEL SIGN AA
+17B7;SA # KHMER VOWEL SIGN I
+17B8;SA # KHMER VOWEL SIGN II
+17B9;SA # KHMER VOWEL SIGN Y
+17BA;SA # KHMER VOWEL SIGN YY
+17BB;SA # KHMER VOWEL SIGN U
+17BC;SA # KHMER VOWEL SIGN UU
+17BD;SA # KHMER VOWEL SIGN UA
+17BE;SA # KHMER VOWEL SIGN OE
+17BF;SA # KHMER VOWEL SIGN YA
+17C0;SA # KHMER VOWEL SIGN IE
+17C1;SA # KHMER VOWEL SIGN E
+17C2;SA # KHMER VOWEL SIGN AE
+17C3;SA # KHMER VOWEL SIGN AI
+17C4;SA # KHMER VOWEL SIGN OO
+17C5;SA # KHMER VOWEL SIGN AU
+17C6;SA # KHMER SIGN NIKAHIT
+17C7;SA # KHMER SIGN REAHMUK
+17C8;SA # KHMER SIGN YUUKALEAPINTU
+17C9;SA # KHMER SIGN MUUSIKATOAN
+17CA;SA # KHMER SIGN TRIISAP
+17CB;SA # KHMER SIGN BANTOC
+17CC;SA # KHMER SIGN ROBAT
+17CD;SA # KHMER SIGN TOANDAKHIAT
+17CE;SA # KHMER SIGN KAKABAT
+17CF;SA # KHMER SIGN AHSDA
+17D0;SA # KHMER SIGN SAMYOK SANNYA
+17D1;SA # KHMER SIGN VIRIAM
+17D2;SA # KHMER SIGN COENG
+17D3;SA # KHMER SIGN BATHAMASAT
+17D4;BA # KHMER SIGN KHAN
+17D5;BA # KHMER SIGN BARIYOOSAN
+17D6;NS # KHMER SIGN CAMNUC PII KUUH
+17D7;SA # KHMER SIGN LEK TOO
+17D8;BA # KHMER SIGN BEYYAL
+17D9;AL # KHMER SIGN PHNAEK MUAN
+17DA;BA # KHMER SIGN KOOMUUT
+17DB;PR # KHMER CURRENCY SYMBOL RIEL
+17DC;SA # KHMER SIGN AVAKRAHASANYA
+17DD;SA # KHMER SIGN ATTHACAN
+17E0;NU # KHMER DIGIT ZERO
+17E1;NU # KHMER DIGIT ONE
+17E2;NU # KHMER DIGIT TWO
+17E3;NU # KHMER DIGIT THREE
+17E4;NU # KHMER DIGIT FOUR
+17E5;NU # KHMER DIGIT FIVE
+17E6;NU # KHMER DIGIT SIX
+17E7;NU # KHMER DIGIT SEVEN
+17E8;NU # KHMER DIGIT EIGHT
+17E9;NU # KHMER DIGIT NINE
+17F0;AL # KHMER SYMBOL LEK ATTAK SON
+17F1;AL # KHMER SYMBOL LEK ATTAK MUOY
+17F2;AL # KHMER SYMBOL LEK ATTAK PII
+17F3;AL # KHMER SYMBOL LEK ATTAK BEI
+17F4;AL # KHMER SYMBOL LEK ATTAK BUON
+17F5;AL # KHMER SYMBOL LEK ATTAK PRAM
+17F6;AL # KHMER SYMBOL LEK ATTAK PRAM-MUOY
+17F7;AL # KHMER SYMBOL LEK ATTAK PRAM-PII
+17F8;AL # KHMER SYMBOL LEK ATTAK PRAM-BEI
+17F9;AL # KHMER SYMBOL LEK ATTAK PRAM-BUON
+1800;AL # MONGOLIAN BIRGA
+1801;AL # MONGOLIAN ELLIPSIS
+1802;BA # MONGOLIAN COMMA
+1803;BA # MONGOLIAN FULL STOP
+1804;BA # MONGOLIAN COLON
+1805;BA # MONGOLIAN FOUR DOTS
+1806;BB # MONGOLIAN TODO SOFT HYPHEN
+1807;AL # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+1808;BA # MONGOLIAN MANCHU COMMA
+1809;BA # MONGOLIAN MANCHU FULL STOP
+180A;AL # MONGOLIAN NIRUGU
+180B;CM # MONGOLIAN FREE VARIATION SELECTOR ONE
+180C;CM # MONGOLIAN FREE VARIATION SELECTOR TWO
+180D;CM # MONGOLIAN FREE VARIATION SELECTOR THREE
+180E;GL # MONGOLIAN VOWEL SEPARATOR
+1810;NU # MONGOLIAN DIGIT ZERO
+1811;NU # MONGOLIAN DIGIT ONE
+1812;NU # MONGOLIAN DIGIT TWO
+1813;NU # MONGOLIAN DIGIT THREE
+1814;NU # MONGOLIAN DIGIT FOUR
+1815;NU # MONGOLIAN DIGIT FIVE
+1816;NU # MONGOLIAN DIGIT SIX
+1817;NU # MONGOLIAN DIGIT SEVEN
+1818;NU # MONGOLIAN DIGIT EIGHT
+1819;NU # MONGOLIAN DIGIT NINE
+1820;AL # MONGOLIAN LETTER A
+1821;AL # MONGOLIAN LETTER E
+1822;AL # MONGOLIAN LETTER I
+1823;AL # MONGOLIAN LETTER O
+1824;AL # MONGOLIAN LETTER U
+1825;AL # MONGOLIAN LETTER OE
+1826;AL # MONGOLIAN LETTER UE
+1827;AL # MONGOLIAN LETTER EE
+1828;AL # MONGOLIAN LETTER NA
+1829;AL # MONGOLIAN LETTER ANG
+182A;AL # MONGOLIAN LETTER BA
+182B;AL # MONGOLIAN LETTER PA
+182C;AL # MONGOLIAN LETTER QA
+182D;AL # MONGOLIAN LETTER GA
+182E;AL # MONGOLIAN LETTER MA
+182F;AL # MONGOLIAN LETTER LA
+1830;AL # MONGOLIAN LETTER SA
+1831;AL # MONGOLIAN LETTER SHA
+1832;AL # MONGOLIAN LETTER TA
+1833;AL # MONGOLIAN LETTER DA
+1834;AL # MONGOLIAN LETTER CHA
+1835;AL # MONGOLIAN LETTER JA
+1836;AL # MONGOLIAN LETTER YA
+1837;AL # MONGOLIAN LETTER RA
+1838;AL # MONGOLIAN LETTER WA
+1839;AL # MONGOLIAN LETTER FA
+183A;AL # MONGOLIAN LETTER KA
+183B;AL # MONGOLIAN LETTER KHA
+183C;AL # MONGOLIAN LETTER TSA
+183D;AL # MONGOLIAN LETTER ZA
+183E;AL # MONGOLIAN LETTER HAA
+183F;AL # MONGOLIAN LETTER ZRA
+1840;AL # MONGOLIAN LETTER LHA
+1841;AL # MONGOLIAN LETTER ZHI
+1842;AL # MONGOLIAN LETTER CHI
+1843;AL # MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844;AL # MONGOLIAN LETTER TODO E
+1845;AL # MONGOLIAN LETTER TODO I
+1846;AL # MONGOLIAN LETTER TODO O
+1847;AL # MONGOLIAN LETTER TODO U
+1848;AL # MONGOLIAN LETTER TODO OE
+1849;AL # MONGOLIAN LETTER TODO UE
+184A;AL # MONGOLIAN LETTER TODO ANG
+184B;AL # MONGOLIAN LETTER TODO BA
+184C;AL # MONGOLIAN LETTER TODO PA
+184D;AL # MONGOLIAN LETTER TODO QA
+184E;AL # MONGOLIAN LETTER TODO GA
+184F;AL # MONGOLIAN LETTER TODO MA
+1850;AL # MONGOLIAN LETTER TODO TA
+1851;AL # MONGOLIAN LETTER TODO DA
+1852;AL # MONGOLIAN LETTER TODO CHA
+1853;AL # MONGOLIAN LETTER TODO JA
+1854;AL # MONGOLIAN LETTER TODO TSA
+1855;AL # MONGOLIAN LETTER TODO YA
+1856;AL # MONGOLIAN LETTER TODO WA
+1857;AL # MONGOLIAN LETTER TODO KA
+1858;AL # MONGOLIAN LETTER TODO GAA
+1859;AL # MONGOLIAN LETTER TODO HAA
+185A;AL # MONGOLIAN LETTER TODO JIA
+185B;AL # MONGOLIAN LETTER TODO NIA
+185C;AL # MONGOLIAN LETTER TODO DZA
+185D;AL # MONGOLIAN LETTER SIBE E
+185E;AL # MONGOLIAN LETTER SIBE I
+185F;AL # MONGOLIAN LETTER SIBE IY
+1860;AL # MONGOLIAN LETTER SIBE UE
+1861;AL # MONGOLIAN LETTER SIBE U
+1862;AL # MONGOLIAN LETTER SIBE ANG
+1863;AL # MONGOLIAN LETTER SIBE KA
+1864;AL # MONGOLIAN LETTER SIBE GA
+1865;AL # MONGOLIAN LETTER SIBE HA
+1866;AL # MONGOLIAN LETTER SIBE PA
+1867;AL # MONGOLIAN LETTER SIBE SHA
+1868;AL # MONGOLIAN LETTER SIBE TA
+1869;AL # MONGOLIAN LETTER SIBE DA
+186A;AL # MONGOLIAN LETTER SIBE JA
+186B;AL # MONGOLIAN LETTER SIBE FA
+186C;AL # MONGOLIAN LETTER SIBE GAA
+186D;AL # MONGOLIAN LETTER SIBE HAA
+186E;AL # MONGOLIAN LETTER SIBE TSA
+186F;AL # MONGOLIAN LETTER SIBE ZA
+1870;AL # MONGOLIAN LETTER SIBE RAA
+1871;AL # MONGOLIAN LETTER SIBE CHA
+1872;AL # MONGOLIAN LETTER SIBE ZHA
+1873;AL # MONGOLIAN LETTER MANCHU I
+1874;AL # MONGOLIAN LETTER MANCHU KA
+1875;AL # MONGOLIAN LETTER MANCHU RA
+1876;AL # MONGOLIAN LETTER MANCHU FA
+1877;AL # MONGOLIAN LETTER MANCHU ZHA
+1880;AL # MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881;AL # MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882;AL # MONGOLIAN LETTER ALI GALI DAMARU
+1883;AL # MONGOLIAN LETTER ALI GALI UBADAMA
+1884;AL # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885;AL # MONGOLIAN LETTER ALI GALI BALUDA
+1886;AL # MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887;AL # MONGOLIAN LETTER ALI GALI A
+1888;AL # MONGOLIAN LETTER ALI GALI I
+1889;AL # MONGOLIAN LETTER ALI GALI KA
+188A;AL # MONGOLIAN LETTER ALI GALI NGA
+188B;AL # MONGOLIAN LETTER ALI GALI CA
+188C;AL # MONGOLIAN LETTER ALI GALI TTA
+188D;AL # MONGOLIAN LETTER ALI GALI TTHA
+188E;AL # MONGOLIAN LETTER ALI GALI DDA
+188F;AL # MONGOLIAN LETTER ALI GALI NNA
+1890;AL # MONGOLIAN LETTER ALI GALI TA
+1891;AL # MONGOLIAN LETTER ALI GALI DA
+1892;AL # MONGOLIAN LETTER ALI GALI PA
+1893;AL # MONGOLIAN LETTER ALI GALI PHA
+1894;AL # MONGOLIAN LETTER ALI GALI SSA
+1895;AL # MONGOLIAN LETTER ALI GALI ZHA
+1896;AL # MONGOLIAN LETTER ALI GALI ZA
+1897;AL # MONGOLIAN LETTER ALI GALI AH
+1898;AL # MONGOLIAN LETTER TODO ALI GALI TA
+1899;AL # MONGOLIAN LETTER TODO ALI GALI ZHA
+189A;AL # MONGOLIAN LETTER MANCHU ALI GALI GHA
+189B;AL # MONGOLIAN LETTER MANCHU ALI GALI NGA
+189C;AL # MONGOLIAN LETTER MANCHU ALI GALI CA
+189D;AL # MONGOLIAN LETTER MANCHU ALI GALI JHA
+189E;AL # MONGOLIAN LETTER MANCHU ALI GALI TTA
+189F;AL # MONGOLIAN LETTER MANCHU ALI GALI DDHA
+18A0;AL # MONGOLIAN LETTER MANCHU ALI GALI TA
+18A1;AL # MONGOLIAN LETTER MANCHU ALI GALI DHA
+18A2;AL # MONGOLIAN LETTER MANCHU ALI GALI SSA
+18A3;AL # MONGOLIAN LETTER MANCHU ALI GALI CYA
+18A4;AL # MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18A5;AL # MONGOLIAN LETTER MANCHU ALI GALI ZA
+18A6;AL # MONGOLIAN LETTER ALI GALI HALF U
+18A7;AL # MONGOLIAN LETTER ALI GALI HALF YA
+18A8;AL # MONGOLIAN LETTER MANCHU ALI GALI BHA
+18A9;CM # MONGOLIAN LETTER ALI GALI DAGALGA
+1900;AL # LIMBU VOWEL-CARRIER LETTER
+1901;AL # LIMBU LETTER KA
+1902;AL # LIMBU LETTER KHA
+1903;AL # LIMBU LETTER GA
+1904;AL # LIMBU LETTER GHA
+1905;AL # LIMBU LETTER NGA
+1906;AL # LIMBU LETTER CA
+1907;AL # LIMBU LETTER CHA
+1908;AL # LIMBU LETTER JA
+1909;AL # LIMBU LETTER JHA
+190A;AL # LIMBU LETTER YAN
+190B;AL # LIMBU LETTER TA
+190C;AL # LIMBU LETTER THA
+190D;AL # LIMBU LETTER DA
+190E;AL # LIMBU LETTER DHA
+190F;AL # LIMBU LETTER NA
+1910;AL # LIMBU LETTER PA
+1911;AL # LIMBU LETTER PHA
+1912;AL # LIMBU LETTER BA
+1913;AL # LIMBU LETTER BHA
+1914;AL # LIMBU LETTER MA
+1915;AL # LIMBU LETTER YA
+1916;AL # LIMBU LETTER RA
+1917;AL # LIMBU LETTER LA
+1918;AL # LIMBU LETTER WA
+1919;AL # LIMBU LETTER SHA
+191A;AL # LIMBU LETTER SSA
+191B;AL # LIMBU LETTER SA
+191C;AL # LIMBU LETTER HA
+1920;CM # LIMBU VOWEL SIGN A
+1921;CM # LIMBU VOWEL SIGN I
+1922;CM # LIMBU VOWEL SIGN U
+1923;CM # LIMBU VOWEL SIGN EE
+1924;CM # LIMBU VOWEL SIGN AI
+1925;CM # LIMBU VOWEL SIGN OO
+1926;CM # LIMBU VOWEL SIGN AU
+1927;CM # LIMBU VOWEL SIGN E
+1928;CM # LIMBU VOWEL SIGN O
+1929;CM # LIMBU SUBJOINED LETTER YA
+192A;CM # LIMBU SUBJOINED LETTER RA
+192B;CM # LIMBU SUBJOINED LETTER WA
+1930;CM # LIMBU SMALL LETTER KA
+1931;CM # LIMBU SMALL LETTER NGA
+1932;CM # LIMBU SMALL LETTER ANUSVARA
+1933;CM # LIMBU SMALL LETTER TA
+1934;CM # LIMBU SMALL LETTER NA
+1935;CM # LIMBU SMALL LETTER PA
+1936;CM # LIMBU SMALL LETTER MA
+1937;CM # LIMBU SMALL LETTER RA
+1938;CM # LIMBU SMALL LETTER LA
+1939;CM # LIMBU SIGN MUKPHRENG
+193A;CM # LIMBU SIGN KEMPHRENG
+193B;CM # LIMBU SIGN SA-I
+1940;AL # LIMBU SIGN LOO
+1944;EX # LIMBU EXCLAMATION MARK
+1945;EX # LIMBU QUESTION MARK
+1946;NU # LIMBU DIGIT ZERO
+1947;NU # LIMBU DIGIT ONE
+1948;NU # LIMBU DIGIT TWO
+1949;NU # LIMBU DIGIT THREE
+194A;NU # LIMBU DIGIT FOUR
+194B;NU # LIMBU DIGIT FIVE
+194C;NU # LIMBU DIGIT SIX
+194D;NU # LIMBU DIGIT SEVEN
+194E;NU # LIMBU DIGIT EIGHT
+194F;NU # LIMBU DIGIT NINE
+1950;SA # TAI LE LETTER KA
+1951;SA # TAI LE LETTER XA
+1952;SA # TAI LE LETTER NGA
+1953;SA # TAI LE LETTER TSA
+1954;SA # TAI LE LETTER SA
+1955;SA # TAI LE LETTER YA
+1956;SA # TAI LE LETTER TA
+1957;SA # TAI LE LETTER THA
+1958;SA # TAI LE LETTER LA
+1959;SA # TAI LE LETTER PA
+195A;SA # TAI LE LETTER PHA
+195B;SA # TAI LE LETTER MA
+195C;SA # TAI LE LETTER FA
+195D;SA # TAI LE LETTER VA
+195E;SA # TAI LE LETTER HA
+195F;SA # TAI LE LETTER QA
+1960;SA # TAI LE LETTER KHA
+1961;SA # TAI LE LETTER TSHA
+1962;SA # TAI LE LETTER NA
+1963;SA # TAI LE LETTER A
+1964;SA # TAI LE LETTER I
+1965;SA # TAI LE LETTER EE
+1966;SA # TAI LE LETTER EH
+1967;SA # TAI LE LETTER U
+1968;SA # TAI LE LETTER OO
+1969;SA # TAI LE LETTER O
+196A;SA # TAI LE LETTER UE
+196B;SA # TAI LE LETTER E
+196C;SA # TAI LE LETTER AUE
+196D;SA # TAI LE LETTER AI
+1970;SA # TAI LE LETTER TONE-2
+1971;SA # TAI LE LETTER TONE-3
+1972;SA # TAI LE LETTER TONE-4
+1973;SA # TAI LE LETTER TONE-5
+1974;SA # TAI LE LETTER TONE-6
+1980;SA # NEW TAI LUE LETTER HIGH QA
+1981;SA # NEW TAI LUE LETTER LOW QA
+1982;SA # NEW TAI LUE LETTER HIGH KA
+1983;SA # NEW TAI LUE LETTER HIGH XA
+1984;SA # NEW TAI LUE LETTER HIGH NGA
+1985;SA # NEW TAI LUE LETTER LOW KA
+1986;SA # NEW TAI LUE LETTER LOW XA
+1987;SA # NEW TAI LUE LETTER LOW NGA
+1988;SA # NEW TAI LUE LETTER HIGH TSA
+1989;SA # NEW TAI LUE LETTER HIGH SA
+198A;SA # NEW TAI LUE LETTER HIGH YA
+198B;SA # NEW TAI LUE LETTER LOW TSA
+198C;SA # NEW TAI LUE LETTER LOW SA
+198D;SA # NEW TAI LUE LETTER LOW YA
+198E;SA # NEW TAI LUE LETTER HIGH TA
+198F;SA # NEW TAI LUE LETTER HIGH THA
+1990;SA # NEW TAI LUE LETTER HIGH NA
+1991;SA # NEW TAI LUE LETTER LOW TA
+1992;SA # NEW TAI LUE LETTER LOW THA
+1993;SA # NEW TAI LUE LETTER LOW NA
+1994;SA # NEW TAI LUE LETTER HIGH PA
+1995;SA # NEW TAI LUE LETTER HIGH PHA
+1996;SA # NEW TAI LUE LETTER HIGH MA
+1997;SA # NEW TAI LUE LETTER LOW PA
+1998;SA # NEW TAI LUE LETTER LOW PHA
+1999;SA # NEW TAI LUE LETTER LOW MA
+199A;SA # NEW TAI LUE LETTER HIGH FA
+199B;SA # NEW TAI LUE LETTER HIGH VA
+199C;SA # NEW TAI LUE LETTER HIGH LA
+199D;SA # NEW TAI LUE LETTER LOW FA
+199E;SA # NEW TAI LUE LETTER LOW VA
+199F;SA # NEW TAI LUE LETTER LOW LA
+19A0;SA # NEW TAI LUE LETTER HIGH HA
+19A1;SA # NEW TAI LUE LETTER HIGH DA
+19A2;SA # NEW TAI LUE LETTER HIGH BA
+19A3;SA # NEW TAI LUE LETTER LOW HA
+19A4;SA # NEW TAI LUE LETTER LOW DA
+19A5;SA # NEW TAI LUE LETTER LOW BA
+19A6;SA # NEW TAI LUE LETTER HIGH KVA
+19A7;SA # NEW TAI LUE LETTER HIGH XVA
+19A8;SA # NEW TAI LUE LETTER LOW KVA
+19A9;SA # NEW TAI LUE LETTER LOW XVA
+19B0;SA # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
+19B1;SA # NEW TAI LUE VOWEL SIGN AA
+19B2;SA # NEW TAI LUE VOWEL SIGN II
+19B3;SA # NEW TAI LUE VOWEL SIGN U
+19B4;SA # NEW TAI LUE VOWEL SIGN UU
+19B5;SA # NEW TAI LUE VOWEL SIGN E
+19B6;SA # NEW TAI LUE VOWEL SIGN AE
+19B7;SA # NEW TAI LUE VOWEL SIGN O
+19B8;SA # NEW TAI LUE VOWEL SIGN OA
+19B9;SA # NEW TAI LUE VOWEL SIGN UE
+19BA;SA # NEW TAI LUE VOWEL SIGN AY
+19BB;SA # NEW TAI LUE VOWEL SIGN AAY
+19BC;SA # NEW TAI LUE VOWEL SIGN UY
+19BD;SA # NEW TAI LUE VOWEL SIGN OY
+19BE;SA # NEW TAI LUE VOWEL SIGN OAY
+19BF;SA # NEW TAI LUE VOWEL SIGN UEY
+19C0;SA # NEW TAI LUE VOWEL SIGN IY
+19C1;SA # NEW TAI LUE LETTER FINAL V
+19C2;SA # NEW TAI LUE LETTER FINAL NG
+19C3;SA # NEW TAI LUE LETTER FINAL N
+19C4;SA # NEW TAI LUE LETTER FINAL M
+19C5;SA # NEW TAI LUE LETTER FINAL K
+19C6;SA # NEW TAI LUE LETTER FINAL D
+19C7;SA # NEW TAI LUE LETTER FINAL B
+19C8;SA # NEW TAI LUE TONE MARK-1
+19C9;SA # NEW TAI LUE TONE MARK-2
+19D0;NU # NEW TAI LUE DIGIT ZERO
+19D1;NU # NEW TAI LUE DIGIT ONE
+19D2;NU # NEW TAI LUE DIGIT TWO
+19D3;NU # NEW TAI LUE DIGIT THREE
+19D4;NU # NEW TAI LUE DIGIT FOUR
+19D5;NU # NEW TAI LUE DIGIT FIVE
+19D6;NU # NEW TAI LUE DIGIT SIX
+19D7;NU # NEW TAI LUE DIGIT SEVEN
+19D8;NU # NEW TAI LUE DIGIT EIGHT
+19D9;NU # NEW TAI LUE DIGIT NINE
+19DE;SA # NEW TAI LUE SIGN LAE
+19DF;SA # NEW TAI LUE SIGN LAEV
+19E0;AL # KHMER SYMBOL PATHAMASAT
+19E1;AL # KHMER SYMBOL MUOY KOET
+19E2;AL # KHMER SYMBOL PII KOET
+19E3;AL # KHMER SYMBOL BEI KOET
+19E4;AL # KHMER SYMBOL BUON KOET
+19E5;AL # KHMER SYMBOL PRAM KOET
+19E6;AL # KHMER SYMBOL PRAM-MUOY KOET
+19E7;AL # KHMER SYMBOL PRAM-PII KOET
+19E8;AL # KHMER SYMBOL PRAM-BEI KOET
+19E9;AL # KHMER SYMBOL PRAM-BUON KOET
+19EA;AL # KHMER SYMBOL DAP KOET
+19EB;AL # KHMER SYMBOL DAP-MUOY KOET
+19EC;AL # KHMER SYMBOL DAP-PII KOET
+19ED;AL # KHMER SYMBOL DAP-BEI KOET
+19EE;AL # KHMER SYMBOL DAP-BUON KOET
+19EF;AL # KHMER SYMBOL DAP-PRAM KOET
+19F0;AL # KHMER SYMBOL TUTEYASAT
+19F1;AL # KHMER SYMBOL MUOY ROC
+19F2;AL # KHMER SYMBOL PII ROC
+19F3;AL # KHMER SYMBOL BEI ROC
+19F4;AL # KHMER SYMBOL BUON ROC
+19F5;AL # KHMER SYMBOL PRAM ROC
+19F6;AL # KHMER SYMBOL PRAM-MUOY ROC
+19F7;AL # KHMER SYMBOL PRAM-PII ROC
+19F8;AL # KHMER SYMBOL PRAM-BEI ROC
+19F9;AL # KHMER SYMBOL PRAM-BUON ROC
+19FA;AL # KHMER SYMBOL DAP ROC
+19FB;AL # KHMER SYMBOL DAP-MUOY ROC
+19FC;AL # KHMER SYMBOL DAP-PII ROC
+19FD;AL # KHMER SYMBOL DAP-BEI ROC
+19FE;AL # KHMER SYMBOL DAP-BUON ROC
+19FF;AL # KHMER SYMBOL DAP-PRAM ROC
+1A00;AL # BUGINESE LETTER KA
+1A01;AL # BUGINESE LETTER GA
+1A02;AL # BUGINESE LETTER NGA
+1A03;AL # BUGINESE LETTER NGKA
+1A04;AL # BUGINESE LETTER PA
+1A05;AL # BUGINESE LETTER BA
+1A06;AL # BUGINESE LETTER MA
+1A07;AL # BUGINESE LETTER MPA
+1A08;AL # BUGINESE LETTER TA
+1A09;AL # BUGINESE LETTER DA
+1A0A;AL # BUGINESE LETTER NA
+1A0B;AL # BUGINESE LETTER NRA
+1A0C;AL # BUGINESE LETTER CA
+1A0D;AL # BUGINESE LETTER JA
+1A0E;AL # BUGINESE LETTER NYA
+1A0F;AL # BUGINESE LETTER NYCA
+1A10;AL # BUGINESE LETTER YA
+1A11;AL # BUGINESE LETTER RA
+1A12;AL # BUGINESE LETTER LA
+1A13;AL # BUGINESE LETTER VA
+1A14;AL # BUGINESE LETTER SA
+1A15;AL # BUGINESE LETTER A
+1A16;AL # BUGINESE LETTER HA
+1A17;CM # BUGINESE VOWEL SIGN I
+1A18;CM # BUGINESE VOWEL SIGN U
+1A19;CM # BUGINESE VOWEL SIGN E
+1A1A;CM # BUGINESE VOWEL SIGN O
+1A1B;CM # BUGINESE VOWEL SIGN AE
+1A1E;BA # BUGINESE PALLAWA
+1A1F;AL # BUGINESE END OF SECTION
+1B00;CM # BALINESE SIGN ULU RICEM
+1B01;CM # BALINESE SIGN ULU CANDRA
+1B02;CM # BALINESE SIGN CECEK
+1B03;CM # BALINESE SIGN SURANG
+1B04;CM # BALINESE SIGN BISAH
+1B05;AL # BALINESE LETTER AKARA
+1B06;AL # BALINESE LETTER AKARA TEDUNG
+1B07;AL # BALINESE LETTER IKARA
+1B08;AL # BALINESE LETTER IKARA TEDUNG
+1B09;AL # BALINESE LETTER UKARA
+1B0A;AL # BALINESE LETTER UKARA TEDUNG
+1B0B;AL # BALINESE LETTER RA REPA
+1B0C;AL # BALINESE LETTER RA REPA TEDUNG
+1B0D;AL # BALINESE LETTER LA LENGA
+1B0E;AL # BALINESE LETTER LA LENGA TEDUNG
+1B0F;AL # BALINESE LETTER EKARA
+1B10;AL # BALINESE LETTER AIKARA
+1B11;AL # BALINESE LETTER OKARA
+1B12;AL # BALINESE LETTER OKARA TEDUNG
+1B13;AL # BALINESE LETTER KA
+1B14;AL # BALINESE LETTER KA MAHAPRANA
+1B15;AL # BALINESE LETTER GA
+1B16;AL # BALINESE LETTER GA GORA
+1B17;AL # BALINESE LETTER NGA
+1B18;AL # BALINESE LETTER CA
+1B19;AL # BALINESE LETTER CA LACA
+1B1A;AL # BALINESE LETTER JA
+1B1B;AL # BALINESE LETTER JA JERA
+1B1C;AL # BALINESE LETTER NYA
+1B1D;AL # BALINESE LETTER TA LATIK
+1B1E;AL # BALINESE LETTER TA MURDA MAHAPRANA
+1B1F;AL # BALINESE LETTER DA MURDA ALPAPRANA
+1B20;AL # BALINESE LETTER DA MURDA MAHAPRANA
+1B21;AL # BALINESE LETTER NA RAMBAT
+1B22;AL # BALINESE LETTER TA
+1B23;AL # BALINESE LETTER TA TAWA
+1B24;AL # BALINESE LETTER DA
+1B25;AL # BALINESE LETTER DA MADU
+1B26;AL # BALINESE LETTER NA
+1B27;AL # BALINESE LETTER PA
+1B28;AL # BALINESE LETTER PA KAPAL
+1B29;AL # BALINESE LETTER BA
+1B2A;AL # BALINESE LETTER BA KEMBANG
+1B2B;AL # BALINESE LETTER MA
+1B2C;AL # BALINESE LETTER YA
+1B2D;AL # BALINESE LETTER RA
+1B2E;AL # BALINESE LETTER LA
+1B2F;AL # BALINESE LETTER WA
+1B30;AL # BALINESE LETTER SA SAGA
+1B31;AL # BALINESE LETTER SA SAPA
+1B32;AL # BALINESE LETTER SA
+1B33;AL # BALINESE LETTER HA
+1B34;CM # BALINESE SIGN REREKAN
+1B35;CM # BALINESE VOWEL SIGN TEDUNG
+1B36;CM # BALINESE VOWEL SIGN ULU
+1B37;CM # BALINESE VOWEL SIGN ULU SARI
+1B38;CM # BALINESE VOWEL SIGN SUKU
+1B39;CM # BALINESE VOWEL SIGN SUKU ILUT
+1B3A;CM # BALINESE VOWEL SIGN RA REPA
+1B3B;CM # BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C;CM # BALINESE VOWEL SIGN LA LENGA
+1B3D;CM # BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B3E;CM # BALINESE VOWEL SIGN TALING
+1B3F;CM # BALINESE VOWEL SIGN TALING REPA
+1B40;CM # BALINESE VOWEL SIGN TALING TEDUNG
+1B41;CM # BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B42;CM # BALINESE VOWEL SIGN PEPET
+1B43;CM # BALINESE VOWEL SIGN PEPET TEDUNG
+1B44;CM # BALINESE ADEG ADEG
+1B45;AL # BALINESE LETTER KAF SASAK
+1B46;AL # BALINESE LETTER KHOT SASAK
+1B47;AL # BALINESE LETTER TZIR SASAK
+1B48;AL # BALINESE LETTER EF SASAK
+1B49;AL # BALINESE LETTER VE SASAK
+1B4A;AL # BALINESE LETTER ZAL SASAK
+1B4B;AL # BALINESE LETTER ASYURA SASAK
+1B50;NU # BALINESE DIGIT ZERO
+1B51;NU # BALINESE DIGIT ONE
+1B52;NU # BALINESE DIGIT TWO
+1B53;NU # BALINESE DIGIT THREE
+1B54;NU # BALINESE DIGIT FOUR
+1B55;NU # BALINESE DIGIT FIVE
+1B56;NU # BALINESE DIGIT SIX
+1B57;NU # BALINESE DIGIT SEVEN
+1B58;NU # BALINESE DIGIT EIGHT
+1B59;NU # BALINESE DIGIT NINE
+1B5A;BA # BALINESE PANTI
+1B5B;BA # BALINESE PAMADA
+1B5C;BA # BALINESE WINDU
+1B5D;BA # BALINESE CARIK PAMUNGKAH
+1B5E;BA # BALINESE CARIK SIKI
+1B5F;BA # BALINESE CARIK PAREREN
+1B60;BA # BALINESE PAMENENG
+1B61;AL # BALINESE MUSICAL SYMBOL DONG
+1B62;AL # BALINESE MUSICAL SYMBOL DENG
+1B63;AL # BALINESE MUSICAL SYMBOL DUNG
+1B64;AL # BALINESE MUSICAL SYMBOL DANG
+1B65;AL # BALINESE MUSICAL SYMBOL DANG SURANG
+1B66;AL # BALINESE MUSICAL SYMBOL DING
+1B67;AL # BALINESE MUSICAL SYMBOL DAENG
+1B68;AL # BALINESE MUSICAL SYMBOL DEUNG
+1B69;AL # BALINESE MUSICAL SYMBOL DAING
+1B6A;AL # BALINESE MUSICAL SYMBOL DANG GEDE
+1B6B;CM # BALINESE MUSICAL SYMBOL COMBINING TEGEH
+1B6C;CM # BALINESE MUSICAL SYMBOL COMBINING ENDEP
+1B6D;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPUL
+1B6E;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPLI
+1B6F;CM # BALINESE MUSICAL SYMBOL COMBINING JEGOGAN
+1B70;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN
+1B71;CM # BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN
+1B72;CM # BALINESE MUSICAL SYMBOL COMBINING BENDE
+1B73;CM # BALINESE MUSICAL SYMBOL COMBINING GONG
+1B74;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG
+1B75;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG
+1B76;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK
+1B77;AL # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK
+1B78;AL # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG
+1B79;AL # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG
+1B7A;AL # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK
+1B7B;AL # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK
+1B7C;AL # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+1D00;AL # LATIN LETTER SMALL CAPITAL A
+1D01;AL # LATIN LETTER SMALL CAPITAL AE
+1D02;AL # LATIN SMALL LETTER TURNED AE
+1D03;AL # LATIN LETTER SMALL CAPITAL BARRED B
+1D04;AL # LATIN LETTER SMALL CAPITAL C
+1D05;AL # LATIN LETTER SMALL CAPITAL D
+1D06;AL # LATIN LETTER SMALL CAPITAL ETH
+1D07;AL # LATIN LETTER SMALL CAPITAL E
+1D08;AL # LATIN SMALL LETTER TURNED OPEN E
+1D09;AL # LATIN SMALL LETTER TURNED I
+1D0A;AL # LATIN LETTER SMALL CAPITAL J
+1D0B;AL # LATIN LETTER SMALL CAPITAL K
+1D0C;AL # LATIN LETTER SMALL CAPITAL L WITH STROKE
+1D0D;AL # LATIN LETTER SMALL CAPITAL M
+1D0E;AL # LATIN LETTER SMALL CAPITAL REVERSED N
+1D0F;AL # LATIN LETTER SMALL CAPITAL O
+1D10;AL # LATIN LETTER SMALL CAPITAL OPEN O
+1D11;AL # LATIN SMALL LETTER SIDEWAYS O
+1D12;AL # LATIN SMALL LETTER SIDEWAYS OPEN O
+1D13;AL # LATIN SMALL LETTER SIDEWAYS O WITH STROKE
+1D14;AL # LATIN SMALL LETTER TURNED OE
+1D15;AL # LATIN LETTER SMALL CAPITAL OU
+1D16;AL # LATIN SMALL LETTER TOP HALF O
+1D17;AL # LATIN SMALL LETTER BOTTOM HALF O
+1D18;AL # LATIN LETTER SMALL CAPITAL P
+1D19;AL # LATIN LETTER SMALL CAPITAL REVERSED R
+1D1A;AL # LATIN LETTER SMALL CAPITAL TURNED R
+1D1B;AL # LATIN LETTER SMALL CAPITAL T
+1D1C;AL # LATIN LETTER SMALL CAPITAL U
+1D1D;AL # LATIN SMALL LETTER SIDEWAYS U
+1D1E;AL # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
+1D1F;AL # LATIN SMALL LETTER SIDEWAYS TURNED M
+1D20;AL # LATIN LETTER SMALL CAPITAL V
+1D21;AL # LATIN LETTER SMALL CAPITAL W
+1D22;AL # LATIN LETTER SMALL CAPITAL Z
+1D23;AL # LATIN LETTER SMALL CAPITAL EZH
+1D24;AL # LATIN LETTER VOICED LARYNGEAL SPIRANT
+1D25;AL # LATIN LETTER AIN
+1D26;AL # GREEK LETTER SMALL CAPITAL GAMMA
+1D27;AL # GREEK LETTER SMALL CAPITAL LAMDA
+1D28;AL # GREEK LETTER SMALL CAPITAL PI
+1D29;AL # GREEK LETTER SMALL CAPITAL RHO
+1D2A;AL # GREEK LETTER SMALL CAPITAL PSI
+1D2B;AL # CYRILLIC LETTER SMALL CAPITAL EL
+1D2C;AL # MODIFIER LETTER CAPITAL A
+1D2D;AL # MODIFIER LETTER CAPITAL AE
+1D2E;AL # MODIFIER LETTER CAPITAL B
+1D2F;AL # MODIFIER LETTER CAPITAL BARRED B
+1D30;AL # MODIFIER LETTER CAPITAL D
+1D31;AL # MODIFIER LETTER CAPITAL E
+1D32;AL # MODIFIER LETTER CAPITAL REVERSED E
+1D33;AL # MODIFIER LETTER CAPITAL G
+1D34;AL # MODIFIER LETTER CAPITAL H
+1D35;AL # MODIFIER LETTER CAPITAL I
+1D36;AL # MODIFIER LETTER CAPITAL J
+1D37;AL # MODIFIER LETTER CAPITAL K
+1D38;AL # MODIFIER LETTER CAPITAL L
+1D39;AL # MODIFIER LETTER CAPITAL M
+1D3A;AL # MODIFIER LETTER CAPITAL N
+1D3B;AL # MODIFIER LETTER CAPITAL REVERSED N
+1D3C;AL # MODIFIER LETTER CAPITAL O
+1D3D;AL # MODIFIER LETTER CAPITAL OU
+1D3E;AL # MODIFIER LETTER CAPITAL P
+1D3F;AL # MODIFIER LETTER CAPITAL R
+1D40;AL # MODIFIER LETTER CAPITAL T
+1D41;AL # MODIFIER LETTER CAPITAL U
+1D42;AL # MODIFIER LETTER CAPITAL W
+1D43;AL # MODIFIER LETTER SMALL A
+1D44;AL # MODIFIER LETTER SMALL TURNED A
+1D45;AL # MODIFIER LETTER SMALL ALPHA
+1D46;AL # MODIFIER LETTER SMALL TURNED AE
+1D47;AL # MODIFIER LETTER SMALL B
+1D48;AL # MODIFIER LETTER SMALL D
+1D49;AL # MODIFIER LETTER SMALL E
+1D4A;AL # MODIFIER LETTER SMALL SCHWA
+1D4B;AL # MODIFIER LETTER SMALL OPEN E
+1D4C;AL # MODIFIER LETTER SMALL TURNED OPEN E
+1D4D;AL # MODIFIER LETTER SMALL G
+1D4E;AL # MODIFIER LETTER SMALL TURNED I
+1D4F;AL # MODIFIER LETTER SMALL K
+1D50;AL # MODIFIER LETTER SMALL M
+1D51;AL # MODIFIER LETTER SMALL ENG
+1D52;AL # MODIFIER LETTER SMALL O
+1D53;AL # MODIFIER LETTER SMALL OPEN O
+1D54;AL # MODIFIER LETTER SMALL TOP HALF O
+1D55;AL # MODIFIER LETTER SMALL BOTTOM HALF O
+1D56;AL # MODIFIER LETTER SMALL P
+1D57;AL # MODIFIER LETTER SMALL T
+1D58;AL # MODIFIER LETTER SMALL U
+1D59;AL # MODIFIER LETTER SMALL SIDEWAYS U
+1D5A;AL # MODIFIER LETTER SMALL TURNED M
+1D5B;AL # MODIFIER LETTER SMALL V
+1D5C;AL # MODIFIER LETTER SMALL AIN
+1D5D;AL # MODIFIER LETTER SMALL BETA
+1D5E;AL # MODIFIER LETTER SMALL GREEK GAMMA
+1D5F;AL # MODIFIER LETTER SMALL DELTA
+1D60;AL # MODIFIER LETTER SMALL GREEK PHI
+1D61;AL # MODIFIER LETTER SMALL CHI
+1D62;AL # LATIN SUBSCRIPT SMALL LETTER I
+1D63;AL # LATIN SUBSCRIPT SMALL LETTER R
+1D64;AL # LATIN SUBSCRIPT SMALL LETTER U
+1D65;AL # LATIN SUBSCRIPT SMALL LETTER V
+1D66;AL # GREEK SUBSCRIPT SMALL LETTER BETA
+1D67;AL # GREEK SUBSCRIPT SMALL LETTER GAMMA
+1D68;AL # GREEK SUBSCRIPT SMALL LETTER RHO
+1D69;AL # GREEK SUBSCRIPT SMALL LETTER PHI
+1D6A;AL # GREEK SUBSCRIPT SMALL LETTER CHI
+1D6B;AL # LATIN SMALL LETTER UE
+1D6C;AL # LATIN SMALL LETTER B WITH MIDDLE TILDE
+1D6D;AL # LATIN SMALL LETTER D WITH MIDDLE TILDE
+1D6E;AL # LATIN SMALL LETTER F WITH MIDDLE TILDE
+1D6F;AL # LATIN SMALL LETTER M WITH MIDDLE TILDE
+1D70;AL # LATIN SMALL LETTER N WITH MIDDLE TILDE
+1D71;AL # LATIN SMALL LETTER P WITH MIDDLE TILDE
+1D72;AL # LATIN SMALL LETTER R WITH MIDDLE TILDE
+1D73;AL # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
+1D74;AL # LATIN SMALL LETTER S WITH MIDDLE TILDE
+1D75;AL # LATIN SMALL LETTER T WITH MIDDLE TILDE
+1D76;AL # LATIN SMALL LETTER Z WITH MIDDLE TILDE
+1D77;AL # LATIN SMALL LETTER TURNED G
+1D78;AL # MODIFIER LETTER CYRILLIC EN
+1D79;AL # LATIN SMALL LETTER INSULAR G
+1D7A;AL # LATIN SMALL LETTER TH WITH STRIKETHROUGH
+1D7B;AL # LATIN SMALL CAPITAL LETTER I WITH STROKE
+1D7C;AL # LATIN SMALL LETTER IOTA WITH STROKE
+1D7D;AL # LATIN SMALL LETTER P WITH STROKE
+1D7E;AL # LATIN SMALL CAPITAL LETTER U WITH STROKE
+1D7F;AL # LATIN SMALL LETTER UPSILON WITH STROKE
+1D80;AL # LATIN SMALL LETTER B WITH PALATAL HOOK
+1D81;AL # LATIN SMALL LETTER D WITH PALATAL HOOK
+1D82;AL # LATIN SMALL LETTER F WITH PALATAL HOOK
+1D83;AL # LATIN SMALL LETTER G WITH PALATAL HOOK
+1D84;AL # LATIN SMALL LETTER K WITH PALATAL HOOK
+1D85;AL # LATIN SMALL LETTER L WITH PALATAL HOOK
+1D86;AL # LATIN SMALL LETTER M WITH PALATAL HOOK
+1D87;AL # LATIN SMALL LETTER N WITH PALATAL HOOK
+1D88;AL # LATIN SMALL LETTER P WITH PALATAL HOOK
+1D89;AL # LATIN SMALL LETTER R WITH PALATAL HOOK
+1D8A;AL # LATIN SMALL LETTER S WITH PALATAL HOOK
+1D8B;AL # LATIN SMALL LETTER ESH WITH PALATAL HOOK
+1D8C;AL # LATIN SMALL LETTER V WITH PALATAL HOOK
+1D8D;AL # LATIN SMALL LETTER X WITH PALATAL HOOK
+1D8E;AL # LATIN SMALL LETTER Z WITH PALATAL HOOK
+1D8F;AL # LATIN SMALL LETTER A WITH RETROFLEX HOOK
+1D90;AL # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
+1D91;AL # LATIN SMALL LETTER D WITH HOOK AND TAIL
+1D92;AL # LATIN SMALL LETTER E WITH RETROFLEX HOOK
+1D93;AL # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
+1D94;AL # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
+1D95;AL # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
+1D96;AL # LATIN SMALL LETTER I WITH RETROFLEX HOOK
+1D97;AL # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
+1D98;AL # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
+1D99;AL # LATIN SMALL LETTER U WITH RETROFLEX HOOK
+1D9A;AL # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1D9B;AL # MODIFIER LETTER SMALL TURNED ALPHA
+1D9C;AL # MODIFIER LETTER SMALL C
+1D9D;AL # MODIFIER LETTER SMALL C WITH CURL
+1D9E;AL # MODIFIER LETTER SMALL ETH
+1D9F;AL # MODIFIER LETTER SMALL REVERSED OPEN E
+1DA0;AL # MODIFIER LETTER SMALL F
+1DA1;AL # MODIFIER LETTER SMALL DOTLESS J WITH STROKE
+1DA2;AL # MODIFIER LETTER SMALL SCRIPT G
+1DA3;AL # MODIFIER LETTER SMALL TURNED H
+1DA4;AL # MODIFIER LETTER SMALL I WITH STROKE
+1DA5;AL # MODIFIER LETTER SMALL IOTA
+1DA6;AL # MODIFIER LETTER SMALL CAPITAL I
+1DA7;AL # MODIFIER LETTER SMALL CAPITAL I WITH STROKE
+1DA8;AL # MODIFIER LETTER SMALL J WITH CROSSED-TAIL
+1DA9;AL # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
+1DAA;AL # MODIFIER LETTER SMALL L WITH PALATAL HOOK
+1DAB;AL # MODIFIER LETTER SMALL CAPITAL L
+1DAC;AL # MODIFIER LETTER SMALL M WITH HOOK
+1DAD;AL # MODIFIER LETTER SMALL TURNED M WITH LONG LEG
+1DAE;AL # MODIFIER LETTER SMALL N WITH LEFT HOOK
+1DAF;AL # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
+1DB0;AL # MODIFIER LETTER SMALL CAPITAL N
+1DB1;AL # MODIFIER LETTER SMALL BARRED O
+1DB2;AL # MODIFIER LETTER SMALL PHI
+1DB3;AL # MODIFIER LETTER SMALL S WITH HOOK
+1DB4;AL # MODIFIER LETTER SMALL ESH
+1DB5;AL # MODIFIER LETTER SMALL T WITH PALATAL HOOK
+1DB6;AL # MODIFIER LETTER SMALL U BAR
+1DB7;AL # MODIFIER LETTER SMALL UPSILON
+1DB8;AL # MODIFIER LETTER SMALL CAPITAL U
+1DB9;AL # MODIFIER LETTER SMALL V WITH HOOK
+1DBA;AL # MODIFIER LETTER SMALL TURNED V
+1DBB;AL # MODIFIER LETTER SMALL Z
+1DBC;AL # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
+1DBD;AL # MODIFIER LETTER SMALL Z WITH CURL
+1DBE;AL # MODIFIER LETTER SMALL EZH
+1DBF;AL # MODIFIER LETTER SMALL THETA
+1DC0;CM # COMBINING DOTTED GRAVE ACCENT
+1DC1;CM # COMBINING DOTTED ACUTE ACCENT
+1DC2;CM # COMBINING SNAKE BELOW
+1DC3;CM # COMBINING SUSPENSION MARK
+1DC4;CM # COMBINING MACRON-ACUTE
+1DC5;CM # COMBINING GRAVE-MACRON
+1DC6;CM # COMBINING MACRON-GRAVE
+1DC7;CM # COMBINING ACUTE-MACRON
+1DC8;CM # COMBINING GRAVE-ACUTE-GRAVE
+1DC9;CM # COMBINING ACUTE-GRAVE-ACUTE
+1DCA;CM # COMBINING LATIN SMALL LETTER R BELOW
+1DFE;CM # COMBINING LEFT ARROWHEAD ABOVE
+1DFF;CM # COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1E00;AL # LATIN CAPITAL LETTER A WITH RING BELOW
+1E01;AL # LATIN SMALL LETTER A WITH RING BELOW
+1E02;AL # LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E03;AL # LATIN SMALL LETTER B WITH DOT ABOVE
+1E04;AL # LATIN CAPITAL LETTER B WITH DOT BELOW
+1E05;AL # LATIN SMALL LETTER B WITH DOT BELOW
+1E06;AL # LATIN CAPITAL LETTER B WITH LINE BELOW
+1E07;AL # LATIN SMALL LETTER B WITH LINE BELOW
+1E08;AL # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E09;AL # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0A;AL # LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0B;AL # LATIN SMALL LETTER D WITH DOT ABOVE
+1E0C;AL # LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0D;AL # LATIN SMALL LETTER D WITH DOT BELOW
+1E0E;AL # LATIN CAPITAL LETTER D WITH LINE BELOW
+1E0F;AL # LATIN SMALL LETTER D WITH LINE BELOW
+1E10;AL # LATIN CAPITAL LETTER D WITH CEDILLA
+1E11;AL # LATIN SMALL LETTER D WITH CEDILLA
+1E12;AL # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E13;AL # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E14;AL # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E15;AL # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E16;AL # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E17;AL # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E18;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E19;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1A;AL # LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1B;AL # LATIN SMALL LETTER E WITH TILDE BELOW
+1E1C;AL # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1D;AL # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1E;AL # LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E1F;AL # LATIN SMALL LETTER F WITH DOT ABOVE
+1E20;AL # LATIN CAPITAL LETTER G WITH MACRON
+1E21;AL # LATIN SMALL LETTER G WITH MACRON
+1E22;AL # LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E23;AL # LATIN SMALL LETTER H WITH DOT ABOVE
+1E24;AL # LATIN CAPITAL LETTER H WITH DOT BELOW
+1E25;AL # LATIN SMALL LETTER H WITH DOT BELOW
+1E26;AL # LATIN CAPITAL LETTER H WITH DIAERESIS
+1E27;AL # LATIN SMALL LETTER H WITH DIAERESIS
+1E28;AL # LATIN CAPITAL LETTER H WITH CEDILLA
+1E29;AL # LATIN SMALL LETTER H WITH CEDILLA
+1E2A;AL # LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2B;AL # LATIN SMALL LETTER H WITH BREVE BELOW
+1E2C;AL # LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2D;AL # LATIN SMALL LETTER I WITH TILDE BELOW
+1E2E;AL # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E2F;AL # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E30;AL # LATIN CAPITAL LETTER K WITH ACUTE
+1E31;AL # LATIN SMALL LETTER K WITH ACUTE
+1E32;AL # LATIN CAPITAL LETTER K WITH DOT BELOW
+1E33;AL # LATIN SMALL LETTER K WITH DOT BELOW
+1E34;AL # LATIN CAPITAL LETTER K WITH LINE BELOW
+1E35;AL # LATIN SMALL LETTER K WITH LINE BELOW
+1E36;AL # LATIN CAPITAL LETTER L WITH DOT BELOW
+1E37;AL # LATIN SMALL LETTER L WITH DOT BELOW
+1E38;AL # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E39;AL # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3A;AL # LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3B;AL # LATIN SMALL LETTER L WITH LINE BELOW
+1E3C;AL # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3D;AL # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3E;AL # LATIN CAPITAL LETTER M WITH ACUTE
+1E3F;AL # LATIN SMALL LETTER M WITH ACUTE
+1E40;AL # LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E41;AL # LATIN SMALL LETTER M WITH DOT ABOVE
+1E42;AL # LATIN CAPITAL LETTER M WITH DOT BELOW
+1E43;AL # LATIN SMALL LETTER M WITH DOT BELOW
+1E44;AL # LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E45;AL # LATIN SMALL LETTER N WITH DOT ABOVE
+1E46;AL # LATIN CAPITAL LETTER N WITH DOT BELOW
+1E47;AL # LATIN SMALL LETTER N WITH DOT BELOW
+1E48;AL # LATIN CAPITAL LETTER N WITH LINE BELOW
+1E49;AL # LATIN SMALL LETTER N WITH LINE BELOW
+1E4A;AL # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4B;AL # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4C;AL # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4D;AL # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4E;AL # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E4F;AL # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E50;AL # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E51;AL # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E52;AL # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E53;AL # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E54;AL # LATIN CAPITAL LETTER P WITH ACUTE
+1E55;AL # LATIN SMALL LETTER P WITH ACUTE
+1E56;AL # LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E57;AL # LATIN SMALL LETTER P WITH DOT ABOVE
+1E58;AL # LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E59;AL # LATIN SMALL LETTER R WITH DOT ABOVE
+1E5A;AL # LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5B;AL # LATIN SMALL LETTER R WITH DOT BELOW
+1E5C;AL # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5D;AL # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5E;AL # LATIN CAPITAL LETTER R WITH LINE BELOW
+1E5F;AL # LATIN SMALL LETTER R WITH LINE BELOW
+1E60;AL # LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E61;AL # LATIN SMALL LETTER S WITH DOT ABOVE
+1E62;AL # LATIN CAPITAL LETTER S WITH DOT BELOW
+1E63;AL # LATIN SMALL LETTER S WITH DOT BELOW
+1E64;AL # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E65;AL # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E66;AL # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E67;AL # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E68;AL # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E69;AL # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A;AL # LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6B;AL # LATIN SMALL LETTER T WITH DOT ABOVE
+1E6C;AL # LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6D;AL # LATIN SMALL LETTER T WITH DOT BELOW
+1E6E;AL # LATIN CAPITAL LETTER T WITH LINE BELOW
+1E6F;AL # LATIN SMALL LETTER T WITH LINE BELOW
+1E70;AL # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E71;AL # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E72;AL # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E73;AL # LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E74;AL # LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E75;AL # LATIN SMALL LETTER U WITH TILDE BELOW
+1E76;AL # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E77;AL # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E78;AL # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E79;AL # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7A;AL # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7B;AL # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7C;AL # LATIN CAPITAL LETTER V WITH TILDE
+1E7D;AL # LATIN SMALL LETTER V WITH TILDE
+1E7E;AL # LATIN CAPITAL LETTER V WITH DOT BELOW
+1E7F;AL # LATIN SMALL LETTER V WITH DOT BELOW
+1E80;AL # LATIN CAPITAL LETTER W WITH GRAVE
+1E81;AL # LATIN SMALL LETTER W WITH GRAVE
+1E82;AL # LATIN CAPITAL LETTER W WITH ACUTE
+1E83;AL # LATIN SMALL LETTER W WITH ACUTE
+1E84;AL # LATIN CAPITAL LETTER W WITH DIAERESIS
+1E85;AL # LATIN SMALL LETTER W WITH DIAERESIS
+1E86;AL # LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E87;AL # LATIN SMALL LETTER W WITH DOT ABOVE
+1E88;AL # LATIN CAPITAL LETTER W WITH DOT BELOW
+1E89;AL # LATIN SMALL LETTER W WITH DOT BELOW
+1E8A;AL # LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8B;AL # LATIN SMALL LETTER X WITH DOT ABOVE
+1E8C;AL # LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8D;AL # LATIN SMALL LETTER X WITH DIAERESIS
+1E8E;AL # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E8F;AL # LATIN SMALL LETTER Y WITH DOT ABOVE
+1E90;AL # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E91;AL # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E92;AL # LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E93;AL # LATIN SMALL LETTER Z WITH DOT BELOW
+1E94;AL # LATIN CAPITAL LETTER Z WITH LINE BELOW
+1E95;AL # LATIN SMALL LETTER Z WITH LINE BELOW
+1E96;AL # LATIN SMALL LETTER H WITH LINE BELOW
+1E97;AL # LATIN SMALL LETTER T WITH DIAERESIS
+1E98;AL # LATIN SMALL LETTER W WITH RING ABOVE
+1E99;AL # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A;AL # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1E9B;AL # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0;AL # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA1;AL # LATIN SMALL LETTER A WITH DOT BELOW
+1EA2;AL # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA3;AL # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA4;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA5;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA7;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA9;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAB;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC;AL # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAD;AL # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE;AL # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EAF;AL # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB0;AL # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB1;AL # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB2;AL # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB3;AL # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4;AL # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB5;AL # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB6;AL # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB7;AL # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB8;AL # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EB9;AL # LATIN SMALL LETTER E WITH DOT BELOW
+1EBA;AL # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBB;AL # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBC;AL # LATIN CAPITAL LETTER E WITH TILDE
+1EBD;AL # LATIN SMALL LETTER E WITH TILDE
+1EBE;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBF;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC1;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC3;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC5;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6;AL # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC7;AL # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8;AL # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1EC9;AL # LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECA;AL # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECB;AL # LATIN SMALL LETTER I WITH DOT BELOW
+1ECC;AL # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECD;AL # LATIN SMALL LETTER O WITH DOT BELOW
+1ECE;AL # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ECF;AL # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED0;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED1;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED3;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED5;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED7;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8;AL # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED9;AL # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA;AL # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDB;AL # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDC;AL # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDD;AL # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDE;AL # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EDF;AL # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE0;AL # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE1;AL # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE2;AL # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE3;AL # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE4;AL # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE5;AL # LATIN SMALL LETTER U WITH DOT BELOW
+1EE6;AL # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE7;AL # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE8;AL # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EE9;AL # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEA;AL # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEB;AL # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEC;AL # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED;AL # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEE;AL # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEF;AL # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF0;AL # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1;AL # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF2;AL # LATIN CAPITAL LETTER Y WITH GRAVE
+1EF3;AL # LATIN SMALL LETTER Y WITH GRAVE
+1EF4;AL # LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF5;AL # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF6;AL # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF7;AL # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF8;AL # LATIN CAPITAL LETTER Y WITH TILDE
+1EF9;AL # LATIN SMALL LETTER Y WITH TILDE
+1F00;AL # GREEK SMALL LETTER ALPHA WITH PSILI
+1F01;AL # GREEK SMALL LETTER ALPHA WITH DASIA
+1F02;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F03;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F04;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F05;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F06;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F07;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F08;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F09;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F0A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F0B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F0C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F0D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F0E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10;AL # GREEK SMALL LETTER EPSILON WITH PSILI
+1F11;AL # GREEK SMALL LETTER EPSILON WITH DASIA
+1F12;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F13;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F14;AL # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F15;AL # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F19;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F1A;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F1B;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+1F1C;AL # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F1D;AL # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20;AL # GREEK SMALL LETTER ETA WITH PSILI
+1F21;AL # GREEK SMALL LETTER ETA WITH DASIA
+1F22;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F23;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F24;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F25;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F26;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F27;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F28;AL # GREEK CAPITAL LETTER ETA WITH PSILI
+1F29;AL # GREEK CAPITAL LETTER ETA WITH DASIA
+1F2A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F2B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F2C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F2D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F2E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30;AL # GREEK SMALL LETTER IOTA WITH PSILI
+1F31;AL # GREEK SMALL LETTER IOTA WITH DASIA
+1F32;AL # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F33;AL # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F34;AL # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F35;AL # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F36;AL # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F37;AL # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F38;AL # GREEK CAPITAL LETTER IOTA WITH PSILI
+1F39;AL # GREEK CAPITAL LETTER IOTA WITH DASIA
+1F3A;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F3B;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F3C;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F3D;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F3E;AL # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3F;AL # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40;AL # GREEK SMALL LETTER OMICRON WITH PSILI
+1F41;AL # GREEK SMALL LETTER OMICRON WITH DASIA
+1F42;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F43;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F44;AL # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F45;AL # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F49;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F4A;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F4B;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+1F4C;AL # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F4D;AL # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50;AL # GREEK SMALL LETTER UPSILON WITH PSILI
+1F51;AL # GREEK SMALL LETTER UPSILON WITH DASIA
+1F52;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F53;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F54;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F55;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F56;AL # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F57;AL # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F;AL # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60;AL # GREEK SMALL LETTER OMEGA WITH PSILI
+1F61;AL # GREEK SMALL LETTER OMEGA WITH DASIA
+1F62;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F63;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F64;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F65;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F66;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F67;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F68;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F69;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F6A;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1F6B;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1F6C;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1F6D;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1F6E;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6F;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70;AL # GREEK SMALL LETTER ALPHA WITH VARIA
+1F71;AL # GREEK SMALL LETTER ALPHA WITH OXIA
+1F72;AL # GREEK SMALL LETTER EPSILON WITH VARIA
+1F73;AL # GREEK SMALL LETTER EPSILON WITH OXIA
+1F74;AL # GREEK SMALL LETTER ETA WITH VARIA
+1F75;AL # GREEK SMALL LETTER ETA WITH OXIA
+1F76;AL # GREEK SMALL LETTER IOTA WITH VARIA
+1F77;AL # GREEK SMALL LETTER IOTA WITH OXIA
+1F78;AL # GREEK SMALL LETTER OMICRON WITH VARIA
+1F79;AL # GREEK SMALL LETTER OMICRON WITH OXIA
+1F7A;AL # GREEK SMALL LETTER UPSILON WITH VARIA
+1F7B;AL # GREEK SMALL LETTER UPSILON WITH OXIA
+1F7C;AL # GREEK SMALL LETTER OMEGA WITH VARIA
+1F7D;AL # GREEK SMALL LETTER OMEGA WITH OXIA
+1F80;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86;AL # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87;AL # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E;AL # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F;AL # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90;AL # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91;AL # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92;AL # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93;AL # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94;AL # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95;AL # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96;AL # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97;AL # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E;AL # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F;AL # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6;AL # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7;AL # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE;AL # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF;AL # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB0;AL # GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB1;AL # GREEK SMALL LETTER ALPHA WITH MACRON
+1FB2;AL # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB3;AL # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FB4;AL # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7;AL # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB8;AL # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB9;AL # GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FBA;AL # GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FBB;AL # GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBC;AL # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD;AL # GREEK KORONIS
+1FBE;AL # GREEK PROSGEGRAMMENI
+1FBF;AL # GREEK PSILI
+1FC0;AL # GREEK PERISPOMENI
+1FC1;AL # GREEK DIALYTIKA AND PERISPOMENI
+1FC2;AL # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC3;AL # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FC4;AL # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7;AL # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC8;AL # GREEK CAPITAL LETTER EPSILON WITH VARIA
+1FC9;AL # GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCA;AL # GREEK CAPITAL LETTER ETA WITH VARIA
+1FCB;AL # GREEK CAPITAL LETTER ETA WITH OXIA
+1FCC;AL # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD;AL # GREEK PSILI AND VARIA
+1FCE;AL # GREEK PSILI AND OXIA
+1FCF;AL # GREEK PSILI AND PERISPOMENI
+1FD0;AL # GREEK SMALL LETTER IOTA WITH VRACHY
+1FD1;AL # GREEK SMALL LETTER IOTA WITH MACRON
+1FD2;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6;AL # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7;AL # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD8;AL # GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD9;AL # GREEK CAPITAL LETTER IOTA WITH MACRON
+1FDA;AL # GREEK CAPITAL LETTER IOTA WITH VARIA
+1FDB;AL # GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD;AL # GREEK DASIA AND VARIA
+1FDE;AL # GREEK DASIA AND OXIA
+1FDF;AL # GREEK DASIA AND PERISPOMENI
+1FE0;AL # GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE1;AL # GREEK SMALL LETTER UPSILON WITH MACRON
+1FE2;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4;AL # GREEK SMALL LETTER RHO WITH PSILI
+1FE5;AL # GREEK SMALL LETTER RHO WITH DASIA
+1FE6;AL # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7;AL # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE8;AL # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE9;AL # GREEK CAPITAL LETTER UPSILON WITH MACRON
+1FEA;AL # GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FEB;AL # GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEC;AL # GREEK CAPITAL LETTER RHO WITH DASIA
+1FED;AL # GREEK DIALYTIKA AND VARIA
+1FEE;AL # GREEK DIALYTIKA AND OXIA
+1FEF;AL # GREEK VARIA
+1FF2;AL # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF3;AL # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FF4;AL # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7;AL # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF8;AL # GREEK CAPITAL LETTER OMICRON WITH VARIA
+1FF9;AL # GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFA;AL # GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FFB;AL # GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFC;AL # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD;AL # GREEK OXIA
+1FFE;AL # GREEK DASIA
+2000;BA # EN QUAD
+2001;BA # EM QUAD
+2002;BA # EN SPACE
+2003;BA # EM SPACE
+2004;BA # THREE-PER-EM SPACE
+2005;BA # FOUR-PER-EM SPACE
+2006;BA # SIX-PER-EM SPACE
+2007;GL # FIGURE SPACE
+2008;BA # PUNCTUATION SPACE
+2009;BA # THIN SPACE
+200A;BA # HAIR SPACE
+200B;ZW # ZERO WIDTH SPACE
+200C;CM # ZERO WIDTH NON-JOINER
+200D;CM # ZERO WIDTH JOINER
+200E;CM # LEFT-TO-RIGHT MARK
+200F;CM # RIGHT-TO-LEFT MARK
+2010;BA # HYPHEN
+2011;GL # NON-BREAKING HYPHEN
+2012;BA # FIGURE DASH
+2013;BA # EN DASH
+2014;B2 # EM DASH
+2015;AI # HORIZONTAL BAR
+2016;AI # DOUBLE VERTICAL LINE
+2017;AL # DOUBLE LOW LINE
+2018;QU # LEFT SINGLE QUOTATION MARK
+2019;QU # RIGHT SINGLE QUOTATION MARK
+201A;OP # SINGLE LOW-9 QUOTATION MARK
+201B;QU # SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C;QU # LEFT DOUBLE QUOTATION MARK
+201D;QU # RIGHT DOUBLE QUOTATION MARK
+201E;OP # DOUBLE LOW-9 QUOTATION MARK
+201F;QU # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020;AI # DAGGER
+2021;AI # DOUBLE DAGGER
+2022;AL # BULLET
+2023;AL # TRIANGULAR BULLET
+2024;IN # ONE DOT LEADER
+2025;IN # TWO DOT LEADER
+2026;IN # HORIZONTAL ELLIPSIS
+2027;BA # HYPHENATION POINT
+2028;BK # LINE SEPARATOR
+2029;BK # PARAGRAPH SEPARATOR
+202A;CM # LEFT-TO-RIGHT EMBEDDING
+202B;CM # RIGHT-TO-LEFT EMBEDDING
+202C;CM # POP DIRECTIONAL FORMATTING
+202D;CM # LEFT-TO-RIGHT OVERRIDE
+202E;CM # RIGHT-TO-LEFT OVERRIDE
+202F;GL # NARROW NO-BREAK SPACE
+2030;PO # PER MILLE SIGN
+2031;PO # PER TEN THOUSAND SIGN
+2032;PO # PRIME
+2033;PO # DOUBLE PRIME
+2034;PO # TRIPLE PRIME
+2035;PO # REVERSED PRIME
+2036;PO # REVERSED DOUBLE PRIME
+2037;PO # REVERSED TRIPLE PRIME
+2038;AL # CARET
+2039;QU # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A;QU # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B;AI # REFERENCE MARK
+203C;NS # DOUBLE EXCLAMATION MARK
+203D;NS # INTERROBANG
+203E;AL # OVERLINE
+203F;AL # UNDERTIE
+2040;AL # CHARACTER TIE
+2041;AL # CARET INSERTION POINT
+2042;AL # ASTERISM
+2043;AL # HYPHEN BULLET
+2044;IS # FRACTION SLASH
+2045;OP # LEFT SQUARE BRACKET WITH QUILL
+2046;CL # RIGHT SQUARE BRACKET WITH QUILL
+2047;NS # DOUBLE QUESTION MARK
+2048;NS # QUESTION EXCLAMATION MARK
+2049;NS # EXCLAMATION QUESTION MARK
+204A;AL # TIRONIAN SIGN ET
+204B;AL # REVERSED PILCROW SIGN
+204C;AL # BLACK LEFTWARDS BULLET
+204D;AL # BLACK RIGHTWARDS BULLET
+204E;AL # LOW ASTERISK
+204F;AL # REVERSED SEMICOLON
+2050;AL # CLOSE UP
+2051;AL # TWO ASTERISKS ALIGNED VERTICALLY
+2052;AL # COMMERCIAL MINUS SIGN
+2053;AL # SWUNG DASH
+2054;AL # INVERTED UNDERTIE
+2055;AL # FLOWER PUNCTUATION MARK
+2056;BA # THREE DOT PUNCTUATION
+2057;AL # QUADRUPLE PRIME
+2058;BA # FOUR DOT PUNCTUATION
+2059;BA # FIVE DOT PUNCTUATION
+205A;BA # TWO DOT PUNCTUATION
+205B;BA # FOUR DOT MARK
+205C;AL # DOTTED CROSS
+205D;BA # TRICOLON
+205E;BA # VERTICAL FOUR DOTS
+205F;BA # MEDIUM MATHEMATICAL SPACE
+2060;WJ # WORD JOINER
+2061;AL # FUNCTION APPLICATION
+2062;AL # INVISIBLE TIMES
+2063;AL # INVISIBLE SEPARATOR
+206A;CM # INHIBIT SYMMETRIC SWAPPING
+206B;CM # ACTIVATE SYMMETRIC SWAPPING
+206C;CM # INHIBIT ARABIC FORM SHAPING
+206D;CM # ACTIVATE ARABIC FORM SHAPING
+206E;CM # NATIONAL DIGIT SHAPES
+206F;CM # NOMINAL DIGIT SHAPES
+2070;AL # SUPERSCRIPT ZERO
+2071;AL # SUPERSCRIPT LATIN SMALL LETTER I
+2074;AI # SUPERSCRIPT FOUR
+2075;AL # SUPERSCRIPT FIVE
+2076;AL # SUPERSCRIPT SIX
+2077;AL # SUPERSCRIPT SEVEN
+2078;AL # SUPERSCRIPT EIGHT
+2079;AL # SUPERSCRIPT NINE
+207A;AL # SUPERSCRIPT PLUS SIGN
+207B;AL # SUPERSCRIPT MINUS
+207C;AL # SUPERSCRIPT EQUALS SIGN
+207D;OP # SUPERSCRIPT LEFT PARENTHESIS
+207E;CL # SUPERSCRIPT RIGHT PARENTHESIS
+207F;AI # SUPERSCRIPT LATIN SMALL LETTER N
+2080;AL # SUBSCRIPT ZERO
+2081;AI # SUBSCRIPT ONE
+2082;AI # SUBSCRIPT TWO
+2083;AI # SUBSCRIPT THREE
+2084;AI # SUBSCRIPT FOUR
+2085;AL # SUBSCRIPT FIVE
+2086;AL # SUBSCRIPT SIX
+2087;AL # SUBSCRIPT SEVEN
+2088;AL # SUBSCRIPT EIGHT
+2089;AL # SUBSCRIPT NINE
+208A;AL # SUBSCRIPT PLUS SIGN
+208B;AL # SUBSCRIPT MINUS
+208C;AL # SUBSCRIPT EQUALS SIGN
+208D;OP # SUBSCRIPT LEFT PARENTHESIS
+208E;CL # SUBSCRIPT RIGHT PARENTHESIS
+2090;AL # LATIN SUBSCRIPT SMALL LETTER A
+2091;AL # LATIN SUBSCRIPT SMALL LETTER E
+2092;AL # LATIN SUBSCRIPT SMALL LETTER O
+2093;AL # LATIN SUBSCRIPT SMALL LETTER X
+2094;AL # LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A0;PR # EURO-CURRENCY SIGN
+20A1;PR # COLON SIGN
+20A2;PR # CRUZEIRO SIGN
+20A3;PR # FRENCH FRANC SIGN
+20A4;PR # LIRA SIGN
+20A5;PR # MILL SIGN
+20A6;PR # NAIRA SIGN
+20A7;PO # PESETA SIGN
+20A8;PR # RUPEE SIGN
+20A9;PR # WON SIGN
+20AA;PR # NEW SHEQEL SIGN
+20AB;PR # DONG SIGN
+20AC;PR # EURO SIGN
+20AD;PR # KIP SIGN
+20AE;PR # TUGRIK SIGN
+20AF;PR # DRACHMA SIGN
+20B0;PR # GERMAN PENNY SIGN
+20B1;PR # PESO SIGN
+20B2;PR # GUARANI SIGN
+20B3;PR # AUSTRAL SIGN
+20B4;PR # HRYVNIA SIGN
+20B5;PR # CEDI SIGN
+20D0;CM # COMBINING LEFT HARPOON ABOVE
+20D1;CM # COMBINING RIGHT HARPOON ABOVE
+20D2;CM # COMBINING LONG VERTICAL LINE OVERLAY
+20D3;CM # COMBINING SHORT VERTICAL LINE OVERLAY
+20D4;CM # COMBINING ANTICLOCKWISE ARROW ABOVE
+20D5;CM # COMBINING CLOCKWISE ARROW ABOVE
+20D6;CM # COMBINING LEFT ARROW ABOVE
+20D7;CM # COMBINING RIGHT ARROW ABOVE
+20D8;CM # COMBINING RING OVERLAY
+20D9;CM # COMBINING CLOCKWISE RING OVERLAY
+20DA;CM # COMBINING ANTICLOCKWISE RING OVERLAY
+20DB;CM # COMBINING THREE DOTS ABOVE
+20DC;CM # COMBINING FOUR DOTS ABOVE
+20DD;CM # COMBINING ENCLOSING CIRCLE
+20DE;CM # COMBINING ENCLOSING SQUARE
+20DF;CM # COMBINING ENCLOSING DIAMOND
+20E0;CM # COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1;CM # COMBINING LEFT RIGHT ARROW ABOVE
+20E2;CM # COMBINING ENCLOSING SCREEN
+20E3;CM # COMBINING ENCLOSING KEYCAP
+20E4;CM # COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5;CM # COMBINING REVERSE SOLIDUS OVERLAY
+20E6;CM # COMBINING DOUBLE VERTICAL STROKE OVERLAY
+20E7;CM # COMBINING ANNUITY SYMBOL
+20E8;CM # COMBINING TRIPLE UNDERDOT
+20E9;CM # COMBINING WIDE BRIDGE ABOVE
+20EA;CM # COMBINING LEFTWARDS ARROW OVERLAY
+20EB;CM # COMBINING LONG DOUBLE SOLIDUS OVERLAY
+20EC;CM # COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+20ED;CM # COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS
+20EE;CM # COMBINING LEFT ARROW BELOW
+20EF;CM # COMBINING RIGHT ARROW BELOW
+2100;AL # ACCOUNT OF
+2101;AL # ADDRESSED TO THE SUBJECT
+2102;AL # DOUBLE-STRUCK CAPITAL C
+2103;PO # DEGREE CELSIUS
+2104;AL # CENTRE LINE SYMBOL
+2105;AI # CARE OF
+2106;AL # CADA UNA
+2107;AL # EULER CONSTANT
+2108;AL # SCRUPLE
+2109;PO # DEGREE FAHRENHEIT
+210A;AL # SCRIPT SMALL G
+210B;AL # SCRIPT CAPITAL H
+210C;AL # BLACK-LETTER CAPITAL H
+210D;AL # DOUBLE-STRUCK CAPITAL H
+210E;AL # PLANCK CONSTANT
+210F;AL # PLANCK CONSTANT OVER TWO PI
+2110;AL # SCRIPT CAPITAL I
+2111;AL # BLACK-LETTER CAPITAL I
+2112;AL # SCRIPT CAPITAL L
+2113;AI # SCRIPT SMALL L
+2114;AL # L B BAR SYMBOL
+2115;AL # DOUBLE-STRUCK CAPITAL N
+2116;PR # NUMERO SIGN
+2117;AL # SOUND RECORDING COPYRIGHT
+2118;AL # SCRIPT CAPITAL P
+2119;AL # DOUBLE-STRUCK CAPITAL P
+211A;AL # DOUBLE-STRUCK CAPITAL Q
+211B;AL # SCRIPT CAPITAL R
+211C;AL # BLACK-LETTER CAPITAL R
+211D;AL # DOUBLE-STRUCK CAPITAL R
+211E;AL # PRESCRIPTION TAKE
+211F;AL # RESPONSE
+2120;AL # SERVICE MARK
+2121;AI # TELEPHONE SIGN
+2122;AI # TRADE MARK SIGN
+2123;AL # VERSICLE
+2124;AL # DOUBLE-STRUCK CAPITAL Z
+2125;AL # OUNCE SIGN
+2126;AL # OHM SIGN
+2127;AL # INVERTED OHM SIGN
+2128;AL # BLACK-LETTER CAPITAL Z
+2129;AL # TURNED GREEK SMALL LETTER IOTA
+212A;AL # KELVIN SIGN
+212B;AI # ANGSTROM SIGN
+212C;AL # SCRIPT CAPITAL B
+212D;AL # BLACK-LETTER CAPITAL C
+212E;AL # ESTIMATED SYMBOL
+212F;AL # SCRIPT SMALL E
+2130;AL # SCRIPT CAPITAL E
+2131;AL # SCRIPT CAPITAL F
+2132;AL # TURNED CAPITAL F
+2133;AL # SCRIPT CAPITAL M
+2134;AL # SCRIPT SMALL O
+2135;AL # ALEF SYMBOL
+2136;AL # BET SYMBOL
+2137;AL # GIMEL SYMBOL
+2138;AL # DALET SYMBOL
+2139;AL # INFORMATION SOURCE
+213A;AL # ROTATED CAPITAL Q
+213B;AL # FACSIMILE SIGN
+213C;AL # DOUBLE-STRUCK SMALL PI
+213D;AL # DOUBLE-STRUCK SMALL GAMMA
+213E;AL # DOUBLE-STRUCK CAPITAL GAMMA
+213F;AL # DOUBLE-STRUCK CAPITAL PI
+2140;AL # DOUBLE-STRUCK N-ARY SUMMATION
+2141;AL # TURNED SANS-SERIF CAPITAL G
+2142;AL # TURNED SANS-SERIF CAPITAL L
+2143;AL # REVERSED SANS-SERIF CAPITAL L
+2144;AL # TURNED SANS-SERIF CAPITAL Y
+2145;AL # DOUBLE-STRUCK ITALIC CAPITAL D
+2146;AL # DOUBLE-STRUCK ITALIC SMALL D
+2147;AL # DOUBLE-STRUCK ITALIC SMALL E
+2148;AL # DOUBLE-STRUCK ITALIC SMALL I
+2149;AL # DOUBLE-STRUCK ITALIC SMALL J
+214A;AL # PROPERTY LINE
+214B;AL # TURNED AMPERSAND
+214C;AL # PER SIGN
+214D;AL # AKTIESELSKAB
+214E;AL # TURNED SMALL F
+2153;AL # VULGAR FRACTION ONE THIRD
+2154;AI # VULGAR FRACTION TWO THIRDS
+2155;AI # VULGAR FRACTION ONE FIFTH
+2156;AL # VULGAR FRACTION TWO FIFTHS
+2157;AL # VULGAR FRACTION THREE FIFTHS
+2158;AL # VULGAR FRACTION FOUR FIFTHS
+2159;AL # VULGAR FRACTION ONE SIXTH
+215A;AL # VULGAR FRACTION FIVE SIXTHS
+215B;AI # VULGAR FRACTION ONE EIGHTH
+215C;AL # VULGAR FRACTION THREE EIGHTHS
+215D;AL # VULGAR FRACTION FIVE EIGHTHS
+215E;AI # VULGAR FRACTION SEVEN EIGHTHS
+215F;AL # FRACTION NUMERATOR ONE
+2160;AI # ROMAN NUMERAL ONE
+2161;AI # ROMAN NUMERAL TWO
+2162;AI # ROMAN NUMERAL THREE
+2163;AI # ROMAN NUMERAL FOUR
+2164;AI # ROMAN NUMERAL FIVE
+2165;AI # ROMAN NUMERAL SIX
+2166;AI # ROMAN NUMERAL SEVEN
+2167;AI # ROMAN NUMERAL EIGHT
+2168;AI # ROMAN NUMERAL NINE
+2169;AI # ROMAN NUMERAL TEN
+216A;AI # ROMAN NUMERAL ELEVEN
+216B;AI # ROMAN NUMERAL TWELVE
+216C;AL # ROMAN NUMERAL FIFTY
+216D;AL # ROMAN NUMERAL ONE HUNDRED
+216E;AL # ROMAN NUMERAL FIVE HUNDRED
+216F;AL # ROMAN NUMERAL ONE THOUSAND
+2170;AI # SMALL ROMAN NUMERAL ONE
+2171;AI # SMALL ROMAN NUMERAL TWO
+2172;AI # SMALL ROMAN NUMERAL THREE
+2173;AI # SMALL ROMAN NUMERAL FOUR
+2174;AI # SMALL ROMAN NUMERAL FIVE
+2175;AI # SMALL ROMAN NUMERAL SIX
+2176;AI # SMALL ROMAN NUMERAL SEVEN
+2177;AI # SMALL ROMAN NUMERAL EIGHT
+2178;AI # SMALL ROMAN NUMERAL NINE
+2179;AI # SMALL ROMAN NUMERAL TEN
+217A;AL # SMALL ROMAN NUMERAL ELEVEN
+217B;AL # SMALL ROMAN NUMERAL TWELVE
+217C;AL # SMALL ROMAN NUMERAL FIFTY
+217D;AL # SMALL ROMAN NUMERAL ONE HUNDRED
+217E;AL # SMALL ROMAN NUMERAL FIVE HUNDRED
+217F;AL # SMALL ROMAN NUMERAL ONE THOUSAND
+2180;AL # ROMAN NUMERAL ONE THOUSAND C D
+2181;AL # ROMAN NUMERAL FIVE THOUSAND
+2182;AL # ROMAN NUMERAL TEN THOUSAND
+2183;AL # ROMAN NUMERAL REVERSED ONE HUNDRED
+2184;AL # LATIN SMALL LETTER REVERSED C
+2190;AI # LEFTWARDS ARROW
+2191;AI # UPWARDS ARROW
+2192;AI # RIGHTWARDS ARROW
+2193;AI # DOWNWARDS ARROW
+2194;AI # LEFT RIGHT ARROW
+2195;AI # UP DOWN ARROW
+2196;AI # NORTH WEST ARROW
+2197;AI # NORTH EAST ARROW
+2198;AI # SOUTH EAST ARROW
+2199;AI # SOUTH WEST ARROW
+219A;AL # LEFTWARDS ARROW WITH STROKE
+219B;AL # RIGHTWARDS ARROW WITH STROKE
+219C;AL # LEFTWARDS WAVE ARROW
+219D;AL # RIGHTWARDS WAVE ARROW
+219E;AL # LEFTWARDS TWO HEADED ARROW
+219F;AL # UPWARDS TWO HEADED ARROW
+21A0;AL # RIGHTWARDS TWO HEADED ARROW
+21A1;AL # DOWNWARDS TWO HEADED ARROW
+21A2;AL # LEFTWARDS ARROW WITH TAIL
+21A3;AL # RIGHTWARDS ARROW WITH TAIL
+21A4;AL # LEFTWARDS ARROW FROM BAR
+21A5;AL # UPWARDS ARROW FROM BAR
+21A6;AL # RIGHTWARDS ARROW FROM BAR
+21A7;AL # DOWNWARDS ARROW FROM BAR
+21A8;AL # UP DOWN ARROW WITH BASE
+21A9;AL # LEFTWARDS ARROW WITH HOOK
+21AA;AL # RIGHTWARDS ARROW WITH HOOK
+21AB;AL # LEFTWARDS ARROW WITH LOOP
+21AC;AL # RIGHTWARDS ARROW WITH LOOP
+21AD;AL # LEFT RIGHT WAVE ARROW
+21AE;AL # LEFT RIGHT ARROW WITH STROKE
+21AF;AL # DOWNWARDS ZIGZAG ARROW
+21B0;AL # UPWARDS ARROW WITH TIP LEFTWARDS
+21B1;AL # UPWARDS ARROW WITH TIP RIGHTWARDS
+21B2;AL # DOWNWARDS ARROW WITH TIP LEFTWARDS
+21B3;AL # DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21B4;AL # RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+21B5;AL # DOWNWARDS ARROW WITH CORNER LEFTWARDS
+21B6;AL # ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21B7;AL # CLOCKWISE TOP SEMICIRCLE ARROW
+21B8;AL # NORTH WEST ARROW TO LONG BAR
+21B9;AL # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+21BA;AL # ANTICLOCKWISE OPEN CIRCLE ARROW
+21BB;AL # CLOCKWISE OPEN CIRCLE ARROW
+21BC;AL # LEFTWARDS HARPOON WITH BARB UPWARDS
+21BD;AL # LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21BE;AL # UPWARDS HARPOON WITH BARB RIGHTWARDS
+21BF;AL # UPWARDS HARPOON WITH BARB LEFTWARDS
+21C0;AL # RIGHTWARDS HARPOON WITH BARB UPWARDS
+21C1;AL # RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21C2;AL # DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21C3;AL # DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21C4;AL # RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21C5;AL # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21C6;AL # LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21C7;AL # LEFTWARDS PAIRED ARROWS
+21C8;AL # UPWARDS PAIRED ARROWS
+21C9;AL # RIGHTWARDS PAIRED ARROWS
+21CA;AL # DOWNWARDS PAIRED ARROWS
+21CB;AL # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21CC;AL # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21CD;AL # LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE;AL # LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF;AL # RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0;AL # LEFTWARDS DOUBLE ARROW
+21D1;AL # UPWARDS DOUBLE ARROW
+21D2;AI # RIGHTWARDS DOUBLE ARROW
+21D3;AL # DOWNWARDS DOUBLE ARROW
+21D4;AI # LEFT RIGHT DOUBLE ARROW
+21D5;AL # UP DOWN DOUBLE ARROW
+21D6;AL # NORTH WEST DOUBLE ARROW
+21D7;AL # NORTH EAST DOUBLE ARROW
+21D8;AL # SOUTH EAST DOUBLE ARROW
+21D9;AL # SOUTH WEST DOUBLE ARROW
+21DA;AL # LEFTWARDS TRIPLE ARROW
+21DB;AL # RIGHTWARDS TRIPLE ARROW
+21DC;AL # LEFTWARDS SQUIGGLE ARROW
+21DD;AL # RIGHTWARDS SQUIGGLE ARROW
+21DE;AL # UPWARDS ARROW WITH DOUBLE STROKE
+21DF;AL # DOWNWARDS ARROW WITH DOUBLE STROKE
+21E0;AL # LEFTWARDS DASHED ARROW
+21E1;AL # UPWARDS DASHED ARROW
+21E2;AL # RIGHTWARDS DASHED ARROW
+21E3;AL # DOWNWARDS DASHED ARROW
+21E4;AL # LEFTWARDS ARROW TO BAR
+21E5;AL # RIGHTWARDS ARROW TO BAR
+21E6;AL # LEFTWARDS WHITE ARROW
+21E7;AL # UPWARDS WHITE ARROW
+21E8;AL # RIGHTWARDS WHITE ARROW
+21E9;AL # DOWNWARDS WHITE ARROW
+21EA;AL # UPWARDS WHITE ARROW FROM BAR
+21EB;AL # UPWARDS WHITE ARROW ON PEDESTAL
+21EC;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+21ED;AL # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+21EE;AL # UPWARDS WHITE DOUBLE ARROW
+21EF;AL # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+21F0;AL # RIGHTWARDS WHITE ARROW FROM WALL
+21F1;AL # NORTH WEST ARROW TO CORNER
+21F2;AL # SOUTH EAST ARROW TO CORNER
+21F3;AL # UP DOWN WHITE ARROW
+21F4;AL # RIGHT ARROW WITH SMALL CIRCLE
+21F5;AL # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
+21F6;AL # THREE RIGHTWARDS ARROWS
+21F7;AL # LEFTWARDS ARROW WITH VERTICAL STROKE
+21F8;AL # RIGHTWARDS ARROW WITH VERTICAL STROKE
+21F9;AL # LEFT RIGHT ARROW WITH VERTICAL STROKE
+21FA;AL # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+21FB;AL # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+21FC;AL # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
+21FD;AL # LEFTWARDS OPEN-HEADED ARROW
+21FE;AL # RIGHTWARDS OPEN-HEADED ARROW
+21FF;AL # LEFT RIGHT OPEN-HEADED ARROW
+2200;AI # FOR ALL
+2201;AL # COMPLEMENT
+2202;AI # PARTIAL DIFFERENTIAL
+2203;AI # THERE EXISTS
+2204;AL # THERE DOES NOT EXIST
+2205;AL # EMPTY SET
+2206;AL # INCREMENT
+2207;AI # NABLA
+2208;AI # ELEMENT OF
+2209;AL # NOT AN ELEMENT OF
+220A;AL # SMALL ELEMENT OF
+220B;AI # CONTAINS AS MEMBER
+220C;AL # DOES NOT CONTAIN AS MEMBER
+220D;AL # SMALL CONTAINS AS MEMBER
+220E;AL # END OF PROOF
+220F;AI # N-ARY PRODUCT
+2210;AL # N-ARY COPRODUCT
+2211;AI # N-ARY SUMMATION
+2212;PR # MINUS SIGN
+2213;PR # MINUS-OR-PLUS SIGN
+2214;AL # DOT PLUS
+2215;AI # DIVISION SLASH
+2216;AL # SET MINUS
+2217;AL # ASTERISK OPERATOR
+2218;AL # RING OPERATOR
+2219;AL # BULLET OPERATOR
+221A;AI # SQUARE ROOT
+221B;AL # CUBE ROOT
+221C;AL # FOURTH ROOT
+221D;AI # PROPORTIONAL TO
+221E;AI # INFINITY
+221F;AI # RIGHT ANGLE
+2220;AI # ANGLE
+2221;AL # MEASURED ANGLE
+2222;AL # SPHERICAL ANGLE
+2223;AI # DIVIDES
+2224;AL # DOES NOT DIVIDE
+2225;AI # PARALLEL TO
+2226;AL # NOT PARALLEL TO
+2227;AI # LOGICAL AND
+2228;AI # LOGICAL OR
+2229;AI # INTERSECTION
+222A;AI # UNION
+222B;AI # INTEGRAL
+222C;AI # DOUBLE INTEGRAL
+222D;AL # TRIPLE INTEGRAL
+222E;AI # CONTOUR INTEGRAL
+222F;AL # SURFACE INTEGRAL
+2230;AL # VOLUME INTEGRAL
+2231;AL # CLOCKWISE INTEGRAL
+2232;AL # CLOCKWISE CONTOUR INTEGRAL
+2233;AL # ANTICLOCKWISE CONTOUR INTEGRAL
+2234;AI # THEREFORE
+2235;AI # BECAUSE
+2236;AI # RATIO
+2237;AI # PROPORTION
+2238;AL # DOT MINUS
+2239;AL # EXCESS
+223A;AL # GEOMETRIC PROPORTION
+223B;AL # HOMOTHETIC
+223C;AI # TILDE OPERATOR
+223D;AI # REVERSED TILDE
+223E;AL # INVERTED LAZY S
+223F;AL # SINE WAVE
+2240;AL # WREATH PRODUCT
+2241;AL # NOT TILDE
+2242;AL # MINUS TILDE
+2243;AL # ASYMPTOTICALLY EQUAL TO
+2244;AL # NOT ASYMPTOTICALLY EQUAL TO
+2245;AL # APPROXIMATELY EQUAL TO
+2246;AL # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247;AL # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2248;AI # ALMOST EQUAL TO
+2249;AL # NOT ALMOST EQUAL TO
+224A;AL # ALMOST EQUAL OR EQUAL TO
+224B;AL # TRIPLE TILDE
+224C;AI # ALL EQUAL TO
+224D;AL # EQUIVALENT TO
+224E;AL # GEOMETRICALLY EQUIVALENT TO
+224F;AL # DIFFERENCE BETWEEN
+2250;AL # APPROACHES THE LIMIT
+2251;AL # GEOMETRICALLY EQUAL TO
+2252;AI # APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253;AL # IMAGE OF OR APPROXIMATELY EQUAL TO
+2254;AL # COLON EQUALS
+2255;AL # EQUALS COLON
+2256;AL # RING IN EQUAL TO
+2257;AL # RING EQUAL TO
+2258;AL # CORRESPONDS TO
+2259;AL # ESTIMATES
+225A;AL # EQUIANGULAR TO
+225B;AL # STAR EQUALS
+225C;AL # DELTA EQUAL TO
+225D;AL # EQUAL TO BY DEFINITION
+225E;AL # MEASURED BY
+225F;AL # QUESTIONED EQUAL TO
+2260;AI # NOT EQUAL TO
+2261;AI # IDENTICAL TO
+2262;AL # NOT IDENTICAL TO
+2263;AL # STRICTLY EQUIVALENT TO
+2264;AI # LESS-THAN OR EQUAL TO
+2265;AI # GREATER-THAN OR EQUAL TO
+2266;AI # LESS-THAN OVER EQUAL TO
+2267;AI # GREATER-THAN OVER EQUAL TO
+2268;AL # LESS-THAN BUT NOT EQUAL TO
+2269;AL # GREATER-THAN BUT NOT EQUAL TO
+226A;AI # MUCH LESS-THAN
+226B;AI # MUCH GREATER-THAN
+226C;AL # BETWEEN
+226D;AL # NOT EQUIVALENT TO
+226E;AI # NOT LESS-THAN
+226F;AI # NOT GREATER-THAN
+2270;AL # NEITHER LESS-THAN NOR EQUAL TO
+2271;AL # NEITHER GREATER-THAN NOR EQUAL TO
+2272;AL # LESS-THAN OR EQUIVALENT TO
+2273;AL # GREATER-THAN OR EQUIVALENT TO
+2274;AL # NEITHER LESS-THAN NOR EQUIVALENT TO
+2275;AL # NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276;AL # LESS-THAN OR GREATER-THAN
+2277;AL # GREATER-THAN OR LESS-THAN
+2278;AL # NEITHER LESS-THAN NOR GREATER-THAN
+2279;AL # NEITHER GREATER-THAN NOR LESS-THAN
+227A;AL # PRECEDES
+227B;AL # SUCCEEDS
+227C;AL # PRECEDES OR EQUAL TO
+227D;AL # SUCCEEDS OR EQUAL TO
+227E;AL # PRECEDES OR EQUIVALENT TO
+227F;AL # SUCCEEDS OR EQUIVALENT TO
+2280;AL # DOES NOT PRECEDE
+2281;AL # DOES NOT SUCCEED
+2282;AI # SUBSET OF
+2283;AI # SUPERSET OF
+2284;AL # NOT A SUBSET OF
+2285;AL # NOT A SUPERSET OF
+2286;AI # SUBSET OF OR EQUAL TO
+2287;AI # SUPERSET OF OR EQUAL TO
+2288;AL # NEITHER A SUBSET OF NOR EQUAL TO
+2289;AL # NEITHER A SUPERSET OF NOR EQUAL TO
+228A;AL # SUBSET OF WITH NOT EQUAL TO
+228B;AL # SUPERSET OF WITH NOT EQUAL TO
+228C;AL # MULTISET
+228D;AL # MULTISET MULTIPLICATION
+228E;AL # MULTISET UNION
+228F;AL # SQUARE IMAGE OF
+2290;AL # SQUARE ORIGINAL OF
+2291;AL # SQUARE IMAGE OF OR EQUAL TO
+2292;AL # SQUARE ORIGINAL OF OR EQUAL TO
+2293;AL # SQUARE CAP
+2294;AL # SQUARE CUP
+2295;AI # CIRCLED PLUS
+2296;AL # CIRCLED MINUS
+2297;AL # CIRCLED TIMES
+2298;AL # CIRCLED DIVISION SLASH
+2299;AI # CIRCLED DOT OPERATOR
+229A;AL # CIRCLED RING OPERATOR
+229B;AL # CIRCLED ASTERISK OPERATOR
+229C;AL # CIRCLED EQUALS
+229D;AL # CIRCLED DASH
+229E;AL # SQUARED PLUS
+229F;AL # SQUARED MINUS
+22A0;AL # SQUARED TIMES
+22A1;AL # SQUARED DOT OPERATOR
+22A2;AL # RIGHT TACK
+22A3;AL # LEFT TACK
+22A4;AL # DOWN TACK
+22A5;AI # UP TACK
+22A6;AL # ASSERTION
+22A7;AL # MODELS
+22A8;AL # TRUE
+22A9;AL # FORCES
+22AA;AL # TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22AB;AL # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22AC;AL # DOES NOT PROVE
+22AD;AL # NOT TRUE
+22AE;AL # DOES NOT FORCE
+22AF;AL # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0;AL # PRECEDES UNDER RELATION
+22B1;AL # SUCCEEDS UNDER RELATION
+22B2;AL # NORMAL SUBGROUP OF
+22B3;AL # CONTAINS AS NORMAL SUBGROUP
+22B4;AL # NORMAL SUBGROUP OF OR EQUAL TO
+22B5;AL # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6;AL # ORIGINAL OF
+22B7;AL # IMAGE OF
+22B8;AL # MULTIMAP
+22B9;AL # HERMITIAN CONJUGATE MATRIX
+22BA;AL # INTERCALATE
+22BB;AL # XOR
+22BC;AL # NAND
+22BD;AL # NOR
+22BE;AL # RIGHT ANGLE WITH ARC
+22BF;AI # RIGHT TRIANGLE
+22C0;AL # N-ARY LOGICAL AND
+22C1;AL # N-ARY LOGICAL OR
+22C2;AL # N-ARY INTERSECTION
+22C3;AL # N-ARY UNION
+22C4;AL # DIAMOND OPERATOR
+22C5;AL # DOT OPERATOR
+22C6;AL # STAR OPERATOR
+22C7;AL # DIVISION TIMES
+22C8;AL # BOWTIE
+22C9;AL # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA;AL # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB;AL # LEFT SEMIDIRECT PRODUCT
+22CC;AL # RIGHT SEMIDIRECT PRODUCT
+22CD;AL # REVERSED TILDE EQUALS
+22CE;AL # CURLY LOGICAL OR
+22CF;AL # CURLY LOGICAL AND
+22D0;AL # DOUBLE SUBSET
+22D1;AL # DOUBLE SUPERSET
+22D2;AL # DOUBLE INTERSECTION
+22D3;AL # DOUBLE UNION
+22D4;AL # PITCHFORK
+22D5;AL # EQUAL AND PARALLEL TO
+22D6;AL # LESS-THAN WITH DOT
+22D7;AL # GREATER-THAN WITH DOT
+22D8;AL # VERY MUCH LESS-THAN
+22D9;AL # VERY MUCH GREATER-THAN
+22DA;AL # LESS-THAN EQUAL TO OR GREATER-THAN
+22DB;AL # GREATER-THAN EQUAL TO OR LESS-THAN
+22DC;AL # EQUAL TO OR LESS-THAN
+22DD;AL # EQUAL TO OR GREATER-THAN
+22DE;AL # EQUAL TO OR PRECEDES
+22DF;AL # EQUAL TO OR SUCCEEDS
+22E0;AL # DOES NOT PRECEDE OR EQUAL
+22E1;AL # DOES NOT SUCCEED OR EQUAL
+22E2;AL # NOT SQUARE IMAGE OF OR EQUAL TO
+22E3;AL # NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4;AL # SQUARE IMAGE OF OR NOT EQUAL TO
+22E5;AL # SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6;AL # LESS-THAN BUT NOT EQUIVALENT TO
+22E7;AL # GREATER-THAN BUT NOT EQUIVALENT TO
+22E8;AL # PRECEDES BUT NOT EQUIVALENT TO
+22E9;AL # SUCCEEDS BUT NOT EQUIVALENT TO
+22EA;AL # NOT NORMAL SUBGROUP OF
+22EB;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC;AL # NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED;AL # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22EE;AL # VERTICAL ELLIPSIS
+22EF;AL # MIDLINE HORIZONTAL ELLIPSIS
+22F0;AL # UP RIGHT DIAGONAL ELLIPSIS
+22F1;AL # DOWN RIGHT DIAGONAL ELLIPSIS
+22F2;AL # ELEMENT OF WITH LONG HORIZONTAL STROKE
+22F3;AL # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F4;AL # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F5;AL # ELEMENT OF WITH DOT ABOVE
+22F6;AL # ELEMENT OF WITH OVERBAR
+22F7;AL # SMALL ELEMENT OF WITH OVERBAR
+22F8;AL # ELEMENT OF WITH UNDERBAR
+22F9;AL # ELEMENT OF WITH TWO HORIZONTAL STROKES
+22FA;AL # CONTAINS WITH LONG HORIZONTAL STROKE
+22FB;AL # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FC;AL # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FD;AL # CONTAINS WITH OVERBAR
+22FE;AL # SMALL CONTAINS WITH OVERBAR
+22FF;AL # Z NOTATION BAG MEMBERSHIP
+2300;AL # DIAMETER SIGN
+2301;AL # ELECTRIC ARROW
+2302;AL # HOUSE
+2303;AL # UP ARROWHEAD
+2304;AL # DOWN ARROWHEAD
+2305;AL # PROJECTIVE
+2306;AL # PERSPECTIVE
+2307;AL # WAVY LINE
+2308;AL # LEFT CEILING
+2309;AL # RIGHT CEILING
+230A;AL # LEFT FLOOR
+230B;AL # RIGHT FLOOR
+230C;AL # BOTTOM RIGHT CROP
+230D;AL # BOTTOM LEFT CROP
+230E;AL # TOP RIGHT CROP
+230F;AL # TOP LEFT CROP
+2310;AL # REVERSED NOT SIGN
+2311;AL # SQUARE LOZENGE
+2312;AI # ARC
+2313;AL # SEGMENT
+2314;AL # SECTOR
+2315;AL # TELEPHONE RECORDER
+2316;AL # POSITION INDICATOR
+2317;AL # VIEWDATA SQUARE
+2318;AL # PLACE OF INTEREST SIGN
+2319;AL # TURNED NOT SIGN
+231A;AL # WATCH
+231B;AL # HOURGLASS
+231C;AL # TOP LEFT CORNER
+231D;AL # TOP RIGHT CORNER
+231E;AL # BOTTOM LEFT CORNER
+231F;AL # BOTTOM RIGHT CORNER
+2320;AL # TOP HALF INTEGRAL
+2321;AL # BOTTOM HALF INTEGRAL
+2322;AL # FROWN
+2323;AL # SMILE
+2324;AL # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+2325;AL # OPTION KEY
+2326;AL # ERASE TO THE RIGHT
+2327;AL # X IN A RECTANGLE BOX
+2328;AL # KEYBOARD
+2329;OP # LEFT-POINTING ANGLE BRACKET
+232A;CL # RIGHT-POINTING ANGLE BRACKET
+232B;AL # ERASE TO THE LEFT
+232C;AL # BENZENE RING
+232D;AL # CYLINDRICITY
+232E;AL # ALL AROUND-PROFILE
+232F;AL # SYMMETRY
+2330;AL # TOTAL RUNOUT
+2331;AL # DIMENSION ORIGIN
+2332;AL # CONICAL TAPER
+2333;AL # SLOPE
+2334;AL # COUNTERBORE
+2335;AL # COUNTERSINK
+2336;AL # APL FUNCTIONAL SYMBOL I-BEAM
+2337;AL # APL FUNCTIONAL SYMBOL SQUISH QUAD
+2338;AL # APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339;AL # APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233A;AL # APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233B;AL # APL FUNCTIONAL SYMBOL QUAD JOT
+233C;AL # APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233D;AL # APL FUNCTIONAL SYMBOL CIRCLE STILE
+233E;AL # APL FUNCTIONAL SYMBOL CIRCLE JOT
+233F;AL # APL FUNCTIONAL SYMBOL SLASH BAR
+2340;AL # APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341;AL # APL FUNCTIONAL SYMBOL QUAD SLASH
+2342;AL # APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343;AL # APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344;AL # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345;AL # APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346;AL # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347;AL # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348;AL # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349;AL # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234A;AL # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
+234B;AL # APL FUNCTIONAL SYMBOL DELTA STILE
+234C;AL # APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234D;AL # APL FUNCTIONAL SYMBOL QUAD DELTA
+234E;AL # APL FUNCTIONAL SYMBOL DOWN TACK JOT
+234F;AL # APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350;AL # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351;AL # APL FUNCTIONAL SYMBOL UP TACK OVERBAR
+2352;AL # APL FUNCTIONAL SYMBOL DEL STILE
+2353;AL # APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354;AL # APL FUNCTIONAL SYMBOL QUAD DEL
+2355;AL # APL FUNCTIONAL SYMBOL UP TACK JOT
+2356;AL # APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357;AL # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358;AL # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359;AL # APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235A;AL # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235B;AL # APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235C;AL # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235D;AL # APL FUNCTIONAL SYMBOL UP SHOE JOT
+235E;AL # APL FUNCTIONAL SYMBOL QUOTE QUAD
+235F;AL # APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360;AL # APL FUNCTIONAL SYMBOL QUAD COLON
+2361;AL # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
+2362;AL # APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363;AL # APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364;AL # APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365;AL # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366;AL # APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367;AL # APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368;AL # APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369;AL # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236A;AL # APL FUNCTIONAL SYMBOL COMMA BAR
+236B;AL # APL FUNCTIONAL SYMBOL DEL TILDE
+236C;AL # APL FUNCTIONAL SYMBOL ZILDE
+236D;AL # APL FUNCTIONAL SYMBOL STILE TILDE
+236E;AL # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236F;AL # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370;AL # APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371;AL # APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372;AL # APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373;AL # APL FUNCTIONAL SYMBOL IOTA
+2374;AL # APL FUNCTIONAL SYMBOL RHO
+2375;AL # APL FUNCTIONAL SYMBOL OMEGA
+2376;AL # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377;AL # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378;AL # APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379;AL # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237A;AL # APL FUNCTIONAL SYMBOL ALPHA
+237B;AL # NOT CHECK MARK
+237C;AL # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+237D;AL # SHOULDERED OPEN BOX
+237E;AL # BELL SYMBOL
+237F;AL # VERTICAL LINE WITH MIDDLE DOT
+2380;AL # INSERTION SYMBOL
+2381;AL # CONTINUOUS UNDERLINE SYMBOL
+2382;AL # DISCONTINUOUS UNDERLINE SYMBOL
+2383;AL # EMPHASIS SYMBOL
+2384;AL # COMPOSITION SYMBOL
+2385;AL # WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386;AL # ENTER SYMBOL
+2387;AL # ALTERNATIVE KEY SYMBOL
+2388;AL # HELM SYMBOL
+2389;AL # CIRCLED HORIZONTAL BAR WITH NOTCH
+238A;AL # CIRCLED TRIANGLE DOWN
+238B;AL # BROKEN CIRCLE WITH NORTHWEST ARROW
+238C;AL # UNDO SYMBOL
+238D;AL # MONOSTABLE SYMBOL
+238E;AL # HYSTERESIS SYMBOL
+238F;AL # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390;AL # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391;AL # PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392;AL # PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393;AL # DIRECT CURRENT SYMBOL FORM TWO
+2394;AL # SOFTWARE-FUNCTION SYMBOL
+2395;AL # APL FUNCTIONAL SYMBOL QUAD
+2396;AL # DECIMAL SEPARATOR KEY SYMBOL
+2397;AL # PREVIOUS PAGE
+2398;AL # NEXT PAGE
+2399;AL # PRINT SCREEN SYMBOL
+239A;AL # CLEAR SCREEN SYMBOL
+239B;AL # LEFT PARENTHESIS UPPER HOOK
+239C;AL # LEFT PARENTHESIS EXTENSION
+239D;AL # LEFT PARENTHESIS LOWER HOOK
+239E;AL # RIGHT PARENTHESIS UPPER HOOK
+239F;AL # RIGHT PARENTHESIS EXTENSION
+23A0;AL # RIGHT PARENTHESIS LOWER HOOK
+23A1;AL # LEFT SQUARE BRACKET UPPER CORNER
+23A2;AL # LEFT SQUARE BRACKET EXTENSION
+23A3;AL # LEFT SQUARE BRACKET LOWER CORNER
+23A4;AL # RIGHT SQUARE BRACKET UPPER CORNER
+23A5;AL # RIGHT SQUARE BRACKET EXTENSION
+23A6;AL # RIGHT SQUARE BRACKET LOWER CORNER
+23A7;AL # LEFT CURLY BRACKET UPPER HOOK
+23A8;AL # LEFT CURLY BRACKET MIDDLE PIECE
+23A9;AL # LEFT CURLY BRACKET LOWER HOOK
+23AA;AL # CURLY BRACKET EXTENSION
+23AB;AL # RIGHT CURLY BRACKET UPPER HOOK
+23AC;AL # RIGHT CURLY BRACKET MIDDLE PIECE
+23AD;AL # RIGHT CURLY BRACKET LOWER HOOK
+23AE;AL # INTEGRAL EXTENSION
+23AF;AL # HORIZONTAL LINE EXTENSION
+23B0;AL # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
+23B1;AL # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
+23B2;AL # SUMMATION TOP
+23B3;AL # SUMMATION BOTTOM
+23B4;AL # TOP SQUARE BRACKET
+23B5;AL # BOTTOM SQUARE BRACKET
+23B6;AL # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
+23B7;AL # RADICAL SYMBOL BOTTOM
+23B8;AL # LEFT VERTICAL BOX LINE
+23B9;AL # RIGHT VERTICAL BOX LINE
+23BA;AL # HORIZONTAL SCAN LINE-1
+23BB;AL # HORIZONTAL SCAN LINE-3
+23BC;AL # HORIZONTAL SCAN LINE-7
+23BD;AL # HORIZONTAL SCAN LINE-9
+23BE;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
+23BF;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
+23C0;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
+23C1;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
+23C2;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
+23C3;AL # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
+23C4;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
+23C5;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
+23C6;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
+23C7;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
+23C8;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
+23C9;AL # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
+23CA;AL # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
+23CB;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
+23CC;AL # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
+23CD;AL # SQUARE FOOT
+23CE;AL # RETURN SYMBOL
+23CF;AL # EJECT SYMBOL
+23D0;AL # VERTICAL LINE EXTENSION
+23D1;AL # METRICAL BREVE
+23D2;AL # METRICAL LONG OVER SHORT
+23D3;AL # METRICAL SHORT OVER LONG
+23D4;AL # METRICAL LONG OVER TWO SHORTS
+23D5;AL # METRICAL TWO SHORTS OVER LONG
+23D6;AL # METRICAL TWO SHORTS JOINED
+23D7;AL # METRICAL TRISEME
+23D8;AL # METRICAL TETRASEME
+23D9;AL # METRICAL PENTASEME
+23DA;AL # EARTH GROUND
+23DB;AL # FUSE
+23DC;AL # TOP PARENTHESIS
+23DD;AL # BOTTOM PARENTHESIS
+23DE;AL # TOP CURLY BRACKET
+23DF;AL # BOTTOM CURLY BRACKET
+23E0;AL # TOP TORTOISE SHELL BRACKET
+23E1;AL # BOTTOM TORTOISE SHELL BRACKET
+23E2;AL # WHITE TRAPEZIUM
+23E3;AL # BENZENE RING WITH CIRCLE
+23E4;AL # STRAIGHTNESS
+23E5;AL # FLATNESS
+23E6;AL # AC CURRENT
+23E7;AL # ELECTRICAL INTERSECTION
+2400;AL # SYMBOL FOR NULL
+2401;AL # SYMBOL FOR START OF HEADING
+2402;AL # SYMBOL FOR START OF TEXT
+2403;AL # SYMBOL FOR END OF TEXT
+2404;AL # SYMBOL FOR END OF TRANSMISSION
+2405;AL # SYMBOL FOR ENQUIRY
+2406;AL # SYMBOL FOR ACKNOWLEDGE
+2407;AL # SYMBOL FOR BELL
+2408;AL # SYMBOL FOR BACKSPACE
+2409;AL # SYMBOL FOR HORIZONTAL TABULATION
+240A;AL # SYMBOL FOR LINE FEED
+240B;AL # SYMBOL FOR VERTICAL TABULATION
+240C;AL # SYMBOL FOR FORM FEED
+240D;AL # SYMBOL FOR CARRIAGE RETURN
+240E;AL # SYMBOL FOR SHIFT OUT
+240F;AL # SYMBOL FOR SHIFT IN
+2410;AL # SYMBOL FOR DATA LINK ESCAPE
+2411;AL # SYMBOL FOR DEVICE CONTROL ONE
+2412;AL # SYMBOL FOR DEVICE CONTROL TWO
+2413;AL # SYMBOL FOR DEVICE CONTROL THREE
+2414;AL # SYMBOL FOR DEVICE CONTROL FOUR
+2415;AL # SYMBOL FOR NEGATIVE ACKNOWLEDGE
+2416;AL # SYMBOL FOR SYNCHRONOUS IDLE
+2417;AL # SYMBOL FOR END OF TRANSMISSION BLOCK
+2418;AL # SYMBOL FOR CANCEL
+2419;AL # SYMBOL FOR END OF MEDIUM
+241A;AL # SYMBOL FOR SUBSTITUTE
+241B;AL # SYMBOL FOR ESCAPE
+241C;AL # SYMBOL FOR FILE SEPARATOR
+241D;AL # SYMBOL FOR GROUP SEPARATOR
+241E;AL # SYMBOL FOR RECORD SEPARATOR
+241F;AL # SYMBOL FOR UNIT SEPARATOR
+2420;AL # SYMBOL FOR SPACE
+2421;AL # SYMBOL FOR DELETE
+2422;AL # BLANK SYMBOL
+2423;AL # OPEN BOX
+2424;AL # SYMBOL FOR NEWLINE
+2425;AL # SYMBOL FOR DELETE FORM TWO
+2426;AL # SYMBOL FOR SUBSTITUTE FORM TWO
+2440;AL # OCR HOOK
+2441;AL # OCR CHAIR
+2442;AL # OCR FORK
+2443;AL # OCR INVERTED FORK
+2444;AL # OCR BELT BUCKLE
+2445;AL # OCR BOW TIE
+2446;AL # OCR BRANCH BANK IDENTIFICATION
+2447;AL # OCR AMOUNT OF CHECK
+2448;AL # OCR DASH
+2449;AL # OCR CUSTOMER ACCOUNT NUMBER
+244A;AL # OCR DOUBLE BACKSLASH
+2460;AI # CIRCLED DIGIT ONE
+2461;AI # CIRCLED DIGIT TWO
+2462;AI # CIRCLED DIGIT THREE
+2463;AI # CIRCLED DIGIT FOUR
+2464;AI # CIRCLED DIGIT FIVE
+2465;AI # CIRCLED DIGIT SIX
+2466;AI # CIRCLED DIGIT SEVEN
+2467;AI # CIRCLED DIGIT EIGHT
+2468;AI # CIRCLED DIGIT NINE
+2469;AI # CIRCLED NUMBER TEN
+246A;AI # CIRCLED NUMBER ELEVEN
+246B;AI # CIRCLED NUMBER TWELVE
+246C;AI # CIRCLED NUMBER THIRTEEN
+246D;AI # CIRCLED NUMBER FOURTEEN
+246E;AI # CIRCLED NUMBER FIFTEEN
+246F;AI # CIRCLED NUMBER SIXTEEN
+2470;AI # CIRCLED NUMBER SEVENTEEN
+2471;AI # CIRCLED NUMBER EIGHTEEN
+2472;AI # CIRCLED NUMBER NINETEEN
+2473;AI # CIRCLED NUMBER TWENTY
+2474;AI # PARENTHESIZED DIGIT ONE
+2475;AI # PARENTHESIZED DIGIT TWO
+2476;AI # PARENTHESIZED DIGIT THREE
+2477;AI # PARENTHESIZED DIGIT FOUR
+2478;AI # PARENTHESIZED DIGIT FIVE
+2479;AI # PARENTHESIZED DIGIT SIX
+247A;AI # PARENTHESIZED DIGIT SEVEN
+247B;AI # PARENTHESIZED DIGIT EIGHT
+247C;AI # PARENTHESIZED DIGIT NINE
+247D;AI # PARENTHESIZED NUMBER TEN
+247E;AI # PARENTHESIZED NUMBER ELEVEN
+247F;AI # PARENTHESIZED NUMBER TWELVE
+2480;AI # PARENTHESIZED NUMBER THIRTEEN
+2481;AI # PARENTHESIZED NUMBER FOURTEEN
+2482;AI # PARENTHESIZED NUMBER FIFTEEN
+2483;AI # PARENTHESIZED NUMBER SIXTEEN
+2484;AI # PARENTHESIZED NUMBER SEVENTEEN
+2485;AI # PARENTHESIZED NUMBER EIGHTEEN
+2486;AI # PARENTHESIZED NUMBER NINETEEN
+2487;AI # PARENTHESIZED NUMBER TWENTY
+2488;AI # DIGIT ONE FULL STOP
+2489;AI # DIGIT TWO FULL STOP
+248A;AI # DIGIT THREE FULL STOP
+248B;AI # DIGIT FOUR FULL STOP
+248C;AI # DIGIT FIVE FULL STOP
+248D;AI # DIGIT SIX FULL STOP
+248E;AI # DIGIT SEVEN FULL STOP
+248F;AI # DIGIT EIGHT FULL STOP
+2490;AI # DIGIT NINE FULL STOP
+2491;AI # NUMBER TEN FULL STOP
+2492;AI # NUMBER ELEVEN FULL STOP
+2493;AI # NUMBER TWELVE FULL STOP
+2494;AI # NUMBER THIRTEEN FULL STOP
+2495;AI # NUMBER FOURTEEN FULL STOP
+2496;AI # NUMBER FIFTEEN FULL STOP
+2497;AI # NUMBER SIXTEEN FULL STOP
+2498;AI # NUMBER SEVENTEEN FULL STOP
+2499;AI # NUMBER EIGHTEEN FULL STOP
+249A;AI # NUMBER NINETEEN FULL STOP
+249B;AI # NUMBER TWENTY FULL STOP
+249C;AI # PARENTHESIZED LATIN SMALL LETTER A
+249D;AI # PARENTHESIZED LATIN SMALL LETTER B
+249E;AI # PARENTHESIZED LATIN SMALL LETTER C
+249F;AI # PARENTHESIZED LATIN SMALL LETTER D
+24A0;AI # PARENTHESIZED LATIN SMALL LETTER E
+24A1;AI # PARENTHESIZED LATIN SMALL LETTER F
+24A2;AI # PARENTHESIZED LATIN SMALL LETTER G
+24A3;AI # PARENTHESIZED LATIN SMALL LETTER H
+24A4;AI # PARENTHESIZED LATIN SMALL LETTER I
+24A5;AI # PARENTHESIZED LATIN SMALL LETTER J
+24A6;AI # PARENTHESIZED LATIN SMALL LETTER K
+24A7;AI # PARENTHESIZED LATIN SMALL LETTER L
+24A8;AI # PARENTHESIZED LATIN SMALL LETTER M
+24A9;AI # PARENTHESIZED LATIN SMALL LETTER N
+24AA;AI # PARENTHESIZED LATIN SMALL LETTER O
+24AB;AI # PARENTHESIZED LATIN SMALL LETTER P
+24AC;AI # PARENTHESIZED LATIN SMALL LETTER Q
+24AD;AI # PARENTHESIZED LATIN SMALL LETTER R
+24AE;AI # PARENTHESIZED LATIN SMALL LETTER S
+24AF;AI # PARENTHESIZED LATIN SMALL LETTER T
+24B0;AI # PARENTHESIZED LATIN SMALL LETTER U
+24B1;AI # PARENTHESIZED LATIN SMALL LETTER V
+24B2;AI # PARENTHESIZED LATIN SMALL LETTER W
+24B3;AI # PARENTHESIZED LATIN SMALL LETTER X
+24B4;AI # PARENTHESIZED LATIN SMALL LETTER Y
+24B5;AI # PARENTHESIZED LATIN SMALL LETTER Z
+24B6;AI # CIRCLED LATIN CAPITAL LETTER A
+24B7;AI # CIRCLED LATIN CAPITAL LETTER B
+24B8;AI # CIRCLED LATIN CAPITAL LETTER C
+24B9;AI # CIRCLED LATIN CAPITAL LETTER D
+24BA;AI # CIRCLED LATIN CAPITAL LETTER E
+24BB;AI # CIRCLED LATIN CAPITAL LETTER F
+24BC;AI # CIRCLED LATIN CAPITAL LETTER G
+24BD;AI # CIRCLED LATIN CAPITAL LETTER H
+24BE;AI # CIRCLED LATIN CAPITAL LETTER I
+24BF;AI # CIRCLED LATIN CAPITAL LETTER J
+24C0;AI # CIRCLED LATIN CAPITAL LETTER K
+24C1;AI # CIRCLED LATIN CAPITAL LETTER L
+24C2;AI # CIRCLED LATIN CAPITAL LETTER M
+24C3;AI # CIRCLED LATIN CAPITAL LETTER N
+24C4;AI # CIRCLED LATIN CAPITAL LETTER O
+24C5;AI # CIRCLED LATIN CAPITAL LETTER P
+24C6;AI # CIRCLED LATIN CAPITAL LETTER Q
+24C7;AI # CIRCLED LATIN CAPITAL LETTER R
+24C8;AI # CIRCLED LATIN CAPITAL LETTER S
+24C9;AI # CIRCLED LATIN CAPITAL LETTER T
+24CA;AI # CIRCLED LATIN CAPITAL LETTER U
+24CB;AI # CIRCLED LATIN CAPITAL LETTER V
+24CC;AI # CIRCLED LATIN CAPITAL LETTER W
+24CD;AI # CIRCLED LATIN CAPITAL LETTER X
+24CE;AI # CIRCLED LATIN CAPITAL LETTER Y
+24CF;AI # CIRCLED LATIN CAPITAL LETTER Z
+24D0;AI # CIRCLED LATIN SMALL LETTER A
+24D1;AI # CIRCLED LATIN SMALL LETTER B
+24D2;AI # CIRCLED LATIN SMALL LETTER C
+24D3;AI # CIRCLED LATIN SMALL LETTER D
+24D4;AI # CIRCLED LATIN SMALL LETTER E
+24D5;AI # CIRCLED LATIN SMALL LETTER F
+24D6;AI # CIRCLED LATIN SMALL LETTER G
+24D7;AI # CIRCLED LATIN SMALL LETTER H
+24D8;AI # CIRCLED LATIN SMALL LETTER I
+24D9;AI # CIRCLED LATIN SMALL LETTER J
+24DA;AI # CIRCLED LATIN SMALL LETTER K
+24DB;AI # CIRCLED LATIN SMALL LETTER L
+24DC;AI # CIRCLED LATIN SMALL LETTER M
+24DD;AI # CIRCLED LATIN SMALL LETTER N
+24DE;AI # CIRCLED LATIN SMALL LETTER O
+24DF;AI # CIRCLED LATIN SMALL LETTER P
+24E0;AI # CIRCLED LATIN SMALL LETTER Q
+24E1;AI # CIRCLED LATIN SMALL LETTER R
+24E2;AI # CIRCLED LATIN SMALL LETTER S
+24E3;AI # CIRCLED LATIN SMALL LETTER T
+24E4;AI # CIRCLED LATIN SMALL LETTER U
+24E5;AI # CIRCLED LATIN SMALL LETTER V
+24E6;AI # CIRCLED LATIN SMALL LETTER W
+24E7;AI # CIRCLED LATIN SMALL LETTER X
+24E8;AI # CIRCLED LATIN SMALL LETTER Y
+24E9;AI # CIRCLED LATIN SMALL LETTER Z
+24EA;AI # CIRCLED DIGIT ZERO
+24EB;AI # NEGATIVE CIRCLED NUMBER ELEVEN
+24EC;AI # NEGATIVE CIRCLED NUMBER TWELVE
+24ED;AI # NEGATIVE CIRCLED NUMBER THIRTEEN
+24EE;AI # NEGATIVE CIRCLED NUMBER FOURTEEN
+24EF;AI # NEGATIVE CIRCLED NUMBER FIFTEEN
+24F0;AI # NEGATIVE CIRCLED NUMBER SIXTEEN
+24F1;AI # NEGATIVE CIRCLED NUMBER SEVENTEEN
+24F2;AI # NEGATIVE CIRCLED NUMBER EIGHTEEN
+24F3;AI # NEGATIVE CIRCLED NUMBER NINETEEN
+24F4;AI # NEGATIVE CIRCLED NUMBER TWENTY
+24F5;AI # DOUBLE CIRCLED DIGIT ONE
+24F6;AI # DOUBLE CIRCLED DIGIT TWO
+24F7;AI # DOUBLE CIRCLED DIGIT THREE
+24F8;AI # DOUBLE CIRCLED DIGIT FOUR
+24F9;AI # DOUBLE CIRCLED DIGIT FIVE
+24FA;AI # DOUBLE CIRCLED DIGIT SIX
+24FB;AI # DOUBLE CIRCLED DIGIT SEVEN
+24FC;AI # DOUBLE CIRCLED DIGIT EIGHT
+24FD;AI # DOUBLE CIRCLED DIGIT NINE
+24FE;AI # DOUBLE CIRCLED NUMBER TEN
+24FF;AL # NEGATIVE CIRCLED DIGIT ZERO
+2500;AI # BOX DRAWINGS LIGHT HORIZONTAL
+2501;AI # BOX DRAWINGS HEAVY HORIZONTAL
+2502;AI # BOX DRAWINGS LIGHT VERTICAL
+2503;AI # BOX DRAWINGS HEAVY VERTICAL
+2504;AI # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505;AI # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506;AI # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507;AI # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250A;AI # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250B;AI # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250C;AI # BOX DRAWINGS LIGHT DOWN AND RIGHT
+250D;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250E;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250F;AI # BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510;AI # BOX DRAWINGS LIGHT DOWN AND LEFT
+2511;AI # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512;AI # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513;AI # BOX DRAWINGS HEAVY DOWN AND LEFT
+2514;AI # BOX DRAWINGS LIGHT UP AND RIGHT
+2515;AI # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516;AI # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517;AI # BOX DRAWINGS HEAVY UP AND RIGHT
+2518;AI # BOX DRAWINGS LIGHT UP AND LEFT
+2519;AI # BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251A;AI # BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251B;AI # BOX DRAWINGS HEAVY UP AND LEFT
+251C;AI # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+251D;AI # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+251E;AI # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251F;AI # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520;AI # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521;AI # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522;AI # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523;AI # BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524;AI # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2525;AI # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+2526;AI # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527;AI # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528;AI # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529;AI # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252A;AI # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252B;AI # BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252C;AI # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+252D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252F;AI # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+2530;AI # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533;AI # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534;AI # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+2535;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537;AI # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+2538;AI # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253B;AI # BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253C;AI # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+253D;AI # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253E;AI # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253F;AI # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+2540;AI # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541;AI # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542;AI # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543;AI # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544;AI # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545;AI # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546;AI # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547;AI # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548;AI # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549;AI # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254A;AI # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254B;AI # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254C;AL # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254D;AL # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254E;AL # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254F;AL # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550;AI # BOX DRAWINGS DOUBLE HORIZONTAL
+2551;AI # BOX DRAWINGS DOUBLE VERTICAL
+2552;AI # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553;AI # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554;AI # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555;AI # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556;AI # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557;AI # BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558;AI # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559;AI # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A;AI # BOX DRAWINGS DOUBLE UP AND RIGHT
+255B;AI # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C;AI # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D;AI # BOX DRAWINGS DOUBLE UP AND LEFT
+255E;AI # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F;AI # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560;AI # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561;AI # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562;AI # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563;AI # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564;AI # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565;AI # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566;AI # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567;AI # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568;AI # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569;AI # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A;AI # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B;AI # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C;AI # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256D;AI # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256E;AI # BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256F;AI # BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570;AI # BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572;AI # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573;AI # BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574;AI # BOX DRAWINGS LIGHT LEFT
+2575;AL # BOX DRAWINGS LIGHT UP
+2576;AL # BOX DRAWINGS LIGHT RIGHT
+2577;AL # BOX DRAWINGS LIGHT DOWN
+2578;AL # BOX DRAWINGS HEAVY LEFT
+2579;AL # BOX DRAWINGS HEAVY UP
+257A;AL # BOX DRAWINGS HEAVY RIGHT
+257B;AL # BOX DRAWINGS HEAVY DOWN
+257C;AL # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257D;AL # BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257E;AL # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257F;AL # BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+2580;AI # UPPER HALF BLOCK
+2581;AI # LOWER ONE EIGHTH BLOCK
+2582;AI # LOWER ONE QUARTER BLOCK
+2583;AI # LOWER THREE EIGHTHS BLOCK
+2584;AI # LOWER HALF BLOCK
+2585;AI # LOWER FIVE EIGHTHS BLOCK
+2586;AI # LOWER THREE QUARTERS BLOCK
+2587;AI # LOWER SEVEN EIGHTHS BLOCK
+2588;AI # FULL BLOCK
+2589;AI # LEFT SEVEN EIGHTHS BLOCK
+258A;AI # LEFT THREE QUARTERS BLOCK
+258B;AI # LEFT FIVE EIGHTHS BLOCK
+258C;AI # LEFT HALF BLOCK
+258D;AI # LEFT THREE EIGHTHS BLOCK
+258E;AI # LEFT ONE QUARTER BLOCK
+258F;AI # LEFT ONE EIGHTH BLOCK
+2590;AL # RIGHT HALF BLOCK
+2591;AL # LIGHT SHADE
+2592;AI # MEDIUM SHADE
+2593;AI # DARK SHADE
+2594;AI # UPPER ONE EIGHTH BLOCK
+2595;AI # RIGHT ONE EIGHTH BLOCK
+2596;AL # QUADRANT LOWER LEFT
+2597;AL # QUADRANT LOWER RIGHT
+2598;AL # QUADRANT UPPER LEFT
+2599;AL # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
+259A;AL # QUADRANT UPPER LEFT AND LOWER RIGHT
+259B;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
+259C;AL # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
+259D;AL # QUADRANT UPPER RIGHT
+259E;AL # QUADRANT UPPER RIGHT AND LOWER LEFT
+259F;AL # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
+25A0;AI # BLACK SQUARE
+25A1;AI # WHITE SQUARE
+25A2;AL # WHITE SQUARE WITH ROUNDED CORNERS
+25A3;AI # WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25A4;AI # SQUARE WITH HORIZONTAL FILL
+25A5;AI # SQUARE WITH VERTICAL FILL
+25A6;AI # SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25A7;AI # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25A8;AI # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25A9;AI # SQUARE WITH DIAGONAL CROSSHATCH FILL
+25AA;AL # BLACK SMALL SQUARE
+25AB;AL # WHITE SMALL SQUARE
+25AC;AL # BLACK RECTANGLE
+25AD;AL # WHITE RECTANGLE
+25AE;AL # BLACK VERTICAL RECTANGLE
+25AF;AL # WHITE VERTICAL RECTANGLE
+25B0;AL # BLACK PARALLELOGRAM
+25B1;AL # WHITE PARALLELOGRAM
+25B2;AI # BLACK UP-POINTING TRIANGLE
+25B3;AI # WHITE UP-POINTING TRIANGLE
+25B4;AL # BLACK UP-POINTING SMALL TRIANGLE
+25B5;AL # WHITE UP-POINTING SMALL TRIANGLE
+25B6;AI # BLACK RIGHT-POINTING TRIANGLE
+25B7;AI # WHITE RIGHT-POINTING TRIANGLE
+25B8;AL # BLACK RIGHT-POINTING SMALL TRIANGLE
+25B9;AL # WHITE RIGHT-POINTING SMALL TRIANGLE
+25BA;AL # BLACK RIGHT-POINTING POINTER
+25BB;AL # WHITE RIGHT-POINTING POINTER
+25BC;AI # BLACK DOWN-POINTING TRIANGLE
+25BD;AI # WHITE DOWN-POINTING TRIANGLE
+25BE;AL # BLACK DOWN-POINTING SMALL TRIANGLE
+25BF;AL # WHITE DOWN-POINTING SMALL TRIANGLE
+25C0;AI # BLACK LEFT-POINTING TRIANGLE
+25C1;AI # WHITE LEFT-POINTING TRIANGLE
+25C2;AL # BLACK LEFT-POINTING SMALL TRIANGLE
+25C3;AL # WHITE LEFT-POINTING SMALL TRIANGLE
+25C4;AL # BLACK LEFT-POINTING POINTER
+25C5;AL # WHITE LEFT-POINTING POINTER
+25C6;AI # BLACK DIAMOND
+25C7;AI # WHITE DIAMOND
+25C8;AI # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25C9;AL # FISHEYE
+25CA;AL # LOZENGE
+25CB;AI # WHITE CIRCLE
+25CC;AL # DOTTED CIRCLE
+25CD;AL # CIRCLE WITH VERTICAL FILL
+25CE;AI # BULLSEYE
+25CF;AI # BLACK CIRCLE
+25D0;AI # CIRCLE WITH LEFT HALF BLACK
+25D1;AI # CIRCLE WITH RIGHT HALF BLACK
+25D2;AL # CIRCLE WITH LOWER HALF BLACK
+25D3;AL # CIRCLE WITH UPPER HALF BLACK
+25D4;AL # CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25D5;AL # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25D6;AL # LEFT HALF BLACK CIRCLE
+25D7;AL # RIGHT HALF BLACK CIRCLE
+25D8;AL # INVERSE BULLET
+25D9;AL # INVERSE WHITE CIRCLE
+25DA;AL # UPPER HALF INVERSE WHITE CIRCLE
+25DB;AL # LOWER HALF INVERSE WHITE CIRCLE
+25DC;AL # UPPER LEFT QUADRANT CIRCULAR ARC
+25DD;AL # UPPER RIGHT QUADRANT CIRCULAR ARC
+25DE;AL # LOWER RIGHT QUADRANT CIRCULAR ARC
+25DF;AL # LOWER LEFT QUADRANT CIRCULAR ARC
+25E0;AL # UPPER HALF CIRCLE
+25E1;AL # LOWER HALF CIRCLE
+25E2;AI # BLACK LOWER RIGHT TRIANGLE
+25E3;AI # BLACK LOWER LEFT TRIANGLE
+25E4;AI # BLACK UPPER LEFT TRIANGLE
+25E5;AI # BLACK UPPER RIGHT TRIANGLE
+25E6;AL # WHITE BULLET
+25E7;AL # SQUARE WITH LEFT HALF BLACK
+25E8;AL # SQUARE WITH RIGHT HALF BLACK
+25E9;AL # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25EA;AL # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25EB;AL # WHITE SQUARE WITH VERTICAL BISECTING LINE
+25EC;AL # WHITE UP-POINTING TRIANGLE WITH DOT
+25ED;AL # UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25EE;AL # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25EF;AI # LARGE CIRCLE
+25F0;AL # WHITE SQUARE WITH UPPER LEFT QUADRANT
+25F1;AL # WHITE SQUARE WITH LOWER LEFT QUADRANT
+25F2;AL # WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25F3;AL # WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25F4;AL # WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25F5;AL # WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25F6;AL # WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25F7;AL # WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+25F8;AL # UPPER LEFT TRIANGLE
+25F9;AL # UPPER RIGHT TRIANGLE
+25FA;AL # LOWER LEFT TRIANGLE
+25FB;AL # WHITE MEDIUM SQUARE
+25FC;AL # BLACK MEDIUM SQUARE
+25FD;AL # WHITE MEDIUM SMALL SQUARE
+25FE;AL # BLACK MEDIUM SMALL SQUARE
+25FF;AL # LOWER RIGHT TRIANGLE
+2600;AL # BLACK SUN WITH RAYS
+2601;AL # CLOUD
+2602;AL # UMBRELLA
+2603;AL # SNOWMAN
+2604;AL # COMET
+2605;AI # BLACK STAR
+2606;AI # WHITE STAR
+2607;AL # LIGHTNING
+2608;AL # THUNDERSTORM
+2609;AI # SUN
+260A;AL # ASCENDING NODE
+260B;AL # DESCENDING NODE
+260C;AL # CONJUNCTION
+260D;AL # OPPOSITION
+260E;AI # BLACK TELEPHONE
+260F;AI # WHITE TELEPHONE
+2610;AL # BALLOT BOX
+2611;AL # BALLOT BOX WITH CHECK
+2612;AL # BALLOT BOX WITH X
+2613;AL # SALTIRE
+2614;AI # UMBRELLA WITH RAIN DROPS
+2615;AI # HOT BEVERAGE
+2616;AI # WHITE SHOGI PIECE
+2617;AI # BLACK SHOGI PIECE
+2618;AL # SHAMROCK
+2619;AL # REVERSED ROTATED FLORAL HEART BULLET
+261A;AL # BLACK LEFT POINTING INDEX
+261B;AL # BLACK RIGHT POINTING INDEX
+261C;AI # WHITE LEFT POINTING INDEX
+261D;AL # WHITE UP POINTING INDEX
+261E;AI # WHITE RIGHT POINTING INDEX
+261F;AL # WHITE DOWN POINTING INDEX
+2620;AL # SKULL AND CROSSBONES
+2621;AL # CAUTION SIGN
+2622;AL # RADIOACTIVE SIGN
+2623;AL # BIOHAZARD SIGN
+2624;AL # CADUCEUS
+2625;AL # ANKH
+2626;AL # ORTHODOX CROSS
+2627;AL # CHI RHO
+2628;AL # CROSS OF LORRAINE
+2629;AL # CROSS OF JERUSALEM
+262A;AL # STAR AND CRESCENT
+262B;AL # FARSI SYMBOL
+262C;AL # ADI SHAKTI
+262D;AL # HAMMER AND SICKLE
+262E;AL # PEACE SYMBOL
+262F;AL # YIN YANG
+2630;AL # TRIGRAM FOR HEAVEN
+2631;AL # TRIGRAM FOR LAKE
+2632;AL # TRIGRAM FOR FIRE
+2633;AL # TRIGRAM FOR THUNDER
+2634;AL # TRIGRAM FOR WIND
+2635;AL # TRIGRAM FOR WATER
+2636;AL # TRIGRAM FOR MOUNTAIN
+2637;AL # TRIGRAM FOR EARTH
+2638;AL # WHEEL OF DHARMA
+2639;AL # WHITE FROWNING FACE
+263A;AL # WHITE SMILING FACE
+263B;AL # BLACK SMILING FACE
+263C;AL # WHITE SUN WITH RAYS
+263D;AL # FIRST QUARTER MOON
+263E;AL # LAST QUARTER MOON
+263F;AL # MERCURY
+2640;AI # FEMALE SIGN
+2641;AL # EARTH
+2642;AI # MALE SIGN
+2643;AL # JUPITER
+2644;AL # SATURN
+2645;AL # URANUS
+2646;AL # NEPTUNE
+2647;AL # PLUTO
+2648;AL # ARIES
+2649;AL # TAURUS
+264A;AL # GEMINI
+264B;AL # CANCER
+264C;AL # LEO
+264D;AL # VIRGO
+264E;AL # LIBRA
+264F;AL # SCORPIUS
+2650;AL # SAGITTARIUS
+2651;AL # CAPRICORN
+2652;AL # AQUARIUS
+2653;AL # PISCES
+2654;AL # WHITE CHESS KING
+2655;AL # WHITE CHESS QUEEN
+2656;AL # WHITE CHESS ROOK
+2657;AL # WHITE CHESS BISHOP
+2658;AL # WHITE CHESS KNIGHT
+2659;AL # WHITE CHESS PAWN
+265A;AL # BLACK CHESS KING
+265B;AL # BLACK CHESS QUEEN
+265C;AL # BLACK CHESS ROOK
+265D;AL # BLACK CHESS BISHOP
+265E;AL # BLACK CHESS KNIGHT
+265F;AL # BLACK CHESS PAWN
+2660;AI # BLACK SPADE SUIT
+2661;AI # WHITE HEART SUIT
+2662;AL # WHITE DIAMOND SUIT
+2663;AI # BLACK CLUB SUIT
+2664;AI # WHITE SPADE SUIT
+2665;AI # BLACK HEART SUIT
+2666;AL # BLACK DIAMOND SUIT
+2667;AI # WHITE CLUB SUIT
+2668;AI # HOT SPRINGS
+2669;AI # QUARTER NOTE
+266A;AI # EIGHTH NOTE
+266B;AL # BEAMED EIGHTH NOTES
+266C;AI # BEAMED SIXTEENTH NOTES
+266D;AI # MUSIC FLAT SIGN
+266E;AL # MUSIC NATURAL SIGN
+266F;AI # MUSIC SHARP SIGN
+2670;AL # WEST SYRIAC CROSS
+2671;AL # EAST SYRIAC CROSS
+2672;AL # UNIVERSAL RECYCLING SYMBOL
+2673;AL # RECYCLING SYMBOL FOR TYPE-1 PLASTICS
+2674;AL # RECYCLING SYMBOL FOR TYPE-2 PLASTICS
+2675;AL # RECYCLING SYMBOL FOR TYPE-3 PLASTICS
+2676;AL # RECYCLING SYMBOL FOR TYPE-4 PLASTICS
+2677;AL # RECYCLING SYMBOL FOR TYPE-5 PLASTICS
+2678;AL # RECYCLING SYMBOL FOR TYPE-6 PLASTICS
+2679;AL # RECYCLING SYMBOL FOR TYPE-7 PLASTICS
+267A;AL # RECYCLING SYMBOL FOR GENERIC MATERIALS
+267B;AL # BLACK UNIVERSAL RECYCLING SYMBOL
+267C;AL # RECYCLED PAPER SYMBOL
+267D;AL # PARTIALLY-RECYCLED PAPER SYMBOL
+267E;AL # PERMANENT PAPER SIGN
+267F;AL # WHEELCHAIR SYMBOL
+2680;AL # DIE FACE-1
+2681;AL # DIE FACE-2
+2682;AL # DIE FACE-3
+2683;AL # DIE FACE-4
+2684;AL # DIE FACE-5
+2685;AL # DIE FACE-6
+2686;AL # WHITE CIRCLE WITH DOT RIGHT
+2687;AL # WHITE CIRCLE WITH TWO DOTS
+2688;AL # BLACK CIRCLE WITH WHITE DOT RIGHT
+2689;AL # BLACK CIRCLE WITH TWO WHITE DOTS
+268A;AL # MONOGRAM FOR YANG
+268B;AL # MONOGRAM FOR YIN
+268C;AL # DIGRAM FOR GREATER YANG
+268D;AL # DIGRAM FOR LESSER YIN
+268E;AL # DIGRAM FOR LESSER YANG
+268F;AL # DIGRAM FOR GREATER YIN
+2690;AL # WHITE FLAG
+2691;AL # BLACK FLAG
+2692;AL # HAMMER AND PICK
+2693;AL # ANCHOR
+2694;AL # CROSSED SWORDS
+2695;AL # STAFF OF AESCULAPIUS
+2696;AL # SCALES
+2697;AL # ALEMBIC
+2698;AL # FLOWER
+2699;AL # GEAR
+269A;AL # STAFF OF HERMES
+269B;AL # ATOM SYMBOL
+269C;AL # FLEUR-DE-LIS
+26A0;AL # WARNING SIGN
+26A1;AL # HIGH VOLTAGE SIGN
+26A2;AL # DOUBLED FEMALE SIGN
+26A3;AL # DOUBLED MALE SIGN
+26A4;AL # INTERLOCKED FEMALE AND MALE SIGN
+26A5;AL # MALE AND FEMALE SIGN
+26A6;AL # MALE WITH STROKE SIGN
+26A7;AL # MALE WITH STROKE AND MALE AND FEMALE SIGN
+26A8;AL # VERTICAL MALE WITH STROKE SIGN
+26A9;AL # HORIZONTAL MALE WITH STROKE SIGN
+26AA;AL # MEDIUM WHITE CIRCLE
+26AB;AL # MEDIUM BLACK CIRCLE
+26AC;AL # MEDIUM SMALL WHITE CIRCLE
+26AD;AL # MARRIAGE SYMBOL
+26AE;AL # DIVORCE SYMBOL
+26AF;AL # UNMARRIED PARTNERSHIP SYMBOL
+26B0;AL # COFFIN
+26B1;AL # FUNERAL URN
+26B2;AL # NEUTER
+2701;AL # UPPER BLADE SCISSORS
+2702;AL # BLACK SCISSORS
+2703;AL # LOWER BLADE SCISSORS
+2704;AL # WHITE SCISSORS
+2706;AL # TELEPHONE LOCATION SIGN
+2707;AL # TAPE DRIVE
+2708;AL # AIRPLANE
+2709;AL # ENVELOPE
+270C;AL # VICTORY HAND
+270D;AL # WRITING HAND
+270E;AL # LOWER RIGHT PENCIL
+270F;AL # PENCIL
+2710;AL # UPPER RIGHT PENCIL
+2711;AL # WHITE NIB
+2712;AL # BLACK NIB
+2713;AL # CHECK MARK
+2714;AL # HEAVY CHECK MARK
+2715;AL # MULTIPLICATION X
+2716;AL # HEAVY MULTIPLICATION X
+2717;AL # BALLOT X
+2718;AL # HEAVY BALLOT X
+2719;AL # OUTLINED GREEK CROSS
+271A;AL # HEAVY GREEK CROSS
+271B;AL # OPEN CENTRE CROSS
+271C;AL # HEAVY OPEN CENTRE CROSS
+271D;AL # LATIN CROSS
+271E;AL # SHADOWED WHITE LATIN CROSS
+271F;AL # OUTLINED LATIN CROSS
+2720;AL # MALTESE CROSS
+2721;AL # STAR OF DAVID
+2722;AL # FOUR TEARDROP-SPOKED ASTERISK
+2723;AL # FOUR BALLOON-SPOKED ASTERISK
+2724;AL # HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725;AL # FOUR CLUB-SPOKED ASTERISK
+2726;AL # BLACK FOUR POINTED STAR
+2727;AL # WHITE FOUR POINTED STAR
+2729;AL # STRESS OUTLINED WHITE STAR
+272A;AL # CIRCLED WHITE STAR
+272B;AL # OPEN CENTRE BLACK STAR
+272C;AL # BLACK CENTRE WHITE STAR
+272D;AL # OUTLINED BLACK STAR
+272E;AL # HEAVY OUTLINED BLACK STAR
+272F;AL # PINWHEEL STAR
+2730;AL # SHADOWED WHITE STAR
+2731;AL # HEAVY ASTERISK
+2732;AL # OPEN CENTRE ASTERISK
+2733;AL # EIGHT SPOKED ASTERISK
+2734;AL # EIGHT POINTED BLACK STAR
+2735;AL # EIGHT POINTED PINWHEEL STAR
+2736;AL # SIX POINTED BLACK STAR
+2737;AL # EIGHT POINTED RECTILINEAR BLACK STAR
+2738;AL # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739;AL # TWELVE POINTED BLACK STAR
+273A;AL # SIXTEEN POINTED ASTERISK
+273B;AL # TEARDROP-SPOKED ASTERISK
+273C;AL # OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273D;AL # HEAVY TEARDROP-SPOKED ASTERISK
+273E;AL # SIX PETALLED BLACK AND WHITE FLORETTE
+273F;AL # BLACK FLORETTE
+2740;AL # WHITE FLORETTE
+2741;AL # EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742;AL # CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743;AL # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744;AL # SNOWFLAKE
+2745;AL # TIGHT TRIFOLIATE SNOWFLAKE
+2746;AL # HEAVY CHEVRON SNOWFLAKE
+2747;AL # SPARKLE
+2748;AL # HEAVY SPARKLE
+2749;AL # BALLOON-SPOKED ASTERISK
+274A;AL # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274B;AL # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D;AL # SHADOWED WHITE CIRCLE
+274F;AL # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750;AL # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751;AL # LOWER RIGHT SHADOWED WHITE SQUARE
+2752;AL # UPPER RIGHT SHADOWED WHITE SQUARE
+2756;AL # BLACK DIAMOND MINUS WHITE X
+2758;AL # LIGHT VERTICAL BAR
+2759;AL # MEDIUM VERTICAL BAR
+275A;AL # HEAVY VERTICAL BAR
+275B;QU # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+275C;QU # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+275D;QU # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+275E;QU # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761;AL # CURVED STEM PARAGRAPH SIGN ORNAMENT
+2762;EX # HEAVY EXCLAMATION MARK ORNAMENT
+2763;EX # HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764;AL # HEAVY BLACK HEART
+2765;AL # ROTATED HEAVY BLACK HEART BULLET
+2766;AL # FLORAL HEART
+2767;AL # ROTATED FLORAL HEART BULLET
+2768;OP # MEDIUM LEFT PARENTHESIS ORNAMENT
+2769;CL # MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A;OP # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B;CL # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C;OP # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D;CL # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E;OP # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F;CL # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770;OP # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771;CL # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772;OP # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2773;CL # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2774;OP # MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775;CL # MEDIUM RIGHT CURLY BRACKET ORNAMENT
+2776;AI # DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2777;AI # DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2778;AI # DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2779;AI # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+277A;AI # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+277B;AI # DINGBAT NEGATIVE CIRCLED DIGIT SIX
+277C;AI # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+277D;AI # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+277E;AI # DINGBAT NEGATIVE CIRCLED DIGIT NINE
+277F;AI # DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2780;AI # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+2781;AI # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+2782;AI # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+2783;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+2784;AI # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+2785;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+2786;AI # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2787;AI # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2788;AI # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2789;AI # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+278A;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+278B;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+278C;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+278D;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+278E;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+278F;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2790;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2791;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2792;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2793;AI # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794;AL # HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798;AL # HEAVY SOUTH EAST ARROW
+2799;AL # HEAVY RIGHTWARDS ARROW
+279A;AL # HEAVY NORTH EAST ARROW
+279B;AL # DRAFTING POINT RIGHTWARDS ARROW
+279C;AL # HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279D;AL # TRIANGLE-HEADED RIGHTWARDS ARROW
+279E;AL # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279F;AL # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A0;AL # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A1;AL # BLACK RIGHTWARDS ARROW
+27A2;AL # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27A3;AL # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27A4;AL # BLACK RIGHTWARDS ARROWHEAD
+27A5;AL # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27A6;AL # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27A7;AL # SQUAT BLACK RIGHTWARDS ARROW
+27A8;AL # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27A9;AL # RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27AA;AL # LEFT-SHADED WHITE RIGHTWARDS ARROW
+27AB;AL # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AC;AL # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AD;AL # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AE;AL # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AF;AL # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1;AL # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B2;AL # CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27B3;AL # WHITE-FEATHERED RIGHTWARDS ARROW
+27B4;AL # BLACK-FEATHERED SOUTH EAST ARROW
+27B5;AL # BLACK-FEATHERED RIGHTWARDS ARROW
+27B6;AL # BLACK-FEATHERED NORTH EAST ARROW
+27B7;AL # HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27B8;AL # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27B9;AL # HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27BA;AL # TEARDROP-BARBED RIGHTWARDS ARROW
+27BB;AL # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27BC;AL # WEDGE-TAILED RIGHTWARDS ARROW
+27BD;AL # HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27BE;AL # OPEN-OUTLINED RIGHTWARDS ARROW
+27C0;AL # THREE DIMENSIONAL ANGLE
+27C1;AL # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
+27C2;AL # PERPENDICULAR
+27C3;AL # OPEN SUBSET
+27C4;AL # OPEN SUPERSET
+27C5;OP # LEFT S-SHAPED BAG DELIMITER
+27C6;CL # RIGHT S-SHAPED BAG DELIMITER
+27C7;AL # OR WITH DOT INSIDE
+27C8;AL # REVERSE SOLIDUS PRECEDING SUBSET
+27C9;AL # SUPERSET PRECEDING SOLIDUS
+27CA;AL # VERTICAL BAR WITH HORIZONTAL STROKE
+27D0;AL # WHITE DIAMOND WITH CENTRED DOT
+27D1;AL # AND WITH DOT
+27D2;AL # ELEMENT OF OPENING UPWARDS
+27D3;AL # LOWER RIGHT CORNER WITH DOT
+27D4;AL # UPPER LEFT CORNER WITH DOT
+27D5;AL # LEFT OUTER JOIN
+27D6;AL # RIGHT OUTER JOIN
+27D7;AL # FULL OUTER JOIN
+27D8;AL # LARGE UP TACK
+27D9;AL # LARGE DOWN TACK
+27DA;AL # LEFT AND RIGHT DOUBLE TURNSTILE
+27DB;AL # LEFT AND RIGHT TACK
+27DC;AL # LEFT MULTIMAP
+27DD;AL # LONG RIGHT TACK
+27DE;AL # LONG LEFT TACK
+27DF;AL # UP TACK WITH CIRCLE ABOVE
+27E0;AL # LOZENGE DIVIDED BY HORIZONTAL RULE
+27E1;AL # WHITE CONCAVE-SIDED DIAMOND
+27E2;AL # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+27E3;AL # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+27E4;AL # WHITE SQUARE WITH LEFTWARDS TICK
+27E5;AL # WHITE SQUARE WITH RIGHTWARDS TICK
+27E6;OP # MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7;CL # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8;OP # MATHEMATICAL LEFT ANGLE BRACKET
+27E9;CL # MATHEMATICAL RIGHT ANGLE BRACKET
+27EA;OP # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB;CL # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27F0;AL # UPWARDS QUADRUPLE ARROW
+27F1;AL # DOWNWARDS QUADRUPLE ARROW
+27F2;AL # ANTICLOCKWISE GAPPED CIRCLE ARROW
+27F3;AL # CLOCKWISE GAPPED CIRCLE ARROW
+27F4;AL # RIGHT ARROW WITH CIRCLED PLUS
+27F5;AL # LONG LEFTWARDS ARROW
+27F6;AL # LONG RIGHTWARDS ARROW
+27F7;AL # LONG LEFT RIGHT ARROW
+27F8;AL # LONG LEFTWARDS DOUBLE ARROW
+27F9;AL # LONG RIGHTWARDS DOUBLE ARROW
+27FA;AL # LONG LEFT RIGHT DOUBLE ARROW
+27FB;AL # LONG LEFTWARDS ARROW FROM BAR
+27FC;AL # LONG RIGHTWARDS ARROW FROM BAR
+27FD;AL # LONG LEFTWARDS DOUBLE ARROW FROM BAR
+27FE;AL # LONG RIGHTWARDS DOUBLE ARROW FROM BAR
+27FF;AL # LONG RIGHTWARDS SQUIGGLE ARROW
+2800;AL # BRAILLE PATTERN BLANK
+2801;AL # BRAILLE PATTERN DOTS-1
+2802;AL # BRAILLE PATTERN DOTS-2
+2803;AL # BRAILLE PATTERN DOTS-12
+2804;AL # BRAILLE PATTERN DOTS-3
+2805;AL # BRAILLE PATTERN DOTS-13
+2806;AL # BRAILLE PATTERN DOTS-23
+2807;AL # BRAILLE PATTERN DOTS-123
+2808;AL # BRAILLE PATTERN DOTS-4
+2809;AL # BRAILLE PATTERN DOTS-14
+280A;AL # BRAILLE PATTERN DOTS-24
+280B;AL # BRAILLE PATTERN DOTS-124
+280C;AL # BRAILLE PATTERN DOTS-34
+280D;AL # BRAILLE PATTERN DOTS-134
+280E;AL # BRAILLE PATTERN DOTS-234
+280F;AL # BRAILLE PATTERN DOTS-1234
+2810;AL # BRAILLE PATTERN DOTS-5
+2811;AL # BRAILLE PATTERN DOTS-15
+2812;AL # BRAILLE PATTERN DOTS-25
+2813;AL # BRAILLE PATTERN DOTS-125
+2814;AL # BRAILLE PATTERN DOTS-35
+2815;AL # BRAILLE PATTERN DOTS-135
+2816;AL # BRAILLE PATTERN DOTS-235
+2817;AL # BRAILLE PATTERN DOTS-1235
+2818;AL # BRAILLE PATTERN DOTS-45
+2819;AL # BRAILLE PATTERN DOTS-145
+281A;AL # BRAILLE PATTERN DOTS-245
+281B;AL # BRAILLE PATTERN DOTS-1245
+281C;AL # BRAILLE PATTERN DOTS-345
+281D;AL # BRAILLE PATTERN DOTS-1345
+281E;AL # BRAILLE PATTERN DOTS-2345
+281F;AL # BRAILLE PATTERN DOTS-12345
+2820;AL # BRAILLE PATTERN DOTS-6
+2821;AL # BRAILLE PATTERN DOTS-16
+2822;AL # BRAILLE PATTERN DOTS-26
+2823;AL # BRAILLE PATTERN DOTS-126
+2824;AL # BRAILLE PATTERN DOTS-36
+2825;AL # BRAILLE PATTERN DOTS-136
+2826;AL # BRAILLE PATTERN DOTS-236
+2827;AL # BRAILLE PATTERN DOTS-1236
+2828;AL # BRAILLE PATTERN DOTS-46
+2829;AL # BRAILLE PATTERN DOTS-146
+282A;AL # BRAILLE PATTERN DOTS-246
+282B;AL # BRAILLE PATTERN DOTS-1246
+282C;AL # BRAILLE PATTERN DOTS-346
+282D;AL # BRAILLE PATTERN DOTS-1346
+282E;AL # BRAILLE PATTERN DOTS-2346
+282F;AL # BRAILLE PATTERN DOTS-12346
+2830;AL # BRAILLE PATTERN DOTS-56
+2831;AL # BRAILLE PATTERN DOTS-156
+2832;AL # BRAILLE PATTERN DOTS-256
+2833;AL # BRAILLE PATTERN DOTS-1256
+2834;AL # BRAILLE PATTERN DOTS-356
+2835;AL # BRAILLE PATTERN DOTS-1356
+2836;AL # BRAILLE PATTERN DOTS-2356
+2837;AL # BRAILLE PATTERN DOTS-12356
+2838;AL # BRAILLE PATTERN DOTS-456
+2839;AL # BRAILLE PATTERN DOTS-1456
+283A;AL # BRAILLE PATTERN DOTS-2456
+283B;AL # BRAILLE PATTERN DOTS-12456
+283C;AL # BRAILLE PATTERN DOTS-3456
+283D;AL # BRAILLE PATTERN DOTS-13456
+283E;AL # BRAILLE PATTERN DOTS-23456
+283F;AL # BRAILLE PATTERN DOTS-123456
+2840;AL # BRAILLE PATTERN DOTS-7
+2841;AL # BRAILLE PATTERN DOTS-17
+2842;AL # BRAILLE PATTERN DOTS-27
+2843;AL # BRAILLE PATTERN DOTS-127
+2844;AL # BRAILLE PATTERN DOTS-37
+2845;AL # BRAILLE PATTERN DOTS-137
+2846;AL # BRAILLE PATTERN DOTS-237
+2847;AL # BRAILLE PATTERN DOTS-1237
+2848;AL # BRAILLE PATTERN DOTS-47
+2849;AL # BRAILLE PATTERN DOTS-147
+284A;AL # BRAILLE PATTERN DOTS-247
+284B;AL # BRAILLE PATTERN DOTS-1247
+284C;AL # BRAILLE PATTERN DOTS-347
+284D;AL # BRAILLE PATTERN DOTS-1347
+284E;AL # BRAILLE PATTERN DOTS-2347
+284F;AL # BRAILLE PATTERN DOTS-12347
+2850;AL # BRAILLE PATTERN DOTS-57
+2851;AL # BRAILLE PATTERN DOTS-157
+2852;AL # BRAILLE PATTERN DOTS-257
+2853;AL # BRAILLE PATTERN DOTS-1257
+2854;AL # BRAILLE PATTERN DOTS-357
+2855;AL # BRAILLE PATTERN DOTS-1357
+2856;AL # BRAILLE PATTERN DOTS-2357
+2857;AL # BRAILLE PATTERN DOTS-12357
+2858;AL # BRAILLE PATTERN DOTS-457
+2859;AL # BRAILLE PATTERN DOTS-1457
+285A;AL # BRAILLE PATTERN DOTS-2457
+285B;AL # BRAILLE PATTERN DOTS-12457
+285C;AL # BRAILLE PATTERN DOTS-3457
+285D;AL # BRAILLE PATTERN DOTS-13457
+285E;AL # BRAILLE PATTERN DOTS-23457
+285F;AL # BRAILLE PATTERN DOTS-123457
+2860;AL # BRAILLE PATTERN DOTS-67
+2861;AL # BRAILLE PATTERN DOTS-167
+2862;AL # BRAILLE PATTERN DOTS-267
+2863;AL # BRAILLE PATTERN DOTS-1267
+2864;AL # BRAILLE PATTERN DOTS-367
+2865;AL # BRAILLE PATTERN DOTS-1367
+2866;AL # BRAILLE PATTERN DOTS-2367
+2867;AL # BRAILLE PATTERN DOTS-12367
+2868;AL # BRAILLE PATTERN DOTS-467
+2869;AL # BRAILLE PATTERN DOTS-1467
+286A;AL # BRAILLE PATTERN DOTS-2467
+286B;AL # BRAILLE PATTERN DOTS-12467
+286C;AL # BRAILLE PATTERN DOTS-3467
+286D;AL # BRAILLE PATTERN DOTS-13467
+286E;AL # BRAILLE PATTERN DOTS-23467
+286F;AL # BRAILLE PATTERN DOTS-123467
+2870;AL # BRAILLE PATTERN DOTS-567
+2871;AL # BRAILLE PATTERN DOTS-1567
+2872;AL # BRAILLE PATTERN DOTS-2567
+2873;AL # BRAILLE PATTERN DOTS-12567
+2874;AL # BRAILLE PATTERN DOTS-3567
+2875;AL # BRAILLE PATTERN DOTS-13567
+2876;AL # BRAILLE PATTERN DOTS-23567
+2877;AL # BRAILLE PATTERN DOTS-123567
+2878;AL # BRAILLE PATTERN DOTS-4567
+2879;AL # BRAILLE PATTERN DOTS-14567
+287A;AL # BRAILLE PATTERN DOTS-24567
+287B;AL # BRAILLE PATTERN DOTS-124567
+287C;AL # BRAILLE PATTERN DOTS-34567
+287D;AL # BRAILLE PATTERN DOTS-134567
+287E;AL # BRAILLE PATTERN DOTS-234567
+287F;AL # BRAILLE PATTERN DOTS-1234567
+2880;AL # BRAILLE PATTERN DOTS-8
+2881;AL # BRAILLE PATTERN DOTS-18
+2882;AL # BRAILLE PATTERN DOTS-28
+2883;AL # BRAILLE PATTERN DOTS-128
+2884;AL # BRAILLE PATTERN DOTS-38
+2885;AL # BRAILLE PATTERN DOTS-138
+2886;AL # BRAILLE PATTERN DOTS-238
+2887;AL # BRAILLE PATTERN DOTS-1238
+2888;AL # BRAILLE PATTERN DOTS-48
+2889;AL # BRAILLE PATTERN DOTS-148
+288A;AL # BRAILLE PATTERN DOTS-248
+288B;AL # BRAILLE PATTERN DOTS-1248
+288C;AL # BRAILLE PATTERN DOTS-348
+288D;AL # BRAILLE PATTERN DOTS-1348
+288E;AL # BRAILLE PATTERN DOTS-2348
+288F;AL # BRAILLE PATTERN DOTS-12348
+2890;AL # BRAILLE PATTERN DOTS-58
+2891;AL # BRAILLE PATTERN DOTS-158
+2892;AL # BRAILLE PATTERN DOTS-258
+2893;AL # BRAILLE PATTERN DOTS-1258
+2894;AL # BRAILLE PATTERN DOTS-358
+2895;AL # BRAILLE PATTERN DOTS-1358
+2896;AL # BRAILLE PATTERN DOTS-2358
+2897;AL # BRAILLE PATTERN DOTS-12358
+2898;AL # BRAILLE PATTERN DOTS-458
+2899;AL # BRAILLE PATTERN DOTS-1458
+289A;AL # BRAILLE PATTERN DOTS-2458
+289B;AL # BRAILLE PATTERN DOTS-12458
+289C;AL # BRAILLE PATTERN DOTS-3458
+289D;AL # BRAILLE PATTERN DOTS-13458
+289E;AL # BRAILLE PATTERN DOTS-23458
+289F;AL # BRAILLE PATTERN DOTS-123458
+28A0;AL # BRAILLE PATTERN DOTS-68
+28A1;AL # BRAILLE PATTERN DOTS-168
+28A2;AL # BRAILLE PATTERN DOTS-268
+28A3;AL # BRAILLE PATTERN DOTS-1268
+28A4;AL # BRAILLE PATTERN DOTS-368
+28A5;AL # BRAILLE PATTERN DOTS-1368
+28A6;AL # BRAILLE PATTERN DOTS-2368
+28A7;AL # BRAILLE PATTERN DOTS-12368
+28A8;AL # BRAILLE PATTERN DOTS-468
+28A9;AL # BRAILLE PATTERN DOTS-1468
+28AA;AL # BRAILLE PATTERN DOTS-2468
+28AB;AL # BRAILLE PATTERN DOTS-12468
+28AC;AL # BRAILLE PATTERN DOTS-3468
+28AD;AL # BRAILLE PATTERN DOTS-13468
+28AE;AL # BRAILLE PATTERN DOTS-23468
+28AF;AL # BRAILLE PATTERN DOTS-123468
+28B0;AL # BRAILLE PATTERN DOTS-568
+28B1;AL # BRAILLE PATTERN DOTS-1568
+28B2;AL # BRAILLE PATTERN DOTS-2568
+28B3;AL # BRAILLE PATTERN DOTS-12568
+28B4;AL # BRAILLE PATTERN DOTS-3568
+28B5;AL # BRAILLE PATTERN DOTS-13568
+28B6;AL # BRAILLE PATTERN DOTS-23568
+28B7;AL # BRAILLE PATTERN DOTS-123568
+28B8;AL # BRAILLE PATTERN DOTS-4568
+28B9;AL # BRAILLE PATTERN DOTS-14568
+28BA;AL # BRAILLE PATTERN DOTS-24568
+28BB;AL # BRAILLE PATTERN DOTS-124568
+28BC;AL # BRAILLE PATTERN DOTS-34568
+28BD;AL # BRAILLE PATTERN DOTS-134568
+28BE;AL # BRAILLE PATTERN DOTS-234568
+28BF;AL # BRAILLE PATTERN DOTS-1234568
+28C0;AL # BRAILLE PATTERN DOTS-78
+28C1;AL # BRAILLE PATTERN DOTS-178
+28C2;AL # BRAILLE PATTERN DOTS-278
+28C3;AL # BRAILLE PATTERN DOTS-1278
+28C4;AL # BRAILLE PATTERN DOTS-378
+28C5;AL # BRAILLE PATTERN DOTS-1378
+28C6;AL # BRAILLE PATTERN DOTS-2378
+28C7;AL # BRAILLE PATTERN DOTS-12378
+28C8;AL # BRAILLE PATTERN DOTS-478
+28C9;AL # BRAILLE PATTERN DOTS-1478
+28CA;AL # BRAILLE PATTERN DOTS-2478
+28CB;AL # BRAILLE PATTERN DOTS-12478
+28CC;AL # BRAILLE PATTERN DOTS-3478
+28CD;AL # BRAILLE PATTERN DOTS-13478
+28CE;AL # BRAILLE PATTERN DOTS-23478
+28CF;AL # BRAILLE PATTERN DOTS-123478
+28D0;AL # BRAILLE PATTERN DOTS-578
+28D1;AL # BRAILLE PATTERN DOTS-1578
+28D2;AL # BRAILLE PATTERN DOTS-2578
+28D3;AL # BRAILLE PATTERN DOTS-12578
+28D4;AL # BRAILLE PATTERN DOTS-3578
+28D5;AL # BRAILLE PATTERN DOTS-13578
+28D6;AL # BRAILLE PATTERN DOTS-23578
+28D7;AL # BRAILLE PATTERN DOTS-123578
+28D8;AL # BRAILLE PATTERN DOTS-4578
+28D9;AL # BRAILLE PATTERN DOTS-14578
+28DA;AL # BRAILLE PATTERN DOTS-24578
+28DB;AL # BRAILLE PATTERN DOTS-124578
+28DC;AL # BRAILLE PATTERN DOTS-34578
+28DD;AL # BRAILLE PATTERN DOTS-134578
+28DE;AL # BRAILLE PATTERN DOTS-234578
+28DF;AL # BRAILLE PATTERN DOTS-1234578
+28E0;AL # BRAILLE PATTERN DOTS-678
+28E1;AL # BRAILLE PATTERN DOTS-1678
+28E2;AL # BRAILLE PATTERN DOTS-2678
+28E3;AL # BRAILLE PATTERN DOTS-12678
+28E4;AL # BRAILLE PATTERN DOTS-3678
+28E5;AL # BRAILLE PATTERN DOTS-13678
+28E6;AL # BRAILLE PATTERN DOTS-23678
+28E7;AL # BRAILLE PATTERN DOTS-123678
+28E8;AL # BRAILLE PATTERN DOTS-4678
+28E9;AL # BRAILLE PATTERN DOTS-14678
+28EA;AL # BRAILLE PATTERN DOTS-24678
+28EB;AL # BRAILLE PATTERN DOTS-124678
+28EC;AL # BRAILLE PATTERN DOTS-34678
+28ED;AL # BRAILLE PATTERN DOTS-134678
+28EE;AL # BRAILLE PATTERN DOTS-234678
+28EF;AL # BRAILLE PATTERN DOTS-1234678
+28F0;AL # BRAILLE PATTERN DOTS-5678
+28F1;AL # BRAILLE PATTERN DOTS-15678
+28F2;AL # BRAILLE PATTERN DOTS-25678
+28F3;AL # BRAILLE PATTERN DOTS-125678
+28F4;AL # BRAILLE PATTERN DOTS-35678
+28F5;AL # BRAILLE PATTERN DOTS-135678
+28F6;AL # BRAILLE PATTERN DOTS-235678
+28F7;AL # BRAILLE PATTERN DOTS-1235678
+28F8;AL # BRAILLE PATTERN DOTS-45678
+28F9;AL # BRAILLE PATTERN DOTS-145678
+28FA;AL # BRAILLE PATTERN DOTS-245678
+28FB;AL # BRAILLE PATTERN DOTS-1245678
+28FC;AL # BRAILLE PATTERN DOTS-345678
+28FD;AL # BRAILLE PATTERN DOTS-1345678
+28FE;AL # BRAILLE PATTERN DOTS-2345678
+28FF;AL # BRAILLE PATTERN DOTS-12345678
+2900;AL # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+2901;AL # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+2902;AL # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2903;AL # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2904;AL # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
+2905;AL # RIGHTWARDS TWO-HEADED ARROW FROM BAR
+2906;AL # LEFTWARDS DOUBLE ARROW FROM BAR
+2907;AL # RIGHTWARDS DOUBLE ARROW FROM BAR
+2908;AL # DOWNWARDS ARROW WITH HORIZONTAL STROKE
+2909;AL # UPWARDS ARROW WITH HORIZONTAL STROKE
+290A;AL # UPWARDS TRIPLE ARROW
+290B;AL # DOWNWARDS TRIPLE ARROW
+290C;AL # LEFTWARDS DOUBLE DASH ARROW
+290D;AL # RIGHTWARDS DOUBLE DASH ARROW
+290E;AL # LEFTWARDS TRIPLE DASH ARROW
+290F;AL # RIGHTWARDS TRIPLE DASH ARROW
+2910;AL # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
+2911;AL # RIGHTWARDS ARROW WITH DOTTED STEM
+2912;AL # UPWARDS ARROW TO BAR
+2913;AL # DOWNWARDS ARROW TO BAR
+2914;AL # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+2915;AL # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2916;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL
+2917;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+2918;AL # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2919;AL # LEFTWARDS ARROW-TAIL
+291A;AL # RIGHTWARDS ARROW-TAIL
+291B;AL # LEFTWARDS DOUBLE ARROW-TAIL
+291C;AL # RIGHTWARDS DOUBLE ARROW-TAIL
+291D;AL # LEFTWARDS ARROW TO BLACK DIAMOND
+291E;AL # RIGHTWARDS ARROW TO BLACK DIAMOND
+291F;AL # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2920;AL # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2921;AL # NORTH WEST AND SOUTH EAST ARROW
+2922;AL # NORTH EAST AND SOUTH WEST ARROW
+2923;AL # NORTH WEST ARROW WITH HOOK
+2924;AL # NORTH EAST ARROW WITH HOOK
+2925;AL # SOUTH EAST ARROW WITH HOOK
+2926;AL # SOUTH WEST ARROW WITH HOOK
+2927;AL # NORTH WEST ARROW AND NORTH EAST ARROW
+2928;AL # NORTH EAST ARROW AND SOUTH EAST ARROW
+2929;AL # SOUTH EAST ARROW AND SOUTH WEST ARROW
+292A;AL # SOUTH WEST ARROW AND NORTH WEST ARROW
+292B;AL # RISING DIAGONAL CROSSING FALLING DIAGONAL
+292C;AL # FALLING DIAGONAL CROSSING RISING DIAGONAL
+292D;AL # SOUTH EAST ARROW CROSSING NORTH EAST ARROW
+292E;AL # NORTH EAST ARROW CROSSING SOUTH EAST ARROW
+292F;AL # FALLING DIAGONAL CROSSING NORTH EAST ARROW
+2930;AL # RISING DIAGONAL CROSSING SOUTH EAST ARROW
+2931;AL # NORTH EAST ARROW CROSSING NORTH WEST ARROW
+2932;AL # NORTH WEST ARROW CROSSING NORTH EAST ARROW
+2933;AL # WAVE ARROW POINTING DIRECTLY RIGHT
+2934;AL # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
+2935;AL # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
+2936;AL # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
+2937;AL # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
+2938;AL # RIGHT-SIDE ARC CLOCKWISE ARROW
+2939;AL # LEFT-SIDE ARC ANTICLOCKWISE ARROW
+293A;AL # TOP ARC ANTICLOCKWISE ARROW
+293B;AL # BOTTOM ARC ANTICLOCKWISE ARROW
+293C;AL # TOP ARC CLOCKWISE ARROW WITH MINUS
+293D;AL # TOP ARC ANTICLOCKWISE ARROW WITH PLUS
+293E;AL # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
+293F;AL # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
+2940;AL # ANTICLOCKWISE CLOSED CIRCLE ARROW
+2941;AL # CLOCKWISE CLOSED CIRCLE ARROW
+2942;AL # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
+2943;AL # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
+2944;AL # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
+2945;AL # RIGHTWARDS ARROW WITH PLUS BELOW
+2946;AL # LEFTWARDS ARROW WITH PLUS BELOW
+2947;AL # RIGHTWARDS ARROW THROUGH X
+2948;AL # LEFT RIGHT ARROW THROUGH SMALL CIRCLE
+2949;AL # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
+294A;AL # LEFT BARB UP RIGHT BARB DOWN HARPOON
+294B;AL # LEFT BARB DOWN RIGHT BARB UP HARPOON
+294C;AL # UP BARB RIGHT DOWN BARB LEFT HARPOON
+294D;AL # UP BARB LEFT DOWN BARB RIGHT HARPOON
+294E;AL # LEFT BARB UP RIGHT BARB UP HARPOON
+294F;AL # UP BARB RIGHT DOWN BARB RIGHT HARPOON
+2950;AL # LEFT BARB DOWN RIGHT BARB DOWN HARPOON
+2951;AL # UP BARB LEFT DOWN BARB LEFT HARPOON
+2952;AL # LEFTWARDS HARPOON WITH BARB UP TO BAR
+2953;AL # RIGHTWARDS HARPOON WITH BARB UP TO BAR
+2954;AL # UPWARDS HARPOON WITH BARB RIGHT TO BAR
+2955;AL # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
+2956;AL # LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+2957;AL # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
+2958;AL # UPWARDS HARPOON WITH BARB LEFT TO BAR
+2959;AL # DOWNWARDS HARPOON WITH BARB LEFT TO BAR
+295A;AL # LEFTWARDS HARPOON WITH BARB UP FROM BAR
+295B;AL # RIGHTWARDS HARPOON WITH BARB UP FROM BAR
+295C;AL # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
+295D;AL # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
+295E;AL # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+295F;AL # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
+2960;AL # UPWARDS HARPOON WITH BARB LEFT FROM BAR
+2961;AL # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
+2962;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+2963;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2964;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2965;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+2966;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
+2967;AL # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2968;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
+2969;AL # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+296A;AL # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296B;AL # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296C;AL # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296D;AL # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296E;AL # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+296F;AL # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2970;AL # RIGHT DOUBLE ARROW WITH ROUNDED HEAD
+2971;AL # EQUALS SIGN ABOVE RIGHTWARDS ARROW
+2972;AL # TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+2973;AL # LEFTWARDS ARROW ABOVE TILDE OPERATOR
+2974;AL # RIGHTWARDS ARROW ABOVE TILDE OPERATOR
+2975;AL # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
+2976;AL # LESS-THAN ABOVE LEFTWARDS ARROW
+2977;AL # LEFTWARDS ARROW THROUGH LESS-THAN
+2978;AL # GREATER-THAN ABOVE RIGHTWARDS ARROW
+2979;AL # SUBSET ABOVE RIGHTWARDS ARROW
+297A;AL # LEFTWARDS ARROW THROUGH SUBSET
+297B;AL # SUPERSET ABOVE LEFTWARDS ARROW
+297C;AL # LEFT FISH TAIL
+297D;AL # RIGHT FISH TAIL
+297E;AL # UP FISH TAIL
+297F;AL # DOWN FISH TAIL
+2980;AL # TRIPLE VERTICAL BAR DELIMITER
+2981;AL # Z NOTATION SPOT
+2982;AL # Z NOTATION TYPE COLON
+2983;OP # LEFT WHITE CURLY BRACKET
+2984;CL # RIGHT WHITE CURLY BRACKET
+2985;OP # LEFT WHITE PARENTHESIS
+2986;CL # RIGHT WHITE PARENTHESIS
+2987;OP # Z NOTATION LEFT IMAGE BRACKET
+2988;CL # Z NOTATION RIGHT IMAGE BRACKET
+2989;OP # Z NOTATION LEFT BINDING BRACKET
+298A;CL # Z NOTATION RIGHT BINDING BRACKET
+298B;OP # LEFT SQUARE BRACKET WITH UNDERBAR
+298C;CL # RIGHT SQUARE BRACKET WITH UNDERBAR
+298D;OP # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E;CL # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F;OP # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990;CL # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991;OP # LEFT ANGLE BRACKET WITH DOT
+2992;CL # RIGHT ANGLE BRACKET WITH DOT
+2993;OP # LEFT ARC LESS-THAN BRACKET
+2994;CL # RIGHT ARC GREATER-THAN BRACKET
+2995;OP # DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996;CL # DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997;OP # LEFT BLACK TORTOISE SHELL BRACKET
+2998;CL # RIGHT BLACK TORTOISE SHELL BRACKET
+2999;AL # DOTTED FENCE
+299A;AL # VERTICAL ZIGZAG LINE
+299B;AL # MEASURED ANGLE OPENING LEFT
+299C;AL # RIGHT ANGLE VARIANT WITH SQUARE
+299D;AL # MEASURED RIGHT ANGLE WITH DOT
+299E;AL # ANGLE WITH S INSIDE
+299F;AL # ACUTE ANGLE
+29A0;AL # SPHERICAL ANGLE OPENING LEFT
+29A1;AL # SPHERICAL ANGLE OPENING UP
+29A2;AL # TURNED ANGLE
+29A3;AL # REVERSED ANGLE
+29A4;AL # ANGLE WITH UNDERBAR
+29A5;AL # REVERSED ANGLE WITH UNDERBAR
+29A6;AL # OBLIQUE ANGLE OPENING UP
+29A7;AL # OBLIQUE ANGLE OPENING DOWN
+29A8;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+29A9;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+29AA;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+29AB;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+29AC;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+29AD;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+29AE;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+29AF;AL # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+29B0;AL # REVERSED EMPTY SET
+29B1;AL # EMPTY SET WITH OVERBAR
+29B2;AL # EMPTY SET WITH SMALL CIRCLE ABOVE
+29B3;AL # EMPTY SET WITH RIGHT ARROW ABOVE
+29B4;AL # EMPTY SET WITH LEFT ARROW ABOVE
+29B5;AL # CIRCLE WITH HORIZONTAL BAR
+29B6;AL # CIRCLED VERTICAL BAR
+29B7;AL # CIRCLED PARALLEL
+29B8;AL # CIRCLED REVERSE SOLIDUS
+29B9;AL # CIRCLED PERPENDICULAR
+29BA;AL # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
+29BB;AL # CIRCLE WITH SUPERIMPOSED X
+29BC;AL # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
+29BD;AL # UP ARROW THROUGH CIRCLE
+29BE;AL # CIRCLED WHITE BULLET
+29BF;AL # CIRCLED BULLET
+29C0;AL # CIRCLED LESS-THAN
+29C1;AL # CIRCLED GREATER-THAN
+29C2;AL # CIRCLE WITH SMALL CIRCLE TO THE RIGHT
+29C3;AL # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
+29C4;AL # SQUARED RISING DIAGONAL SLASH
+29C5;AL # SQUARED FALLING DIAGONAL SLASH
+29C6;AL # SQUARED ASTERISK
+29C7;AL # SQUARED SMALL CIRCLE
+29C8;AL # SQUARED SQUARE
+29C9;AL # TWO JOINED SQUARES
+29CA;AL # TRIANGLE WITH DOT ABOVE
+29CB;AL # TRIANGLE WITH UNDERBAR
+29CC;AL # S IN TRIANGLE
+29CD;AL # TRIANGLE WITH SERIFS AT BOTTOM
+29CE;AL # RIGHT TRIANGLE ABOVE LEFT TRIANGLE
+29CF;AL # LEFT TRIANGLE BESIDE VERTICAL BAR
+29D0;AL # VERTICAL BAR BESIDE RIGHT TRIANGLE
+29D1;AL # BOWTIE WITH LEFT HALF BLACK
+29D2;AL # BOWTIE WITH RIGHT HALF BLACK
+29D3;AL # BLACK BOWTIE
+29D4;AL # TIMES WITH LEFT HALF BLACK
+29D5;AL # TIMES WITH RIGHT HALF BLACK
+29D6;AL # WHITE HOURGLASS
+29D7;AL # BLACK HOURGLASS
+29D8;OP # LEFT WIGGLY FENCE
+29D9;CL # RIGHT WIGGLY FENCE
+29DA;OP # LEFT DOUBLE WIGGLY FENCE
+29DB;CL # RIGHT DOUBLE WIGGLY FENCE
+29DC;AL # INCOMPLETE INFINITY
+29DD;AL # TIE OVER INFINITY
+29DE;AL # INFINITY NEGATED WITH VERTICAL BAR
+29DF;AL # DOUBLE-ENDED MULTIMAP
+29E0;AL # SQUARE WITH CONTOURED OUTLINE
+29E1;AL # INCREASES AS
+29E2;AL # SHUFFLE PRODUCT
+29E3;AL # EQUALS SIGN AND SLANTED PARALLEL
+29E4;AL # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+29E5;AL # IDENTICAL TO AND SLANTED PARALLEL
+29E6;AL # GLEICH STARK
+29E7;AL # THERMODYNAMIC
+29E8;AL # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
+29E9;AL # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
+29EA;AL # BLACK DIAMOND WITH DOWN ARROW
+29EB;AL # BLACK LOZENGE
+29EC;AL # WHITE CIRCLE WITH DOWN ARROW
+29ED;AL # BLACK CIRCLE WITH DOWN ARROW
+29EE;AL # ERROR-BARRED WHITE SQUARE
+29EF;AL # ERROR-BARRED BLACK SQUARE
+29F0;AL # ERROR-BARRED WHITE DIAMOND
+29F1;AL # ERROR-BARRED BLACK DIAMOND
+29F2;AL # ERROR-BARRED WHITE CIRCLE
+29F3;AL # ERROR-BARRED BLACK CIRCLE
+29F4;AL # RULE-DELAYED
+29F5;AL # REVERSE SOLIDUS OPERATOR
+29F6;AL # SOLIDUS WITH OVERBAR
+29F7;AL # REVERSE SOLIDUS WITH HORIZONTAL STROKE
+29F8;AL # BIG SOLIDUS
+29F9;AL # BIG REVERSE SOLIDUS
+29FA;AL # DOUBLE PLUS
+29FB;AL # TRIPLE PLUS
+29FC;OP # LEFT-POINTING CURVED ANGLE BRACKET
+29FD;CL # RIGHT-POINTING CURVED ANGLE BRACKET
+29FE;AL # TINY
+29FF;AL # MINY
+2A00;AL # N-ARY CIRCLED DOT OPERATOR
+2A01;AL # N-ARY CIRCLED PLUS OPERATOR
+2A02;AL # N-ARY CIRCLED TIMES OPERATOR
+2A03;AL # N-ARY UNION OPERATOR WITH DOT
+2A04;AL # N-ARY UNION OPERATOR WITH PLUS
+2A05;AL # N-ARY SQUARE INTERSECTION OPERATOR
+2A06;AL # N-ARY SQUARE UNION OPERATOR
+2A07;AL # TWO LOGICAL AND OPERATOR
+2A08;AL # TWO LOGICAL OR OPERATOR
+2A09;AL # N-ARY TIMES OPERATOR
+2A0A;AL # MODULO TWO SUM
+2A0B;AL # SUMMATION WITH INTEGRAL
+2A0C;AL # QUADRUPLE INTEGRAL OPERATOR
+2A0D;AL # FINITE PART INTEGRAL
+2A0E;AL # INTEGRAL WITH DOUBLE STROKE
+2A0F;AL # INTEGRAL AVERAGE WITH SLASH
+2A10;AL # CIRCULATION FUNCTION
+2A11;AL # ANTICLOCKWISE INTEGRATION
+2A12;AL # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+2A13;AL # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+2A14;AL # LINE INTEGRATION NOT INCLUDING THE POLE
+2A15;AL # INTEGRAL AROUND A POINT OPERATOR
+2A16;AL # QUATERNION INTEGRAL OPERATOR
+2A17;AL # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
+2A18;AL # INTEGRAL WITH TIMES SIGN
+2A19;AL # INTEGRAL WITH INTERSECTION
+2A1A;AL # INTEGRAL WITH UNION
+2A1B;AL # INTEGRAL WITH OVERBAR
+2A1C;AL # INTEGRAL WITH UNDERBAR
+2A1D;AL # JOIN
+2A1E;AL # LARGE LEFT TRIANGLE OPERATOR
+2A1F;AL # Z NOTATION SCHEMA COMPOSITION
+2A20;AL # Z NOTATION SCHEMA PIPING
+2A21;AL # Z NOTATION SCHEMA PROJECTION
+2A22;AL # PLUS SIGN WITH SMALL CIRCLE ABOVE
+2A23;AL # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
+2A24;AL # PLUS SIGN WITH TILDE ABOVE
+2A25;AL # PLUS SIGN WITH DOT BELOW
+2A26;AL # PLUS SIGN WITH TILDE BELOW
+2A27;AL # PLUS SIGN WITH SUBSCRIPT TWO
+2A28;AL # PLUS SIGN WITH BLACK TRIANGLE
+2A29;AL # MINUS SIGN WITH COMMA ABOVE
+2A2A;AL # MINUS SIGN WITH DOT BELOW
+2A2B;AL # MINUS SIGN WITH FALLING DOTS
+2A2C;AL # MINUS SIGN WITH RISING DOTS
+2A2D;AL # PLUS SIGN IN LEFT HALF CIRCLE
+2A2E;AL # PLUS SIGN IN RIGHT HALF CIRCLE
+2A2F;AL # VECTOR OR CROSS PRODUCT
+2A30;AL # MULTIPLICATION SIGN WITH DOT ABOVE
+2A31;AL # MULTIPLICATION SIGN WITH UNDERBAR
+2A32;AL # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
+2A33;AL # SMASH PRODUCT
+2A34;AL # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+2A35;AL # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+2A36;AL # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
+2A37;AL # MULTIPLICATION SIGN IN DOUBLE CIRCLE
+2A38;AL # CIRCLED DIVISION SIGN
+2A39;AL # PLUS SIGN IN TRIANGLE
+2A3A;AL # MINUS SIGN IN TRIANGLE
+2A3B;AL # MULTIPLICATION SIGN IN TRIANGLE
+2A3C;AL # INTERIOR PRODUCT
+2A3D;AL # RIGHTHAND INTERIOR PRODUCT
+2A3E;AL # Z NOTATION RELATIONAL COMPOSITION
+2A3F;AL # AMALGAMATION OR COPRODUCT
+2A40;AL # INTERSECTION WITH DOT
+2A41;AL # UNION WITH MINUS SIGN
+2A42;AL # UNION WITH OVERBAR
+2A43;AL # INTERSECTION WITH OVERBAR
+2A44;AL # INTERSECTION WITH LOGICAL AND
+2A45;AL # UNION WITH LOGICAL OR
+2A46;AL # UNION ABOVE INTERSECTION
+2A47;AL # INTERSECTION ABOVE UNION
+2A48;AL # UNION ABOVE BAR ABOVE INTERSECTION
+2A49;AL # INTERSECTION ABOVE BAR ABOVE UNION
+2A4A;AL # UNION BESIDE AND JOINED WITH UNION
+2A4B;AL # INTERSECTION BESIDE AND JOINED WITH INTERSECTION
+2A4C;AL # CLOSED UNION WITH SERIFS
+2A4D;AL # CLOSED INTERSECTION WITH SERIFS
+2A4E;AL # DOUBLE SQUARE INTERSECTION
+2A4F;AL # DOUBLE SQUARE UNION
+2A50;AL # CLOSED UNION WITH SERIFS AND SMASH PRODUCT
+2A51;AL # LOGICAL AND WITH DOT ABOVE
+2A52;AL # LOGICAL OR WITH DOT ABOVE
+2A53;AL # DOUBLE LOGICAL AND
+2A54;AL # DOUBLE LOGICAL OR
+2A55;AL # TWO INTERSECTING LOGICAL AND
+2A56;AL # TWO INTERSECTING LOGICAL OR
+2A57;AL # SLOPING LARGE OR
+2A58;AL # SLOPING LARGE AND
+2A59;AL # LOGICAL OR OVERLAPPING LOGICAL AND
+2A5A;AL # LOGICAL AND WITH MIDDLE STEM
+2A5B;AL # LOGICAL OR WITH MIDDLE STEM
+2A5C;AL # LOGICAL AND WITH HORIZONTAL DASH
+2A5D;AL # LOGICAL OR WITH HORIZONTAL DASH
+2A5E;AL # LOGICAL AND WITH DOUBLE OVERBAR
+2A5F;AL # LOGICAL AND WITH UNDERBAR
+2A60;AL # LOGICAL AND WITH DOUBLE UNDERBAR
+2A61;AL # SMALL VEE WITH UNDERBAR
+2A62;AL # LOGICAL OR WITH DOUBLE OVERBAR
+2A63;AL # LOGICAL OR WITH DOUBLE UNDERBAR
+2A64;AL # Z NOTATION DOMAIN ANTIRESTRICTION
+2A65;AL # Z NOTATION RANGE ANTIRESTRICTION
+2A66;AL # EQUALS SIGN WITH DOT BELOW
+2A67;AL # IDENTICAL WITH DOT ABOVE
+2A68;AL # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
+2A69;AL # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
+2A6A;AL # TILDE OPERATOR WITH DOT ABOVE
+2A6B;AL # TILDE OPERATOR WITH RISING DOTS
+2A6C;AL # SIMILAR MINUS SIMILAR
+2A6D;AL # CONGRUENT WITH DOT ABOVE
+2A6E;AL # EQUALS WITH ASTERISK
+2A6F;AL # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+2A70;AL # APPROXIMATELY EQUAL OR EQUAL TO
+2A71;AL # EQUALS SIGN ABOVE PLUS SIGN
+2A72;AL # PLUS SIGN ABOVE EQUALS SIGN
+2A73;AL # EQUALS SIGN ABOVE TILDE OPERATOR
+2A74;AL # DOUBLE COLON EQUAL
+2A75;AL # TWO CONSECUTIVE EQUALS SIGNS
+2A76;AL # THREE CONSECUTIVE EQUALS SIGNS
+2A77;AL # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
+2A78;AL # EQUIVALENT WITH FOUR DOTS ABOVE
+2A79;AL # LESS-THAN WITH CIRCLE INSIDE
+2A7A;AL # GREATER-THAN WITH CIRCLE INSIDE
+2A7B;AL # LESS-THAN WITH QUESTION MARK ABOVE
+2A7C;AL # GREATER-THAN WITH QUESTION MARK ABOVE
+2A7D;AL # LESS-THAN OR SLANTED EQUAL TO
+2A7E;AL # GREATER-THAN OR SLANTED EQUAL TO
+2A7F;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A80;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A81;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A82;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A83;AL # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+2A84;AL # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+2A85;AL # LESS-THAN OR APPROXIMATE
+2A86;AL # GREATER-THAN OR APPROXIMATE
+2A87;AL # LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+2A88;AL # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+2A89;AL # LESS-THAN AND NOT APPROXIMATE
+2A8A;AL # GREATER-THAN AND NOT APPROXIMATE
+2A8B;AL # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+2A8C;AL # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+2A8D;AL # LESS-THAN ABOVE SIMILAR OR EQUAL
+2A8E;AL # GREATER-THAN ABOVE SIMILAR OR EQUAL
+2A8F;AL # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+2A90;AL # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+2A91;AL # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+2A92;AL # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+2A93;AL # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+2A94;AL # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+2A95;AL # SLANTED EQUAL TO OR LESS-THAN
+2A96;AL # SLANTED EQUAL TO OR GREATER-THAN
+2A97;AL # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+2A98;AL # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+2A99;AL # DOUBLE-LINE EQUAL TO OR LESS-THAN
+2A9A;AL # DOUBLE-LINE EQUAL TO OR GREATER-THAN
+2A9B;AL # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+2A9C;AL # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+2A9D;AL # SIMILAR OR LESS-THAN
+2A9E;AL # SIMILAR OR GREATER-THAN
+2A9F;AL # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+2AA0;AL # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+2AA1;AL # DOUBLE NESTED LESS-THAN
+2AA2;AL # DOUBLE NESTED GREATER-THAN
+2AA3;AL # DOUBLE NESTED LESS-THAN WITH UNDERBAR
+2AA4;AL # GREATER-THAN OVERLAPPING LESS-THAN
+2AA5;AL # GREATER-THAN BESIDE LESS-THAN
+2AA6;AL # LESS-THAN CLOSED BY CURVE
+2AA7;AL # GREATER-THAN CLOSED BY CURVE
+2AA8;AL # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AA9;AL # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AAA;AL # SMALLER THAN
+2AAB;AL # LARGER THAN
+2AAC;AL # SMALLER THAN OR EQUAL TO
+2AAD;AL # LARGER THAN OR EQUAL TO
+2AAE;AL # EQUALS SIGN WITH BUMPY ABOVE
+2AAF;AL # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+2AB0;AL # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+2AB1;AL # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+2AB2;AL # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+2AB3;AL # PRECEDES ABOVE EQUALS SIGN
+2AB4;AL # SUCCEEDS ABOVE EQUALS SIGN
+2AB5;AL # PRECEDES ABOVE NOT EQUAL TO
+2AB6;AL # SUCCEEDS ABOVE NOT EQUAL TO
+2AB7;AL # PRECEDES ABOVE ALMOST EQUAL TO
+2AB8;AL # SUCCEEDS ABOVE ALMOST EQUAL TO
+2AB9;AL # PRECEDES ABOVE NOT ALMOST EQUAL TO
+2ABA;AL # SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+2ABB;AL # DOUBLE PRECEDES
+2ABC;AL # DOUBLE SUCCEEDS
+2ABD;AL # SUBSET WITH DOT
+2ABE;AL # SUPERSET WITH DOT
+2ABF;AL # SUBSET WITH PLUS SIGN BELOW
+2AC0;AL # SUPERSET WITH PLUS SIGN BELOW
+2AC1;AL # SUBSET WITH MULTIPLICATION SIGN BELOW
+2AC2;AL # SUPERSET WITH MULTIPLICATION SIGN BELOW
+2AC3;AL # SUBSET OF OR EQUAL TO WITH DOT ABOVE
+2AC4;AL # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+2AC5;AL # SUBSET OF ABOVE EQUALS SIGN
+2AC6;AL # SUPERSET OF ABOVE EQUALS SIGN
+2AC7;AL # SUBSET OF ABOVE TILDE OPERATOR
+2AC8;AL # SUPERSET OF ABOVE TILDE OPERATOR
+2AC9;AL # SUBSET OF ABOVE ALMOST EQUAL TO
+2ACA;AL # SUPERSET OF ABOVE ALMOST EQUAL TO
+2ACB;AL # SUBSET OF ABOVE NOT EQUAL TO
+2ACC;AL # SUPERSET OF ABOVE NOT EQUAL TO
+2ACD;AL # SQUARE LEFT OPEN BOX OPERATOR
+2ACE;AL # SQUARE RIGHT OPEN BOX OPERATOR
+2ACF;AL # CLOSED SUBSET
+2AD0;AL # CLOSED SUPERSET
+2AD1;AL # CLOSED SUBSET OR EQUAL TO
+2AD2;AL # CLOSED SUPERSET OR EQUAL TO
+2AD3;AL # SUBSET ABOVE SUPERSET
+2AD4;AL # SUPERSET ABOVE SUBSET
+2AD5;AL # SUBSET ABOVE SUBSET
+2AD6;AL # SUPERSET ABOVE SUPERSET
+2AD7;AL # SUPERSET BESIDE SUBSET
+2AD8;AL # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
+2AD9;AL # ELEMENT OF OPENING DOWNWARDS
+2ADA;AL # PITCHFORK WITH TEE TOP
+2ADB;AL # TRANSVERSAL INTERSECTION
+2ADC;AL # FORKING
+2ADD;AL # NONFORKING
+2ADE;AL # SHORT LEFT TACK
+2ADF;AL # SHORT DOWN TACK
+2AE0;AL # SHORT UP TACK
+2AE1;AL # PERPENDICULAR WITH S
+2AE2;AL # VERTICAL BAR TRIPLE RIGHT TURNSTILE
+2AE3;AL # DOUBLE VERTICAL BAR LEFT TURNSTILE
+2AE4;AL # VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE5;AL # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE6;AL # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
+2AE7;AL # SHORT DOWN TACK WITH OVERBAR
+2AE8;AL # SHORT UP TACK WITH UNDERBAR
+2AE9;AL # SHORT UP TACK ABOVE SHORT DOWN TACK
+2AEA;AL # DOUBLE DOWN TACK
+2AEB;AL # DOUBLE UP TACK
+2AEC;AL # DOUBLE STROKE NOT SIGN
+2AED;AL # REVERSED DOUBLE STROKE NOT SIGN
+2AEE;AL # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
+2AEF;AL # VERTICAL LINE WITH CIRCLE ABOVE
+2AF0;AL # VERTICAL LINE WITH CIRCLE BELOW
+2AF1;AL # DOWN TACK WITH CIRCLE BELOW
+2AF2;AL # PARALLEL WITH HORIZONTAL STROKE
+2AF3;AL # PARALLEL WITH TILDE OPERATOR
+2AF4;AL # TRIPLE VERTICAL BAR BINARY RELATION
+2AF5;AL # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
+2AF6;AL # TRIPLE COLON OPERATOR
+2AF7;AL # TRIPLE NESTED LESS-THAN
+2AF8;AL # TRIPLE NESTED GREATER-THAN
+2AF9;AL # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+2AFA;AL # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+2AFB;AL # TRIPLE SOLIDUS BINARY RELATION
+2AFC;AL # LARGE TRIPLE VERTICAL BAR OPERATOR
+2AFD;AL # DOUBLE SOLIDUS OPERATOR
+2AFE;AL # WHITE VERTICAL BAR
+2AFF;AL # N-ARY WHITE VERTICAL BAR
+2B00;AL # NORTH EAST WHITE ARROW
+2B01;AL # NORTH WEST WHITE ARROW
+2B02;AL # SOUTH EAST WHITE ARROW
+2B03;AL # SOUTH WEST WHITE ARROW
+2B04;AL # LEFT RIGHT WHITE ARROW
+2B05;AL # LEFTWARDS BLACK ARROW
+2B06;AL # UPWARDS BLACK ARROW
+2B07;AL # DOWNWARDS BLACK ARROW
+2B08;AL # NORTH EAST BLACK ARROW
+2B09;AL # NORTH WEST BLACK ARROW
+2B0A;AL # SOUTH EAST BLACK ARROW
+2B0B;AL # SOUTH WEST BLACK ARROW
+2B0C;AL # LEFT RIGHT BLACK ARROW
+2B0D;AL # UP DOWN BLACK ARROW
+2B0E;AL # RIGHTWARDS ARROW WITH TIP DOWNWARDS
+2B0F;AL # RIGHTWARDS ARROW WITH TIP UPWARDS
+2B10;AL # LEFTWARDS ARROW WITH TIP DOWNWARDS
+2B11;AL # LEFTWARDS ARROW WITH TIP UPWARDS
+2B12;AL # SQUARE WITH TOP HALF BLACK
+2B13;AL # SQUARE WITH BOTTOM HALF BLACK
+2B14;AL # SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK
+2B15;AL # SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK
+2B16;AL # DIAMOND WITH LEFT HALF BLACK
+2B17;AL # DIAMOND WITH RIGHT HALF BLACK
+2B18;AL # DIAMOND WITH TOP HALF BLACK
+2B19;AL # DIAMOND WITH BOTTOM HALF BLACK
+2B1A;AL # DOTTED SQUARE
+2B20;AL # WHITE PENTAGON
+2B21;AL # WHITE HEXAGON
+2B22;AL # BLACK HEXAGON
+2B23;AL # HORIZONTAL BLACK HEXAGON
+2C00;AL # GLAGOLITIC CAPITAL LETTER AZU
+2C01;AL # GLAGOLITIC CAPITAL LETTER BUKY
+2C02;AL # GLAGOLITIC CAPITAL LETTER VEDE
+2C03;AL # GLAGOLITIC CAPITAL LETTER GLAGOLI
+2C04;AL # GLAGOLITIC CAPITAL LETTER DOBRO
+2C05;AL # GLAGOLITIC CAPITAL LETTER YESTU
+2C06;AL # GLAGOLITIC CAPITAL LETTER ZHIVETE
+2C07;AL # GLAGOLITIC CAPITAL LETTER DZELO
+2C08;AL # GLAGOLITIC CAPITAL LETTER ZEMLJA
+2C09;AL # GLAGOLITIC CAPITAL LETTER IZHE
+2C0A;AL # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+2C0B;AL # GLAGOLITIC CAPITAL LETTER I
+2C0C;AL # GLAGOLITIC CAPITAL LETTER DJERVI
+2C0D;AL # GLAGOLITIC CAPITAL LETTER KAKO
+2C0E;AL # GLAGOLITIC CAPITAL LETTER LJUDIJE
+2C0F;AL # GLAGOLITIC CAPITAL LETTER MYSLITE
+2C10;AL # GLAGOLITIC CAPITAL LETTER NASHI
+2C11;AL # GLAGOLITIC CAPITAL LETTER ONU
+2C12;AL # GLAGOLITIC CAPITAL LETTER POKOJI
+2C13;AL # GLAGOLITIC CAPITAL LETTER RITSI
+2C14;AL # GLAGOLITIC CAPITAL LETTER SLOVO
+2C15;AL # GLAGOLITIC CAPITAL LETTER TVRIDO
+2C16;AL # GLAGOLITIC CAPITAL LETTER UKU
+2C17;AL # GLAGOLITIC CAPITAL LETTER FRITU
+2C18;AL # GLAGOLITIC CAPITAL LETTER HERU
+2C19;AL # GLAGOLITIC CAPITAL LETTER OTU
+2C1A;AL # GLAGOLITIC CAPITAL LETTER PE
+2C1B;AL # GLAGOLITIC CAPITAL LETTER SHTA
+2C1C;AL # GLAGOLITIC CAPITAL LETTER TSI
+2C1D;AL # GLAGOLITIC CAPITAL LETTER CHRIVI
+2C1E;AL # GLAGOLITIC CAPITAL LETTER SHA
+2C1F;AL # GLAGOLITIC CAPITAL LETTER YERU
+2C20;AL # GLAGOLITIC CAPITAL LETTER YERI
+2C21;AL # GLAGOLITIC CAPITAL LETTER YATI
+2C22;AL # GLAGOLITIC CAPITAL LETTER SPIDERY HA
+2C23;AL # GLAGOLITIC CAPITAL LETTER YU
+2C24;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS
+2C25;AL # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+2C26;AL # GLAGOLITIC CAPITAL LETTER YO
+2C27;AL # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+2C28;AL # GLAGOLITIC CAPITAL LETTER BIG YUS
+2C29;AL # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+2C2A;AL # GLAGOLITIC CAPITAL LETTER FITA
+2C2B;AL # GLAGOLITIC CAPITAL LETTER IZHITSA
+2C2C;AL # GLAGOLITIC CAPITAL LETTER SHTAPIC
+2C2D;AL # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+2C2E;AL # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C30;AL # GLAGOLITIC SMALL LETTER AZU
+2C31;AL # GLAGOLITIC SMALL LETTER BUKY
+2C32;AL # GLAGOLITIC SMALL LETTER VEDE
+2C33;AL # GLAGOLITIC SMALL LETTER GLAGOLI
+2C34;AL # GLAGOLITIC SMALL LETTER DOBRO
+2C35;AL # GLAGOLITIC SMALL LETTER YESTU
+2C36;AL # GLAGOLITIC SMALL LETTER ZHIVETE
+2C37;AL # GLAGOLITIC SMALL LETTER DZELO
+2C38;AL # GLAGOLITIC SMALL LETTER ZEMLJA
+2C39;AL # GLAGOLITIC SMALL LETTER IZHE
+2C3A;AL # GLAGOLITIC SMALL LETTER INITIAL IZHE
+2C3B;AL # GLAGOLITIC SMALL LETTER I
+2C3C;AL # GLAGOLITIC SMALL LETTER DJERVI
+2C3D;AL # GLAGOLITIC SMALL LETTER KAKO
+2C3E;AL # GLAGOLITIC SMALL LETTER LJUDIJE
+2C3F;AL # GLAGOLITIC SMALL LETTER MYSLITE
+2C40;AL # GLAGOLITIC SMALL LETTER NASHI
+2C41;AL # GLAGOLITIC SMALL LETTER ONU
+2C42;AL # GLAGOLITIC SMALL LETTER POKOJI
+2C43;AL # GLAGOLITIC SMALL LETTER RITSI
+2C44;AL # GLAGOLITIC SMALL LETTER SLOVO
+2C45;AL # GLAGOLITIC SMALL LETTER TVRIDO
+2C46;AL # GLAGOLITIC SMALL LETTER UKU
+2C47;AL # GLAGOLITIC SMALL LETTER FRITU
+2C48;AL # GLAGOLITIC SMALL LETTER HERU
+2C49;AL # GLAGOLITIC SMALL LETTER OTU
+2C4A;AL # GLAGOLITIC SMALL LETTER PE
+2C4B;AL # GLAGOLITIC SMALL LETTER SHTA
+2C4C;AL # GLAGOLITIC SMALL LETTER TSI
+2C4D;AL # GLAGOLITIC SMALL LETTER CHRIVI
+2C4E;AL # GLAGOLITIC SMALL LETTER SHA
+2C4F;AL # GLAGOLITIC SMALL LETTER YERU
+2C50;AL # GLAGOLITIC SMALL LETTER YERI
+2C51;AL # GLAGOLITIC SMALL LETTER YATI
+2C52;AL # GLAGOLITIC SMALL LETTER SPIDERY HA
+2C53;AL # GLAGOLITIC SMALL LETTER YU
+2C54;AL # GLAGOLITIC SMALL LETTER SMALL YUS
+2C55;AL # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
+2C56;AL # GLAGOLITIC SMALL LETTER YO
+2C57;AL # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
+2C58;AL # GLAGOLITIC SMALL LETTER BIG YUS
+2C59;AL # GLAGOLITIC SMALL LETTER IOTATED BIG YUS
+2C5A;AL # GLAGOLITIC SMALL LETTER FITA
+2C5B;AL # GLAGOLITIC SMALL LETTER IZHITSA
+2C5C;AL # GLAGOLITIC SMALL LETTER SHTAPIC
+2C5D;AL # GLAGOLITIC SMALL LETTER TROKUTASTI A
+2C5E;AL # GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C60;AL # LATIN CAPITAL LETTER L WITH DOUBLE BAR
+2C61;AL # LATIN SMALL LETTER L WITH DOUBLE BAR
+2C62;AL # LATIN CAPITAL LETTER L WITH MIDDLE TILDE
+2C63;AL # LATIN CAPITAL LETTER P WITH STROKE
+2C64;AL # LATIN CAPITAL LETTER R WITH TAIL
+2C65;AL # LATIN SMALL LETTER A WITH STROKE
+2C66;AL # LATIN SMALL LETTER T WITH DIAGONAL STROKE
+2C67;AL # LATIN CAPITAL LETTER H WITH DESCENDER
+2C68;AL # LATIN SMALL LETTER H WITH DESCENDER
+2C69;AL # LATIN CAPITAL LETTER K WITH DESCENDER
+2C6A;AL # LATIN SMALL LETTER K WITH DESCENDER
+2C6B;AL # LATIN CAPITAL LETTER Z WITH DESCENDER
+2C6C;AL # LATIN SMALL LETTER Z WITH DESCENDER
+2C74;AL # LATIN SMALL LETTER V WITH CURL
+2C75;AL # LATIN CAPITAL LETTER HALF H
+2C76;AL # LATIN SMALL LETTER HALF H
+2C77;AL # LATIN SMALL LETTER TAILLESS PHI
+2C80;AL # COPTIC CAPITAL LETTER ALFA
+2C81;AL # COPTIC SMALL LETTER ALFA
+2C82;AL # COPTIC CAPITAL LETTER VIDA
+2C83;AL # COPTIC SMALL LETTER VIDA
+2C84;AL # COPTIC CAPITAL LETTER GAMMA
+2C85;AL # COPTIC SMALL LETTER GAMMA
+2C86;AL # COPTIC CAPITAL LETTER DALDA
+2C87;AL # COPTIC SMALL LETTER DALDA
+2C88;AL # COPTIC CAPITAL LETTER EIE
+2C89;AL # COPTIC SMALL LETTER EIE
+2C8A;AL # COPTIC CAPITAL LETTER SOU
+2C8B;AL # COPTIC SMALL LETTER SOU
+2C8C;AL # COPTIC CAPITAL LETTER ZATA
+2C8D;AL # COPTIC SMALL LETTER ZATA
+2C8E;AL # COPTIC CAPITAL LETTER HATE
+2C8F;AL # COPTIC SMALL LETTER HATE
+2C90;AL # COPTIC CAPITAL LETTER THETHE
+2C91;AL # COPTIC SMALL LETTER THETHE
+2C92;AL # COPTIC CAPITAL LETTER IAUDA
+2C93;AL # COPTIC SMALL LETTER IAUDA
+2C94;AL # COPTIC CAPITAL LETTER KAPA
+2C95;AL # COPTIC SMALL LETTER KAPA
+2C96;AL # COPTIC CAPITAL LETTER LAULA
+2C97;AL # COPTIC SMALL LETTER LAULA
+2C98;AL # COPTIC CAPITAL LETTER MI
+2C99;AL # COPTIC SMALL LETTER MI
+2C9A;AL # COPTIC CAPITAL LETTER NI
+2C9B;AL # COPTIC SMALL LETTER NI
+2C9C;AL # COPTIC CAPITAL LETTER KSI
+2C9D;AL # COPTIC SMALL LETTER KSI
+2C9E;AL # COPTIC CAPITAL LETTER O
+2C9F;AL # COPTIC SMALL LETTER O
+2CA0;AL # COPTIC CAPITAL LETTER PI
+2CA1;AL # COPTIC SMALL LETTER PI
+2CA2;AL # COPTIC CAPITAL LETTER RO
+2CA3;AL # COPTIC SMALL LETTER RO
+2CA4;AL # COPTIC CAPITAL LETTER SIMA
+2CA5;AL # COPTIC SMALL LETTER SIMA
+2CA6;AL # COPTIC CAPITAL LETTER TAU
+2CA7;AL # COPTIC SMALL LETTER TAU
+2CA8;AL # COPTIC CAPITAL LETTER UA
+2CA9;AL # COPTIC SMALL LETTER UA
+2CAA;AL # COPTIC CAPITAL LETTER FI
+2CAB;AL # COPTIC SMALL LETTER FI
+2CAC;AL # COPTIC CAPITAL LETTER KHI
+2CAD;AL # COPTIC SMALL LETTER KHI
+2CAE;AL # COPTIC CAPITAL LETTER PSI
+2CAF;AL # COPTIC SMALL LETTER PSI
+2CB0;AL # COPTIC CAPITAL LETTER OOU
+2CB1;AL # COPTIC SMALL LETTER OOU
+2CB2;AL # COPTIC CAPITAL LETTER DIALECT-P ALEF
+2CB3;AL # COPTIC SMALL LETTER DIALECT-P ALEF
+2CB4;AL # COPTIC CAPITAL LETTER OLD COPTIC AIN
+2CB5;AL # COPTIC SMALL LETTER OLD COPTIC AIN
+2CB6;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+2CB7;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+2CB8;AL # COPTIC CAPITAL LETTER DIALECT-P KAPA
+2CB9;AL # COPTIC SMALL LETTER DIALECT-P KAPA
+2CBA;AL # COPTIC CAPITAL LETTER DIALECT-P NI
+2CBB;AL # COPTIC SMALL LETTER DIALECT-P NI
+2CBC;AL # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+2CBD;AL # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+2CBE;AL # COPTIC CAPITAL LETTER OLD COPTIC OOU
+2CBF;AL # COPTIC SMALL LETTER OLD COPTIC OOU
+2CC0;AL # COPTIC CAPITAL LETTER SAMPI
+2CC1;AL # COPTIC SMALL LETTER SAMPI
+2CC2;AL # COPTIC CAPITAL LETTER CROSSED SHEI
+2CC3;AL # COPTIC SMALL LETTER CROSSED SHEI
+2CC4;AL # COPTIC CAPITAL LETTER OLD COPTIC SHEI
+2CC5;AL # COPTIC SMALL LETTER OLD COPTIC SHEI
+2CC6;AL # COPTIC CAPITAL LETTER OLD COPTIC ESH
+2CC7;AL # COPTIC SMALL LETTER OLD COPTIC ESH
+2CC8;AL # COPTIC CAPITAL LETTER AKHMIMIC KHEI
+2CC9;AL # COPTIC SMALL LETTER AKHMIMIC KHEI
+2CCA;AL # COPTIC CAPITAL LETTER DIALECT-P HORI
+2CCB;AL # COPTIC SMALL LETTER DIALECT-P HORI
+2CCC;AL # COPTIC CAPITAL LETTER OLD COPTIC HORI
+2CCD;AL # COPTIC SMALL LETTER OLD COPTIC HORI
+2CCE;AL # COPTIC CAPITAL LETTER OLD COPTIC HA
+2CCF;AL # COPTIC SMALL LETTER OLD COPTIC HA
+2CD0;AL # COPTIC CAPITAL LETTER L-SHAPED HA
+2CD1;AL # COPTIC SMALL LETTER L-SHAPED HA
+2CD2;AL # COPTIC CAPITAL LETTER OLD COPTIC HEI
+2CD3;AL # COPTIC SMALL LETTER OLD COPTIC HEI
+2CD4;AL # COPTIC CAPITAL LETTER OLD COPTIC HAT
+2CD5;AL # COPTIC SMALL LETTER OLD COPTIC HAT
+2CD6;AL # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+2CD7;AL # COPTIC SMALL LETTER OLD COPTIC GANGIA
+2CD8;AL # COPTIC CAPITAL LETTER OLD COPTIC DJA
+2CD9;AL # COPTIC SMALL LETTER OLD COPTIC DJA
+2CDA;AL # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+2CDB;AL # COPTIC SMALL LETTER OLD COPTIC SHIMA
+2CDC;AL # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+2CDD;AL # COPTIC SMALL LETTER OLD NUBIAN SHIMA
+2CDE;AL # COPTIC CAPITAL LETTER OLD NUBIAN NGI
+2CDF;AL # COPTIC SMALL LETTER OLD NUBIAN NGI
+2CE0;AL # COPTIC CAPITAL LETTER OLD NUBIAN NYI
+2CE1;AL # COPTIC SMALL LETTER OLD NUBIAN NYI
+2CE2;AL # COPTIC CAPITAL LETTER OLD NUBIAN WAU
+2CE3;AL # COPTIC SMALL LETTER OLD NUBIAN WAU
+2CE4;AL # COPTIC SYMBOL KAI
+2CE5;AL # COPTIC SYMBOL MI RO
+2CE6;AL # COPTIC SYMBOL PI RO
+2CE7;AL # COPTIC SYMBOL STAUROS
+2CE8;AL # COPTIC SYMBOL TAU RO
+2CE9;AL # COPTIC SYMBOL KHI RO
+2CEA;AL # COPTIC SYMBOL SHIMA SIMA
+2CF9;BA # COPTIC OLD NUBIAN FULL STOP
+2CFA;BA # COPTIC OLD NUBIAN DIRECT QUESTION MARK
+2CFB;BA # COPTIC OLD NUBIAN INDIRECT QUESTION MARK
+2CFC;BA # COPTIC OLD NUBIAN VERSE DIVIDER
+2CFD;AL # COPTIC FRACTION ONE HALF
+2CFE;BA # COPTIC FULL STOP
+2CFF;BA # COPTIC MORPHOLOGICAL DIVIDER
+2D00;AL # GEORGIAN SMALL LETTER AN
+2D01;AL # GEORGIAN SMALL LETTER BAN
+2D02;AL # GEORGIAN SMALL LETTER GAN
+2D03;AL # GEORGIAN SMALL LETTER DON
+2D04;AL # GEORGIAN SMALL LETTER EN
+2D05;AL # GEORGIAN SMALL LETTER VIN
+2D06;AL # GEORGIAN SMALL LETTER ZEN
+2D07;AL # GEORGIAN SMALL LETTER TAN
+2D08;AL # GEORGIAN SMALL LETTER IN
+2D09;AL # GEORGIAN SMALL LETTER KAN
+2D0A;AL # GEORGIAN SMALL LETTER LAS
+2D0B;AL # GEORGIAN SMALL LETTER MAN
+2D0C;AL # GEORGIAN SMALL LETTER NAR
+2D0D;AL # GEORGIAN SMALL LETTER ON
+2D0E;AL # GEORGIAN SMALL LETTER PAR
+2D0F;AL # GEORGIAN SMALL LETTER ZHAR
+2D10;AL # GEORGIAN SMALL LETTER RAE
+2D11;AL # GEORGIAN SMALL LETTER SAN
+2D12;AL # GEORGIAN SMALL LETTER TAR
+2D13;AL # GEORGIAN SMALL LETTER UN
+2D14;AL # GEORGIAN SMALL LETTER PHAR
+2D15;AL # GEORGIAN SMALL LETTER KHAR
+2D16;AL # GEORGIAN SMALL LETTER GHAN
+2D17;AL # GEORGIAN SMALL LETTER QAR
+2D18;AL # GEORGIAN SMALL LETTER SHIN
+2D19;AL # GEORGIAN SMALL LETTER CHIN
+2D1A;AL # GEORGIAN SMALL LETTER CAN
+2D1B;AL # GEORGIAN SMALL LETTER JIL
+2D1C;AL # GEORGIAN SMALL LETTER CIL
+2D1D;AL # GEORGIAN SMALL LETTER CHAR
+2D1E;AL # GEORGIAN SMALL LETTER XAN
+2D1F;AL # GEORGIAN SMALL LETTER JHAN
+2D20;AL # GEORGIAN SMALL LETTER HAE
+2D21;AL # GEORGIAN SMALL LETTER HE
+2D22;AL # GEORGIAN SMALL LETTER HIE
+2D23;AL # GEORGIAN SMALL LETTER WE
+2D24;AL # GEORGIAN SMALL LETTER HAR
+2D25;AL # GEORGIAN SMALL LETTER HOE
+2D30;AL # TIFINAGH LETTER YA
+2D31;AL # TIFINAGH LETTER YAB
+2D32;AL # TIFINAGH LETTER YABH
+2D33;AL # TIFINAGH LETTER YAG
+2D34;AL # TIFINAGH LETTER YAGHH
+2D35;AL # TIFINAGH LETTER BERBER ACADEMY YAJ
+2D36;AL # TIFINAGH LETTER YAJ
+2D37;AL # TIFINAGH LETTER YAD
+2D38;AL # TIFINAGH LETTER YADH
+2D39;AL # TIFINAGH LETTER YADD
+2D3A;AL # TIFINAGH LETTER YADDH
+2D3B;AL # TIFINAGH LETTER YEY
+2D3C;AL # TIFINAGH LETTER YAF
+2D3D;AL # TIFINAGH LETTER YAK
+2D3E;AL # TIFINAGH LETTER TUAREG YAK
+2D3F;AL # TIFINAGH LETTER YAKHH
+2D40;AL # TIFINAGH LETTER YAH
+2D41;AL # TIFINAGH LETTER BERBER ACADEMY YAH
+2D42;AL # TIFINAGH LETTER TUAREG YAH
+2D43;AL # TIFINAGH LETTER YAHH
+2D44;AL # TIFINAGH LETTER YAA
+2D45;AL # TIFINAGH LETTER YAKH
+2D46;AL # TIFINAGH LETTER TUAREG YAKH
+2D47;AL # TIFINAGH LETTER YAQ
+2D48;AL # TIFINAGH LETTER TUAREG YAQ
+2D49;AL # TIFINAGH LETTER YI
+2D4A;AL # TIFINAGH LETTER YAZH
+2D4B;AL # TIFINAGH LETTER AHAGGAR YAZH
+2D4C;AL # TIFINAGH LETTER TUAREG YAZH
+2D4D;AL # TIFINAGH LETTER YAL
+2D4E;AL # TIFINAGH LETTER YAM
+2D4F;AL # TIFINAGH LETTER YAN
+2D50;AL # TIFINAGH LETTER TUAREG YAGN
+2D51;AL # TIFINAGH LETTER TUAREG YANG
+2D52;AL # TIFINAGH LETTER YAP
+2D53;AL # TIFINAGH LETTER YU
+2D54;AL # TIFINAGH LETTER YAR
+2D55;AL # TIFINAGH LETTER YARR
+2D56;AL # TIFINAGH LETTER YAGH
+2D57;AL # TIFINAGH LETTER TUAREG YAGH
+2D58;AL # TIFINAGH LETTER AYER YAGH
+2D59;AL # TIFINAGH LETTER YAS
+2D5A;AL # TIFINAGH LETTER YASS
+2D5B;AL # TIFINAGH LETTER YASH
+2D5C;AL # TIFINAGH LETTER YAT
+2D5D;AL # TIFINAGH LETTER YATH
+2D5E;AL # TIFINAGH LETTER YACH
+2D5F;AL # TIFINAGH LETTER YATT
+2D60;AL # TIFINAGH LETTER YAV
+2D61;AL # TIFINAGH LETTER YAW
+2D62;AL # TIFINAGH LETTER YAY
+2D63;AL # TIFINAGH LETTER YAZ
+2D64;AL # TIFINAGH LETTER TAWELLEMET YAZ
+2D65;AL # TIFINAGH LETTER YAZZ
+2D6F;AL # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2D80;AL # ETHIOPIC SYLLABLE LOA
+2D81;AL # ETHIOPIC SYLLABLE MOA
+2D82;AL # ETHIOPIC SYLLABLE ROA
+2D83;AL # ETHIOPIC SYLLABLE SOA
+2D84;AL # ETHIOPIC SYLLABLE SHOA
+2D85;AL # ETHIOPIC SYLLABLE BOA
+2D86;AL # ETHIOPIC SYLLABLE TOA
+2D87;AL # ETHIOPIC SYLLABLE COA
+2D88;AL # ETHIOPIC SYLLABLE NOA
+2D89;AL # ETHIOPIC SYLLABLE NYOA
+2D8A;AL # ETHIOPIC SYLLABLE GLOTTAL OA
+2D8B;AL # ETHIOPIC SYLLABLE ZOA
+2D8C;AL # ETHIOPIC SYLLABLE DOA
+2D8D;AL # ETHIOPIC SYLLABLE DDOA
+2D8E;AL # ETHIOPIC SYLLABLE JOA
+2D8F;AL # ETHIOPIC SYLLABLE THOA
+2D90;AL # ETHIOPIC SYLLABLE CHOA
+2D91;AL # ETHIOPIC SYLLABLE PHOA
+2D92;AL # ETHIOPIC SYLLABLE POA
+2D93;AL # ETHIOPIC SYLLABLE GGWA
+2D94;AL # ETHIOPIC SYLLABLE GGWI
+2D95;AL # ETHIOPIC SYLLABLE GGWEE
+2D96;AL # ETHIOPIC SYLLABLE GGWE
+2DA0;AL # ETHIOPIC SYLLABLE SSA
+2DA1;AL # ETHIOPIC SYLLABLE SSU
+2DA2;AL # ETHIOPIC SYLLABLE SSI
+2DA3;AL # ETHIOPIC SYLLABLE SSAA
+2DA4;AL # ETHIOPIC SYLLABLE SSEE
+2DA5;AL # ETHIOPIC SYLLABLE SSE
+2DA6;AL # ETHIOPIC SYLLABLE SSO
+2DA8;AL # ETHIOPIC SYLLABLE CCA
+2DA9;AL # ETHIOPIC SYLLABLE CCU
+2DAA;AL # ETHIOPIC SYLLABLE CCI
+2DAB;AL # ETHIOPIC SYLLABLE CCAA
+2DAC;AL # ETHIOPIC SYLLABLE CCEE
+2DAD;AL # ETHIOPIC SYLLABLE CCE
+2DAE;AL # ETHIOPIC SYLLABLE CCO
+2DB0;AL # ETHIOPIC SYLLABLE ZZA
+2DB1;AL # ETHIOPIC SYLLABLE ZZU
+2DB2;AL # ETHIOPIC SYLLABLE ZZI
+2DB3;AL # ETHIOPIC SYLLABLE ZZAA
+2DB4;AL # ETHIOPIC SYLLABLE ZZEE
+2DB5;AL # ETHIOPIC SYLLABLE ZZE
+2DB6;AL # ETHIOPIC SYLLABLE ZZO
+2DB8;AL # ETHIOPIC SYLLABLE CCHA
+2DB9;AL # ETHIOPIC SYLLABLE CCHU
+2DBA;AL # ETHIOPIC SYLLABLE CCHI
+2DBB;AL # ETHIOPIC SYLLABLE CCHAA
+2DBC;AL # ETHIOPIC SYLLABLE CCHEE
+2DBD;AL # ETHIOPIC SYLLABLE CCHE
+2DBE;AL # ETHIOPIC SYLLABLE CCHO
+2DC0;AL # ETHIOPIC SYLLABLE QYA
+2DC1;AL # ETHIOPIC SYLLABLE QYU
+2DC2;AL # ETHIOPIC SYLLABLE QYI
+2DC3;AL # ETHIOPIC SYLLABLE QYAA
+2DC4;AL # ETHIOPIC SYLLABLE QYEE
+2DC5;AL # ETHIOPIC SYLLABLE QYE
+2DC6;AL # ETHIOPIC SYLLABLE QYO
+2DC8;AL # ETHIOPIC SYLLABLE KYA
+2DC9;AL # ETHIOPIC SYLLABLE KYU
+2DCA;AL # ETHIOPIC SYLLABLE KYI
+2DCB;AL # ETHIOPIC SYLLABLE KYAA
+2DCC;AL # ETHIOPIC SYLLABLE KYEE
+2DCD;AL # ETHIOPIC SYLLABLE KYE
+2DCE;AL # ETHIOPIC SYLLABLE KYO
+2DD0;AL # ETHIOPIC SYLLABLE XYA
+2DD1;AL # ETHIOPIC SYLLABLE XYU
+2DD2;AL # ETHIOPIC SYLLABLE XYI
+2DD3;AL # ETHIOPIC SYLLABLE XYAA
+2DD4;AL # ETHIOPIC SYLLABLE XYEE
+2DD5;AL # ETHIOPIC SYLLABLE XYE
+2DD6;AL # ETHIOPIC SYLLABLE XYO
+2DD8;AL # ETHIOPIC SYLLABLE GYA
+2DD9;AL # ETHIOPIC SYLLABLE GYU
+2DDA;AL # ETHIOPIC SYLLABLE GYI
+2DDB;AL # ETHIOPIC SYLLABLE GYAA
+2DDC;AL # ETHIOPIC SYLLABLE GYEE
+2DDD;AL # ETHIOPIC SYLLABLE GYE
+2DDE;AL # ETHIOPIC SYLLABLE GYO
+2E00;QU # RIGHT ANGLE SUBSTITUTION MARKER
+2E01;QU # RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E02;QU # LEFT SUBSTITUTION BRACKET
+2E03;QU # RIGHT SUBSTITUTION BRACKET
+2E04;QU # LEFT DOTTED SUBSTITUTION BRACKET
+2E05;QU # RIGHT DOTTED SUBSTITUTION BRACKET
+2E06;QU # RAISED INTERPOLATION MARKER
+2E07;QU # RAISED DOTTED INTERPOLATION MARKER
+2E08;QU # DOTTED TRANSPOSITION MARKER
+2E09;QU # LEFT TRANSPOSITION BRACKET
+2E0A;QU # RIGHT TRANSPOSITION BRACKET
+2E0B;QU # RAISED SQUARE
+2E0C;QU # LEFT RAISED OMISSION BRACKET
+2E0D;QU # RIGHT RAISED OMISSION BRACKET
+2E0E;BA # EDITORIAL CORONIS
+2E0F;BA # PARAGRAPHOS
+2E10;BA # FORKED PARAGRAPHOS
+2E11;BA # REVERSED FORKED PARAGRAPHOS
+2E12;BA # HYPODIASTOLE
+2E13;BA # DOTTED OBELOS
+2E14;BA # DOWNWARDS ANCORA
+2E15;BA # UPWARDS ANCORA
+2E16;AL # DOTTED RIGHT-POINTING ANGLE
+2E17;BA # DOUBLE OBLIQUE HYPHEN
+2E1C;QU # LEFT LOW PARAPHRASE BRACKET
+2E1D;QU # RIGHT LOW PARAPHRASE BRACKET
+2E80;ID # CJK RADICAL REPEAT
+2E81;ID # CJK RADICAL CLIFF
+2E82;ID # CJK RADICAL SECOND ONE
+2E83;ID # CJK RADICAL SECOND TWO
+2E84;ID # CJK RADICAL SECOND THREE
+2E85;ID # CJK RADICAL PERSON
+2E86;ID # CJK RADICAL BOX
+2E87;ID # CJK RADICAL TABLE
+2E88;ID # CJK RADICAL KNIFE ONE
+2E89;ID # CJK RADICAL KNIFE TWO
+2E8A;ID # CJK RADICAL DIVINATION
+2E8B;ID # CJK RADICAL SEAL
+2E8C;ID # CJK RADICAL SMALL ONE
+2E8D;ID # CJK RADICAL SMALL TWO
+2E8E;ID # CJK RADICAL LAME ONE
+2E8F;ID # CJK RADICAL LAME TWO
+2E90;ID # CJK RADICAL LAME THREE
+2E91;ID # CJK RADICAL LAME FOUR
+2E92;ID # CJK RADICAL SNAKE
+2E93;ID # CJK RADICAL THREAD
+2E94;ID # CJK RADICAL SNOUT ONE
+2E95;ID # CJK RADICAL SNOUT TWO
+2E96;ID # CJK RADICAL HEART ONE
+2E97;ID # CJK RADICAL HEART TWO
+2E98;ID # CJK RADICAL HAND
+2E99;ID # CJK RADICAL RAP
+2E9B;ID # CJK RADICAL CHOKE
+2E9C;ID # CJK RADICAL SUN
+2E9D;ID # CJK RADICAL MOON
+2E9E;ID # CJK RADICAL DEATH
+2E9F;ID # CJK RADICAL MOTHER
+2EA0;ID # CJK RADICAL CIVILIAN
+2EA1;ID # CJK RADICAL WATER ONE
+2EA2;ID # CJK RADICAL WATER TWO
+2EA3;ID # CJK RADICAL FIRE
+2EA4;ID # CJK RADICAL PAW ONE
+2EA5;ID # CJK RADICAL PAW TWO
+2EA6;ID # CJK RADICAL SIMPLIFIED HALF TREE TRUNK
+2EA7;ID # CJK RADICAL COW
+2EA8;ID # CJK RADICAL DOG
+2EA9;ID # CJK RADICAL JADE
+2EAA;ID # CJK RADICAL BOLT OF CLOTH
+2EAB;ID # CJK RADICAL EYE
+2EAC;ID # CJK RADICAL SPIRIT ONE
+2EAD;ID # CJK RADICAL SPIRIT TWO
+2EAE;ID # CJK RADICAL BAMBOO
+2EAF;ID # CJK RADICAL SILK
+2EB0;ID # CJK RADICAL C-SIMPLIFIED SILK
+2EB1;ID # CJK RADICAL NET ONE
+2EB2;ID # CJK RADICAL NET TWO
+2EB3;ID # CJK RADICAL NET THREE
+2EB4;ID # CJK RADICAL NET FOUR
+2EB5;ID # CJK RADICAL MESH
+2EB6;ID # CJK RADICAL SHEEP
+2EB7;ID # CJK RADICAL RAM
+2EB8;ID # CJK RADICAL EWE
+2EB9;ID # CJK RADICAL OLD
+2EBA;ID # CJK RADICAL BRUSH ONE
+2EBB;ID # CJK RADICAL BRUSH TWO
+2EBC;ID # CJK RADICAL MEAT
+2EBD;ID # CJK RADICAL MORTAR
+2EBE;ID # CJK RADICAL GRASS ONE
+2EBF;ID # CJK RADICAL GRASS TWO
+2EC0;ID # CJK RADICAL GRASS THREE
+2EC1;ID # CJK RADICAL TIGER
+2EC2;ID # CJK RADICAL CLOTHES
+2EC3;ID # CJK RADICAL WEST ONE
+2EC4;ID # CJK RADICAL WEST TWO
+2EC5;ID # CJK RADICAL C-SIMPLIFIED SEE
+2EC6;ID # CJK RADICAL SIMPLIFIED HORN
+2EC7;ID # CJK RADICAL HORN
+2EC8;ID # CJK RADICAL C-SIMPLIFIED SPEECH
+2EC9;ID # CJK RADICAL C-SIMPLIFIED SHELL
+2ECA;ID # CJK RADICAL FOOT
+2ECB;ID # CJK RADICAL C-SIMPLIFIED CART
+2ECC;ID # CJK RADICAL SIMPLIFIED WALK
+2ECD;ID # CJK RADICAL WALK ONE
+2ECE;ID # CJK RADICAL WALK TWO
+2ECF;ID # CJK RADICAL CITY
+2ED0;ID # CJK RADICAL C-SIMPLIFIED GOLD
+2ED1;ID # CJK RADICAL LONG ONE
+2ED2;ID # CJK RADICAL LONG TWO
+2ED3;ID # CJK RADICAL C-SIMPLIFIED LONG
+2ED4;ID # CJK RADICAL C-SIMPLIFIED GATE
+2ED5;ID # CJK RADICAL MOUND ONE
+2ED6;ID # CJK RADICAL MOUND TWO
+2ED7;ID # CJK RADICAL RAIN
+2ED8;ID # CJK RADICAL BLUE
+2ED9;ID # CJK RADICAL C-SIMPLIFIED TANNED LEATHER
+2EDA;ID # CJK RADICAL C-SIMPLIFIED LEAF
+2EDB;ID # CJK RADICAL C-SIMPLIFIED WIND
+2EDC;ID # CJK RADICAL C-SIMPLIFIED FLY
+2EDD;ID # CJK RADICAL EAT ONE
+2EDE;ID # CJK RADICAL EAT TWO
+2EDF;ID # CJK RADICAL EAT THREE
+2EE0;ID # CJK RADICAL C-SIMPLIFIED EAT
+2EE1;ID # CJK RADICAL HEAD
+2EE2;ID # CJK RADICAL C-SIMPLIFIED HORSE
+2EE3;ID # CJK RADICAL BONE
+2EE4;ID # CJK RADICAL GHOST
+2EE5;ID # CJK RADICAL C-SIMPLIFIED FISH
+2EE6;ID # CJK RADICAL C-SIMPLIFIED BIRD
+2EE7;ID # CJK RADICAL C-SIMPLIFIED SALT
+2EE8;ID # CJK RADICAL SIMPLIFIED WHEAT
+2EE9;ID # CJK RADICAL SIMPLIFIED YELLOW
+2EEA;ID # CJK RADICAL C-SIMPLIFIED FROG
+2EEB;ID # CJK RADICAL J-SIMPLIFIED EVEN
+2EEC;ID # CJK RADICAL C-SIMPLIFIED EVEN
+2EED;ID # CJK RADICAL J-SIMPLIFIED TOOTH
+2EEE;ID # CJK RADICAL C-SIMPLIFIED TOOTH
+2EEF;ID # CJK RADICAL J-SIMPLIFIED DRAGON
+2EF0;ID # CJK RADICAL C-SIMPLIFIED DRAGON
+2EF1;ID # CJK RADICAL TURTLE
+2EF2;ID # CJK RADICAL J-SIMPLIFIED TURTLE
+2EF3;ID # CJK RADICAL C-SIMPLIFIED TURTLE
+2F00;ID # KANGXI RADICAL ONE
+2F01;ID # KANGXI RADICAL LINE
+2F02;ID # KANGXI RADICAL DOT
+2F03;ID # KANGXI RADICAL SLASH
+2F04;ID # KANGXI RADICAL SECOND
+2F05;ID # KANGXI RADICAL HOOK
+2F06;ID # KANGXI RADICAL TWO
+2F07;ID # KANGXI RADICAL LID
+2F08;ID # KANGXI RADICAL MAN
+2F09;ID # KANGXI RADICAL LEGS
+2F0A;ID # KANGXI RADICAL ENTER
+2F0B;ID # KANGXI RADICAL EIGHT
+2F0C;ID # KANGXI RADICAL DOWN BOX
+2F0D;ID # KANGXI RADICAL COVER
+2F0E;ID # KANGXI RADICAL ICE
+2F0F;ID # KANGXI RADICAL TABLE
+2F10;ID # KANGXI RADICAL OPEN BOX
+2F11;ID # KANGXI RADICAL KNIFE
+2F12;ID # KANGXI RADICAL POWER
+2F13;ID # KANGXI RADICAL WRAP
+2F14;ID # KANGXI RADICAL SPOON
+2F15;ID # KANGXI RADICAL RIGHT OPEN BOX
+2F16;ID # KANGXI RADICAL HIDING ENCLOSURE
+2F17;ID # KANGXI RADICAL TEN
+2F18;ID # KANGXI RADICAL DIVINATION
+2F19;ID # KANGXI RADICAL SEAL
+2F1A;ID # KANGXI RADICAL CLIFF
+2F1B;ID # KANGXI RADICAL PRIVATE
+2F1C;ID # KANGXI RADICAL AGAIN
+2F1D;ID # KANGXI RADICAL MOUTH
+2F1E;ID # KANGXI RADICAL ENCLOSURE
+2F1F;ID # KANGXI RADICAL EARTH
+2F20;ID # KANGXI RADICAL SCHOLAR
+2F21;ID # KANGXI RADICAL GO
+2F22;ID # KANGXI RADICAL GO SLOWLY
+2F23;ID # KANGXI RADICAL EVENING
+2F24;ID # KANGXI RADICAL BIG
+2F25;ID # KANGXI RADICAL WOMAN
+2F26;ID # KANGXI RADICAL CHILD
+2F27;ID # KANGXI RADICAL ROOF
+2F28;ID # KANGXI RADICAL INCH
+2F29;ID # KANGXI RADICAL SMALL
+2F2A;ID # KANGXI RADICAL LAME
+2F2B;ID # KANGXI RADICAL CORPSE
+2F2C;ID # KANGXI RADICAL SPROUT
+2F2D;ID # KANGXI RADICAL MOUNTAIN
+2F2E;ID # KANGXI RADICAL RIVER
+2F2F;ID # KANGXI RADICAL WORK
+2F30;ID # KANGXI RADICAL ONESELF
+2F31;ID # KANGXI RADICAL TURBAN
+2F32;ID # KANGXI RADICAL DRY
+2F33;ID # KANGXI RADICAL SHORT THREAD
+2F34;ID # KANGXI RADICAL DOTTED CLIFF
+2F35;ID # KANGXI RADICAL LONG STRIDE
+2F36;ID # KANGXI RADICAL TWO HANDS
+2F37;ID # KANGXI RADICAL SHOOT
+2F38;ID # KANGXI RADICAL BOW
+2F39;ID # KANGXI RADICAL SNOUT
+2F3A;ID # KANGXI RADICAL BRISTLE
+2F3B;ID # KANGXI RADICAL STEP
+2F3C;ID # KANGXI RADICAL HEART
+2F3D;ID # KANGXI RADICAL HALBERD
+2F3E;ID # KANGXI RADICAL DOOR
+2F3F;ID # KANGXI RADICAL HAND
+2F40;ID # KANGXI RADICAL BRANCH
+2F41;ID # KANGXI RADICAL RAP
+2F42;ID # KANGXI RADICAL SCRIPT
+2F43;ID # KANGXI RADICAL DIPPER
+2F44;ID # KANGXI RADICAL AXE
+2F45;ID # KANGXI RADICAL SQUARE
+2F46;ID # KANGXI RADICAL NOT
+2F47;ID # KANGXI RADICAL SUN
+2F48;ID # KANGXI RADICAL SAY
+2F49;ID # KANGXI RADICAL MOON
+2F4A;ID # KANGXI RADICAL TREE
+2F4B;ID # KANGXI RADICAL LACK
+2F4C;ID # KANGXI RADICAL STOP
+2F4D;ID # KANGXI RADICAL DEATH
+2F4E;ID # KANGXI RADICAL WEAPON
+2F4F;ID # KANGXI RADICAL DO NOT
+2F50;ID # KANGXI RADICAL COMPARE
+2F51;ID # KANGXI RADICAL FUR
+2F52;ID # KANGXI RADICAL CLAN
+2F53;ID # KANGXI RADICAL STEAM
+2F54;ID # KANGXI RADICAL WATER
+2F55;ID # KANGXI RADICAL FIRE
+2F56;ID # KANGXI RADICAL CLAW
+2F57;ID # KANGXI RADICAL FATHER
+2F58;ID # KANGXI RADICAL DOUBLE X
+2F59;ID # KANGXI RADICAL HALF TREE TRUNK
+2F5A;ID # KANGXI RADICAL SLICE
+2F5B;ID # KANGXI RADICAL FANG
+2F5C;ID # KANGXI RADICAL COW
+2F5D;ID # KANGXI RADICAL DOG
+2F5E;ID # KANGXI RADICAL PROFOUND
+2F5F;ID # KANGXI RADICAL JADE
+2F60;ID # KANGXI RADICAL MELON
+2F61;ID # KANGXI RADICAL TILE
+2F62;ID # KANGXI RADICAL SWEET
+2F63;ID # KANGXI RADICAL LIFE
+2F64;ID # KANGXI RADICAL USE
+2F65;ID # KANGXI RADICAL FIELD
+2F66;ID # KANGXI RADICAL BOLT OF CLOTH
+2F67;ID # KANGXI RADICAL SICKNESS
+2F68;ID # KANGXI RADICAL DOTTED TENT
+2F69;ID # KANGXI RADICAL WHITE
+2F6A;ID # KANGXI RADICAL SKIN
+2F6B;ID # KANGXI RADICAL DISH
+2F6C;ID # KANGXI RADICAL EYE
+2F6D;ID # KANGXI RADICAL SPEAR
+2F6E;ID # KANGXI RADICAL ARROW
+2F6F;ID # KANGXI RADICAL STONE
+2F70;ID # KANGXI RADICAL SPIRIT
+2F71;ID # KANGXI RADICAL TRACK
+2F72;ID # KANGXI RADICAL GRAIN
+2F73;ID # KANGXI RADICAL CAVE
+2F74;ID # KANGXI RADICAL STAND
+2F75;ID # KANGXI RADICAL BAMBOO
+2F76;ID # KANGXI RADICAL RICE
+2F77;ID # KANGXI RADICAL SILK
+2F78;ID # KANGXI RADICAL JAR
+2F79;ID # KANGXI RADICAL NET
+2F7A;ID # KANGXI RADICAL SHEEP
+2F7B;ID # KANGXI RADICAL FEATHER
+2F7C;ID # KANGXI RADICAL OLD
+2F7D;ID # KANGXI RADICAL AND
+2F7E;ID # KANGXI RADICAL PLOW
+2F7F;ID # KANGXI RADICAL EAR
+2F80;ID # KANGXI RADICAL BRUSH
+2F81;ID # KANGXI RADICAL MEAT
+2F82;ID # KANGXI RADICAL MINISTER
+2F83;ID # KANGXI RADICAL SELF
+2F84;ID # KANGXI RADICAL ARRIVE
+2F85;ID # KANGXI RADICAL MORTAR
+2F86;ID # KANGXI RADICAL TONGUE
+2F87;ID # KANGXI RADICAL OPPOSE
+2F88;ID # KANGXI RADICAL BOAT
+2F89;ID # KANGXI RADICAL STOPPING
+2F8A;ID # KANGXI RADICAL COLOR
+2F8B;ID # KANGXI RADICAL GRASS
+2F8C;ID # KANGXI RADICAL TIGER
+2F8D;ID # KANGXI RADICAL INSECT
+2F8E;ID # KANGXI RADICAL BLOOD
+2F8F;ID # KANGXI RADICAL WALK ENCLOSURE
+2F90;ID # KANGXI RADICAL CLOTHES
+2F91;ID # KANGXI RADICAL WEST
+2F92;ID # KANGXI RADICAL SEE
+2F93;ID # KANGXI RADICAL HORN
+2F94;ID # KANGXI RADICAL SPEECH
+2F95;ID # KANGXI RADICAL VALLEY
+2F96;ID # KANGXI RADICAL BEAN
+2F97;ID # KANGXI RADICAL PIG
+2F98;ID # KANGXI RADICAL BADGER
+2F99;ID # KANGXI RADICAL SHELL
+2F9A;ID # KANGXI RADICAL RED
+2F9B;ID # KANGXI RADICAL RUN
+2F9C;ID # KANGXI RADICAL FOOT
+2F9D;ID # KANGXI RADICAL BODY
+2F9E;ID # KANGXI RADICAL CART
+2F9F;ID # KANGXI RADICAL BITTER
+2FA0;ID # KANGXI RADICAL MORNING
+2FA1;ID # KANGXI RADICAL WALK
+2FA2;ID # KANGXI RADICAL CITY
+2FA3;ID # KANGXI RADICAL WINE
+2FA4;ID # KANGXI RADICAL DISTINGUISH
+2FA5;ID # KANGXI RADICAL VILLAGE
+2FA6;ID # KANGXI RADICAL GOLD
+2FA7;ID # KANGXI RADICAL LONG
+2FA8;ID # KANGXI RADICAL GATE
+2FA9;ID # KANGXI RADICAL MOUND
+2FAA;ID # KANGXI RADICAL SLAVE
+2FAB;ID # KANGXI RADICAL SHORT TAILED BIRD
+2FAC;ID # KANGXI RADICAL RAIN
+2FAD;ID # KANGXI RADICAL BLUE
+2FAE;ID # KANGXI RADICAL WRONG
+2FAF;ID # KANGXI RADICAL FACE
+2FB0;ID # KANGXI RADICAL LEATHER
+2FB1;ID # KANGXI RADICAL TANNED LEATHER
+2FB2;ID # KANGXI RADICAL LEEK
+2FB3;ID # KANGXI RADICAL SOUND
+2FB4;ID # KANGXI RADICAL LEAF
+2FB5;ID # KANGXI RADICAL WIND
+2FB6;ID # KANGXI RADICAL FLY
+2FB7;ID # KANGXI RADICAL EAT
+2FB8;ID # KANGXI RADICAL HEAD
+2FB9;ID # KANGXI RADICAL FRAGRANT
+2FBA;ID # KANGXI RADICAL HORSE
+2FBB;ID # KANGXI RADICAL BONE
+2FBC;ID # KANGXI RADICAL TALL
+2FBD;ID # KANGXI RADICAL HAIR
+2FBE;ID # KANGXI RADICAL FIGHT
+2FBF;ID # KANGXI RADICAL SACRIFICIAL WINE
+2FC0;ID # KANGXI RADICAL CAULDRON
+2FC1;ID # KANGXI RADICAL GHOST
+2FC2;ID # KANGXI RADICAL FISH
+2FC3;ID # KANGXI RADICAL BIRD
+2FC4;ID # KANGXI RADICAL SALT
+2FC5;ID # KANGXI RADICAL DEER
+2FC6;ID # KANGXI RADICAL WHEAT
+2FC7;ID # KANGXI RADICAL HEMP
+2FC8;ID # KANGXI RADICAL YELLOW
+2FC9;ID # KANGXI RADICAL MILLET
+2FCA;ID # KANGXI RADICAL BLACK
+2FCB;ID # KANGXI RADICAL EMBROIDERY
+2FCC;ID # KANGXI RADICAL FROG
+2FCD;ID # KANGXI RADICAL TRIPOD
+2FCE;ID # KANGXI RADICAL DRUM
+2FCF;ID # KANGXI RADICAL RAT
+2FD0;ID # KANGXI RADICAL NOSE
+2FD1;ID # KANGXI RADICAL EVEN
+2FD2;ID # KANGXI RADICAL TOOTH
+2FD3;ID # KANGXI RADICAL DRAGON
+2FD4;ID # KANGXI RADICAL TURTLE
+2FD5;ID # KANGXI RADICAL FLUTE
+2FF0;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2FF1;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2FF2;ID # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2FF3;ID # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2FF4;ID # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2FF5;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2FF6;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2FF7;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2FF8;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2FF9;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2FFA;ID # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2FFB;ID # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000;ID # IDEOGRAPHIC SPACE
+3001;CL # IDEOGRAPHIC COMMA
+3002;CL # IDEOGRAPHIC FULL STOP
+3003;ID # DITTO MARK
+3004;ID # JAPANESE INDUSTRIAL STANDARD SYMBOL
+3005;NS # IDEOGRAPHIC ITERATION MARK
+3006;ID # IDEOGRAPHIC CLOSING MARK
+3007;ID # IDEOGRAPHIC NUMBER ZERO
+3008;OP # LEFT ANGLE BRACKET
+3009;CL # RIGHT ANGLE BRACKET
+300A;OP # LEFT DOUBLE ANGLE BRACKET
+300B;CL # RIGHT DOUBLE ANGLE BRACKET
+300C;OP # LEFT CORNER BRACKET
+300D;CL # RIGHT CORNER BRACKET
+300E;OP # LEFT WHITE CORNER BRACKET
+300F;CL # RIGHT WHITE CORNER BRACKET
+3010;OP # LEFT BLACK LENTICULAR BRACKET
+3011;CL # RIGHT BLACK LENTICULAR BRACKET
+3012;ID # POSTAL MARK
+3013;ID # GETA MARK
+3014;OP # LEFT TORTOISE SHELL BRACKET
+3015;CL # RIGHT TORTOISE SHELL BRACKET
+3016;OP # LEFT WHITE LENTICULAR BRACKET
+3017;CL # RIGHT WHITE LENTICULAR BRACKET
+3018;OP # LEFT WHITE TORTOISE SHELL BRACKET
+3019;CL # RIGHT WHITE TORTOISE SHELL BRACKET
+301A;OP # LEFT WHITE SQUARE BRACKET
+301B;CL # RIGHT WHITE SQUARE BRACKET
+301C;NS # WAVE DASH
+301D;OP # REVERSED DOUBLE PRIME QUOTATION MARK
+301E;CL # DOUBLE PRIME QUOTATION MARK
+301F;CL # LOW DOUBLE PRIME QUOTATION MARK
+3020;ID # POSTAL MARK FACE
+3021;ID # HANGZHOU NUMERAL ONE
+3022;ID # HANGZHOU NUMERAL TWO
+3023;ID # HANGZHOU NUMERAL THREE
+3024;ID # HANGZHOU NUMERAL FOUR
+3025;ID # HANGZHOU NUMERAL FIVE
+3026;ID # HANGZHOU NUMERAL SIX
+3027;ID # HANGZHOU NUMERAL SEVEN
+3028;ID # HANGZHOU NUMERAL EIGHT
+3029;ID # HANGZHOU NUMERAL NINE
+302A;CM # IDEOGRAPHIC LEVEL TONE MARK
+302B;CM # IDEOGRAPHIC RISING TONE MARK
+302C;CM # IDEOGRAPHIC DEPARTING TONE MARK
+302D;CM # IDEOGRAPHIC ENTERING TONE MARK
+302E;CM # HANGUL SINGLE DOT TONE MARK
+302F;CM # HANGUL DOUBLE DOT TONE MARK
+3030;ID # WAVY DASH
+3031;ID # VERTICAL KANA REPEAT MARK
+3032;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+3033;ID # VERTICAL KANA REPEAT MARK UPPER HALF
+3034;ID # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+3035;ID # VERTICAL KANA REPEAT MARK LOWER HALF
+3036;ID # CIRCLED POSTAL MARK
+3037;ID # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+3038;ID # HANGZHOU NUMERAL TEN
+3039;ID # HANGZHOU NUMERAL TWENTY
+303A;ID # HANGZHOU NUMERAL THIRTY
+303B;NS # VERTICAL IDEOGRAPHIC ITERATION MARK
+303C;NS # MASU MARK
+303D;ID # PART ALTERNATION MARK
+303E;ID # IDEOGRAPHIC VARIATION INDICATOR
+303F;ID # IDEOGRAPHIC HALF FILL SPACE
+3041;NS # HIRAGANA LETTER SMALL A
+3042;ID # HIRAGANA LETTER A
+3043;NS # HIRAGANA LETTER SMALL I
+3044;ID # HIRAGANA LETTER I
+3045;NS # HIRAGANA LETTER SMALL U
+3046;ID # HIRAGANA LETTER U
+3047;NS # HIRAGANA LETTER SMALL E
+3048;ID # HIRAGANA LETTER E
+3049;NS # HIRAGANA LETTER SMALL O
+304A;ID # HIRAGANA LETTER O
+304B;ID # HIRAGANA LETTER KA
+304C;ID # HIRAGANA LETTER GA
+304D;ID # HIRAGANA LETTER KI
+304E;ID # HIRAGANA LETTER GI
+304F;ID # HIRAGANA LETTER KU
+3050;ID # HIRAGANA LETTER GU
+3051;ID # HIRAGANA LETTER KE
+3052;ID # HIRAGANA LETTER GE
+3053;ID # HIRAGANA LETTER KO
+3054;ID # HIRAGANA LETTER GO
+3055;ID # HIRAGANA LETTER SA
+3056;ID # HIRAGANA LETTER ZA
+3057;ID # HIRAGANA LETTER SI
+3058;ID # HIRAGANA LETTER ZI
+3059;ID # HIRAGANA LETTER SU
+305A;ID # HIRAGANA LETTER ZU
+305B;ID # HIRAGANA LETTER SE
+305C;ID # HIRAGANA LETTER ZE
+305D;ID # HIRAGANA LETTER SO
+305E;ID # HIRAGANA LETTER ZO
+305F;ID # HIRAGANA LETTER TA
+3060;ID # HIRAGANA LETTER DA
+3061;ID # HIRAGANA LETTER TI
+3062;ID # HIRAGANA LETTER DI
+3063;NS # HIRAGANA LETTER SMALL TU
+3064;ID # HIRAGANA LETTER TU
+3065;ID # HIRAGANA LETTER DU
+3066;ID # HIRAGANA LETTER TE
+3067;ID # HIRAGANA LETTER DE
+3068;ID # HIRAGANA LETTER TO
+3069;ID # HIRAGANA LETTER DO
+306A;ID # HIRAGANA LETTER NA
+306B;ID # HIRAGANA LETTER NI
+306C;ID # HIRAGANA LETTER NU
+306D;ID # HIRAGANA LETTER NE
+306E;ID # HIRAGANA LETTER NO
+306F;ID # HIRAGANA LETTER HA
+3070;ID # HIRAGANA LETTER BA
+3071;ID # HIRAGANA LETTER PA
+3072;ID # HIRAGANA LETTER HI
+3073;ID # HIRAGANA LETTER BI
+3074;ID # HIRAGANA LETTER PI
+3075;ID # HIRAGANA LETTER HU
+3076;ID # HIRAGANA LETTER BU
+3077;ID # HIRAGANA LETTER PU
+3078;ID # HIRAGANA LETTER HE
+3079;ID # HIRAGANA LETTER BE
+307A;ID # HIRAGANA LETTER PE
+307B;ID # HIRAGANA LETTER HO
+307C;ID # HIRAGANA LETTER BO
+307D;ID # HIRAGANA LETTER PO
+307E;ID # HIRAGANA LETTER MA
+307F;ID # HIRAGANA LETTER MI
+3080;ID # HIRAGANA LETTER MU
+3081;ID # HIRAGANA LETTER ME
+3082;ID # HIRAGANA LETTER MO
+3083;NS # HIRAGANA LETTER SMALL YA
+3084;ID # HIRAGANA LETTER YA
+3085;NS # HIRAGANA LETTER SMALL YU
+3086;ID # HIRAGANA LETTER YU
+3087;NS # HIRAGANA LETTER SMALL YO
+3088;ID # HIRAGANA LETTER YO
+3089;ID # HIRAGANA LETTER RA
+308A;ID # HIRAGANA LETTER RI
+308B;ID # HIRAGANA LETTER RU
+308C;ID # HIRAGANA LETTER RE
+308D;ID # HIRAGANA LETTER RO
+308E;NS # HIRAGANA LETTER SMALL WA
+308F;ID # HIRAGANA LETTER WA
+3090;ID # HIRAGANA LETTER WI
+3091;ID # HIRAGANA LETTER WE
+3092;ID # HIRAGANA LETTER WO
+3093;ID # HIRAGANA LETTER N
+3094;ID # HIRAGANA LETTER VU
+3095;NS # HIRAGANA LETTER SMALL KA
+3096;NS # HIRAGANA LETTER SMALL KE
+3099;CM # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+309A;CM # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309B;NS # KATAKANA-HIRAGANA VOICED SOUND MARK
+309C;NS # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309D;NS # HIRAGANA ITERATION MARK
+309E;NS # HIRAGANA VOICED ITERATION MARK
+309F;ID # HIRAGANA DIGRAPH YORI
+30A0;NS # KATAKANA-HIRAGANA DOUBLE HYPHEN
+30A1;NS # KATAKANA LETTER SMALL A
+30A2;ID # KATAKANA LETTER A
+30A3;NS # KATAKANA LETTER SMALL I
+30A4;ID # KATAKANA LETTER I
+30A5;NS # KATAKANA LETTER SMALL U
+30A6;ID # KATAKANA LETTER U
+30A7;NS # KATAKANA LETTER SMALL E
+30A8;ID # KATAKANA LETTER E
+30A9;NS # KATAKANA LETTER SMALL O
+30AA;ID # KATAKANA LETTER O
+30AB;ID # KATAKANA LETTER KA
+30AC;ID # KATAKANA LETTER GA
+30AD;ID # KATAKANA LETTER KI
+30AE;ID # KATAKANA LETTER GI
+30AF;ID # KATAKANA LETTER KU
+30B0;ID # KATAKANA LETTER GU
+30B1;ID # KATAKANA LETTER KE
+30B2;ID # KATAKANA LETTER GE
+30B3;ID # KATAKANA LETTER KO
+30B4;ID # KATAKANA LETTER GO
+30B5;ID # KATAKANA LETTER SA
+30B6;ID # KATAKANA LETTER ZA
+30B7;ID # KATAKANA LETTER SI
+30B8;ID # KATAKANA LETTER ZI
+30B9;ID # KATAKANA LETTER SU
+30BA;ID # KATAKANA LETTER ZU
+30BB;ID # KATAKANA LETTER SE
+30BC;ID # KATAKANA LETTER ZE
+30BD;ID # KATAKANA LETTER SO
+30BE;ID # KATAKANA LETTER ZO
+30BF;ID # KATAKANA LETTER TA
+30C0;ID # KATAKANA LETTER DA
+30C1;ID # KATAKANA LETTER TI
+30C2;ID # KATAKANA LETTER DI
+30C3;NS # KATAKANA LETTER SMALL TU
+30C4;ID # KATAKANA LETTER TU
+30C5;ID # KATAKANA LETTER DU
+30C6;ID # KATAKANA LETTER TE
+30C7;ID # KATAKANA LETTER DE
+30C8;ID # KATAKANA LETTER TO
+30C9;ID # KATAKANA LETTER DO
+30CA;ID # KATAKANA LETTER NA
+30CB;ID # KATAKANA LETTER NI
+30CC;ID # KATAKANA LETTER NU
+30CD;ID # KATAKANA LETTER NE
+30CE;ID # KATAKANA LETTER NO
+30CF;ID # KATAKANA LETTER HA
+30D0;ID # KATAKANA LETTER BA
+30D1;ID # KATAKANA LETTER PA
+30D2;ID # KATAKANA LETTER HI
+30D3;ID # KATAKANA LETTER BI
+30D4;ID # KATAKANA LETTER PI
+30D5;ID # KATAKANA LETTER HU
+30D6;ID # KATAKANA LETTER BU
+30D7;ID # KATAKANA LETTER PU
+30D8;ID # KATAKANA LETTER HE
+30D9;ID # KATAKANA LETTER BE
+30DA;ID # KATAKANA LETTER PE
+30DB;ID # KATAKANA LETTER HO
+30DC;ID # KATAKANA LETTER BO
+30DD;ID # KATAKANA LETTER PO
+30DE;ID # KATAKANA LETTER MA
+30DF;ID # KATAKANA LETTER MI
+30E0;ID # KATAKANA LETTER MU
+30E1;ID # KATAKANA LETTER ME
+30E2;ID # KATAKANA LETTER MO
+30E3;NS # KATAKANA LETTER SMALL YA
+30E4;ID # KATAKANA LETTER YA
+30E5;NS # KATAKANA LETTER SMALL YU
+30E6;ID # KATAKANA LETTER YU
+30E7;NS # KATAKANA LETTER SMALL YO
+30E8;ID # KATAKANA LETTER YO
+30E9;ID # KATAKANA LETTER RA
+30EA;ID # KATAKANA LETTER RI
+30EB;ID # KATAKANA LETTER RU
+30EC;ID # KATAKANA LETTER RE
+30ED;ID # KATAKANA LETTER RO
+30EE;NS # KATAKANA LETTER SMALL WA
+30EF;ID # KATAKANA LETTER WA
+30F0;ID # KATAKANA LETTER WI
+30F1;ID # KATAKANA LETTER WE
+30F2;ID # KATAKANA LETTER WO
+30F3;ID # KATAKANA LETTER N
+30F4;ID # KATAKANA LETTER VU
+30F5;NS # KATAKANA LETTER SMALL KA
+30F6;NS # KATAKANA LETTER SMALL KE
+30F7;ID # KATAKANA LETTER VA
+30F8;ID # KATAKANA LETTER VI
+30F9;ID # KATAKANA LETTER VE
+30FA;ID # KATAKANA LETTER VO
+30FB;NS # KATAKANA MIDDLE DOT
+30FC;NS # KATAKANA-HIRAGANA PROLONGED SOUND MARK
+30FD;NS # KATAKANA ITERATION MARK
+30FE;NS # KATAKANA VOICED ITERATION MARK
+30FF;ID # KATAKANA DIGRAPH KOTO
+3105;ID # BOPOMOFO LETTER B
+3106;ID # BOPOMOFO LETTER P
+3107;ID # BOPOMOFO LETTER M
+3108;ID # BOPOMOFO LETTER F
+3109;ID # BOPOMOFO LETTER D
+310A;ID # BOPOMOFO LETTER T
+310B;ID # BOPOMOFO LETTER N
+310C;ID # BOPOMOFO LETTER L
+310D;ID # BOPOMOFO LETTER G
+310E;ID # BOPOMOFO LETTER K
+310F;ID # BOPOMOFO LETTER H
+3110;ID # BOPOMOFO LETTER J
+3111;ID # BOPOMOFO LETTER Q
+3112;ID # BOPOMOFO LETTER X
+3113;ID # BOPOMOFO LETTER ZH
+3114;ID # BOPOMOFO LETTER CH
+3115;ID # BOPOMOFO LETTER SH
+3116;ID # BOPOMOFO LETTER R
+3117;ID # BOPOMOFO LETTER Z
+3118;ID # BOPOMOFO LETTER C
+3119;ID # BOPOMOFO LETTER S
+311A;ID # BOPOMOFO LETTER A
+311B;ID # BOPOMOFO LETTER O
+311C;ID # BOPOMOFO LETTER E
+311D;ID # BOPOMOFO LETTER EH
+311E;ID # BOPOMOFO LETTER AI
+311F;ID # BOPOMOFO LETTER EI
+3120;ID # BOPOMOFO LETTER AU
+3121;ID # BOPOMOFO LETTER OU
+3122;ID # BOPOMOFO LETTER AN
+3123;ID # BOPOMOFO LETTER EN
+3124;ID # BOPOMOFO LETTER ANG
+3125;ID # BOPOMOFO LETTER ENG
+3126;ID # BOPOMOFO LETTER ER
+3127;ID # BOPOMOFO LETTER I
+3128;ID # BOPOMOFO LETTER U
+3129;ID # BOPOMOFO LETTER IU
+312A;ID # BOPOMOFO LETTER V
+312B;ID # BOPOMOFO LETTER NG
+312C;ID # BOPOMOFO LETTER GN
+3131;ID # HANGUL LETTER KIYEOK
+3132;ID # HANGUL LETTER SSANGKIYEOK
+3133;ID # HANGUL LETTER KIYEOK-SIOS
+3134;ID # HANGUL LETTER NIEUN
+3135;ID # HANGUL LETTER NIEUN-CIEUC
+3136;ID # HANGUL LETTER NIEUN-HIEUH
+3137;ID # HANGUL LETTER TIKEUT
+3138;ID # HANGUL LETTER SSANGTIKEUT
+3139;ID # HANGUL LETTER RIEUL
+313A;ID # HANGUL LETTER RIEUL-KIYEOK
+313B;ID # HANGUL LETTER RIEUL-MIEUM
+313C;ID # HANGUL LETTER RIEUL-PIEUP
+313D;ID # HANGUL LETTER RIEUL-SIOS
+313E;ID # HANGUL LETTER RIEUL-THIEUTH
+313F;ID # HANGUL LETTER RIEUL-PHIEUPH
+3140;ID # HANGUL LETTER RIEUL-HIEUH
+3141;ID # HANGUL LETTER MIEUM
+3142;ID # HANGUL LETTER PIEUP
+3143;ID # HANGUL LETTER SSANGPIEUP
+3144;ID # HANGUL LETTER PIEUP-SIOS
+3145;ID # HANGUL LETTER SIOS
+3146;ID # HANGUL LETTER SSANGSIOS
+3147;ID # HANGUL LETTER IEUNG
+3148;ID # HANGUL LETTER CIEUC
+3149;ID # HANGUL LETTER SSANGCIEUC
+314A;ID # HANGUL LETTER CHIEUCH
+314B;ID # HANGUL LETTER KHIEUKH
+314C;ID # HANGUL LETTER THIEUTH
+314D;ID # HANGUL LETTER PHIEUPH
+314E;ID # HANGUL LETTER HIEUH
+314F;ID # HANGUL LETTER A
+3150;ID # HANGUL LETTER AE
+3151;ID # HANGUL LETTER YA
+3152;ID # HANGUL LETTER YAE
+3153;ID # HANGUL LETTER EO
+3154;ID # HANGUL LETTER E
+3155;ID # HANGUL LETTER YEO
+3156;ID # HANGUL LETTER YE
+3157;ID # HANGUL LETTER O
+3158;ID # HANGUL LETTER WA
+3159;ID # HANGUL LETTER WAE
+315A;ID # HANGUL LETTER OE
+315B;ID # HANGUL LETTER YO
+315C;ID # HANGUL LETTER U
+315D;ID # HANGUL LETTER WEO
+315E;ID # HANGUL LETTER WE
+315F;ID # HANGUL LETTER WI
+3160;ID # HANGUL LETTER YU
+3161;ID # HANGUL LETTER EU
+3162;ID # HANGUL LETTER YI
+3163;ID # HANGUL LETTER I
+3164;ID # HANGUL FILLER
+3165;ID # HANGUL LETTER SSANGNIEUN
+3166;ID # HANGUL LETTER NIEUN-TIKEUT
+3167;ID # HANGUL LETTER NIEUN-SIOS
+3168;ID # HANGUL LETTER NIEUN-PANSIOS
+3169;ID # HANGUL LETTER RIEUL-KIYEOK-SIOS
+316A;ID # HANGUL LETTER RIEUL-TIKEUT
+316B;ID # HANGUL LETTER RIEUL-PIEUP-SIOS
+316C;ID # HANGUL LETTER RIEUL-PANSIOS
+316D;ID # HANGUL LETTER RIEUL-YEORINHIEUH
+316E;ID # HANGUL LETTER MIEUM-PIEUP
+316F;ID # HANGUL LETTER MIEUM-SIOS
+3170;ID # HANGUL LETTER MIEUM-PANSIOS
+3171;ID # HANGUL LETTER KAPYEOUNMIEUM
+3172;ID # HANGUL LETTER PIEUP-KIYEOK
+3173;ID # HANGUL LETTER PIEUP-TIKEUT
+3174;ID # HANGUL LETTER PIEUP-SIOS-KIYEOK
+3175;ID # HANGUL LETTER PIEUP-SIOS-TIKEUT
+3176;ID # HANGUL LETTER PIEUP-CIEUC
+3177;ID # HANGUL LETTER PIEUP-THIEUTH
+3178;ID # HANGUL LETTER KAPYEOUNPIEUP
+3179;ID # HANGUL LETTER KAPYEOUNSSANGPIEUP
+317A;ID # HANGUL LETTER SIOS-KIYEOK
+317B;ID # HANGUL LETTER SIOS-NIEUN
+317C;ID # HANGUL LETTER SIOS-TIKEUT
+317D;ID # HANGUL LETTER SIOS-PIEUP
+317E;ID # HANGUL LETTER SIOS-CIEUC
+317F;ID # HANGUL LETTER PANSIOS
+3180;ID # HANGUL LETTER SSANGIEUNG
+3181;ID # HANGUL LETTER YESIEUNG
+3182;ID # HANGUL LETTER YESIEUNG-SIOS
+3183;ID # HANGUL LETTER YESIEUNG-PANSIOS
+3184;ID # HANGUL LETTER KAPYEOUNPHIEUPH
+3185;ID # HANGUL LETTER SSANGHIEUH
+3186;ID # HANGUL LETTER YEORINHIEUH
+3187;ID # HANGUL LETTER YO-YA
+3188;ID # HANGUL LETTER YO-YAE
+3189;ID # HANGUL LETTER YO-I
+318A;ID # HANGUL LETTER YU-YEO
+318B;ID # HANGUL LETTER YU-YE
+318C;ID # HANGUL LETTER YU-I
+318D;ID # HANGUL LETTER ARAEA
+318E;ID # HANGUL LETTER ARAEAE
+3190;ID # IDEOGRAPHIC ANNOTATION LINKING MARK
+3191;ID # IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192;ID # IDEOGRAPHIC ANNOTATION ONE MARK
+3193;ID # IDEOGRAPHIC ANNOTATION TWO MARK
+3194;ID # IDEOGRAPHIC ANNOTATION THREE MARK
+3195;ID # IDEOGRAPHIC ANNOTATION FOUR MARK
+3196;ID # IDEOGRAPHIC ANNOTATION TOP MARK
+3197;ID # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+3198;ID # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+3199;ID # IDEOGRAPHIC ANNOTATION FIRST MARK
+319A;ID # IDEOGRAPHIC ANNOTATION SECOND MARK
+319B;ID # IDEOGRAPHIC ANNOTATION THIRD MARK
+319C;ID # IDEOGRAPHIC ANNOTATION FOURTH MARK
+319D;ID # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+319E;ID # IDEOGRAPHIC ANNOTATION EARTH MARK
+319F;ID # IDEOGRAPHIC ANNOTATION MAN MARK
+31A0;ID # BOPOMOFO LETTER BU
+31A1;ID # BOPOMOFO LETTER ZI
+31A2;ID # BOPOMOFO LETTER JI
+31A3;ID # BOPOMOFO LETTER GU
+31A4;ID # BOPOMOFO LETTER EE
+31A5;ID # BOPOMOFO LETTER ENN
+31A6;ID # BOPOMOFO LETTER OO
+31A7;ID # BOPOMOFO LETTER ONN
+31A8;ID # BOPOMOFO LETTER IR
+31A9;ID # BOPOMOFO LETTER ANN
+31AA;ID # BOPOMOFO LETTER INN
+31AB;ID # BOPOMOFO LETTER UNN
+31AC;ID # BOPOMOFO LETTER IM
+31AD;ID # BOPOMOFO LETTER NGG
+31AE;ID # BOPOMOFO LETTER AINN
+31AF;ID # BOPOMOFO LETTER AUNN
+31B0;ID # BOPOMOFO LETTER AM
+31B1;ID # BOPOMOFO LETTER OM
+31B2;ID # BOPOMOFO LETTER ONG
+31B3;ID # BOPOMOFO LETTER INNN
+31B4;ID # BOPOMOFO FINAL LETTER P
+31B5;ID # BOPOMOFO FINAL LETTER T
+31B6;ID # BOPOMOFO FINAL LETTER K
+31B7;ID # BOPOMOFO FINAL LETTER H
+31C0;ID # CJK STROKE T
+31C1;ID # CJK STROKE WG
+31C2;ID # CJK STROKE XG
+31C3;ID # CJK STROKE BXG
+31C4;ID # CJK STROKE SW
+31C5;ID # CJK STROKE HZZ
+31C6;ID # CJK STROKE HZG
+31C7;ID # CJK STROKE HP
+31C8;ID # CJK STROKE HZWG
+31C9;ID # CJK STROKE SZWG
+31CA;ID # CJK STROKE HZT
+31CB;ID # CJK STROKE HZZP
+31CC;ID # CJK STROKE HPWG
+31CD;ID # CJK STROKE HZW
+31CE;ID # CJK STROKE HZZZ
+31CF;ID # CJK STROKE N
+31F0;NS # KATAKANA LETTER SMALL KU
+31F1;NS # KATAKANA LETTER SMALL SI
+31F2;NS # KATAKANA LETTER SMALL SU
+31F3;NS # KATAKANA LETTER SMALL TO
+31F4;NS # KATAKANA LETTER SMALL NU
+31F5;NS # KATAKANA LETTER SMALL HA
+31F6;NS # KATAKANA LETTER SMALL HI
+31F7;NS # KATAKANA LETTER SMALL HU
+31F8;NS # KATAKANA LETTER SMALL HE
+31F9;NS # KATAKANA LETTER SMALL HO
+31FA;NS # KATAKANA LETTER SMALL MU
+31FB;NS # KATAKANA LETTER SMALL RA
+31FC;NS # KATAKANA LETTER SMALL RI
+31FD;NS # KATAKANA LETTER SMALL RU
+31FE;NS # KATAKANA LETTER SMALL RE
+31FF;NS # KATAKANA LETTER SMALL RO
+3200;ID # PARENTHESIZED HANGUL KIYEOK
+3201;ID # PARENTHESIZED HANGUL NIEUN
+3202;ID # PARENTHESIZED HANGUL TIKEUT
+3203;ID # PARENTHESIZED HANGUL RIEUL
+3204;ID # PARENTHESIZED HANGUL MIEUM
+3205;ID # PARENTHESIZED HANGUL PIEUP
+3206;ID # PARENTHESIZED HANGUL SIOS
+3207;ID # PARENTHESIZED HANGUL IEUNG
+3208;ID # PARENTHESIZED HANGUL CIEUC
+3209;ID # PARENTHESIZED HANGUL CHIEUCH
+320A;ID # PARENTHESIZED HANGUL KHIEUKH
+320B;ID # PARENTHESIZED HANGUL THIEUTH
+320C;ID # PARENTHESIZED HANGUL PHIEUPH
+320D;ID # PARENTHESIZED HANGUL HIEUH
+320E;ID # PARENTHESIZED HANGUL KIYEOK A
+320F;ID # PARENTHESIZED HANGUL NIEUN A
+3210;ID # PARENTHESIZED HANGUL TIKEUT A
+3211;ID # PARENTHESIZED HANGUL RIEUL A
+3212;ID # PARENTHESIZED HANGUL MIEUM A
+3213;ID # PARENTHESIZED HANGUL PIEUP A
+3214;ID # PARENTHESIZED HANGUL SIOS A
+3215;ID # PARENTHESIZED HANGUL IEUNG A
+3216;ID # PARENTHESIZED HANGUL CIEUC A
+3217;ID # PARENTHESIZED HANGUL CHIEUCH A
+3218;ID # PARENTHESIZED HANGUL KHIEUKH A
+3219;ID # PARENTHESIZED HANGUL THIEUTH A
+321A;ID # PARENTHESIZED HANGUL PHIEUPH A
+321B;ID # PARENTHESIZED HANGUL HIEUH A
+321C;ID # PARENTHESIZED HANGUL CIEUC U
+321D;ID # PARENTHESIZED KOREAN CHARACTER OJEON
+321E;ID # PARENTHESIZED KOREAN CHARACTER O HU
+3220;ID # PARENTHESIZED IDEOGRAPH ONE
+3221;ID # PARENTHESIZED IDEOGRAPH TWO
+3222;ID # PARENTHESIZED IDEOGRAPH THREE
+3223;ID # PARENTHESIZED IDEOGRAPH FOUR
+3224;ID # PARENTHESIZED IDEOGRAPH FIVE
+3225;ID # PARENTHESIZED IDEOGRAPH SIX
+3226;ID # PARENTHESIZED IDEOGRAPH SEVEN
+3227;ID # PARENTHESIZED IDEOGRAPH EIGHT
+3228;ID # PARENTHESIZED IDEOGRAPH NINE
+3229;ID # PARENTHESIZED IDEOGRAPH TEN
+322A;ID # PARENTHESIZED IDEOGRAPH MOON
+322B;ID # PARENTHESIZED IDEOGRAPH FIRE
+322C;ID # PARENTHESIZED IDEOGRAPH WATER
+322D;ID # PARENTHESIZED IDEOGRAPH WOOD
+322E;ID # PARENTHESIZED IDEOGRAPH METAL
+322F;ID # PARENTHESIZED IDEOGRAPH EARTH
+3230;ID # PARENTHESIZED IDEOGRAPH SUN
+3231;ID # PARENTHESIZED IDEOGRAPH STOCK
+3232;ID # PARENTHESIZED IDEOGRAPH HAVE
+3233;ID # PARENTHESIZED IDEOGRAPH SOCIETY
+3234;ID # PARENTHESIZED IDEOGRAPH NAME
+3235;ID # PARENTHESIZED IDEOGRAPH SPECIAL
+3236;ID # PARENTHESIZED IDEOGRAPH FINANCIAL
+3237;ID # PARENTHESIZED IDEOGRAPH CONGRATULATION
+3238;ID # PARENTHESIZED IDEOGRAPH LABOR
+3239;ID # PARENTHESIZED IDEOGRAPH REPRESENT
+323A;ID # PARENTHESIZED IDEOGRAPH CALL
+323B;ID # PARENTHESIZED IDEOGRAPH STUDY
+323C;ID # PARENTHESIZED IDEOGRAPH SUPERVISE
+323D;ID # PARENTHESIZED IDEOGRAPH ENTERPRISE
+323E;ID # PARENTHESIZED IDEOGRAPH RESOURCE
+323F;ID # PARENTHESIZED IDEOGRAPH ALLIANCE
+3240;ID # PARENTHESIZED IDEOGRAPH FESTIVAL
+3241;ID # PARENTHESIZED IDEOGRAPH REST
+3242;ID # PARENTHESIZED IDEOGRAPH SELF
+3243;ID # PARENTHESIZED IDEOGRAPH REACH
+3250;ID # PARTNERSHIP SIGN
+3251;ID # CIRCLED NUMBER TWENTY ONE
+3252;ID # CIRCLED NUMBER TWENTY TWO
+3253;ID # CIRCLED NUMBER TWENTY THREE
+3254;ID # CIRCLED NUMBER TWENTY FOUR
+3255;ID # CIRCLED NUMBER TWENTY FIVE
+3256;ID # CIRCLED NUMBER TWENTY SIX
+3257;ID # CIRCLED NUMBER TWENTY SEVEN
+3258;ID # CIRCLED NUMBER TWENTY EIGHT
+3259;ID # CIRCLED NUMBER TWENTY NINE
+325A;ID # CIRCLED NUMBER THIRTY
+325B;ID # CIRCLED NUMBER THIRTY ONE
+325C;ID # CIRCLED NUMBER THIRTY TWO
+325D;ID # CIRCLED NUMBER THIRTY THREE
+325E;ID # CIRCLED NUMBER THIRTY FOUR
+325F;ID # CIRCLED NUMBER THIRTY FIVE
+3260;ID # CIRCLED HANGUL KIYEOK
+3261;ID # CIRCLED HANGUL NIEUN
+3262;ID # CIRCLED HANGUL TIKEUT
+3263;ID # CIRCLED HANGUL RIEUL
+3264;ID # CIRCLED HANGUL MIEUM
+3265;ID # CIRCLED HANGUL PIEUP
+3266;ID # CIRCLED HANGUL SIOS
+3267;ID # CIRCLED HANGUL IEUNG
+3268;ID # CIRCLED HANGUL CIEUC
+3269;ID # CIRCLED HANGUL CHIEUCH
+326A;ID # CIRCLED HANGUL KHIEUKH
+326B;ID # CIRCLED HANGUL THIEUTH
+326C;ID # CIRCLED HANGUL PHIEUPH
+326D;ID # CIRCLED HANGUL HIEUH
+326E;ID # CIRCLED HANGUL KIYEOK A
+326F;ID # CIRCLED HANGUL NIEUN A
+3270;ID # CIRCLED HANGUL TIKEUT A
+3271;ID # CIRCLED HANGUL RIEUL A
+3272;ID # CIRCLED HANGUL MIEUM A
+3273;ID # CIRCLED HANGUL PIEUP A
+3274;ID # CIRCLED HANGUL SIOS A
+3275;ID # CIRCLED HANGUL IEUNG A
+3276;ID # CIRCLED HANGUL CIEUC A
+3277;ID # CIRCLED HANGUL CHIEUCH A
+3278;ID # CIRCLED HANGUL KHIEUKH A
+3279;ID # CIRCLED HANGUL THIEUTH A
+327A;ID # CIRCLED HANGUL PHIEUPH A
+327B;ID # CIRCLED HANGUL HIEUH A
+327C;ID # CIRCLED KOREAN CHARACTER CHAMKO
+327D;ID # CIRCLED KOREAN CHARACTER JUEUI
+327E;ID # CIRCLED HANGUL IEUNG U
+327F;ID # KOREAN STANDARD SYMBOL
+3280;ID # CIRCLED IDEOGRAPH ONE
+3281;ID # CIRCLED IDEOGRAPH TWO
+3282;ID # CIRCLED IDEOGRAPH THREE
+3283;ID # CIRCLED IDEOGRAPH FOUR
+3284;ID # CIRCLED IDEOGRAPH FIVE
+3285;ID # CIRCLED IDEOGRAPH SIX
+3286;ID # CIRCLED IDEOGRAPH SEVEN
+3287;ID # CIRCLED IDEOGRAPH EIGHT
+3288;ID # CIRCLED IDEOGRAPH NINE
+3289;ID # CIRCLED IDEOGRAPH TEN
+328A;ID # CIRCLED IDEOGRAPH MOON
+328B;ID # CIRCLED IDEOGRAPH FIRE
+328C;ID # CIRCLED IDEOGRAPH WATER
+328D;ID # CIRCLED IDEOGRAPH WOOD
+328E;ID # CIRCLED IDEOGRAPH METAL
+328F;ID # CIRCLED IDEOGRAPH EARTH
+3290;ID # CIRCLED IDEOGRAPH SUN
+3291;ID # CIRCLED IDEOGRAPH STOCK
+3292;ID # CIRCLED IDEOGRAPH HAVE
+3293;ID # CIRCLED IDEOGRAPH SOCIETY
+3294;ID # CIRCLED IDEOGRAPH NAME
+3295;ID # CIRCLED IDEOGRAPH SPECIAL
+3296;ID # CIRCLED IDEOGRAPH FINANCIAL
+3297;ID # CIRCLED IDEOGRAPH CONGRATULATION
+3298;ID # CIRCLED IDEOGRAPH LABOR
+3299;ID # CIRCLED IDEOGRAPH SECRET
+329A;ID # CIRCLED IDEOGRAPH MALE
+329B;ID # CIRCLED IDEOGRAPH FEMALE
+329C;ID # CIRCLED IDEOGRAPH SUITABLE
+329D;ID # CIRCLED IDEOGRAPH EXCELLENT
+329E;ID # CIRCLED IDEOGRAPH PRINT
+329F;ID # CIRCLED IDEOGRAPH ATTENTION
+32A0;ID # CIRCLED IDEOGRAPH ITEM
+32A1;ID # CIRCLED IDEOGRAPH REST
+32A2;ID # CIRCLED IDEOGRAPH COPY
+32A3;ID # CIRCLED IDEOGRAPH CORRECT
+32A4;ID # CIRCLED IDEOGRAPH HIGH
+32A5;ID # CIRCLED IDEOGRAPH CENTRE
+32A6;ID # CIRCLED IDEOGRAPH LOW
+32A7;ID # CIRCLED IDEOGRAPH LEFT
+32A8;ID # CIRCLED IDEOGRAPH RIGHT
+32A9;ID # CIRCLED IDEOGRAPH MEDICINE
+32AA;ID # CIRCLED IDEOGRAPH RELIGION
+32AB;ID # CIRCLED IDEOGRAPH STUDY
+32AC;ID # CIRCLED IDEOGRAPH SUPERVISE
+32AD;ID # CIRCLED IDEOGRAPH ENTERPRISE
+32AE;ID # CIRCLED IDEOGRAPH RESOURCE
+32AF;ID # CIRCLED IDEOGRAPH ALLIANCE
+32B0;ID # CIRCLED IDEOGRAPH NIGHT
+32B1;ID # CIRCLED NUMBER THIRTY SIX
+32B2;ID # CIRCLED NUMBER THIRTY SEVEN
+32B3;ID # CIRCLED NUMBER THIRTY EIGHT
+32B4;ID # CIRCLED NUMBER THIRTY NINE
+32B5;ID # CIRCLED NUMBER FORTY
+32B6;ID # CIRCLED NUMBER FORTY ONE
+32B7;ID # CIRCLED NUMBER FORTY TWO
+32B8;ID # CIRCLED NUMBER FORTY THREE
+32B9;ID # CIRCLED NUMBER FORTY FOUR
+32BA;ID # CIRCLED NUMBER FORTY FIVE
+32BB;ID # CIRCLED NUMBER FORTY SIX
+32BC;ID # CIRCLED NUMBER FORTY SEVEN
+32BD;ID # CIRCLED NUMBER FORTY EIGHT
+32BE;ID # CIRCLED NUMBER FORTY NINE
+32BF;ID # CIRCLED NUMBER FIFTY
+32C0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+32C1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+32C2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+32C3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+32C4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+32C5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+32C6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+32C7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+32C8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+32C9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+32CA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+32CB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+32CC;ID # SQUARE HG
+32CD;ID # SQUARE ERG
+32CE;ID # SQUARE EV
+32CF;ID # LIMITED LIABILITY SIGN
+32D0;ID # CIRCLED KATAKANA A
+32D1;ID # CIRCLED KATAKANA I
+32D2;ID # CIRCLED KATAKANA U
+32D3;ID # CIRCLED KATAKANA E
+32D4;ID # CIRCLED KATAKANA O
+32D5;ID # CIRCLED KATAKANA KA
+32D6;ID # CIRCLED KATAKANA KI
+32D7;ID # CIRCLED KATAKANA KU
+32D8;ID # CIRCLED KATAKANA KE
+32D9;ID # CIRCLED KATAKANA KO
+32DA;ID # CIRCLED KATAKANA SA
+32DB;ID # CIRCLED KATAKANA SI
+32DC;ID # CIRCLED KATAKANA SU
+32DD;ID # CIRCLED KATAKANA SE
+32DE;ID # CIRCLED KATAKANA SO
+32DF;ID # CIRCLED KATAKANA TA
+32E0;ID # CIRCLED KATAKANA TI
+32E1;ID # CIRCLED KATAKANA TU
+32E2;ID # CIRCLED KATAKANA TE
+32E3;ID # CIRCLED KATAKANA TO
+32E4;ID # CIRCLED KATAKANA NA
+32E5;ID # CIRCLED KATAKANA NI
+32E6;ID # CIRCLED KATAKANA NU
+32E7;ID # CIRCLED KATAKANA NE
+32E8;ID # CIRCLED KATAKANA NO
+32E9;ID # CIRCLED KATAKANA HA
+32EA;ID # CIRCLED KATAKANA HI
+32EB;ID # CIRCLED KATAKANA HU
+32EC;ID # CIRCLED KATAKANA HE
+32ED;ID # CIRCLED KATAKANA HO
+32EE;ID # CIRCLED KATAKANA MA
+32EF;ID # CIRCLED KATAKANA MI
+32F0;ID # CIRCLED KATAKANA MU
+32F1;ID # CIRCLED KATAKANA ME
+32F2;ID # CIRCLED KATAKANA MO
+32F3;ID # CIRCLED KATAKANA YA
+32F4;ID # CIRCLED KATAKANA YU
+32F5;ID # CIRCLED KATAKANA YO
+32F6;ID # CIRCLED KATAKANA RA
+32F7;ID # CIRCLED KATAKANA RI
+32F8;ID # CIRCLED KATAKANA RU
+32F9;ID # CIRCLED KATAKANA RE
+32FA;ID # CIRCLED KATAKANA RO
+32FB;ID # CIRCLED KATAKANA WA
+32FC;ID # CIRCLED KATAKANA WI
+32FD;ID # CIRCLED KATAKANA WE
+32FE;ID # CIRCLED KATAKANA WO
+3300;ID # SQUARE APAATO
+3301;ID # SQUARE ARUHUA
+3302;ID # SQUARE ANPEA
+3303;ID # SQUARE AARU
+3304;ID # SQUARE ININGU
+3305;ID # SQUARE INTI
+3306;ID # SQUARE UON
+3307;ID # SQUARE ESUKUUDO
+3308;ID # SQUARE EEKAA
+3309;ID # SQUARE ONSU
+330A;ID # SQUARE OOMU
+330B;ID # SQUARE KAIRI
+330C;ID # SQUARE KARATTO
+330D;ID # SQUARE KARORII
+330E;ID # SQUARE GARON
+330F;ID # SQUARE GANMA
+3310;ID # SQUARE GIGA
+3311;ID # SQUARE GINII
+3312;ID # SQUARE KYURII
+3313;ID # SQUARE GIRUDAA
+3314;ID # SQUARE KIRO
+3315;ID # SQUARE KIROGURAMU
+3316;ID # SQUARE KIROMEETORU
+3317;ID # SQUARE KIROWATTO
+3318;ID # SQUARE GURAMU
+3319;ID # SQUARE GURAMUTON
+331A;ID # SQUARE KURUZEIRO
+331B;ID # SQUARE KUROONE
+331C;ID # SQUARE KEESU
+331D;ID # SQUARE KORUNA
+331E;ID # SQUARE KOOPO
+331F;ID # SQUARE SAIKURU
+3320;ID # SQUARE SANTIIMU
+3321;ID # SQUARE SIRINGU
+3322;ID # SQUARE SENTI
+3323;ID # SQUARE SENTO
+3324;ID # SQUARE DAASU
+3325;ID # SQUARE DESI
+3326;ID # SQUARE DORU
+3327;ID # SQUARE TON
+3328;ID # SQUARE NANO
+3329;ID # SQUARE NOTTO
+332A;ID # SQUARE HAITU
+332B;ID # SQUARE PAASENTO
+332C;ID # SQUARE PAATU
+332D;ID # SQUARE BAARERU
+332E;ID # SQUARE PIASUTORU
+332F;ID # SQUARE PIKURU
+3330;ID # SQUARE PIKO
+3331;ID # SQUARE BIRU
+3332;ID # SQUARE HUARADDO
+3333;ID # SQUARE HUIITO
+3334;ID # SQUARE BUSSYERU
+3335;ID # SQUARE HURAN
+3336;ID # SQUARE HEKUTAARU
+3337;ID # SQUARE PESO
+3338;ID # SQUARE PENIHI
+3339;ID # SQUARE HERUTU
+333A;ID # SQUARE PENSU
+333B;ID # SQUARE PEEZI
+333C;ID # SQUARE BEETA
+333D;ID # SQUARE POINTO
+333E;ID # SQUARE BORUTO
+333F;ID # SQUARE HON
+3340;ID # SQUARE PONDO
+3341;ID # SQUARE HOORU
+3342;ID # SQUARE HOON
+3343;ID # SQUARE MAIKURO
+3344;ID # SQUARE MAIRU
+3345;ID # SQUARE MAHHA
+3346;ID # SQUARE MARUKU
+3347;ID # SQUARE MANSYON
+3348;ID # SQUARE MIKURON
+3349;ID # SQUARE MIRI
+334A;ID # SQUARE MIRIBAARU
+334B;ID # SQUARE MEGA
+334C;ID # SQUARE MEGATON
+334D;ID # SQUARE MEETORU
+334E;ID # SQUARE YAADO
+334F;ID # SQUARE YAARU
+3350;ID # SQUARE YUAN
+3351;ID # SQUARE RITTORU
+3352;ID # SQUARE RIRA
+3353;ID # SQUARE RUPII
+3354;ID # SQUARE RUUBURU
+3355;ID # SQUARE REMU
+3356;ID # SQUARE RENTOGEN
+3357;ID # SQUARE WATTO
+3358;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+3359;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+335A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+335B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+335C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+335D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+335E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+335F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+3360;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+3361;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+3362;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+3363;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+3364;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+3365;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+3366;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+3367;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+3368;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+3369;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+336A;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+336B;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+336C;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+336D;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+336E;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+336F;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3370;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3371;ID # SQUARE HPA
+3372;ID # SQUARE DA
+3373;ID # SQUARE AU
+3374;ID # SQUARE BAR
+3375;ID # SQUARE OV
+3376;ID # SQUARE PC
+3377;ID # SQUARE DM
+3378;ID # SQUARE DM SQUARED
+3379;ID # SQUARE DM CUBED
+337A;ID # SQUARE IU
+337B;ID # SQUARE ERA NAME HEISEI
+337C;ID # SQUARE ERA NAME SYOUWA
+337D;ID # SQUARE ERA NAME TAISYOU
+337E;ID # SQUARE ERA NAME MEIZI
+337F;ID # SQUARE CORPORATION
+3380;ID # SQUARE PA AMPS
+3381;ID # SQUARE NA
+3382;ID # SQUARE MU A
+3383;ID # SQUARE MA
+3384;ID # SQUARE KA
+3385;ID # SQUARE KB
+3386;ID # SQUARE MB
+3387;ID # SQUARE GB
+3388;ID # SQUARE CAL
+3389;ID # SQUARE KCAL
+338A;ID # SQUARE PF
+338B;ID # SQUARE NF
+338C;ID # SQUARE MU F
+338D;ID # SQUARE MU G
+338E;ID # SQUARE MG
+338F;ID # SQUARE KG
+3390;ID # SQUARE HZ
+3391;ID # SQUARE KHZ
+3392;ID # SQUARE MHZ
+3393;ID # SQUARE GHZ
+3394;ID # SQUARE THZ
+3395;ID # SQUARE MU L
+3396;ID # SQUARE ML
+3397;ID # SQUARE DL
+3398;ID # SQUARE KL
+3399;ID # SQUARE FM
+339A;ID # SQUARE NM
+339B;ID # SQUARE MU M
+339C;ID # SQUARE MM
+339D;ID # SQUARE CM
+339E;ID # SQUARE KM
+339F;ID # SQUARE MM SQUARED
+33A0;ID # SQUARE CM SQUARED
+33A1;ID # SQUARE M SQUARED
+33A2;ID # SQUARE KM SQUARED
+33A3;ID # SQUARE MM CUBED
+33A4;ID # SQUARE CM CUBED
+33A5;ID # SQUARE M CUBED
+33A6;ID # SQUARE KM CUBED
+33A7;ID # SQUARE M OVER S
+33A8;ID # SQUARE M OVER S SQUARED
+33A9;ID # SQUARE PA
+33AA;ID # SQUARE KPA
+33AB;ID # SQUARE MPA
+33AC;ID # SQUARE GPA
+33AD;ID # SQUARE RAD
+33AE;ID # SQUARE RAD OVER S
+33AF;ID # SQUARE RAD OVER S SQUARED
+33B0;ID # SQUARE PS
+33B1;ID # SQUARE NS
+33B2;ID # SQUARE MU S
+33B3;ID # SQUARE MS
+33B4;ID # SQUARE PV
+33B5;ID # SQUARE NV
+33B6;ID # SQUARE MU V
+33B7;ID # SQUARE MV
+33B8;ID # SQUARE KV
+33B9;ID # SQUARE MV MEGA
+33BA;ID # SQUARE PW
+33BB;ID # SQUARE NW
+33BC;ID # SQUARE MU W
+33BD;ID # SQUARE MW
+33BE;ID # SQUARE KW
+33BF;ID # SQUARE MW MEGA
+33C0;ID # SQUARE K OHM
+33C1;ID # SQUARE M OHM
+33C2;ID # SQUARE AM
+33C3;ID # SQUARE BQ
+33C4;ID # SQUARE CC
+33C5;ID # SQUARE CD
+33C6;ID # SQUARE C OVER KG
+33C7;ID # SQUARE CO
+33C8;ID # SQUARE DB
+33C9;ID # SQUARE GY
+33CA;ID # SQUARE HA
+33CB;ID # SQUARE HP
+33CC;ID # SQUARE IN
+33CD;ID # SQUARE KK
+33CE;ID # SQUARE KM CAPITAL
+33CF;ID # SQUARE KT
+33D0;ID # SQUARE LM
+33D1;ID # SQUARE LN
+33D2;ID # SQUARE LOG
+33D3;ID # SQUARE LX
+33D4;ID # SQUARE MB SMALL
+33D5;ID # SQUARE MIL
+33D6;ID # SQUARE MOL
+33D7;ID # SQUARE PH
+33D8;ID # SQUARE PM
+33D9;ID # SQUARE PPM
+33DA;ID # SQUARE PR
+33DB;ID # SQUARE SR
+33DC;ID # SQUARE SV
+33DD;ID # SQUARE WB
+33DE;ID # SQUARE V OVER M
+33DF;ID # SQUARE A OVER M
+33E0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+33E1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+33E2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+33E3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+33E4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+33E5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+33E6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+33E7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+33E8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+33E9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+33EA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+33EB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+33EC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+33ED;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+33EE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+33EF;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+33F0;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+33F1;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+33F2;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+33F3;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+33F4;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+33F5;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+33F6;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+33F7;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+33F8;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33FD;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE;ID # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+33FF;ID # SQUARE GAL
+3400..4DB5;ID # <CJK Ideograph Extension A, First>..<CJK Ideograph Extension A, Last>
+4DC0;AL # HEXAGRAM FOR THE CREATIVE HEAVEN
+4DC1;AL # HEXAGRAM FOR THE RECEPTIVE EARTH
+4DC2;AL # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
+4DC3;AL # HEXAGRAM FOR YOUTHFUL FOLLY
+4DC4;AL # HEXAGRAM FOR WAITING
+4DC5;AL # HEXAGRAM FOR CONFLICT
+4DC6;AL # HEXAGRAM FOR THE ARMY
+4DC7;AL # HEXAGRAM FOR HOLDING TOGETHER
+4DC8;AL # HEXAGRAM FOR SMALL TAMING
+4DC9;AL # HEXAGRAM FOR TREADING
+4DCA;AL # HEXAGRAM FOR PEACE
+4DCB;AL # HEXAGRAM FOR STANDSTILL
+4DCC;AL # HEXAGRAM FOR FELLOWSHIP
+4DCD;AL # HEXAGRAM FOR GREAT POSSESSION
+4DCE;AL # HEXAGRAM FOR MODESTY
+4DCF;AL # HEXAGRAM FOR ENTHUSIASM
+4DD0;AL # HEXAGRAM FOR FOLLOWING
+4DD1;AL # HEXAGRAM FOR WORK ON THE DECAYED
+4DD2;AL # HEXAGRAM FOR APPROACH
+4DD3;AL # HEXAGRAM FOR CONTEMPLATION
+4DD4;AL # HEXAGRAM FOR BITING THROUGH
+4DD5;AL # HEXAGRAM FOR GRACE
+4DD6;AL # HEXAGRAM FOR SPLITTING APART
+4DD7;AL # HEXAGRAM FOR RETURN
+4DD8;AL # HEXAGRAM FOR INNOCENCE
+4DD9;AL # HEXAGRAM FOR GREAT TAMING
+4DDA;AL # HEXAGRAM FOR MOUTH CORNERS
+4DDB;AL # HEXAGRAM FOR GREAT PREPONDERANCE
+4DDC;AL # HEXAGRAM FOR THE ABYSMAL WATER
+4DDD;AL # HEXAGRAM FOR THE CLINGING FIRE
+4DDE;AL # HEXAGRAM FOR INFLUENCE
+4DDF;AL # HEXAGRAM FOR DURATION
+4DE0;AL # HEXAGRAM FOR RETREAT
+4DE1;AL # HEXAGRAM FOR GREAT POWER
+4DE2;AL # HEXAGRAM FOR PROGRESS
+4DE3;AL # HEXAGRAM FOR DARKENING OF THE LIGHT
+4DE4;AL # HEXAGRAM FOR THE FAMILY
+4DE5;AL # HEXAGRAM FOR OPPOSITION
+4DE6;AL # HEXAGRAM FOR OBSTRUCTION
+4DE7;AL # HEXAGRAM FOR DELIVERANCE
+4DE8;AL # HEXAGRAM FOR DECREASE
+4DE9;AL # HEXAGRAM FOR INCREASE
+4DEA;AL # HEXAGRAM FOR BREAKTHROUGH
+4DEB;AL # HEXAGRAM FOR COMING TO MEET
+4DEC;AL # HEXAGRAM FOR GATHERING TOGETHER
+4DED;AL # HEXAGRAM FOR PUSHING UPWARD
+4DEE;AL # HEXAGRAM FOR OPPRESSION
+4DEF;AL # HEXAGRAM FOR THE WELL
+4DF0;AL # HEXAGRAM FOR REVOLUTION
+4DF1;AL # HEXAGRAM FOR THE CAULDRON
+4DF2;AL # HEXAGRAM FOR THE AROUSING THUNDER
+4DF3;AL # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
+4DF4;AL # HEXAGRAM FOR DEVELOPMENT
+4DF5;AL # HEXAGRAM FOR THE MARRYING MAIDEN
+4DF6;AL # HEXAGRAM FOR ABUNDANCE
+4DF7;AL # HEXAGRAM FOR THE WANDERER
+4DF8;AL # HEXAGRAM FOR THE GENTLE WIND
+4DF9;AL # HEXAGRAM FOR THE JOYOUS LAKE
+4DFA;AL # HEXAGRAM FOR DISPERSION
+4DFB;AL # HEXAGRAM FOR LIMITATION
+4DFC;AL # HEXAGRAM FOR INNER TRUTH
+4DFD;AL # HEXAGRAM FOR SMALL PREPONDERANCE
+4DFE;AL # HEXAGRAM FOR AFTER COMPLETION
+4DFF;AL # HEXAGRAM FOR BEFORE COMPLETION
+4E00..9FBB;ID # <CJK Ideograph, First>..<CJK Ideograph, Last>
+A000;ID # YI SYLLABLE IT
+A001;ID # YI SYLLABLE IX
+A002;ID # YI SYLLABLE I
+A003;ID # YI SYLLABLE IP
+A004;ID # YI SYLLABLE IET
+A005;ID # YI SYLLABLE IEX
+A006;ID # YI SYLLABLE IE
+A007;ID # YI SYLLABLE IEP
+A008;ID # YI SYLLABLE AT
+A009;ID # YI SYLLABLE AX
+A00A;ID # YI SYLLABLE A
+A00B;ID # YI SYLLABLE AP
+A00C;ID # YI SYLLABLE UOX
+A00D;ID # YI SYLLABLE UO
+A00E;ID # YI SYLLABLE UOP
+A00F;ID # YI SYLLABLE OT
+A010;ID # YI SYLLABLE OX
+A011;ID # YI SYLLABLE O
+A012;ID # YI SYLLABLE OP
+A013;ID # YI SYLLABLE EX
+A014;ID # YI SYLLABLE E
+A015;NS # YI SYLLABLE WU
+A016;ID # YI SYLLABLE BIT
+A017;ID # YI SYLLABLE BIX
+A018;ID # YI SYLLABLE BI
+A019;ID # YI SYLLABLE BIP
+A01A;ID # YI SYLLABLE BIET
+A01B;ID # YI SYLLABLE BIEX
+A01C;ID # YI SYLLABLE BIE
+A01D;ID # YI SYLLABLE BIEP
+A01E;ID # YI SYLLABLE BAT
+A01F;ID # YI SYLLABLE BAX
+A020;ID # YI SYLLABLE BA
+A021;ID # YI SYLLABLE BAP
+A022;ID # YI SYLLABLE BUOX
+A023;ID # YI SYLLABLE BUO
+A024;ID # YI SYLLABLE BUOP
+A025;ID # YI SYLLABLE BOT
+A026;ID # YI SYLLABLE BOX
+A027;ID # YI SYLLABLE BO
+A028;ID # YI SYLLABLE BOP
+A029;ID # YI SYLLABLE BEX
+A02A;ID # YI SYLLABLE BE
+A02B;ID # YI SYLLABLE BEP
+A02C;ID # YI SYLLABLE BUT
+A02D;ID # YI SYLLABLE BUX
+A02E;ID # YI SYLLABLE BU
+A02F;ID # YI SYLLABLE BUP
+A030;ID # YI SYLLABLE BURX
+A031;ID # YI SYLLABLE BUR
+A032;ID # YI SYLLABLE BYT
+A033;ID # YI SYLLABLE BYX
+A034;ID # YI SYLLABLE BY
+A035;ID # YI SYLLABLE BYP
+A036;ID # YI SYLLABLE BYRX
+A037;ID # YI SYLLABLE BYR
+A038;ID # YI SYLLABLE PIT
+A039;ID # YI SYLLABLE PIX
+A03A;ID # YI SYLLABLE PI
+A03B;ID # YI SYLLABLE PIP
+A03C;ID # YI SYLLABLE PIEX
+A03D;ID # YI SYLLABLE PIE
+A03E;ID # YI SYLLABLE PIEP
+A03F;ID # YI SYLLABLE PAT
+A040;ID # YI SYLLABLE PAX
+A041;ID # YI SYLLABLE PA
+A042;ID # YI SYLLABLE PAP
+A043;ID # YI SYLLABLE PUOX
+A044;ID # YI SYLLABLE PUO
+A045;ID # YI SYLLABLE PUOP
+A046;ID # YI SYLLABLE POT
+A047;ID # YI SYLLABLE POX
+A048;ID # YI SYLLABLE PO
+A049;ID # YI SYLLABLE POP
+A04A;ID # YI SYLLABLE PUT
+A04B;ID # YI SYLLABLE PUX
+A04C;ID # YI SYLLABLE PU
+A04D;ID # YI SYLLABLE PUP
+A04E;ID # YI SYLLABLE PURX
+A04F;ID # YI SYLLABLE PUR
+A050;ID # YI SYLLABLE PYT
+A051;ID # YI SYLLABLE PYX
+A052;ID # YI SYLLABLE PY
+A053;ID # YI SYLLABLE PYP
+A054;ID # YI SYLLABLE PYRX
+A055;ID # YI SYLLABLE PYR
+A056;ID # YI SYLLABLE BBIT
+A057;ID # YI SYLLABLE BBIX
+A058;ID # YI SYLLABLE BBI
+A059;ID # YI SYLLABLE BBIP
+A05A;ID # YI SYLLABLE BBIET
+A05B;ID # YI SYLLABLE BBIEX
+A05C;ID # YI SYLLABLE BBIE
+A05D;ID # YI SYLLABLE BBIEP
+A05E;ID # YI SYLLABLE BBAT
+A05F;ID # YI SYLLABLE BBAX
+A060;ID # YI SYLLABLE BBA
+A061;ID # YI SYLLABLE BBAP
+A062;ID # YI SYLLABLE BBUOX
+A063;ID # YI SYLLABLE BBUO
+A064;ID # YI SYLLABLE BBUOP
+A065;ID # YI SYLLABLE BBOT
+A066;ID # YI SYLLABLE BBOX
+A067;ID # YI SYLLABLE BBO
+A068;ID # YI SYLLABLE BBOP
+A069;ID # YI SYLLABLE BBEX
+A06A;ID # YI SYLLABLE BBE
+A06B;ID # YI SYLLABLE BBEP
+A06C;ID # YI SYLLABLE BBUT
+A06D;ID # YI SYLLABLE BBUX
+A06E;ID # YI SYLLABLE BBU
+A06F;ID # YI SYLLABLE BBUP
+A070;ID # YI SYLLABLE BBURX
+A071;ID # YI SYLLABLE BBUR
+A072;ID # YI SYLLABLE BBYT
+A073;ID # YI SYLLABLE BBYX
+A074;ID # YI SYLLABLE BBY
+A075;ID # YI SYLLABLE BBYP
+A076;ID # YI SYLLABLE NBIT
+A077;ID # YI SYLLABLE NBIX
+A078;ID # YI SYLLABLE NBI
+A079;ID # YI SYLLABLE NBIP
+A07A;ID # YI SYLLABLE NBIEX
+A07B;ID # YI SYLLABLE NBIE
+A07C;ID # YI SYLLABLE NBIEP
+A07D;ID # YI SYLLABLE NBAT
+A07E;ID # YI SYLLABLE NBAX
+A07F;ID # YI SYLLABLE NBA
+A080;ID # YI SYLLABLE NBAP
+A081;ID # YI SYLLABLE NBOT
+A082;ID # YI SYLLABLE NBOX
+A083;ID # YI SYLLABLE NBO
+A084;ID # YI SYLLABLE NBOP
+A085;ID # YI SYLLABLE NBUT
+A086;ID # YI SYLLABLE NBUX
+A087;ID # YI SYLLABLE NBU
+A088;ID # YI SYLLABLE NBUP
+A089;ID # YI SYLLABLE NBURX
+A08A;ID # YI SYLLABLE NBUR
+A08B;ID # YI SYLLABLE NBYT
+A08C;ID # YI SYLLABLE NBYX
+A08D;ID # YI SYLLABLE NBY
+A08E;ID # YI SYLLABLE NBYP
+A08F;ID # YI SYLLABLE NBYRX
+A090;ID # YI SYLLABLE NBYR
+A091;ID # YI SYLLABLE HMIT
+A092;ID # YI SYLLABLE HMIX
+A093;ID # YI SYLLABLE HMI
+A094;ID # YI SYLLABLE HMIP
+A095;ID # YI SYLLABLE HMIEX
+A096;ID # YI SYLLABLE HMIE
+A097;ID # YI SYLLABLE HMIEP
+A098;ID # YI SYLLABLE HMAT
+A099;ID # YI SYLLABLE HMAX
+A09A;ID # YI SYLLABLE HMA
+A09B;ID # YI SYLLABLE HMAP
+A09C;ID # YI SYLLABLE HMUOX
+A09D;ID # YI SYLLABLE HMUO
+A09E;ID # YI SYLLABLE HMUOP
+A09F;ID # YI SYLLABLE HMOT
+A0A0;ID # YI SYLLABLE HMOX
+A0A1;ID # YI SYLLABLE HMO
+A0A2;ID # YI SYLLABLE HMOP
+A0A3;ID # YI SYLLABLE HMUT
+A0A4;ID # YI SYLLABLE HMUX
+A0A5;ID # YI SYLLABLE HMU
+A0A6;ID # YI SYLLABLE HMUP
+A0A7;ID # YI SYLLABLE HMURX
+A0A8;ID # YI SYLLABLE HMUR
+A0A9;ID # YI SYLLABLE HMYX
+A0AA;ID # YI SYLLABLE HMY
+A0AB;ID # YI SYLLABLE HMYP
+A0AC;ID # YI SYLLABLE HMYRX
+A0AD;ID # YI SYLLABLE HMYR
+A0AE;ID # YI SYLLABLE MIT
+A0AF;ID # YI SYLLABLE MIX
+A0B0;ID # YI SYLLABLE MI
+A0B1;ID # YI SYLLABLE MIP
+A0B2;ID # YI SYLLABLE MIEX
+A0B3;ID # YI SYLLABLE MIE
+A0B4;ID # YI SYLLABLE MIEP
+A0B5;ID # YI SYLLABLE MAT
+A0B6;ID # YI SYLLABLE MAX
+A0B7;ID # YI SYLLABLE MA
+A0B8;ID # YI SYLLABLE MAP
+A0B9;ID # YI SYLLABLE MUOT
+A0BA;ID # YI SYLLABLE MUOX
+A0BB;ID # YI SYLLABLE MUO
+A0BC;ID # YI SYLLABLE MUOP
+A0BD;ID # YI SYLLABLE MOT
+A0BE;ID # YI SYLLABLE MOX
+A0BF;ID # YI SYLLABLE MO
+A0C0;ID # YI SYLLABLE MOP
+A0C1;ID # YI SYLLABLE MEX
+A0C2;ID # YI SYLLABLE ME
+A0C3;ID # YI SYLLABLE MUT
+A0C4;ID # YI SYLLABLE MUX
+A0C5;ID # YI SYLLABLE MU
+A0C6;ID # YI SYLLABLE MUP
+A0C7;ID # YI SYLLABLE MURX
+A0C8;ID # YI SYLLABLE MUR
+A0C9;ID # YI SYLLABLE MYT
+A0CA;ID # YI SYLLABLE MYX
+A0CB;ID # YI SYLLABLE MY
+A0CC;ID # YI SYLLABLE MYP
+A0CD;ID # YI SYLLABLE FIT
+A0CE;ID # YI SYLLABLE FIX
+A0CF;ID # YI SYLLABLE FI
+A0D0;ID # YI SYLLABLE FIP
+A0D1;ID # YI SYLLABLE FAT
+A0D2;ID # YI SYLLABLE FAX
+A0D3;ID # YI SYLLABLE FA
+A0D4;ID # YI SYLLABLE FAP
+A0D5;ID # YI SYLLABLE FOX
+A0D6;ID # YI SYLLABLE FO
+A0D7;ID # YI SYLLABLE FOP
+A0D8;ID # YI SYLLABLE FUT
+A0D9;ID # YI SYLLABLE FUX
+A0DA;ID # YI SYLLABLE FU
+A0DB;ID # YI SYLLABLE FUP
+A0DC;ID # YI SYLLABLE FURX
+A0DD;ID # YI SYLLABLE FUR
+A0DE;ID # YI SYLLABLE FYT
+A0DF;ID # YI SYLLABLE FYX
+A0E0;ID # YI SYLLABLE FY
+A0E1;ID # YI SYLLABLE FYP
+A0E2;ID # YI SYLLABLE VIT
+A0E3;ID # YI SYLLABLE VIX
+A0E4;ID # YI SYLLABLE VI
+A0E5;ID # YI SYLLABLE VIP
+A0E6;ID # YI SYLLABLE VIET
+A0E7;ID # YI SYLLABLE VIEX
+A0E8;ID # YI SYLLABLE VIE
+A0E9;ID # YI SYLLABLE VIEP
+A0EA;ID # YI SYLLABLE VAT
+A0EB;ID # YI SYLLABLE VAX
+A0EC;ID # YI SYLLABLE VA
+A0ED;ID # YI SYLLABLE VAP
+A0EE;ID # YI SYLLABLE VOT
+A0EF;ID # YI SYLLABLE VOX
+A0F0;ID # YI SYLLABLE VO
+A0F1;ID # YI SYLLABLE VOP
+A0F2;ID # YI SYLLABLE VEX
+A0F3;ID # YI SYLLABLE VEP
+A0F4;ID # YI SYLLABLE VUT
+A0F5;ID # YI SYLLABLE VUX
+A0F6;ID # YI SYLLABLE VU
+A0F7;ID # YI SYLLABLE VUP
+A0F8;ID # YI SYLLABLE VURX
+A0F9;ID # YI SYLLABLE VUR
+A0FA;ID # YI SYLLABLE VYT
+A0FB;ID # YI SYLLABLE VYX
+A0FC;ID # YI SYLLABLE VY
+A0FD;ID # YI SYLLABLE VYP
+A0FE;ID # YI SYLLABLE VYRX
+A0FF;ID # YI SYLLABLE VYR
+A100;ID # YI SYLLABLE DIT
+A101;ID # YI SYLLABLE DIX
+A102;ID # YI SYLLABLE DI
+A103;ID # YI SYLLABLE DIP
+A104;ID # YI SYLLABLE DIEX
+A105;ID # YI SYLLABLE DIE
+A106;ID # YI SYLLABLE DIEP
+A107;ID # YI SYLLABLE DAT
+A108;ID # YI SYLLABLE DAX
+A109;ID # YI SYLLABLE DA
+A10A;ID # YI SYLLABLE DAP
+A10B;ID # YI SYLLABLE DUOX
+A10C;ID # YI SYLLABLE DUO
+A10D;ID # YI SYLLABLE DOT
+A10E;ID # YI SYLLABLE DOX
+A10F;ID # YI SYLLABLE DO
+A110;ID # YI SYLLABLE DOP
+A111;ID # YI SYLLABLE DEX
+A112;ID # YI SYLLABLE DE
+A113;ID # YI SYLLABLE DEP
+A114;ID # YI SYLLABLE DUT
+A115;ID # YI SYLLABLE DUX
+A116;ID # YI SYLLABLE DU
+A117;ID # YI SYLLABLE DUP
+A118;ID # YI SYLLABLE DURX
+A119;ID # YI SYLLABLE DUR
+A11A;ID # YI SYLLABLE TIT
+A11B;ID # YI SYLLABLE TIX
+A11C;ID # YI SYLLABLE TI
+A11D;ID # YI SYLLABLE TIP
+A11E;ID # YI SYLLABLE TIEX
+A11F;ID # YI SYLLABLE TIE
+A120;ID # YI SYLLABLE TIEP
+A121;ID # YI SYLLABLE TAT
+A122;ID # YI SYLLABLE TAX
+A123;ID # YI SYLLABLE TA
+A124;ID # YI SYLLABLE TAP
+A125;ID # YI SYLLABLE TUOT
+A126;ID # YI SYLLABLE TUOX
+A127;ID # YI SYLLABLE TUO
+A128;ID # YI SYLLABLE TUOP
+A129;ID # YI SYLLABLE TOT
+A12A;ID # YI SYLLABLE TOX
+A12B;ID # YI SYLLABLE TO
+A12C;ID # YI SYLLABLE TOP
+A12D;ID # YI SYLLABLE TEX
+A12E;ID # YI SYLLABLE TE
+A12F;ID # YI SYLLABLE TEP
+A130;ID # YI SYLLABLE TUT
+A131;ID # YI SYLLABLE TUX
+A132;ID # YI SYLLABLE TU
+A133;ID # YI SYLLABLE TUP
+A134;ID # YI SYLLABLE TURX
+A135;ID # YI SYLLABLE TUR
+A136;ID # YI SYLLABLE DDIT
+A137;ID # YI SYLLABLE DDIX
+A138;ID # YI SYLLABLE DDI
+A139;ID # YI SYLLABLE DDIP
+A13A;ID # YI SYLLABLE DDIEX
+A13B;ID # YI SYLLABLE DDIE
+A13C;ID # YI SYLLABLE DDIEP
+A13D;ID # YI SYLLABLE DDAT
+A13E;ID # YI SYLLABLE DDAX
+A13F;ID # YI SYLLABLE DDA
+A140;ID # YI SYLLABLE DDAP
+A141;ID # YI SYLLABLE DDUOX
+A142;ID # YI SYLLABLE DDUO
+A143;ID # YI SYLLABLE DDUOP
+A144;ID # YI SYLLABLE DDOT
+A145;ID # YI SYLLABLE DDOX
+A146;ID # YI SYLLABLE DDO
+A147;ID # YI SYLLABLE DDOP
+A148;ID # YI SYLLABLE DDEX
+A149;ID # YI SYLLABLE DDE
+A14A;ID # YI SYLLABLE DDEP
+A14B;ID # YI SYLLABLE DDUT
+A14C;ID # YI SYLLABLE DDUX
+A14D;ID # YI SYLLABLE DDU
+A14E;ID # YI SYLLABLE DDUP
+A14F;ID # YI SYLLABLE DDURX
+A150;ID # YI SYLLABLE DDUR
+A151;ID # YI SYLLABLE NDIT
+A152;ID # YI SYLLABLE NDIX
+A153;ID # YI SYLLABLE NDI
+A154;ID # YI SYLLABLE NDIP
+A155;ID # YI SYLLABLE NDIEX
+A156;ID # YI SYLLABLE NDIE
+A157;ID # YI SYLLABLE NDAT
+A158;ID # YI SYLLABLE NDAX
+A159;ID # YI SYLLABLE NDA
+A15A;ID # YI SYLLABLE NDAP
+A15B;ID # YI SYLLABLE NDOT
+A15C;ID # YI SYLLABLE NDOX
+A15D;ID # YI SYLLABLE NDO
+A15E;ID # YI SYLLABLE NDOP
+A15F;ID # YI SYLLABLE NDEX
+A160;ID # YI SYLLABLE NDE
+A161;ID # YI SYLLABLE NDEP
+A162;ID # YI SYLLABLE NDUT
+A163;ID # YI SYLLABLE NDUX
+A164;ID # YI SYLLABLE NDU
+A165;ID # YI SYLLABLE NDUP
+A166;ID # YI SYLLABLE NDURX
+A167;ID # YI SYLLABLE NDUR
+A168;ID # YI SYLLABLE HNIT
+A169;ID # YI SYLLABLE HNIX
+A16A;ID # YI SYLLABLE HNI
+A16B;ID # YI SYLLABLE HNIP
+A16C;ID # YI SYLLABLE HNIET
+A16D;ID # YI SYLLABLE HNIEX
+A16E;ID # YI SYLLABLE HNIE
+A16F;ID # YI SYLLABLE HNIEP
+A170;ID # YI SYLLABLE HNAT
+A171;ID # YI SYLLABLE HNAX
+A172;ID # YI SYLLABLE HNA
+A173;ID # YI SYLLABLE HNAP
+A174;ID # YI SYLLABLE HNUOX
+A175;ID # YI SYLLABLE HNUO
+A176;ID # YI SYLLABLE HNOT
+A177;ID # YI SYLLABLE HNOX
+A178;ID # YI SYLLABLE HNOP
+A179;ID # YI SYLLABLE HNEX
+A17A;ID # YI SYLLABLE HNE
+A17B;ID # YI SYLLABLE HNEP
+A17C;ID # YI SYLLABLE HNUT
+A17D;ID # YI SYLLABLE NIT
+A17E;ID # YI SYLLABLE NIX
+A17F;ID # YI SYLLABLE NI
+A180;ID # YI SYLLABLE NIP
+A181;ID # YI SYLLABLE NIEX
+A182;ID # YI SYLLABLE NIE
+A183;ID # YI SYLLABLE NIEP
+A184;ID # YI SYLLABLE NAX
+A185;ID # YI SYLLABLE NA
+A186;ID # YI SYLLABLE NAP
+A187;ID # YI SYLLABLE NUOX
+A188;ID # YI SYLLABLE NUO
+A189;ID # YI SYLLABLE NUOP
+A18A;ID # YI SYLLABLE NOT
+A18B;ID # YI SYLLABLE NOX
+A18C;ID # YI SYLLABLE NO
+A18D;ID # YI SYLLABLE NOP
+A18E;ID # YI SYLLABLE NEX
+A18F;ID # YI SYLLABLE NE
+A190;ID # YI SYLLABLE NEP
+A191;ID # YI SYLLABLE NUT
+A192;ID # YI SYLLABLE NUX
+A193;ID # YI SYLLABLE NU
+A194;ID # YI SYLLABLE NUP
+A195;ID # YI SYLLABLE NURX
+A196;ID # YI SYLLABLE NUR
+A197;ID # YI SYLLABLE HLIT
+A198;ID # YI SYLLABLE HLIX
+A199;ID # YI SYLLABLE HLI
+A19A;ID # YI SYLLABLE HLIP
+A19B;ID # YI SYLLABLE HLIEX
+A19C;ID # YI SYLLABLE HLIE
+A19D;ID # YI SYLLABLE HLIEP
+A19E;ID # YI SYLLABLE HLAT
+A19F;ID # YI SYLLABLE HLAX
+A1A0;ID # YI SYLLABLE HLA
+A1A1;ID # YI SYLLABLE HLAP
+A1A2;ID # YI SYLLABLE HLUOX
+A1A3;ID # YI SYLLABLE HLUO
+A1A4;ID # YI SYLLABLE HLUOP
+A1A5;ID # YI SYLLABLE HLOX
+A1A6;ID # YI SYLLABLE HLO
+A1A7;ID # YI SYLLABLE HLOP
+A1A8;ID # YI SYLLABLE HLEX
+A1A9;ID # YI SYLLABLE HLE
+A1AA;ID # YI SYLLABLE HLEP
+A1AB;ID # YI SYLLABLE HLUT
+A1AC;ID # YI SYLLABLE HLUX
+A1AD;ID # YI SYLLABLE HLU
+A1AE;ID # YI SYLLABLE HLUP
+A1AF;ID # YI SYLLABLE HLURX
+A1B0;ID # YI SYLLABLE HLUR
+A1B1;ID # YI SYLLABLE HLYT
+A1B2;ID # YI SYLLABLE HLYX
+A1B3;ID # YI SYLLABLE HLY
+A1B4;ID # YI SYLLABLE HLYP
+A1B5;ID # YI SYLLABLE HLYRX
+A1B6;ID # YI SYLLABLE HLYR
+A1B7;ID # YI SYLLABLE LIT
+A1B8;ID # YI SYLLABLE LIX
+A1B9;ID # YI SYLLABLE LI
+A1BA;ID # YI SYLLABLE LIP
+A1BB;ID # YI SYLLABLE LIET
+A1BC;ID # YI SYLLABLE LIEX
+A1BD;ID # YI SYLLABLE LIE
+A1BE;ID # YI SYLLABLE LIEP
+A1BF;ID # YI SYLLABLE LAT
+A1C0;ID # YI SYLLABLE LAX
+A1C1;ID # YI SYLLABLE LA
+A1C2;ID # YI SYLLABLE LAP
+A1C3;ID # YI SYLLABLE LUOT
+A1C4;ID # YI SYLLABLE LUOX
+A1C5;ID # YI SYLLABLE LUO
+A1C6;ID # YI SYLLABLE LUOP
+A1C7;ID # YI SYLLABLE LOT
+A1C8;ID # YI SYLLABLE LOX
+A1C9;ID # YI SYLLABLE LO
+A1CA;ID # YI SYLLABLE LOP
+A1CB;ID # YI SYLLABLE LEX
+A1CC;ID # YI SYLLABLE LE
+A1CD;ID # YI SYLLABLE LEP
+A1CE;ID # YI SYLLABLE LUT
+A1CF;ID # YI SYLLABLE LUX
+A1D0;ID # YI SYLLABLE LU
+A1D1;ID # YI SYLLABLE LUP
+A1D2;ID # YI SYLLABLE LURX
+A1D3;ID # YI SYLLABLE LUR
+A1D4;ID # YI SYLLABLE LYT
+A1D5;ID # YI SYLLABLE LYX
+A1D6;ID # YI SYLLABLE LY
+A1D7;ID # YI SYLLABLE LYP
+A1D8;ID # YI SYLLABLE LYRX
+A1D9;ID # YI SYLLABLE LYR
+A1DA;ID # YI SYLLABLE GIT
+A1DB;ID # YI SYLLABLE GIX
+A1DC;ID # YI SYLLABLE GI
+A1DD;ID # YI SYLLABLE GIP
+A1DE;ID # YI SYLLABLE GIET
+A1DF;ID # YI SYLLABLE GIEX
+A1E0;ID # YI SYLLABLE GIE
+A1E1;ID # YI SYLLABLE GIEP
+A1E2;ID # YI SYLLABLE GAT
+A1E3;ID # YI SYLLABLE GAX
+A1E4;ID # YI SYLLABLE GA
+A1E5;ID # YI SYLLABLE GAP
+A1E6;ID # YI SYLLABLE GUOT
+A1E7;ID # YI SYLLABLE GUOX
+A1E8;ID # YI SYLLABLE GUO
+A1E9;ID # YI SYLLABLE GUOP
+A1EA;ID # YI SYLLABLE GOT
+A1EB;ID # YI SYLLABLE GOX
+A1EC;ID # YI SYLLABLE GO
+A1ED;ID # YI SYLLABLE GOP
+A1EE;ID # YI SYLLABLE GET
+A1EF;ID # YI SYLLABLE GEX
+A1F0;ID # YI SYLLABLE GE
+A1F1;ID # YI SYLLABLE GEP
+A1F2;ID # YI SYLLABLE GUT
+A1F3;ID # YI SYLLABLE GUX
+A1F4;ID # YI SYLLABLE GU
+A1F5;ID # YI SYLLABLE GUP
+A1F6;ID # YI SYLLABLE GURX
+A1F7;ID # YI SYLLABLE GUR
+A1F8;ID # YI SYLLABLE KIT
+A1F9;ID # YI SYLLABLE KIX
+A1FA;ID # YI SYLLABLE KI
+A1FB;ID # YI SYLLABLE KIP
+A1FC;ID # YI SYLLABLE KIEX
+A1FD;ID # YI SYLLABLE KIE
+A1FE;ID # YI SYLLABLE KIEP
+A1FF;ID # YI SYLLABLE KAT
+A200;ID # YI SYLLABLE KAX
+A201;ID # YI SYLLABLE KA
+A202;ID # YI SYLLABLE KAP
+A203;ID # YI SYLLABLE KUOX
+A204;ID # YI SYLLABLE KUO
+A205;ID # YI SYLLABLE KUOP
+A206;ID # YI SYLLABLE KOT
+A207;ID # YI SYLLABLE KOX
+A208;ID # YI SYLLABLE KO
+A209;ID # YI SYLLABLE KOP
+A20A;ID # YI SYLLABLE KET
+A20B;ID # YI SYLLABLE KEX
+A20C;ID # YI SYLLABLE KE
+A20D;ID # YI SYLLABLE KEP
+A20E;ID # YI SYLLABLE KUT
+A20F;ID # YI SYLLABLE KUX
+A210;ID # YI SYLLABLE KU
+A211;ID # YI SYLLABLE KUP
+A212;ID # YI SYLLABLE KURX
+A213;ID # YI SYLLABLE KUR
+A214;ID # YI SYLLABLE GGIT
+A215;ID # YI SYLLABLE GGIX
+A216;ID # YI SYLLABLE GGI
+A217;ID # YI SYLLABLE GGIEX
+A218;ID # YI SYLLABLE GGIE
+A219;ID # YI SYLLABLE GGIEP
+A21A;ID # YI SYLLABLE GGAT
+A21B;ID # YI SYLLABLE GGAX
+A21C;ID # YI SYLLABLE GGA
+A21D;ID # YI SYLLABLE GGAP
+A21E;ID # YI SYLLABLE GGUOT
+A21F;ID # YI SYLLABLE GGUOX
+A220;ID # YI SYLLABLE GGUO
+A221;ID # YI SYLLABLE GGUOP
+A222;ID # YI SYLLABLE GGOT
+A223;ID # YI SYLLABLE GGOX
+A224;ID # YI SYLLABLE GGO
+A225;ID # YI SYLLABLE GGOP
+A226;ID # YI SYLLABLE GGET
+A227;ID # YI SYLLABLE GGEX
+A228;ID # YI SYLLABLE GGE
+A229;ID # YI SYLLABLE GGEP
+A22A;ID # YI SYLLABLE GGUT
+A22B;ID # YI SYLLABLE GGUX
+A22C;ID # YI SYLLABLE GGU
+A22D;ID # YI SYLLABLE GGUP
+A22E;ID # YI SYLLABLE GGURX
+A22F;ID # YI SYLLABLE GGUR
+A230;ID # YI SYLLABLE MGIEX
+A231;ID # YI SYLLABLE MGIE
+A232;ID # YI SYLLABLE MGAT
+A233;ID # YI SYLLABLE MGAX
+A234;ID # YI SYLLABLE MGA
+A235;ID # YI SYLLABLE MGAP
+A236;ID # YI SYLLABLE MGUOX
+A237;ID # YI SYLLABLE MGUO
+A238;ID # YI SYLLABLE MGUOP
+A239;ID # YI SYLLABLE MGOT
+A23A;ID # YI SYLLABLE MGOX
+A23B;ID # YI SYLLABLE MGO
+A23C;ID # YI SYLLABLE MGOP
+A23D;ID # YI SYLLABLE MGEX
+A23E;ID # YI SYLLABLE MGE
+A23F;ID # YI SYLLABLE MGEP
+A240;ID # YI SYLLABLE MGUT
+A241;ID # YI SYLLABLE MGUX
+A242;ID # YI SYLLABLE MGU
+A243;ID # YI SYLLABLE MGUP
+A244;ID # YI SYLLABLE MGURX
+A245;ID # YI SYLLABLE MGUR
+A246;ID # YI SYLLABLE HXIT
+A247;ID # YI SYLLABLE HXIX
+A248;ID # YI SYLLABLE HXI
+A249;ID # YI SYLLABLE HXIP
+A24A;ID # YI SYLLABLE HXIET
+A24B;ID # YI SYLLABLE HXIEX
+A24C;ID # YI SYLLABLE HXIE
+A24D;ID # YI SYLLABLE HXIEP
+A24E;ID # YI SYLLABLE HXAT
+A24F;ID # YI SYLLABLE HXAX
+A250;ID # YI SYLLABLE HXA
+A251;ID # YI SYLLABLE HXAP
+A252;ID # YI SYLLABLE HXUOT
+A253;ID # YI SYLLABLE HXUOX
+A254;ID # YI SYLLABLE HXUO
+A255;ID # YI SYLLABLE HXUOP
+A256;ID # YI SYLLABLE HXOT
+A257;ID # YI SYLLABLE HXOX
+A258;ID # YI SYLLABLE HXO
+A259;ID # YI SYLLABLE HXOP
+A25A;ID # YI SYLLABLE HXEX
+A25B;ID # YI SYLLABLE HXE
+A25C;ID # YI SYLLABLE HXEP
+A25D;ID # YI SYLLABLE NGIEX
+A25E;ID # YI SYLLABLE NGIE
+A25F;ID # YI SYLLABLE NGIEP
+A260;ID # YI SYLLABLE NGAT
+A261;ID # YI SYLLABLE NGAX
+A262;ID # YI SYLLABLE NGA
+A263;ID # YI SYLLABLE NGAP
+A264;ID # YI SYLLABLE NGUOT
+A265;ID # YI SYLLABLE NGUOX
+A266;ID # YI SYLLABLE NGUO
+A267;ID # YI SYLLABLE NGOT
+A268;ID # YI SYLLABLE NGOX
+A269;ID # YI SYLLABLE NGO
+A26A;ID # YI SYLLABLE NGOP
+A26B;ID # YI SYLLABLE NGEX
+A26C;ID # YI SYLLABLE NGE
+A26D;ID # YI SYLLABLE NGEP
+A26E;ID # YI SYLLABLE HIT
+A26F;ID # YI SYLLABLE HIEX
+A270;ID # YI SYLLABLE HIE
+A271;ID # YI SYLLABLE HAT
+A272;ID # YI SYLLABLE HAX
+A273;ID # YI SYLLABLE HA
+A274;ID # YI SYLLABLE HAP
+A275;ID # YI SYLLABLE HUOT
+A276;ID # YI SYLLABLE HUOX
+A277;ID # YI SYLLABLE HUO
+A278;ID # YI SYLLABLE HUOP
+A279;ID # YI SYLLABLE HOT
+A27A;ID # YI SYLLABLE HOX
+A27B;ID # YI SYLLABLE HO
+A27C;ID # YI SYLLABLE HOP
+A27D;ID # YI SYLLABLE HEX
+A27E;ID # YI SYLLABLE HE
+A27F;ID # YI SYLLABLE HEP
+A280;ID # YI SYLLABLE WAT
+A281;ID # YI SYLLABLE WAX
+A282;ID # YI SYLLABLE WA
+A283;ID # YI SYLLABLE WAP
+A284;ID # YI SYLLABLE WUOX
+A285;ID # YI SYLLABLE WUO
+A286;ID # YI SYLLABLE WUOP
+A287;ID # YI SYLLABLE WOX
+A288;ID # YI SYLLABLE WO
+A289;ID # YI SYLLABLE WOP
+A28A;ID # YI SYLLABLE WEX
+A28B;ID # YI SYLLABLE WE
+A28C;ID # YI SYLLABLE WEP
+A28D;ID # YI SYLLABLE ZIT
+A28E;ID # YI SYLLABLE ZIX
+A28F;ID # YI SYLLABLE ZI
+A290;ID # YI SYLLABLE ZIP
+A291;ID # YI SYLLABLE ZIEX
+A292;ID # YI SYLLABLE ZIE
+A293;ID # YI SYLLABLE ZIEP
+A294;ID # YI SYLLABLE ZAT
+A295;ID # YI SYLLABLE ZAX
+A296;ID # YI SYLLABLE ZA
+A297;ID # YI SYLLABLE ZAP
+A298;ID # YI SYLLABLE ZUOX
+A299;ID # YI SYLLABLE ZUO
+A29A;ID # YI SYLLABLE ZUOP
+A29B;ID # YI SYLLABLE ZOT
+A29C;ID # YI SYLLABLE ZOX
+A29D;ID # YI SYLLABLE ZO
+A29E;ID # YI SYLLABLE ZOP
+A29F;ID # YI SYLLABLE ZEX
+A2A0;ID # YI SYLLABLE ZE
+A2A1;ID # YI SYLLABLE ZEP
+A2A2;ID # YI SYLLABLE ZUT
+A2A3;ID # YI SYLLABLE ZUX
+A2A4;ID # YI SYLLABLE ZU
+A2A5;ID # YI SYLLABLE ZUP
+A2A6;ID # YI SYLLABLE ZURX
+A2A7;ID # YI SYLLABLE ZUR
+A2A8;ID # YI SYLLABLE ZYT
+A2A9;ID # YI SYLLABLE ZYX
+A2AA;ID # YI SYLLABLE ZY
+A2AB;ID # YI SYLLABLE ZYP
+A2AC;ID # YI SYLLABLE ZYRX
+A2AD;ID # YI SYLLABLE ZYR
+A2AE;ID # YI SYLLABLE CIT
+A2AF;ID # YI SYLLABLE CIX
+A2B0;ID # YI SYLLABLE CI
+A2B1;ID # YI SYLLABLE CIP
+A2B2;ID # YI SYLLABLE CIET
+A2B3;ID # YI SYLLABLE CIEX
+A2B4;ID # YI SYLLABLE CIE
+A2B5;ID # YI SYLLABLE CIEP
+A2B6;ID # YI SYLLABLE CAT
+A2B7;ID # YI SYLLABLE CAX
+A2B8;ID # YI SYLLABLE CA
+A2B9;ID # YI SYLLABLE CAP
+A2BA;ID # YI SYLLABLE CUOX
+A2BB;ID # YI SYLLABLE CUO
+A2BC;ID # YI SYLLABLE CUOP
+A2BD;ID # YI SYLLABLE COT
+A2BE;ID # YI SYLLABLE COX
+A2BF;ID # YI SYLLABLE CO
+A2C0;ID # YI SYLLABLE COP
+A2C1;ID # YI SYLLABLE CEX
+A2C2;ID # YI SYLLABLE CE
+A2C3;ID # YI SYLLABLE CEP
+A2C4;ID # YI SYLLABLE CUT
+A2C5;ID # YI SYLLABLE CUX
+A2C6;ID # YI SYLLABLE CU
+A2C7;ID # YI SYLLABLE CUP
+A2C8;ID # YI SYLLABLE CURX
+A2C9;ID # YI SYLLABLE CUR
+A2CA;ID # YI SYLLABLE CYT
+A2CB;ID # YI SYLLABLE CYX
+A2CC;ID # YI SYLLABLE CY
+A2CD;ID # YI SYLLABLE CYP
+A2CE;ID # YI SYLLABLE CYRX
+A2CF;ID # YI SYLLABLE CYR
+A2D0;ID # YI SYLLABLE ZZIT
+A2D1;ID # YI SYLLABLE ZZIX
+A2D2;ID # YI SYLLABLE ZZI
+A2D3;ID # YI SYLLABLE ZZIP
+A2D4;ID # YI SYLLABLE ZZIET
+A2D5;ID # YI SYLLABLE ZZIEX
+A2D6;ID # YI SYLLABLE ZZIE
+A2D7;ID # YI SYLLABLE ZZIEP
+A2D8;ID # YI SYLLABLE ZZAT
+A2D9;ID # YI SYLLABLE ZZAX
+A2DA;ID # YI SYLLABLE ZZA
+A2DB;ID # YI SYLLABLE ZZAP
+A2DC;ID # YI SYLLABLE ZZOX
+A2DD;ID # YI SYLLABLE ZZO
+A2DE;ID # YI SYLLABLE ZZOP
+A2DF;ID # YI SYLLABLE ZZEX
+A2E0;ID # YI SYLLABLE ZZE
+A2E1;ID # YI SYLLABLE ZZEP
+A2E2;ID # YI SYLLABLE ZZUX
+A2E3;ID # YI SYLLABLE ZZU
+A2E4;ID # YI SYLLABLE ZZUP
+A2E5;ID # YI SYLLABLE ZZURX
+A2E6;ID # YI SYLLABLE ZZUR
+A2E7;ID # YI SYLLABLE ZZYT
+A2E8;ID # YI SYLLABLE ZZYX
+A2E9;ID # YI SYLLABLE ZZY
+A2EA;ID # YI SYLLABLE ZZYP
+A2EB;ID # YI SYLLABLE ZZYRX
+A2EC;ID # YI SYLLABLE ZZYR
+A2ED;ID # YI SYLLABLE NZIT
+A2EE;ID # YI SYLLABLE NZIX
+A2EF;ID # YI SYLLABLE NZI
+A2F0;ID # YI SYLLABLE NZIP
+A2F1;ID # YI SYLLABLE NZIEX
+A2F2;ID # YI SYLLABLE NZIE
+A2F3;ID # YI SYLLABLE NZIEP
+A2F4;ID # YI SYLLABLE NZAT
+A2F5;ID # YI SYLLABLE NZAX
+A2F6;ID # YI SYLLABLE NZA
+A2F7;ID # YI SYLLABLE NZAP
+A2F8;ID # YI SYLLABLE NZUOX
+A2F9;ID # YI SYLLABLE NZUO
+A2FA;ID # YI SYLLABLE NZOX
+A2FB;ID # YI SYLLABLE NZOP
+A2FC;ID # YI SYLLABLE NZEX
+A2FD;ID # YI SYLLABLE NZE
+A2FE;ID # YI SYLLABLE NZUX
+A2FF;ID # YI SYLLABLE NZU
+A300;ID # YI SYLLABLE NZUP
+A301;ID # YI SYLLABLE NZURX
+A302;ID # YI SYLLABLE NZUR
+A303;ID # YI SYLLABLE NZYT
+A304;ID # YI SYLLABLE NZYX
+A305;ID # YI SYLLABLE NZY
+A306;ID # YI SYLLABLE NZYP
+A307;ID # YI SYLLABLE NZYRX
+A308;ID # YI SYLLABLE NZYR
+A309;ID # YI SYLLABLE SIT
+A30A;ID # YI SYLLABLE SIX
+A30B;ID # YI SYLLABLE SI
+A30C;ID # YI SYLLABLE SIP
+A30D;ID # YI SYLLABLE SIEX
+A30E;ID # YI SYLLABLE SIE
+A30F;ID # YI SYLLABLE SIEP
+A310;ID # YI SYLLABLE SAT
+A311;ID # YI SYLLABLE SAX
+A312;ID # YI SYLLABLE SA
+A313;ID # YI SYLLABLE SAP
+A314;ID # YI SYLLABLE SUOX
+A315;ID # YI SYLLABLE SUO
+A316;ID # YI SYLLABLE SUOP
+A317;ID # YI SYLLABLE SOT
+A318;ID # YI SYLLABLE SOX
+A319;ID # YI SYLLABLE SO
+A31A;ID # YI SYLLABLE SOP
+A31B;ID # YI SYLLABLE SEX
+A31C;ID # YI SYLLABLE SE
+A31D;ID # YI SYLLABLE SEP
+A31E;ID # YI SYLLABLE SUT
+A31F;ID # YI SYLLABLE SUX
+A320;ID # YI SYLLABLE SU
+A321;ID # YI SYLLABLE SUP
+A322;ID # YI SYLLABLE SURX
+A323;ID # YI SYLLABLE SUR
+A324;ID # YI SYLLABLE SYT
+A325;ID # YI SYLLABLE SYX
+A326;ID # YI SYLLABLE SY
+A327;ID # YI SYLLABLE SYP
+A328;ID # YI SYLLABLE SYRX
+A329;ID # YI SYLLABLE SYR
+A32A;ID # YI SYLLABLE SSIT
+A32B;ID # YI SYLLABLE SSIX
+A32C;ID # YI SYLLABLE SSI
+A32D;ID # YI SYLLABLE SSIP
+A32E;ID # YI SYLLABLE SSIEX
+A32F;ID # YI SYLLABLE SSIE
+A330;ID # YI SYLLABLE SSIEP
+A331;ID # YI SYLLABLE SSAT
+A332;ID # YI SYLLABLE SSAX
+A333;ID # YI SYLLABLE SSA
+A334;ID # YI SYLLABLE SSAP
+A335;ID # YI SYLLABLE SSOT
+A336;ID # YI SYLLABLE SSOX
+A337;ID # YI SYLLABLE SSO
+A338;ID # YI SYLLABLE SSOP
+A339;ID # YI SYLLABLE SSEX
+A33A;ID # YI SYLLABLE SSE
+A33B;ID # YI SYLLABLE SSEP
+A33C;ID # YI SYLLABLE SSUT
+A33D;ID # YI SYLLABLE SSUX
+A33E;ID # YI SYLLABLE SSU
+A33F;ID # YI SYLLABLE SSUP
+A340;ID # YI SYLLABLE SSYT
+A341;ID # YI SYLLABLE SSYX
+A342;ID # YI SYLLABLE SSY
+A343;ID # YI SYLLABLE SSYP
+A344;ID # YI SYLLABLE SSYRX
+A345;ID # YI SYLLABLE SSYR
+A346;ID # YI SYLLABLE ZHAT
+A347;ID # YI SYLLABLE ZHAX
+A348;ID # YI SYLLABLE ZHA
+A349;ID # YI SYLLABLE ZHAP
+A34A;ID # YI SYLLABLE ZHUOX
+A34B;ID # YI SYLLABLE ZHUO
+A34C;ID # YI SYLLABLE ZHUOP
+A34D;ID # YI SYLLABLE ZHOT
+A34E;ID # YI SYLLABLE ZHOX
+A34F;ID # YI SYLLABLE ZHO
+A350;ID # YI SYLLABLE ZHOP
+A351;ID # YI SYLLABLE ZHET
+A352;ID # YI SYLLABLE ZHEX
+A353;ID # YI SYLLABLE ZHE
+A354;ID # YI SYLLABLE ZHEP
+A355;ID # YI SYLLABLE ZHUT
+A356;ID # YI SYLLABLE ZHUX
+A357;ID # YI SYLLABLE ZHU
+A358;ID # YI SYLLABLE ZHUP
+A359;ID # YI SYLLABLE ZHURX
+A35A;ID # YI SYLLABLE ZHUR
+A35B;ID # YI SYLLABLE ZHYT
+A35C;ID # YI SYLLABLE ZHYX
+A35D;ID # YI SYLLABLE ZHY
+A35E;ID # YI SYLLABLE ZHYP
+A35F;ID # YI SYLLABLE ZHYRX
+A360;ID # YI SYLLABLE ZHYR
+A361;ID # YI SYLLABLE CHAT
+A362;ID # YI SYLLABLE CHAX
+A363;ID # YI SYLLABLE CHA
+A364;ID # YI SYLLABLE CHAP
+A365;ID # YI SYLLABLE CHUOT
+A366;ID # YI SYLLABLE CHUOX
+A367;ID # YI SYLLABLE CHUO
+A368;ID # YI SYLLABLE CHUOP
+A369;ID # YI SYLLABLE CHOT
+A36A;ID # YI SYLLABLE CHOX
+A36B;ID # YI SYLLABLE CHO
+A36C;ID # YI SYLLABLE CHOP
+A36D;ID # YI SYLLABLE CHET
+A36E;ID # YI SYLLABLE CHEX
+A36F;ID # YI SYLLABLE CHE
+A370;ID # YI SYLLABLE CHEP
+A371;ID # YI SYLLABLE CHUX
+A372;ID # YI SYLLABLE CHU
+A373;ID # YI SYLLABLE CHUP
+A374;ID # YI SYLLABLE CHURX
+A375;ID # YI SYLLABLE CHUR
+A376;ID # YI SYLLABLE CHYT
+A377;ID # YI SYLLABLE CHYX
+A378;ID # YI SYLLABLE CHY
+A379;ID # YI SYLLABLE CHYP
+A37A;ID # YI SYLLABLE CHYRX
+A37B;ID # YI SYLLABLE CHYR
+A37C;ID # YI SYLLABLE RRAX
+A37D;ID # YI SYLLABLE RRA
+A37E;ID # YI SYLLABLE RRUOX
+A37F;ID # YI SYLLABLE RRUO
+A380;ID # YI SYLLABLE RROT
+A381;ID # YI SYLLABLE RROX
+A382;ID # YI SYLLABLE RRO
+A383;ID # YI SYLLABLE RROP
+A384;ID # YI SYLLABLE RRET
+A385;ID # YI SYLLABLE RREX
+A386;ID # YI SYLLABLE RRE
+A387;ID # YI SYLLABLE RREP
+A388;ID # YI SYLLABLE RRUT
+A389;ID # YI SYLLABLE RRUX
+A38A;ID # YI SYLLABLE RRU
+A38B;ID # YI SYLLABLE RRUP
+A38C;ID # YI SYLLABLE RRURX
+A38D;ID # YI SYLLABLE RRUR
+A38E;ID # YI SYLLABLE RRYT
+A38F;ID # YI SYLLABLE RRYX
+A390;ID # YI SYLLABLE RRY
+A391;ID # YI SYLLABLE RRYP
+A392;ID # YI SYLLABLE RRYRX
+A393;ID # YI SYLLABLE RRYR
+A394;ID # YI SYLLABLE NRAT
+A395;ID # YI SYLLABLE NRAX
+A396;ID # YI SYLLABLE NRA
+A397;ID # YI SYLLABLE NRAP
+A398;ID # YI SYLLABLE NROX
+A399;ID # YI SYLLABLE NRO
+A39A;ID # YI SYLLABLE NROP
+A39B;ID # YI SYLLABLE NRET
+A39C;ID # YI SYLLABLE NREX
+A39D;ID # YI SYLLABLE NRE
+A39E;ID # YI SYLLABLE NREP
+A39F;ID # YI SYLLABLE NRUT
+A3A0;ID # YI SYLLABLE NRUX
+A3A1;ID # YI SYLLABLE NRU
+A3A2;ID # YI SYLLABLE NRUP
+A3A3;ID # YI SYLLABLE NRURX
+A3A4;ID # YI SYLLABLE NRUR
+A3A5;ID # YI SYLLABLE NRYT
+A3A6;ID # YI SYLLABLE NRYX
+A3A7;ID # YI SYLLABLE NRY
+A3A8;ID # YI SYLLABLE NRYP
+A3A9;ID # YI SYLLABLE NRYRX
+A3AA;ID # YI SYLLABLE NRYR
+A3AB;ID # YI SYLLABLE SHAT
+A3AC;ID # YI SYLLABLE SHAX
+A3AD;ID # YI SYLLABLE SHA
+A3AE;ID # YI SYLLABLE SHAP
+A3AF;ID # YI SYLLABLE SHUOX
+A3B0;ID # YI SYLLABLE SHUO
+A3B1;ID # YI SYLLABLE SHUOP
+A3B2;ID # YI SYLLABLE SHOT
+A3B3;ID # YI SYLLABLE SHOX
+A3B4;ID # YI SYLLABLE SHO
+A3B5;ID # YI SYLLABLE SHOP
+A3B6;ID # YI SYLLABLE SHET
+A3B7;ID # YI SYLLABLE SHEX
+A3B8;ID # YI SYLLABLE SHE
+A3B9;ID # YI SYLLABLE SHEP
+A3BA;ID # YI SYLLABLE SHUT
+A3BB;ID # YI SYLLABLE SHUX
+A3BC;ID # YI SYLLABLE SHU
+A3BD;ID # YI SYLLABLE SHUP
+A3BE;ID # YI SYLLABLE SHURX
+A3BF;ID # YI SYLLABLE SHUR
+A3C0;ID # YI SYLLABLE SHYT
+A3C1;ID # YI SYLLABLE SHYX
+A3C2;ID # YI SYLLABLE SHY
+A3C3;ID # YI SYLLABLE SHYP
+A3C4;ID # YI SYLLABLE SHYRX
+A3C5;ID # YI SYLLABLE SHYR
+A3C6;ID # YI SYLLABLE RAT
+A3C7;ID # YI SYLLABLE RAX
+A3C8;ID # YI SYLLABLE RA
+A3C9;ID # YI SYLLABLE RAP
+A3CA;ID # YI SYLLABLE RUOX
+A3CB;ID # YI SYLLABLE RUO
+A3CC;ID # YI SYLLABLE RUOP
+A3CD;ID # YI SYLLABLE ROT
+A3CE;ID # YI SYLLABLE ROX
+A3CF;ID # YI SYLLABLE RO
+A3D0;ID # YI SYLLABLE ROP
+A3D1;ID # YI SYLLABLE REX
+A3D2;ID # YI SYLLABLE RE
+A3D3;ID # YI SYLLABLE REP
+A3D4;ID # YI SYLLABLE RUT
+A3D5;ID # YI SYLLABLE RUX
+A3D6;ID # YI SYLLABLE RU
+A3D7;ID # YI SYLLABLE RUP
+A3D8;ID # YI SYLLABLE RURX
+A3D9;ID # YI SYLLABLE RUR
+A3DA;ID # YI SYLLABLE RYT
+A3DB;ID # YI SYLLABLE RYX
+A3DC;ID # YI SYLLABLE RY
+A3DD;ID # YI SYLLABLE RYP
+A3DE;ID # YI SYLLABLE RYRX
+A3DF;ID # YI SYLLABLE RYR
+A3E0;ID # YI SYLLABLE JIT
+A3E1;ID # YI SYLLABLE JIX
+A3E2;ID # YI SYLLABLE JI
+A3E3;ID # YI SYLLABLE JIP
+A3E4;ID # YI SYLLABLE JIET
+A3E5;ID # YI SYLLABLE JIEX
+A3E6;ID # YI SYLLABLE JIE
+A3E7;ID # YI SYLLABLE JIEP
+A3E8;ID # YI SYLLABLE JUOT
+A3E9;ID # YI SYLLABLE JUOX
+A3EA;ID # YI SYLLABLE JUO
+A3EB;ID # YI SYLLABLE JUOP
+A3EC;ID # YI SYLLABLE JOT
+A3ED;ID # YI SYLLABLE JOX
+A3EE;ID # YI SYLLABLE JO
+A3EF;ID # YI SYLLABLE JOP
+A3F0;ID # YI SYLLABLE JUT
+A3F1;ID # YI SYLLABLE JUX
+A3F2;ID # YI SYLLABLE JU
+A3F3;ID # YI SYLLABLE JUP
+A3F4;ID # YI SYLLABLE JURX
+A3F5;ID # YI SYLLABLE JUR
+A3F6;ID # YI SYLLABLE JYT
+A3F7;ID # YI SYLLABLE JYX
+A3F8;ID # YI SYLLABLE JY
+A3F9;ID # YI SYLLABLE JYP
+A3FA;ID # YI SYLLABLE JYRX
+A3FB;ID # YI SYLLABLE JYR
+A3FC;ID # YI SYLLABLE QIT
+A3FD;ID # YI SYLLABLE QIX
+A3FE;ID # YI SYLLABLE QI
+A3FF;ID # YI SYLLABLE QIP
+A400;ID # YI SYLLABLE QIET
+A401;ID # YI SYLLABLE QIEX
+A402;ID # YI SYLLABLE QIE
+A403;ID # YI SYLLABLE QIEP
+A404;ID # YI SYLLABLE QUOT
+A405;ID # YI SYLLABLE QUOX
+A406;ID # YI SYLLABLE QUO
+A407;ID # YI SYLLABLE QUOP
+A408;ID # YI SYLLABLE QOT
+A409;ID # YI SYLLABLE QOX
+A40A;ID # YI SYLLABLE QO
+A40B;ID # YI SYLLABLE QOP
+A40C;ID # YI SYLLABLE QUT
+A40D;ID # YI SYLLABLE QUX
+A40E;ID # YI SYLLABLE QU
+A40F;ID # YI SYLLABLE QUP
+A410;ID # YI SYLLABLE QURX
+A411;ID # YI SYLLABLE QUR
+A412;ID # YI SYLLABLE QYT
+A413;ID # YI SYLLABLE QYX
+A414;ID # YI SYLLABLE QY
+A415;ID # YI SYLLABLE QYP
+A416;ID # YI SYLLABLE QYRX
+A417;ID # YI SYLLABLE QYR
+A418;ID # YI SYLLABLE JJIT
+A419;ID # YI SYLLABLE JJIX
+A41A;ID # YI SYLLABLE JJI
+A41B;ID # YI SYLLABLE JJIP
+A41C;ID # YI SYLLABLE JJIET
+A41D;ID # YI SYLLABLE JJIEX
+A41E;ID # YI SYLLABLE JJIE
+A41F;ID # YI SYLLABLE JJIEP
+A420;ID # YI SYLLABLE JJUOX
+A421;ID # YI SYLLABLE JJUO
+A422;ID # YI SYLLABLE JJUOP
+A423;ID # YI SYLLABLE JJOT
+A424;ID # YI SYLLABLE JJOX
+A425;ID # YI SYLLABLE JJO
+A426;ID # YI SYLLABLE JJOP
+A427;ID # YI SYLLABLE JJUT
+A428;ID # YI SYLLABLE JJUX
+A429;ID # YI SYLLABLE JJU
+A42A;ID # YI SYLLABLE JJUP
+A42B;ID # YI SYLLABLE JJURX
+A42C;ID # YI SYLLABLE JJUR
+A42D;ID # YI SYLLABLE JJYT
+A42E;ID # YI SYLLABLE JJYX
+A42F;ID # YI SYLLABLE JJY
+A430;ID # YI SYLLABLE JJYP
+A431;ID # YI SYLLABLE NJIT
+A432;ID # YI SYLLABLE NJIX
+A433;ID # YI SYLLABLE NJI
+A434;ID # YI SYLLABLE NJIP
+A435;ID # YI SYLLABLE NJIET
+A436;ID # YI SYLLABLE NJIEX
+A437;ID # YI SYLLABLE NJIE
+A438;ID # YI SYLLABLE NJIEP
+A439;ID # YI SYLLABLE NJUOX
+A43A;ID # YI SYLLABLE NJUO
+A43B;ID # YI SYLLABLE NJOT
+A43C;ID # YI SYLLABLE NJOX
+A43D;ID # YI SYLLABLE NJO
+A43E;ID # YI SYLLABLE NJOP
+A43F;ID # YI SYLLABLE NJUX
+A440;ID # YI SYLLABLE NJU
+A441;ID # YI SYLLABLE NJUP
+A442;ID # YI SYLLABLE NJURX
+A443;ID # YI SYLLABLE NJUR
+A444;ID # YI SYLLABLE NJYT
+A445;ID # YI SYLLABLE NJYX
+A446;ID # YI SYLLABLE NJY
+A447;ID # YI SYLLABLE NJYP
+A448;ID # YI SYLLABLE NJYRX
+A449;ID # YI SYLLABLE NJYR
+A44A;ID # YI SYLLABLE NYIT
+A44B;ID # YI SYLLABLE NYIX
+A44C;ID # YI SYLLABLE NYI
+A44D;ID # YI SYLLABLE NYIP
+A44E;ID # YI SYLLABLE NYIET
+A44F;ID # YI SYLLABLE NYIEX
+A450;ID # YI SYLLABLE NYIE
+A451;ID # YI SYLLABLE NYIEP
+A452;ID # YI SYLLABLE NYUOX
+A453;ID # YI SYLLABLE NYUO
+A454;ID # YI SYLLABLE NYUOP
+A455;ID # YI SYLLABLE NYOT
+A456;ID # YI SYLLABLE NYOX
+A457;ID # YI SYLLABLE NYO
+A458;ID # YI SYLLABLE NYOP
+A459;ID # YI SYLLABLE NYUT
+A45A;ID # YI SYLLABLE NYUX
+A45B;ID # YI SYLLABLE NYU
+A45C;ID # YI SYLLABLE NYUP
+A45D;ID # YI SYLLABLE XIT
+A45E;ID # YI SYLLABLE XIX
+A45F;ID # YI SYLLABLE XI
+A460;ID # YI SYLLABLE XIP
+A461;ID # YI SYLLABLE XIET
+A462;ID # YI SYLLABLE XIEX
+A463;ID # YI SYLLABLE XIE
+A464;ID # YI SYLLABLE XIEP
+A465;ID # YI SYLLABLE XUOX
+A466;ID # YI SYLLABLE XUO
+A467;ID # YI SYLLABLE XOT
+A468;ID # YI SYLLABLE XOX
+A469;ID # YI SYLLABLE XO
+A46A;ID # YI SYLLABLE XOP
+A46B;ID # YI SYLLABLE XYT
+A46C;ID # YI SYLLABLE XYX
+A46D;ID # YI SYLLABLE XY
+A46E;ID # YI SYLLABLE XYP
+A46F;ID # YI SYLLABLE XYRX
+A470;ID # YI SYLLABLE XYR
+A471;ID # YI SYLLABLE YIT
+A472;ID # YI SYLLABLE YIX
+A473;ID # YI SYLLABLE YI
+A474;ID # YI SYLLABLE YIP
+A475;ID # YI SYLLABLE YIET
+A476;ID # YI SYLLABLE YIEX
+A477;ID # YI SYLLABLE YIE
+A478;ID # YI SYLLABLE YIEP
+A479;ID # YI SYLLABLE YUOT
+A47A;ID # YI SYLLABLE YUOX
+A47B;ID # YI SYLLABLE YUO
+A47C;ID # YI SYLLABLE YUOP
+A47D;ID # YI SYLLABLE YOT
+A47E;ID # YI SYLLABLE YOX
+A47F;ID # YI SYLLABLE YO
+A480;ID # YI SYLLABLE YOP
+A481;ID # YI SYLLABLE YUT
+A482;ID # YI SYLLABLE YUX
+A483;ID # YI SYLLABLE YU
+A484;ID # YI SYLLABLE YUP
+A485;ID # YI SYLLABLE YURX
+A486;ID # YI SYLLABLE YUR
+A487;ID # YI SYLLABLE YYT
+A488;ID # YI SYLLABLE YYX
+A489;ID # YI SYLLABLE YY
+A48A;ID # YI SYLLABLE YYP
+A48B;ID # YI SYLLABLE YYRX
+A48C;ID # YI SYLLABLE YYR
+A490;ID # YI RADICAL QOT
+A491;ID # YI RADICAL LI
+A492;ID # YI RADICAL KIT
+A493;ID # YI RADICAL NYIP
+A494;ID # YI RADICAL CYP
+A495;ID # YI RADICAL SSI
+A496;ID # YI RADICAL GGOP
+A497;ID # YI RADICAL GEP
+A498;ID # YI RADICAL MI
+A499;ID # YI RADICAL HXIT
+A49A;ID # YI RADICAL LYR
+A49B;ID # YI RADICAL BBUT
+A49C;ID # YI RADICAL MOP
+A49D;ID # YI RADICAL YO
+A49E;ID # YI RADICAL PUT
+A49F;ID # YI RADICAL HXUO
+A4A0;ID # YI RADICAL TAT
+A4A1;ID # YI RADICAL GA
+A4A2;ID # YI RADICAL ZUP
+A4A3;ID # YI RADICAL CYT
+A4A4;ID # YI RADICAL DDUR
+A4A5;ID # YI RADICAL BUR
+A4A6;ID # YI RADICAL GGUO
+A4A7;ID # YI RADICAL NYOP
+A4A8;ID # YI RADICAL TU
+A4A9;ID # YI RADICAL OP
+A4AA;ID # YI RADICAL JJUT
+A4AB;ID # YI RADICAL ZOT
+A4AC;ID # YI RADICAL PYT
+A4AD;ID # YI RADICAL HMO
+A4AE;ID # YI RADICAL YIT
+A4AF;ID # YI RADICAL VUR
+A4B0;ID # YI RADICAL SHY
+A4B1;ID # YI RADICAL VEP
+A4B2;ID # YI RADICAL ZA
+A4B3;ID # YI RADICAL JO
+A4B4;ID # YI RADICAL NZUP
+A4B5;ID # YI RADICAL JJY
+A4B6;ID # YI RADICAL GOT
+A4B7;ID # YI RADICAL JJIE
+A4B8;ID # YI RADICAL WO
+A4B9;ID # YI RADICAL DU
+A4BA;ID # YI RADICAL SHUR
+A4BB;ID # YI RADICAL LIE
+A4BC;ID # YI RADICAL CY
+A4BD;ID # YI RADICAL CUOP
+A4BE;ID # YI RADICAL CIP
+A4BF;ID # YI RADICAL HXOP
+A4C0;ID # YI RADICAL SHAT
+A4C1;ID # YI RADICAL ZUR
+A4C2;ID # YI RADICAL SHOP
+A4C3;ID # YI RADICAL CHE
+A4C4;ID # YI RADICAL ZZIET
+A4C5;ID # YI RADICAL NBIE
+A4C6;ID # YI RADICAL KE
+A700;AL # MODIFIER LETTER CHINESE TONE YIN PING
+A701;AL # MODIFIER LETTER CHINESE TONE YANG PING
+A702;AL # MODIFIER LETTER CHINESE TONE YIN SHANG
+A703;AL # MODIFIER LETTER CHINESE TONE YANG SHANG
+A704;AL # MODIFIER LETTER CHINESE TONE YIN QU
+A705;AL # MODIFIER LETTER CHINESE TONE YANG QU
+A706;AL # MODIFIER LETTER CHINESE TONE YIN RU
+A707;AL # MODIFIER LETTER CHINESE TONE YANG RU
+A708;AL # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
+A709;AL # MODIFIER LETTER HIGH DOTTED TONE BAR
+A70A;AL # MODIFIER LETTER MID DOTTED TONE BAR
+A70B;AL # MODIFIER LETTER LOW DOTTED TONE BAR
+A70C;AL # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
+A70D;AL # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
+A70E;AL # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
+A70F;AL # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
+A710;AL # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
+A711;AL # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
+A712;AL # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
+A713;AL # MODIFIER LETTER HIGH LEFT-STEM TONE BAR
+A714;AL # MODIFIER LETTER MID LEFT-STEM TONE BAR
+A715;AL # MODIFIER LETTER LOW LEFT-STEM TONE BAR
+A716;AL # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A717;AL # MODIFIER LETTER DOT VERTICAL BAR
+A718;AL # MODIFIER LETTER DOT SLASH
+A719;AL # MODIFIER LETTER DOT HORIZONTAL BAR
+A71A;AL # MODIFIER LETTER LOWER RIGHT CORNER ANGLE
+A720;AL # MODIFIER LETTER STRESS AND HIGH TONE
+A721;AL # MODIFIER LETTER STRESS AND LOW TONE
+A800;AL # SYLOTI NAGRI LETTER A
+A801;AL # SYLOTI NAGRI LETTER I
+A802;CM # SYLOTI NAGRI SIGN DVISVARA
+A803;AL # SYLOTI NAGRI LETTER U
+A804;AL # SYLOTI NAGRI LETTER E
+A805;AL # SYLOTI NAGRI LETTER O
+A806;CM # SYLOTI NAGRI SIGN HASANTA
+A807;AL # SYLOTI NAGRI LETTER KO
+A808;AL # SYLOTI NAGRI LETTER KHO
+A809;AL # SYLOTI NAGRI LETTER GO
+A80A;AL # SYLOTI NAGRI LETTER GHO
+A80B;CM # SYLOTI NAGRI SIGN ANUSVARA
+A80C;AL # SYLOTI NAGRI LETTER CO
+A80D;AL # SYLOTI NAGRI LETTER CHO
+A80E;AL # SYLOTI NAGRI LETTER JO
+A80F;AL # SYLOTI NAGRI LETTER JHO
+A810;AL # SYLOTI NAGRI LETTER TTO
+A811;AL # SYLOTI NAGRI LETTER TTHO
+A812;AL # SYLOTI NAGRI LETTER DDO
+A813;AL # SYLOTI NAGRI LETTER DDHO
+A814;AL # SYLOTI NAGRI LETTER TO
+A815;AL # SYLOTI NAGRI LETTER THO
+A816;AL # SYLOTI NAGRI LETTER DO
+A817;AL # SYLOTI NAGRI LETTER DHO
+A818;AL # SYLOTI NAGRI LETTER NO
+A819;AL # SYLOTI NAGRI LETTER PO
+A81A;AL # SYLOTI NAGRI LETTER PHO
+A81B;AL # SYLOTI NAGRI LETTER BO
+A81C;AL # SYLOTI NAGRI LETTER BHO
+A81D;AL # SYLOTI NAGRI LETTER MO
+A81E;AL # SYLOTI NAGRI LETTER RO
+A81F;AL # SYLOTI NAGRI LETTER LO
+A820;AL # SYLOTI NAGRI LETTER RRO
+A821;AL # SYLOTI NAGRI LETTER SO
+A822;AL # SYLOTI NAGRI LETTER HO
+A823;CM # SYLOTI NAGRI VOWEL SIGN A
+A824;CM # SYLOTI NAGRI VOWEL SIGN I
+A825;CM # SYLOTI NAGRI VOWEL SIGN U
+A826;CM # SYLOTI NAGRI VOWEL SIGN E
+A827;CM # SYLOTI NAGRI VOWEL SIGN OO
+A828;AL # SYLOTI NAGRI POETRY MARK-1
+A829;AL # SYLOTI NAGRI POETRY MARK-2
+A82A;AL # SYLOTI NAGRI POETRY MARK-3
+A82B;AL # SYLOTI NAGRI POETRY MARK-4
+A840;AL # PHAGS-PA LETTER KA
+A841;AL # PHAGS-PA LETTER KHA
+A842;AL # PHAGS-PA LETTER GA
+A843;AL # PHAGS-PA LETTER NGA
+A844;AL # PHAGS-PA LETTER CA
+A845;AL # PHAGS-PA LETTER CHA
+A846;AL # PHAGS-PA LETTER JA
+A847;AL # PHAGS-PA LETTER NYA
+A848;AL # PHAGS-PA LETTER TA
+A849;AL # PHAGS-PA LETTER THA
+A84A;AL # PHAGS-PA LETTER DA
+A84B;AL # PHAGS-PA LETTER NA
+A84C;AL # PHAGS-PA LETTER PA
+A84D;AL # PHAGS-PA LETTER PHA
+A84E;AL # PHAGS-PA LETTER BA
+A84F;AL # PHAGS-PA LETTER MA
+A850;AL # PHAGS-PA LETTER TSA
+A851;AL # PHAGS-PA LETTER TSHA
+A852;AL # PHAGS-PA LETTER DZA
+A853;AL # PHAGS-PA LETTER WA
+A854;AL # PHAGS-PA LETTER ZHA
+A855;AL # PHAGS-PA LETTER ZA
+A856;AL # PHAGS-PA LETTER SMALL A
+A857;AL # PHAGS-PA LETTER YA
+A858;AL # PHAGS-PA LETTER RA
+A859;AL # PHAGS-PA LETTER LA
+A85A;AL # PHAGS-PA LETTER SHA
+A85B;AL # PHAGS-PA LETTER SA
+A85C;AL # PHAGS-PA LETTER HA
+A85D;AL # PHAGS-PA LETTER A
+A85E;AL # PHAGS-PA LETTER I
+A85F;AL # PHAGS-PA LETTER U
+A860;AL # PHAGS-PA LETTER E
+A861;AL # PHAGS-PA LETTER O
+A862;AL # PHAGS-PA LETTER QA
+A863;AL # PHAGS-PA LETTER XA
+A864;AL # PHAGS-PA LETTER FA
+A865;AL # PHAGS-PA LETTER GGA
+A866;AL # PHAGS-PA LETTER EE
+A867;AL # PHAGS-PA SUBJOINED LETTER WA
+A868;AL # PHAGS-PA SUBJOINED LETTER YA
+A869;AL # PHAGS-PA LETTER TTA
+A86A;AL # PHAGS-PA LETTER TTHA
+A86B;AL # PHAGS-PA LETTER DDA
+A86C;AL # PHAGS-PA LETTER NNA
+A86D;AL # PHAGS-PA LETTER ALTERNATE YA
+A86E;AL # PHAGS-PA LETTER VOICELESS SHA
+A86F;AL # PHAGS-PA LETTER VOICED HA
+A870;AL # PHAGS-PA LETTER ASPIRATED FA
+A871;AL # PHAGS-PA SUBJOINED LETTER RA
+A872;AL # PHAGS-PA SUPERFIXED LETTER RA
+A873;AL # PHAGS-PA LETTER CANDRABINDU
+A874;BB # PHAGS-PA SINGLE HEAD MARK
+A875;BB # PHAGS-PA DOUBLE HEAD MARK
+A876;EX # PHAGS-PA MARK SHAD
+A877;EX # PHAGS-PA MARK DOUBLE SHAD
+AC00;H2 # HANGUL SYLLABLE GA
+AC01..AC1B;H3 # HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH
+AC1C;H2 # HANGUL SYLLABLE GAE
+AC1D..AC37;H3 # HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH
+AC38;H2 # HANGUL SYLLABLE GYA
+AC39..AC53;H3 # HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH
+AC54;H2 # HANGUL SYLLABLE GYAE
+AC55..AC6F;H3 # HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH
+AC70;H2 # HANGUL SYLLABLE GEO
+AC71..AC8B;H3 # HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH
+AC8C;H2 # HANGUL SYLLABLE GE
+AC8D..ACA7;H3 # HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH
+ACA8;H2 # HANGUL SYLLABLE GYEO
+ACA9..ACC3;H3 # HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH
+ACC4;H2 # HANGUL SYLLABLE GYE
+ACC5..ACDF;H3 # HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH
+ACE0;H2 # HANGUL SYLLABLE GO
+ACE1..ACFB;H3 # HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH
+ACFC;H2 # HANGUL SYLLABLE GWA
+ACFD..AD17;H3 # HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH
+AD18;H2 # HANGUL SYLLABLE GWAE
+AD19..AD33;H3 # HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH
+AD34;H2 # HANGUL SYLLABLE GOE
+AD35..AD4F;H3 # HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH
+AD50;H2 # HANGUL SYLLABLE GYO
+AD51..AD6B;H3 # HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH
+AD6C;H2 # HANGUL SYLLABLE GU
+AD6D..AD87;H3 # HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH
+AD88;H2 # HANGUL SYLLABLE GWEO
+AD89..ADA3;H3 # HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH
+ADA4;H2 # HANGUL SYLLABLE GWE
+ADA5..ADBF;H3 # HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH
+ADC0;H2 # HANGUL SYLLABLE GWI
+ADC1..ADDB;H3 # HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH
+ADDC;H2 # HANGUL SYLLABLE GYU
+ADDD..ADF7;H3 # HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH
+ADF8;H2 # HANGUL SYLLABLE GEU
+ADF9..AE13;H3 # HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH
+AE14;H2 # HANGUL SYLLABLE GYI
+AE15..AE2F;H3 # HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH
+AE30;H2 # HANGUL SYLLABLE GI
+AE31..AE4B;H3 # HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH
+AE4C;H2 # HANGUL SYLLABLE GGA
+AE4D..AE67;H3 # HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH
+AE68;H2 # HANGUL SYLLABLE GGAE
+AE69..AE83;H3 # HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH
+AE84;H2 # HANGUL SYLLABLE GGYA
+AE85..AE9F;H3 # HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH
+AEA0;H2 # HANGUL SYLLABLE GGYAE
+AEA1..AEBB;H3 # HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH
+AEBC;H2 # HANGUL SYLLABLE GGEO
+AEBD..AED7;H3 # HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH
+AED8;H2 # HANGUL SYLLABLE GGE
+AED9..AEF3;H3 # HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH
+AEF4;H2 # HANGUL SYLLABLE GGYEO
+AEF5..AF0F;H3 # HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH
+AF10;H2 # HANGUL SYLLABLE GGYE
+AF11..AF2B;H3 # HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH
+AF2C;H2 # HANGUL SYLLABLE GGO
+AF2D..AF47;H3 # HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH
+AF48;H2 # HANGUL SYLLABLE GGWA
+AF49..AF63;H3 # HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH
+AF64;H2 # HANGUL SYLLABLE GGWAE
+AF65..AF7F;H3 # HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH
+AF80;H2 # HANGUL SYLLABLE GGOE
+AF81..AF9B;H3 # HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH
+AF9C;H2 # HANGUL SYLLABLE GGYO
+AF9D..AFB7;H3 # HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH
+AFB8;H2 # HANGUL SYLLABLE GGU
+AFB9..AFD3;H3 # HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH
+AFD4;H2 # HANGUL SYLLABLE GGWEO
+AFD5..AFEF;H3 # HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH
+AFF0;H2 # HANGUL SYLLABLE GGWE
+AFF1..B00B;H3 # HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH
+B00C;H2 # HANGUL SYLLABLE GGWI
+B00D..B027;H3 # HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH
+B028;H2 # HANGUL SYLLABLE GGYU
+B029..B043;H3 # HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH
+B044;H2 # HANGUL SYLLABLE GGEU
+B045..B05F;H3 # HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH
+B060;H2 # HANGUL SYLLABLE GGYI
+B061..B07B;H3 # HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH
+B07C;H2 # HANGUL SYLLABLE GGI
+B07D..B097;H3 # HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH
+B098;H2 # HANGUL SYLLABLE NA
+B099..B0B3;H3 # HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH
+B0B4;H2 # HANGUL SYLLABLE NAE
+B0B5..B0CF;H3 # HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH
+B0D0;H2 # HANGUL SYLLABLE NYA
+B0D1..B0EB;H3 # HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH
+B0EC;H2 # HANGUL SYLLABLE NYAE
+B0ED..B107;H3 # HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH
+B108;H2 # HANGUL SYLLABLE NEO
+B109..B123;H3 # HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH
+B124;H2 # HANGUL SYLLABLE NE
+B125..B13F;H3 # HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH
+B140;H2 # HANGUL SYLLABLE NYEO
+B141..B15B;H3 # HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH
+B15C;H2 # HANGUL SYLLABLE NYE
+B15D..B177;H3 # HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH
+B178;H2 # HANGUL SYLLABLE NO
+B179..B193;H3 # HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH
+B194;H2 # HANGUL SYLLABLE NWA
+B195..B1AF;H3 # HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH
+B1B0;H2 # HANGUL SYLLABLE NWAE
+B1B1..B1CB;H3 # HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH
+B1CC;H2 # HANGUL SYLLABLE NOE
+B1CD..B1E7;H3 # HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH
+B1E8;H2 # HANGUL SYLLABLE NYO
+B1E9..B203;H3 # HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH
+B204;H2 # HANGUL SYLLABLE NU
+B205..B21F;H3 # HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH
+B220;H2 # HANGUL SYLLABLE NWEO
+B221..B23B;H3 # HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH
+B23C;H2 # HANGUL SYLLABLE NWE
+B23D..B257;H3 # HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH
+B258;H2 # HANGUL SYLLABLE NWI
+B259..B273;H3 # HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH
+B274;H2 # HANGUL SYLLABLE NYU
+B275..B28F;H3 # HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH
+B290;H2 # HANGUL SYLLABLE NEU
+B291..B2AB;H3 # HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH
+B2AC;H2 # HANGUL SYLLABLE NYI
+B2AD..B2C7;H3 # HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH
+B2C8;H2 # HANGUL SYLLABLE NI
+B2C9..B2E3;H3 # HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH
+B2E4;H2 # HANGUL SYLLABLE DA
+B2E5..B2FF;H3 # HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH
+B300;H2 # HANGUL SYLLABLE DAE
+B301..B31B;H3 # HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH
+B31C;H2 # HANGUL SYLLABLE DYA
+B31D..B337;H3 # HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH
+B338;H2 # HANGUL SYLLABLE DYAE
+B339..B353;H3 # HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH
+B354;H2 # HANGUL SYLLABLE DEO
+B355..B36F;H3 # HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH
+B370;H2 # HANGUL SYLLABLE DE
+B371..B38B;H3 # HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH
+B38C;H2 # HANGUL SYLLABLE DYEO
+B38D..B3A7;H3 # HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH
+B3A8;H2 # HANGUL SYLLABLE DYE
+B3A9..B3C3;H3 # HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH
+B3C4;H2 # HANGUL SYLLABLE DO
+B3C5..B3DF;H3 # HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH
+B3E0;H2 # HANGUL SYLLABLE DWA
+B3E1..B3FB;H3 # HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH
+B3FC;H2 # HANGUL SYLLABLE DWAE
+B3FD..B417;H3 # HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH
+B418;H2 # HANGUL SYLLABLE DOE
+B419..B433;H3 # HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH
+B434;H2 # HANGUL SYLLABLE DYO
+B435..B44F;H3 # HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH
+B450;H2 # HANGUL SYLLABLE DU
+B451..B46B;H3 # HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH
+B46C;H2 # HANGUL SYLLABLE DWEO
+B46D..B487;H3 # HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH
+B488;H2 # HANGUL SYLLABLE DWE
+B489..B4A3;H3 # HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH
+B4A4;H2 # HANGUL SYLLABLE DWI
+B4A5..B4BF;H3 # HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH
+B4C0;H2 # HANGUL SYLLABLE DYU
+B4C1..B4DB;H3 # HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH
+B4DC;H2 # HANGUL SYLLABLE DEU
+B4DD..B4F7;H3 # HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH
+B4F8;H2 # HANGUL SYLLABLE DYI
+B4F9..B513;H3 # HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH
+B514;H2 # HANGUL SYLLABLE DI
+B515..B52F;H3 # HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH
+B530;H2 # HANGUL SYLLABLE DDA
+B531..B54B;H3 # HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH
+B54C;H2 # HANGUL SYLLABLE DDAE
+B54D..B567;H3 # HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH
+B568;H2 # HANGUL SYLLABLE DDYA
+B569..B583;H3 # HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH
+B584;H2 # HANGUL SYLLABLE DDYAE
+B585..B59F;H3 # HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH
+B5A0;H2 # HANGUL SYLLABLE DDEO
+B5A1..B5BB;H3 # HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH
+B5BC;H2 # HANGUL SYLLABLE DDE
+B5BD..B5D7;H3 # HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH
+B5D8;H2 # HANGUL SYLLABLE DDYEO
+B5D9..B5F3;H3 # HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH
+B5F4;H2 # HANGUL SYLLABLE DDYE
+B5F5..B60F;H3 # HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH
+B610;H2 # HANGUL SYLLABLE DDO
+B611..B62B;H3 # HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH
+B62C;H2 # HANGUL SYLLABLE DDWA
+B62D..B647;H3 # HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH
+B648;H2 # HANGUL SYLLABLE DDWAE
+B649..B663;H3 # HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH
+B664;H2 # HANGUL SYLLABLE DDOE
+B665..B67F;H3 # HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH
+B680;H2 # HANGUL SYLLABLE DDYO
+B681..B69B;H3 # HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH
+B69C;H2 # HANGUL SYLLABLE DDU
+B69D..B6B7;H3 # HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH
+B6B8;H2 # HANGUL SYLLABLE DDWEO
+B6B9..B6D3;H3 # HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH
+B6D4;H2 # HANGUL SYLLABLE DDWE
+B6D5..B6EF;H3 # HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH
+B6F0;H2 # HANGUL SYLLABLE DDWI
+B6F1..B70B;H3 # HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH
+B70C;H2 # HANGUL SYLLABLE DDYU
+B70D..B727;H3 # HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH
+B728;H2 # HANGUL SYLLABLE DDEU
+B729..B743;H3 # HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH
+B744;H2 # HANGUL SYLLABLE DDYI
+B745..B75F;H3 # HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH
+B760;H2 # HANGUL SYLLABLE DDI
+B761..B77B;H3 # HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH
+B77C;H2 # HANGUL SYLLABLE RA
+B77D..B797;H3 # HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH
+B798;H2 # HANGUL SYLLABLE RAE
+B799..B7B3;H3 # HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH
+B7B4;H2 # HANGUL SYLLABLE RYA
+B7B5..B7CF;H3 # HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH
+B7D0;H2 # HANGUL SYLLABLE RYAE
+B7D1..B7EB;H3 # HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH
+B7EC;H2 # HANGUL SYLLABLE REO
+B7ED..B807;H3 # HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH
+B808;H2 # HANGUL SYLLABLE RE
+B809..B823;H3 # HANGUL SYLLABLE REG..HANGUL SYLLABLE REH
+B824;H2 # HANGUL SYLLABLE RYEO
+B825..B83F;H3 # HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH
+B840;H2 # HANGUL SYLLABLE RYE
+B841..B85B;H3 # HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH
+B85C;H2 # HANGUL SYLLABLE RO
+B85D..B877;H3 # HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH
+B878;H2 # HANGUL SYLLABLE RWA
+B879..B893;H3 # HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH
+B894;H2 # HANGUL SYLLABLE RWAE
+B895..B8AF;H3 # HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH
+B8B0;H2 # HANGUL SYLLABLE ROE
+B8B1..B8CB;H3 # HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH
+B8CC;H2 # HANGUL SYLLABLE RYO
+B8CD..B8E7;H3 # HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH
+B8E8;H2 # HANGUL SYLLABLE RU
+B8E9..B903;H3 # HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH
+B904;H2 # HANGUL SYLLABLE RWEO
+B905..B91F;H3 # HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH
+B920;H2 # HANGUL SYLLABLE RWE
+B921..B93B;H3 # HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH
+B93C;H2 # HANGUL SYLLABLE RWI
+B93D..B957;H3 # HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH
+B958;H2 # HANGUL SYLLABLE RYU
+B959..B973;H3 # HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH
+B974;H2 # HANGUL SYLLABLE REU
+B975..B98F;H3 # HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH
+B990;H2 # HANGUL SYLLABLE RYI
+B991..B9AB;H3 # HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH
+B9AC;H2 # HANGUL SYLLABLE RI
+B9AD..B9C7;H3 # HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH
+B9C8;H2 # HANGUL SYLLABLE MA
+B9C9..B9E3;H3 # HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH
+B9E4;H2 # HANGUL SYLLABLE MAE
+B9E5..B9FF;H3 # HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH
+BA00;H2 # HANGUL SYLLABLE MYA
+BA01..BA1B;H3 # HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH
+BA1C;H2 # HANGUL SYLLABLE MYAE
+BA1D..BA37;H3 # HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH
+BA38;H2 # HANGUL SYLLABLE MEO
+BA39..BA53;H3 # HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH
+BA54;H2 # HANGUL SYLLABLE ME
+BA55..BA6F;H3 # HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH
+BA70;H2 # HANGUL SYLLABLE MYEO
+BA71..BA8B;H3 # HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH
+BA8C;H2 # HANGUL SYLLABLE MYE
+BA8D..BAA7;H3 # HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH
+BAA8;H2 # HANGUL SYLLABLE MO
+BAA9..BAC3;H3 # HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH
+BAC4;H2 # HANGUL SYLLABLE MWA
+BAC5..BADF;H3 # HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH
+BAE0;H2 # HANGUL SYLLABLE MWAE
+BAE1..BAFB;H3 # HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH
+BAFC;H2 # HANGUL SYLLABLE MOE
+BAFD..BB17;H3 # HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH
+BB18;H2 # HANGUL SYLLABLE MYO
+BB19..BB33;H3 # HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH
+BB34;H2 # HANGUL SYLLABLE MU
+BB35..BB4F;H3 # HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH
+BB50;H2 # HANGUL SYLLABLE MWEO
+BB51..BB6B;H3 # HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH
+BB6C;H2 # HANGUL SYLLABLE MWE
+BB6D..BB87;H3 # HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH
+BB88;H2 # HANGUL SYLLABLE MWI
+BB89..BBA3;H3 # HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH
+BBA4;H2 # HANGUL SYLLABLE MYU
+BBA5..BBBF;H3 # HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH
+BBC0;H2 # HANGUL SYLLABLE MEU
+BBC1..BBDB;H3 # HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH
+BBDC;H2 # HANGUL SYLLABLE MYI
+BBDD..BBF7;H3 # HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH
+BBF8;H2 # HANGUL SYLLABLE MI
+BBF9..BC13;H3 # HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH
+BC14;H2 # HANGUL SYLLABLE BA
+BC15..BC2F;H3 # HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH
+BC30;H2 # HANGUL SYLLABLE BAE
+BC31..BC4B;H3 # HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH
+BC4C;H2 # HANGUL SYLLABLE BYA
+BC4D..BC67;H3 # HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH
+BC68;H2 # HANGUL SYLLABLE BYAE
+BC69..BC83;H3 # HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH
+BC84;H2 # HANGUL SYLLABLE BEO
+BC85..BC9F;H3 # HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH
+BCA0;H2 # HANGUL SYLLABLE BE
+BCA1..BCBB;H3 # HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH
+BCBC;H2 # HANGUL SYLLABLE BYEO
+BCBD..BCD7;H3 # HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH
+BCD8;H2 # HANGUL SYLLABLE BYE
+BCD9..BCF3;H3 # HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH
+BCF4;H2 # HANGUL SYLLABLE BO
+BCF5..BD0F;H3 # HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH
+BD10;H2 # HANGUL SYLLABLE BWA
+BD11..BD2B;H3 # HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH
+BD2C;H2 # HANGUL SYLLABLE BWAE
+BD2D..BD47;H3 # HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH
+BD48;H2 # HANGUL SYLLABLE BOE
+BD49..BD63;H3 # HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH
+BD64;H2 # HANGUL SYLLABLE BYO
+BD65..BD7F;H3 # HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH
+BD80;H2 # HANGUL SYLLABLE BU
+BD81..BD9B;H3 # HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH
+BD9C;H2 # HANGUL SYLLABLE BWEO
+BD9D..BDB7;H3 # HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH
+BDB8;H2 # HANGUL SYLLABLE BWE
+BDB9..BDD3;H3 # HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH
+BDD4;H2 # HANGUL SYLLABLE BWI
+BDD5..BDEF;H3 # HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH
+BDF0;H2 # HANGUL SYLLABLE BYU
+BDF1..BE0B;H3 # HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH
+BE0C;H2 # HANGUL SYLLABLE BEU
+BE0D..BE27;H3 # HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH
+BE28;H2 # HANGUL SYLLABLE BYI
+BE29..BE43;H3 # HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH
+BE44;H2 # HANGUL SYLLABLE BI
+BE45..BE5F;H3 # HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH
+BE60;H2 # HANGUL SYLLABLE BBA
+BE61..BE7B;H3 # HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH
+BE7C;H2 # HANGUL SYLLABLE BBAE
+BE7D..BE97;H3 # HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH
+BE98;H2 # HANGUL SYLLABLE BBYA
+BE99..BEB3;H3 # HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH
+BEB4;H2 # HANGUL SYLLABLE BBYAE
+BEB5..BECF;H3 # HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH
+BED0;H2 # HANGUL SYLLABLE BBEO
+BED1..BEEB;H3 # HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH
+BEEC;H2 # HANGUL SYLLABLE BBE
+BEED..BF07;H3 # HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH
+BF08;H2 # HANGUL SYLLABLE BBYEO
+BF09..BF23;H3 # HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH
+BF24;H2 # HANGUL SYLLABLE BBYE
+BF25..BF3F;H3 # HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH
+BF40;H2 # HANGUL SYLLABLE BBO
+BF41..BF5B;H3 # HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH
+BF5C;H2 # HANGUL SYLLABLE BBWA
+BF5D..BF77;H3 # HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH
+BF78;H2 # HANGUL SYLLABLE BBWAE
+BF79..BF93;H3 # HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH
+BF94;H2 # HANGUL SYLLABLE BBOE
+BF95..BFAF;H3 # HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH
+BFB0;H2 # HANGUL SYLLABLE BBYO
+BFB1..BFCB;H3 # HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH
+BFCC;H2 # HANGUL SYLLABLE BBU
+BFCD..BFE7;H3 # HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH
+BFE8;H2 # HANGUL SYLLABLE BBWEO
+BFE9..C003;H3 # HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH
+C004;H2 # HANGUL SYLLABLE BBWE
+C005..C01F;H3 # HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH
+C020;H2 # HANGUL SYLLABLE BBWI
+C021..C03B;H3 # HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH
+C03C;H2 # HANGUL SYLLABLE BBYU
+C03D..C057;H3 # HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH
+C058;H2 # HANGUL SYLLABLE BBEU
+C059..C073;H3 # HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH
+C074;H2 # HANGUL SYLLABLE BBYI
+C075..C08F;H3 # HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH
+C090;H2 # HANGUL SYLLABLE BBI
+C091..C0AB;H3 # HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH
+C0AC;H2 # HANGUL SYLLABLE SA
+C0AD..C0C7;H3 # HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH
+C0C8;H2 # HANGUL SYLLABLE SAE
+C0C9..C0E3;H3 # HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH
+C0E4;H2 # HANGUL SYLLABLE SYA
+C0E5..C0FF;H3 # HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH
+C100;H2 # HANGUL SYLLABLE SYAE
+C101..C11B;H3 # HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH
+C11C;H2 # HANGUL SYLLABLE SEO
+C11D..C137;H3 # HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH
+C138;H2 # HANGUL SYLLABLE SE
+C139..C153;H3 # HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH
+C154;H2 # HANGUL SYLLABLE SYEO
+C155..C16F;H3 # HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH
+C170;H2 # HANGUL SYLLABLE SYE
+C171..C18B;H3 # HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH
+C18C;H2 # HANGUL SYLLABLE SO
+C18D..C1A7;H3 # HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH
+C1A8;H2 # HANGUL SYLLABLE SWA
+C1A9..C1C3;H3 # HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH
+C1C4;H2 # HANGUL SYLLABLE SWAE
+C1C5..C1DF;H3 # HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH
+C1E0;H2 # HANGUL SYLLABLE SOE
+C1E1..C1FB;H3 # HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH
+C1FC;H2 # HANGUL SYLLABLE SYO
+C1FD..C217;H3 # HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH
+C218;H2 # HANGUL SYLLABLE SU
+C219..C233;H3 # HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH
+C234;H2 # HANGUL SYLLABLE SWEO
+C235..C24F;H3 # HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH
+C250;H2 # HANGUL SYLLABLE SWE
+C251..C26B;H3 # HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH
+C26C;H2 # HANGUL SYLLABLE SWI
+C26D..C287;H3 # HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH
+C288;H2 # HANGUL SYLLABLE SYU
+C289..C2A3;H3 # HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH
+C2A4;H2 # HANGUL SYLLABLE SEU
+C2A5..C2BF;H3 # HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH
+C2C0;H2 # HANGUL SYLLABLE SYI
+C2C1..C2DB;H3 # HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH
+C2DC;H2 # HANGUL SYLLABLE SI
+C2DD..C2F7;H3 # HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH
+C2F8;H2 # HANGUL SYLLABLE SSA
+C2F9..C313;H3 # HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH
+C314;H2 # HANGUL SYLLABLE SSAE
+C315..C32F;H3 # HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH
+C330;H2 # HANGUL SYLLABLE SSYA
+C331..C34B;H3 # HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH
+C34C;H2 # HANGUL SYLLABLE SSYAE
+C34D..C367;H3 # HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH
+C368;H2 # HANGUL SYLLABLE SSEO
+C369..C383;H3 # HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH
+C384;H2 # HANGUL SYLLABLE SSE
+C385..C39F;H3 # HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH
+C3A0;H2 # HANGUL SYLLABLE SSYEO
+C3A1..C3BB;H3 # HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH
+C3BC;H2 # HANGUL SYLLABLE SSYE
+C3BD..C3D7;H3 # HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH
+C3D8;H2 # HANGUL SYLLABLE SSO
+C3D9..C3F3;H3 # HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH
+C3F4;H2 # HANGUL SYLLABLE SSWA
+C3F5..C40F;H3 # HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH
+C410;H2 # HANGUL SYLLABLE SSWAE
+C411..C42B;H3 # HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH
+C42C;H2 # HANGUL SYLLABLE SSOE
+C42D..C447;H3 # HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH
+C448;H2 # HANGUL SYLLABLE SSYO
+C449..C463;H3 # HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH
+C464;H2 # HANGUL SYLLABLE SSU
+C465..C47F;H3 # HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH
+C480;H2 # HANGUL SYLLABLE SSWEO
+C481..C49B;H3 # HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH
+C49C;H2 # HANGUL SYLLABLE SSWE
+C49D..C4B7;H3 # HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH
+C4B8;H2 # HANGUL SYLLABLE SSWI
+C4B9..C4D3;H3 # HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH
+C4D4;H2 # HANGUL SYLLABLE SSYU
+C4D5..C4EF;H3 # HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH
+C4F0;H2 # HANGUL SYLLABLE SSEU
+C4F1..C50B;H3 # HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH
+C50C;H2 # HANGUL SYLLABLE SSYI
+C50D..C527;H3 # HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH
+C528;H2 # HANGUL SYLLABLE SSI
+C529..C543;H3 # HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH
+C544;H2 # HANGUL SYLLABLE A
+C545..C55F;H3 # HANGUL SYLLABLE AG..HANGUL SYLLABLE AH
+C560;H2 # HANGUL SYLLABLE AE
+C561..C57B;H3 # HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH
+C57C;H2 # HANGUL SYLLABLE YA
+C57D..C597;H3 # HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH
+C598;H2 # HANGUL SYLLABLE YAE
+C599..C5B3;H3 # HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH
+C5B4;H2 # HANGUL SYLLABLE EO
+C5B5..C5CF;H3 # HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH
+C5D0;H2 # HANGUL SYLLABLE E
+C5D1..C5EB;H3 # HANGUL SYLLABLE EG..HANGUL SYLLABLE EH
+C5EC;H2 # HANGUL SYLLABLE YEO
+C5ED..C607;H3 # HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH
+C608;H2 # HANGUL SYLLABLE YE
+C609..C623;H3 # HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH
+C624;H2 # HANGUL SYLLABLE O
+C625..C63F;H3 # HANGUL SYLLABLE OG..HANGUL SYLLABLE OH
+C640;H2 # HANGUL SYLLABLE WA
+C641..C65B;H3 # HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH
+C65C;H2 # HANGUL SYLLABLE WAE
+C65D..C677;H3 # HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH
+C678;H2 # HANGUL SYLLABLE OE
+C679..C693;H3 # HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH
+C694;H2 # HANGUL SYLLABLE YO
+C695..C6AF;H3 # HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH
+C6B0;H2 # HANGUL SYLLABLE U
+C6B1..C6CB;H3 # HANGUL SYLLABLE UG..HANGUL SYLLABLE UH
+C6CC;H2 # HANGUL SYLLABLE WEO
+C6CD..C6E7;H3 # HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH
+C6E8;H2 # HANGUL SYLLABLE WE
+C6E9..C703;H3 # HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH
+C704;H2 # HANGUL SYLLABLE WI
+C705..C71F;H3 # HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH
+C720;H2 # HANGUL SYLLABLE YU
+C721..C73B;H3 # HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH
+C73C;H2 # HANGUL SYLLABLE EU
+C73D..C757;H3 # HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH
+C758;H2 # HANGUL SYLLABLE YI
+C759..C773;H3 # HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH
+C774;H2 # HANGUL SYLLABLE I
+C775..C78F;H3 # HANGUL SYLLABLE IG..HANGUL SYLLABLE IH
+C790;H2 # HANGUL SYLLABLE JA
+C791..C7AB;H3 # HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH
+C7AC;H2 # HANGUL SYLLABLE JAE
+C7AD..C7C7;H3 # HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH
+C7C8;H2 # HANGUL SYLLABLE JYA
+C7C9..C7E3;H3 # HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH
+C7E4;H2 # HANGUL SYLLABLE JYAE
+C7E5..C7FF;H3 # HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH
+C800;H2 # HANGUL SYLLABLE JEO
+C801..C81B;H3 # HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH
+C81C;H2 # HANGUL SYLLABLE JE
+C81D..C837;H3 # HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH
+C838;H2 # HANGUL SYLLABLE JYEO
+C839..C853;H3 # HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH
+C854;H2 # HANGUL SYLLABLE JYE
+C855..C86F;H3 # HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH
+C870;H2 # HANGUL SYLLABLE JO
+C871..C88B;H3 # HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH
+C88C;H2 # HANGUL SYLLABLE JWA
+C88D..C8A7;H3 # HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH
+C8A8;H2 # HANGUL SYLLABLE JWAE
+C8A9..C8C3;H3 # HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH
+C8C4;H2 # HANGUL SYLLABLE JOE
+C8C5..C8DF;H3 # HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH
+C8E0;H2 # HANGUL SYLLABLE JYO
+C8E1..C8FB;H3 # HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH
+C8FC;H2 # HANGUL SYLLABLE JU
+C8FD..C917;H3 # HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH
+C918;H2 # HANGUL SYLLABLE JWEO
+C919..C933;H3 # HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH
+C934;H2 # HANGUL SYLLABLE JWE
+C935..C94F;H3 # HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH
+C950;H2 # HANGUL SYLLABLE JWI
+C951..C96B;H3 # HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH
+C96C;H2 # HANGUL SYLLABLE JYU
+C96D..C987;H3 # HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH
+C988;H2 # HANGUL SYLLABLE JEU
+C989..C9A3;H3 # HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH
+C9A4;H2 # HANGUL SYLLABLE JYI
+C9A5..C9BF;H3 # HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH
+C9C0;H2 # HANGUL SYLLABLE JI
+C9C1..C9DB;H3 # HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH
+C9DC;H2 # HANGUL SYLLABLE JJA
+C9DD..C9F7;H3 # HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH
+C9F8;H2 # HANGUL SYLLABLE JJAE
+C9F9..CA13;H3 # HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH
+CA14;H2 # HANGUL SYLLABLE JJYA
+CA15..CA2F;H3 # HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH
+CA30;H2 # HANGUL SYLLABLE JJYAE
+CA31..CA4B;H3 # HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH
+CA4C;H2 # HANGUL SYLLABLE JJEO
+CA4D..CA67;H3 # HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH
+CA68;H2 # HANGUL SYLLABLE JJE
+CA69..CA83;H3 # HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH
+CA84;H2 # HANGUL SYLLABLE JJYEO
+CA85..CA9F;H3 # HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH
+CAA0;H2 # HANGUL SYLLABLE JJYE
+CAA1..CABB;H3 # HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH
+CABC;H2 # HANGUL SYLLABLE JJO
+CABD..CAD7;H3 # HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH
+CAD8;H2 # HANGUL SYLLABLE JJWA
+CAD9..CAF3;H3 # HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH
+CAF4;H2 # HANGUL SYLLABLE JJWAE
+CAF5..CB0F;H3 # HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH
+CB10;H2 # HANGUL SYLLABLE JJOE
+CB11..CB2B;H3 # HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH
+CB2C;H2 # HANGUL SYLLABLE JJYO
+CB2D..CB47;H3 # HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH
+CB48;H2 # HANGUL SYLLABLE JJU
+CB49..CB63;H3 # HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH
+CB64;H2 # HANGUL SYLLABLE JJWEO
+CB65..CB7F;H3 # HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH
+CB80;H2 # HANGUL SYLLABLE JJWE
+CB81..CB9B;H3 # HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH
+CB9C;H2 # HANGUL SYLLABLE JJWI
+CB9D..CBB7;H3 # HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH
+CBB8;H2 # HANGUL SYLLABLE JJYU
+CBB9..CBD3;H3 # HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH
+CBD4;H2 # HANGUL SYLLABLE JJEU
+CBD5..CBEF;H3 # HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH
+CBF0;H2 # HANGUL SYLLABLE JJYI
+CBF1..CC0B;H3 # HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH
+CC0C;H2 # HANGUL SYLLABLE JJI
+CC0D..CC27;H3 # HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH
+CC28;H2 # HANGUL SYLLABLE CA
+CC29..CC43;H3 # HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH
+CC44;H2 # HANGUL SYLLABLE CAE
+CC45..CC5F;H3 # HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH
+CC60;H2 # HANGUL SYLLABLE CYA
+CC61..CC7B;H3 # HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH
+CC7C;H2 # HANGUL SYLLABLE CYAE
+CC7D..CC97;H3 # HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH
+CC98;H2 # HANGUL SYLLABLE CEO
+CC99..CCB3;H3 # HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH
+CCB4;H2 # HANGUL SYLLABLE CE
+CCB5..CCCF;H3 # HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH
+CCD0;H2 # HANGUL SYLLABLE CYEO
+CCD1..CCEB;H3 # HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH
+CCEC;H2 # HANGUL SYLLABLE CYE
+CCED..CD07;H3 # HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH
+CD08;H2 # HANGUL SYLLABLE CO
+CD09..CD23;H3 # HANGUL SYLLABLE COG..HANGUL SYLLABLE COH
+CD24;H2 # HANGUL SYLLABLE CWA
+CD25..CD3F;H3 # HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH
+CD40;H2 # HANGUL SYLLABLE CWAE
+CD41..CD5B;H3 # HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH
+CD5C;H2 # HANGUL SYLLABLE COE
+CD5D..CD77;H3 # HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH
+CD78;H2 # HANGUL SYLLABLE CYO
+CD79..CD93;H3 # HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH
+CD94;H2 # HANGUL SYLLABLE CU
+CD95..CDAF;H3 # HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH
+CDB0;H2 # HANGUL SYLLABLE CWEO
+CDB1..CDCB;H3 # HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH
+CDCC;H2 # HANGUL SYLLABLE CWE
+CDCD..CDE7;H3 # HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH
+CDE8;H2 # HANGUL SYLLABLE CWI
+CDE9..CE03;H3 # HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH
+CE04;H2 # HANGUL SYLLABLE CYU
+CE05..CE1F;H3 # HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH
+CE20;H2 # HANGUL SYLLABLE CEU
+CE21..CE3B;H3 # HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH
+CE3C;H2 # HANGUL SYLLABLE CYI
+CE3D..CE57;H3 # HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH
+CE58;H2 # HANGUL SYLLABLE CI
+CE59..CE73;H3 # HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH
+CE74;H2 # HANGUL SYLLABLE KA
+CE75..CE8F;H3 # HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH
+CE90;H2 # HANGUL SYLLABLE KAE
+CE91..CEAB;H3 # HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH
+CEAC;H2 # HANGUL SYLLABLE KYA
+CEAD..CEC7;H3 # HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH
+CEC8;H2 # HANGUL SYLLABLE KYAE
+CEC9..CEE3;H3 # HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH
+CEE4;H2 # HANGUL SYLLABLE KEO
+CEE5..CEFF;H3 # HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH
+CF00;H2 # HANGUL SYLLABLE KE
+CF01..CF1B;H3 # HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH
+CF1C;H2 # HANGUL SYLLABLE KYEO
+CF1D..CF37;H3 # HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH
+CF38;H2 # HANGUL SYLLABLE KYE
+CF39..CF53;H3 # HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH
+CF54;H2 # HANGUL SYLLABLE KO
+CF55..CF6F;H3 # HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH
+CF70;H2 # HANGUL SYLLABLE KWA
+CF71..CF8B;H3 # HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH
+CF8C;H2 # HANGUL SYLLABLE KWAE
+CF8D..CFA7;H3 # HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH
+CFA8;H2 # HANGUL SYLLABLE KOE
+CFA9..CFC3;H3 # HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH
+CFC4;H2 # HANGUL SYLLABLE KYO
+CFC5..CFDF;H3 # HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH
+CFE0;H2 # HANGUL SYLLABLE KU
+CFE1..CFFB;H3 # HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH
+CFFC;H2 # HANGUL SYLLABLE KWEO
+CFFD..D017;H3 # HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH
+D018;H2 # HANGUL SYLLABLE KWE
+D019..D033;H3 # HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH
+D034;H2 # HANGUL SYLLABLE KWI
+D035..D04F;H3 # HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH
+D050;H2 # HANGUL SYLLABLE KYU
+D051..D06B;H3 # HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH
+D06C;H2 # HANGUL SYLLABLE KEU
+D06D..D087;H3 # HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH
+D088;H2 # HANGUL SYLLABLE KYI
+D089..D0A3;H3 # HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH
+D0A4;H2 # HANGUL SYLLABLE KI
+D0A5..D0BF;H3 # HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH
+D0C0;H2 # HANGUL SYLLABLE TA
+D0C1..D0DB;H3 # HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH
+D0DC;H2 # HANGUL SYLLABLE TAE
+D0DD..D0F7;H3 # HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH
+D0F8;H2 # HANGUL SYLLABLE TYA
+D0F9..D113;H3 # HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH
+D114;H2 # HANGUL SYLLABLE TYAE
+D115..D12F;H3 # HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH
+D130;H2 # HANGUL SYLLABLE TEO
+D131..D14B;H3 # HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH
+D14C;H2 # HANGUL SYLLABLE TE
+D14D..D167;H3 # HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH
+D168;H2 # HANGUL SYLLABLE TYEO
+D169..D183;H3 # HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH
+D184;H2 # HANGUL SYLLABLE TYE
+D185..D19F;H3 # HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH
+D1A0;H2 # HANGUL SYLLABLE TO
+D1A1..D1BB;H3 # HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH
+D1BC;H2 # HANGUL SYLLABLE TWA
+D1BD..D1D7;H3 # HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH
+D1D8;H2 # HANGUL SYLLABLE TWAE
+D1D9..D1F3;H3 # HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH
+D1F4;H2 # HANGUL SYLLABLE TOE
+D1F5..D20F;H3 # HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH
+D210;H2 # HANGUL SYLLABLE TYO
+D211..D22B;H3 # HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH
+D22C;H2 # HANGUL SYLLABLE TU
+D22D..D247;H3 # HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH
+D248;H2 # HANGUL SYLLABLE TWEO
+D249..D263;H3 # HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH
+D264;H2 # HANGUL SYLLABLE TWE
+D265..D27F;H3 # HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH
+D280;H2 # HANGUL SYLLABLE TWI
+D281..D29B;H3 # HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH
+D29C;H2 # HANGUL SYLLABLE TYU
+D29D..D2B7;H3 # HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH
+D2B8;H2 # HANGUL SYLLABLE TEU
+D2B9..D2D3;H3 # HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH
+D2D4;H2 # HANGUL SYLLABLE TYI
+D2D5..D2EF;H3 # HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH
+D2F0;H2 # HANGUL SYLLABLE TI
+D2F1..D30B;H3 # HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH
+D30C;H2 # HANGUL SYLLABLE PA
+D30D..D327;H3 # HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH
+D328;H2 # HANGUL SYLLABLE PAE
+D329..D343;H3 # HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH
+D344;H2 # HANGUL SYLLABLE PYA
+D345..D35F;H3 # HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH
+D360;H2 # HANGUL SYLLABLE PYAE
+D361..D37B;H3 # HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH
+D37C;H2 # HANGUL SYLLABLE PEO
+D37D..D397;H3 # HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH
+D398;H2 # HANGUL SYLLABLE PE
+D399..D3B3;H3 # HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH
+D3B4;H2 # HANGUL SYLLABLE PYEO
+D3B5..D3CF;H3 # HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH
+D3D0;H2 # HANGUL SYLLABLE PYE
+D3D1..D3EB;H3 # HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH
+D3EC;H2 # HANGUL SYLLABLE PO
+D3ED..D407;H3 # HANGUL SYLLABLE POG..HANGUL SYLLABLE POH
+D408;H2 # HANGUL SYLLABLE PWA
+D409..D423;H3 # HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH
+D424;H2 # HANGUL SYLLABLE PWAE
+D425..D43F;H3 # HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH
+D440;H2 # HANGUL SYLLABLE POE
+D441..D45B;H3 # HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH
+D45C;H2 # HANGUL SYLLABLE PYO
+D45D..D477;H3 # HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH
+D478;H2 # HANGUL SYLLABLE PU
+D479..D493;H3 # HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH
+D494;H2 # HANGUL SYLLABLE PWEO
+D495..D4AF;H3 # HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH
+D4B0;H2 # HANGUL SYLLABLE PWE
+D4B1..D4CB;H3 # HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH
+D4CC;H2 # HANGUL SYLLABLE PWI
+D4CD..D4E7;H3 # HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH
+D4E8;H2 # HANGUL SYLLABLE PYU
+D4E9..D503;H3 # HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH
+D504;H2 # HANGUL SYLLABLE PEU
+D505..D51F;H3 # HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH
+D520;H2 # HANGUL SYLLABLE PYI
+D521..D53B;H3 # HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH
+D53C;H2 # HANGUL SYLLABLE PI
+D53D..D557;H3 # HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH
+D558;H2 # HANGUL SYLLABLE HA
+D559..D573;H3 # HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH
+D574;H2 # HANGUL SYLLABLE HAE
+D575..D58F;H3 # HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH
+D590;H2 # HANGUL SYLLABLE HYA
+D591..D5AB;H3 # HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH
+D5AC;H2 # HANGUL SYLLABLE HYAE
+D5AD..D5C7;H3 # HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH
+D5C8;H2 # HANGUL SYLLABLE HEO
+D5C9..D5E3;H3 # HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH
+D5E4;H2 # HANGUL SYLLABLE HE
+D5E5..D5FF;H3 # HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH
+D600;H2 # HANGUL SYLLABLE HYEO
+D601..D61B;H3 # HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH
+D61C;H2 # HANGUL SYLLABLE HYE
+D61D..D637;H3 # HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH
+D638;H2 # HANGUL SYLLABLE HO
+D639..D653;H3 # HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH
+D654;H2 # HANGUL SYLLABLE HWA
+D655..D66F;H3 # HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH
+D670;H2 # HANGUL SYLLABLE HWAE
+D671..D68B;H3 # HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH
+D68C;H2 # HANGUL SYLLABLE HOE
+D68D..D6A7;H3 # HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH
+D6A8;H2 # HANGUL SYLLABLE HYO
+D6A9..D6C3;H3 # HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH
+D6C4;H2 # HANGUL SYLLABLE HU
+D6C5..D6DF;H3 # HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH
+D6E0;H2 # HANGUL SYLLABLE HWEO
+D6E1..D6FB;H3 # HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH
+D6FC;H2 # HANGUL SYLLABLE HWE
+D6FD..D717;H3 # HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH
+D718;H2 # HANGUL SYLLABLE HWI
+D719..D733;H3 # HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH
+D734;H2 # HANGUL SYLLABLE HYU
+D735..D74F;H3 # HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH
+D750;H2 # HANGUL SYLLABLE HEU
+D751..D76B;H3 # HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH
+D76C;H2 # HANGUL SYLLABLE HYI
+D76D..D787;H3 # HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH
+D788;H2 # HANGUL SYLLABLE HI
+D789..D7A3;H3 # HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
+D800..DB7F;SG # <Non Private Use High Surrogate, First>..<Non Private Use High Surrogate, Last>
+DB80..DBFF;SG # <Private Use High Surrogate, First>..<Private Use High Surrogate, Last>
+DC00..DFFF;SG # <Low Surrogate, First>..<Low Surrogate, Last>
+E000..F8FF;XX # <Private Use, First>..<Private Use, Last>
+F900;ID # CJK COMPATIBILITY IDEOGRAPH-F900
+F901;ID # CJK COMPATIBILITY IDEOGRAPH-F901
+F902;ID # CJK COMPATIBILITY IDEOGRAPH-F902
+F903;ID # CJK COMPATIBILITY IDEOGRAPH-F903
+F904;ID # CJK COMPATIBILITY IDEOGRAPH-F904
+F905;ID # CJK COMPATIBILITY IDEOGRAPH-F905
+F906;ID # CJK COMPATIBILITY IDEOGRAPH-F906
+F907;ID # CJK COMPATIBILITY IDEOGRAPH-F907
+F908;ID # CJK COMPATIBILITY IDEOGRAPH-F908
+F909;ID # CJK COMPATIBILITY IDEOGRAPH-F909
+F90A;ID # CJK COMPATIBILITY IDEOGRAPH-F90A
+F90B;ID # CJK COMPATIBILITY IDEOGRAPH-F90B
+F90C;ID # CJK COMPATIBILITY IDEOGRAPH-F90C
+F90D;ID # CJK COMPATIBILITY IDEOGRAPH-F90D
+F90E;ID # CJK COMPATIBILITY IDEOGRAPH-F90E
+F90F;ID # CJK COMPATIBILITY IDEOGRAPH-F90F
+F910;ID # CJK COMPATIBILITY IDEOGRAPH-F910
+F911;ID # CJK COMPATIBILITY IDEOGRAPH-F911
+F912;ID # CJK COMPATIBILITY IDEOGRAPH-F912
+F913;ID # CJK COMPATIBILITY IDEOGRAPH-F913
+F914;ID # CJK COMPATIBILITY IDEOGRAPH-F914
+F915;ID # CJK COMPATIBILITY IDEOGRAPH-F915
+F916;ID # CJK COMPATIBILITY IDEOGRAPH-F916
+F917;ID # CJK COMPATIBILITY IDEOGRAPH-F917
+F918;ID # CJK COMPATIBILITY IDEOGRAPH-F918
+F919;ID # CJK COMPATIBILITY IDEOGRAPH-F919
+F91A;ID # CJK COMPATIBILITY IDEOGRAPH-F91A
+F91B;ID # CJK COMPATIBILITY IDEOGRAPH-F91B
+F91C;ID # CJK COMPATIBILITY IDEOGRAPH-F91C
+F91D;ID # CJK COMPATIBILITY IDEOGRAPH-F91D
+F91E;ID # CJK COMPATIBILITY IDEOGRAPH-F91E
+F91F;ID # CJK COMPATIBILITY IDEOGRAPH-F91F
+F920;ID # CJK COMPATIBILITY IDEOGRAPH-F920
+F921;ID # CJK COMPATIBILITY IDEOGRAPH-F921
+F922;ID # CJK COMPATIBILITY IDEOGRAPH-F922
+F923;ID # CJK COMPATIBILITY IDEOGRAPH-F923
+F924;ID # CJK COMPATIBILITY IDEOGRAPH-F924
+F925;ID # CJK COMPATIBILITY IDEOGRAPH-F925
+F926;ID # CJK COMPATIBILITY IDEOGRAPH-F926
+F927;ID # CJK COMPATIBILITY IDEOGRAPH-F927
+F928;ID # CJK COMPATIBILITY IDEOGRAPH-F928
+F929;ID # CJK COMPATIBILITY IDEOGRAPH-F929
+F92A;ID # CJK COMPATIBILITY IDEOGRAPH-F92A
+F92B;ID # CJK COMPATIBILITY IDEOGRAPH-F92B
+F92C;ID # CJK COMPATIBILITY IDEOGRAPH-F92C
+F92D;ID # CJK COMPATIBILITY IDEOGRAPH-F92D
+F92E;ID # CJK COMPATIBILITY IDEOGRAPH-F92E
+F92F;ID # CJK COMPATIBILITY IDEOGRAPH-F92F
+F930;ID # CJK COMPATIBILITY IDEOGRAPH-F930
+F931;ID # CJK COMPATIBILITY IDEOGRAPH-F931
+F932;ID # CJK COMPATIBILITY IDEOGRAPH-F932
+F933;ID # CJK COMPATIBILITY IDEOGRAPH-F933
+F934;ID # CJK COMPATIBILITY IDEOGRAPH-F934
+F935;ID # CJK COMPATIBILITY IDEOGRAPH-F935
+F936;ID # CJK COMPATIBILITY IDEOGRAPH-F936
+F937;ID # CJK COMPATIBILITY IDEOGRAPH-F937
+F938;ID # CJK COMPATIBILITY IDEOGRAPH-F938
+F939;ID # CJK COMPATIBILITY IDEOGRAPH-F939
+F93A;ID # CJK COMPATIBILITY IDEOGRAPH-F93A
+F93B;ID # CJK COMPATIBILITY IDEOGRAPH-F93B
+F93C;ID # CJK COMPATIBILITY IDEOGRAPH-F93C
+F93D;ID # CJK COMPATIBILITY IDEOGRAPH-F93D
+F93E;ID # CJK COMPATIBILITY IDEOGRAPH-F93E
+F93F;ID # CJK COMPATIBILITY IDEOGRAPH-F93F
+F940;ID # CJK COMPATIBILITY IDEOGRAPH-F940
+F941;ID # CJK COMPATIBILITY IDEOGRAPH-F941
+F942;ID # CJK COMPATIBILITY IDEOGRAPH-F942
+F943;ID # CJK COMPATIBILITY IDEOGRAPH-F943
+F944;ID # CJK COMPATIBILITY IDEOGRAPH-F944
+F945;ID # CJK COMPATIBILITY IDEOGRAPH-F945
+F946;ID # CJK COMPATIBILITY IDEOGRAPH-F946
+F947;ID # CJK COMPATIBILITY IDEOGRAPH-F947
+F948;ID # CJK COMPATIBILITY IDEOGRAPH-F948
+F949;ID # CJK COMPATIBILITY IDEOGRAPH-F949
+F94A;ID # CJK COMPATIBILITY IDEOGRAPH-F94A
+F94B;ID # CJK COMPATIBILITY IDEOGRAPH-F94B
+F94C;ID # CJK COMPATIBILITY IDEOGRAPH-F94C
+F94D;ID # CJK COMPATIBILITY IDEOGRAPH-F94D
+F94E;ID # CJK COMPATIBILITY IDEOGRAPH-F94E
+F94F;ID # CJK COMPATIBILITY IDEOGRAPH-F94F
+F950;ID # CJK COMPATIBILITY IDEOGRAPH-F950
+F951;ID # CJK COMPATIBILITY IDEOGRAPH-F951
+F952;ID # CJK COMPATIBILITY IDEOGRAPH-F952
+F953;ID # CJK COMPATIBILITY IDEOGRAPH-F953
+F954;ID # CJK COMPATIBILITY IDEOGRAPH-F954
+F955;ID # CJK COMPATIBILITY IDEOGRAPH-F955
+F956;ID # CJK COMPATIBILITY IDEOGRAPH-F956
+F957;ID # CJK COMPATIBILITY IDEOGRAPH-F957
+F958;ID # CJK COMPATIBILITY IDEOGRAPH-F958
+F959;ID # CJK COMPATIBILITY IDEOGRAPH-F959
+F95A;ID # CJK COMPATIBILITY IDEOGRAPH-F95A
+F95B;ID # CJK COMPATIBILITY IDEOGRAPH-F95B
+F95C;ID # CJK COMPATIBILITY IDEOGRAPH-F95C
+F95D;ID # CJK COMPATIBILITY IDEOGRAPH-F95D
+F95E;ID # CJK COMPATIBILITY IDEOGRAPH-F95E
+F95F;ID # CJK COMPATIBILITY IDEOGRAPH-F95F
+F960;ID # CJK COMPATIBILITY IDEOGRAPH-F960
+F961;ID # CJK COMPATIBILITY IDEOGRAPH-F961
+F962;ID # CJK COMPATIBILITY IDEOGRAPH-F962
+F963;ID # CJK COMPATIBILITY IDEOGRAPH-F963
+F964;ID # CJK COMPATIBILITY IDEOGRAPH-F964
+F965;ID # CJK COMPATIBILITY IDEOGRAPH-F965
+F966;ID # CJK COMPATIBILITY IDEOGRAPH-F966
+F967;ID # CJK COMPATIBILITY IDEOGRAPH-F967
+F968;ID # CJK COMPATIBILITY IDEOGRAPH-F968
+F969;ID # CJK COMPATIBILITY IDEOGRAPH-F969
+F96A;ID # CJK COMPATIBILITY IDEOGRAPH-F96A
+F96B;ID # CJK COMPATIBILITY IDEOGRAPH-F96B
+F96C;ID # CJK COMPATIBILITY IDEOGRAPH-F96C
+F96D;ID # CJK COMPATIBILITY IDEOGRAPH-F96D
+F96E;ID # CJK COMPATIBILITY IDEOGRAPH-F96E
+F96F;ID # CJK COMPATIBILITY IDEOGRAPH-F96F
+F970;ID # CJK COMPATIBILITY IDEOGRAPH-F970
+F971;ID # CJK COMPATIBILITY IDEOGRAPH-F971
+F972;ID # CJK COMPATIBILITY IDEOGRAPH-F972
+F973;ID # CJK COMPATIBILITY IDEOGRAPH-F973
+F974;ID # CJK COMPATIBILITY IDEOGRAPH-F974
+F975;ID # CJK COMPATIBILITY IDEOGRAPH-F975
+F976;ID # CJK COMPATIBILITY IDEOGRAPH-F976
+F977;ID # CJK COMPATIBILITY IDEOGRAPH-F977
+F978;ID # CJK COMPATIBILITY IDEOGRAPH-F978
+F979;ID # CJK COMPATIBILITY IDEOGRAPH-F979
+F97A;ID # CJK COMPATIBILITY IDEOGRAPH-F97A
+F97B;ID # CJK COMPATIBILITY IDEOGRAPH-F97B
+F97C;ID # CJK COMPATIBILITY IDEOGRAPH-F97C
+F97D;ID # CJK COMPATIBILITY IDEOGRAPH-F97D
+F97E;ID # CJK COMPATIBILITY IDEOGRAPH-F97E
+F97F;ID # CJK COMPATIBILITY IDEOGRAPH-F97F
+F980;ID # CJK COMPATIBILITY IDEOGRAPH-F980
+F981;ID # CJK COMPATIBILITY IDEOGRAPH-F981
+F982;ID # CJK COMPATIBILITY IDEOGRAPH-F982
+F983;ID # CJK COMPATIBILITY IDEOGRAPH-F983
+F984;ID # CJK COMPATIBILITY IDEOGRAPH-F984
+F985;ID # CJK COMPATIBILITY IDEOGRAPH-F985
+F986;ID # CJK COMPATIBILITY IDEOGRAPH-F986
+F987;ID # CJK COMPATIBILITY IDEOGRAPH-F987
+F988;ID # CJK COMPATIBILITY IDEOGRAPH-F988
+F989;ID # CJK COMPATIBILITY IDEOGRAPH-F989
+F98A;ID # CJK COMPATIBILITY IDEOGRAPH-F98A
+F98B;ID # CJK COMPATIBILITY IDEOGRAPH-F98B
+F98C;ID # CJK COMPATIBILITY IDEOGRAPH-F98C
+F98D;ID # CJK COMPATIBILITY IDEOGRAPH-F98D
+F98E;ID # CJK COMPATIBILITY IDEOGRAPH-F98E
+F98F;ID # CJK COMPATIBILITY IDEOGRAPH-F98F
+F990;ID # CJK COMPATIBILITY IDEOGRAPH-F990
+F991;ID # CJK COMPATIBILITY IDEOGRAPH-F991
+F992;ID # CJK COMPATIBILITY IDEOGRAPH-F992
+F993;ID # CJK COMPATIBILITY IDEOGRAPH-F993
+F994;ID # CJK COMPATIBILITY IDEOGRAPH-F994
+F995;ID # CJK COMPATIBILITY IDEOGRAPH-F995
+F996;ID # CJK COMPATIBILITY IDEOGRAPH-F996
+F997;ID # CJK COMPATIBILITY IDEOGRAPH-F997
+F998;ID # CJK COMPATIBILITY IDEOGRAPH-F998
+F999;ID # CJK COMPATIBILITY IDEOGRAPH-F999
+F99A;ID # CJK COMPATIBILITY IDEOGRAPH-F99A
+F99B;ID # CJK COMPATIBILITY IDEOGRAPH-F99B
+F99C;ID # CJK COMPATIBILITY IDEOGRAPH-F99C
+F99D;ID # CJK COMPATIBILITY IDEOGRAPH-F99D
+F99E;ID # CJK COMPATIBILITY IDEOGRAPH-F99E
+F99F;ID # CJK COMPATIBILITY IDEOGRAPH-F99F
+F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-F9A1
+F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-F9A2
+F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-F9A3
+F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-F9A4
+F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-F9A5
+F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-F9A6
+F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-F9A7
+F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-F9A8
+F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-F9A9
+F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-F9AA
+F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-F9AB
+F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-F9AC
+F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-F9AD
+F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-F9AE
+F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-F9AF
+F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-F9B0
+F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-F9B1
+F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-F9B2
+F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-F9B3
+F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-F9B4
+F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-F9B5
+F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-F9B6
+F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-F9B8
+F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-F9B9
+F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-F9BA
+F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-F9BB
+F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-F9BC
+F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-F9BD
+F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-F9BE
+F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-F9BF
+F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-F9C1
+F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-F9C2
+F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-F9C3
+F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-F9C4
+F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-F9C5
+F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-F9C6
+F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-F9C7
+F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-F9C8
+F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-F9C9
+F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-F9CA
+F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-F9CC
+F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-F9CD
+F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-F9CE
+F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-F9CF
+F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-F9D0
+F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-F9D1
+F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-F9D2
+F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-F9D3
+F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-F9D4
+F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-F9D5
+F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-F9D6
+F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-F9D7
+F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-F9D8
+F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-F9D9
+F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-F9DA
+F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-F9DB
+F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-F9DF
+F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-F9E0
+F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-F9E1
+F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-F9E2
+F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-F9E3
+F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-F9E5
+F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-F9E6
+F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-F9E7
+F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-F9E8
+F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-F9E9
+F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-F9EA
+F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-F9EB
+F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-F9EC
+F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-F9ED
+F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-F9EE
+F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-F9EF
+F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-F9F0
+F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-F9F1
+F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-F9F2
+F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-F9F3
+F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-F9F5
+F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-F9F6
+F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-F9F7
+F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-F9F8
+F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-F9F9
+F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-F9FA
+F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-F9FB
+F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-F9FC
+F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-F9FD
+F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-F9FE
+F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-F9FF
+FA00;ID # CJK COMPATIBILITY IDEOGRAPH-FA00
+FA01;ID # CJK COMPATIBILITY IDEOGRAPH-FA01
+FA02;ID # CJK COMPATIBILITY IDEOGRAPH-FA02
+FA03;ID # CJK COMPATIBILITY IDEOGRAPH-FA03
+FA04;ID # CJK COMPATIBILITY IDEOGRAPH-FA04
+FA05;ID # CJK COMPATIBILITY IDEOGRAPH-FA05
+FA06;ID # CJK COMPATIBILITY IDEOGRAPH-FA06
+FA07;ID # CJK COMPATIBILITY IDEOGRAPH-FA07
+FA08;ID # CJK COMPATIBILITY IDEOGRAPH-FA08
+FA09;ID # CJK COMPATIBILITY IDEOGRAPH-FA09
+FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-FA0E
+FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-FA0F
+FA10;ID # CJK COMPATIBILITY IDEOGRAPH-FA10
+FA11;ID # CJK COMPATIBILITY IDEOGRAPH-FA11
+FA12;ID # CJK COMPATIBILITY IDEOGRAPH-FA12
+FA13;ID # CJK COMPATIBILITY IDEOGRAPH-FA13
+FA14;ID # CJK COMPATIBILITY IDEOGRAPH-FA14
+FA15;ID # CJK COMPATIBILITY IDEOGRAPH-FA15
+FA16;ID # CJK COMPATIBILITY IDEOGRAPH-FA16
+FA17;ID # CJK COMPATIBILITY IDEOGRAPH-FA17
+FA18;ID # CJK COMPATIBILITY IDEOGRAPH-FA18
+FA19;ID # CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-FA1A
+FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-FA1B
+FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-FA1C
+FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-FA1D
+FA1E;ID # CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA1F;ID # CJK COMPATIBILITY IDEOGRAPH-FA1F
+FA20;ID # CJK COMPATIBILITY IDEOGRAPH-FA20
+FA21;ID # CJK COMPATIBILITY IDEOGRAPH-FA21
+FA22;ID # CJK COMPATIBILITY IDEOGRAPH-FA22
+FA23;ID # CJK COMPATIBILITY IDEOGRAPH-FA23
+FA24;ID # CJK COMPATIBILITY IDEOGRAPH-FA24
+FA25;ID # CJK COMPATIBILITY IDEOGRAPH-FA25
+FA26;ID # CJK COMPATIBILITY IDEOGRAPH-FA26
+FA27;ID # CJK COMPATIBILITY IDEOGRAPH-FA27
+FA28;ID # CJK COMPATIBILITY IDEOGRAPH-FA28
+FA29;ID # CJK COMPATIBILITY IDEOGRAPH-FA29
+FA2A;ID # CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B;ID # CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C;ID # CJK COMPATIBILITY IDEOGRAPH-FA2C
+FA2D;ID # CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30;ID # CJK COMPATIBILITY IDEOGRAPH-FA30
+FA31;ID # CJK COMPATIBILITY IDEOGRAPH-FA31
+FA32;ID # CJK COMPATIBILITY IDEOGRAPH-FA32
+FA33;ID # CJK COMPATIBILITY IDEOGRAPH-FA33
+FA34;ID # CJK COMPATIBILITY IDEOGRAPH-FA34
+FA35;ID # CJK COMPATIBILITY IDEOGRAPH-FA35
+FA36;ID # CJK COMPATIBILITY IDEOGRAPH-FA36
+FA37;ID # CJK COMPATIBILITY IDEOGRAPH-FA37
+FA38;ID # CJK COMPATIBILITY IDEOGRAPH-FA38
+FA39;ID # CJK COMPATIBILITY IDEOGRAPH-FA39
+FA3A;ID # CJK COMPATIBILITY IDEOGRAPH-FA3A
+FA3B;ID # CJK COMPATIBILITY IDEOGRAPH-FA3B
+FA3C;ID # CJK COMPATIBILITY IDEOGRAPH-FA3C
+FA3D;ID # CJK COMPATIBILITY IDEOGRAPH-FA3D
+FA3E;ID # CJK COMPATIBILITY IDEOGRAPH-FA3E
+FA3F;ID # CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA40;ID # CJK COMPATIBILITY IDEOGRAPH-FA40
+FA41;ID # CJK COMPATIBILITY IDEOGRAPH-FA41
+FA42;ID # CJK COMPATIBILITY IDEOGRAPH-FA42
+FA43;ID # CJK COMPATIBILITY IDEOGRAPH-FA43
+FA44;ID # CJK COMPATIBILITY IDEOGRAPH-FA44
+FA45;ID # CJK COMPATIBILITY IDEOGRAPH-FA45
+FA46;ID # CJK COMPATIBILITY IDEOGRAPH-FA46
+FA47;ID # CJK COMPATIBILITY IDEOGRAPH-FA47
+FA48;ID # CJK COMPATIBILITY IDEOGRAPH-FA48
+FA49;ID # CJK COMPATIBILITY IDEOGRAPH-FA49
+FA4A;ID # CJK COMPATIBILITY IDEOGRAPH-FA4A
+FA4B;ID # CJK COMPATIBILITY IDEOGRAPH-FA4B
+FA4C;ID # CJK COMPATIBILITY IDEOGRAPH-FA4C
+FA4D;ID # CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4E;ID # CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4F;ID # CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50;ID # CJK COMPATIBILITY IDEOGRAPH-FA50
+FA51;ID # CJK COMPATIBILITY IDEOGRAPH-FA51
+FA52;ID # CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53;ID # CJK COMPATIBILITY IDEOGRAPH-FA53
+FA54;ID # CJK COMPATIBILITY IDEOGRAPH-FA54
+FA55;ID # CJK COMPATIBILITY IDEOGRAPH-FA55
+FA56;ID # CJK COMPATIBILITY IDEOGRAPH-FA56
+FA57;ID # CJK COMPATIBILITY IDEOGRAPH-FA57
+FA58;ID # CJK COMPATIBILITY IDEOGRAPH-FA58
+FA59;ID # CJK COMPATIBILITY IDEOGRAPH-FA59
+FA5A;ID # CJK COMPATIBILITY IDEOGRAPH-FA5A
+FA5B;ID # CJK COMPATIBILITY IDEOGRAPH-FA5B
+FA5C;ID # CJK COMPATIBILITY IDEOGRAPH-FA5C
+FA5D;ID # CJK COMPATIBILITY IDEOGRAPH-FA5D
+FA5E;ID # CJK COMPATIBILITY IDEOGRAPH-FA5E
+FA5F;ID # CJK COMPATIBILITY IDEOGRAPH-FA5F
+FA60;ID # CJK COMPATIBILITY IDEOGRAPH-FA60
+FA61;ID # CJK COMPATIBILITY IDEOGRAPH-FA61
+FA62;ID # CJK COMPATIBILITY IDEOGRAPH-FA62
+FA63;ID # CJK COMPATIBILITY IDEOGRAPH-FA63
+FA64;ID # CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65;ID # CJK COMPATIBILITY IDEOGRAPH-FA65
+FA66;ID # CJK COMPATIBILITY IDEOGRAPH-FA66
+FA67;ID # CJK COMPATIBILITY IDEOGRAPH-FA67
+FA68;ID # CJK COMPATIBILITY IDEOGRAPH-FA68
+FA69;ID # CJK COMPATIBILITY IDEOGRAPH-FA69
+FA6A;ID # CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70;ID # CJK COMPATIBILITY IDEOGRAPH-FA70
+FA71;ID # CJK COMPATIBILITY IDEOGRAPH-FA71
+FA72;ID # CJK COMPATIBILITY IDEOGRAPH-FA72
+FA73;ID # CJK COMPATIBILITY IDEOGRAPH-FA73
+FA74;ID # CJK COMPATIBILITY IDEOGRAPH-FA74
+FA75;ID # CJK COMPATIBILITY IDEOGRAPH-FA75
+FA76;ID # CJK COMPATIBILITY IDEOGRAPH-FA76
+FA77;ID # CJK COMPATIBILITY IDEOGRAPH-FA77
+FA78;ID # CJK COMPATIBILITY IDEOGRAPH-FA78
+FA79;ID # CJK COMPATIBILITY IDEOGRAPH-FA79
+FA7A;ID # CJK COMPATIBILITY IDEOGRAPH-FA7A
+FA7B;ID # CJK COMPATIBILITY IDEOGRAPH-FA7B
+FA7C;ID # CJK COMPATIBILITY IDEOGRAPH-FA7C
+FA7D;ID # CJK COMPATIBILITY IDEOGRAPH-FA7D
+FA7E;ID # CJK COMPATIBILITY IDEOGRAPH-FA7E
+FA7F;ID # CJK COMPATIBILITY IDEOGRAPH-FA7F
+FA80;ID # CJK COMPATIBILITY IDEOGRAPH-FA80
+FA81;ID # CJK COMPATIBILITY IDEOGRAPH-FA81
+FA82;ID # CJK COMPATIBILITY IDEOGRAPH-FA82
+FA83;ID # CJK COMPATIBILITY IDEOGRAPH-FA83
+FA84;ID # CJK COMPATIBILITY IDEOGRAPH-FA84
+FA85;ID # CJK COMPATIBILITY IDEOGRAPH-FA85
+FA86;ID # CJK COMPATIBILITY IDEOGRAPH-FA86
+FA87;ID # CJK COMPATIBILITY IDEOGRAPH-FA87
+FA88;ID # CJK COMPATIBILITY IDEOGRAPH-FA88
+FA89;ID # CJK COMPATIBILITY IDEOGRAPH-FA89
+FA8A;ID # CJK COMPATIBILITY IDEOGRAPH-FA8A
+FA8B;ID # CJK COMPATIBILITY IDEOGRAPH-FA8B
+FA8C;ID # CJK COMPATIBILITY IDEOGRAPH-FA8C
+FA8D;ID # CJK COMPATIBILITY IDEOGRAPH-FA8D
+FA8E;ID # CJK COMPATIBILITY IDEOGRAPH-FA8E
+FA8F;ID # CJK COMPATIBILITY IDEOGRAPH-FA8F
+FA90;ID # CJK COMPATIBILITY IDEOGRAPH-FA90
+FA91;ID # CJK COMPATIBILITY IDEOGRAPH-FA91
+FA92;ID # CJK COMPATIBILITY IDEOGRAPH-FA92
+FA93;ID # CJK COMPATIBILITY IDEOGRAPH-FA93
+FA94;ID # CJK COMPATIBILITY IDEOGRAPH-FA94
+FA95;ID # CJK COMPATIBILITY IDEOGRAPH-FA95
+FA96;ID # CJK COMPATIBILITY IDEOGRAPH-FA96
+FA97;ID # CJK COMPATIBILITY IDEOGRAPH-FA97
+FA98;ID # CJK COMPATIBILITY IDEOGRAPH-FA98
+FA99;ID # CJK COMPATIBILITY IDEOGRAPH-FA99
+FA9A;ID # CJK COMPATIBILITY IDEOGRAPH-FA9A
+FA9B;ID # CJK COMPATIBILITY IDEOGRAPH-FA9B
+FA9C;ID # CJK COMPATIBILITY IDEOGRAPH-FA9C
+FA9D;ID # CJK COMPATIBILITY IDEOGRAPH-FA9D
+FA9E;ID # CJK COMPATIBILITY IDEOGRAPH-FA9E
+FA9F;ID # CJK COMPATIBILITY IDEOGRAPH-FA9F
+FAA0;ID # CJK COMPATIBILITY IDEOGRAPH-FAA0
+FAA1;ID # CJK COMPATIBILITY IDEOGRAPH-FAA1
+FAA2;ID # CJK COMPATIBILITY IDEOGRAPH-FAA2
+FAA3;ID # CJK COMPATIBILITY IDEOGRAPH-FAA3
+FAA4;ID # CJK COMPATIBILITY IDEOGRAPH-FAA4
+FAA5;ID # CJK COMPATIBILITY IDEOGRAPH-FAA5
+FAA6;ID # CJK COMPATIBILITY IDEOGRAPH-FAA6
+FAA7;ID # CJK COMPATIBILITY IDEOGRAPH-FAA7
+FAA8;ID # CJK COMPATIBILITY IDEOGRAPH-FAA8
+FAA9;ID # CJK COMPATIBILITY IDEOGRAPH-FAA9
+FAAA;ID # CJK COMPATIBILITY IDEOGRAPH-FAAA
+FAAB;ID # CJK COMPATIBILITY IDEOGRAPH-FAAB
+FAAC;ID # CJK COMPATIBILITY IDEOGRAPH-FAAC
+FAAD;ID # CJK COMPATIBILITY IDEOGRAPH-FAAD
+FAAE;ID # CJK COMPATIBILITY IDEOGRAPH-FAAE
+FAAF;ID # CJK COMPATIBILITY IDEOGRAPH-FAAF
+FAB0;ID # CJK COMPATIBILITY IDEOGRAPH-FAB0
+FAB1;ID # CJK COMPATIBILITY IDEOGRAPH-FAB1
+FAB2;ID # CJK COMPATIBILITY IDEOGRAPH-FAB2
+FAB3;ID # CJK COMPATIBILITY IDEOGRAPH-FAB3
+FAB4;ID # CJK COMPATIBILITY IDEOGRAPH-FAB4
+FAB5;ID # CJK COMPATIBILITY IDEOGRAPH-FAB5
+FAB6;ID # CJK COMPATIBILITY IDEOGRAPH-FAB6
+FAB7;ID # CJK COMPATIBILITY IDEOGRAPH-FAB7
+FAB8;ID # CJK COMPATIBILITY IDEOGRAPH-FAB8
+FAB9;ID # CJK COMPATIBILITY IDEOGRAPH-FAB9
+FABA;ID # CJK COMPATIBILITY IDEOGRAPH-FABA
+FABB;ID # CJK COMPATIBILITY IDEOGRAPH-FABB
+FABC;ID # CJK COMPATIBILITY IDEOGRAPH-FABC
+FABD;ID # CJK COMPATIBILITY IDEOGRAPH-FABD
+FABE;ID # CJK COMPATIBILITY IDEOGRAPH-FABE
+FABF;ID # CJK COMPATIBILITY IDEOGRAPH-FABF
+FAC0;ID # CJK COMPATIBILITY IDEOGRAPH-FAC0
+FAC1;ID # CJK COMPATIBILITY IDEOGRAPH-FAC1
+FAC2;ID # CJK COMPATIBILITY IDEOGRAPH-FAC2
+FAC3;ID # CJK COMPATIBILITY IDEOGRAPH-FAC3
+FAC4;ID # CJK COMPATIBILITY IDEOGRAPH-FAC4
+FAC5;ID # CJK COMPATIBILITY IDEOGRAPH-FAC5
+FAC6;ID # CJK COMPATIBILITY IDEOGRAPH-FAC6
+FAC7;ID # CJK COMPATIBILITY IDEOGRAPH-FAC7
+FAC8;ID # CJK COMPATIBILITY IDEOGRAPH-FAC8
+FAC9;ID # CJK COMPATIBILITY IDEOGRAPH-FAC9
+FACA;ID # CJK COMPATIBILITY IDEOGRAPH-FACA
+FACB;ID # CJK COMPATIBILITY IDEOGRAPH-FACB
+FACC;ID # CJK COMPATIBILITY IDEOGRAPH-FACC
+FACD;ID # CJK COMPATIBILITY IDEOGRAPH-FACD
+FACE;ID # CJK COMPATIBILITY IDEOGRAPH-FACE
+FACF;ID # CJK COMPATIBILITY IDEOGRAPH-FACF
+FAD0;ID # CJK COMPATIBILITY IDEOGRAPH-FAD0
+FAD1;ID # CJK COMPATIBILITY IDEOGRAPH-FAD1
+FAD2;ID # CJK COMPATIBILITY IDEOGRAPH-FAD2
+FAD3;ID # CJK COMPATIBILITY IDEOGRAPH-FAD3
+FAD4;ID # CJK COMPATIBILITY IDEOGRAPH-FAD4
+FAD5;ID # CJK COMPATIBILITY IDEOGRAPH-FAD5
+FAD6;ID # CJK COMPATIBILITY IDEOGRAPH-FAD6
+FAD7;ID # CJK COMPATIBILITY IDEOGRAPH-FAD7
+FAD8;ID # CJK COMPATIBILITY IDEOGRAPH-FAD8
+FAD9;ID # CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00;AL # LATIN SMALL LIGATURE FF
+FB01;AL # LATIN SMALL LIGATURE FI
+FB02;AL # LATIN SMALL LIGATURE FL
+FB03;AL # LATIN SMALL LIGATURE FFI
+FB04;AL # LATIN SMALL LIGATURE FFL
+FB05;AL # LATIN SMALL LIGATURE LONG S T
+FB06;AL # LATIN SMALL LIGATURE ST
+FB13;AL # ARMENIAN SMALL LIGATURE MEN NOW
+FB14;AL # ARMENIAN SMALL LIGATURE MEN ECH
+FB15;AL # ARMENIAN SMALL LIGATURE MEN INI
+FB16;AL # ARMENIAN SMALL LIGATURE VEW NOW
+FB17;AL # ARMENIAN SMALL LIGATURE MEN XEH
+FB1D;AL # HEBREW LETTER YOD WITH HIRIQ
+FB1E;CM # HEBREW POINT JUDEO-SPANISH VARIKA
+FB1F;AL # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB20;AL # HEBREW LETTER ALTERNATIVE AYIN
+FB21;AL # HEBREW LETTER WIDE ALEF
+FB22;AL # HEBREW LETTER WIDE DALET
+FB23;AL # HEBREW LETTER WIDE HE
+FB24;AL # HEBREW LETTER WIDE KAF
+FB25;AL # HEBREW LETTER WIDE LAMED
+FB26;AL # HEBREW LETTER WIDE FINAL MEM
+FB27;AL # HEBREW LETTER WIDE RESH
+FB28;AL # HEBREW LETTER WIDE TAV
+FB29;AL # HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A;AL # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B;AL # HEBREW LETTER SHIN WITH SIN DOT
+FB2C;AL # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D;AL # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E;AL # HEBREW LETTER ALEF WITH PATAH
+FB2F;AL # HEBREW LETTER ALEF WITH QAMATS
+FB30;AL # HEBREW LETTER ALEF WITH MAPIQ
+FB31;AL # HEBREW LETTER BET WITH DAGESH
+FB32;AL # HEBREW LETTER GIMEL WITH DAGESH
+FB33;AL # HEBREW LETTER DALET WITH DAGESH
+FB34;AL # HEBREW LETTER HE WITH MAPIQ
+FB35;AL # HEBREW LETTER VAV WITH DAGESH
+FB36;AL # HEBREW LETTER ZAYIN WITH DAGESH
+FB38;AL # HEBREW LETTER TET WITH DAGESH
+FB39;AL # HEBREW LETTER YOD WITH DAGESH
+FB3A;AL # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B;AL # HEBREW LETTER KAF WITH DAGESH
+FB3C;AL # HEBREW LETTER LAMED WITH DAGESH
+FB3E;AL # HEBREW LETTER MEM WITH DAGESH
+FB40;AL # HEBREW LETTER NUN WITH DAGESH
+FB41;AL # HEBREW LETTER SAMEKH WITH DAGESH
+FB43;AL # HEBREW LETTER FINAL PE WITH DAGESH
+FB44;AL # HEBREW LETTER PE WITH DAGESH
+FB46;AL # HEBREW LETTER TSADI WITH DAGESH
+FB47;AL # HEBREW LETTER QOF WITH DAGESH
+FB48;AL # HEBREW LETTER RESH WITH DAGESH
+FB49;AL # HEBREW LETTER SHIN WITH DAGESH
+FB4A;AL # HEBREW LETTER TAV WITH DAGESH
+FB4B;AL # HEBREW LETTER VAV WITH HOLAM
+FB4C;AL # HEBREW LETTER BET WITH RAFE
+FB4D;AL # HEBREW LETTER KAF WITH RAFE
+FB4E;AL # HEBREW LETTER PE WITH RAFE
+FB4F;AL # HEBREW LIGATURE ALEF LAMED
+FB50;AL # ARABIC LETTER ALEF WASLA ISOLATED FORM
+FB51;AL # ARABIC LETTER ALEF WASLA FINAL FORM
+FB52;AL # ARABIC LETTER BEEH ISOLATED FORM
+FB53;AL # ARABIC LETTER BEEH FINAL FORM
+FB54;AL # ARABIC LETTER BEEH INITIAL FORM
+FB55;AL # ARABIC LETTER BEEH MEDIAL FORM
+FB56;AL # ARABIC LETTER PEH ISOLATED FORM
+FB57;AL # ARABIC LETTER PEH FINAL FORM
+FB58;AL # ARABIC LETTER PEH INITIAL FORM
+FB59;AL # ARABIC LETTER PEH MEDIAL FORM
+FB5A;AL # ARABIC LETTER BEHEH ISOLATED FORM
+FB5B;AL # ARABIC LETTER BEHEH FINAL FORM
+FB5C;AL # ARABIC LETTER BEHEH INITIAL FORM
+FB5D;AL # ARABIC LETTER BEHEH MEDIAL FORM
+FB5E;AL # ARABIC LETTER TTEHEH ISOLATED FORM
+FB5F;AL # ARABIC LETTER TTEHEH FINAL FORM
+FB60;AL # ARABIC LETTER TTEHEH INITIAL FORM
+FB61;AL # ARABIC LETTER TTEHEH MEDIAL FORM
+FB62;AL # ARABIC LETTER TEHEH ISOLATED FORM
+FB63;AL # ARABIC LETTER TEHEH FINAL FORM
+FB64;AL # ARABIC LETTER TEHEH INITIAL FORM
+FB65;AL # ARABIC LETTER TEHEH MEDIAL FORM
+FB66;AL # ARABIC LETTER TTEH ISOLATED FORM
+FB67;AL # ARABIC LETTER TTEH FINAL FORM
+FB68;AL # ARABIC LETTER TTEH INITIAL FORM
+FB69;AL # ARABIC LETTER TTEH MEDIAL FORM
+FB6A;AL # ARABIC LETTER VEH ISOLATED FORM
+FB6B;AL # ARABIC LETTER VEH FINAL FORM
+FB6C;AL # ARABIC LETTER VEH INITIAL FORM
+FB6D;AL # ARABIC LETTER VEH MEDIAL FORM
+FB6E;AL # ARABIC LETTER PEHEH ISOLATED FORM
+FB6F;AL # ARABIC LETTER PEHEH FINAL FORM
+FB70;AL # ARABIC LETTER PEHEH INITIAL FORM
+FB71;AL # ARABIC LETTER PEHEH MEDIAL FORM
+FB72;AL # ARABIC LETTER DYEH ISOLATED FORM
+FB73;AL # ARABIC LETTER DYEH FINAL FORM
+FB74;AL # ARABIC LETTER DYEH INITIAL FORM
+FB75;AL # ARABIC LETTER DYEH MEDIAL FORM
+FB76;AL # ARABIC LETTER NYEH ISOLATED FORM
+FB77;AL # ARABIC LETTER NYEH FINAL FORM
+FB78;AL # ARABIC LETTER NYEH INITIAL FORM
+FB79;AL # ARABIC LETTER NYEH MEDIAL FORM
+FB7A;AL # ARABIC LETTER TCHEH ISOLATED FORM
+FB7B;AL # ARABIC LETTER TCHEH FINAL FORM
+FB7C;AL # ARABIC LETTER TCHEH INITIAL FORM
+FB7D;AL # ARABIC LETTER TCHEH MEDIAL FORM
+FB7E;AL # ARABIC LETTER TCHEHEH ISOLATED FORM
+FB7F;AL # ARABIC LETTER TCHEHEH FINAL FORM
+FB80;AL # ARABIC LETTER TCHEHEH INITIAL FORM
+FB81;AL # ARABIC LETTER TCHEHEH MEDIAL FORM
+FB82;AL # ARABIC LETTER DDAHAL ISOLATED FORM
+FB83;AL # ARABIC LETTER DDAHAL FINAL FORM
+FB84;AL # ARABIC LETTER DAHAL ISOLATED FORM
+FB85;AL # ARABIC LETTER DAHAL FINAL FORM
+FB86;AL # ARABIC LETTER DUL ISOLATED FORM
+FB87;AL # ARABIC LETTER DUL FINAL FORM
+FB88;AL # ARABIC LETTER DDAL ISOLATED FORM
+FB89;AL # ARABIC LETTER DDAL FINAL FORM
+FB8A;AL # ARABIC LETTER JEH ISOLATED FORM
+FB8B;AL # ARABIC LETTER JEH FINAL FORM
+FB8C;AL # ARABIC LETTER RREH ISOLATED FORM
+FB8D;AL # ARABIC LETTER RREH FINAL FORM
+FB8E;AL # ARABIC LETTER KEHEH ISOLATED FORM
+FB8F;AL # ARABIC LETTER KEHEH FINAL FORM
+FB90;AL # ARABIC LETTER KEHEH INITIAL FORM
+FB91;AL # ARABIC LETTER KEHEH MEDIAL FORM
+FB92;AL # ARABIC LETTER GAF ISOLATED FORM
+FB93;AL # ARABIC LETTER GAF FINAL FORM
+FB94;AL # ARABIC LETTER GAF INITIAL FORM
+FB95;AL # ARABIC LETTER GAF MEDIAL FORM
+FB96;AL # ARABIC LETTER GUEH ISOLATED FORM
+FB97;AL # ARABIC LETTER GUEH FINAL FORM
+FB98;AL # ARABIC LETTER GUEH INITIAL FORM
+FB99;AL # ARABIC LETTER GUEH MEDIAL FORM
+FB9A;AL # ARABIC LETTER NGOEH ISOLATED FORM
+FB9B;AL # ARABIC LETTER NGOEH FINAL FORM
+FB9C;AL # ARABIC LETTER NGOEH INITIAL FORM
+FB9D;AL # ARABIC LETTER NGOEH MEDIAL FORM
+FB9E;AL # ARABIC LETTER NOON GHUNNA ISOLATED FORM
+FB9F;AL # ARABIC LETTER NOON GHUNNA FINAL FORM
+FBA0;AL # ARABIC LETTER RNOON ISOLATED FORM
+FBA1;AL # ARABIC LETTER RNOON FINAL FORM
+FBA2;AL # ARABIC LETTER RNOON INITIAL FORM
+FBA3;AL # ARABIC LETTER RNOON MEDIAL FORM
+FBA4;AL # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+FBA5;AL # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA6;AL # ARABIC LETTER HEH GOAL ISOLATED FORM
+FBA7;AL # ARABIC LETTER HEH GOAL FINAL FORM
+FBA8;AL # ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9;AL # ARABIC LETTER HEH GOAL MEDIAL FORM
+FBAA;AL # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+FBAB;AL # ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAC;AL # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD;AL # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAE;AL # ARABIC LETTER YEH BARREE ISOLATED FORM
+FBAF;AL # ARABIC LETTER YEH BARREE FINAL FORM
+FBB0;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+FBB1;AL # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3;AL # ARABIC LETTER NG ISOLATED FORM
+FBD4;AL # ARABIC LETTER NG FINAL FORM
+FBD5;AL # ARABIC LETTER NG INITIAL FORM
+FBD6;AL # ARABIC LETTER NG MEDIAL FORM
+FBD7;AL # ARABIC LETTER U ISOLATED FORM
+FBD8;AL # ARABIC LETTER U FINAL FORM
+FBD9;AL # ARABIC LETTER OE ISOLATED FORM
+FBDA;AL # ARABIC LETTER OE FINAL FORM
+FBDB;AL # ARABIC LETTER YU ISOLATED FORM
+FBDC;AL # ARABIC LETTER YU FINAL FORM
+FBDD;AL # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBDE;AL # ARABIC LETTER VE ISOLATED FORM
+FBDF;AL # ARABIC LETTER VE FINAL FORM
+FBE0;AL # ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+FBE1;AL # ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE2;AL # ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+FBE3;AL # ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE4;AL # ARABIC LETTER E ISOLATED FORM
+FBE5;AL # ARABIC LETTER E FINAL FORM
+FBE6;AL # ARABIC LETTER E INITIAL FORM
+FBE7;AL # ARABIC LETTER E MEDIAL FORM
+FBE8;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9;AL # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FBEA;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FBEB;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEC;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBED;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEE;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBEF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBF0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF1;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF2;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF3;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF4;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBF5;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF6;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+FBF7;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF8;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF9;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FBFA;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBFB;AL # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFC;AL # ARABIC LETTER FARSI YEH ISOLATED FORM
+FBFD;AL # ARABIC LETTER FARSI YEH FINAL FORM
+FBFE;AL # ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF;AL # ARABIC LETTER FARSI YEH MEDIAL FORM
+FC00;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC01;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC02;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC03;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC04;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FC05;AL # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC06;AL # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FC07;AL # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FC08;AL # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC09;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC0A;AL # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+FC0B;AL # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FC0C;AL # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FC0D;AL # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FC0E;AL # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FC0F;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC10;AL # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+FC11;AL # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC12;AL # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC13;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC14;AL # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+FC15;AL # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FC16;AL # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FC17;AL # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FC18;AL # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FC19;AL # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A;AL # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FC1B;AL # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FC1C;AL # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FC1D;AL # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FC1E;AL # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FC1F;AL # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FC20;AL # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FC21;AL # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FC22;AL # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FC23;AL # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FC24;AL # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FC25;AL # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FC26;AL # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FC27;AL # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FC28;AL # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+FC29;AL # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FC2A;AL # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FC2B;AL # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FC2C;AL # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FC2D;AL # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FC2E;AL # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FC2F;AL # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FC30;AL # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FC31;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC32;AL # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+FC33;AL # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FC34;AL # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FC35;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC36;AL # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+FC37;AL # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FC38;AL # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FC39;AL # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FC3A;AL # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FC3B;AL # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FC3C;AL # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FC3D;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC3E;AL # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+FC3F;AL # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FC40;AL # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FC41;AL # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FC42;AL # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FC43;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC44;AL # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+FC45;AL # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FC46;AL # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FC47;AL # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FC48;AL # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FC49;AL # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A;AL # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+FC4B;AL # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FC4C;AL # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FC4D;AL # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC4E;AL # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FC4F;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC50;AL # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+FC51;AL # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FC52;AL # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FC53;AL # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54;AL # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+FC55;AL # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FC56;AL # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FC57;AL # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC58;AL # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FC59;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC5A;AL # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+FC5B;AL # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5C;AL # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5D;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC5E;AL # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+FC5F;AL # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+FC60;AL # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+FC61;AL # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+FC62;AL # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+FC63;AL # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+FC64;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC66;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC67;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC68;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC69;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC6A;AL # ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B;AL # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC6C;AL # ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC6D;AL # ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FC6E;AL # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC6F;AL # ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC70;AL # ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71;AL # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FC72;AL # ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC73;AL # ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FC74;AL # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC75;AL # ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC76;AL # ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77;AL # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FC78;AL # ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC79;AL # ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FC7A;AL # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC7B;AL # ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC7C;AL # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC7D;AL # ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC7E;AL # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC7F;AL # ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC80;AL # ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC81;AL # ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC82;AL # ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC83;AL # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC84;AL # ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC85;AL # ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC86;AL # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC87;AL # ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC88;AL # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FC89;AL # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC8A;AL # ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B;AL # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FC8C;AL # ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC8D;AL # ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FC8E;AL # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC8F;AL # ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC90;AL # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC91;AL # ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92;AL # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FC93;AL # ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC94;AL # ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FC95;AL # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC96;AL # ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC97;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC98;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC99;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC9A;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FC9B;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FC9C;AL # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC9D;AL # ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC9E;AL # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC9F;AL # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCA0;AL # ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCA1;AL # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FCA2;AL # ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FCA3;AL # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FCA4;AL # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCA5;AL # ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCA6;AL # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCA7;AL # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FCA8;AL # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FCA9;AL # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FCAA;AL # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FCAB;AL # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FCAC;AL # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FCAD;AL # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FCAE;AL # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FCAF;AL # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FCB0;AL # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCB1;AL # ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FCB2;AL # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FCB3;AL # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FCB4;AL # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FCB5;AL # ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FCB6;AL # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FCB7;AL # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FCB8;AL # ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FCB9;AL # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FCBA;AL # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FCBB;AL # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FCBC;AL # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FCBD;AL # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FCBE;AL # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FCBF;AL # ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FCC0;AL # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FCC1;AL # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FCC2;AL # ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FCC3;AL # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FCC4;AL # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FCC5;AL # ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FCC6;AL # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FCC7;AL # ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCC8;AL # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCC9;AL # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FCCA;AL # ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FCCB;AL # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FCCC;AL # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCCD;AL # ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FCCE;AL # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FCCF;AL # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FCD0;AL # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FCD1;AL # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FCD2;AL # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FCD3;AL # ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FCD4;AL # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FCD5;AL # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCD6;AL # ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCD7;AL # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FCD8;AL # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FCD9;AL # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCDA;AL # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FCDB;AL # ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FCDC;AL # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FCDD;AL # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCDE;AL # ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCDF;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FCE0;AL # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FCE1;AL # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FCE2;AL # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FCE3;AL # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FCE4;AL # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FCE5;AL # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FCE6;AL # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FCE7;AL # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FCE8;AL # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FCE9;AL # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FCEA;AL # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FCEB;AL # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FCEC;AL # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FCED;AL # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FCEE;AL # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FCEF;AL # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FCF0;AL # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FCF1;AL # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FCF2;AL # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+FCF3;AL # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+FCF4;AL # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+FCF5;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FCF6;AL # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+FCF7;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FCF8;AL # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+FCF9;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FCFA;AL # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+FCFB;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFC;AL # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+FCFD;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FCFE;AL # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+FCFF;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD00;AL # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+FD01;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD02;AL # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+FD03;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD04;AL # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+FD05;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD06;AL # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+FD07;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD08;AL # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+FD09;AL # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD0A;AL # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD0B;AL # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD0C;AL # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD0D;AL # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD0E;AL # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FD0F;AL # ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FD10;AL # ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FD11;AL # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FD12;AL # ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FD13;AL # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FD14;AL # ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FD15;AL # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FD16;AL # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FD17;AL # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FD18;AL # ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FD19;AL # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FD1A;AL # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FD1B;AL # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FD1C;AL # ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD1D;AL # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD1E;AL # ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD1F;AL # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD20;AL # ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD21;AL # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD22;AL # ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD23;AL # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD24;AL # ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD25;AL # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD26;AL # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD27;AL # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD28;AL # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD29;AL # ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD2A;AL # ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD2B;AL # ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD2C;AL # ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD2D;AL # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD2E;AL # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD2F;AL # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD30;AL # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FD31;AL # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FD32;AL # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FD33;AL # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD34;AL # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FD35;AL # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FD36;AL # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FD37;AL # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD38;AL # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD39;AL # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD3A;AL # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FD3B;AL # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FD3C;AL # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D;AL # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD3E;OP # ORNATE LEFT PARENTHESIS
+FD3F;CL # ORNATE RIGHT PARENTHESIS
+FD50;AL # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FD51;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD52;AL # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD53;AL # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FD54;AL # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FD55;AL # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56;AL # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57;AL # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FD58;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FD59;AL # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD5A;AL # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD5B;AL # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5C;AL # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FD5D;AL # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E;AL # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD5F;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD60;AL # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD61;AL # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD62;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD63;AL # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD64;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FD65;AL # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD66;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD67;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FD68;AL # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD69;AL # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD6A;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6B;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6C;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD6D;AL # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6E;AL # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD6F;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD70;AL # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD71;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD72;AL # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD73;AL # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74;AL # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD75;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FD76;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD77;AL # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD78;AL # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD79;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7A;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD7B;AL # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7C;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FD7D;AL # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7E;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F;AL # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FD80;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD81;AL # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FD82;AL # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD83;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84;AL # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FD85;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FD86;AL # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD87;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FD88;AL # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD89;AL # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A;AL # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FD8B;AL # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FD8C;AL # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD8D;AL # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FD8E;AL # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F;AL # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92;AL # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD93;AL # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94;AL # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FD95;AL # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96;AL # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD97;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD98;AL # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD99;AL # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9A;AL # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FD9B;AL # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9C;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FD9D;AL # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9E;AL # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FD9F;AL # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FDA0;AL # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDA1;AL # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FDA2;AL # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA3;AL # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FDA4;AL # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5;AL # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FDA6;AL # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDA7;AL # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA8;AL # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA9;AL # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FDAA;AL # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FDAB;AL # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FDAC;AL # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FDAD;AL # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FDAE;AL # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FDAF;AL # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FDB0;AL # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FDB1;AL # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FDB2;AL # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FDB3;AL # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FDB4;AL # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FDB5;AL # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FDB6;AL # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FDB7;AL # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FDB8;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDB9;AL # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FDBA;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBB;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDBC;AL # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDBD;AL # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FDBE;AL # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDBF;AL # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FDC0;AL # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FDC1;AL # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FDC2;AL # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FDC3;AL # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDC4;AL # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FDC5;AL # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FDC6;AL # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FDC7;AL # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0;AL # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF1;AL # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FDF2;AL # ARABIC LIGATURE ALLAH ISOLATED FORM
+FDF3;AL # ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF4;AL # ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FDF5;AL # ARABIC LIGATURE SALAM ISOLATED FORM
+FDF6;AL # ARABIC LIGATURE RASOUL ISOLATED FORM
+FDF7;AL # ARABIC LIGATURE ALAYHE ISOLATED FORM
+FDF8;AL # ARABIC LIGATURE WASALLAM ISOLATED FORM
+FDF9;AL # ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA;AL # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDFB;AL # ARABIC LIGATURE JALLAJALALOUHOU
+FDFC;PO # RIAL SIGN
+FDFD;AL # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FE00;CM # VARIATION SELECTOR-1
+FE01;CM # VARIATION SELECTOR-2
+FE02;CM # VARIATION SELECTOR-3
+FE03;CM # VARIATION SELECTOR-4
+FE04;CM # VARIATION SELECTOR-5
+FE05;CM # VARIATION SELECTOR-6
+FE06;CM # VARIATION SELECTOR-7
+FE07;CM # VARIATION SELECTOR-8
+FE08;CM # VARIATION SELECTOR-9
+FE09;CM # VARIATION SELECTOR-10
+FE0A;CM # VARIATION SELECTOR-11
+FE0B;CM # VARIATION SELECTOR-12
+FE0C;CM # VARIATION SELECTOR-13
+FE0D;CM # VARIATION SELECTOR-14
+FE0E;CM # VARIATION SELECTOR-15
+FE0F;CM # VARIATION SELECTOR-16
+FE10;IS # PRESENTATION FORM FOR VERTICAL COMMA
+FE11;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
+FE12;CL # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+FE13;IS # PRESENTATION FORM FOR VERTICAL COLON
+FE14;IS # PRESENTATION FORM FOR VERTICAL SEMICOLON
+FE15;EX # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
+FE16;EX # PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19;IN # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE20;CM # COMBINING LIGATURE LEFT HALF
+FE21;CM # COMBINING LIGATURE RIGHT HALF
+FE22;CM # COMBINING DOUBLE TILDE LEFT HALF
+FE23;CM # COMBINING DOUBLE TILDE RIGHT HALF
+FE30;ID # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31;ID # PRESENTATION FORM FOR VERTICAL EM DASH
+FE32;ID # PRESENTATION FORM FOR VERTICAL EN DASH
+FE33;ID # PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34;ID # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35;OP # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36;CL # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37;OP # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38;CL # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39;OP # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A;CL # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B;OP # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C;CL # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D;OP # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E;CL # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F;OP # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40;CL # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41;OP # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42;CL # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43;OP # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44;CL # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE45;ID # SESAME DOT
+FE46;ID # WHITE SESAME DOT
+FE47;OP # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48;CL # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49;ID # DASHED OVERLINE
+FE4A;ID # CENTRELINE OVERLINE
+FE4B;ID # WAVY OVERLINE
+FE4C;ID # DOUBLE WAVY OVERLINE
+FE4D;ID # DASHED LOW LINE
+FE4E;ID # CENTRELINE LOW LINE
+FE4F;ID # WAVY LOW LINE
+FE50;CL # SMALL COMMA
+FE51;ID # SMALL IDEOGRAPHIC COMMA
+FE52;CL # SMALL FULL STOP
+FE54;NS # SMALL SEMICOLON
+FE55;NS # SMALL COLON
+FE56;EX # SMALL QUESTION MARK
+FE57;EX # SMALL EXCLAMATION MARK
+FE58;ID # SMALL EM DASH
+FE59;OP # SMALL LEFT PARENTHESIS
+FE5A;CL # SMALL RIGHT PARENTHESIS
+FE5B;OP # SMALL LEFT CURLY BRACKET
+FE5C;CL # SMALL RIGHT CURLY BRACKET
+FE5D;OP # SMALL LEFT TORTOISE SHELL BRACKET
+FE5E;CL # SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F;ID # SMALL NUMBER SIGN
+FE60;ID # SMALL AMPERSAND
+FE61;ID # SMALL ASTERISK
+FE62;ID # SMALL PLUS SIGN
+FE63;ID # SMALL HYPHEN-MINUS
+FE64;ID # SMALL LESS-THAN SIGN
+FE65;ID # SMALL GREATER-THAN SIGN
+FE66;ID # SMALL EQUALS SIGN
+FE68;ID # SMALL REVERSE SOLIDUS
+FE69;PR # SMALL DOLLAR SIGN
+FE6A;PO # SMALL PERCENT SIGN
+FE6B;ID # SMALL COMMERCIAL AT
+FE70;AL # ARABIC FATHATAN ISOLATED FORM
+FE71;AL # ARABIC TATWEEL WITH FATHATAN ABOVE
+FE72;AL # ARABIC DAMMATAN ISOLATED FORM
+FE73;AL # ARABIC TAIL FRAGMENT
+FE74;AL # ARABIC KASRATAN ISOLATED FORM
+FE76;AL # ARABIC FATHA ISOLATED FORM
+FE77;AL # ARABIC FATHA MEDIAL FORM
+FE78;AL # ARABIC DAMMA ISOLATED FORM
+FE79;AL # ARABIC DAMMA MEDIAL FORM
+FE7A;AL # ARABIC KASRA ISOLATED FORM
+FE7B;AL # ARABIC KASRA MEDIAL FORM
+FE7C;AL # ARABIC SHADDA ISOLATED FORM
+FE7D;AL # ARABIC SHADDA MEDIAL FORM
+FE7E;AL # ARABIC SUKUN ISOLATED FORM
+FE7F;AL # ARABIC SUKUN MEDIAL FORM
+FE80;AL # ARABIC LETTER HAMZA ISOLATED FORM
+FE81;AL # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+FE82;AL # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE83;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+FE84;AL # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE85;AL # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+FE86;AL # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE87;AL # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+FE88;AL # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE89;AL # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FE8A;AL # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE8B;AL # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C;AL # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8D;AL # ARABIC LETTER ALEF ISOLATED FORM
+FE8E;AL # ARABIC LETTER ALEF FINAL FORM
+FE8F;AL # ARABIC LETTER BEH ISOLATED FORM
+FE90;AL # ARABIC LETTER BEH FINAL FORM
+FE91;AL # ARABIC LETTER BEH INITIAL FORM
+FE92;AL # ARABIC LETTER BEH MEDIAL FORM
+FE93;AL # ARABIC LETTER TEH MARBUTA ISOLATED FORM
+FE94;AL # ARABIC LETTER TEH MARBUTA FINAL FORM
+FE95;AL # ARABIC LETTER TEH ISOLATED FORM
+FE96;AL # ARABIC LETTER TEH FINAL FORM
+FE97;AL # ARABIC LETTER TEH INITIAL FORM
+FE98;AL # ARABIC LETTER TEH MEDIAL FORM
+FE99;AL # ARABIC LETTER THEH ISOLATED FORM
+FE9A;AL # ARABIC LETTER THEH FINAL FORM
+FE9B;AL # ARABIC LETTER THEH INITIAL FORM
+FE9C;AL # ARABIC LETTER THEH MEDIAL FORM
+FE9D;AL # ARABIC LETTER JEEM ISOLATED FORM
+FE9E;AL # ARABIC LETTER JEEM FINAL FORM
+FE9F;AL # ARABIC LETTER JEEM INITIAL FORM
+FEA0;AL # ARABIC LETTER JEEM MEDIAL FORM
+FEA1;AL # ARABIC LETTER HAH ISOLATED FORM
+FEA2;AL # ARABIC LETTER HAH FINAL FORM
+FEA3;AL # ARABIC LETTER HAH INITIAL FORM
+FEA4;AL # ARABIC LETTER HAH MEDIAL FORM
+FEA5;AL # ARABIC LETTER KHAH ISOLATED FORM
+FEA6;AL # ARABIC LETTER KHAH FINAL FORM
+FEA7;AL # ARABIC LETTER KHAH INITIAL FORM
+FEA8;AL # ARABIC LETTER KHAH MEDIAL FORM
+FEA9;AL # ARABIC LETTER DAL ISOLATED FORM
+FEAA;AL # ARABIC LETTER DAL FINAL FORM
+FEAB;AL # ARABIC LETTER THAL ISOLATED FORM
+FEAC;AL # ARABIC LETTER THAL FINAL FORM
+FEAD;AL # ARABIC LETTER REH ISOLATED FORM
+FEAE;AL # ARABIC LETTER REH FINAL FORM
+FEAF;AL # ARABIC LETTER ZAIN ISOLATED FORM
+FEB0;AL # ARABIC LETTER ZAIN FINAL FORM
+FEB1;AL # ARABIC LETTER SEEN ISOLATED FORM
+FEB2;AL # ARABIC LETTER SEEN FINAL FORM
+FEB3;AL # ARABIC LETTER SEEN INITIAL FORM
+FEB4;AL # ARABIC LETTER SEEN MEDIAL FORM
+FEB5;AL # ARABIC LETTER SHEEN ISOLATED FORM
+FEB6;AL # ARABIC LETTER SHEEN FINAL FORM
+FEB7;AL # ARABIC LETTER SHEEN INITIAL FORM
+FEB8;AL # ARABIC LETTER SHEEN MEDIAL FORM
+FEB9;AL # ARABIC LETTER SAD ISOLATED FORM
+FEBA;AL # ARABIC LETTER SAD FINAL FORM
+FEBB;AL # ARABIC LETTER SAD INITIAL FORM
+FEBC;AL # ARABIC LETTER SAD MEDIAL FORM
+FEBD;AL # ARABIC LETTER DAD ISOLATED FORM
+FEBE;AL # ARABIC LETTER DAD FINAL FORM
+FEBF;AL # ARABIC LETTER DAD INITIAL FORM
+FEC0;AL # ARABIC LETTER DAD MEDIAL FORM
+FEC1;AL # ARABIC LETTER TAH ISOLATED FORM
+FEC2;AL # ARABIC LETTER TAH FINAL FORM
+FEC3;AL # ARABIC LETTER TAH INITIAL FORM
+FEC4;AL # ARABIC LETTER TAH MEDIAL FORM
+FEC5;AL # ARABIC LETTER ZAH ISOLATED FORM
+FEC6;AL # ARABIC LETTER ZAH FINAL FORM
+FEC7;AL # ARABIC LETTER ZAH INITIAL FORM
+FEC8;AL # ARABIC LETTER ZAH MEDIAL FORM
+FEC9;AL # ARABIC LETTER AIN ISOLATED FORM
+FECA;AL # ARABIC LETTER AIN FINAL FORM
+FECB;AL # ARABIC LETTER AIN INITIAL FORM
+FECC;AL # ARABIC LETTER AIN MEDIAL FORM
+FECD;AL # ARABIC LETTER GHAIN ISOLATED FORM
+FECE;AL # ARABIC LETTER GHAIN FINAL FORM
+FECF;AL # ARABIC LETTER GHAIN INITIAL FORM
+FED0;AL # ARABIC LETTER GHAIN MEDIAL FORM
+FED1;AL # ARABIC LETTER FEH ISOLATED FORM
+FED2;AL # ARABIC LETTER FEH FINAL FORM
+FED3;AL # ARABIC LETTER FEH INITIAL FORM
+FED4;AL # ARABIC LETTER FEH MEDIAL FORM
+FED5;AL # ARABIC LETTER QAF ISOLATED FORM
+FED6;AL # ARABIC LETTER QAF FINAL FORM
+FED7;AL # ARABIC LETTER QAF INITIAL FORM
+FED8;AL # ARABIC LETTER QAF MEDIAL FORM
+FED9;AL # ARABIC LETTER KAF ISOLATED FORM
+FEDA;AL # ARABIC LETTER KAF FINAL FORM
+FEDB;AL # ARABIC LETTER KAF INITIAL FORM
+FEDC;AL # ARABIC LETTER KAF MEDIAL FORM
+FEDD;AL # ARABIC LETTER LAM ISOLATED FORM
+FEDE;AL # ARABIC LETTER LAM FINAL FORM
+FEDF;AL # ARABIC LETTER LAM INITIAL FORM
+FEE0;AL # ARABIC LETTER LAM MEDIAL FORM
+FEE1;AL # ARABIC LETTER MEEM ISOLATED FORM
+FEE2;AL # ARABIC LETTER MEEM FINAL FORM
+FEE3;AL # ARABIC LETTER MEEM INITIAL FORM
+FEE4;AL # ARABIC LETTER MEEM MEDIAL FORM
+FEE5;AL # ARABIC LETTER NOON ISOLATED FORM
+FEE6;AL # ARABIC LETTER NOON FINAL FORM
+FEE7;AL # ARABIC LETTER NOON INITIAL FORM
+FEE8;AL # ARABIC LETTER NOON MEDIAL FORM
+FEE9;AL # ARABIC LETTER HEH ISOLATED FORM
+FEEA;AL # ARABIC LETTER HEH FINAL FORM
+FEEB;AL # ARABIC LETTER HEH INITIAL FORM
+FEEC;AL # ARABIC LETTER HEH MEDIAL FORM
+FEED;AL # ARABIC LETTER WAW ISOLATED FORM
+FEEE;AL # ARABIC LETTER WAW FINAL FORM
+FEEF;AL # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FEF0;AL # ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEF1;AL # ARABIC LETTER YEH ISOLATED FORM
+FEF2;AL # ARABIC LETTER YEH FINAL FORM
+FEF3;AL # ARABIC LETTER YEH INITIAL FORM
+FEF4;AL # ARABIC LETTER YEH MEDIAL FORM
+FEF5;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF6;AL # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF7;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEF8;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF9;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFA;AL # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEFB;AL # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FEFC;AL # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFF;WJ # ZERO WIDTH NO-BREAK SPACE
+FF01;EX # FULLWIDTH EXCLAMATION MARK
+FF02;ID # FULLWIDTH QUOTATION MARK
+FF03;ID # FULLWIDTH NUMBER SIGN
+FF04;PR # FULLWIDTH DOLLAR SIGN
+FF05;PO # FULLWIDTH PERCENT SIGN
+FF06;ID # FULLWIDTH AMPERSAND
+FF07;ID # FULLWIDTH APOSTROPHE
+FF08;OP # FULLWIDTH LEFT PARENTHESIS
+FF09;CL # FULLWIDTH RIGHT PARENTHESIS
+FF0A;ID # FULLWIDTH ASTERISK
+FF0B;ID # FULLWIDTH PLUS SIGN
+FF0C;CL # FULLWIDTH COMMA
+FF0D;ID # FULLWIDTH HYPHEN-MINUS
+FF0E;CL # FULLWIDTH FULL STOP
+FF0F;ID # FULLWIDTH SOLIDUS
+FF10;ID # FULLWIDTH DIGIT ZERO
+FF11;ID # FULLWIDTH DIGIT ONE
+FF12;ID # FULLWIDTH DIGIT TWO
+FF13;ID # FULLWIDTH DIGIT THREE
+FF14;ID # FULLWIDTH DIGIT FOUR
+FF15;ID # FULLWIDTH DIGIT FIVE
+FF16;ID # FULLWIDTH DIGIT SIX
+FF17;ID # FULLWIDTH DIGIT SEVEN
+FF18;ID # FULLWIDTH DIGIT EIGHT
+FF19;ID # FULLWIDTH DIGIT NINE
+FF1A;NS # FULLWIDTH COLON
+FF1B;NS # FULLWIDTH SEMICOLON
+FF1C;ID # FULLWIDTH LESS-THAN SIGN
+FF1D;ID # FULLWIDTH EQUALS SIGN
+FF1E;ID # FULLWIDTH GREATER-THAN SIGN
+FF1F;EX # FULLWIDTH QUESTION MARK
+FF20;ID # FULLWIDTH COMMERCIAL AT
+FF21;ID # FULLWIDTH LATIN CAPITAL LETTER A
+FF22;ID # FULLWIDTH LATIN CAPITAL LETTER B
+FF23;ID # FULLWIDTH LATIN CAPITAL LETTER C
+FF24;ID # FULLWIDTH LATIN CAPITAL LETTER D
+FF25;ID # FULLWIDTH LATIN CAPITAL LETTER E
+FF26;ID # FULLWIDTH LATIN CAPITAL LETTER F
+FF27;ID # FULLWIDTH LATIN CAPITAL LETTER G
+FF28;ID # FULLWIDTH LATIN CAPITAL LETTER H
+FF29;ID # FULLWIDTH LATIN CAPITAL LETTER I
+FF2A;ID # FULLWIDTH LATIN CAPITAL LETTER J
+FF2B;ID # FULLWIDTH LATIN CAPITAL LETTER K
+FF2C;ID # FULLWIDTH LATIN CAPITAL LETTER L
+FF2D;ID # FULLWIDTH LATIN CAPITAL LETTER M
+FF2E;ID # FULLWIDTH LATIN CAPITAL LETTER N
+FF2F;ID # FULLWIDTH LATIN CAPITAL LETTER O
+FF30;ID # FULLWIDTH LATIN CAPITAL LETTER P
+FF31;ID # FULLWIDTH LATIN CAPITAL LETTER Q
+FF32;ID # FULLWIDTH LATIN CAPITAL LETTER R
+FF33;ID # FULLWIDTH LATIN CAPITAL LETTER S
+FF34;ID # FULLWIDTH LATIN CAPITAL LETTER T
+FF35;ID # FULLWIDTH LATIN CAPITAL LETTER U
+FF36;ID # FULLWIDTH LATIN CAPITAL LETTER V
+FF37;ID # FULLWIDTH LATIN CAPITAL LETTER W
+FF38;ID # FULLWIDTH LATIN CAPITAL LETTER X
+FF39;ID # FULLWIDTH LATIN CAPITAL LETTER Y
+FF3A;ID # FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B;OP # FULLWIDTH LEFT SQUARE BRACKET
+FF3C;ID # FULLWIDTH REVERSE SOLIDUS
+FF3D;CL # FULLWIDTH RIGHT SQUARE BRACKET
+FF3E;ID # FULLWIDTH CIRCUMFLEX ACCENT
+FF3F;ID # FULLWIDTH LOW LINE
+FF40;ID # FULLWIDTH GRAVE ACCENT
+FF41;ID # FULLWIDTH LATIN SMALL LETTER A
+FF42;ID # FULLWIDTH LATIN SMALL LETTER B
+FF43;ID # FULLWIDTH LATIN SMALL LETTER C
+FF44;ID # FULLWIDTH LATIN SMALL LETTER D
+FF45;ID # FULLWIDTH LATIN SMALL LETTER E
+FF46;ID # FULLWIDTH LATIN SMALL LETTER F
+FF47;ID # FULLWIDTH LATIN SMALL LETTER G
+FF48;ID # FULLWIDTH LATIN SMALL LETTER H
+FF49;ID # FULLWIDTH LATIN SMALL LETTER I
+FF4A;ID # FULLWIDTH LATIN SMALL LETTER J
+FF4B;ID # FULLWIDTH LATIN SMALL LETTER K
+FF4C;ID # FULLWIDTH LATIN SMALL LETTER L
+FF4D;ID # FULLWIDTH LATIN SMALL LETTER M
+FF4E;ID # FULLWIDTH LATIN SMALL LETTER N
+FF4F;ID # FULLWIDTH LATIN SMALL LETTER O
+FF50;ID # FULLWIDTH LATIN SMALL LETTER P
+FF51;ID # FULLWIDTH LATIN SMALL LETTER Q
+FF52;ID # FULLWIDTH LATIN SMALL LETTER R
+FF53;ID # FULLWIDTH LATIN SMALL LETTER S
+FF54;ID # FULLWIDTH LATIN SMALL LETTER T
+FF55;ID # FULLWIDTH LATIN SMALL LETTER U
+FF56;ID # FULLWIDTH LATIN SMALL LETTER V
+FF57;ID # FULLWIDTH LATIN SMALL LETTER W
+FF58;ID # FULLWIDTH LATIN SMALL LETTER X
+FF59;ID # FULLWIDTH LATIN SMALL LETTER Y
+FF5A;ID # FULLWIDTH LATIN SMALL LETTER Z
+FF5B;OP # FULLWIDTH LEFT CURLY BRACKET
+FF5C;ID # FULLWIDTH VERTICAL LINE
+FF5D;CL # FULLWIDTH RIGHT CURLY BRACKET
+FF5E;ID # FULLWIDTH TILDE
+FF5F;OP # FULLWIDTH LEFT WHITE PARENTHESIS
+FF60;CL # FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61;CL # HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62;OP # HALFWIDTH LEFT CORNER BRACKET
+FF63;CL # HALFWIDTH RIGHT CORNER BRACKET
+FF64;CL # HALFWIDTH IDEOGRAPHIC COMMA
+FF65;NS # HALFWIDTH KATAKANA MIDDLE DOT
+FF66;AL # HALFWIDTH KATAKANA LETTER WO
+FF67;NS # HALFWIDTH KATAKANA LETTER SMALL A
+FF68;NS # HALFWIDTH KATAKANA LETTER SMALL I
+FF69;NS # HALFWIDTH KATAKANA LETTER SMALL U
+FF6A;NS # HALFWIDTH KATAKANA LETTER SMALL E
+FF6B;NS # HALFWIDTH KATAKANA LETTER SMALL O
+FF6C;NS # HALFWIDTH KATAKANA LETTER SMALL YA
+FF6D;NS # HALFWIDTH KATAKANA LETTER SMALL YU
+FF6E;NS # HALFWIDTH KATAKANA LETTER SMALL YO
+FF6F;NS # HALFWIDTH KATAKANA LETTER SMALL TU
+FF70;NS # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71;AL # HALFWIDTH KATAKANA LETTER A
+FF72;AL # HALFWIDTH KATAKANA LETTER I
+FF73;AL # HALFWIDTH KATAKANA LETTER U
+FF74;AL # HALFWIDTH KATAKANA LETTER E
+FF75;AL # HALFWIDTH KATAKANA LETTER O
+FF76;AL # HALFWIDTH KATAKANA LETTER KA
+FF77;AL # HALFWIDTH KATAKANA LETTER KI
+FF78;AL # HALFWIDTH KATAKANA LETTER KU
+FF79;AL # HALFWIDTH KATAKANA LETTER KE
+FF7A;AL # HALFWIDTH KATAKANA LETTER KO
+FF7B;AL # HALFWIDTH KATAKANA LETTER SA
+FF7C;AL # HALFWIDTH KATAKANA LETTER SI
+FF7D;AL # HALFWIDTH KATAKANA LETTER SU
+FF7E;AL # HALFWIDTH KATAKANA LETTER SE
+FF7F;AL # HALFWIDTH KATAKANA LETTER SO
+FF80;AL # HALFWIDTH KATAKANA LETTER TA
+FF81;AL # HALFWIDTH KATAKANA LETTER TI
+FF82;AL # HALFWIDTH KATAKANA LETTER TU
+FF83;AL # HALFWIDTH KATAKANA LETTER TE
+FF84;AL # HALFWIDTH KATAKANA LETTER TO
+FF85;AL # HALFWIDTH KATAKANA LETTER NA
+FF86;AL # HALFWIDTH KATAKANA LETTER NI
+FF87;AL # HALFWIDTH KATAKANA LETTER NU
+FF88;AL # HALFWIDTH KATAKANA LETTER NE
+FF89;AL # HALFWIDTH KATAKANA LETTER NO
+FF8A;AL # HALFWIDTH KATAKANA LETTER HA
+FF8B;AL # HALFWIDTH KATAKANA LETTER HI
+FF8C;AL # HALFWIDTH KATAKANA LETTER HU
+FF8D;AL # HALFWIDTH KATAKANA LETTER HE
+FF8E;AL # HALFWIDTH KATAKANA LETTER HO
+FF8F;AL # HALFWIDTH KATAKANA LETTER MA
+FF90;AL # HALFWIDTH KATAKANA LETTER MI
+FF91;AL # HALFWIDTH KATAKANA LETTER MU
+FF92;AL # HALFWIDTH KATAKANA LETTER ME
+FF93;AL # HALFWIDTH KATAKANA LETTER MO
+FF94;AL # HALFWIDTH KATAKANA LETTER YA
+FF95;AL # HALFWIDTH KATAKANA LETTER YU
+FF96;AL # HALFWIDTH KATAKANA LETTER YO
+FF97;AL # HALFWIDTH KATAKANA LETTER RA
+FF98;AL # HALFWIDTH KATAKANA LETTER RI
+FF99;AL # HALFWIDTH KATAKANA LETTER RU
+FF9A;AL # HALFWIDTH KATAKANA LETTER RE
+FF9B;AL # HALFWIDTH KATAKANA LETTER RO
+FF9C;AL # HALFWIDTH KATAKANA LETTER WA
+FF9D;AL # HALFWIDTH KATAKANA LETTER N
+FF9E;NS # HALFWIDTH KATAKANA VOICED SOUND MARK
+FF9F;NS # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0;AL # HALFWIDTH HANGUL FILLER
+FFA1;AL # HALFWIDTH HANGUL LETTER KIYEOK
+FFA2;AL # HALFWIDTH HANGUL LETTER SSANGKIYEOK
+FFA3;AL # HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+FFA4;AL # HALFWIDTH HANGUL LETTER NIEUN
+FFA5;AL # HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+FFA6;AL # HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+FFA7;AL # HALFWIDTH HANGUL LETTER TIKEUT
+FFA8;AL # HALFWIDTH HANGUL LETTER SSANGTIKEUT
+FFA9;AL # HALFWIDTH HANGUL LETTER RIEUL
+FFAA;AL # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+FFAB;AL # HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+FFAC;AL # HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+FFAD;AL # HALFWIDTH HANGUL LETTER RIEUL-SIOS
+FFAE;AL # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+FFAF;AL # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+FFB0;AL # HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+FFB1;AL # HALFWIDTH HANGUL LETTER MIEUM
+FFB2;AL # HALFWIDTH HANGUL LETTER PIEUP
+FFB3;AL # HALFWIDTH HANGUL LETTER SSANGPIEUP
+FFB4;AL # HALFWIDTH HANGUL LETTER PIEUP-SIOS
+FFB5;AL # HALFWIDTH HANGUL LETTER SIOS
+FFB6;AL # HALFWIDTH HANGUL LETTER SSANGSIOS
+FFB7;AL # HALFWIDTH HANGUL LETTER IEUNG
+FFB8;AL # HALFWIDTH HANGUL LETTER CIEUC
+FFB9;AL # HALFWIDTH HANGUL LETTER SSANGCIEUC
+FFBA;AL # HALFWIDTH HANGUL LETTER CHIEUCH
+FFBB;AL # HALFWIDTH HANGUL LETTER KHIEUKH
+FFBC;AL # HALFWIDTH HANGUL LETTER THIEUTH
+FFBD;AL # HALFWIDTH HANGUL LETTER PHIEUPH
+FFBE;AL # HALFWIDTH HANGUL LETTER HIEUH
+FFC2;AL # HALFWIDTH HANGUL LETTER A
+FFC3;AL # HALFWIDTH HANGUL LETTER AE
+FFC4;AL # HALFWIDTH HANGUL LETTER YA
+FFC5;AL # HALFWIDTH HANGUL LETTER YAE
+FFC6;AL # HALFWIDTH HANGUL LETTER EO
+FFC7;AL # HALFWIDTH HANGUL LETTER E
+FFCA;AL # HALFWIDTH HANGUL LETTER YEO
+FFCB;AL # HALFWIDTH HANGUL LETTER YE
+FFCC;AL # HALFWIDTH HANGUL LETTER O
+FFCD;AL # HALFWIDTH HANGUL LETTER WA
+FFCE;AL # HALFWIDTH HANGUL LETTER WAE
+FFCF;AL # HALFWIDTH HANGUL LETTER OE
+FFD2;AL # HALFWIDTH HANGUL LETTER YO
+FFD3;AL # HALFWIDTH HANGUL LETTER U
+FFD4;AL # HALFWIDTH HANGUL LETTER WEO
+FFD5;AL # HALFWIDTH HANGUL LETTER WE
+FFD6;AL # HALFWIDTH HANGUL LETTER WI
+FFD7;AL # HALFWIDTH HANGUL LETTER YU
+FFDA;AL # HALFWIDTH HANGUL LETTER EU
+FFDB;AL # HALFWIDTH HANGUL LETTER YI
+FFDC;AL # HALFWIDTH HANGUL LETTER I
+FFE0;PO # FULLWIDTH CENT SIGN
+FFE1;PR # FULLWIDTH POUND SIGN
+FFE2;ID # FULLWIDTH NOT SIGN
+FFE3;ID # FULLWIDTH MACRON
+FFE4;ID # FULLWIDTH BROKEN BAR
+FFE5;PR # FULLWIDTH YEN SIGN
+FFE6;PR # FULLWIDTH WON SIGN
+FFE8;AL # HALFWIDTH FORMS LIGHT VERTICAL
+FFE9;AL # HALFWIDTH LEFTWARDS ARROW
+FFEA;AL # HALFWIDTH UPWARDS ARROW
+FFEB;AL # HALFWIDTH RIGHTWARDS ARROW
+FFEC;AL # HALFWIDTH DOWNWARDS ARROW
+FFED;AL # HALFWIDTH BLACK SQUARE
+FFEE;AL # HALFWIDTH WHITE CIRCLE
+FFF9;CM # INTERLINEAR ANNOTATION ANCHOR
+FFFA;CM # INTERLINEAR ANNOTATION SEPARATOR
+FFFB;CM # INTERLINEAR ANNOTATION TERMINATOR
+FFFC;CB # OBJECT REPLACEMENT CHARACTER
+FFFD;AI # REPLACEMENT CHARACTER
+10000;AL # LINEAR B SYLLABLE B008 A
+10001;AL # LINEAR B SYLLABLE B038 E
+10002;AL # LINEAR B SYLLABLE B028 I
+10003;AL # LINEAR B SYLLABLE B061 O
+10004;AL # LINEAR B SYLLABLE B010 U
+10005;AL # LINEAR B SYLLABLE B001 DA
+10006;AL # LINEAR B SYLLABLE B045 DE
+10007;AL # LINEAR B SYLLABLE B007 DI
+10008;AL # LINEAR B SYLLABLE B014 DO
+10009;AL # LINEAR B SYLLABLE B051 DU
+1000A;AL # LINEAR B SYLLABLE B057 JA
+1000B;AL # LINEAR B SYLLABLE B046 JE
+1000D;AL # LINEAR B SYLLABLE B036 JO
+1000E;AL # LINEAR B SYLLABLE B065 JU
+1000F;AL # LINEAR B SYLLABLE B077 KA
+10010;AL # LINEAR B SYLLABLE B044 KE
+10011;AL # LINEAR B SYLLABLE B067 KI
+10012;AL # LINEAR B SYLLABLE B070 KO
+10013;AL # LINEAR B SYLLABLE B081 KU
+10014;AL # LINEAR B SYLLABLE B080 MA
+10015;AL # LINEAR B SYLLABLE B013 ME
+10016;AL # LINEAR B SYLLABLE B073 MI
+10017;AL # LINEAR B SYLLABLE B015 MO
+10018;AL # LINEAR B SYLLABLE B023 MU
+10019;AL # LINEAR B SYLLABLE B006 NA
+1001A;AL # LINEAR B SYLLABLE B024 NE
+1001B;AL # LINEAR B SYLLABLE B030 NI
+1001C;AL # LINEAR B SYLLABLE B052 NO
+1001D;AL # LINEAR B SYLLABLE B055 NU
+1001E;AL # LINEAR B SYLLABLE B003 PA
+1001F;AL # LINEAR B SYLLABLE B072 PE
+10020;AL # LINEAR B SYLLABLE B039 PI
+10021;AL # LINEAR B SYLLABLE B011 PO
+10022;AL # LINEAR B SYLLABLE B050 PU
+10023;AL # LINEAR B SYLLABLE B016 QA
+10024;AL # LINEAR B SYLLABLE B078 QE
+10025;AL # LINEAR B SYLLABLE B021 QI
+10026;AL # LINEAR B SYLLABLE B032 QO
+10028;AL # LINEAR B SYLLABLE B060 RA
+10029;AL # LINEAR B SYLLABLE B027 RE
+1002A;AL # LINEAR B SYLLABLE B053 RI
+1002B;AL # LINEAR B SYLLABLE B002 RO
+1002C;AL # LINEAR B SYLLABLE B026 RU
+1002D;AL # LINEAR B SYLLABLE B031 SA
+1002E;AL # LINEAR B SYLLABLE B009 SE
+1002F;AL # LINEAR B SYLLABLE B041 SI
+10030;AL # LINEAR B SYLLABLE B012 SO
+10031;AL # LINEAR B SYLLABLE B058 SU
+10032;AL # LINEAR B SYLLABLE B059 TA
+10033;AL # LINEAR B SYLLABLE B004 TE
+10034;AL # LINEAR B SYLLABLE B037 TI
+10035;AL # LINEAR B SYLLABLE B005 TO
+10036;AL # LINEAR B SYLLABLE B069 TU
+10037;AL # LINEAR B SYLLABLE B054 WA
+10038;AL # LINEAR B SYLLABLE B075 WE
+10039;AL # LINEAR B SYLLABLE B040 WI
+1003A;AL # LINEAR B SYLLABLE B042 WO
+1003C;AL # LINEAR B SYLLABLE B017 ZA
+1003D;AL # LINEAR B SYLLABLE B074 ZE
+1003F;AL # LINEAR B SYLLABLE B020 ZO
+10040;AL # LINEAR B SYLLABLE B025 A2
+10041;AL # LINEAR B SYLLABLE B043 A3
+10042;AL # LINEAR B SYLLABLE B085 AU
+10043;AL # LINEAR B SYLLABLE B071 DWE
+10044;AL # LINEAR B SYLLABLE B090 DWO
+10045;AL # LINEAR B SYLLABLE B048 NWA
+10046;AL # LINEAR B SYLLABLE B029 PU2
+10047;AL # LINEAR B SYLLABLE B062 PTE
+10048;AL # LINEAR B SYLLABLE B076 RA2
+10049;AL # LINEAR B SYLLABLE B033 RA3
+1004A;AL # LINEAR B SYLLABLE B068 RO2
+1004B;AL # LINEAR B SYLLABLE B066 TA2
+1004C;AL # LINEAR B SYLLABLE B087 TWE
+1004D;AL # LINEAR B SYLLABLE B091 TWO
+10050;AL # LINEAR B SYMBOL B018
+10051;AL # LINEAR B SYMBOL B019
+10052;AL # LINEAR B SYMBOL B022
+10053;AL # LINEAR B SYMBOL B034
+10054;AL # LINEAR B SYMBOL B047
+10055;AL # LINEAR B SYMBOL B049
+10056;AL # LINEAR B SYMBOL B056
+10057;AL # LINEAR B SYMBOL B063
+10058;AL # LINEAR B SYMBOL B064
+10059;AL # LINEAR B SYMBOL B079
+1005A;AL # LINEAR B SYMBOL B082
+1005B;AL # LINEAR B SYMBOL B083
+1005C;AL # LINEAR B SYMBOL B086
+1005D;AL # LINEAR B SYMBOL B089
+10080;AL # LINEAR B IDEOGRAM B100 MAN
+10081;AL # LINEAR B IDEOGRAM B102 WOMAN
+10082;AL # LINEAR B IDEOGRAM B104 DEER
+10083;AL # LINEAR B IDEOGRAM B105 EQUID
+10084;AL # LINEAR B IDEOGRAM B105F MARE
+10085;AL # LINEAR B IDEOGRAM B105M STALLION
+10086;AL # LINEAR B IDEOGRAM B106F EWE
+10087;AL # LINEAR B IDEOGRAM B106M RAM
+10088;AL # LINEAR B IDEOGRAM B107F SHE-GOAT
+10089;AL # LINEAR B IDEOGRAM B107M HE-GOAT
+1008A;AL # LINEAR B IDEOGRAM B108F SOW
+1008B;AL # LINEAR B IDEOGRAM B108M BOAR
+1008C;AL # LINEAR B IDEOGRAM B109F COW
+1008D;AL # LINEAR B IDEOGRAM B109M BULL
+1008E;AL # LINEAR B IDEOGRAM B120 WHEAT
+1008F;AL # LINEAR B IDEOGRAM B121 BARLEY
+10090;AL # LINEAR B IDEOGRAM B122 OLIVE
+10091;AL # LINEAR B IDEOGRAM B123 SPICE
+10092;AL # LINEAR B IDEOGRAM B125 CYPERUS
+10093;AL # LINEAR B MONOGRAM B127 KAPO
+10094;AL # LINEAR B MONOGRAM B128 KANAKO
+10095;AL # LINEAR B IDEOGRAM B130 OIL
+10096;AL # LINEAR B IDEOGRAM B131 WINE
+10097;AL # LINEAR B IDEOGRAM B132
+10098;AL # LINEAR B MONOGRAM B133 AREPA
+10099;AL # LINEAR B MONOGRAM B135 MERI
+1009A;AL # LINEAR B IDEOGRAM B140 BRONZE
+1009B;AL # LINEAR B IDEOGRAM B141 GOLD
+1009C;AL # LINEAR B IDEOGRAM B142
+1009D;AL # LINEAR B IDEOGRAM B145 WOOL
+1009E;AL # LINEAR B IDEOGRAM B146
+1009F;AL # LINEAR B IDEOGRAM B150
+100A0;AL # LINEAR B IDEOGRAM B151 HORN
+100A1;AL # LINEAR B IDEOGRAM B152
+100A2;AL # LINEAR B IDEOGRAM B153
+100A3;AL # LINEAR B IDEOGRAM B154
+100A4;AL # LINEAR B MONOGRAM B156 TURO2
+100A5;AL # LINEAR B IDEOGRAM B157
+100A6;AL # LINEAR B IDEOGRAM B158
+100A7;AL # LINEAR B IDEOGRAM B159 CLOTH
+100A8;AL # LINEAR B IDEOGRAM B160
+100A9;AL # LINEAR B IDEOGRAM B161
+100AA;AL # LINEAR B IDEOGRAM B162 GARMENT
+100AB;AL # LINEAR B IDEOGRAM B163 ARMOUR
+100AC;AL # LINEAR B IDEOGRAM B164
+100AD;AL # LINEAR B IDEOGRAM B165
+100AE;AL # LINEAR B IDEOGRAM B166
+100AF;AL # LINEAR B IDEOGRAM B167
+100B0;AL # LINEAR B IDEOGRAM B168
+100B1;AL # LINEAR B IDEOGRAM B169
+100B2;AL # LINEAR B IDEOGRAM B170
+100B3;AL # LINEAR B IDEOGRAM B171
+100B4;AL # LINEAR B IDEOGRAM B172
+100B5;AL # LINEAR B IDEOGRAM B173 MONTH
+100B6;AL # LINEAR B IDEOGRAM B174
+100B7;AL # LINEAR B IDEOGRAM B176 TREE
+100B8;AL # LINEAR B IDEOGRAM B177
+100B9;AL # LINEAR B IDEOGRAM B178
+100BA;AL # LINEAR B IDEOGRAM B179
+100BB;AL # LINEAR B IDEOGRAM B180
+100BC;AL # LINEAR B IDEOGRAM B181
+100BD;AL # LINEAR B IDEOGRAM B182
+100BE;AL # LINEAR B IDEOGRAM B183
+100BF;AL # LINEAR B IDEOGRAM B184
+100C0;AL # LINEAR B IDEOGRAM B185
+100C1;AL # LINEAR B IDEOGRAM B189
+100C2;AL # LINEAR B IDEOGRAM B190
+100C3;AL # LINEAR B IDEOGRAM B191 HELMET
+100C4;AL # LINEAR B IDEOGRAM B220 FOOTSTOOL
+100C5;AL # LINEAR B IDEOGRAM B225 BATHTUB
+100C6;AL # LINEAR B IDEOGRAM B230 SPEAR
+100C7;AL # LINEAR B IDEOGRAM B231 ARROW
+100C8;AL # LINEAR B IDEOGRAM B232
+100C9;AL # LINEAR B IDEOGRAM B233 SWORD
+100CA;AL # LINEAR B IDEOGRAM B234
+100CB;AL # LINEAR B IDEOGRAM B236
+100CC;AL # LINEAR B IDEOGRAM B240 WHEELED CHARIOT
+100CD;AL # LINEAR B IDEOGRAM B241 CHARIOT
+100CE;AL # LINEAR B IDEOGRAM B242 CHARIOT FRAME
+100CF;AL # LINEAR B IDEOGRAM B243 WHEEL
+100D0;AL # LINEAR B IDEOGRAM B245
+100D1;AL # LINEAR B IDEOGRAM B246
+100D2;AL # LINEAR B MONOGRAM B247 DIPTE
+100D3;AL # LINEAR B IDEOGRAM B248
+100D4;AL # LINEAR B IDEOGRAM B249
+100D5;AL # LINEAR B IDEOGRAM B251
+100D6;AL # LINEAR B IDEOGRAM B252
+100D7;AL # LINEAR B IDEOGRAM B253
+100D8;AL # LINEAR B IDEOGRAM B254 DART
+100D9;AL # LINEAR B IDEOGRAM B255
+100DA;AL # LINEAR B IDEOGRAM B256
+100DB;AL # LINEAR B IDEOGRAM B257
+100DC;AL # LINEAR B IDEOGRAM B258
+100DD;AL # LINEAR B IDEOGRAM B259
+100DE;AL # LINEAR B IDEOGRAM VESSEL B155
+100DF;AL # LINEAR B IDEOGRAM VESSEL B200
+100E0;AL # LINEAR B IDEOGRAM VESSEL B201
+100E1;AL # LINEAR B IDEOGRAM VESSEL B202
+100E2;AL # LINEAR B IDEOGRAM VESSEL B203
+100E3;AL # LINEAR B IDEOGRAM VESSEL B204
+100E4;AL # LINEAR B IDEOGRAM VESSEL B205
+100E5;AL # LINEAR B IDEOGRAM VESSEL B206
+100E6;AL # LINEAR B IDEOGRAM VESSEL B207
+100E7;AL # LINEAR B IDEOGRAM VESSEL B208
+100E8;AL # LINEAR B IDEOGRAM VESSEL B209
+100E9;AL # LINEAR B IDEOGRAM VESSEL B210
+100EA;AL # LINEAR B IDEOGRAM VESSEL B211
+100EB;AL # LINEAR B IDEOGRAM VESSEL B212
+100EC;AL # LINEAR B IDEOGRAM VESSEL B213
+100ED;AL # LINEAR B IDEOGRAM VESSEL B214
+100EE;AL # LINEAR B IDEOGRAM VESSEL B215
+100EF;AL # LINEAR B IDEOGRAM VESSEL B216
+100F0;AL # LINEAR B IDEOGRAM VESSEL B217
+100F1;AL # LINEAR B IDEOGRAM VESSEL B218
+100F2;AL # LINEAR B IDEOGRAM VESSEL B219
+100F3;AL # LINEAR B IDEOGRAM VESSEL B221
+100F4;AL # LINEAR B IDEOGRAM VESSEL B222
+100F5;AL # LINEAR B IDEOGRAM VESSEL B226
+100F6;AL # LINEAR B IDEOGRAM VESSEL B227
+100F7;AL # LINEAR B IDEOGRAM VESSEL B228
+100F8;AL # LINEAR B IDEOGRAM VESSEL B229
+100F9;AL # LINEAR B IDEOGRAM VESSEL B250
+100FA;AL # LINEAR B IDEOGRAM VESSEL B305
+10100;BA # AEGEAN WORD SEPARATOR LINE
+10101;BA # AEGEAN WORD SEPARATOR DOT
+10102;BA # AEGEAN CHECK MARK
+10107;AL # AEGEAN NUMBER ONE
+10108;AL # AEGEAN NUMBER TWO
+10109;AL # AEGEAN NUMBER THREE
+1010A;AL # AEGEAN NUMBER FOUR
+1010B;AL # AEGEAN NUMBER FIVE
+1010C;AL # AEGEAN NUMBER SIX
+1010D;AL # AEGEAN NUMBER SEVEN
+1010E;AL # AEGEAN NUMBER EIGHT
+1010F;AL # AEGEAN NUMBER NINE
+10110;AL # AEGEAN NUMBER TEN
+10111;AL # AEGEAN NUMBER TWENTY
+10112;AL # AEGEAN NUMBER THIRTY
+10113;AL # AEGEAN NUMBER FORTY
+10114;AL # AEGEAN NUMBER FIFTY
+10115;AL # AEGEAN NUMBER SIXTY
+10116;AL # AEGEAN NUMBER SEVENTY
+10117;AL # AEGEAN NUMBER EIGHTY
+10118;AL # AEGEAN NUMBER NINETY
+10119;AL # AEGEAN NUMBER ONE HUNDRED
+1011A;AL # AEGEAN NUMBER TWO HUNDRED
+1011B;AL # AEGEAN NUMBER THREE HUNDRED
+1011C;AL # AEGEAN NUMBER FOUR HUNDRED
+1011D;AL # AEGEAN NUMBER FIVE HUNDRED
+1011E;AL # AEGEAN NUMBER SIX HUNDRED
+1011F;AL # AEGEAN NUMBER SEVEN HUNDRED
+10120;AL # AEGEAN NUMBER EIGHT HUNDRED
+10121;AL # AEGEAN NUMBER NINE HUNDRED
+10122;AL # AEGEAN NUMBER ONE THOUSAND
+10123;AL # AEGEAN NUMBER TWO THOUSAND
+10124;AL # AEGEAN NUMBER THREE THOUSAND
+10125;AL # AEGEAN NUMBER FOUR THOUSAND
+10126;AL # AEGEAN NUMBER FIVE THOUSAND
+10127;AL # AEGEAN NUMBER SIX THOUSAND
+10128;AL # AEGEAN NUMBER SEVEN THOUSAND
+10129;AL # AEGEAN NUMBER EIGHT THOUSAND
+1012A;AL # AEGEAN NUMBER NINE THOUSAND
+1012B;AL # AEGEAN NUMBER TEN THOUSAND
+1012C;AL # AEGEAN NUMBER TWENTY THOUSAND
+1012D;AL # AEGEAN NUMBER THIRTY THOUSAND
+1012E;AL # AEGEAN NUMBER FORTY THOUSAND
+1012F;AL # AEGEAN NUMBER FIFTY THOUSAND
+10130;AL # AEGEAN NUMBER SIXTY THOUSAND
+10131;AL # AEGEAN NUMBER SEVENTY THOUSAND
+10132;AL # AEGEAN NUMBER EIGHTY THOUSAND
+10133;AL # AEGEAN NUMBER NINETY THOUSAND
+10137;AL # AEGEAN WEIGHT BASE UNIT
+10138;AL # AEGEAN WEIGHT FIRST SUBUNIT
+10139;AL # AEGEAN WEIGHT SECOND SUBUNIT
+1013A;AL # AEGEAN WEIGHT THIRD SUBUNIT
+1013B;AL # AEGEAN WEIGHT FOURTH SUBUNIT
+1013C;AL # AEGEAN DRY MEASURE FIRST SUBUNIT
+1013D;AL # AEGEAN LIQUID MEASURE FIRST SUBUNIT
+1013E;AL # AEGEAN MEASURE SECOND SUBUNIT
+1013F;AL # AEGEAN MEASURE THIRD SUBUNIT
+10140;AL # GREEK ACROPHONIC ATTIC ONE QUARTER
+10141;AL # GREEK ACROPHONIC ATTIC ONE HALF
+10142;AL # GREEK ACROPHONIC ATTIC ONE DRACHMA
+10143;AL # GREEK ACROPHONIC ATTIC FIVE
+10144;AL # GREEK ACROPHONIC ATTIC FIFTY
+10145;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED
+10146;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND
+10147;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND
+10148;AL # GREEK ACROPHONIC ATTIC FIVE TALENTS
+10149;AL # GREEK ACROPHONIC ATTIC TEN TALENTS
+1014A;AL # GREEK ACROPHONIC ATTIC FIFTY TALENTS
+1014B;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
+1014C;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
+1014D;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
+1014E;AL # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
+1014F;AL # GREEK ACROPHONIC ATTIC FIVE STATERS
+10150;AL # GREEK ACROPHONIC ATTIC TEN STATERS
+10151;AL # GREEK ACROPHONIC ATTIC FIFTY STATERS
+10152;AL # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
+10153;AL # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
+10154;AL # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
+10155;AL # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
+10156;AL # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
+10157;AL # GREEK ACROPHONIC ATTIC TEN MNAS
+10158;AL # GREEK ACROPHONIC HERAEUM ONE PLETHRON
+10159;AL # GREEK ACROPHONIC THESPIAN ONE
+1015A;AL # GREEK ACROPHONIC HERMIONIAN ONE
+1015B;AL # GREEK ACROPHONIC EPIDAUREAN TWO
+1015C;AL # GREEK ACROPHONIC THESPIAN TWO
+1015D;AL # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
+1015E;AL # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
+1015F;AL # GREEK ACROPHONIC TROEZENIAN FIVE
+10160;AL # GREEK ACROPHONIC TROEZENIAN TEN
+10161;AL # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
+10162;AL # GREEK ACROPHONIC HERMIONIAN TEN
+10163;AL # GREEK ACROPHONIC MESSENIAN TEN
+10164;AL # GREEK ACROPHONIC THESPIAN TEN
+10165;AL # GREEK ACROPHONIC THESPIAN THIRTY
+10166;AL # GREEK ACROPHONIC TROEZENIAN FIFTY
+10167;AL # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
+10168;AL # GREEK ACROPHONIC HERMIONIAN FIFTY
+10169;AL # GREEK ACROPHONIC THESPIAN FIFTY
+1016A;AL # GREEK ACROPHONIC THESPIAN ONE HUNDRED
+1016B;AL # GREEK ACROPHONIC THESPIAN THREE HUNDRED
+1016C;AL # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
+1016D;AL # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
+1016E;AL # GREEK ACROPHONIC THESPIAN FIVE HUNDRED
+1016F;AL # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
+10170;AL # GREEK ACROPHONIC NAXIAN FIVE HUNDRED
+10171;AL # GREEK ACROPHONIC THESPIAN ONE THOUSAND
+10172;AL # GREEK ACROPHONIC THESPIAN FIVE THOUSAND
+10173;AL # GREEK ACROPHONIC DELPHIC FIVE MNAS
+10174;AL # GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10175;AL # GREEK ONE HALF SIGN
+10176;AL # GREEK ONE HALF SIGN ALTERNATE FORM
+10177;AL # GREEK TWO THIRDS SIGN
+10178;AL # GREEK THREE QUARTERS SIGN
+10179;AL # GREEK YEAR SIGN
+1017A;AL # GREEK TALENT SIGN
+1017B;AL # GREEK DRACHMA SIGN
+1017C;AL # GREEK OBOL SIGN
+1017D;AL # GREEK TWO OBOLS SIGN
+1017E;AL # GREEK THREE OBOLS SIGN
+1017F;AL # GREEK FOUR OBOLS SIGN
+10180;AL # GREEK FIVE OBOLS SIGN
+10181;AL # GREEK METRETES SIGN
+10182;AL # GREEK KYATHOS BASE SIGN
+10183;AL # GREEK LITRA SIGN
+10184;AL # GREEK OUNKIA SIGN
+10185;AL # GREEK XESTES SIGN
+10186;AL # GREEK ARTABE SIGN
+10187;AL # GREEK AROURA SIGN
+10188;AL # GREEK GRAMMA SIGN
+10189;AL # GREEK TRYBLION BASE SIGN
+1018A;AL # GREEK ZERO SIGN
+10300;AL # OLD ITALIC LETTER A
+10301;AL # OLD ITALIC LETTER BE
+10302;AL # OLD ITALIC LETTER KE
+10303;AL # OLD ITALIC LETTER DE
+10304;AL # OLD ITALIC LETTER E
+10305;AL # OLD ITALIC LETTER VE
+10306;AL # OLD ITALIC LETTER ZE
+10307;AL # OLD ITALIC LETTER HE
+10308;AL # OLD ITALIC LETTER THE
+10309;AL # OLD ITALIC LETTER I
+1030A;AL # OLD ITALIC LETTER KA
+1030B;AL # OLD ITALIC LETTER EL
+1030C;AL # OLD ITALIC LETTER EM
+1030D;AL # OLD ITALIC LETTER EN
+1030E;AL # OLD ITALIC LETTER ESH
+1030F;AL # OLD ITALIC LETTER O
+10310;AL # OLD ITALIC LETTER PE
+10311;AL # OLD ITALIC LETTER SHE
+10312;AL # OLD ITALIC LETTER KU
+10313;AL # OLD ITALIC LETTER ER
+10314;AL # OLD ITALIC LETTER ES
+10315;AL # OLD ITALIC LETTER TE
+10316;AL # OLD ITALIC LETTER U
+10317;AL # OLD ITALIC LETTER EKS
+10318;AL # OLD ITALIC LETTER PHE
+10319;AL # OLD ITALIC LETTER KHE
+1031A;AL # OLD ITALIC LETTER EF
+1031B;AL # OLD ITALIC LETTER ERS
+1031C;AL # OLD ITALIC LETTER CHE
+1031D;AL # OLD ITALIC LETTER II
+1031E;AL # OLD ITALIC LETTER UU
+10320;AL # OLD ITALIC NUMERAL ONE
+10321;AL # OLD ITALIC NUMERAL FIVE
+10322;AL # OLD ITALIC NUMERAL TEN
+10323;AL # OLD ITALIC NUMERAL FIFTY
+10330;AL # GOTHIC LETTER AHSA
+10331;AL # GOTHIC LETTER BAIRKAN
+10332;AL # GOTHIC LETTER GIBA
+10333;AL # GOTHIC LETTER DAGS
+10334;AL # GOTHIC LETTER AIHVUS
+10335;AL # GOTHIC LETTER QAIRTHRA
+10336;AL # GOTHIC LETTER IUJA
+10337;AL # GOTHIC LETTER HAGL
+10338;AL # GOTHIC LETTER THIUTH
+10339;AL # GOTHIC LETTER EIS
+1033A;AL # GOTHIC LETTER KUSMA
+1033B;AL # GOTHIC LETTER LAGUS
+1033C;AL # GOTHIC LETTER MANNA
+1033D;AL # GOTHIC LETTER NAUTHS
+1033E;AL # GOTHIC LETTER JER
+1033F;AL # GOTHIC LETTER URUS
+10340;AL # GOTHIC LETTER PAIRTHRA
+10341;AL # GOTHIC LETTER NINETY
+10342;AL # GOTHIC LETTER RAIDA
+10343;AL # GOTHIC LETTER SAUIL
+10344;AL # GOTHIC LETTER TEIWS
+10345;AL # GOTHIC LETTER WINJA
+10346;AL # GOTHIC LETTER FAIHU
+10347;AL # GOTHIC LETTER IGGWS
+10348;AL # GOTHIC LETTER HWAIR
+10349;AL # GOTHIC LETTER OTHAL
+1034A;AL # GOTHIC LETTER NINE HUNDRED
+10380;AL # UGARITIC LETTER ALPA
+10381;AL # UGARITIC LETTER BETA
+10382;AL # UGARITIC LETTER GAMLA
+10383;AL # UGARITIC LETTER KHA
+10384;AL # UGARITIC LETTER DELTA
+10385;AL # UGARITIC LETTER HO
+10386;AL # UGARITIC LETTER WO
+10387;AL # UGARITIC LETTER ZETA
+10388;AL # UGARITIC LETTER HOTA
+10389;AL # UGARITIC LETTER TET
+1038A;AL # UGARITIC LETTER YOD
+1038B;AL # UGARITIC LETTER KAF
+1038C;AL # UGARITIC LETTER SHIN
+1038D;AL # UGARITIC LETTER LAMDA
+1038E;AL # UGARITIC LETTER MEM
+1038F;AL # UGARITIC LETTER DHAL
+10390;AL # UGARITIC LETTER NUN
+10391;AL # UGARITIC LETTER ZU
+10392;AL # UGARITIC LETTER SAMKA
+10393;AL # UGARITIC LETTER AIN
+10394;AL # UGARITIC LETTER PU
+10395;AL # UGARITIC LETTER SADE
+10396;AL # UGARITIC LETTER QOPA
+10397;AL # UGARITIC LETTER RASHA
+10398;AL # UGARITIC LETTER THANNA
+10399;AL # UGARITIC LETTER GHAIN
+1039A;AL # UGARITIC LETTER TO
+1039B;AL # UGARITIC LETTER I
+1039C;AL # UGARITIC LETTER U
+1039D;AL # UGARITIC LETTER SSU
+1039F;BA # UGARITIC WORD DIVIDER
+103A0;AL # OLD PERSIAN SIGN A
+103A1;AL # OLD PERSIAN SIGN I
+103A2;AL # OLD PERSIAN SIGN U
+103A3;AL # OLD PERSIAN SIGN KA
+103A4;AL # OLD PERSIAN SIGN KU
+103A5;AL # OLD PERSIAN SIGN GA
+103A6;AL # OLD PERSIAN SIGN GU
+103A7;AL # OLD PERSIAN SIGN XA
+103A8;AL # OLD PERSIAN SIGN CA
+103A9;AL # OLD PERSIAN SIGN JA
+103AA;AL # OLD PERSIAN SIGN JI
+103AB;AL # OLD PERSIAN SIGN TA
+103AC;AL # OLD PERSIAN SIGN TU
+103AD;AL # OLD PERSIAN SIGN DA
+103AE;AL # OLD PERSIAN SIGN DI
+103AF;AL # OLD PERSIAN SIGN DU
+103B0;AL # OLD PERSIAN SIGN THA
+103B1;AL # OLD PERSIAN SIGN PA
+103B2;AL # OLD PERSIAN SIGN BA
+103B3;AL # OLD PERSIAN SIGN FA
+103B4;AL # OLD PERSIAN SIGN NA
+103B5;AL # OLD PERSIAN SIGN NU
+103B6;AL # OLD PERSIAN SIGN MA
+103B7;AL # OLD PERSIAN SIGN MI
+103B8;AL # OLD PERSIAN SIGN MU
+103B9;AL # OLD PERSIAN SIGN YA
+103BA;AL # OLD PERSIAN SIGN VA
+103BB;AL # OLD PERSIAN SIGN VI
+103BC;AL # OLD PERSIAN SIGN RA
+103BD;AL # OLD PERSIAN SIGN RU
+103BE;AL # OLD PERSIAN SIGN LA
+103BF;AL # OLD PERSIAN SIGN SA
+103C0;AL # OLD PERSIAN SIGN ZA
+103C1;AL # OLD PERSIAN SIGN SHA
+103C2;AL # OLD PERSIAN SIGN SSA
+103C3;AL # OLD PERSIAN SIGN HA
+103C8;AL # OLD PERSIAN SIGN AURAMAZDAA
+103C9;AL # OLD PERSIAN SIGN AURAMAZDAA-2
+103CA;AL # OLD PERSIAN SIGN AURAMAZDAAHA
+103CB;AL # OLD PERSIAN SIGN XSHAAYATHIYA
+103CC;AL # OLD PERSIAN SIGN DAHYAAUSH
+103CD;AL # OLD PERSIAN SIGN DAHYAAUSH-2
+103CE;AL # OLD PERSIAN SIGN BAGA
+103CF;AL # OLD PERSIAN SIGN BUUMISH
+103D0;BA # OLD PERSIAN WORD DIVIDER
+103D1;AL # OLD PERSIAN NUMBER ONE
+103D2;AL # OLD PERSIAN NUMBER TWO
+103D3;AL # OLD PERSIAN NUMBER TEN
+103D4;AL # OLD PERSIAN NUMBER TWENTY
+103D5;AL # OLD PERSIAN NUMBER HUNDRED
+10400;AL # DESERET CAPITAL LETTER LONG I
+10401;AL # DESERET CAPITAL LETTER LONG E
+10402;AL # DESERET CAPITAL LETTER LONG A
+10403;AL # DESERET CAPITAL LETTER LONG AH
+10404;AL # DESERET CAPITAL LETTER LONG O
+10405;AL # DESERET CAPITAL LETTER LONG OO
+10406;AL # DESERET CAPITAL LETTER SHORT I
+10407;AL # DESERET CAPITAL LETTER SHORT E
+10408;AL # DESERET CAPITAL LETTER SHORT A
+10409;AL # DESERET CAPITAL LETTER SHORT AH
+1040A;AL # DESERET CAPITAL LETTER SHORT O
+1040B;AL # DESERET CAPITAL LETTER SHORT OO
+1040C;AL # DESERET CAPITAL LETTER AY
+1040D;AL # DESERET CAPITAL LETTER OW
+1040E;AL # DESERET CAPITAL LETTER WU
+1040F;AL # DESERET CAPITAL LETTER YEE
+10410;AL # DESERET CAPITAL LETTER H
+10411;AL # DESERET CAPITAL LETTER PEE
+10412;AL # DESERET CAPITAL LETTER BEE
+10413;AL # DESERET CAPITAL LETTER TEE
+10414;AL # DESERET CAPITAL LETTER DEE
+10415;AL # DESERET CAPITAL LETTER CHEE
+10416;AL # DESERET CAPITAL LETTER JEE
+10417;AL # DESERET CAPITAL LETTER KAY
+10418;AL # DESERET CAPITAL LETTER GAY
+10419;AL # DESERET CAPITAL LETTER EF
+1041A;AL # DESERET CAPITAL LETTER VEE
+1041B;AL # DESERET CAPITAL LETTER ETH
+1041C;AL # DESERET CAPITAL LETTER THEE
+1041D;AL # DESERET CAPITAL LETTER ES
+1041E;AL # DESERET CAPITAL LETTER ZEE
+1041F;AL # DESERET CAPITAL LETTER ESH
+10420;AL # DESERET CAPITAL LETTER ZHEE
+10421;AL # DESERET CAPITAL LETTER ER
+10422;AL # DESERET CAPITAL LETTER EL
+10423;AL # DESERET CAPITAL LETTER EM
+10424;AL # DESERET CAPITAL LETTER EN
+10425;AL # DESERET CAPITAL LETTER ENG
+10426;AL # DESERET CAPITAL LETTER OI
+10427;AL # DESERET CAPITAL LETTER EW
+10428;AL # DESERET SMALL LETTER LONG I
+10429;AL # DESERET SMALL LETTER LONG E
+1042A;AL # DESERET SMALL LETTER LONG A
+1042B;AL # DESERET SMALL LETTER LONG AH
+1042C;AL # DESERET SMALL LETTER LONG O
+1042D;AL # DESERET SMALL LETTER LONG OO
+1042E;AL # DESERET SMALL LETTER SHORT I
+1042F;AL # DESERET SMALL LETTER SHORT E
+10430;AL # DESERET SMALL LETTER SHORT A
+10431;AL # DESERET SMALL LETTER SHORT AH
+10432;AL # DESERET SMALL LETTER SHORT O
+10433;AL # DESERET SMALL LETTER SHORT OO
+10434;AL # DESERET SMALL LETTER AY
+10435;AL # DESERET SMALL LETTER OW
+10436;AL # DESERET SMALL LETTER WU
+10437;AL # DESERET SMALL LETTER YEE
+10438;AL # DESERET SMALL LETTER H
+10439;AL # DESERET SMALL LETTER PEE
+1043A;AL # DESERET SMALL LETTER BEE
+1043B;AL # DESERET SMALL LETTER TEE
+1043C;AL # DESERET SMALL LETTER DEE
+1043D;AL # DESERET SMALL LETTER CHEE
+1043E;AL # DESERET SMALL LETTER JEE
+1043F;AL # DESERET SMALL LETTER KAY
+10440;AL # DESERET SMALL LETTER GAY
+10441;AL # DESERET SMALL LETTER EF
+10442;AL # DESERET SMALL LETTER VEE
+10443;AL # DESERET SMALL LETTER ETH
+10444;AL # DESERET SMALL LETTER THEE
+10445;AL # DESERET SMALL LETTER ES
+10446;AL # DESERET SMALL LETTER ZEE
+10447;AL # DESERET SMALL LETTER ESH
+10448;AL # DESERET SMALL LETTER ZHEE
+10449;AL # DESERET SMALL LETTER ER
+1044A;AL # DESERET SMALL LETTER EL
+1044B;AL # DESERET SMALL LETTER EM
+1044C;AL # DESERET SMALL LETTER EN
+1044D;AL # DESERET SMALL LETTER ENG
+1044E;AL # DESERET SMALL LETTER OI
+1044F;AL # DESERET SMALL LETTER EW
+10450;AL # SHAVIAN LETTER PEEP
+10451;AL # SHAVIAN LETTER TOT
+10452;AL # SHAVIAN LETTER KICK
+10453;AL # SHAVIAN LETTER FEE
+10454;AL # SHAVIAN LETTER THIGH
+10455;AL # SHAVIAN LETTER SO
+10456;AL # SHAVIAN LETTER SURE
+10457;AL # SHAVIAN LETTER CHURCH
+10458;AL # SHAVIAN LETTER YEA
+10459;AL # SHAVIAN LETTER HUNG
+1045A;AL # SHAVIAN LETTER BIB
+1045B;AL # SHAVIAN LETTER DEAD
+1045C;AL # SHAVIAN LETTER GAG
+1045D;AL # SHAVIAN LETTER VOW
+1045E;AL # SHAVIAN LETTER THEY
+1045F;AL # SHAVIAN LETTER ZOO
+10460;AL # SHAVIAN LETTER MEASURE
+10461;AL # SHAVIAN LETTER JUDGE
+10462;AL # SHAVIAN LETTER WOE
+10463;AL # SHAVIAN LETTER HA-HA
+10464;AL # SHAVIAN LETTER LOLL
+10465;AL # SHAVIAN LETTER MIME
+10466;AL # SHAVIAN LETTER IF
+10467;AL # SHAVIAN LETTER EGG
+10468;AL # SHAVIAN LETTER ASH
+10469;AL # SHAVIAN LETTER ADO
+1046A;AL # SHAVIAN LETTER ON
+1046B;AL # SHAVIAN LETTER WOOL
+1046C;AL # SHAVIAN LETTER OUT
+1046D;AL # SHAVIAN LETTER AH
+1046E;AL # SHAVIAN LETTER ROAR
+1046F;AL # SHAVIAN LETTER NUN
+10470;AL # SHAVIAN LETTER EAT
+10471;AL # SHAVIAN LETTER AGE
+10472;AL # SHAVIAN LETTER ICE
+10473;AL # SHAVIAN LETTER UP
+10474;AL # SHAVIAN LETTER OAK
+10475;AL # SHAVIAN LETTER OOZE
+10476;AL # SHAVIAN LETTER OIL
+10477;AL # SHAVIAN LETTER AWE
+10478;AL # SHAVIAN LETTER ARE
+10479;AL # SHAVIAN LETTER OR
+1047A;AL # SHAVIAN LETTER AIR
+1047B;AL # SHAVIAN LETTER ERR
+1047C;AL # SHAVIAN LETTER ARRAY
+1047D;AL # SHAVIAN LETTER EAR
+1047E;AL # SHAVIAN LETTER IAN
+1047F;AL # SHAVIAN LETTER YEW
+10480;AL # OSMANYA LETTER ALEF
+10481;AL # OSMANYA LETTER BA
+10482;AL # OSMANYA LETTER TA
+10483;AL # OSMANYA LETTER JA
+10484;AL # OSMANYA LETTER XA
+10485;AL # OSMANYA LETTER KHA
+10486;AL # OSMANYA LETTER DEEL
+10487;AL # OSMANYA LETTER RA
+10488;AL # OSMANYA LETTER SA
+10489;AL # OSMANYA LETTER SHIIN
+1048A;AL # OSMANYA LETTER DHA
+1048B;AL # OSMANYA LETTER CAYN
+1048C;AL # OSMANYA LETTER GA
+1048D;AL # OSMANYA LETTER FA
+1048E;AL # OSMANYA LETTER QAAF
+1048F;AL # OSMANYA LETTER KAAF
+10490;AL # OSMANYA LETTER LAAN
+10491;AL # OSMANYA LETTER MIIN
+10492;AL # OSMANYA LETTER NUUN
+10493;AL # OSMANYA LETTER WAW
+10494;AL # OSMANYA LETTER HA
+10495;AL # OSMANYA LETTER YA
+10496;AL # OSMANYA LETTER A
+10497;AL # OSMANYA LETTER E
+10498;AL # OSMANYA LETTER I
+10499;AL # OSMANYA LETTER O
+1049A;AL # OSMANYA LETTER U
+1049B;AL # OSMANYA LETTER AA
+1049C;AL # OSMANYA LETTER EE
+1049D;AL # OSMANYA LETTER OO
+104A0;NU # OSMANYA DIGIT ZERO
+104A1;NU # OSMANYA DIGIT ONE
+104A2;NU # OSMANYA DIGIT TWO
+104A3;NU # OSMANYA DIGIT THREE
+104A4;NU # OSMANYA DIGIT FOUR
+104A5;NU # OSMANYA DIGIT FIVE
+104A6;NU # OSMANYA DIGIT SIX
+104A7;NU # OSMANYA DIGIT SEVEN
+104A8;NU # OSMANYA DIGIT EIGHT
+104A9;NU # OSMANYA DIGIT NINE
+10800;AL # CYPRIOT SYLLABLE A
+10801;AL # CYPRIOT SYLLABLE E
+10802;AL # CYPRIOT SYLLABLE I
+10803;AL # CYPRIOT SYLLABLE O
+10804;AL # CYPRIOT SYLLABLE U
+10805;AL # CYPRIOT SYLLABLE JA
+10808;AL # CYPRIOT SYLLABLE JO
+1080A;AL # CYPRIOT SYLLABLE KA
+1080B;AL # CYPRIOT SYLLABLE KE
+1080C;AL # CYPRIOT SYLLABLE KI
+1080D;AL # CYPRIOT SYLLABLE KO
+1080E;AL # CYPRIOT SYLLABLE KU
+1080F;AL # CYPRIOT SYLLABLE LA
+10810;AL # CYPRIOT SYLLABLE LE
+10811;AL # CYPRIOT SYLLABLE LI
+10812;AL # CYPRIOT SYLLABLE LO
+10813;AL # CYPRIOT SYLLABLE LU
+10814;AL # CYPRIOT SYLLABLE MA
+10815;AL # CYPRIOT SYLLABLE ME
+10816;AL # CYPRIOT SYLLABLE MI
+10817;AL # CYPRIOT SYLLABLE MO
+10818;AL # CYPRIOT SYLLABLE MU
+10819;AL # CYPRIOT SYLLABLE NA
+1081A;AL # CYPRIOT SYLLABLE NE
+1081B;AL # CYPRIOT SYLLABLE NI
+1081C;AL # CYPRIOT SYLLABLE NO
+1081D;AL # CYPRIOT SYLLABLE NU
+1081E;AL # CYPRIOT SYLLABLE PA
+1081F;AL # CYPRIOT SYLLABLE PE
+10820;AL # CYPRIOT SYLLABLE PI
+10821;AL # CYPRIOT SYLLABLE PO
+10822;AL # CYPRIOT SYLLABLE PU
+10823;AL # CYPRIOT SYLLABLE RA
+10824;AL # CYPRIOT SYLLABLE RE
+10825;AL # CYPRIOT SYLLABLE RI
+10826;AL # CYPRIOT SYLLABLE RO
+10827;AL # CYPRIOT SYLLABLE RU
+10828;AL # CYPRIOT SYLLABLE SA
+10829;AL # CYPRIOT SYLLABLE SE
+1082A;AL # CYPRIOT SYLLABLE SI
+1082B;AL # CYPRIOT SYLLABLE SO
+1082C;AL # CYPRIOT SYLLABLE SU
+1082D;AL # CYPRIOT SYLLABLE TA
+1082E;AL # CYPRIOT SYLLABLE TE
+1082F;AL # CYPRIOT SYLLABLE TI
+10830;AL # CYPRIOT SYLLABLE TO
+10831;AL # CYPRIOT SYLLABLE TU
+10832;AL # CYPRIOT SYLLABLE WA
+10833;AL # CYPRIOT SYLLABLE WE
+10834;AL # CYPRIOT SYLLABLE WI
+10835;AL # CYPRIOT SYLLABLE WO
+10837;AL # CYPRIOT SYLLABLE XA
+10838;AL # CYPRIOT SYLLABLE XE
+1083C;AL # CYPRIOT SYLLABLE ZA
+1083F;AL # CYPRIOT SYLLABLE ZO
+10900;AL # PHOENICIAN LETTER ALF
+10901;AL # PHOENICIAN LETTER BET
+10902;AL # PHOENICIAN LETTER GAML
+10903;AL # PHOENICIAN LETTER DELT
+10904;AL # PHOENICIAN LETTER HE
+10905;AL # PHOENICIAN LETTER WAU
+10906;AL # PHOENICIAN LETTER ZAI
+10907;AL # PHOENICIAN LETTER HET
+10908;AL # PHOENICIAN LETTER TET
+10909;AL # PHOENICIAN LETTER YOD
+1090A;AL # PHOENICIAN LETTER KAF
+1090B;AL # PHOENICIAN LETTER LAMD
+1090C;AL # PHOENICIAN LETTER MEM
+1090D;AL # PHOENICIAN LETTER NUN
+1090E;AL # PHOENICIAN LETTER SEMK
+1090F;AL # PHOENICIAN LETTER AIN
+10910;AL # PHOENICIAN LETTER PE
+10911;AL # PHOENICIAN LETTER SADE
+10912;AL # PHOENICIAN LETTER QOF
+10913;AL # PHOENICIAN LETTER ROSH
+10914;AL # PHOENICIAN LETTER SHIN
+10915;AL # PHOENICIAN LETTER TAU
+10916;AL # PHOENICIAN NUMBER ONE
+10917;AL # PHOENICIAN NUMBER TEN
+10918;AL # PHOENICIAN NUMBER TWENTY
+10919;AL # PHOENICIAN NUMBER ONE HUNDRED
+1091F;BA # PHOENICIAN WORD SEPARATOR
+10A00;AL # KHAROSHTHI LETTER A
+10A01;CM # KHAROSHTHI VOWEL SIGN I
+10A02;CM # KHAROSHTHI VOWEL SIGN U
+10A03;CM # KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05;CM # KHAROSHTHI VOWEL SIGN E
+10A06;CM # KHAROSHTHI VOWEL SIGN O
+10A0C;CM # KHAROSHTHI VOWEL LENGTH MARK
+10A0D;CM # KHAROSHTHI SIGN DOUBLE RING BELOW
+10A0E;CM # KHAROSHTHI SIGN ANUSVARA
+10A0F;CM # KHAROSHTHI SIGN VISARGA
+10A10;AL # KHAROSHTHI LETTER KA
+10A11;AL # KHAROSHTHI LETTER KHA
+10A12;AL # KHAROSHTHI LETTER GA
+10A13;AL # KHAROSHTHI LETTER GHA
+10A15;AL # KHAROSHTHI LETTER CA
+10A16;AL # KHAROSHTHI LETTER CHA
+10A17;AL # KHAROSHTHI LETTER JA
+10A19;AL # KHAROSHTHI LETTER NYA
+10A1A;AL # KHAROSHTHI LETTER TTA
+10A1B;AL # KHAROSHTHI LETTER TTHA
+10A1C;AL # KHAROSHTHI LETTER DDA
+10A1D;AL # KHAROSHTHI LETTER DDHA
+10A1E;AL # KHAROSHTHI LETTER NNA
+10A1F;AL # KHAROSHTHI LETTER TA
+10A20;AL # KHAROSHTHI LETTER THA
+10A21;AL # KHAROSHTHI LETTER DA
+10A22;AL # KHAROSHTHI LETTER DHA
+10A23;AL # KHAROSHTHI LETTER NA
+10A24;AL # KHAROSHTHI LETTER PA
+10A25;AL # KHAROSHTHI LETTER PHA
+10A26;AL # KHAROSHTHI LETTER BA
+10A27;AL # KHAROSHTHI LETTER BHA
+10A28;AL # KHAROSHTHI LETTER MA
+10A29;AL # KHAROSHTHI LETTER YA
+10A2A;AL # KHAROSHTHI LETTER RA
+10A2B;AL # KHAROSHTHI LETTER LA
+10A2C;AL # KHAROSHTHI LETTER VA
+10A2D;AL # KHAROSHTHI LETTER SHA
+10A2E;AL # KHAROSHTHI LETTER SSA
+10A2F;AL # KHAROSHTHI LETTER SA
+10A30;AL # KHAROSHTHI LETTER ZA
+10A31;AL # KHAROSHTHI LETTER HA
+10A32;AL # KHAROSHTHI LETTER KKA
+10A33;AL # KHAROSHTHI LETTER TTTHA
+10A38;CM # KHAROSHTHI SIGN BAR ABOVE
+10A39;CM # KHAROSHTHI SIGN CAUDA
+10A3A;CM # KHAROSHTHI SIGN DOT BELOW
+10A3F;CM # KHAROSHTHI VIRAMA
+10A40;AL # KHAROSHTHI DIGIT ONE
+10A41;AL # KHAROSHTHI DIGIT TWO
+10A42;AL # KHAROSHTHI DIGIT THREE
+10A43;AL # KHAROSHTHI DIGIT FOUR
+10A44;AL # KHAROSHTHI NUMBER TEN
+10A45;AL # KHAROSHTHI NUMBER TWENTY
+10A46;AL # KHAROSHTHI NUMBER ONE HUNDRED
+10A47;AL # KHAROSHTHI NUMBER ONE THOUSAND
+10A50;BA # KHAROSHTHI PUNCTUATION DOT
+10A51;BA # KHAROSHTHI PUNCTUATION SMALL CIRCLE
+10A52;BA # KHAROSHTHI PUNCTUATION CIRCLE
+10A53;BA # KHAROSHTHI PUNCTUATION CRESCENT BAR
+10A54;BA # KHAROSHTHI PUNCTUATION MANGALAM
+10A55;BA # KHAROSHTHI PUNCTUATION LOTUS
+10A56;BA # KHAROSHTHI PUNCTUATION DANDA
+10A57;BA # KHAROSHTHI PUNCTUATION DOUBLE DANDA
+10A58;AL # KHAROSHTHI PUNCTUATION LINES
+12000;AL # CUNEIFORM SIGN A
+12001;AL # CUNEIFORM SIGN A TIMES A
+12002;AL # CUNEIFORM SIGN A TIMES BAD
+12003;AL # CUNEIFORM SIGN A TIMES GAN2 TENU
+12004;AL # CUNEIFORM SIGN A TIMES HA
+12005;AL # CUNEIFORM SIGN A TIMES IGI
+12006;AL # CUNEIFORM SIGN A TIMES LAGAR GUNU
+12007;AL # CUNEIFORM SIGN A TIMES MUSH
+12008;AL # CUNEIFORM SIGN A TIMES SAG
+12009;AL # CUNEIFORM SIGN A2
+1200A;AL # CUNEIFORM SIGN AB
+1200B;AL # CUNEIFORM SIGN AB TIMES ASH2
+1200C;AL # CUNEIFORM SIGN AB TIMES DUN3 GUNU
+1200D;AL # CUNEIFORM SIGN AB TIMES GAL
+1200E;AL # CUNEIFORM SIGN AB TIMES GAN2 TENU
+1200F;AL # CUNEIFORM SIGN AB TIMES HA
+12010;AL # CUNEIFORM SIGN AB TIMES IGI GUNU
+12011;AL # CUNEIFORM SIGN AB TIMES IMIN
+12012;AL # CUNEIFORM SIGN AB TIMES LAGAB
+12013;AL # CUNEIFORM SIGN AB TIMES SHESH
+12014;AL # CUNEIFORM SIGN AB TIMES U PLUS U PLUS U
+12015;AL # CUNEIFORM SIGN AB GUNU
+12016;AL # CUNEIFORM SIGN AB2
+12017;AL # CUNEIFORM SIGN AB2 TIMES BALAG
+12018;AL # CUNEIFORM SIGN AB2 TIMES GAN2 TENU
+12019;AL # CUNEIFORM SIGN AB2 TIMES ME PLUS EN
+1201A;AL # CUNEIFORM SIGN AB2 TIMES SHA3
+1201B;AL # CUNEIFORM SIGN AB2 TIMES TAK4
+1201C;AL # CUNEIFORM SIGN AD
+1201D;AL # CUNEIFORM SIGN AK
+1201E;AL # CUNEIFORM SIGN AK TIMES ERIN2
+1201F;AL # CUNEIFORM SIGN AK TIMES SHITA PLUS GISH
+12020;AL # CUNEIFORM SIGN AL
+12021;AL # CUNEIFORM SIGN AL TIMES AL
+12022;AL # CUNEIFORM SIGN AL TIMES DIM2
+12023;AL # CUNEIFORM SIGN AL TIMES GISH
+12024;AL # CUNEIFORM SIGN AL TIMES HA
+12025;AL # CUNEIFORM SIGN AL TIMES KAD3
+12026;AL # CUNEIFORM SIGN AL TIMES KI
+12027;AL # CUNEIFORM SIGN AL TIMES SHE
+12028;AL # CUNEIFORM SIGN AL TIMES USH
+12029;AL # CUNEIFORM SIGN ALAN
+1202A;AL # CUNEIFORM SIGN ALEPH
+1202B;AL # CUNEIFORM SIGN AMAR
+1202C;AL # CUNEIFORM SIGN AMAR TIMES SHE
+1202D;AL # CUNEIFORM SIGN AN
+1202E;AL # CUNEIFORM SIGN AN OVER AN
+1202F;AL # CUNEIFORM SIGN AN THREE TIMES
+12030;AL # CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA
+12031;AL # CUNEIFORM SIGN AN PLUS NAGA SQUARED
+12032;AL # CUNEIFORM SIGN ANSHE
+12033;AL # CUNEIFORM SIGN APIN
+12034;AL # CUNEIFORM SIGN ARAD
+12035;AL # CUNEIFORM SIGN ARAD TIMES KUR
+12036;AL # CUNEIFORM SIGN ARKAB
+12037;AL # CUNEIFORM SIGN ASAL2
+12038;AL # CUNEIFORM SIGN ASH
+12039;AL # CUNEIFORM SIGN ASH ZIDA TENU
+1203A;AL # CUNEIFORM SIGN ASH KABA TENU
+1203B;AL # CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP
+1203C;AL # CUNEIFORM SIGN ASH OVER ASH OVER ASH
+1203D;AL # CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH
+1203E;AL # CUNEIFORM SIGN ASH2
+1203F;AL # CUNEIFORM SIGN ASHGAB
+12040;AL # CUNEIFORM SIGN BA
+12041;AL # CUNEIFORM SIGN BAD
+12042;AL # CUNEIFORM SIGN BAG3
+12043;AL # CUNEIFORM SIGN BAHAR2
+12044;AL # CUNEIFORM SIGN BAL
+12045;AL # CUNEIFORM SIGN BAL OVER BAL
+12046;AL # CUNEIFORM SIGN BALAG
+12047;AL # CUNEIFORM SIGN BAR
+12048;AL # CUNEIFORM SIGN BARA2
+12049;AL # CUNEIFORM SIGN BI
+1204A;AL # CUNEIFORM SIGN BI TIMES A
+1204B;AL # CUNEIFORM SIGN BI TIMES GAR
+1204C;AL # CUNEIFORM SIGN BI TIMES IGI GUNU
+1204D;AL # CUNEIFORM SIGN BU
+1204E;AL # CUNEIFORM SIGN BU OVER BU AB
+1204F;AL # CUNEIFORM SIGN BU OVER BU UN
+12050;AL # CUNEIFORM SIGN BU CROSSING BU
+12051;AL # CUNEIFORM SIGN BULUG
+12052;AL # CUNEIFORM SIGN BULUG OVER BULUG
+12053;AL # CUNEIFORM SIGN BUR
+12054;AL # CUNEIFORM SIGN BUR2
+12055;AL # CUNEIFORM SIGN DA
+12056;AL # CUNEIFORM SIGN DAG
+12057;AL # CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH
+12058;AL # CUNEIFORM SIGN DAG KISIM5 TIMES AMAR
+12059;AL # CUNEIFORM SIGN DAG KISIM5 TIMES BALAG
+1205A;AL # CUNEIFORM SIGN DAG KISIM5 TIMES BI
+1205B;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GA
+1205C;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH
+1205D;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GI
+1205E;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GIR2
+1205F;AL # CUNEIFORM SIGN DAG KISIM5 TIMES GUD
+12060;AL # CUNEIFORM SIGN DAG KISIM5 TIMES HA
+12061;AL # CUNEIFORM SIGN DAG KISIM5 TIMES IR
+12062;AL # CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU
+12063;AL # CUNEIFORM SIGN DAG KISIM5 TIMES KAK
+12064;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LA
+12065;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LU
+12066;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2
+12067;AL # CUNEIFORM SIGN DAG KISIM5 TIMES LUM
+12068;AL # CUNEIFORM SIGN DAG KISIM5 TIMES NE
+12069;AL # CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP
+1206A;AL # CUNEIFORM SIGN DAG KISIM5 TIMES SI
+1206B;AL # CUNEIFORM SIGN DAG KISIM5 TIMES TAK4
+1206C;AL # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2
+1206D;AL # CUNEIFORM SIGN DAG KISIM5 TIMES USH
+1206E;AL # CUNEIFORM SIGN DAM
+1206F;AL # CUNEIFORM SIGN DAR
+12070;AL # CUNEIFORM SIGN DARA3
+12071;AL # CUNEIFORM SIGN DARA4
+12072;AL # CUNEIFORM SIGN DI
+12073;AL # CUNEIFORM SIGN DIB
+12074;AL # CUNEIFORM SIGN DIM
+12075;AL # CUNEIFORM SIGN DIM TIMES SHE
+12076;AL # CUNEIFORM SIGN DIM2
+12077;AL # CUNEIFORM SIGN DIN
+12078;AL # CUNEIFORM SIGN DIN KASKAL U GUNU DISH
+12079;AL # CUNEIFORM SIGN DISH
+1207A;AL # CUNEIFORM SIGN DU
+1207B;AL # CUNEIFORM SIGN DU OVER DU
+1207C;AL # CUNEIFORM SIGN DU GUNU
+1207D;AL # CUNEIFORM SIGN DU SHESHIG
+1207E;AL # CUNEIFORM SIGN DUB
+1207F;AL # CUNEIFORM SIGN DUB TIMES ESH2
+12080;AL # CUNEIFORM SIGN DUB2
+12081;AL # CUNEIFORM SIGN DUG
+12082;AL # CUNEIFORM SIGN DUGUD
+12083;AL # CUNEIFORM SIGN DUH
+12084;AL # CUNEIFORM SIGN DUN
+12085;AL # CUNEIFORM SIGN DUN3
+12086;AL # CUNEIFORM SIGN DUN3 GUNU
+12087;AL # CUNEIFORM SIGN DUN3 GUNU GUNU
+12088;AL # CUNEIFORM SIGN DUN4
+12089;AL # CUNEIFORM SIGN DUR2
+1208A;AL # CUNEIFORM SIGN E
+1208B;AL # CUNEIFORM SIGN E TIMES PAP
+1208C;AL # CUNEIFORM SIGN E OVER E NUN OVER NUN
+1208D;AL # CUNEIFORM SIGN E2
+1208E;AL # CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA
+1208F;AL # CUNEIFORM SIGN E2 TIMES GAR
+12090;AL # CUNEIFORM SIGN E2 TIMES MI
+12091;AL # CUNEIFORM SIGN E2 TIMES SAL
+12092;AL # CUNEIFORM SIGN E2 TIMES SHE
+12093;AL # CUNEIFORM SIGN E2 TIMES U
+12094;AL # CUNEIFORM SIGN EDIN
+12095;AL # CUNEIFORM SIGN EGIR
+12096;AL # CUNEIFORM SIGN EL
+12097;AL # CUNEIFORM SIGN EN
+12098;AL # CUNEIFORM SIGN EN TIMES GAN2
+12099;AL # CUNEIFORM SIGN EN TIMES GAN2 TENU
+1209A;AL # CUNEIFORM SIGN EN TIMES ME
+1209B;AL # CUNEIFORM SIGN EN CROSSING EN
+1209C;AL # CUNEIFORM SIGN EN OPPOSING EN
+1209D;AL # CUNEIFORM SIGN EN SQUARED
+1209E;AL # CUNEIFORM SIGN EREN
+1209F;AL # CUNEIFORM SIGN ERIN2
+120A0;AL # CUNEIFORM SIGN ESH2
+120A1;AL # CUNEIFORM SIGN EZEN
+120A2;AL # CUNEIFORM SIGN EZEN TIMES A
+120A3;AL # CUNEIFORM SIGN EZEN TIMES A PLUS LAL
+120A4;AL # CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL
+120A5;AL # CUNEIFORM SIGN EZEN TIMES AN
+120A6;AL # CUNEIFORM SIGN EZEN TIMES BAD
+120A7;AL # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU
+120A8;AL # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU
+120A9;AL # CUNEIFORM SIGN EZEN TIMES HA
+120AA;AL # CUNEIFORM SIGN EZEN TIMES HA GUNU
+120AB;AL # CUNEIFORM SIGN EZEN TIMES IGI GUNU
+120AC;AL # CUNEIFORM SIGN EZEN TIMES KASKAL
+120AD;AL # CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED
+120AE;AL # CUNEIFORM SIGN EZEN TIMES KU3
+120AF;AL # CUNEIFORM SIGN EZEN TIMES LA
+120B0;AL # CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL
+120B1;AL # CUNEIFORM SIGN EZEN TIMES LI
+120B2;AL # CUNEIFORM SIGN EZEN TIMES LU
+120B3;AL # CUNEIFORM SIGN EZEN TIMES U2
+120B4;AL # CUNEIFORM SIGN EZEN TIMES UD
+120B5;AL # CUNEIFORM SIGN GA
+120B6;AL # CUNEIFORM SIGN GA GUNU
+120B7;AL # CUNEIFORM SIGN GA2
+120B8;AL # CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA
+120B9;AL # CUNEIFORM SIGN GA2 TIMES A PLUS HA
+120BA;AL # CUNEIFORM SIGN GA2 TIMES A PLUS IGI
+120BB;AL # CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB
+120BC;AL # CUNEIFORM SIGN GA2 TIMES AN
+120BD;AL # CUNEIFORM SIGN GA2 TIMES ASH
+120BE;AL # CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL
+120BF;AL # CUNEIFORM SIGN GA2 TIMES BAD
+120C0;AL # CUNEIFORM SIGN GA2 TIMES BAR PLUS RA
+120C1;AL # CUNEIFORM SIGN GA2 TIMES BUR
+120C2;AL # CUNEIFORM SIGN GA2 TIMES BUR PLUS RA
+120C3;AL # CUNEIFORM SIGN GA2 TIMES DA
+120C4;AL # CUNEIFORM SIGN GA2 TIMES DI
+120C5;AL # CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE
+120C6;AL # CUNEIFORM SIGN GA2 TIMES DUB
+120C7;AL # CUNEIFORM SIGN GA2 TIMES EL
+120C8;AL # CUNEIFORM SIGN GA2 TIMES EL PLUS LA
+120C9;AL # CUNEIFORM SIGN GA2 TIMES EN
+120CA;AL # CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU
+120CB;AL # CUNEIFORM SIGN GA2 TIMES GAN2 TENU
+120CC;AL # CUNEIFORM SIGN GA2 TIMES GAR
+120CD;AL # CUNEIFORM SIGN GA2 TIMES GI
+120CE;AL # CUNEIFORM SIGN GA2 TIMES GI4
+120CF;AL # CUNEIFORM SIGN GA2 TIMES GI4 PLUS A
+120D0;AL # CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU
+120D1;AL # CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2
+120D2;AL # CUNEIFORM SIGN GA2 TIMES HAL
+120D3;AL # CUNEIFORM SIGN GA2 TIMES HAL PLUS LA
+120D4;AL # CUNEIFORM SIGN GA2 TIMES HI PLUS LI
+120D5;AL # CUNEIFORM SIGN GA2 TIMES HUB2
+120D6;AL # CUNEIFORM SIGN GA2 TIMES IGI GUNU
+120D7;AL # CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH
+120D8;AL # CUNEIFORM SIGN GA2 TIMES KAK
+120D9;AL # CUNEIFORM SIGN GA2 TIMES KASKAL
+120DA;AL # CUNEIFORM SIGN GA2 TIMES KID
+120DB;AL # CUNEIFORM SIGN GA2 TIMES KID PLUS LAL
+120DC;AL # CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN
+120DD;AL # CUNEIFORM SIGN GA2 TIMES LA
+120DE;AL # CUNEIFORM SIGN GA2 TIMES ME PLUS EN
+120DF;AL # CUNEIFORM SIGN GA2 TIMES MI
+120E0;AL # CUNEIFORM SIGN GA2 TIMES NUN
+120E1;AL # CUNEIFORM SIGN GA2 TIMES NUN OVER NUN
+120E2;AL # CUNEIFORM SIGN GA2 TIMES PA
+120E3;AL # CUNEIFORM SIGN GA2 TIMES SAL
+120E4;AL # CUNEIFORM SIGN GA2 TIMES SAR
+120E5;AL # CUNEIFORM SIGN GA2 TIMES SHE
+120E6;AL # CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR
+120E7;AL # CUNEIFORM SIGN GA2 TIMES SHID
+120E8;AL # CUNEIFORM SIGN GA2 TIMES SUM
+120E9;AL # CUNEIFORM SIGN GA2 TIMES TAK4
+120EA;AL # CUNEIFORM SIGN GA2 TIMES U
+120EB;AL # CUNEIFORM SIGN GA2 TIMES UD
+120EC;AL # CUNEIFORM SIGN GA2 TIMES UD PLUS DU
+120ED;AL # CUNEIFORM SIGN GA2 OVER GA2
+120EE;AL # CUNEIFORM SIGN GABA
+120EF;AL # CUNEIFORM SIGN GABA CROSSING GABA
+120F0;AL # CUNEIFORM SIGN GAD
+120F1;AL # CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR
+120F2;AL # CUNEIFORM SIGN GAL
+120F3;AL # CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR
+120F4;AL # CUNEIFORM SIGN GALAM
+120F5;AL # CUNEIFORM SIGN GAM
+120F6;AL # CUNEIFORM SIGN GAN
+120F7;AL # CUNEIFORM SIGN GAN2
+120F8;AL # CUNEIFORM SIGN GAN2 TENU
+120F9;AL # CUNEIFORM SIGN GAN2 OVER GAN2
+120FA;AL # CUNEIFORM SIGN GAN2 CROSSING GAN2
+120FB;AL # CUNEIFORM SIGN GAR
+120FC;AL # CUNEIFORM SIGN GAR3
+120FD;AL # CUNEIFORM SIGN GASHAN
+120FE;AL # CUNEIFORM SIGN GESHTIN
+120FF;AL # CUNEIFORM SIGN GESHTIN TIMES KUR
+12100;AL # CUNEIFORM SIGN GI
+12101;AL # CUNEIFORM SIGN GI TIMES E
+12102;AL # CUNEIFORM SIGN GI TIMES U
+12103;AL # CUNEIFORM SIGN GI CROSSING GI
+12104;AL # CUNEIFORM SIGN GI4
+12105;AL # CUNEIFORM SIGN GI4 OVER GI4
+12106;AL # CUNEIFORM SIGN GI4 CROSSING GI4
+12107;AL # CUNEIFORM SIGN GIDIM
+12108;AL # CUNEIFORM SIGN GIR2
+12109;AL # CUNEIFORM SIGN GIR2 GUNU
+1210A;AL # CUNEIFORM SIGN GIR3
+1210B;AL # CUNEIFORM SIGN GIR3 TIMES A PLUS IGI
+1210C;AL # CUNEIFORM SIGN GIR3 TIMES GAN2 TENU
+1210D;AL # CUNEIFORM SIGN GIR3 TIMES IGI
+1210E;AL # CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI
+1210F;AL # CUNEIFORM SIGN GIR3 TIMES PA
+12110;AL # CUNEIFORM SIGN GISAL
+12111;AL # CUNEIFORM SIGN GISH
+12112;AL # CUNEIFORM SIGN GISH CROSSING GISH
+12113;AL # CUNEIFORM SIGN GISH TIMES BAD
+12114;AL # CUNEIFORM SIGN GISH TIMES TAK4
+12115;AL # CUNEIFORM SIGN GISH TENU
+12116;AL # CUNEIFORM SIGN GU
+12117;AL # CUNEIFORM SIGN GU CROSSING GU
+12118;AL # CUNEIFORM SIGN GU2
+12119;AL # CUNEIFORM SIGN GU2 TIMES KAK
+1211A;AL # CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU
+1211B;AL # CUNEIFORM SIGN GU2 TIMES NUN
+1211C;AL # CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2
+1211D;AL # CUNEIFORM SIGN GU2 GUNU
+1211E;AL # CUNEIFORM SIGN GUD
+1211F;AL # CUNEIFORM SIGN GUD TIMES A PLUS KUR
+12120;AL # CUNEIFORM SIGN GUD TIMES KUR
+12121;AL # CUNEIFORM SIGN GUD OVER GUD LUGAL
+12122;AL # CUNEIFORM SIGN GUL
+12123;AL # CUNEIFORM SIGN GUM
+12124;AL # CUNEIFORM SIGN GUM TIMES SHE
+12125;AL # CUNEIFORM SIGN GUR
+12126;AL # CUNEIFORM SIGN GUR7
+12127;AL # CUNEIFORM SIGN GURUN
+12128;AL # CUNEIFORM SIGN GURUSH
+12129;AL # CUNEIFORM SIGN HA
+1212A;AL # CUNEIFORM SIGN HA TENU
+1212B;AL # CUNEIFORM SIGN HA GUNU
+1212C;AL # CUNEIFORM SIGN HAL
+1212D;AL # CUNEIFORM SIGN HI
+1212E;AL # CUNEIFORM SIGN HI TIMES ASH
+1212F;AL # CUNEIFORM SIGN HI TIMES ASH2
+12130;AL # CUNEIFORM SIGN HI TIMES BAD
+12131;AL # CUNEIFORM SIGN HI TIMES DISH
+12132;AL # CUNEIFORM SIGN HI TIMES GAD
+12133;AL # CUNEIFORM SIGN HI TIMES KIN
+12134;AL # CUNEIFORM SIGN HI TIMES NUN
+12135;AL # CUNEIFORM SIGN HI TIMES SHE
+12136;AL # CUNEIFORM SIGN HI TIMES U
+12137;AL # CUNEIFORM SIGN HU
+12138;AL # CUNEIFORM SIGN HUB2
+12139;AL # CUNEIFORM SIGN HUB2 TIMES AN
+1213A;AL # CUNEIFORM SIGN HUB2 TIMES HAL
+1213B;AL # CUNEIFORM SIGN HUB2 TIMES KASKAL
+1213C;AL # CUNEIFORM SIGN HUB2 TIMES LISH
+1213D;AL # CUNEIFORM SIGN HUB2 TIMES UD
+1213E;AL # CUNEIFORM SIGN HUL2
+1213F;AL # CUNEIFORM SIGN I
+12140;AL # CUNEIFORM SIGN I A
+12141;AL # CUNEIFORM SIGN IB
+12142;AL # CUNEIFORM SIGN IDIM
+12143;AL # CUNEIFORM SIGN IDIM OVER IDIM BUR
+12144;AL # CUNEIFORM SIGN IDIM OVER IDIM SQUARED
+12145;AL # CUNEIFORM SIGN IG
+12146;AL # CUNEIFORM SIGN IGI
+12147;AL # CUNEIFORM SIGN IGI DIB
+12148;AL # CUNEIFORM SIGN IGI RI
+12149;AL # CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD
+1214A;AL # CUNEIFORM SIGN IGI GUNU
+1214B;AL # CUNEIFORM SIGN IL
+1214C;AL # CUNEIFORM SIGN IL TIMES GAN2 TENU
+1214D;AL # CUNEIFORM SIGN IL2
+1214E;AL # CUNEIFORM SIGN IM
+1214F;AL # CUNEIFORM SIGN IM TIMES TAK4
+12150;AL # CUNEIFORM SIGN IM CROSSING IM
+12151;AL # CUNEIFORM SIGN IM OPPOSING IM
+12152;AL # CUNEIFORM SIGN IM SQUARED
+12153;AL # CUNEIFORM SIGN IMIN
+12154;AL # CUNEIFORM SIGN IN
+12155;AL # CUNEIFORM SIGN IR
+12156;AL # CUNEIFORM SIGN ISH
+12157;AL # CUNEIFORM SIGN KA
+12158;AL # CUNEIFORM SIGN KA TIMES A
+12159;AL # CUNEIFORM SIGN KA TIMES AD
+1215A;AL # CUNEIFORM SIGN KA TIMES AD PLUS KU3
+1215B;AL # CUNEIFORM SIGN KA TIMES ASH2
+1215C;AL # CUNEIFORM SIGN KA TIMES BAD
+1215D;AL # CUNEIFORM SIGN KA TIMES BALAG
+1215E;AL # CUNEIFORM SIGN KA TIMES BAR
+1215F;AL # CUNEIFORM SIGN KA TIMES BI
+12160;AL # CUNEIFORM SIGN KA TIMES ERIN2
+12161;AL # CUNEIFORM SIGN KA TIMES ESH2
+12162;AL # CUNEIFORM SIGN KA TIMES GA
+12163;AL # CUNEIFORM SIGN KA TIMES GAL
+12164;AL # CUNEIFORM SIGN KA TIMES GAN2 TENU
+12165;AL # CUNEIFORM SIGN KA TIMES GAR
+12166;AL # CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A
+12167;AL # CUNEIFORM SIGN KA TIMES GI
+12168;AL # CUNEIFORM SIGN KA TIMES GIR2
+12169;AL # CUNEIFORM SIGN KA TIMES GISH PLUS SAR
+1216A;AL # CUNEIFORM SIGN KA TIMES GISH CROSSING GISH
+1216B;AL # CUNEIFORM SIGN KA TIMES GU
+1216C;AL # CUNEIFORM SIGN KA TIMES GUR7
+1216D;AL # CUNEIFORM SIGN KA TIMES IGI
+1216E;AL # CUNEIFORM SIGN KA TIMES IM
+1216F;AL # CUNEIFORM SIGN KA TIMES KAK
+12170;AL # CUNEIFORM SIGN KA TIMES KI
+12171;AL # CUNEIFORM SIGN KA TIMES KID
+12172;AL # CUNEIFORM SIGN KA TIMES LI
+12173;AL # CUNEIFORM SIGN KA TIMES LU
+12174;AL # CUNEIFORM SIGN KA TIMES ME
+12175;AL # CUNEIFORM SIGN KA TIMES ME PLUS DU
+12176;AL # CUNEIFORM SIGN KA TIMES ME PLUS GI
+12177;AL # CUNEIFORM SIGN KA TIMES ME PLUS TE
+12178;AL # CUNEIFORM SIGN KA TIMES MI
+12179;AL # CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ
+1217A;AL # CUNEIFORM SIGN KA TIMES NE
+1217B;AL # CUNEIFORM SIGN KA TIMES NUN
+1217C;AL # CUNEIFORM SIGN KA TIMES PI
+1217D;AL # CUNEIFORM SIGN KA TIMES RU
+1217E;AL # CUNEIFORM SIGN KA TIMES SA
+1217F;AL # CUNEIFORM SIGN KA TIMES SAR
+12180;AL # CUNEIFORM SIGN KA TIMES SHA
+12181;AL # CUNEIFORM SIGN KA TIMES SHE
+12182;AL # CUNEIFORM SIGN KA TIMES SHID
+12183;AL # CUNEIFORM SIGN KA TIMES SHU
+12184;AL # CUNEIFORM SIGN KA TIMES SIG
+12185;AL # CUNEIFORM SIGN KA TIMES SUHUR
+12186;AL # CUNEIFORM SIGN KA TIMES TAR
+12187;AL # CUNEIFORM SIGN KA TIMES U
+12188;AL # CUNEIFORM SIGN KA TIMES U2
+12189;AL # CUNEIFORM SIGN KA TIMES UD
+1218A;AL # CUNEIFORM SIGN KA TIMES UMUM TIMES PA
+1218B;AL # CUNEIFORM SIGN KA TIMES USH
+1218C;AL # CUNEIFORM SIGN KA TIMES ZI
+1218D;AL # CUNEIFORM SIGN KA2
+1218E;AL # CUNEIFORM SIGN KA2 CROSSING KA2
+1218F;AL # CUNEIFORM SIGN KAB
+12190;AL # CUNEIFORM SIGN KAD2
+12191;AL # CUNEIFORM SIGN KAD3
+12192;AL # CUNEIFORM SIGN KAD4
+12193;AL # CUNEIFORM SIGN KAD5
+12194;AL # CUNEIFORM SIGN KAD5 OVER KAD5
+12195;AL # CUNEIFORM SIGN KAK
+12196;AL # CUNEIFORM SIGN KAK TIMES IGI GUNU
+12197;AL # CUNEIFORM SIGN KAL
+12198;AL # CUNEIFORM SIGN KAL TIMES BAD
+12199;AL # CUNEIFORM SIGN KAL CROSSING KAL
+1219A;AL # CUNEIFORM SIGN KAM2
+1219B;AL # CUNEIFORM SIGN KAM4
+1219C;AL # CUNEIFORM SIGN KASKAL
+1219D;AL # CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U
+1219E;AL # CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U
+1219F;AL # CUNEIFORM SIGN KESH2
+121A0;AL # CUNEIFORM SIGN KI
+121A1;AL # CUNEIFORM SIGN KI TIMES BAD
+121A2;AL # CUNEIFORM SIGN KI TIMES U
+121A3;AL # CUNEIFORM SIGN KI TIMES UD
+121A4;AL # CUNEIFORM SIGN KID
+121A5;AL # CUNEIFORM SIGN KIN
+121A6;AL # CUNEIFORM SIGN KISAL
+121A7;AL # CUNEIFORM SIGN KISH
+121A8;AL # CUNEIFORM SIGN KISIM5
+121A9;AL # CUNEIFORM SIGN KISIM5 OVER KISIM5
+121AA;AL # CUNEIFORM SIGN KU
+121AB;AL # CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2
+121AC;AL # CUNEIFORM SIGN KU3
+121AD;AL # CUNEIFORM SIGN KU4
+121AE;AL # CUNEIFORM SIGN KU4 VARIANT FORM
+121AF;AL # CUNEIFORM SIGN KU7
+121B0;AL # CUNEIFORM SIGN KUL
+121B1;AL # CUNEIFORM SIGN KUL GUNU
+121B2;AL # CUNEIFORM SIGN KUN
+121B3;AL # CUNEIFORM SIGN KUR
+121B4;AL # CUNEIFORM SIGN KUR OPPOSING KUR
+121B5;AL # CUNEIFORM SIGN KUSHU2
+121B6;AL # CUNEIFORM SIGN KWU318
+121B7;AL # CUNEIFORM SIGN LA
+121B8;AL # CUNEIFORM SIGN LAGAB
+121B9;AL # CUNEIFORM SIGN LAGAB TIMES A
+121BA;AL # CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA
+121BB;AL # CUNEIFORM SIGN LAGAB TIMES A PLUS GAR
+121BC;AL # CUNEIFORM SIGN LAGAB TIMES A PLUS LAL
+121BD;AL # CUNEIFORM SIGN LAGAB TIMES AL
+121BE;AL # CUNEIFORM SIGN LAGAB TIMES AN
+121BF;AL # CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU
+121C0;AL # CUNEIFORM SIGN LAGAB TIMES BAD
+121C1;AL # CUNEIFORM SIGN LAGAB TIMES BI
+121C2;AL # CUNEIFORM SIGN LAGAB TIMES DAR
+121C3;AL # CUNEIFORM SIGN LAGAB TIMES EN
+121C4;AL # CUNEIFORM SIGN LAGAB TIMES GA
+121C5;AL # CUNEIFORM SIGN LAGAB TIMES GAR
+121C6;AL # CUNEIFORM SIGN LAGAB TIMES GUD
+121C7;AL # CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD
+121C8;AL # CUNEIFORM SIGN LAGAB TIMES HA
+121C9;AL # CUNEIFORM SIGN LAGAB TIMES HAL
+121CA;AL # CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN
+121CB;AL # CUNEIFORM SIGN LAGAB TIMES IGI GUNU
+121CC;AL # CUNEIFORM SIGN LAGAB TIMES IM
+121CD;AL # CUNEIFORM SIGN LAGAB TIMES IM PLUS HA
+121CE;AL # CUNEIFORM SIGN LAGAB TIMES IM PLUS LU
+121CF;AL # CUNEIFORM SIGN LAGAB TIMES KI
+121D0;AL # CUNEIFORM SIGN LAGAB TIMES KIN
+121D1;AL # CUNEIFORM SIGN LAGAB TIMES KU3
+121D2;AL # CUNEIFORM SIGN LAGAB TIMES KUL
+121D3;AL # CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A
+121D4;AL # CUNEIFORM SIGN LAGAB TIMES LAGAB
+121D5;AL # CUNEIFORM SIGN LAGAB TIMES LISH
+121D6;AL # CUNEIFORM SIGN LAGAB TIMES LU
+121D7;AL # CUNEIFORM SIGN LAGAB TIMES LUL
+121D8;AL # CUNEIFORM SIGN LAGAB TIMES ME
+121D9;AL # CUNEIFORM SIGN LAGAB TIMES ME PLUS EN
+121DA;AL # CUNEIFORM SIGN LAGAB TIMES MUSH
+121DB;AL # CUNEIFORM SIGN LAGAB TIMES NE
+121DC;AL # CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM
+121DD;AL # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2
+121DE;AL # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU
+121DF;AL # CUNEIFORM SIGN LAGAB TIMES SHU2
+121E0;AL # CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2
+121E1;AL # CUNEIFORM SIGN LAGAB TIMES SUM
+121E2;AL # CUNEIFORM SIGN LAGAB TIMES TAG
+121E3;AL # CUNEIFORM SIGN LAGAB TIMES TAK4
+121E4;AL # CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA
+121E5;AL # CUNEIFORM SIGN LAGAB TIMES U
+121E6;AL # CUNEIFORM SIGN LAGAB TIMES U PLUS A
+121E7;AL # CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U
+121E8;AL # CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH
+121E9;AL # CUNEIFORM SIGN LAGAB TIMES UD
+121EA;AL # CUNEIFORM SIGN LAGAB TIMES USH
+121EB;AL # CUNEIFORM SIGN LAGAB SQUARED
+121EC;AL # CUNEIFORM SIGN LAGAR
+121ED;AL # CUNEIFORM SIGN LAGAR TIMES SHE
+121EE;AL # CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM
+121EF;AL # CUNEIFORM SIGN LAGAR GUNU
+121F0;AL # CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE
+121F1;AL # CUNEIFORM SIGN LAHSHU
+121F2;AL # CUNEIFORM SIGN LAL
+121F3;AL # CUNEIFORM SIGN LAL TIMES LAL
+121F4;AL # CUNEIFORM SIGN LAM
+121F5;AL # CUNEIFORM SIGN LAM TIMES KUR
+121F6;AL # CUNEIFORM SIGN LAM TIMES KUR PLUS RU
+121F7;AL # CUNEIFORM SIGN LI
+121F8;AL # CUNEIFORM SIGN LIL
+121F9;AL # CUNEIFORM SIGN LIMMU2
+121FA;AL # CUNEIFORM SIGN LISH
+121FB;AL # CUNEIFORM SIGN LU
+121FC;AL # CUNEIFORM SIGN LU TIMES BAD
+121FD;AL # CUNEIFORM SIGN LU2
+121FE;AL # CUNEIFORM SIGN LU2 TIMES AL
+121FF;AL # CUNEIFORM SIGN LU2 TIMES BAD
+12200;AL # CUNEIFORM SIGN LU2 TIMES ESH2
+12201;AL # CUNEIFORM SIGN LU2 TIMES ESH2 TENU
+12202;AL # CUNEIFORM SIGN LU2 TIMES GAN2 TENU
+12203;AL # CUNEIFORM SIGN LU2 TIMES HI TIMES BAD
+12204;AL # CUNEIFORM SIGN LU2 TIMES IM
+12205;AL # CUNEIFORM SIGN LU2 TIMES KAD2
+12206;AL # CUNEIFORM SIGN LU2 TIMES KAD3
+12207;AL # CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH
+12208;AL # CUNEIFORM SIGN LU2 TIMES KI
+12209;AL # CUNEIFORM SIGN LU2 TIMES LA PLUS ASH
+1220A;AL # CUNEIFORM SIGN LU2 TIMES LAGAB
+1220B;AL # CUNEIFORM SIGN LU2 TIMES ME PLUS EN
+1220C;AL # CUNEIFORM SIGN LU2 TIMES NE
+1220D;AL # CUNEIFORM SIGN LU2 TIMES NU
+1220E;AL # CUNEIFORM SIGN LU2 TIMES SI PLUS ASH
+1220F;AL # CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU
+12210;AL # CUNEIFORM SIGN LU2 TIMES TUG2
+12211;AL # CUNEIFORM SIGN LU2 TENU
+12212;AL # CUNEIFORM SIGN LU2 CROSSING LU2
+12213;AL # CUNEIFORM SIGN LU2 OPPOSING LU2
+12214;AL # CUNEIFORM SIGN LU2 SQUARED
+12215;AL # CUNEIFORM SIGN LU2 SHESHIG
+12216;AL # CUNEIFORM SIGN LU3
+12217;AL # CUNEIFORM SIGN LUGAL
+12218;AL # CUNEIFORM SIGN LUGAL OVER LUGAL
+12219;AL # CUNEIFORM SIGN LUGAL OPPOSING LUGAL
+1221A;AL # CUNEIFORM SIGN LUGAL SHESHIG
+1221B;AL # CUNEIFORM SIGN LUH
+1221C;AL # CUNEIFORM SIGN LUL
+1221D;AL # CUNEIFORM SIGN LUM
+1221E;AL # CUNEIFORM SIGN LUM OVER LUM
+1221F;AL # CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR
+12220;AL # CUNEIFORM SIGN MA
+12221;AL # CUNEIFORM SIGN MA TIMES TAK4
+12222;AL # CUNEIFORM SIGN MA GUNU
+12223;AL # CUNEIFORM SIGN MA2
+12224;AL # CUNEIFORM SIGN MAH
+12225;AL # CUNEIFORM SIGN MAR
+12226;AL # CUNEIFORM SIGN MASH
+12227;AL # CUNEIFORM SIGN MASH2
+12228;AL # CUNEIFORM SIGN ME
+12229;AL # CUNEIFORM SIGN MES
+1222A;AL # CUNEIFORM SIGN MI
+1222B;AL # CUNEIFORM SIGN MIN
+1222C;AL # CUNEIFORM SIGN MU
+1222D;AL # CUNEIFORM SIGN MU OVER MU
+1222E;AL # CUNEIFORM SIGN MUG
+1222F;AL # CUNEIFORM SIGN MUG GUNU
+12230;AL # CUNEIFORM SIGN MUNSUB
+12231;AL # CUNEIFORM SIGN MURGU2
+12232;AL # CUNEIFORM SIGN MUSH
+12233;AL # CUNEIFORM SIGN MUSH TIMES A
+12234;AL # CUNEIFORM SIGN MUSH TIMES KUR
+12235;AL # CUNEIFORM SIGN MUSH TIMES ZA
+12236;AL # CUNEIFORM SIGN MUSH OVER MUSH
+12237;AL # CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA
+12238;AL # CUNEIFORM SIGN MUSH CROSSING MUSH
+12239;AL # CUNEIFORM SIGN MUSH3
+1223A;AL # CUNEIFORM SIGN MUSH3 TIMES A
+1223B;AL # CUNEIFORM SIGN MUSH3 TIMES A PLUS DI
+1223C;AL # CUNEIFORM SIGN MUSH3 TIMES DI
+1223D;AL # CUNEIFORM SIGN MUSH3 GUNU
+1223E;AL # CUNEIFORM SIGN NA
+1223F;AL # CUNEIFORM SIGN NA2
+12240;AL # CUNEIFORM SIGN NAGA
+12241;AL # CUNEIFORM SIGN NAGA INVERTED
+12242;AL # CUNEIFORM SIGN NAGA TIMES SHU TENU
+12243;AL # CUNEIFORM SIGN NAGA OPPOSING NAGA
+12244;AL # CUNEIFORM SIGN NAGAR
+12245;AL # CUNEIFORM SIGN NAM NUTILLU
+12246;AL # CUNEIFORM SIGN NAM
+12247;AL # CUNEIFORM SIGN NAM2
+12248;AL # CUNEIFORM SIGN NE
+12249;AL # CUNEIFORM SIGN NE TIMES A
+1224A;AL # CUNEIFORM SIGN NE TIMES UD
+1224B;AL # CUNEIFORM SIGN NE SHESHIG
+1224C;AL # CUNEIFORM SIGN NI
+1224D;AL # CUNEIFORM SIGN NI TIMES E
+1224E;AL # CUNEIFORM SIGN NI2
+1224F;AL # CUNEIFORM SIGN NIM
+12250;AL # CUNEIFORM SIGN NIM TIMES GAN2 TENU
+12251;AL # CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU
+12252;AL # CUNEIFORM SIGN NINDA2
+12253;AL # CUNEIFORM SIGN NINDA2 TIMES AN
+12254;AL # CUNEIFORM SIGN NINDA2 TIMES ASH
+12255;AL # CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH
+12256;AL # CUNEIFORM SIGN NINDA2 TIMES GUD
+12257;AL # CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU
+12258;AL # CUNEIFORM SIGN NINDA2 TIMES NE
+12259;AL # CUNEIFORM SIGN NINDA2 TIMES NUN
+1225A;AL # CUNEIFORM SIGN NINDA2 TIMES SHE
+1225B;AL # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN
+1225C;AL # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH
+1225D;AL # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH
+1225E;AL # CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH
+1225F;AL # CUNEIFORM SIGN NINDA2 TIMES USH
+12260;AL # CUNEIFORM SIGN NISAG
+12261;AL # CUNEIFORM SIGN NU
+12262;AL # CUNEIFORM SIGN NU11
+12263;AL # CUNEIFORM SIGN NUN
+12264;AL # CUNEIFORM SIGN NUN LAGAR TIMES GAR
+12265;AL # CUNEIFORM SIGN NUN LAGAR TIMES MASH
+12266;AL # CUNEIFORM SIGN NUN LAGAR TIMES SAL
+12267;AL # CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL
+12268;AL # CUNEIFORM SIGN NUN LAGAR TIMES USH
+12269;AL # CUNEIFORM SIGN NUN TENU
+1226A;AL # CUNEIFORM SIGN NUN OVER NUN
+1226B;AL # CUNEIFORM SIGN NUN CROSSING NUN
+1226C;AL # CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR
+1226D;AL # CUNEIFORM SIGN NUNUZ
+1226E;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB
+1226F;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES BI
+12270;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES DUG
+12271;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES GUD
+12272;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU
+12273;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3
+12274;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES LA
+12275;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES NE
+12276;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3
+12277;AL # CUNEIFORM SIGN NUNUZ AB2 TIMES U2
+12278;AL # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI
+12279;AL # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U
+1227A;AL # CUNEIFORM SIGN PA
+1227B;AL # CUNEIFORM SIGN PAD
+1227C;AL # CUNEIFORM SIGN PAN
+1227D;AL # CUNEIFORM SIGN PAP
+1227E;AL # CUNEIFORM SIGN PESH2
+1227F;AL # CUNEIFORM SIGN PI
+12280;AL # CUNEIFORM SIGN PI TIMES A
+12281;AL # CUNEIFORM SIGN PI TIMES AB
+12282;AL # CUNEIFORM SIGN PI TIMES BI
+12283;AL # CUNEIFORM SIGN PI TIMES BU
+12284;AL # CUNEIFORM SIGN PI TIMES E
+12285;AL # CUNEIFORM SIGN PI TIMES I
+12286;AL # CUNEIFORM SIGN PI TIMES IB
+12287;AL # CUNEIFORM SIGN PI TIMES U
+12288;AL # CUNEIFORM SIGN PI TIMES U2
+12289;AL # CUNEIFORM SIGN PI CROSSING PI
+1228A;AL # CUNEIFORM SIGN PIRIG
+1228B;AL # CUNEIFORM SIGN PIRIG TIMES KAL
+1228C;AL # CUNEIFORM SIGN PIRIG TIMES UD
+1228D;AL # CUNEIFORM SIGN PIRIG TIMES ZA
+1228E;AL # CUNEIFORM SIGN PIRIG OPPOSING PIRIG
+1228F;AL # CUNEIFORM SIGN RA
+12290;AL # CUNEIFORM SIGN RAB
+12291;AL # CUNEIFORM SIGN RI
+12292;AL # CUNEIFORM SIGN RU
+12293;AL # CUNEIFORM SIGN SA
+12294;AL # CUNEIFORM SIGN SAG NUTILLU
+12295;AL # CUNEIFORM SIGN SAG
+12296;AL # CUNEIFORM SIGN SAG TIMES A
+12297;AL # CUNEIFORM SIGN SAG TIMES DU
+12298;AL # CUNEIFORM SIGN SAG TIMES DUB
+12299;AL # CUNEIFORM SIGN SAG TIMES HA
+1229A;AL # CUNEIFORM SIGN SAG TIMES KAK
+1229B;AL # CUNEIFORM SIGN SAG TIMES KUR
+1229C;AL # CUNEIFORM SIGN SAG TIMES LUM
+1229D;AL # CUNEIFORM SIGN SAG TIMES MI
+1229E;AL # CUNEIFORM SIGN SAG TIMES NUN
+1229F;AL # CUNEIFORM SIGN SAG TIMES SAL
+122A0;AL # CUNEIFORM SIGN SAG TIMES SHID
+122A1;AL # CUNEIFORM SIGN SAG TIMES TAB
+122A2;AL # CUNEIFORM SIGN SAG TIMES U2
+122A3;AL # CUNEIFORM SIGN SAG TIMES UB
+122A4;AL # CUNEIFORM SIGN SAG TIMES UM
+122A5;AL # CUNEIFORM SIGN SAG TIMES UR
+122A6;AL # CUNEIFORM SIGN SAG TIMES USH
+122A7;AL # CUNEIFORM SIGN SAG OVER SAG
+122A8;AL # CUNEIFORM SIGN SAG GUNU
+122A9;AL # CUNEIFORM SIGN SAL
+122AA;AL # CUNEIFORM SIGN SAL LAGAB TIMES ASH2
+122AB;AL # CUNEIFORM SIGN SANGA2
+122AC;AL # CUNEIFORM SIGN SAR
+122AD;AL # CUNEIFORM SIGN SHA
+122AE;AL # CUNEIFORM SIGN SHA3
+122AF;AL # CUNEIFORM SIGN SHA3 TIMES A
+122B0;AL # CUNEIFORM SIGN SHA3 TIMES BAD
+122B1;AL # CUNEIFORM SIGN SHA3 TIMES GISH
+122B2;AL # CUNEIFORM SIGN SHA3 TIMES NE
+122B3;AL # CUNEIFORM SIGN SHA3 TIMES SHU2
+122B4;AL # CUNEIFORM SIGN SHA3 TIMES TUR
+122B5;AL # CUNEIFORM SIGN SHA3 TIMES U
+122B6;AL # CUNEIFORM SIGN SHA3 TIMES U PLUS A
+122B7;AL # CUNEIFORM SIGN SHA6
+122B8;AL # CUNEIFORM SIGN SHAB6
+122B9;AL # CUNEIFORM SIGN SHAR2
+122BA;AL # CUNEIFORM SIGN SHE
+122BB;AL # CUNEIFORM SIGN SHE HU
+122BC;AL # CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR
+122BD;AL # CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR
+122BE;AL # CUNEIFORM SIGN SHEG9
+122BF;AL # CUNEIFORM SIGN SHEN
+122C0;AL # CUNEIFORM SIGN SHESH
+122C1;AL # CUNEIFORM SIGN SHESH2
+122C2;AL # CUNEIFORM SIGN SHESHLAM
+122C3;AL # CUNEIFORM SIGN SHID
+122C4;AL # CUNEIFORM SIGN SHID TIMES A
+122C5;AL # CUNEIFORM SIGN SHID TIMES IM
+122C6;AL # CUNEIFORM SIGN SHIM
+122C7;AL # CUNEIFORM SIGN SHIM TIMES A
+122C8;AL # CUNEIFORM SIGN SHIM TIMES BAL
+122C9;AL # CUNEIFORM SIGN SHIM TIMES BULUG
+122CA;AL # CUNEIFORM SIGN SHIM TIMES DIN
+122CB;AL # CUNEIFORM SIGN SHIM TIMES GAR
+122CC;AL # CUNEIFORM SIGN SHIM TIMES IGI
+122CD;AL # CUNEIFORM SIGN SHIM TIMES IGI GUNU
+122CE;AL # CUNEIFORM SIGN SHIM TIMES KUSHU2
+122CF;AL # CUNEIFORM SIGN SHIM TIMES LUL
+122D0;AL # CUNEIFORM SIGN SHIM TIMES MUG
+122D1;AL # CUNEIFORM SIGN SHIM TIMES SAL
+122D2;AL # CUNEIFORM SIGN SHINIG
+122D3;AL # CUNEIFORM SIGN SHIR
+122D4;AL # CUNEIFORM SIGN SHIR TENU
+122D5;AL # CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR
+122D6;AL # CUNEIFORM SIGN SHITA
+122D7;AL # CUNEIFORM SIGN SHU
+122D8;AL # CUNEIFORM SIGN SHU OVER INVERTED SHU
+122D9;AL # CUNEIFORM SIGN SHU2
+122DA;AL # CUNEIFORM SIGN SHUBUR
+122DB;AL # CUNEIFORM SIGN SI
+122DC;AL # CUNEIFORM SIGN SI GUNU
+122DD;AL # CUNEIFORM SIGN SIG
+122DE;AL # CUNEIFORM SIGN SIG4
+122DF;AL # CUNEIFORM SIGN SIG4 OVER SIG4 SHU2
+122E0;AL # CUNEIFORM SIGN SIK2
+122E1;AL # CUNEIFORM SIGN SILA3
+122E2;AL # CUNEIFORM SIGN SU
+122E3;AL # CUNEIFORM SIGN SU OVER SU
+122E4;AL # CUNEIFORM SIGN SUD
+122E5;AL # CUNEIFORM SIGN SUD2
+122E6;AL # CUNEIFORM SIGN SUHUR
+122E7;AL # CUNEIFORM SIGN SUM
+122E8;AL # CUNEIFORM SIGN SUMASH
+122E9;AL # CUNEIFORM SIGN SUR
+122EA;AL # CUNEIFORM SIGN SUR9
+122EB;AL # CUNEIFORM SIGN TA
+122EC;AL # CUNEIFORM SIGN TA ASTERISK
+122ED;AL # CUNEIFORM SIGN TA TIMES HI
+122EE;AL # CUNEIFORM SIGN TA TIMES MI
+122EF;AL # CUNEIFORM SIGN TA GUNU
+122F0;AL # CUNEIFORM SIGN TAB
+122F1;AL # CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH
+122F2;AL # CUNEIFORM SIGN TAB SQUARED
+122F3;AL # CUNEIFORM SIGN TAG
+122F4;AL # CUNEIFORM SIGN TAG TIMES BI
+122F5;AL # CUNEIFORM SIGN TAG TIMES GUD
+122F6;AL # CUNEIFORM SIGN TAG TIMES SHE
+122F7;AL # CUNEIFORM SIGN TAG TIMES SHU
+122F8;AL # CUNEIFORM SIGN TAG TIMES TUG2
+122F9;AL # CUNEIFORM SIGN TAG TIMES UD
+122FA;AL # CUNEIFORM SIGN TAK4
+122FB;AL # CUNEIFORM SIGN TAR
+122FC;AL # CUNEIFORM SIGN TE
+122FD;AL # CUNEIFORM SIGN TE GUNU
+122FE;AL # CUNEIFORM SIGN TI
+122FF;AL # CUNEIFORM SIGN TI TENU
+12300;AL # CUNEIFORM SIGN TIL
+12301;AL # CUNEIFORM SIGN TIR
+12302;AL # CUNEIFORM SIGN TIR TIMES TAK4
+12303;AL # CUNEIFORM SIGN TIR OVER TIR
+12304;AL # CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR
+12305;AL # CUNEIFORM SIGN TU
+12306;AL # CUNEIFORM SIGN TUG2
+12307;AL # CUNEIFORM SIGN TUK
+12308;AL # CUNEIFORM SIGN TUM
+12309;AL # CUNEIFORM SIGN TUR
+1230A;AL # CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA
+1230B;AL # CUNEIFORM SIGN U
+1230C;AL # CUNEIFORM SIGN U GUD
+1230D;AL # CUNEIFORM SIGN U U U
+1230E;AL # CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR
+1230F;AL # CUNEIFORM SIGN U OVER U SUR OVER SUR
+12310;AL # CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED
+12311;AL # CUNEIFORM SIGN U2
+12312;AL # CUNEIFORM SIGN UB
+12313;AL # CUNEIFORM SIGN UD
+12314;AL # CUNEIFORM SIGN UD KUSHU2
+12315;AL # CUNEIFORM SIGN UD TIMES BAD
+12316;AL # CUNEIFORM SIGN UD TIMES MI
+12317;AL # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U
+12318;AL # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU
+12319;AL # CUNEIFORM SIGN UD GUNU
+1231A;AL # CUNEIFORM SIGN UD SHESHIG
+1231B;AL # CUNEIFORM SIGN UD SHESHIG TIMES BAD
+1231C;AL # CUNEIFORM SIGN UDUG
+1231D;AL # CUNEIFORM SIGN UM
+1231E;AL # CUNEIFORM SIGN UM TIMES LAGAB
+1231F;AL # CUNEIFORM SIGN UM TIMES ME PLUS DA
+12320;AL # CUNEIFORM SIGN UM TIMES SHA3
+12321;AL # CUNEIFORM SIGN UM TIMES U
+12322;AL # CUNEIFORM SIGN UMBIN
+12323;AL # CUNEIFORM SIGN UMUM
+12324;AL # CUNEIFORM SIGN UMUM TIMES KASKAL
+12325;AL # CUNEIFORM SIGN UMUM TIMES PA
+12326;AL # CUNEIFORM SIGN UN
+12327;AL # CUNEIFORM SIGN UN GUNU
+12328;AL # CUNEIFORM SIGN UR
+12329;AL # CUNEIFORM SIGN UR CROSSING UR
+1232A;AL # CUNEIFORM SIGN UR SHESHIG
+1232B;AL # CUNEIFORM SIGN UR2
+1232C;AL # CUNEIFORM SIGN UR2 TIMES A PLUS HA
+1232D;AL # CUNEIFORM SIGN UR2 TIMES A PLUS NA
+1232E;AL # CUNEIFORM SIGN UR2 TIMES AL
+1232F;AL # CUNEIFORM SIGN UR2 TIMES HA
+12330;AL # CUNEIFORM SIGN UR2 TIMES NUN
+12331;AL # CUNEIFORM SIGN UR2 TIMES U2
+12332;AL # CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH
+12333;AL # CUNEIFORM SIGN UR2 TIMES U2 PLUS BI
+12334;AL # CUNEIFORM SIGN UR4
+12335;AL # CUNEIFORM SIGN URI
+12336;AL # CUNEIFORM SIGN URI3
+12337;AL # CUNEIFORM SIGN URU
+12338;AL # CUNEIFORM SIGN URU TIMES A
+12339;AL # CUNEIFORM SIGN URU TIMES ASHGAB
+1233A;AL # CUNEIFORM SIGN URU TIMES BAR
+1233B;AL # CUNEIFORM SIGN URU TIMES DUN
+1233C;AL # CUNEIFORM SIGN URU TIMES GA
+1233D;AL # CUNEIFORM SIGN URU TIMES GAL
+1233E;AL # CUNEIFORM SIGN URU TIMES GAN2 TENU
+1233F;AL # CUNEIFORM SIGN URU TIMES GAR
+12340;AL # CUNEIFORM SIGN URU TIMES GU
+12341;AL # CUNEIFORM SIGN URU TIMES HA
+12342;AL # CUNEIFORM SIGN URU TIMES IGI
+12343;AL # CUNEIFORM SIGN URU TIMES IM
+12344;AL # CUNEIFORM SIGN URU TIMES ISH
+12345;AL # CUNEIFORM SIGN URU TIMES KI
+12346;AL # CUNEIFORM SIGN URU TIMES LUM
+12347;AL # CUNEIFORM SIGN URU TIMES MIN
+12348;AL # CUNEIFORM SIGN URU TIMES PA
+12349;AL # CUNEIFORM SIGN URU TIMES SHE
+1234A;AL # CUNEIFORM SIGN URU TIMES SIG4
+1234B;AL # CUNEIFORM SIGN URU TIMES TU
+1234C;AL # CUNEIFORM SIGN URU TIMES U PLUS GUD
+1234D;AL # CUNEIFORM SIGN URU TIMES UD
+1234E;AL # CUNEIFORM SIGN URU TIMES URUDA
+1234F;AL # CUNEIFORM SIGN URUDA
+12350;AL # CUNEIFORM SIGN URUDA TIMES U
+12351;AL # CUNEIFORM SIGN USH
+12352;AL # CUNEIFORM SIGN USH TIMES A
+12353;AL # CUNEIFORM SIGN USH TIMES KU
+12354;AL # CUNEIFORM SIGN USH TIMES KUR
+12355;AL # CUNEIFORM SIGN USH TIMES TAK4
+12356;AL # CUNEIFORM SIGN USHX
+12357;AL # CUNEIFORM SIGN USH2
+12358;AL # CUNEIFORM SIGN USHUMX
+12359;AL # CUNEIFORM SIGN UTUKI
+1235A;AL # CUNEIFORM SIGN UZ3
+1235B;AL # CUNEIFORM SIGN UZ3 TIMES KASKAL
+1235C;AL # CUNEIFORM SIGN UZU
+1235D;AL # CUNEIFORM SIGN ZA
+1235E;AL # CUNEIFORM SIGN ZA TENU
+1235F;AL # CUNEIFORM SIGN ZA SQUARED TIMES KUR
+12360;AL # CUNEIFORM SIGN ZAG
+12361;AL # CUNEIFORM SIGN ZAMX
+12362;AL # CUNEIFORM SIGN ZE2
+12363;AL # CUNEIFORM SIGN ZI
+12364;AL # CUNEIFORM SIGN ZI OVER ZI
+12365;AL # CUNEIFORM SIGN ZI3
+12366;AL # CUNEIFORM SIGN ZIB
+12367;AL # CUNEIFORM SIGN ZIB KABA TENU
+12368;AL # CUNEIFORM SIGN ZIG
+12369;AL # CUNEIFORM SIGN ZIZ2
+1236A;AL # CUNEIFORM SIGN ZU
+1236B;AL # CUNEIFORM SIGN ZU5
+1236C;AL # CUNEIFORM SIGN ZU5 TIMES A
+1236D;AL # CUNEIFORM SIGN ZUBUR
+1236E;AL # CUNEIFORM SIGN ZUM
+12400;AL # CUNEIFORM NUMERIC SIGN TWO ASH
+12401;AL # CUNEIFORM NUMERIC SIGN THREE ASH
+12402;AL # CUNEIFORM NUMERIC SIGN FOUR ASH
+12403;AL # CUNEIFORM NUMERIC SIGN FIVE ASH
+12404;AL # CUNEIFORM NUMERIC SIGN SIX ASH
+12405;AL # CUNEIFORM NUMERIC SIGN SEVEN ASH
+12406;AL # CUNEIFORM NUMERIC SIGN EIGHT ASH
+12407;AL # CUNEIFORM NUMERIC SIGN NINE ASH
+12408;AL # CUNEIFORM NUMERIC SIGN THREE DISH
+12409;AL # CUNEIFORM NUMERIC SIGN FOUR DISH
+1240A;AL # CUNEIFORM NUMERIC SIGN FIVE DISH
+1240B;AL # CUNEIFORM NUMERIC SIGN SIX DISH
+1240C;AL # CUNEIFORM NUMERIC SIGN SEVEN DISH
+1240D;AL # CUNEIFORM NUMERIC SIGN EIGHT DISH
+1240E;AL # CUNEIFORM NUMERIC SIGN NINE DISH
+1240F;AL # CUNEIFORM NUMERIC SIGN FOUR U
+12410;AL # CUNEIFORM NUMERIC SIGN FIVE U
+12411;AL # CUNEIFORM NUMERIC SIGN SIX U
+12412;AL # CUNEIFORM NUMERIC SIGN SEVEN U
+12413;AL # CUNEIFORM NUMERIC SIGN EIGHT U
+12414;AL # CUNEIFORM NUMERIC SIGN NINE U
+12415;AL # CUNEIFORM NUMERIC SIGN ONE GESH2
+12416;AL # CUNEIFORM NUMERIC SIGN TWO GESH2
+12417;AL # CUNEIFORM NUMERIC SIGN THREE GESH2
+12418;AL # CUNEIFORM NUMERIC SIGN FOUR GESH2
+12419;AL # CUNEIFORM NUMERIC SIGN FIVE GESH2
+1241A;AL # CUNEIFORM NUMERIC SIGN SIX GESH2
+1241B;AL # CUNEIFORM NUMERIC SIGN SEVEN GESH2
+1241C;AL # CUNEIFORM NUMERIC SIGN EIGHT GESH2
+1241D;AL # CUNEIFORM NUMERIC SIGN NINE GESH2
+1241E;AL # CUNEIFORM NUMERIC SIGN ONE GESHU
+1241F;AL # CUNEIFORM NUMERIC SIGN TWO GESHU
+12420;AL # CUNEIFORM NUMERIC SIGN THREE GESHU
+12421;AL # CUNEIFORM NUMERIC SIGN FOUR GESHU
+12422;AL # CUNEIFORM NUMERIC SIGN FIVE GESHU
+12423;AL # CUNEIFORM NUMERIC SIGN TWO SHAR2
+12424;AL # CUNEIFORM NUMERIC SIGN THREE SHAR2
+12425;AL # CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM
+12426;AL # CUNEIFORM NUMERIC SIGN FOUR SHAR2
+12427;AL # CUNEIFORM NUMERIC SIGN FIVE SHAR2
+12428;AL # CUNEIFORM NUMERIC SIGN SIX SHAR2
+12429;AL # CUNEIFORM NUMERIC SIGN SEVEN SHAR2
+1242A;AL # CUNEIFORM NUMERIC SIGN EIGHT SHAR2
+1242B;AL # CUNEIFORM NUMERIC SIGN NINE SHAR2
+1242C;AL # CUNEIFORM NUMERIC SIGN ONE SHARU
+1242D;AL # CUNEIFORM NUMERIC SIGN TWO SHARU
+1242E;AL # CUNEIFORM NUMERIC SIGN THREE SHARU
+1242F;AL # CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM
+12430;AL # CUNEIFORM NUMERIC SIGN FOUR SHARU
+12431;AL # CUNEIFORM NUMERIC SIGN FIVE SHARU
+12432;AL # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH
+12433;AL # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN
+12434;AL # CUNEIFORM NUMERIC SIGN ONE BURU
+12435;AL # CUNEIFORM NUMERIC SIGN TWO BURU
+12436;AL # CUNEIFORM NUMERIC SIGN THREE BURU
+12437;AL # CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM
+12438;AL # CUNEIFORM NUMERIC SIGN FOUR BURU
+12439;AL # CUNEIFORM NUMERIC SIGN FIVE BURU
+1243A;AL # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16
+1243B;AL # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21
+1243C;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU
+1243D;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4
+1243E;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A
+1243F;AL # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B
+12440;AL # CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9
+12441;AL # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3
+12442;AL # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A
+12443;AL # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B
+12444;AL # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU
+12445;AL # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3
+12446;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU
+12447;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3
+12448;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4
+12449;AL # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A
+1244A;AL # CUNEIFORM NUMERIC SIGN TWO ASH TENU
+1244B;AL # CUNEIFORM NUMERIC SIGN THREE ASH TENU
+1244C;AL # CUNEIFORM NUMERIC SIGN FOUR ASH TENU
+1244D;AL # CUNEIFORM NUMERIC SIGN FIVE ASH TENU
+1244E;AL # CUNEIFORM NUMERIC SIGN SIX ASH TENU
+1244F;AL # CUNEIFORM NUMERIC SIGN ONE BAN2
+12450;AL # CUNEIFORM NUMERIC SIGN TWO BAN2
+12451;AL # CUNEIFORM NUMERIC SIGN THREE BAN2
+12452;AL # CUNEIFORM NUMERIC SIGN FOUR BAN2
+12453;AL # CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM
+12454;AL # CUNEIFORM NUMERIC SIGN FIVE BAN2
+12455;AL # CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM
+12456;AL # CUNEIFORM NUMERIC SIGN NIGIDAMIN
+12457;AL # CUNEIFORM NUMERIC SIGN NIGIDAESH
+12458;AL # CUNEIFORM NUMERIC SIGN ONE ESHE3
+12459;AL # CUNEIFORM NUMERIC SIGN TWO ESHE3
+1245A;AL # CUNEIFORM NUMERIC SIGN ONE THIRD DISH
+1245B;AL # CUNEIFORM NUMERIC SIGN TWO THIRDS DISH
+1245C;AL # CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH
+1245D;AL # CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A
+1245E;AL # CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A
+1245F;AL # CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH
+12460;AL # CUNEIFORM NUMERIC SIGN ONE QUARTER ASH
+12461;AL # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH
+12462;AL # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12470;BA # CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER
+12471;BA # CUNEIFORM PUNCTUATION SIGN VERTICAL COLON
+12472;BA # CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON
+12473;BA # CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+1D000;AL # BYZANTINE MUSICAL SYMBOL PSILI
+1D001;AL # BYZANTINE MUSICAL SYMBOL DASEIA
+1D002;AL # BYZANTINE MUSICAL SYMBOL PERISPOMENI
+1D003;AL # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
+1D004;AL # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
+1D005;AL # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
+1D006;AL # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
+1D007;AL # BYZANTINE MUSICAL SYMBOL KATHISTI
+1D008;AL # BYZANTINE MUSICAL SYMBOL SYRMATIKI
+1D009;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI
+1D00A;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS
+1D00B;AL # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
+1D00C;AL # BYZANTINE MUSICAL SYMBOL KREMASTI
+1D00D;AL # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
+1D00E;AL # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
+1D00F;AL # BYZANTINE MUSICAL SYMBOL TELEIA
+1D010;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA
+1D011;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS
+1D012;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
+1D013;AL # BYZANTINE MUSICAL SYMBOL SYNEVMA
+1D014;AL # BYZANTINE MUSICAL SYMBOL THITA
+1D015;AL # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
+1D016;AL # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
+1D017;AL # BYZANTINE MUSICAL SYMBOL PSILON
+1D018;AL # BYZANTINE MUSICAL SYMBOL CHAMILON
+1D019;AL # BYZANTINE MUSICAL SYMBOL VATHY
+1D01A;AL # BYZANTINE MUSICAL SYMBOL ISON ARCHAION
+1D01B;AL # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
+1D01C;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
+1D01D;AL # BYZANTINE MUSICAL SYMBOL SAXIMATA
+1D01E;AL # BYZANTINE MUSICAL SYMBOL PARICHON
+1D01F;AL # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
+1D020;AL # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
+1D021;AL # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
+1D022;AL # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
+1D023;AL # BYZANTINE MUSICAL SYMBOL APOTHEMA
+1D024;AL # BYZANTINE MUSICAL SYMBOL KLASMA
+1D025;AL # BYZANTINE MUSICAL SYMBOL REVMA
+1D026;AL # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
+1D027;AL # BYZANTINE MUSICAL SYMBOL TINAGMA
+1D028;AL # BYZANTINE MUSICAL SYMBOL ANATRICHISMA
+1D029;AL # BYZANTINE MUSICAL SYMBOL SEISMA
+1D02A;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
+1D02B;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
+1D02C;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
+1D02D;AL # BYZANTINE MUSICAL SYMBOL THEMA
+1D02E;AL # BYZANTINE MUSICAL SYMBOL LEMOI
+1D02F;AL # BYZANTINE MUSICAL SYMBOL DYO
+1D030;AL # BYZANTINE MUSICAL SYMBOL TRIA
+1D031;AL # BYZANTINE MUSICAL SYMBOL TESSERA
+1D032;AL # BYZANTINE MUSICAL SYMBOL KRATIMATA
+1D033;AL # BYZANTINE MUSICAL SYMBOL APESO EXO NEO
+1D034;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
+1D035;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORA
+1D036;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
+1D037;AL # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
+1D038;AL # BYZANTINE MUSICAL SYMBOL PELASTON
+1D039;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON
+1D03A;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA
+1D03B;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
+1D03C;AL # BYZANTINE MUSICAL SYMBOL RAPISMA
+1D03D;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
+1D03E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
+1D03F;AL # BYZANTINE MUSICAL SYMBOL ICHADIN
+1D040;AL # BYZANTINE MUSICAL SYMBOL NANA
+1D041;AL # BYZANTINE MUSICAL SYMBOL PETASMA
+1D042;AL # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
+1D043;AL # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
+1D044;AL # BYZANTINE MUSICAL SYMBOL STRAGGISMATA
+1D045;AL # BYZANTINE MUSICAL SYMBOL GRONTHISMATA
+1D046;AL # BYZANTINE MUSICAL SYMBOL ISON NEO
+1D047;AL # BYZANTINE MUSICAL SYMBOL OLIGON NEO
+1D048;AL # BYZANTINE MUSICAL SYMBOL OXEIA NEO
+1D049;AL # BYZANTINE MUSICAL SYMBOL PETASTI
+1D04A;AL # BYZANTINE MUSICAL SYMBOL KOUFISMA
+1D04B;AL # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
+1D04C;AL # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
+1D04D;AL # BYZANTINE MUSICAL SYMBOL PELASTON NEO
+1D04E;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
+1D04F;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
+1D050;AL # BYZANTINE MUSICAL SYMBOL YPSILI
+1D051;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
+1D052;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
+1D053;AL # BYZANTINE MUSICAL SYMBOL YPORROI
+1D054;AL # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
+1D055;AL # BYZANTINE MUSICAL SYMBOL ELAFRON
+1D056;AL # BYZANTINE MUSICAL SYMBOL CHAMILI
+1D057;AL # BYZANTINE MUSICAL SYMBOL MIKRON ISON
+1D058;AL # BYZANTINE MUSICAL SYMBOL VAREIA NEO
+1D059;AL # BYZANTINE MUSICAL SYMBOL PIASMA NEO
+1D05A;AL # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
+1D05B;AL # BYZANTINE MUSICAL SYMBOL OMALON
+1D05C;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOMA
+1D05D;AL # BYZANTINE MUSICAL SYMBOL LYGISMA
+1D05E;AL # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
+1D05F;AL # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
+1D060;AL # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
+1D061;AL # BYZANTINE MUSICAL SYMBOL KYLISMA
+1D062;AL # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
+1D063;AL # BYZANTINE MUSICAL SYMBOL TROMIKON NEO
+1D064;AL # BYZANTINE MUSICAL SYMBOL EKSTREPTON
+1D065;AL # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
+1D066;AL # BYZANTINE MUSICAL SYMBOL SYRMA
+1D067;AL # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
+1D068;AL # BYZANTINE MUSICAL SYMBOL EPEGERMA
+1D069;AL # BYZANTINE MUSICAL SYMBOL SEISMA NEO
+1D06A;AL # BYZANTINE MUSICAL SYMBOL XIRON KLASMA
+1D06B;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
+1D06C;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
+1D06D;AL # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
+1D06E;AL # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
+1D06F;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
+1D070;AL # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
+1D071;AL # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
+1D072;AL # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
+1D073;AL # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
+1D074;AL # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
+1D075;AL # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
+1D076;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
+1D077;AL # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
+1D078;AL # BYZANTINE MUSICAL SYMBOL THEMA APLOUN
+1D079;AL # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
+1D07A;AL # BYZANTINE MUSICAL SYMBOL KATAVASMA
+1D07B;AL # BYZANTINE MUSICAL SYMBOL ENDOFONON
+1D07C;AL # BYZANTINE MUSICAL SYMBOL YFEN KATO
+1D07D;AL # BYZANTINE MUSICAL SYMBOL YFEN ANO
+1D07E;AL # BYZANTINE MUSICAL SYMBOL STAVROS
+1D07F;AL # BYZANTINE MUSICAL SYMBOL KLASMA ANO
+1D080;AL # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
+1D081;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
+1D082;AL # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
+1D083;AL # BYZANTINE MUSICAL SYMBOL KRATIMA NEO
+1D084;AL # BYZANTINE MUSICAL SYMBOL APODERMA NEO
+1D085;AL # BYZANTINE MUSICAL SYMBOL APLI
+1D086;AL # BYZANTINE MUSICAL SYMBOL DIPLI
+1D087;AL # BYZANTINE MUSICAL SYMBOL TRIPLI
+1D088;AL # BYZANTINE MUSICAL SYMBOL TETRAPLI
+1D089;AL # BYZANTINE MUSICAL SYMBOL KORONIS
+1D08A;AL # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
+1D08B;AL # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
+1D08C;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
+1D08D;AL # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
+1D08E;AL # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
+1D08F;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
+1D090;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
+1D091;AL # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
+1D092;AL # BYZANTINE MUSICAL SYMBOL DIGORGON
+1D093;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
+1D094;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
+1D095;AL # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
+1D096;AL # BYZANTINE MUSICAL SYMBOL TRIGORGON
+1D097;AL # BYZANTINE MUSICAL SYMBOL ARGON
+1D098;AL # BYZANTINE MUSICAL SYMBOL IMIDIARGON
+1D099;AL # BYZANTINE MUSICAL SYMBOL DIARGON
+1D09A;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
+1D09B;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
+1D09C;AL # BYZANTINE MUSICAL SYMBOL AGOGI ARGI
+1D09D;AL # BYZANTINE MUSICAL SYMBOL AGOGI METRIA
+1D09E;AL # BYZANTINE MUSICAL SYMBOL AGOGI MESI
+1D09F;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGI
+1D0A0;AL # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
+1D0A1;AL # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
+1D0A2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
+1D0A3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
+1D0A4;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
+1D0A5;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
+1D0A6;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
+1D0A7;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
+1D0A8;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
+1D0A9;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
+1D0AA;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
+1D0AB;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
+1D0AC;AL # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
+1D0AD;AL # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
+1D0AE;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
+1D0AF;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
+1D0B0;AL # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
+1D0B1;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
+1D0B2;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
+1D0B3;AL # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
+1D0B4;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
+1D0B5;AL # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
+1D0B6;AL # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
+1D0B7;AL # BYZANTINE MUSICAL SYMBOL IMIFONON
+1D0B8;AL # BYZANTINE MUSICAL SYMBOL IMIFTHORON
+1D0B9;AL # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
+1D0BA;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
+1D0BB;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
+1D0BC;AL # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
+1D0BD;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
+1D0BE;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
+1D0BF;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
+1D0C0;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
+1D0C1;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
+1D0C2;AL # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
+1D0C3;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
+1D0C4;AL # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
+1D0C5;AL # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
+1D0C6;AL # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
+1D0C7;AL # BYZANTINE MUSICAL SYMBOL FTHORA NENANO
+1D0C8;AL # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
+1D0C9;AL # BYZANTINE MUSICAL SYMBOL CHROA KLITON
+1D0CA;AL # BYZANTINE MUSICAL SYMBOL CHROA SPATHI
+1D0CB;AL # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
+1D0CC;AL # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
+1D0CD;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
+1D0CE;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
+1D0CF;AL # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
+1D0D0;AL # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
+1D0D1;AL # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D2;AL # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
+1D0D3;AL # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
+1D0D4;AL # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
+1D0D5;AL # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D6;AL # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
+1D0D7;AL # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
+1D0D8;AL # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
+1D0D9;AL # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
+1D0DA;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
+1D0DB;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
+1D0DC;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
+1D0DD;AL # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
+1D0DE;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
+1D0DF;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
+1D0E0;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
+1D0E1;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
+1D0E2;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
+1D0E3;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
+1D0E4;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
+1D0E5;AL # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
+1D0E6;AL # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
+1D0E7;AL # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
+1D0E8;AL # BYZANTINE MUSICAL SYMBOL STIGMA
+1D0E9;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO PA
+1D0EA;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
+1D0EB;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO GA
+1D0EC;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO DI
+1D0ED;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO KE
+1D0EE;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
+1D0EF;AL # BYZANTINE MUSICAL SYMBOL ARKTIKO NI
+1D0F0;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
+1D0F1;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
+1D0F2;AL # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
+1D0F3;AL # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
+1D0F4;AL # BYZANTINE MUSICAL SYMBOL KLASMA KATO
+1D0F5;AL # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100;AL # MUSICAL SYMBOL SINGLE BARLINE
+1D101;AL # MUSICAL SYMBOL DOUBLE BARLINE
+1D102;AL # MUSICAL SYMBOL FINAL BARLINE
+1D103;AL # MUSICAL SYMBOL REVERSE FINAL BARLINE
+1D104;AL # MUSICAL SYMBOL DASHED BARLINE
+1D105;AL # MUSICAL SYMBOL SHORT BARLINE
+1D106;AL # MUSICAL SYMBOL LEFT REPEAT SIGN
+1D107;AL # MUSICAL SYMBOL RIGHT REPEAT SIGN
+1D108;AL # MUSICAL SYMBOL REPEAT DOTS
+1D109;AL # MUSICAL SYMBOL DAL SEGNO
+1D10A;AL # MUSICAL SYMBOL DA CAPO
+1D10B;AL # MUSICAL SYMBOL SEGNO
+1D10C;AL # MUSICAL SYMBOL CODA
+1D10D;AL # MUSICAL SYMBOL REPEATED FIGURE-1
+1D10E;AL # MUSICAL SYMBOL REPEATED FIGURE-2
+1D10F;AL # MUSICAL SYMBOL REPEATED FIGURE-3
+1D110;AL # MUSICAL SYMBOL FERMATA
+1D111;AL # MUSICAL SYMBOL FERMATA BELOW
+1D112;AL # MUSICAL SYMBOL BREATH MARK
+1D113;AL # MUSICAL SYMBOL CAESURA
+1D114;AL # MUSICAL SYMBOL BRACE
+1D115;AL # MUSICAL SYMBOL BRACKET
+1D116;AL # MUSICAL SYMBOL ONE-LINE STAFF
+1D117;AL # MUSICAL SYMBOL TWO-LINE STAFF
+1D118;AL # MUSICAL SYMBOL THREE-LINE STAFF
+1D119;AL # MUSICAL SYMBOL FOUR-LINE STAFF
+1D11A;AL # MUSICAL SYMBOL FIVE-LINE STAFF
+1D11B;AL # MUSICAL SYMBOL SIX-LINE STAFF
+1D11C;AL # MUSICAL SYMBOL SIX-STRING FRETBOARD
+1D11D;AL # MUSICAL SYMBOL FOUR-STRING FRETBOARD
+1D11E;AL # MUSICAL SYMBOL G CLEF
+1D11F;AL # MUSICAL SYMBOL G CLEF OTTAVA ALTA
+1D120;AL # MUSICAL SYMBOL G CLEF OTTAVA BASSA
+1D121;AL # MUSICAL SYMBOL C CLEF
+1D122;AL # MUSICAL SYMBOL F CLEF
+1D123;AL # MUSICAL SYMBOL F CLEF OTTAVA ALTA
+1D124;AL # MUSICAL SYMBOL F CLEF OTTAVA BASSA
+1D125;AL # MUSICAL SYMBOL DRUM CLEF-1
+1D126;AL # MUSICAL SYMBOL DRUM CLEF-2
+1D12A;AL # MUSICAL SYMBOL DOUBLE SHARP
+1D12B;AL # MUSICAL SYMBOL DOUBLE FLAT
+1D12C;AL # MUSICAL SYMBOL FLAT UP
+1D12D;AL # MUSICAL SYMBOL FLAT DOWN
+1D12E;AL # MUSICAL SYMBOL NATURAL UP
+1D12F;AL # MUSICAL SYMBOL NATURAL DOWN
+1D130;AL # MUSICAL SYMBOL SHARP UP
+1D131;AL # MUSICAL SYMBOL SHARP DOWN
+1D132;AL # MUSICAL SYMBOL QUARTER TONE SHARP
+1D133;AL # MUSICAL SYMBOL QUARTER TONE FLAT
+1D134;AL # MUSICAL SYMBOL COMMON TIME
+1D135;AL # MUSICAL SYMBOL CUT TIME
+1D136;AL # MUSICAL SYMBOL OTTAVA ALTA
+1D137;AL # MUSICAL SYMBOL OTTAVA BASSA
+1D138;AL # MUSICAL SYMBOL QUINDICESIMA ALTA
+1D139;AL # MUSICAL SYMBOL QUINDICESIMA BASSA
+1D13A;AL # MUSICAL SYMBOL MULTI REST
+1D13B;AL # MUSICAL SYMBOL WHOLE REST
+1D13C;AL # MUSICAL SYMBOL HALF REST
+1D13D;AL # MUSICAL SYMBOL QUARTER REST
+1D13E;AL # MUSICAL SYMBOL EIGHTH REST
+1D13F;AL # MUSICAL SYMBOL SIXTEENTH REST
+1D140;AL # MUSICAL SYMBOL THIRTY-SECOND REST
+1D141;AL # MUSICAL SYMBOL SIXTY-FOURTH REST
+1D142;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
+1D143;AL # MUSICAL SYMBOL X NOTEHEAD
+1D144;AL # MUSICAL SYMBOL PLUS NOTEHEAD
+1D145;AL # MUSICAL SYMBOL CIRCLE X NOTEHEAD
+1D146;AL # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
+1D147;AL # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
+1D148;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
+1D149;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
+1D14A;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
+1D14B;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
+1D14C;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
+1D14D;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
+1D14E;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
+1D14F;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
+1D150;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
+1D151;AL # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
+1D152;AL # MUSICAL SYMBOL MOON NOTEHEAD WHITE
+1D153;AL # MUSICAL SYMBOL MOON NOTEHEAD BLACK
+1D154;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
+1D155;AL # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
+1D156;AL # MUSICAL SYMBOL PARENTHESIS NOTEHEAD
+1D157;AL # MUSICAL SYMBOL VOID NOTEHEAD
+1D158;AL # MUSICAL SYMBOL NOTEHEAD BLACK
+1D159;AL # MUSICAL SYMBOL NULL NOTEHEAD
+1D15A;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
+1D15B;AL # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
+1D15C;AL # MUSICAL SYMBOL BREVE
+1D15D;AL # MUSICAL SYMBOL WHOLE NOTE
+1D15E;AL # MUSICAL SYMBOL HALF NOTE
+1D15F;AL # MUSICAL SYMBOL QUARTER NOTE
+1D160;AL # MUSICAL SYMBOL EIGHTH NOTE
+1D161;AL # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162;AL # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163;AL # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164;AL # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D165;CM # MUSICAL SYMBOL COMBINING STEM
+1D166;CM # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D167;CM # MUSICAL SYMBOL COMBINING TREMOLO-1
+1D168;CM # MUSICAL SYMBOL COMBINING TREMOLO-2
+1D169;CM # MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16A;AL # MUSICAL SYMBOL FINGERED TREMOLO-1
+1D16B;AL # MUSICAL SYMBOL FINGERED TREMOLO-2
+1D16C;AL # MUSICAL SYMBOL FINGERED TREMOLO-3
+1D16D;CM # MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+1D16E;CM # MUSICAL SYMBOL COMBINING FLAG-1
+1D16F;CM # MUSICAL SYMBOL COMBINING FLAG-2
+1D170;CM # MUSICAL SYMBOL COMBINING FLAG-3
+1D171;CM # MUSICAL SYMBOL COMBINING FLAG-4
+1D172;CM # MUSICAL SYMBOL COMBINING FLAG-5
+1D173;CM # MUSICAL SYMBOL BEGIN BEAM
+1D174;CM # MUSICAL SYMBOL END BEAM
+1D175;CM # MUSICAL SYMBOL BEGIN TIE
+1D176;CM # MUSICAL SYMBOL END TIE
+1D177;CM # MUSICAL SYMBOL BEGIN SLUR
+1D178;CM # MUSICAL SYMBOL END SLUR
+1D179;CM # MUSICAL SYMBOL BEGIN PHRASE
+1D17A;CM # MUSICAL SYMBOL END PHRASE
+1D17B;CM # MUSICAL SYMBOL COMBINING ACCENT
+1D17C;CM # MUSICAL SYMBOL COMBINING STACCATO
+1D17D;CM # MUSICAL SYMBOL COMBINING TENUTO
+1D17E;CM # MUSICAL SYMBOL COMBINING STACCATISSIMO
+1D17F;CM # MUSICAL SYMBOL COMBINING MARCATO
+1D180;CM # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
+1D181;CM # MUSICAL SYMBOL COMBINING ACCENT-STACCATO
+1D182;CM # MUSICAL SYMBOL COMBINING LOURE
+1D183;AL # MUSICAL SYMBOL ARPEGGIATO UP
+1D184;AL # MUSICAL SYMBOL ARPEGGIATO DOWN
+1D185;CM # MUSICAL SYMBOL COMBINING DOIT
+1D186;CM # MUSICAL SYMBOL COMBINING RIP
+1D187;CM # MUSICAL SYMBOL COMBINING FLIP
+1D188;CM # MUSICAL SYMBOL COMBINING SMEAR
+1D189;CM # MUSICAL SYMBOL COMBINING BEND
+1D18A;CM # MUSICAL SYMBOL COMBINING DOUBLE TONGUE
+1D18B;CM # MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D18C;AL # MUSICAL SYMBOL RINFORZANDO
+1D18D;AL # MUSICAL SYMBOL SUBITO
+1D18E;AL # MUSICAL SYMBOL Z
+1D18F;AL # MUSICAL SYMBOL PIANO
+1D190;AL # MUSICAL SYMBOL MEZZO
+1D191;AL # MUSICAL SYMBOL FORTE
+1D192;AL # MUSICAL SYMBOL CRESCENDO
+1D193;AL # MUSICAL SYMBOL DECRESCENDO
+1D194;AL # MUSICAL SYMBOL GRACE NOTE SLASH
+1D195;AL # MUSICAL SYMBOL GRACE NOTE NO SLASH
+1D196;AL # MUSICAL SYMBOL TR
+1D197;AL # MUSICAL SYMBOL TURN
+1D198;AL # MUSICAL SYMBOL INVERTED TURN
+1D199;AL # MUSICAL SYMBOL TURN SLASH
+1D19A;AL # MUSICAL SYMBOL TURN UP
+1D19B;AL # MUSICAL SYMBOL ORNAMENT STROKE-1
+1D19C;AL # MUSICAL SYMBOL ORNAMENT STROKE-2
+1D19D;AL # MUSICAL SYMBOL ORNAMENT STROKE-3
+1D19E;AL # MUSICAL SYMBOL ORNAMENT STROKE-4
+1D19F;AL # MUSICAL SYMBOL ORNAMENT STROKE-5
+1D1A0;AL # MUSICAL SYMBOL ORNAMENT STROKE-6
+1D1A1;AL # MUSICAL SYMBOL ORNAMENT STROKE-7
+1D1A2;AL # MUSICAL SYMBOL ORNAMENT STROKE-8
+1D1A3;AL # MUSICAL SYMBOL ORNAMENT STROKE-9
+1D1A4;AL # MUSICAL SYMBOL ORNAMENT STROKE-10
+1D1A5;AL # MUSICAL SYMBOL ORNAMENT STROKE-11
+1D1A6;AL # MUSICAL SYMBOL HAUPTSTIMME
+1D1A7;AL # MUSICAL SYMBOL NEBENSTIMME
+1D1A8;AL # MUSICAL SYMBOL END OF STIMME
+1D1A9;AL # MUSICAL SYMBOL DEGREE SLASH
+1D1AA;CM # MUSICAL SYMBOL COMBINING DOWN BOW
+1D1AB;CM # MUSICAL SYMBOL COMBINING UP BOW
+1D1AC;CM # MUSICAL SYMBOL COMBINING HARMONIC
+1D1AD;CM # MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D1AE;AL # MUSICAL SYMBOL PEDAL MARK
+1D1AF;AL # MUSICAL SYMBOL PEDAL UP MARK
+1D1B0;AL # MUSICAL SYMBOL HALF PEDAL MARK
+1D1B1;AL # MUSICAL SYMBOL GLISSANDO UP
+1D1B2;AL # MUSICAL SYMBOL GLISSANDO DOWN
+1D1B3;AL # MUSICAL SYMBOL WITH FINGERNAILS
+1D1B4;AL # MUSICAL SYMBOL DAMP
+1D1B5;AL # MUSICAL SYMBOL DAMP ALL
+1D1B6;AL # MUSICAL SYMBOL MAXIMA
+1D1B7;AL # MUSICAL SYMBOL LONGA
+1D1B8;AL # MUSICAL SYMBOL BREVIS
+1D1B9;AL # MUSICAL SYMBOL SEMIBREVIS WHITE
+1D1BA;AL # MUSICAL SYMBOL SEMIBREVIS BLACK
+1D1BB;AL # MUSICAL SYMBOL MINIMA
+1D1BC;AL # MUSICAL SYMBOL MINIMA BLACK
+1D1BD;AL # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE;AL # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF;AL # MUSICAL SYMBOL FUSA WHITE
+1D1C0;AL # MUSICAL SYMBOL FUSA BLACK
+1D1C1;AL # MUSICAL SYMBOL LONGA PERFECTA REST
+1D1C2;AL # MUSICAL SYMBOL LONGA IMPERFECTA REST
+1D1C3;AL # MUSICAL SYMBOL BREVIS REST
+1D1C4;AL # MUSICAL SYMBOL SEMIBREVIS REST
+1D1C5;AL # MUSICAL SYMBOL MINIMA REST
+1D1C6;AL # MUSICAL SYMBOL SEMIMINIMA REST
+1D1C7;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
+1D1C8;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
+1D1C9;AL # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
+1D1CA;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
+1D1CB;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
+1D1CC;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
+1D1CD;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
+1D1CE;AL # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
+1D1CF;AL # MUSICAL SYMBOL CROIX
+1D1D0;AL # MUSICAL SYMBOL GREGORIAN C CLEF
+1D1D1;AL # MUSICAL SYMBOL GREGORIAN F CLEF
+1D1D2;AL # MUSICAL SYMBOL SQUARE B
+1D1D3;AL # MUSICAL SYMBOL VIRGA
+1D1D4;AL # MUSICAL SYMBOL PODATUS
+1D1D5;AL # MUSICAL SYMBOL CLIVIS
+1D1D6;AL # MUSICAL SYMBOL SCANDICUS
+1D1D7;AL # MUSICAL SYMBOL CLIMACUS
+1D1D8;AL # MUSICAL SYMBOL TORCULUS
+1D1D9;AL # MUSICAL SYMBOL PORRECTUS
+1D1DA;AL # MUSICAL SYMBOL PORRECTUS FLEXUS
+1D1DB;AL # MUSICAL SYMBOL SCANDICUS FLEXUS
+1D1DC;AL # MUSICAL SYMBOL TORCULUS RESUPINUS
+1D1DD;AL # MUSICAL SYMBOL PES SUBPUNCTIS
+1D200;AL # GREEK VOCAL NOTATION SYMBOL-1
+1D201;AL # GREEK VOCAL NOTATION SYMBOL-2
+1D202;AL # GREEK VOCAL NOTATION SYMBOL-3
+1D203;AL # GREEK VOCAL NOTATION SYMBOL-4
+1D204;AL # GREEK VOCAL NOTATION SYMBOL-5
+1D205;AL # GREEK VOCAL NOTATION SYMBOL-6
+1D206;AL # GREEK VOCAL NOTATION SYMBOL-7
+1D207;AL # GREEK VOCAL NOTATION SYMBOL-8
+1D208;AL # GREEK VOCAL NOTATION SYMBOL-9
+1D209;AL # GREEK VOCAL NOTATION SYMBOL-10
+1D20A;AL # GREEK VOCAL NOTATION SYMBOL-11
+1D20B;AL # GREEK VOCAL NOTATION SYMBOL-12
+1D20C;AL # GREEK VOCAL NOTATION SYMBOL-13
+1D20D;AL # GREEK VOCAL NOTATION SYMBOL-14
+1D20E;AL # GREEK VOCAL NOTATION SYMBOL-15
+1D20F;AL # GREEK VOCAL NOTATION SYMBOL-16
+1D210;AL # GREEK VOCAL NOTATION SYMBOL-17
+1D211;AL # GREEK VOCAL NOTATION SYMBOL-18
+1D212;AL # GREEK VOCAL NOTATION SYMBOL-19
+1D213;AL # GREEK VOCAL NOTATION SYMBOL-20
+1D214;AL # GREEK VOCAL NOTATION SYMBOL-21
+1D215;AL # GREEK VOCAL NOTATION SYMBOL-22
+1D216;AL # GREEK VOCAL NOTATION SYMBOL-23
+1D217;AL # GREEK VOCAL NOTATION SYMBOL-24
+1D218;AL # GREEK VOCAL NOTATION SYMBOL-50
+1D219;AL # GREEK VOCAL NOTATION SYMBOL-51
+1D21A;AL # GREEK VOCAL NOTATION SYMBOL-52
+1D21B;AL # GREEK VOCAL NOTATION SYMBOL-53
+1D21C;AL # GREEK VOCAL NOTATION SYMBOL-54
+1D21D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-1
+1D21E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-2
+1D21F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-4
+1D220;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-5
+1D221;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-7
+1D222;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-8
+1D223;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-11
+1D224;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-12
+1D225;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-13
+1D226;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-14
+1D227;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-17
+1D228;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-18
+1D229;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-19
+1D22A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-23
+1D22B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-24
+1D22C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-25
+1D22D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-26
+1D22E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-27
+1D22F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-29
+1D230;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-30
+1D231;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-32
+1D232;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-36
+1D233;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-37
+1D234;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-38
+1D235;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-39
+1D236;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-40
+1D237;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-42
+1D238;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-43
+1D239;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-45
+1D23A;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-47
+1D23B;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-48
+1D23C;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-49
+1D23D;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-50
+1D23E;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-51
+1D23F;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-52
+1D240;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-53
+1D241;AL # GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D242;CM # COMBINING GREEK MUSICAL TRISEME
+1D243;CM # COMBINING GREEK MUSICAL TETRASEME
+1D244;CM # COMBINING GREEK MUSICAL PENTASEME
+1D245;AL # GREEK MUSICAL LEIMMA
+1D300;AL # MONOGRAM FOR EARTH
+1D301;AL # DIGRAM FOR HEAVENLY EARTH
+1D302;AL # DIGRAM FOR HUMAN EARTH
+1D303;AL # DIGRAM FOR EARTHLY HEAVEN
+1D304;AL # DIGRAM FOR EARTHLY HUMAN
+1D305;AL # DIGRAM FOR EARTH
+1D306;AL # TETRAGRAM FOR CENTRE
+1D307;AL # TETRAGRAM FOR FULL CIRCLE
+1D308;AL # TETRAGRAM FOR MIRED
+1D309;AL # TETRAGRAM FOR BARRIER
+1D30A;AL # TETRAGRAM FOR KEEPING SMALL
+1D30B;AL # TETRAGRAM FOR CONTRARIETY
+1D30C;AL # TETRAGRAM FOR ASCENT
+1D30D;AL # TETRAGRAM FOR OPPOSITION
+1D30E;AL # TETRAGRAM FOR BRANCHING OUT
+1D30F;AL # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
+1D310;AL # TETRAGRAM FOR DIVERGENCE
+1D311;AL # TETRAGRAM FOR YOUTHFULNESS
+1D312;AL # TETRAGRAM FOR INCREASE
+1D313;AL # TETRAGRAM FOR PENETRATION
+1D314;AL # TETRAGRAM FOR REACH
+1D315;AL # TETRAGRAM FOR CONTACT
+1D316;AL # TETRAGRAM FOR HOLDING BACK
+1D317;AL # TETRAGRAM FOR WAITING
+1D318;AL # TETRAGRAM FOR FOLLOWING
+1D319;AL # TETRAGRAM FOR ADVANCE
+1D31A;AL # TETRAGRAM FOR RELEASE
+1D31B;AL # TETRAGRAM FOR RESISTANCE
+1D31C;AL # TETRAGRAM FOR EASE
+1D31D;AL # TETRAGRAM FOR JOY
+1D31E;AL # TETRAGRAM FOR CONTENTION
+1D31F;AL # TETRAGRAM FOR ENDEAVOUR
+1D320;AL # TETRAGRAM FOR DUTIES
+1D321;AL # TETRAGRAM FOR CHANGE
+1D322;AL # TETRAGRAM FOR DECISIVENESS
+1D323;AL # TETRAGRAM FOR BOLD RESOLUTION
+1D324;AL # TETRAGRAM FOR PACKING
+1D325;AL # TETRAGRAM FOR LEGION
+1D326;AL # TETRAGRAM FOR CLOSENESS
+1D327;AL # TETRAGRAM FOR KINSHIP
+1D328;AL # TETRAGRAM FOR GATHERING
+1D329;AL # TETRAGRAM FOR STRENGTH
+1D32A;AL # TETRAGRAM FOR PURITY
+1D32B;AL # TETRAGRAM FOR FULLNESS
+1D32C;AL # TETRAGRAM FOR RESIDENCE
+1D32D;AL # TETRAGRAM FOR LAW OR MODEL
+1D32E;AL # TETRAGRAM FOR RESPONSE
+1D32F;AL # TETRAGRAM FOR GOING TO MEET
+1D330;AL # TETRAGRAM FOR ENCOUNTERS
+1D331;AL # TETRAGRAM FOR STOVE
+1D332;AL # TETRAGRAM FOR GREATNESS
+1D333;AL # TETRAGRAM FOR ENLARGEMENT
+1D334;AL # TETRAGRAM FOR PATTERN
+1D335;AL # TETRAGRAM FOR RITUAL
+1D336;AL # TETRAGRAM FOR FLIGHT
+1D337;AL # TETRAGRAM FOR VASTNESS OR WASTING
+1D338;AL # TETRAGRAM FOR CONSTANCY
+1D339;AL # TETRAGRAM FOR MEASURE
+1D33A;AL # TETRAGRAM FOR ETERNITY
+1D33B;AL # TETRAGRAM FOR UNITY
+1D33C;AL # TETRAGRAM FOR DIMINISHMENT
+1D33D;AL # TETRAGRAM FOR CLOSED MOUTH
+1D33E;AL # TETRAGRAM FOR GUARDEDNESS
+1D33F;AL # TETRAGRAM FOR GATHERING IN
+1D340;AL # TETRAGRAM FOR MASSING
+1D341;AL # TETRAGRAM FOR ACCUMULATION
+1D342;AL # TETRAGRAM FOR EMBELLISHMENT
+1D343;AL # TETRAGRAM FOR DOUBT
+1D344;AL # TETRAGRAM FOR WATCH
+1D345;AL # TETRAGRAM FOR SINKING
+1D346;AL # TETRAGRAM FOR INNER
+1D347;AL # TETRAGRAM FOR DEPARTURE
+1D348;AL # TETRAGRAM FOR DARKENING
+1D349;AL # TETRAGRAM FOR DIMMING
+1D34A;AL # TETRAGRAM FOR EXHAUSTION
+1D34B;AL # TETRAGRAM FOR SEVERANCE
+1D34C;AL # TETRAGRAM FOR STOPPAGE
+1D34D;AL # TETRAGRAM FOR HARDNESS
+1D34E;AL # TETRAGRAM FOR COMPLETION
+1D34F;AL # TETRAGRAM FOR CLOSURE
+1D350;AL # TETRAGRAM FOR FAILURE
+1D351;AL # TETRAGRAM FOR AGGRAVATION
+1D352;AL # TETRAGRAM FOR COMPLIANCE
+1D353;AL # TETRAGRAM FOR ON THE VERGE
+1D354;AL # TETRAGRAM FOR DIFFICULTIES
+1D355;AL # TETRAGRAM FOR LABOURING
+1D356;AL # TETRAGRAM FOR FOSTERING
+1D360;AL # COUNTING ROD UNIT DIGIT ONE
+1D361;AL # COUNTING ROD UNIT DIGIT TWO
+1D362;AL # COUNTING ROD UNIT DIGIT THREE
+1D363;AL # COUNTING ROD UNIT DIGIT FOUR
+1D364;AL # COUNTING ROD UNIT DIGIT FIVE
+1D365;AL # COUNTING ROD UNIT DIGIT SIX
+1D366;AL # COUNTING ROD UNIT DIGIT SEVEN
+1D367;AL # COUNTING ROD UNIT DIGIT EIGHT
+1D368;AL # COUNTING ROD UNIT DIGIT NINE
+1D369;AL # COUNTING ROD TENS DIGIT ONE
+1D36A;AL # COUNTING ROD TENS DIGIT TWO
+1D36B;AL # COUNTING ROD TENS DIGIT THREE
+1D36C;AL # COUNTING ROD TENS DIGIT FOUR
+1D36D;AL # COUNTING ROD TENS DIGIT FIVE
+1D36E;AL # COUNTING ROD TENS DIGIT SIX
+1D36F;AL # COUNTING ROD TENS DIGIT SEVEN
+1D370;AL # COUNTING ROD TENS DIGIT EIGHT
+1D371;AL # COUNTING ROD TENS DIGIT NINE
+1D400;AL # MATHEMATICAL BOLD CAPITAL A
+1D401;AL # MATHEMATICAL BOLD CAPITAL B
+1D402;AL # MATHEMATICAL BOLD CAPITAL C
+1D403;AL # MATHEMATICAL BOLD CAPITAL D
+1D404;AL # MATHEMATICAL BOLD CAPITAL E
+1D405;AL # MATHEMATICAL BOLD CAPITAL F
+1D406;AL # MATHEMATICAL BOLD CAPITAL G
+1D407;AL # MATHEMATICAL BOLD CAPITAL H
+1D408;AL # MATHEMATICAL BOLD CAPITAL I
+1D409;AL # MATHEMATICAL BOLD CAPITAL J
+1D40A;AL # MATHEMATICAL BOLD CAPITAL K
+1D40B;AL # MATHEMATICAL BOLD CAPITAL L
+1D40C;AL # MATHEMATICAL BOLD CAPITAL M
+1D40D;AL # MATHEMATICAL BOLD CAPITAL N
+1D40E;AL # MATHEMATICAL BOLD CAPITAL O
+1D40F;AL # MATHEMATICAL BOLD CAPITAL P
+1D410;AL # MATHEMATICAL BOLD CAPITAL Q
+1D411;AL # MATHEMATICAL BOLD CAPITAL R
+1D412;AL # MATHEMATICAL BOLD CAPITAL S
+1D413;AL # MATHEMATICAL BOLD CAPITAL T
+1D414;AL # MATHEMATICAL BOLD CAPITAL U
+1D415;AL # MATHEMATICAL BOLD CAPITAL V
+1D416;AL # MATHEMATICAL BOLD CAPITAL W
+1D417;AL # MATHEMATICAL BOLD CAPITAL X
+1D418;AL # MATHEMATICAL BOLD CAPITAL Y
+1D419;AL # MATHEMATICAL BOLD CAPITAL Z
+1D41A;AL # MATHEMATICAL BOLD SMALL A
+1D41B;AL # MATHEMATICAL BOLD SMALL B
+1D41C;AL # MATHEMATICAL BOLD SMALL C
+1D41D;AL # MATHEMATICAL BOLD SMALL D
+1D41E;AL # MATHEMATICAL BOLD SMALL E
+1D41F;AL # MATHEMATICAL BOLD SMALL F
+1D420;AL # MATHEMATICAL BOLD SMALL G
+1D421;AL # MATHEMATICAL BOLD SMALL H
+1D422;AL # MATHEMATICAL BOLD SMALL I
+1D423;AL # MATHEMATICAL BOLD SMALL J
+1D424;AL # MATHEMATICAL BOLD SMALL K
+1D425;AL # MATHEMATICAL BOLD SMALL L
+1D426;AL # MATHEMATICAL BOLD SMALL M
+1D427;AL # MATHEMATICAL BOLD SMALL N
+1D428;AL # MATHEMATICAL BOLD SMALL O
+1D429;AL # MATHEMATICAL BOLD SMALL P
+1D42A;AL # MATHEMATICAL BOLD SMALL Q
+1D42B;AL # MATHEMATICAL BOLD SMALL R
+1D42C;AL # MATHEMATICAL BOLD SMALL S
+1D42D;AL # MATHEMATICAL BOLD SMALL T
+1D42E;AL # MATHEMATICAL BOLD SMALL U
+1D42F;AL # MATHEMATICAL BOLD SMALL V
+1D430;AL # MATHEMATICAL BOLD SMALL W
+1D431;AL # MATHEMATICAL BOLD SMALL X
+1D432;AL # MATHEMATICAL BOLD SMALL Y
+1D433;AL # MATHEMATICAL BOLD SMALL Z
+1D434;AL # MATHEMATICAL ITALIC CAPITAL A
+1D435;AL # MATHEMATICAL ITALIC CAPITAL B
+1D436;AL # MATHEMATICAL ITALIC CAPITAL C
+1D437;AL # MATHEMATICAL ITALIC CAPITAL D
+1D438;AL # MATHEMATICAL ITALIC CAPITAL E
+1D439;AL # MATHEMATICAL ITALIC CAPITAL F
+1D43A;AL # MATHEMATICAL ITALIC CAPITAL G
+1D43B;AL # MATHEMATICAL ITALIC CAPITAL H
+1D43C;AL # MATHEMATICAL ITALIC CAPITAL I
+1D43D;AL # MATHEMATICAL ITALIC CAPITAL J
+1D43E;AL # MATHEMATICAL ITALIC CAPITAL K
+1D43F;AL # MATHEMATICAL ITALIC CAPITAL L
+1D440;AL # MATHEMATICAL ITALIC CAPITAL M
+1D441;AL # MATHEMATICAL ITALIC CAPITAL N
+1D442;AL # MATHEMATICAL ITALIC CAPITAL O
+1D443;AL # MATHEMATICAL ITALIC CAPITAL P
+1D444;AL # MATHEMATICAL ITALIC CAPITAL Q
+1D445;AL # MATHEMATICAL ITALIC CAPITAL R
+1D446;AL # MATHEMATICAL ITALIC CAPITAL S
+1D447;AL # MATHEMATICAL ITALIC CAPITAL T
+1D448;AL # MATHEMATICAL ITALIC CAPITAL U
+1D449;AL # MATHEMATICAL ITALIC CAPITAL V
+1D44A;AL # MATHEMATICAL ITALIC CAPITAL W
+1D44B;AL # MATHEMATICAL ITALIC CAPITAL X
+1D44C;AL # MATHEMATICAL ITALIC CAPITAL Y
+1D44D;AL # MATHEMATICAL ITALIC CAPITAL Z
+1D44E;AL # MATHEMATICAL ITALIC SMALL A
+1D44F;AL # MATHEMATICAL ITALIC SMALL B
+1D450;AL # MATHEMATICAL ITALIC SMALL C
+1D451;AL # MATHEMATICAL ITALIC SMALL D
+1D452;AL # MATHEMATICAL ITALIC SMALL E
+1D453;AL # MATHEMATICAL ITALIC SMALL F
+1D454;AL # MATHEMATICAL ITALIC SMALL G
+1D456;AL # MATHEMATICAL ITALIC SMALL I
+1D457;AL # MATHEMATICAL ITALIC SMALL J
+1D458;AL # MATHEMATICAL ITALIC SMALL K
+1D459;AL # MATHEMATICAL ITALIC SMALL L
+1D45A;AL # MATHEMATICAL ITALIC SMALL M
+1D45B;AL # MATHEMATICAL ITALIC SMALL N
+1D45C;AL # MATHEMATICAL ITALIC SMALL O
+1D45D;AL # MATHEMATICAL ITALIC SMALL P
+1D45E;AL # MATHEMATICAL ITALIC SMALL Q
+1D45F;AL # MATHEMATICAL ITALIC SMALL R
+1D460;AL # MATHEMATICAL ITALIC SMALL S
+1D461;AL # MATHEMATICAL ITALIC SMALL T
+1D462;AL # MATHEMATICAL ITALIC SMALL U
+1D463;AL # MATHEMATICAL ITALIC SMALL V
+1D464;AL # MATHEMATICAL ITALIC SMALL W
+1D465;AL # MATHEMATICAL ITALIC SMALL X
+1D466;AL # MATHEMATICAL ITALIC SMALL Y
+1D467;AL # MATHEMATICAL ITALIC SMALL Z
+1D468;AL # MATHEMATICAL BOLD ITALIC CAPITAL A
+1D469;AL # MATHEMATICAL BOLD ITALIC CAPITAL B
+1D46A;AL # MATHEMATICAL BOLD ITALIC CAPITAL C
+1D46B;AL # MATHEMATICAL BOLD ITALIC CAPITAL D
+1D46C;AL # MATHEMATICAL BOLD ITALIC CAPITAL E
+1D46D;AL # MATHEMATICAL BOLD ITALIC CAPITAL F
+1D46E;AL # MATHEMATICAL BOLD ITALIC CAPITAL G
+1D46F;AL # MATHEMATICAL BOLD ITALIC CAPITAL H
+1D470;AL # MATHEMATICAL BOLD ITALIC CAPITAL I
+1D471;AL # MATHEMATICAL BOLD ITALIC CAPITAL J
+1D472;AL # MATHEMATICAL BOLD ITALIC CAPITAL K
+1D473;AL # MATHEMATICAL BOLD ITALIC CAPITAL L
+1D474;AL # MATHEMATICAL BOLD ITALIC CAPITAL M
+1D475;AL # MATHEMATICAL BOLD ITALIC CAPITAL N
+1D476;AL # MATHEMATICAL BOLD ITALIC CAPITAL O
+1D477;AL # MATHEMATICAL BOLD ITALIC CAPITAL P
+1D478;AL # MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D479;AL # MATHEMATICAL BOLD ITALIC CAPITAL R
+1D47A;AL # MATHEMATICAL BOLD ITALIC CAPITAL S
+1D47B;AL # MATHEMATICAL BOLD ITALIC CAPITAL T
+1D47C;AL # MATHEMATICAL BOLD ITALIC CAPITAL U
+1D47D;AL # MATHEMATICAL BOLD ITALIC CAPITAL V
+1D47E;AL # MATHEMATICAL BOLD ITALIC CAPITAL W
+1D47F;AL # MATHEMATICAL BOLD ITALIC CAPITAL X
+1D480;AL # MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D481;AL # MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D482;AL # MATHEMATICAL BOLD ITALIC SMALL A
+1D483;AL # MATHEMATICAL BOLD ITALIC SMALL B
+1D484;AL # MATHEMATICAL BOLD ITALIC SMALL C
+1D485;AL # MATHEMATICAL BOLD ITALIC SMALL D
+1D486;AL # MATHEMATICAL BOLD ITALIC SMALL E
+1D487;AL # MATHEMATICAL BOLD ITALIC SMALL F
+1D488;AL # MATHEMATICAL BOLD ITALIC SMALL G
+1D489;AL # MATHEMATICAL BOLD ITALIC SMALL H
+1D48A;AL # MATHEMATICAL BOLD ITALIC SMALL I
+1D48B;AL # MATHEMATICAL BOLD ITALIC SMALL J
+1D48C;AL # MATHEMATICAL BOLD ITALIC SMALL K
+1D48D;AL # MATHEMATICAL BOLD ITALIC SMALL L
+1D48E;AL # MATHEMATICAL BOLD ITALIC SMALL M
+1D48F;AL # MATHEMATICAL BOLD ITALIC SMALL N
+1D490;AL # MATHEMATICAL BOLD ITALIC SMALL O
+1D491;AL # MATHEMATICAL BOLD ITALIC SMALL P
+1D492;AL # MATHEMATICAL BOLD ITALIC SMALL Q
+1D493;AL # MATHEMATICAL BOLD ITALIC SMALL R
+1D494;AL # MATHEMATICAL BOLD ITALIC SMALL S
+1D495;AL # MATHEMATICAL BOLD ITALIC SMALL T
+1D496;AL # MATHEMATICAL BOLD ITALIC SMALL U
+1D497;AL # MATHEMATICAL BOLD ITALIC SMALL V
+1D498;AL # MATHEMATICAL BOLD ITALIC SMALL W
+1D499;AL # MATHEMATICAL BOLD ITALIC SMALL X
+1D49A;AL # MATHEMATICAL BOLD ITALIC SMALL Y
+1D49B;AL # MATHEMATICAL BOLD ITALIC SMALL Z
+1D49C;AL # MATHEMATICAL SCRIPT CAPITAL A
+1D49E;AL # MATHEMATICAL SCRIPT CAPITAL C
+1D49F;AL # MATHEMATICAL SCRIPT CAPITAL D
+1D4A2;AL # MATHEMATICAL SCRIPT CAPITAL G
+1D4A5;AL # MATHEMATICAL SCRIPT CAPITAL J
+1D4A6;AL # MATHEMATICAL SCRIPT CAPITAL K
+1D4A9;AL # MATHEMATICAL SCRIPT CAPITAL N
+1D4AA;AL # MATHEMATICAL SCRIPT CAPITAL O
+1D4AB;AL # MATHEMATICAL SCRIPT CAPITAL P
+1D4AC;AL # MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE;AL # MATHEMATICAL SCRIPT CAPITAL S
+1D4AF;AL # MATHEMATICAL SCRIPT CAPITAL T
+1D4B0;AL # MATHEMATICAL SCRIPT CAPITAL U
+1D4B1;AL # MATHEMATICAL SCRIPT CAPITAL V
+1D4B2;AL # MATHEMATICAL SCRIPT CAPITAL W
+1D4B3;AL # MATHEMATICAL SCRIPT CAPITAL X
+1D4B4;AL # MATHEMATICAL SCRIPT CAPITAL Y
+1D4B5;AL # MATHEMATICAL SCRIPT CAPITAL Z
+1D4B6;AL # MATHEMATICAL SCRIPT SMALL A
+1D4B7;AL # MATHEMATICAL SCRIPT SMALL B
+1D4B8;AL # MATHEMATICAL SCRIPT SMALL C
+1D4B9;AL # MATHEMATICAL SCRIPT SMALL D
+1D4BB;AL # MATHEMATICAL SCRIPT SMALL F
+1D4BD;AL # MATHEMATICAL SCRIPT SMALL H
+1D4BE;AL # MATHEMATICAL SCRIPT SMALL I
+1D4BF;AL # MATHEMATICAL SCRIPT SMALL J
+1D4C0;AL # MATHEMATICAL SCRIPT SMALL K
+1D4C1;AL # MATHEMATICAL SCRIPT SMALL L
+1D4C2;AL # MATHEMATICAL SCRIPT SMALL M
+1D4C3;AL # MATHEMATICAL SCRIPT SMALL N
+1D4C5;AL # MATHEMATICAL SCRIPT SMALL P
+1D4C6;AL # MATHEMATICAL SCRIPT SMALL Q
+1D4C7;AL # MATHEMATICAL SCRIPT SMALL R
+1D4C8;AL # MATHEMATICAL SCRIPT SMALL S
+1D4C9;AL # MATHEMATICAL SCRIPT SMALL T
+1D4CA;AL # MATHEMATICAL SCRIPT SMALL U
+1D4CB;AL # MATHEMATICAL SCRIPT SMALL V
+1D4CC;AL # MATHEMATICAL SCRIPT SMALL W
+1D4CD;AL # MATHEMATICAL SCRIPT SMALL X
+1D4CE;AL # MATHEMATICAL SCRIPT SMALL Y
+1D4CF;AL # MATHEMATICAL SCRIPT SMALL Z
+1D4D0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D4D1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D4D2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D4D3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D4D4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D4D5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D4D6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D4D7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D4D8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D4D9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D4DA;AL # MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D4DB;AL # MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D4DC;AL # MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D4DD;AL # MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D4DE;AL # MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D4DF;AL # MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D4E0;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D4E1;AL # MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D4E2;AL # MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D4E3;AL # MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D4E4;AL # MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D4E5;AL # MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D4E6;AL # MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D4E7;AL # MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D4E8;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D4E9;AL # MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D4EA;AL # MATHEMATICAL BOLD SCRIPT SMALL A
+1D4EB;AL # MATHEMATICAL BOLD SCRIPT SMALL B
+1D4EC;AL # MATHEMATICAL BOLD SCRIPT SMALL C
+1D4ED;AL # MATHEMATICAL BOLD SCRIPT SMALL D
+1D4EE;AL # MATHEMATICAL BOLD SCRIPT SMALL E
+1D4EF;AL # MATHEMATICAL BOLD SCRIPT SMALL F
+1D4F0;AL # MATHEMATICAL BOLD SCRIPT SMALL G
+1D4F1;AL # MATHEMATICAL BOLD SCRIPT SMALL H
+1D4F2;AL # MATHEMATICAL BOLD SCRIPT SMALL I
+1D4F3;AL # MATHEMATICAL BOLD SCRIPT SMALL J
+1D4F4;AL # MATHEMATICAL BOLD SCRIPT SMALL K
+1D4F5;AL # MATHEMATICAL BOLD SCRIPT SMALL L
+1D4F6;AL # MATHEMATICAL BOLD SCRIPT SMALL M
+1D4F7;AL # MATHEMATICAL BOLD SCRIPT SMALL N
+1D4F8;AL # MATHEMATICAL BOLD SCRIPT SMALL O
+1D4F9;AL # MATHEMATICAL BOLD SCRIPT SMALL P
+1D4FA;AL # MATHEMATICAL BOLD SCRIPT SMALL Q
+1D4FB;AL # MATHEMATICAL BOLD SCRIPT SMALL R
+1D4FC;AL # MATHEMATICAL BOLD SCRIPT SMALL S
+1D4FD;AL # MATHEMATICAL BOLD SCRIPT SMALL T
+1D4FE;AL # MATHEMATICAL BOLD SCRIPT SMALL U
+1D4FF;AL # MATHEMATICAL BOLD SCRIPT SMALL V
+1D500;AL # MATHEMATICAL BOLD SCRIPT SMALL W
+1D501;AL # MATHEMATICAL BOLD SCRIPT SMALL X
+1D502;AL # MATHEMATICAL BOLD SCRIPT SMALL Y
+1D503;AL # MATHEMATICAL BOLD SCRIPT SMALL Z
+1D504;AL # MATHEMATICAL FRAKTUR CAPITAL A
+1D505;AL # MATHEMATICAL FRAKTUR CAPITAL B
+1D507;AL # MATHEMATICAL FRAKTUR CAPITAL D
+1D508;AL # MATHEMATICAL FRAKTUR CAPITAL E
+1D509;AL # MATHEMATICAL FRAKTUR CAPITAL F
+1D50A;AL # MATHEMATICAL FRAKTUR CAPITAL G
+1D50D;AL # MATHEMATICAL FRAKTUR CAPITAL J
+1D50E;AL # MATHEMATICAL FRAKTUR CAPITAL K
+1D50F;AL # MATHEMATICAL FRAKTUR CAPITAL L
+1D510;AL # MATHEMATICAL FRAKTUR CAPITAL M
+1D511;AL # MATHEMATICAL FRAKTUR CAPITAL N
+1D512;AL # MATHEMATICAL FRAKTUR CAPITAL O
+1D513;AL # MATHEMATICAL FRAKTUR CAPITAL P
+1D514;AL # MATHEMATICAL FRAKTUR CAPITAL Q
+1D516;AL # MATHEMATICAL FRAKTUR CAPITAL S
+1D517;AL # MATHEMATICAL FRAKTUR CAPITAL T
+1D518;AL # MATHEMATICAL FRAKTUR CAPITAL U
+1D519;AL # MATHEMATICAL FRAKTUR CAPITAL V
+1D51A;AL # MATHEMATICAL FRAKTUR CAPITAL W
+1D51B;AL # MATHEMATICAL FRAKTUR CAPITAL X
+1D51C;AL # MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E;AL # MATHEMATICAL FRAKTUR SMALL A
+1D51F;AL # MATHEMATICAL FRAKTUR SMALL B
+1D520;AL # MATHEMATICAL FRAKTUR SMALL C
+1D521;AL # MATHEMATICAL FRAKTUR SMALL D
+1D522;AL # MATHEMATICAL FRAKTUR SMALL E
+1D523;AL # MATHEMATICAL FRAKTUR SMALL F
+1D524;AL # MATHEMATICAL FRAKTUR SMALL G
+1D525;AL # MATHEMATICAL FRAKTUR SMALL H
+1D526;AL # MATHEMATICAL FRAKTUR SMALL I
+1D527;AL # MATHEMATICAL FRAKTUR SMALL J
+1D528;AL # MATHEMATICAL FRAKTUR SMALL K
+1D529;AL # MATHEMATICAL FRAKTUR SMALL L
+1D52A;AL # MATHEMATICAL FRAKTUR SMALL M
+1D52B;AL # MATHEMATICAL FRAKTUR SMALL N
+1D52C;AL # MATHEMATICAL FRAKTUR SMALL O
+1D52D;AL # MATHEMATICAL FRAKTUR SMALL P
+1D52E;AL # MATHEMATICAL FRAKTUR SMALL Q
+1D52F;AL # MATHEMATICAL FRAKTUR SMALL R
+1D530;AL # MATHEMATICAL FRAKTUR SMALL S
+1D531;AL # MATHEMATICAL FRAKTUR SMALL T
+1D532;AL # MATHEMATICAL FRAKTUR SMALL U
+1D533;AL # MATHEMATICAL FRAKTUR SMALL V
+1D534;AL # MATHEMATICAL FRAKTUR SMALL W
+1D535;AL # MATHEMATICAL FRAKTUR SMALL X
+1D536;AL # MATHEMATICAL FRAKTUR SMALL Y
+1D537;AL # MATHEMATICAL FRAKTUR SMALL Z
+1D538;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D539;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D53C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D53D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D53E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D541;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D542;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D543;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D544;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D54B;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D54C;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D54D;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D54E;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D54F;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D550;AL # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552;AL # MATHEMATICAL DOUBLE-STRUCK SMALL A
+1D553;AL # MATHEMATICAL DOUBLE-STRUCK SMALL B
+1D554;AL # MATHEMATICAL DOUBLE-STRUCK SMALL C
+1D555;AL # MATHEMATICAL DOUBLE-STRUCK SMALL D
+1D556;AL # MATHEMATICAL DOUBLE-STRUCK SMALL E
+1D557;AL # MATHEMATICAL DOUBLE-STRUCK SMALL F
+1D558;AL # MATHEMATICAL DOUBLE-STRUCK SMALL G
+1D559;AL # MATHEMATICAL DOUBLE-STRUCK SMALL H
+1D55A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL I
+1D55B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL J
+1D55C;AL # MATHEMATICAL DOUBLE-STRUCK SMALL K
+1D55D;AL # MATHEMATICAL DOUBLE-STRUCK SMALL L
+1D55E;AL # MATHEMATICAL DOUBLE-STRUCK SMALL M
+1D55F;AL # MATHEMATICAL DOUBLE-STRUCK SMALL N
+1D560;AL # MATHEMATICAL DOUBLE-STRUCK SMALL O
+1D561;AL # MATHEMATICAL DOUBLE-STRUCK SMALL P
+1D562;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Q
+1D563;AL # MATHEMATICAL DOUBLE-STRUCK SMALL R
+1D564;AL # MATHEMATICAL DOUBLE-STRUCK SMALL S
+1D565;AL # MATHEMATICAL DOUBLE-STRUCK SMALL T
+1D566;AL # MATHEMATICAL DOUBLE-STRUCK SMALL U
+1D567;AL # MATHEMATICAL DOUBLE-STRUCK SMALL V
+1D568;AL # MATHEMATICAL DOUBLE-STRUCK SMALL W
+1D569;AL # MATHEMATICAL DOUBLE-STRUCK SMALL X
+1D56A;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Y
+1D56B;AL # MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D56C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D56D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D56E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D56F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D570;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D571;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D572;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D573;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D574;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D575;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D576;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D577;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D578;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D579;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D57A;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D57B;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D57C;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D57D;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D57E;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D57F;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D580;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D581;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D582;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D583;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D584;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D585;AL # MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D586;AL # MATHEMATICAL BOLD FRAKTUR SMALL A
+1D587;AL # MATHEMATICAL BOLD FRAKTUR SMALL B
+1D588;AL # MATHEMATICAL BOLD FRAKTUR SMALL C
+1D589;AL # MATHEMATICAL BOLD FRAKTUR SMALL D
+1D58A;AL # MATHEMATICAL BOLD FRAKTUR SMALL E
+1D58B;AL # MATHEMATICAL BOLD FRAKTUR SMALL F
+1D58C;AL # MATHEMATICAL BOLD FRAKTUR SMALL G
+1D58D;AL # MATHEMATICAL BOLD FRAKTUR SMALL H
+1D58E;AL # MATHEMATICAL BOLD FRAKTUR SMALL I
+1D58F;AL # MATHEMATICAL BOLD FRAKTUR SMALL J
+1D590;AL # MATHEMATICAL BOLD FRAKTUR SMALL K
+1D591;AL # MATHEMATICAL BOLD FRAKTUR SMALL L
+1D592;AL # MATHEMATICAL BOLD FRAKTUR SMALL M
+1D593;AL # MATHEMATICAL BOLD FRAKTUR SMALL N
+1D594;AL # MATHEMATICAL BOLD FRAKTUR SMALL O
+1D595;AL # MATHEMATICAL BOLD FRAKTUR SMALL P
+1D596;AL # MATHEMATICAL BOLD FRAKTUR SMALL Q
+1D597;AL # MATHEMATICAL BOLD FRAKTUR SMALL R
+1D598;AL # MATHEMATICAL BOLD FRAKTUR SMALL S
+1D599;AL # MATHEMATICAL BOLD FRAKTUR SMALL T
+1D59A;AL # MATHEMATICAL BOLD FRAKTUR SMALL U
+1D59B;AL # MATHEMATICAL BOLD FRAKTUR SMALL V
+1D59C;AL # MATHEMATICAL BOLD FRAKTUR SMALL W
+1D59D;AL # MATHEMATICAL BOLD FRAKTUR SMALL X
+1D59E;AL # MATHEMATICAL BOLD FRAKTUR SMALL Y
+1D59F;AL # MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5A0;AL # MATHEMATICAL SANS-SERIF CAPITAL A
+1D5A1;AL # MATHEMATICAL SANS-SERIF CAPITAL B
+1D5A2;AL # MATHEMATICAL SANS-SERIF CAPITAL C
+1D5A3;AL # MATHEMATICAL SANS-SERIF CAPITAL D
+1D5A4;AL # MATHEMATICAL SANS-SERIF CAPITAL E
+1D5A5;AL # MATHEMATICAL SANS-SERIF CAPITAL F
+1D5A6;AL # MATHEMATICAL SANS-SERIF CAPITAL G
+1D5A7;AL # MATHEMATICAL SANS-SERIF CAPITAL H
+1D5A8;AL # MATHEMATICAL SANS-SERIF CAPITAL I
+1D5A9;AL # MATHEMATICAL SANS-SERIF CAPITAL J
+1D5AA;AL # MATHEMATICAL SANS-SERIF CAPITAL K
+1D5AB;AL # MATHEMATICAL SANS-SERIF CAPITAL L
+1D5AC;AL # MATHEMATICAL SANS-SERIF CAPITAL M
+1D5AD;AL # MATHEMATICAL SANS-SERIF CAPITAL N
+1D5AE;AL # MATHEMATICAL SANS-SERIF CAPITAL O
+1D5AF;AL # MATHEMATICAL SANS-SERIF CAPITAL P
+1D5B0;AL # MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5B1;AL # MATHEMATICAL SANS-SERIF CAPITAL R
+1D5B2;AL # MATHEMATICAL SANS-SERIF CAPITAL S
+1D5B3;AL # MATHEMATICAL SANS-SERIF CAPITAL T
+1D5B4;AL # MATHEMATICAL SANS-SERIF CAPITAL U
+1D5B5;AL # MATHEMATICAL SANS-SERIF CAPITAL V
+1D5B6;AL # MATHEMATICAL SANS-SERIF CAPITAL W
+1D5B7;AL # MATHEMATICAL SANS-SERIF CAPITAL X
+1D5B8;AL # MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5B9;AL # MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5BA;AL # MATHEMATICAL SANS-SERIF SMALL A
+1D5BB;AL # MATHEMATICAL SANS-SERIF SMALL B
+1D5BC;AL # MATHEMATICAL SANS-SERIF SMALL C
+1D5BD;AL # MATHEMATICAL SANS-SERIF SMALL D
+1D5BE;AL # MATHEMATICAL SANS-SERIF SMALL E
+1D5BF;AL # MATHEMATICAL SANS-SERIF SMALL F
+1D5C0;AL # MATHEMATICAL SANS-SERIF SMALL G
+1D5C1;AL # MATHEMATICAL SANS-SERIF SMALL H
+1D5C2;AL # MATHEMATICAL SANS-SERIF SMALL I
+1D5C3;AL # MATHEMATICAL SANS-SERIF SMALL J
+1D5C4;AL # MATHEMATICAL SANS-SERIF SMALL K
+1D5C5;AL # MATHEMATICAL SANS-SERIF SMALL L
+1D5C6;AL # MATHEMATICAL SANS-SERIF SMALL M
+1D5C7;AL # MATHEMATICAL SANS-SERIF SMALL N
+1D5C8;AL # MATHEMATICAL SANS-SERIF SMALL O
+1D5C9;AL # MATHEMATICAL SANS-SERIF SMALL P
+1D5CA;AL # MATHEMATICAL SANS-SERIF SMALL Q
+1D5CB;AL # MATHEMATICAL SANS-SERIF SMALL R
+1D5CC;AL # MATHEMATICAL SANS-SERIF SMALL S
+1D5CD;AL # MATHEMATICAL SANS-SERIF SMALL T
+1D5CE;AL # MATHEMATICAL SANS-SERIF SMALL U
+1D5CF;AL # MATHEMATICAL SANS-SERIF SMALL V
+1D5D0;AL # MATHEMATICAL SANS-SERIF SMALL W
+1D5D1;AL # MATHEMATICAL SANS-SERIF SMALL X
+1D5D2;AL # MATHEMATICAL SANS-SERIF SMALL Y
+1D5D3;AL # MATHEMATICAL SANS-SERIF SMALL Z
+1D5D4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D5D5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D5D6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D5D7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D5D8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D5D9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D5DA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D5DB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D5DC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D5DD;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D5DE;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D5DF;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D5E0;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D5E1;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D5E2;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D5E3;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D5E4;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D5E5;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D5E6;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D5E7;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D5E8;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D5E9;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D5EA;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D5EB;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D5EC;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D5ED;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D5EE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL A
+1D5EF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL B
+1D5F0;AL # MATHEMATICAL SANS-SERIF BOLD SMALL C
+1D5F1;AL # MATHEMATICAL SANS-SERIF BOLD SMALL D
+1D5F2;AL # MATHEMATICAL SANS-SERIF BOLD SMALL E
+1D5F3;AL # MATHEMATICAL SANS-SERIF BOLD SMALL F
+1D5F4;AL # MATHEMATICAL SANS-SERIF BOLD SMALL G
+1D5F5;AL # MATHEMATICAL SANS-SERIF BOLD SMALL H
+1D5F6;AL # MATHEMATICAL SANS-SERIF BOLD SMALL I
+1D5F7;AL # MATHEMATICAL SANS-SERIF BOLD SMALL J
+1D5F8;AL # MATHEMATICAL SANS-SERIF BOLD SMALL K
+1D5F9;AL # MATHEMATICAL SANS-SERIF BOLD SMALL L
+1D5FA;AL # MATHEMATICAL SANS-SERIF BOLD SMALL M
+1D5FB;AL # MATHEMATICAL SANS-SERIF BOLD SMALL N
+1D5FC;AL # MATHEMATICAL SANS-SERIF BOLD SMALL O
+1D5FD;AL # MATHEMATICAL SANS-SERIF BOLD SMALL P
+1D5FE;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Q
+1D5FF;AL # MATHEMATICAL SANS-SERIF BOLD SMALL R
+1D600;AL # MATHEMATICAL SANS-SERIF BOLD SMALL S
+1D601;AL # MATHEMATICAL SANS-SERIF BOLD SMALL T
+1D602;AL # MATHEMATICAL SANS-SERIF BOLD SMALL U
+1D603;AL # MATHEMATICAL SANS-SERIF BOLD SMALL V
+1D604;AL # MATHEMATICAL SANS-SERIF BOLD SMALL W
+1D605;AL # MATHEMATICAL SANS-SERIF BOLD SMALL X
+1D606;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Y
+1D607;AL # MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D608;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D609;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D60A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D60B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D60C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D60D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D60E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D60F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D610;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D611;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D612;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D613;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D614;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D615;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D616;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D617;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D618;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D619;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D61A;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D61B;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D61C;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D61D;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D61E;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D61F;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D620;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D621;AL # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D622;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL A
+1D623;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL B
+1D624;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL C
+1D625;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL D
+1D626;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL E
+1D627;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL F
+1D628;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL G
+1D629;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL H
+1D62A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL I
+1D62B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL J
+1D62C;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL K
+1D62D;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL L
+1D62E;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL M
+1D62F;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL N
+1D630;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL O
+1D631;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL P
+1D632;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+1D633;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL R
+1D634;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL S
+1D635;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL T
+1D636;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL U
+1D637;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL V
+1D638;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL W
+1D639;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL X
+1D63A;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+1D63B;AL # MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D63C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D63D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D63E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D63F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D640;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D641;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D642;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D643;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D644;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D645;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D646;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D647;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D648;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D649;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D64A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D64B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D64C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D64D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D64E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D64F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D650;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D651;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D652;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D653;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D654;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D655;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D656;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+1D657;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+1D658;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+1D659;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+1D65A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+1D65B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+1D65C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+1D65D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+1D65E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+1D65F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+1D660;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+1D661;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+1D662;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+1D663;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+1D664;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+1D665;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+1D666;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+1D667;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+1D668;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+1D669;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+1D66A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+1D66B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+1D66C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+1D66D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+1D66E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+1D66F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D670;AL # MATHEMATICAL MONOSPACE CAPITAL A
+1D671;AL # MATHEMATICAL MONOSPACE CAPITAL B
+1D672;AL # MATHEMATICAL MONOSPACE CAPITAL C
+1D673;AL # MATHEMATICAL MONOSPACE CAPITAL D
+1D674;AL # MATHEMATICAL MONOSPACE CAPITAL E
+1D675;AL # MATHEMATICAL MONOSPACE CAPITAL F
+1D676;AL # MATHEMATICAL MONOSPACE CAPITAL G
+1D677;AL # MATHEMATICAL MONOSPACE CAPITAL H
+1D678;AL # MATHEMATICAL MONOSPACE CAPITAL I
+1D679;AL # MATHEMATICAL MONOSPACE CAPITAL J
+1D67A;AL # MATHEMATICAL MONOSPACE CAPITAL K
+1D67B;AL # MATHEMATICAL MONOSPACE CAPITAL L
+1D67C;AL # MATHEMATICAL MONOSPACE CAPITAL M
+1D67D;AL # MATHEMATICAL MONOSPACE CAPITAL N
+1D67E;AL # MATHEMATICAL MONOSPACE CAPITAL O
+1D67F;AL # MATHEMATICAL MONOSPACE CAPITAL P
+1D680;AL # MATHEMATICAL MONOSPACE CAPITAL Q
+1D681;AL # MATHEMATICAL MONOSPACE CAPITAL R
+1D682;AL # MATHEMATICAL MONOSPACE CAPITAL S
+1D683;AL # MATHEMATICAL MONOSPACE CAPITAL T
+1D684;AL # MATHEMATICAL MONOSPACE CAPITAL U
+1D685;AL # MATHEMATICAL MONOSPACE CAPITAL V
+1D686;AL # MATHEMATICAL MONOSPACE CAPITAL W
+1D687;AL # MATHEMATICAL MONOSPACE CAPITAL X
+1D688;AL # MATHEMATICAL MONOSPACE CAPITAL Y
+1D689;AL # MATHEMATICAL MONOSPACE CAPITAL Z
+1D68A;AL # MATHEMATICAL MONOSPACE SMALL A
+1D68B;AL # MATHEMATICAL MONOSPACE SMALL B
+1D68C;AL # MATHEMATICAL MONOSPACE SMALL C
+1D68D;AL # MATHEMATICAL MONOSPACE SMALL D
+1D68E;AL # MATHEMATICAL MONOSPACE SMALL E
+1D68F;AL # MATHEMATICAL MONOSPACE SMALL F
+1D690;AL # MATHEMATICAL MONOSPACE SMALL G
+1D691;AL # MATHEMATICAL MONOSPACE SMALL H
+1D692;AL # MATHEMATICAL MONOSPACE SMALL I
+1D693;AL # MATHEMATICAL MONOSPACE SMALL J
+1D694;AL # MATHEMATICAL MONOSPACE SMALL K
+1D695;AL # MATHEMATICAL MONOSPACE SMALL L
+1D696;AL # MATHEMATICAL MONOSPACE SMALL M
+1D697;AL # MATHEMATICAL MONOSPACE SMALL N
+1D698;AL # MATHEMATICAL MONOSPACE SMALL O
+1D699;AL # MATHEMATICAL MONOSPACE SMALL P
+1D69A;AL # MATHEMATICAL MONOSPACE SMALL Q
+1D69B;AL # MATHEMATICAL MONOSPACE SMALL R
+1D69C;AL # MATHEMATICAL MONOSPACE SMALL S
+1D69D;AL # MATHEMATICAL MONOSPACE SMALL T
+1D69E;AL # MATHEMATICAL MONOSPACE SMALL U
+1D69F;AL # MATHEMATICAL MONOSPACE SMALL V
+1D6A0;AL # MATHEMATICAL MONOSPACE SMALL W
+1D6A1;AL # MATHEMATICAL MONOSPACE SMALL X
+1D6A2;AL # MATHEMATICAL MONOSPACE SMALL Y
+1D6A3;AL # MATHEMATICAL MONOSPACE SMALL Z
+1D6A4;AL # MATHEMATICAL ITALIC SMALL DOTLESS I
+1D6A5;AL # MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8;AL # MATHEMATICAL BOLD CAPITAL ALPHA
+1D6A9;AL # MATHEMATICAL BOLD CAPITAL BETA
+1D6AA;AL # MATHEMATICAL BOLD CAPITAL GAMMA
+1D6AB;AL # MATHEMATICAL BOLD CAPITAL DELTA
+1D6AC;AL # MATHEMATICAL BOLD CAPITAL EPSILON
+1D6AD;AL # MATHEMATICAL BOLD CAPITAL ZETA
+1D6AE;AL # MATHEMATICAL BOLD CAPITAL ETA
+1D6AF;AL # MATHEMATICAL BOLD CAPITAL THETA
+1D6B0;AL # MATHEMATICAL BOLD CAPITAL IOTA
+1D6B1;AL # MATHEMATICAL BOLD CAPITAL KAPPA
+1D6B2;AL # MATHEMATICAL BOLD CAPITAL LAMDA
+1D6B3;AL # MATHEMATICAL BOLD CAPITAL MU
+1D6B4;AL # MATHEMATICAL BOLD CAPITAL NU
+1D6B5;AL # MATHEMATICAL BOLD CAPITAL XI
+1D6B6;AL # MATHEMATICAL BOLD CAPITAL OMICRON
+1D6B7;AL # MATHEMATICAL BOLD CAPITAL PI
+1D6B8;AL # MATHEMATICAL BOLD CAPITAL RHO
+1D6B9;AL # MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6BA;AL # MATHEMATICAL BOLD CAPITAL SIGMA
+1D6BB;AL # MATHEMATICAL BOLD CAPITAL TAU
+1D6BC;AL # MATHEMATICAL BOLD CAPITAL UPSILON
+1D6BD;AL # MATHEMATICAL BOLD CAPITAL PHI
+1D6BE;AL # MATHEMATICAL BOLD CAPITAL CHI
+1D6BF;AL # MATHEMATICAL BOLD CAPITAL PSI
+1D6C0;AL # MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1;AL # MATHEMATICAL BOLD NABLA
+1D6C2;AL # MATHEMATICAL BOLD SMALL ALPHA
+1D6C3;AL # MATHEMATICAL BOLD SMALL BETA
+1D6C4;AL # MATHEMATICAL BOLD SMALL GAMMA
+1D6C5;AL # MATHEMATICAL BOLD SMALL DELTA
+1D6C6;AL # MATHEMATICAL BOLD SMALL EPSILON
+1D6C7;AL # MATHEMATICAL BOLD SMALL ZETA
+1D6C8;AL # MATHEMATICAL BOLD SMALL ETA
+1D6C9;AL # MATHEMATICAL BOLD SMALL THETA
+1D6CA;AL # MATHEMATICAL BOLD SMALL IOTA
+1D6CB;AL # MATHEMATICAL BOLD SMALL KAPPA
+1D6CC;AL # MATHEMATICAL BOLD SMALL LAMDA
+1D6CD;AL # MATHEMATICAL BOLD SMALL MU
+1D6CE;AL # MATHEMATICAL BOLD SMALL NU
+1D6CF;AL # MATHEMATICAL BOLD SMALL XI
+1D6D0;AL # MATHEMATICAL BOLD SMALL OMICRON
+1D6D1;AL # MATHEMATICAL BOLD SMALL PI
+1D6D2;AL # MATHEMATICAL BOLD SMALL RHO
+1D6D3;AL # MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6D4;AL # MATHEMATICAL BOLD SMALL SIGMA
+1D6D5;AL # MATHEMATICAL BOLD SMALL TAU
+1D6D6;AL # MATHEMATICAL BOLD SMALL UPSILON
+1D6D7;AL # MATHEMATICAL BOLD SMALL PHI
+1D6D8;AL # MATHEMATICAL BOLD SMALL CHI
+1D6D9;AL # MATHEMATICAL BOLD SMALL PSI
+1D6DA;AL # MATHEMATICAL BOLD SMALL OMEGA
+1D6DB;AL # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC;AL # MATHEMATICAL BOLD EPSILON SYMBOL
+1D6DD;AL # MATHEMATICAL BOLD THETA SYMBOL
+1D6DE;AL # MATHEMATICAL BOLD KAPPA SYMBOL
+1D6DF;AL # MATHEMATICAL BOLD PHI SYMBOL
+1D6E0;AL # MATHEMATICAL BOLD RHO SYMBOL
+1D6E1;AL # MATHEMATICAL BOLD PI SYMBOL
+1D6E2;AL # MATHEMATICAL ITALIC CAPITAL ALPHA
+1D6E3;AL # MATHEMATICAL ITALIC CAPITAL BETA
+1D6E4;AL # MATHEMATICAL ITALIC CAPITAL GAMMA
+1D6E5;AL # MATHEMATICAL ITALIC CAPITAL DELTA
+1D6E6;AL # MATHEMATICAL ITALIC CAPITAL EPSILON
+1D6E7;AL # MATHEMATICAL ITALIC CAPITAL ZETA
+1D6E8;AL # MATHEMATICAL ITALIC CAPITAL ETA
+1D6E9;AL # MATHEMATICAL ITALIC CAPITAL THETA
+1D6EA;AL # MATHEMATICAL ITALIC CAPITAL IOTA
+1D6EB;AL # MATHEMATICAL ITALIC CAPITAL KAPPA
+1D6EC;AL # MATHEMATICAL ITALIC CAPITAL LAMDA
+1D6ED;AL # MATHEMATICAL ITALIC CAPITAL MU
+1D6EE;AL # MATHEMATICAL ITALIC CAPITAL NU
+1D6EF;AL # MATHEMATICAL ITALIC CAPITAL XI
+1D6F0;AL # MATHEMATICAL ITALIC CAPITAL OMICRON
+1D6F1;AL # MATHEMATICAL ITALIC CAPITAL PI
+1D6F2;AL # MATHEMATICAL ITALIC CAPITAL RHO
+1D6F3;AL # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D6F4;AL # MATHEMATICAL ITALIC CAPITAL SIGMA
+1D6F5;AL # MATHEMATICAL ITALIC CAPITAL TAU
+1D6F6;AL # MATHEMATICAL ITALIC CAPITAL UPSILON
+1D6F7;AL # MATHEMATICAL ITALIC CAPITAL PHI
+1D6F8;AL # MATHEMATICAL ITALIC CAPITAL CHI
+1D6F9;AL # MATHEMATICAL ITALIC CAPITAL PSI
+1D6FA;AL # MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB;AL # MATHEMATICAL ITALIC NABLA
+1D6FC;AL # MATHEMATICAL ITALIC SMALL ALPHA
+1D6FD;AL # MATHEMATICAL ITALIC SMALL BETA
+1D6FE;AL # MATHEMATICAL ITALIC SMALL GAMMA
+1D6FF;AL # MATHEMATICAL ITALIC SMALL DELTA
+1D700;AL # MATHEMATICAL ITALIC SMALL EPSILON
+1D701;AL # MATHEMATICAL ITALIC SMALL ZETA
+1D702;AL # MATHEMATICAL ITALIC SMALL ETA
+1D703;AL # MATHEMATICAL ITALIC SMALL THETA
+1D704;AL # MATHEMATICAL ITALIC SMALL IOTA
+1D705;AL # MATHEMATICAL ITALIC SMALL KAPPA
+1D706;AL # MATHEMATICAL ITALIC SMALL LAMDA
+1D707;AL # MATHEMATICAL ITALIC SMALL MU
+1D708;AL # MATHEMATICAL ITALIC SMALL NU
+1D709;AL # MATHEMATICAL ITALIC SMALL XI
+1D70A;AL # MATHEMATICAL ITALIC SMALL OMICRON
+1D70B;AL # MATHEMATICAL ITALIC SMALL PI
+1D70C;AL # MATHEMATICAL ITALIC SMALL RHO
+1D70D;AL # MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D70E;AL # MATHEMATICAL ITALIC SMALL SIGMA
+1D70F;AL # MATHEMATICAL ITALIC SMALL TAU
+1D710;AL # MATHEMATICAL ITALIC SMALL UPSILON
+1D711;AL # MATHEMATICAL ITALIC SMALL PHI
+1D712;AL # MATHEMATICAL ITALIC SMALL CHI
+1D713;AL # MATHEMATICAL ITALIC SMALL PSI
+1D714;AL # MATHEMATICAL ITALIC SMALL OMEGA
+1D715;AL # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716;AL # MATHEMATICAL ITALIC EPSILON SYMBOL
+1D717;AL # MATHEMATICAL ITALIC THETA SYMBOL
+1D718;AL # MATHEMATICAL ITALIC KAPPA SYMBOL
+1D719;AL # MATHEMATICAL ITALIC PHI SYMBOL
+1D71A;AL # MATHEMATICAL ITALIC RHO SYMBOL
+1D71B;AL # MATHEMATICAL ITALIC PI SYMBOL
+1D71C;AL # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D71D;AL # MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D71E;AL # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D71F;AL # MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D720;AL # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D721;AL # MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D722;AL # MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D723;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D724;AL # MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D725;AL # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D726;AL # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D727;AL # MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D728;AL # MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D729;AL # MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D72A;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D72B;AL # MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D72C;AL # MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D72D;AL # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D72E;AL # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D72F;AL # MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D730;AL # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D731;AL # MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D732;AL # MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D733;AL # MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D734;AL # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735;AL # MATHEMATICAL BOLD ITALIC NABLA
+1D736;AL # MATHEMATICAL BOLD ITALIC SMALL ALPHA
+1D737;AL # MATHEMATICAL BOLD ITALIC SMALL BETA
+1D738;AL # MATHEMATICAL BOLD ITALIC SMALL GAMMA
+1D739;AL # MATHEMATICAL BOLD ITALIC SMALL DELTA
+1D73A;AL # MATHEMATICAL BOLD ITALIC SMALL EPSILON
+1D73B;AL # MATHEMATICAL BOLD ITALIC SMALL ZETA
+1D73C;AL # MATHEMATICAL BOLD ITALIC SMALL ETA
+1D73D;AL # MATHEMATICAL BOLD ITALIC SMALL THETA
+1D73E;AL # MATHEMATICAL BOLD ITALIC SMALL IOTA
+1D73F;AL # MATHEMATICAL BOLD ITALIC SMALL KAPPA
+1D740;AL # MATHEMATICAL BOLD ITALIC SMALL LAMDA
+1D741;AL # MATHEMATICAL BOLD ITALIC SMALL MU
+1D742;AL # MATHEMATICAL BOLD ITALIC SMALL NU
+1D743;AL # MATHEMATICAL BOLD ITALIC SMALL XI
+1D744;AL # MATHEMATICAL BOLD ITALIC SMALL OMICRON
+1D745;AL # MATHEMATICAL BOLD ITALIC SMALL PI
+1D746;AL # MATHEMATICAL BOLD ITALIC SMALL RHO
+1D747;AL # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D748;AL # MATHEMATICAL BOLD ITALIC SMALL SIGMA
+1D749;AL # MATHEMATICAL BOLD ITALIC SMALL TAU
+1D74A;AL # MATHEMATICAL BOLD ITALIC SMALL UPSILON
+1D74B;AL # MATHEMATICAL BOLD ITALIC SMALL PHI
+1D74C;AL # MATHEMATICAL BOLD ITALIC SMALL CHI
+1D74D;AL # MATHEMATICAL BOLD ITALIC SMALL PSI
+1D74E;AL # MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F;AL # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750;AL # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+1D751;AL # MATHEMATICAL BOLD ITALIC THETA SYMBOL
+1D752;AL # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+1D753;AL # MATHEMATICAL BOLD ITALIC PHI SYMBOL
+1D754;AL # MATHEMATICAL BOLD ITALIC RHO SYMBOL
+1D755;AL # MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D756;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D757;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D758;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D759;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D75A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D75B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D75C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D75D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D75E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D75F;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D760;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D761;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D762;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D763;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D764;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D765;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D766;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D767;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D768;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D769;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D76A;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D76B;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D76C;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D76D;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D76E;AL # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F;AL # MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+1D771;AL # MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+1D772;AL # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+1D773;AL # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+1D774;AL # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+1D775;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+1D776;AL # MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+1D777;AL # MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+1D778;AL # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+1D779;AL # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+1D77A;AL # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+1D77B;AL # MATHEMATICAL SANS-SERIF BOLD SMALL MU
+1D77C;AL # MATHEMATICAL SANS-SERIF BOLD SMALL NU
+1D77D;AL # MATHEMATICAL SANS-SERIF BOLD SMALL XI
+1D77E;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+1D77F;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PI
+1D780;AL # MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+1D781;AL # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D782;AL # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+1D783;AL # MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+1D784;AL # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+1D785;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+1D786;AL # MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+1D787;AL # MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+1D788;AL # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789;AL # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A;AL # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+1D78B;AL # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+1D78C;AL # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+1D78D;AL # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+1D78E;AL # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+1D78F;AL # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D790;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1D791;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D792;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D793;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D794;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1D795;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+1D796;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1D797;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D798;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1D799;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+1D79A;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D79B;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+1D79C;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+1D79D;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+1D79E;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1D79F;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D7A0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D7A1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1D7A2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+1D7A3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+1D7A4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1D7A5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D7A6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D7A7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D7A8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+1D7AB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+1D7AC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+1D7AD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+1D7AE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+1D7AF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+1D7B0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+1D7B1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+1D7B2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+1D7B3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+1D7B4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+1D7B5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+1D7B6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+1D7B7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+1D7B8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+1D7B9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+1D7BA;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+1D7BB;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7BC;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+1D7BD;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+1D7BE;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+1D7BF;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+1D7C0;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+1D7C1;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+1D7C2;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+1D7C5;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+1D7C6;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+1D7C7;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+1D7C8;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+1D7C9;AL # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CA;AL # MATHEMATICAL BOLD CAPITAL DIGAMMA
+1D7CB;AL # MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE;NU # MATHEMATICAL BOLD DIGIT ZERO
+1D7CF;NU # MATHEMATICAL BOLD DIGIT ONE
+1D7D0;NU # MATHEMATICAL BOLD DIGIT TWO
+1D7D1;NU # MATHEMATICAL BOLD DIGIT THREE
+1D7D2;NU # MATHEMATICAL BOLD DIGIT FOUR
+1D7D3;NU # MATHEMATICAL BOLD DIGIT FIVE
+1D7D4;NU # MATHEMATICAL BOLD DIGIT SIX
+1D7D5;NU # MATHEMATICAL BOLD DIGIT SEVEN
+1D7D6;NU # MATHEMATICAL BOLD DIGIT EIGHT
+1D7D7;NU # MATHEMATICAL BOLD DIGIT NINE
+1D7D8;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+1D7D9;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+1D7DA;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+1D7DB;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+1D7DC;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+1D7DD;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+1D7DE;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+1D7DF;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+1D7E0;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+1D7E1;NU # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+1D7E2;NU # MATHEMATICAL SANS-SERIF DIGIT ZERO
+1D7E3;NU # MATHEMATICAL SANS-SERIF DIGIT ONE
+1D7E4;NU # MATHEMATICAL SANS-SERIF DIGIT TWO
+1D7E5;NU # MATHEMATICAL SANS-SERIF DIGIT THREE
+1D7E6;NU # MATHEMATICAL SANS-SERIF DIGIT FOUR
+1D7E7;NU # MATHEMATICAL SANS-SERIF DIGIT FIVE
+1D7E8;NU # MATHEMATICAL SANS-SERIF DIGIT SIX
+1D7E9;NU # MATHEMATICAL SANS-SERIF DIGIT SEVEN
+1D7EA;NU # MATHEMATICAL SANS-SERIF DIGIT EIGHT
+1D7EB;NU # MATHEMATICAL SANS-SERIF DIGIT NINE
+1D7EC;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+1D7ED;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+1D7EE;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+1D7EF;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+1D7F0;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+1D7F1;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+1D7F2;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+1D7F3;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+1D7F4;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+1D7F5;NU # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+1D7F6;NU # MATHEMATICAL MONOSPACE DIGIT ZERO
+1D7F7;NU # MATHEMATICAL MONOSPACE DIGIT ONE
+1D7F8;NU # MATHEMATICAL MONOSPACE DIGIT TWO
+1D7F9;NU # MATHEMATICAL MONOSPACE DIGIT THREE
+1D7FA;NU # MATHEMATICAL MONOSPACE DIGIT FOUR
+1D7FB;NU # MATHEMATICAL MONOSPACE DIGIT FIVE
+1D7FC;NU # MATHEMATICAL MONOSPACE DIGIT SIX
+1D7FD;NU # MATHEMATICAL MONOSPACE DIGIT SEVEN
+1D7FE;NU # MATHEMATICAL MONOSPACE DIGIT EIGHT
+1D7FF;NU # MATHEMATICAL MONOSPACE DIGIT NINE
+20000..2A6D6;ID # <CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last>
+2F800;ID # CJK COMPATIBILITY IDEOGRAPH-2F800
+2F801;ID # CJK COMPATIBILITY IDEOGRAPH-2F801
+2F802;ID # CJK COMPATIBILITY IDEOGRAPH-2F802
+2F803;ID # CJK COMPATIBILITY IDEOGRAPH-2F803
+2F804;ID # CJK COMPATIBILITY IDEOGRAPH-2F804
+2F805;ID # CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806;ID # CJK COMPATIBILITY IDEOGRAPH-2F806
+2F807;ID # CJK COMPATIBILITY IDEOGRAPH-2F807
+2F808;ID # CJK COMPATIBILITY IDEOGRAPH-2F808
+2F809;ID # CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80A;ID # CJK COMPATIBILITY IDEOGRAPH-2F80A
+2F80B;ID # CJK COMPATIBILITY IDEOGRAPH-2F80B
+2F80C;ID # CJK COMPATIBILITY IDEOGRAPH-2F80C
+2F80D;ID # CJK COMPATIBILITY IDEOGRAPH-2F80D
+2F80E;ID # CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F80F;ID # CJK COMPATIBILITY IDEOGRAPH-2F80F
+2F810;ID # CJK COMPATIBILITY IDEOGRAPH-2F810
+2F811;ID # CJK COMPATIBILITY IDEOGRAPH-2F811
+2F812;ID # CJK COMPATIBILITY IDEOGRAPH-2F812
+2F813;ID # CJK COMPATIBILITY IDEOGRAPH-2F813
+2F814;ID # CJK COMPATIBILITY IDEOGRAPH-2F814
+2F815;ID # CJK COMPATIBILITY IDEOGRAPH-2F815
+2F816;ID # CJK COMPATIBILITY IDEOGRAPH-2F816
+2F817;ID # CJK COMPATIBILITY IDEOGRAPH-2F817
+2F818;ID # CJK COMPATIBILITY IDEOGRAPH-2F818
+2F819;ID # CJK COMPATIBILITY IDEOGRAPH-2F819
+2F81A;ID # CJK COMPATIBILITY IDEOGRAPH-2F81A
+2F81B;ID # CJK COMPATIBILITY IDEOGRAPH-2F81B
+2F81C;ID # CJK COMPATIBILITY IDEOGRAPH-2F81C
+2F81D;ID # CJK COMPATIBILITY IDEOGRAPH-2F81D
+2F81E;ID # CJK COMPATIBILITY IDEOGRAPH-2F81E
+2F81F;ID # CJK COMPATIBILITY IDEOGRAPH-2F81F
+2F820;ID # CJK COMPATIBILITY IDEOGRAPH-2F820
+2F821;ID # CJK COMPATIBILITY IDEOGRAPH-2F821
+2F822;ID # CJK COMPATIBILITY IDEOGRAPH-2F822
+2F823;ID # CJK COMPATIBILITY IDEOGRAPH-2F823
+2F824;ID # CJK COMPATIBILITY IDEOGRAPH-2F824
+2F825;ID # CJK COMPATIBILITY IDEOGRAPH-2F825
+2F826;ID # CJK COMPATIBILITY IDEOGRAPH-2F826
+2F827;ID # CJK COMPATIBILITY IDEOGRAPH-2F827
+2F828;ID # CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829;ID # CJK COMPATIBILITY IDEOGRAPH-2F829
+2F82A;ID # CJK COMPATIBILITY IDEOGRAPH-2F82A
+2F82B;ID # CJK COMPATIBILITY IDEOGRAPH-2F82B
+2F82C;ID # CJK COMPATIBILITY IDEOGRAPH-2F82C
+2F82D;ID # CJK COMPATIBILITY IDEOGRAPH-2F82D
+2F82E;ID # CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F82F;ID # CJK COMPATIBILITY IDEOGRAPH-2F82F
+2F830;ID # CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831;ID # CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832;ID # CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833;ID # CJK COMPATIBILITY IDEOGRAPH-2F833
+2F834;ID # CJK COMPATIBILITY IDEOGRAPH-2F834
+2F835;ID # CJK COMPATIBILITY IDEOGRAPH-2F835
+2F836;ID # CJK COMPATIBILITY IDEOGRAPH-2F836
+2F837;ID # CJK COMPATIBILITY IDEOGRAPH-2F837
+2F838;ID # CJK COMPATIBILITY IDEOGRAPH-2F838
+2F839;ID # CJK COMPATIBILITY IDEOGRAPH-2F839
+2F83A;ID # CJK COMPATIBILITY IDEOGRAPH-2F83A
+2F83B;ID # CJK COMPATIBILITY IDEOGRAPH-2F83B
+2F83C;ID # CJK COMPATIBILITY IDEOGRAPH-2F83C
+2F83D;ID # CJK COMPATIBILITY IDEOGRAPH-2F83D
+2F83E;ID # CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F;ID # CJK COMPATIBILITY IDEOGRAPH-2F83F
+2F840;ID # CJK COMPATIBILITY IDEOGRAPH-2F840
+2F841;ID # CJK COMPATIBILITY IDEOGRAPH-2F841
+2F842;ID # CJK COMPATIBILITY IDEOGRAPH-2F842
+2F843;ID # CJK COMPATIBILITY IDEOGRAPH-2F843
+2F844;ID # CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845;ID # CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846;ID # CJK COMPATIBILITY IDEOGRAPH-2F846
+2F847;ID # CJK COMPATIBILITY IDEOGRAPH-2F847
+2F848;ID # CJK COMPATIBILITY IDEOGRAPH-2F848
+2F849;ID # CJK COMPATIBILITY IDEOGRAPH-2F849
+2F84A;ID # CJK COMPATIBILITY IDEOGRAPH-2F84A
+2F84B;ID # CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F84C;ID # CJK COMPATIBILITY IDEOGRAPH-2F84C
+2F84D;ID # CJK COMPATIBILITY IDEOGRAPH-2F84D
+2F84E;ID # CJK COMPATIBILITY IDEOGRAPH-2F84E
+2F84F;ID # CJK COMPATIBILITY IDEOGRAPH-2F84F
+2F850;ID # CJK COMPATIBILITY IDEOGRAPH-2F850
+2F851;ID # CJK COMPATIBILITY IDEOGRAPH-2F851
+2F852;ID # CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853;ID # CJK COMPATIBILITY IDEOGRAPH-2F853
+2F854;ID # CJK COMPATIBILITY IDEOGRAPH-2F854
+2F855;ID # CJK COMPATIBILITY IDEOGRAPH-2F855
+2F856;ID # CJK COMPATIBILITY IDEOGRAPH-2F856
+2F857;ID # CJK COMPATIBILITY IDEOGRAPH-2F857
+2F858;ID # CJK COMPATIBILITY IDEOGRAPH-2F858
+2F859;ID # CJK COMPATIBILITY IDEOGRAPH-2F859
+2F85A;ID # CJK COMPATIBILITY IDEOGRAPH-2F85A
+2F85B;ID # CJK COMPATIBILITY IDEOGRAPH-2F85B
+2F85C;ID # CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F85D;ID # CJK COMPATIBILITY IDEOGRAPH-2F85D
+2F85E;ID # CJK COMPATIBILITY IDEOGRAPH-2F85E
+2F85F;ID # CJK COMPATIBILITY IDEOGRAPH-2F85F
+2F860;ID # CJK COMPATIBILITY IDEOGRAPH-2F860
+2F861;ID # CJK COMPATIBILITY IDEOGRAPH-2F861
+2F862;ID # CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863;ID # CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864;ID # CJK COMPATIBILITY IDEOGRAPH-2F864
+2F865;ID # CJK COMPATIBILITY IDEOGRAPH-2F865
+2F866;ID # CJK COMPATIBILITY IDEOGRAPH-2F866
+2F867;ID # CJK COMPATIBILITY IDEOGRAPH-2F867
+2F868;ID # CJK COMPATIBILITY IDEOGRAPH-2F868
+2F869;ID # CJK COMPATIBILITY IDEOGRAPH-2F869
+2F86A;ID # CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B;ID # CJK COMPATIBILITY IDEOGRAPH-2F86B
+2F86C;ID # CJK COMPATIBILITY IDEOGRAPH-2F86C
+2F86D;ID # CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E;ID # CJK COMPATIBILITY IDEOGRAPH-2F86E
+2F86F;ID # CJK COMPATIBILITY IDEOGRAPH-2F86F
+2F870;ID # CJK COMPATIBILITY IDEOGRAPH-2F870
+2F871;ID # CJK COMPATIBILITY IDEOGRAPH-2F871
+2F872;ID # CJK COMPATIBILITY IDEOGRAPH-2F872
+2F873;ID # CJK COMPATIBILITY IDEOGRAPH-2F873
+2F874;ID # CJK COMPATIBILITY IDEOGRAPH-2F874
+2F875;ID # CJK COMPATIBILITY IDEOGRAPH-2F875
+2F876;ID # CJK COMPATIBILITY IDEOGRAPH-2F876
+2F877;ID # CJK COMPATIBILITY IDEOGRAPH-2F877
+2F878;ID # CJK COMPATIBILITY IDEOGRAPH-2F878
+2F879;ID # CJK COMPATIBILITY IDEOGRAPH-2F879
+2F87A;ID # CJK COMPATIBILITY IDEOGRAPH-2F87A
+2F87B;ID # CJK COMPATIBILITY IDEOGRAPH-2F87B
+2F87C;ID # CJK COMPATIBILITY IDEOGRAPH-2F87C
+2F87D;ID # CJK COMPATIBILITY IDEOGRAPH-2F87D
+2F87E;ID # CJK COMPATIBILITY IDEOGRAPH-2F87E
+2F87F;ID # CJK COMPATIBILITY IDEOGRAPH-2F87F
+2F880;ID # CJK COMPATIBILITY IDEOGRAPH-2F880
+2F881;ID # CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882;ID # CJK COMPATIBILITY IDEOGRAPH-2F882
+2F883;ID # CJK COMPATIBILITY IDEOGRAPH-2F883
+2F884;ID # CJK COMPATIBILITY IDEOGRAPH-2F884
+2F885;ID # CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886;ID # CJK COMPATIBILITY IDEOGRAPH-2F886
+2F887;ID # CJK COMPATIBILITY IDEOGRAPH-2F887
+2F888;ID # CJK COMPATIBILITY IDEOGRAPH-2F888
+2F889;ID # CJK COMPATIBILITY IDEOGRAPH-2F889
+2F88A;ID # CJK COMPATIBILITY IDEOGRAPH-2F88A
+2F88B;ID # CJK COMPATIBILITY IDEOGRAPH-2F88B
+2F88C;ID # CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D;ID # CJK COMPATIBILITY IDEOGRAPH-2F88D
+2F88E;ID # CJK COMPATIBILITY IDEOGRAPH-2F88E
+2F88F;ID # CJK COMPATIBILITY IDEOGRAPH-2F88F
+2F890;ID # CJK COMPATIBILITY IDEOGRAPH-2F890
+2F891;ID # CJK COMPATIBILITY IDEOGRAPH-2F891
+2F892;ID # CJK COMPATIBILITY IDEOGRAPH-2F892
+2F893;ID # CJK COMPATIBILITY IDEOGRAPH-2F893
+2F894;ID # CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895;ID # CJK COMPATIBILITY IDEOGRAPH-2F895
+2F896;ID # CJK COMPATIBILITY IDEOGRAPH-2F896
+2F897;ID # CJK COMPATIBILITY IDEOGRAPH-2F897
+2F898;ID # CJK COMPATIBILITY IDEOGRAPH-2F898
+2F899;ID # CJK COMPATIBILITY IDEOGRAPH-2F899
+2F89A;ID # CJK COMPATIBILITY IDEOGRAPH-2F89A
+2F89B;ID # CJK COMPATIBILITY IDEOGRAPH-2F89B
+2F89C;ID # CJK COMPATIBILITY IDEOGRAPH-2F89C
+2F89D;ID # CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E;ID # CJK COMPATIBILITY IDEOGRAPH-2F89E
+2F89F;ID # CJK COMPATIBILITY IDEOGRAPH-2F89F
+2F8A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A0
+2F8A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A1
+2F8A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A2
+2F8A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A4
+2F8A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A5
+2F8A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A8
+2F8A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8A9
+2F8AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AA
+2F8AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AB
+2F8AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8AF
+2F8B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B0
+2F8B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B1
+2F8B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B2
+2F8B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B3
+2F8B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B4
+2F8B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B5
+2F8B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B6
+2F8B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B7
+2F8B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B8
+2F8B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BA
+2F8BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BB
+2F8BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BC
+2F8BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BD
+2F8BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BE
+2F8BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8BF
+2F8C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C0
+2F8C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C1
+2F8C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C2
+2F8C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C3
+2F8C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C4
+2F8C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C5
+2F8C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C6
+2F8C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C7
+2F8C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C8
+2F8C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8C9
+2F8CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CA
+2F8CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CB
+2F8CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CD
+2F8CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CE
+2F8CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8CF
+2F8D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D0
+2F8D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D1
+2F8D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F8D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D4
+2F8D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D5
+2F8D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F8D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D7
+2F8D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D8
+2F8D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8D9
+2F8DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DA
+2F8DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DB
+2F8DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DC
+2F8DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DD
+2F8DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DE
+2F8DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8DF
+2F8E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E0
+2F8E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E1
+2F8E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E2
+2F8E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E3
+2F8E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E4
+2F8E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E5
+2F8E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E6
+2F8E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E7
+2F8E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8E9
+2F8EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EA
+2F8EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EB
+2F8EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EC
+2F8ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F8ED
+2F8EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EE
+2F8EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F0
+2F8F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F8F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F2
+2F8F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F3
+2F8F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F4
+2F8F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F6
+2F8F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F7
+2F8F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F8
+2F8F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F8F9
+2F8FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FA
+2F8FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FB
+2F8FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FC
+2F8FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FD
+2F8FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FE
+2F8FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F8FF
+2F900;ID # CJK COMPATIBILITY IDEOGRAPH-2F900
+2F901;ID # CJK COMPATIBILITY IDEOGRAPH-2F901
+2F902;ID # CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903;ID # CJK COMPATIBILITY IDEOGRAPH-2F903
+2F904;ID # CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905;ID # CJK COMPATIBILITY IDEOGRAPH-2F905
+2F906;ID # CJK COMPATIBILITY IDEOGRAPH-2F906
+2F907;ID # CJK COMPATIBILITY IDEOGRAPH-2F907
+2F908;ID # CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909;ID # CJK COMPATIBILITY IDEOGRAPH-2F909
+2F90A;ID # CJK COMPATIBILITY IDEOGRAPH-2F90A
+2F90B;ID # CJK COMPATIBILITY IDEOGRAPH-2F90B
+2F90C;ID # CJK COMPATIBILITY IDEOGRAPH-2F90C
+2F90D;ID # CJK COMPATIBILITY IDEOGRAPH-2F90D
+2F90E;ID # CJK COMPATIBILITY IDEOGRAPH-2F90E
+2F90F;ID # CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F910;ID # CJK COMPATIBILITY IDEOGRAPH-2F910
+2F911;ID # CJK COMPATIBILITY IDEOGRAPH-2F911
+2F912;ID # CJK COMPATIBILITY IDEOGRAPH-2F912
+2F913;ID # CJK COMPATIBILITY IDEOGRAPH-2F913
+2F914;ID # CJK COMPATIBILITY IDEOGRAPH-2F914
+2F915;ID # CJK COMPATIBILITY IDEOGRAPH-2F915
+2F916;ID # CJK COMPATIBILITY IDEOGRAPH-2F916
+2F917;ID # CJK COMPATIBILITY IDEOGRAPH-2F917
+2F918;ID # CJK COMPATIBILITY IDEOGRAPH-2F918
+2F919;ID # CJK COMPATIBILITY IDEOGRAPH-2F919
+2F91A;ID # CJK COMPATIBILITY IDEOGRAPH-2F91A
+2F91B;ID # CJK COMPATIBILITY IDEOGRAPH-2F91B
+2F91C;ID # CJK COMPATIBILITY IDEOGRAPH-2F91C
+2F91D;ID # CJK COMPATIBILITY IDEOGRAPH-2F91D
+2F91E;ID # CJK COMPATIBILITY IDEOGRAPH-2F91E
+2F91F;ID # CJK COMPATIBILITY IDEOGRAPH-2F91F
+2F920;ID # CJK COMPATIBILITY IDEOGRAPH-2F920
+2F921;ID # CJK COMPATIBILITY IDEOGRAPH-2F921
+2F922;ID # CJK COMPATIBILITY IDEOGRAPH-2F922
+2F923;ID # CJK COMPATIBILITY IDEOGRAPH-2F923
+2F924;ID # CJK COMPATIBILITY IDEOGRAPH-2F924
+2F925;ID # CJK COMPATIBILITY IDEOGRAPH-2F925
+2F926;ID # CJK COMPATIBILITY IDEOGRAPH-2F926
+2F927;ID # CJK COMPATIBILITY IDEOGRAPH-2F927
+2F928;ID # CJK COMPATIBILITY IDEOGRAPH-2F928
+2F929;ID # CJK COMPATIBILITY IDEOGRAPH-2F929
+2F92A;ID # CJK COMPATIBILITY IDEOGRAPH-2F92A
+2F92B;ID # CJK COMPATIBILITY IDEOGRAPH-2F92B
+2F92C;ID # CJK COMPATIBILITY IDEOGRAPH-2F92C
+2F92D;ID # CJK COMPATIBILITY IDEOGRAPH-2F92D
+2F92E;ID # CJK COMPATIBILITY IDEOGRAPH-2F92E
+2F92F;ID # CJK COMPATIBILITY IDEOGRAPH-2F92F
+2F930;ID # CJK COMPATIBILITY IDEOGRAPH-2F930
+2F931;ID # CJK COMPATIBILITY IDEOGRAPH-2F931
+2F932;ID # CJK COMPATIBILITY IDEOGRAPH-2F932
+2F933;ID # CJK COMPATIBILITY IDEOGRAPH-2F933
+2F934;ID # CJK COMPATIBILITY IDEOGRAPH-2F934
+2F935;ID # CJK COMPATIBILITY IDEOGRAPH-2F935
+2F936;ID # CJK COMPATIBILITY IDEOGRAPH-2F936
+2F937;ID # CJK COMPATIBILITY IDEOGRAPH-2F937
+2F938;ID # CJK COMPATIBILITY IDEOGRAPH-2F938
+2F939;ID # CJK COMPATIBILITY IDEOGRAPH-2F939
+2F93A;ID # CJK COMPATIBILITY IDEOGRAPH-2F93A
+2F93B;ID # CJK COMPATIBILITY IDEOGRAPH-2F93B
+2F93C;ID # CJK COMPATIBILITY IDEOGRAPH-2F93C
+2F93D;ID # CJK COMPATIBILITY IDEOGRAPH-2F93D
+2F93E;ID # CJK COMPATIBILITY IDEOGRAPH-2F93E
+2F93F;ID # CJK COMPATIBILITY IDEOGRAPH-2F93F
+2F940;ID # CJK COMPATIBILITY IDEOGRAPH-2F940
+2F941;ID # CJK COMPATIBILITY IDEOGRAPH-2F941
+2F942;ID # CJK COMPATIBILITY IDEOGRAPH-2F942
+2F943;ID # CJK COMPATIBILITY IDEOGRAPH-2F943
+2F944;ID # CJK COMPATIBILITY IDEOGRAPH-2F944
+2F945;ID # CJK COMPATIBILITY IDEOGRAPH-2F945
+2F946;ID # CJK COMPATIBILITY IDEOGRAPH-2F946
+2F947;ID # CJK COMPATIBILITY IDEOGRAPH-2F947
+2F948;ID # CJK COMPATIBILITY IDEOGRAPH-2F948
+2F949;ID # CJK COMPATIBILITY IDEOGRAPH-2F949
+2F94A;ID # CJK COMPATIBILITY IDEOGRAPH-2F94A
+2F94B;ID # CJK COMPATIBILITY IDEOGRAPH-2F94B
+2F94C;ID # CJK COMPATIBILITY IDEOGRAPH-2F94C
+2F94D;ID # CJK COMPATIBILITY IDEOGRAPH-2F94D
+2F94E;ID # CJK COMPATIBILITY IDEOGRAPH-2F94E
+2F94F;ID # CJK COMPATIBILITY IDEOGRAPH-2F94F
+2F950;ID # CJK COMPATIBILITY IDEOGRAPH-2F950
+2F951;ID # CJK COMPATIBILITY IDEOGRAPH-2F951
+2F952;ID # CJK COMPATIBILITY IDEOGRAPH-2F952
+2F953;ID # CJK COMPATIBILITY IDEOGRAPH-2F953
+2F954;ID # CJK COMPATIBILITY IDEOGRAPH-2F954
+2F955;ID # CJK COMPATIBILITY IDEOGRAPH-2F955
+2F956;ID # CJK COMPATIBILITY IDEOGRAPH-2F956
+2F957;ID # CJK COMPATIBILITY IDEOGRAPH-2F957
+2F958;ID # CJK COMPATIBILITY IDEOGRAPH-2F958
+2F959;ID # CJK COMPATIBILITY IDEOGRAPH-2F959
+2F95A;ID # CJK COMPATIBILITY IDEOGRAPH-2F95A
+2F95B;ID # CJK COMPATIBILITY IDEOGRAPH-2F95B
+2F95C;ID # CJK COMPATIBILITY IDEOGRAPH-2F95C
+2F95D;ID # CJK COMPATIBILITY IDEOGRAPH-2F95D
+2F95E;ID # CJK COMPATIBILITY IDEOGRAPH-2F95E
+2F95F;ID # CJK COMPATIBILITY IDEOGRAPH-2F95F
+2F960;ID # CJK COMPATIBILITY IDEOGRAPH-2F960
+2F961;ID # CJK COMPATIBILITY IDEOGRAPH-2F961
+2F962;ID # CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963;ID # CJK COMPATIBILITY IDEOGRAPH-2F963
+2F964;ID # CJK COMPATIBILITY IDEOGRAPH-2F964
+2F965;ID # CJK COMPATIBILITY IDEOGRAPH-2F965
+2F966;ID # CJK COMPATIBILITY IDEOGRAPH-2F966
+2F967;ID # CJK COMPATIBILITY IDEOGRAPH-2F967
+2F968;ID # CJK COMPATIBILITY IDEOGRAPH-2F968
+2F969;ID # CJK COMPATIBILITY IDEOGRAPH-2F969
+2F96A;ID # CJK COMPATIBILITY IDEOGRAPH-2F96A
+2F96B;ID # CJK COMPATIBILITY IDEOGRAPH-2F96B
+2F96C;ID # CJK COMPATIBILITY IDEOGRAPH-2F96C
+2F96D;ID # CJK COMPATIBILITY IDEOGRAPH-2F96D
+2F96E;ID # CJK COMPATIBILITY IDEOGRAPH-2F96E
+2F96F;ID # CJK COMPATIBILITY IDEOGRAPH-2F96F
+2F970;ID # CJK COMPATIBILITY IDEOGRAPH-2F970
+2F971;ID # CJK COMPATIBILITY IDEOGRAPH-2F971
+2F972;ID # CJK COMPATIBILITY IDEOGRAPH-2F972
+2F973;ID # CJK COMPATIBILITY IDEOGRAPH-2F973
+2F974;ID # CJK COMPATIBILITY IDEOGRAPH-2F974
+2F975;ID # CJK COMPATIBILITY IDEOGRAPH-2F975
+2F976;ID # CJK COMPATIBILITY IDEOGRAPH-2F976
+2F977;ID # CJK COMPATIBILITY IDEOGRAPH-2F977
+2F978;ID # CJK COMPATIBILITY IDEOGRAPH-2F978
+2F979;ID # CJK COMPATIBILITY IDEOGRAPH-2F979
+2F97A;ID # CJK COMPATIBILITY IDEOGRAPH-2F97A
+2F97B;ID # CJK COMPATIBILITY IDEOGRAPH-2F97B
+2F97C;ID # CJK COMPATIBILITY IDEOGRAPH-2F97C
+2F97D;ID # CJK COMPATIBILITY IDEOGRAPH-2F97D
+2F97E;ID # CJK COMPATIBILITY IDEOGRAPH-2F97E
+2F97F;ID # CJK COMPATIBILITY IDEOGRAPH-2F97F
+2F980;ID # CJK COMPATIBILITY IDEOGRAPH-2F980
+2F981;ID # CJK COMPATIBILITY IDEOGRAPH-2F981
+2F982;ID # CJK COMPATIBILITY IDEOGRAPH-2F982
+2F983;ID # CJK COMPATIBILITY IDEOGRAPH-2F983
+2F984;ID # CJK COMPATIBILITY IDEOGRAPH-2F984
+2F985;ID # CJK COMPATIBILITY IDEOGRAPH-2F985
+2F986;ID # CJK COMPATIBILITY IDEOGRAPH-2F986
+2F987;ID # CJK COMPATIBILITY IDEOGRAPH-2F987
+2F988;ID # CJK COMPATIBILITY IDEOGRAPH-2F988
+2F989;ID # CJK COMPATIBILITY IDEOGRAPH-2F989
+2F98A;ID # CJK COMPATIBILITY IDEOGRAPH-2F98A
+2F98B;ID # CJK COMPATIBILITY IDEOGRAPH-2F98B
+2F98C;ID # CJK COMPATIBILITY IDEOGRAPH-2F98C
+2F98D;ID # CJK COMPATIBILITY IDEOGRAPH-2F98D
+2F98E;ID # CJK COMPATIBILITY IDEOGRAPH-2F98E
+2F98F;ID # CJK COMPATIBILITY IDEOGRAPH-2F98F
+2F990;ID # CJK COMPATIBILITY IDEOGRAPH-2F990
+2F991;ID # CJK COMPATIBILITY IDEOGRAPH-2F991
+2F992;ID # CJK COMPATIBILITY IDEOGRAPH-2F992
+2F993;ID # CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994;ID # CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995;ID # CJK COMPATIBILITY IDEOGRAPH-2F995
+2F996;ID # CJK COMPATIBILITY IDEOGRAPH-2F996
+2F997;ID # CJK COMPATIBILITY IDEOGRAPH-2F997
+2F998;ID # CJK COMPATIBILITY IDEOGRAPH-2F998
+2F999;ID # CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99A;ID # CJK COMPATIBILITY IDEOGRAPH-2F99A
+2F99B;ID # CJK COMPATIBILITY IDEOGRAPH-2F99B
+2F99C;ID # CJK COMPATIBILITY IDEOGRAPH-2F99C
+2F99D;ID # CJK COMPATIBILITY IDEOGRAPH-2F99D
+2F99E;ID # CJK COMPATIBILITY IDEOGRAPH-2F99E
+2F99F;ID # CJK COMPATIBILITY IDEOGRAPH-2F99F
+2F9A0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A0
+2F9A1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A3
+2F9A4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A4
+2F9A5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A5
+2F9A6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A6
+2F9A7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A7
+2F9A8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A8
+2F9A9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9A9
+2F9AA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AA
+2F9AB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AB
+2F9AC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AC
+2F9AD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AD
+2F9AE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AE
+2F9AF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9AF
+2F9B0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B0
+2F9B1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B1
+2F9B2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B2
+2F9B3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B3
+2F9B4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B6
+2F9B7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9B8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B8
+2F9B9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9B9
+2F9BA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BA
+2F9BB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BB
+2F9BC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BC
+2F9BD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BD
+2F9BE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BE
+2F9BF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9BF
+2F9C0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C0
+2F9C1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C1
+2F9C2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C2
+2F9C3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C3
+2F9C4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C4
+2F9C5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C5
+2F9C6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C6
+2F9C7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C7
+2F9C8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C8
+2F9C9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9C9
+2F9CA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CA
+2F9CB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CB
+2F9CC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CC
+2F9CD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CD
+2F9CE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CE
+2F9CF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9CF
+2F9D0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D0
+2F9D1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D1
+2F9D2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F9D3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D3
+2F9D4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D5
+2F9D6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2F9D7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9D8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D8
+2F9D9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9D9
+2F9DA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DA
+2F9DB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DB
+2F9DC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DC
+2F9DD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DD
+2F9DE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DE
+2F9DF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9DF
+2F9E0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E0
+2F9E1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E1
+2F9E2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E2
+2F9E3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E3
+2F9E4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E4
+2F9E5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E5
+2F9E6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E6
+2F9E7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E7
+2F9E8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E8
+2F9E9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9E9
+2F9EA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9EB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EB
+2F9EC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EC
+2F9ED;ID # CJK COMPATIBILITY IDEOGRAPH-2F9ED
+2F9EE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EE
+2F9EF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9EF
+2F9F0;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F0
+2F9F1;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F1
+2F9F2;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F2
+2F9F3;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F3
+2F9F4;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F4
+2F9F5;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F5
+2F9F6;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F6
+2F9F7;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F7
+2F9F8;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F8
+2F9F9;ID # CJK COMPATIBILITY IDEOGRAPH-2F9F9
+2F9FA;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FA
+2F9FB;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FB
+2F9FC;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FC
+2F9FD;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FD
+2F9FE;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FE
+2F9FF;ID # CJK COMPATIBILITY IDEOGRAPH-2F9FF
+2FA00;ID # CJK COMPATIBILITY IDEOGRAPH-2FA00
+2FA01;ID # CJK COMPATIBILITY IDEOGRAPH-2FA01
+2FA02;ID # CJK COMPATIBILITY IDEOGRAPH-2FA02
+2FA03;ID # CJK COMPATIBILITY IDEOGRAPH-2FA03
+2FA04;ID # CJK COMPATIBILITY IDEOGRAPH-2FA04
+2FA05;ID # CJK COMPATIBILITY IDEOGRAPH-2FA05
+2FA06;ID # CJK COMPATIBILITY IDEOGRAPH-2FA06
+2FA07;ID # CJK COMPATIBILITY IDEOGRAPH-2FA07
+2FA08;ID # CJK COMPATIBILITY IDEOGRAPH-2FA08
+2FA09;ID # CJK COMPATIBILITY IDEOGRAPH-2FA09
+2FA0A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0A
+2FA0B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0B
+2FA0C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0C
+2FA0D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0D
+2FA0E;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0E
+2FA0F;ID # CJK COMPATIBILITY IDEOGRAPH-2FA0F
+2FA10;ID # CJK COMPATIBILITY IDEOGRAPH-2FA10
+2FA11;ID # CJK COMPATIBILITY IDEOGRAPH-2FA11
+2FA12;ID # CJK COMPATIBILITY IDEOGRAPH-2FA12
+2FA13;ID # CJK COMPATIBILITY IDEOGRAPH-2FA13
+2FA14;ID # CJK COMPATIBILITY IDEOGRAPH-2FA14
+2FA15;ID # CJK COMPATIBILITY IDEOGRAPH-2FA15
+2FA16;ID # CJK COMPATIBILITY IDEOGRAPH-2FA16
+2FA17;ID # CJK COMPATIBILITY IDEOGRAPH-2FA17
+2FA18;ID # CJK COMPATIBILITY IDEOGRAPH-2FA18
+2FA19;ID # CJK COMPATIBILITY IDEOGRAPH-2FA19
+2FA1A;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1A
+2FA1B;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1B
+2FA1C;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1C
+2FA1D;ID # CJK COMPATIBILITY IDEOGRAPH-2FA1D
+E0001;CM # LANGUAGE TAG
+E0020;CM # TAG SPACE
+E0021;CM # TAG EXCLAMATION MARK
+E0022;CM # TAG QUOTATION MARK
+E0023;CM # TAG NUMBER SIGN
+E0024;CM # TAG DOLLAR SIGN
+E0025;CM # TAG PERCENT SIGN
+E0026;CM # TAG AMPERSAND
+E0027;CM # TAG APOSTROPHE
+E0028;CM # TAG LEFT PARENTHESIS
+E0029;CM # TAG RIGHT PARENTHESIS
+E002A;CM # TAG ASTERISK
+E002B;CM # TAG PLUS SIGN
+E002C;CM # TAG COMMA
+E002D;CM # TAG HYPHEN-MINUS
+E002E;CM # TAG FULL STOP
+E002F;CM # TAG SOLIDUS
+E0030;CM # TAG DIGIT ZERO
+E0031;CM # TAG DIGIT ONE
+E0032;CM # TAG DIGIT TWO
+E0033;CM # TAG DIGIT THREE
+E0034;CM # TAG DIGIT FOUR
+E0035;CM # TAG DIGIT FIVE
+E0036;CM # TAG DIGIT SIX
+E0037;CM # TAG DIGIT SEVEN
+E0038;CM # TAG DIGIT EIGHT
+E0039;CM # TAG DIGIT NINE
+E003A;CM # TAG COLON
+E003B;CM # TAG SEMICOLON
+E003C;CM # TAG LESS-THAN SIGN
+E003D;CM # TAG EQUALS SIGN
+E003E;CM # TAG GREATER-THAN SIGN
+E003F;CM # TAG QUESTION MARK
+E0040;CM # TAG COMMERCIAL AT
+E0041;CM # TAG LATIN CAPITAL LETTER A
+E0042;CM # TAG LATIN CAPITAL LETTER B
+E0043;CM # TAG LATIN CAPITAL LETTER C
+E0044;CM # TAG LATIN CAPITAL LETTER D
+E0045;CM # TAG LATIN CAPITAL LETTER E
+E0046;CM # TAG LATIN CAPITAL LETTER F
+E0047;CM # TAG LATIN CAPITAL LETTER G
+E0048;CM # TAG LATIN CAPITAL LETTER H
+E0049;CM # TAG LATIN CAPITAL LETTER I
+E004A;CM # TAG LATIN CAPITAL LETTER J
+E004B;CM # TAG LATIN CAPITAL LETTER K
+E004C;CM # TAG LATIN CAPITAL LETTER L
+E004D;CM # TAG LATIN CAPITAL LETTER M
+E004E;CM # TAG LATIN CAPITAL LETTER N
+E004F;CM # TAG LATIN CAPITAL LETTER O
+E0050;CM # TAG LATIN CAPITAL LETTER P
+E0051;CM # TAG LATIN CAPITAL LETTER Q
+E0052;CM # TAG LATIN CAPITAL LETTER R
+E0053;CM # TAG LATIN CAPITAL LETTER S
+E0054;CM # TAG LATIN CAPITAL LETTER T
+E0055;CM # TAG LATIN CAPITAL LETTER U
+E0056;CM # TAG LATIN CAPITAL LETTER V
+E0057;CM # TAG LATIN CAPITAL LETTER W
+E0058;CM # TAG LATIN CAPITAL LETTER X
+E0059;CM # TAG LATIN CAPITAL LETTER Y
+E005A;CM # TAG LATIN CAPITAL LETTER Z
+E005B;CM # TAG LEFT SQUARE BRACKET
+E005C;CM # TAG REVERSE SOLIDUS
+E005D;CM # TAG RIGHT SQUARE BRACKET
+E005E;CM # TAG CIRCUMFLEX ACCENT
+E005F;CM # TAG LOW LINE
+E0060;CM # TAG GRAVE ACCENT
+E0061;CM # TAG LATIN SMALL LETTER A
+E0062;CM # TAG LATIN SMALL LETTER B
+E0063;CM # TAG LATIN SMALL LETTER C
+E0064;CM # TAG LATIN SMALL LETTER D
+E0065;CM # TAG LATIN SMALL LETTER E
+E0066;CM # TAG LATIN SMALL LETTER F
+E0067;CM # TAG LATIN SMALL LETTER G
+E0068;CM # TAG LATIN SMALL LETTER H
+E0069;CM # TAG LATIN SMALL LETTER I
+E006A;CM # TAG LATIN SMALL LETTER J
+E006B;CM # TAG LATIN SMALL LETTER K
+E006C;CM # TAG LATIN SMALL LETTER L
+E006D;CM # TAG LATIN SMALL LETTER M
+E006E;CM # TAG LATIN SMALL LETTER N
+E006F;CM # TAG LATIN SMALL LETTER O
+E0070;CM # TAG LATIN SMALL LETTER P
+E0071;CM # TAG LATIN SMALL LETTER Q
+E0072;CM # TAG LATIN SMALL LETTER R
+E0073;CM # TAG LATIN SMALL LETTER S
+E0074;CM # TAG LATIN SMALL LETTER T
+E0075;CM # TAG LATIN SMALL LETTER U
+E0076;CM # TAG LATIN SMALL LETTER V
+E0077;CM # TAG LATIN SMALL LETTER W
+E0078;CM # TAG LATIN SMALL LETTER X
+E0079;CM # TAG LATIN SMALL LETTER Y
+E007A;CM # TAG LATIN SMALL LETTER Z
+E007B;CM # TAG LEFT CURLY BRACKET
+E007C;CM # TAG VERTICAL LINE
+E007D;CM # TAG RIGHT CURLY BRACKET
+E007E;CM # TAG TILDE
+E007F;CM # CANCEL TAG
+E0100;CM # VARIATION SELECTOR-17
+E0101;CM # VARIATION SELECTOR-18
+E0102;CM # VARIATION SELECTOR-19
+E0103;CM # VARIATION SELECTOR-20
+E0104;CM # VARIATION SELECTOR-21
+E0105;CM # VARIATION SELECTOR-22
+E0106;CM # VARIATION SELECTOR-23
+E0107;CM # VARIATION SELECTOR-24
+E0108;CM # VARIATION SELECTOR-25
+E0109;CM # VARIATION SELECTOR-26
+E010A;CM # VARIATION SELECTOR-27
+E010B;CM # VARIATION SELECTOR-28
+E010C;CM # VARIATION SELECTOR-29
+E010D;CM # VARIATION SELECTOR-30
+E010E;CM # VARIATION SELECTOR-31
+E010F;CM # VARIATION SELECTOR-32
+E0110;CM # VARIATION SELECTOR-33
+E0111;CM # VARIATION SELECTOR-34
+E0112;CM # VARIATION SELECTOR-35
+E0113;CM # VARIATION SELECTOR-36
+E0114;CM # VARIATION SELECTOR-37
+E0115;CM # VARIATION SELECTOR-38
+E0116;CM # VARIATION SELECTOR-39
+E0117;CM # VARIATION SELECTOR-40
+E0118;CM # VARIATION SELECTOR-41
+E0119;CM # VARIATION SELECTOR-42
+E011A;CM # VARIATION SELECTOR-43
+E011B;CM # VARIATION SELECTOR-44
+E011C;CM # VARIATION SELECTOR-45
+E011D;CM # VARIATION SELECTOR-46
+E011E;CM # VARIATION SELECTOR-47
+E011F;CM # VARIATION SELECTOR-48
+E0120;CM # VARIATION SELECTOR-49
+E0121;CM # VARIATION SELECTOR-50
+E0122;CM # VARIATION SELECTOR-51
+E0123;CM # VARIATION SELECTOR-52
+E0124;CM # VARIATION SELECTOR-53
+E0125;CM # VARIATION SELECTOR-54
+E0126;CM # VARIATION SELECTOR-55
+E0127;CM # VARIATION SELECTOR-56
+E0128;CM # VARIATION SELECTOR-57
+E0129;CM # VARIATION SELECTOR-58
+E012A;CM # VARIATION SELECTOR-59
+E012B;CM # VARIATION SELECTOR-60
+E012C;CM # VARIATION SELECTOR-61
+E012D;CM # VARIATION SELECTOR-62
+E012E;CM # VARIATION SELECTOR-63
+E012F;CM # VARIATION SELECTOR-64
+E0130;CM # VARIATION SELECTOR-65
+E0131;CM # VARIATION SELECTOR-66
+E0132;CM # VARIATION SELECTOR-67
+E0133;CM # VARIATION SELECTOR-68
+E0134;CM # VARIATION SELECTOR-69
+E0135;CM # VARIATION SELECTOR-70
+E0136;CM # VARIATION SELECTOR-71
+E0137;CM # VARIATION SELECTOR-72
+E0138;CM # VARIATION SELECTOR-73
+E0139;CM # VARIATION SELECTOR-74
+E013A;CM # VARIATION SELECTOR-75
+E013B;CM # VARIATION SELECTOR-76
+E013C;CM # VARIATION SELECTOR-77
+E013D;CM # VARIATION SELECTOR-78
+E013E;CM # VARIATION SELECTOR-79
+E013F;CM # VARIATION SELECTOR-80
+E0140;CM # VARIATION SELECTOR-81
+E0141;CM # VARIATION SELECTOR-82
+E0142;CM # VARIATION SELECTOR-83
+E0143;CM # VARIATION SELECTOR-84
+E0144;CM # VARIATION SELECTOR-85
+E0145;CM # VARIATION SELECTOR-86
+E0146;CM # VARIATION SELECTOR-87
+E0147;CM # VARIATION SELECTOR-88
+E0148;CM # VARIATION SELECTOR-89
+E0149;CM # VARIATION SELECTOR-90
+E014A;CM # VARIATION SELECTOR-91
+E014B;CM # VARIATION SELECTOR-92
+E014C;CM # VARIATION SELECTOR-93
+E014D;CM # VARIATION SELECTOR-94
+E014E;CM # VARIATION SELECTOR-95
+E014F;CM # VARIATION SELECTOR-96
+E0150;CM # VARIATION SELECTOR-97
+E0151;CM # VARIATION SELECTOR-98
+E0152;CM # VARIATION SELECTOR-99
+E0153;CM # VARIATION SELECTOR-100
+E0154;CM # VARIATION SELECTOR-101
+E0155;CM # VARIATION SELECTOR-102
+E0156;CM # VARIATION SELECTOR-103
+E0157;CM # VARIATION SELECTOR-104
+E0158;CM # VARIATION SELECTOR-105
+E0159;CM # VARIATION SELECTOR-106
+E015A;CM # VARIATION SELECTOR-107
+E015B;CM # VARIATION SELECTOR-108
+E015C;CM # VARIATION SELECTOR-109
+E015D;CM # VARIATION SELECTOR-110
+E015E;CM # VARIATION SELECTOR-111
+E015F;CM # VARIATION SELECTOR-112
+E0160;CM # VARIATION SELECTOR-113
+E0161;CM # VARIATION SELECTOR-114
+E0162;CM # VARIATION SELECTOR-115
+E0163;CM # VARIATION SELECTOR-116
+E0164;CM # VARIATION SELECTOR-117
+E0165;CM # VARIATION SELECTOR-118
+E0166;CM # VARIATION SELECTOR-119
+E0167;CM # VARIATION SELECTOR-120
+E0168;CM # VARIATION SELECTOR-121
+E0169;CM # VARIATION SELECTOR-122
+E016A;CM # VARIATION SELECTOR-123
+E016B;CM # VARIATION SELECTOR-124
+E016C;CM # VARIATION SELECTOR-125
+E016D;CM # VARIATION SELECTOR-126
+E016E;CM # VARIATION SELECTOR-127
+E016F;CM # VARIATION SELECTOR-128
+E0170;CM # VARIATION SELECTOR-129
+E0171;CM # VARIATION SELECTOR-130
+E0172;CM # VARIATION SELECTOR-131
+E0173;CM # VARIATION SELECTOR-132
+E0174;CM # VARIATION SELECTOR-133
+E0175;CM # VARIATION SELECTOR-134
+E0176;CM # VARIATION SELECTOR-135
+E0177;CM # VARIATION SELECTOR-136
+E0178;CM # VARIATION SELECTOR-137
+E0179;CM # VARIATION SELECTOR-138
+E017A;CM # VARIATION SELECTOR-139
+E017B;CM # VARIATION SELECTOR-140
+E017C;CM # VARIATION SELECTOR-141
+E017D;CM # VARIATION SELECTOR-142
+E017E;CM # VARIATION SELECTOR-143
+E017F;CM # VARIATION SELECTOR-144
+E0180;CM # VARIATION SELECTOR-145
+E0181;CM # VARIATION SELECTOR-146
+E0182;CM # VARIATION SELECTOR-147
+E0183;CM # VARIATION SELECTOR-148
+E0184;CM # VARIATION SELECTOR-149
+E0185;CM # VARIATION SELECTOR-150
+E0186;CM # VARIATION SELECTOR-151
+E0187;CM # VARIATION SELECTOR-152
+E0188;CM # VARIATION SELECTOR-153
+E0189;CM # VARIATION SELECTOR-154
+E018A;CM # VARIATION SELECTOR-155
+E018B;CM # VARIATION SELECTOR-156
+E018C;CM # VARIATION SELECTOR-157
+E018D;CM # VARIATION SELECTOR-158
+E018E;CM # VARIATION SELECTOR-159
+E018F;CM # VARIATION SELECTOR-160
+E0190;CM # VARIATION SELECTOR-161
+E0191;CM # VARIATION SELECTOR-162
+E0192;CM # VARIATION SELECTOR-163
+E0193;CM # VARIATION SELECTOR-164
+E0194;CM # VARIATION SELECTOR-165
+E0195;CM # VARIATION SELECTOR-166
+E0196;CM # VARIATION SELECTOR-167
+E0197;CM # VARIATION SELECTOR-168
+E0198;CM # VARIATION SELECTOR-169
+E0199;CM # VARIATION SELECTOR-170
+E019A;CM # VARIATION SELECTOR-171
+E019B;CM # VARIATION SELECTOR-172
+E019C;CM # VARIATION SELECTOR-173
+E019D;CM # VARIATION SELECTOR-174
+E019E;CM # VARIATION SELECTOR-175
+E019F;CM # VARIATION SELECTOR-176
+E01A0;CM # VARIATION SELECTOR-177
+E01A1;CM # VARIATION SELECTOR-178
+E01A2;CM # VARIATION SELECTOR-179
+E01A3;CM # VARIATION SELECTOR-180
+E01A4;CM # VARIATION SELECTOR-181
+E01A5;CM # VARIATION SELECTOR-182
+E01A6;CM # VARIATION SELECTOR-183
+E01A7;CM # VARIATION SELECTOR-184
+E01A8;CM # VARIATION SELECTOR-185
+E01A9;CM # VARIATION SELECTOR-186
+E01AA;CM # VARIATION SELECTOR-187
+E01AB;CM # VARIATION SELECTOR-188
+E01AC;CM # VARIATION SELECTOR-189
+E01AD;CM # VARIATION SELECTOR-190
+E01AE;CM # VARIATION SELECTOR-191
+E01AF;CM # VARIATION SELECTOR-192
+E01B0;CM # VARIATION SELECTOR-193
+E01B1;CM # VARIATION SELECTOR-194
+E01B2;CM # VARIATION SELECTOR-195
+E01B3;CM # VARIATION SELECTOR-196
+E01B4;CM # VARIATION SELECTOR-197
+E01B5;CM # VARIATION SELECTOR-198
+E01B6;CM # VARIATION SELECTOR-199
+E01B7;CM # VARIATION SELECTOR-200
+E01B8;CM # VARIATION SELECTOR-201
+E01B9;CM # VARIATION SELECTOR-202
+E01BA;CM # VARIATION SELECTOR-203
+E01BB;CM # VARIATION SELECTOR-204
+E01BC;CM # VARIATION SELECTOR-205
+E01BD;CM # VARIATION SELECTOR-206
+E01BE;CM # VARIATION SELECTOR-207
+E01BF;CM # VARIATION SELECTOR-208
+E01C0;CM # VARIATION SELECTOR-209
+E01C1;CM # VARIATION SELECTOR-210
+E01C2;CM # VARIATION SELECTOR-211
+E01C3;CM # VARIATION SELECTOR-212
+E01C4;CM # VARIATION SELECTOR-213
+E01C5;CM # VARIATION SELECTOR-214
+E01C6;CM # VARIATION SELECTOR-215
+E01C7;CM # VARIATION SELECTOR-216
+E01C8;CM # VARIATION SELECTOR-217
+E01C9;CM # VARIATION SELECTOR-218
+E01CA;CM # VARIATION SELECTOR-219
+E01CB;CM # VARIATION SELECTOR-220
+E01CC;CM # VARIATION SELECTOR-221
+E01CD;CM # VARIATION SELECTOR-222
+E01CE;CM # VARIATION SELECTOR-223
+E01CF;CM # VARIATION SELECTOR-224
+E01D0;CM # VARIATION SELECTOR-225
+E01D1;CM # VARIATION SELECTOR-226
+E01D2;CM # VARIATION SELECTOR-227
+E01D3;CM # VARIATION SELECTOR-228
+E01D4;CM # VARIATION SELECTOR-229
+E01D5;CM # VARIATION SELECTOR-230
+E01D6;CM # VARIATION SELECTOR-231
+E01D7;CM # VARIATION SELECTOR-232
+E01D8;CM # VARIATION SELECTOR-233
+E01D9;CM # VARIATION SELECTOR-234
+E01DA;CM # VARIATION SELECTOR-235
+E01DB;CM # VARIATION SELECTOR-236
+E01DC;CM # VARIATION SELECTOR-237
+E01DD;CM # VARIATION SELECTOR-238
+E01DE;CM # VARIATION SELECTOR-239
+E01DF;CM # VARIATION SELECTOR-240
+E01E0;CM # VARIATION SELECTOR-241
+E01E1;CM # VARIATION SELECTOR-242
+E01E2;CM # VARIATION SELECTOR-243
+E01E3;CM # VARIATION SELECTOR-244
+E01E4;CM # VARIATION SELECTOR-245
+E01E5;CM # VARIATION SELECTOR-246
+E01E6;CM # VARIATION SELECTOR-247
+E01E7;CM # VARIATION SELECTOR-248
+E01E8;CM # VARIATION SELECTOR-249
+E01E9;CM # VARIATION SELECTOR-250
+E01EA;CM # VARIATION SELECTOR-251
+E01EB;CM # VARIATION SELECTOR-252
+E01EC;CM # VARIATION SELECTOR-253
+E01ED;CM # VARIATION SELECTOR-254
+E01EE;CM # VARIATION SELECTOR-255
+E01EF;CM # VARIATION SELECTOR-256
+F0000..FFFFD;XX # <Plane 15 Private Use, First>..<Plane 15 Private Use, Last>
+100000..10FFFD;XX # <Plane 16 Private Use, First>..<Plane 16 Private Use, Last>
+
+# EOF \ No newline at end of file
diff --git a/util/unicode/data/NormalizationCorrections.txt b/util/unicode/data/NormalizationCorrections.txt
new file mode 100644
index 0000000000..6952f41d5d
--- /dev/null
+++ b/util/unicode/data/NormalizationCorrections.txt
@@ -0,0 +1,48 @@
+# NormalizationCorrections-5.0.0.txt
+# Date: 2006-07-14, 11:23:00 PDT [KW]
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# The normalization stabilization policy of the Unicode
+# Consortium ordinarily precludes any change to the decomposition
+# for any character, once established in a relevant version
+# of the UnicodeData.txt data file. However, under certain
+# exceptional (and rare) conditions, an error in a decomposition
+# mapping may be discovered that is truly just an unintended
+# typo in the data, and not a matter of dubious interpretation.
+#
+# Whenever such an error may be found, and if it meets the
+# requirements for possible exceptions to normalization
+# stability, the correction is entered in this data file,
+# so that any implementation depending on absolute stability
+# of normalization, *including* any errors in the data, can
+# safely reconstruct the exact state of the data tables at
+# any given version of Unicode.
+#
+# Currently this list has exactly six entries in it, one for the
+# typo found and corrected in Corrigendum #3, and five for
+# the typos and misidentifications found and corrected in
+# Corrigendum #4. All efforts
+# will be made to keep the entries limited to just those fixes.
+#
+# Interpretation of the fields:
+# Field 0: Unicode code point
+# Field 1: Original (erroneous) decomposition
+# Field 2: Corrected decomposition
+# Field 3: Version of Unicode for which the correction was
+# entered into UnicodeData.txt, in n.n.n format.
+# Comment: Indicates the Unicode Corrigendum which documents
+# the correction
+#
+# For more information, see UAX #15, Unicode Normalization Forms.
+#
+F951;96FB;964B;3.2.0 # Corrigendum 3
+2F868;2136A;36FC;4.0.0 # Corrigendum 4
+2F874;5F33;5F53;4.0.0 # Corrigendum 4
+2F91F;43AB;243AB;4.0.0 # Corrigendum 4
+2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4
+2F9BF;4D57;45D7;4.0.0 # Corrigendum 4
diff --git a/util/unicode/data/Scripts.txt b/util/unicode/data/Scripts.txt
new file mode 100644
index 0000000000..7e261dcb91
--- /dev/null
+++ b/util/unicode/data/Scripts.txt
@@ -0,0 +1,1538 @@
+# Scripts-5.0.0.txt
+# Date: 2006-03-09, 23:14:25 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property: Script
+
+# All code points not explicitly listed for Script
+# have the value Unknown (Zzzz).
+
+# @missing: 0000..10FFFF; Unknown
+
+# ================================================
+
+0000..001F ; Common # Cc [32] <control-0000>..<control-001F>
+0020 ; Common # Zs SPACE
+0021..0023 ; Common # Po [3] EXCLAMATION MARK..NUMBER SIGN
+0024 ; Common # Sc DOLLAR SIGN
+0025..0027 ; Common # Po [3] PERCENT SIGN..APOSTROPHE
+0028 ; Common # Ps LEFT PARENTHESIS
+0029 ; Common # Pe RIGHT PARENTHESIS
+002A ; Common # Po ASTERISK
+002B ; Common # Sm PLUS SIGN
+002C ; Common # Po COMMA
+002D ; Common # Pd HYPHEN-MINUS
+002E..002F ; Common # Po [2] FULL STOP..SOLIDUS
+0030..0039 ; Common # Nd [10] DIGIT ZERO..DIGIT NINE
+003A..003B ; Common # Po [2] COLON..SEMICOLON
+003C..003E ; Common # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN
+003F..0040 ; Common # Po [2] QUESTION MARK..COMMERCIAL AT
+005B ; Common # Ps LEFT SQUARE BRACKET
+005C ; Common # Po REVERSE SOLIDUS
+005D ; Common # Pe RIGHT SQUARE BRACKET
+005E ; Common # Sk CIRCUMFLEX ACCENT
+005F ; Common # Pc LOW LINE
+0060 ; Common # Sk GRAVE ACCENT
+007B ; Common # Ps LEFT CURLY BRACKET
+007C ; Common # Sm VERTICAL LINE
+007D ; Common # Pe RIGHT CURLY BRACKET
+007E ; Common # Sm TILDE
+007F..009F ; Common # Cc [33] <control-007F>..<control-009F>
+00A0 ; Common # Zs NO-BREAK SPACE
+00A1 ; Common # Po INVERTED EXCLAMATION MARK
+00A2..00A5 ; Common # Sc [4] CENT SIGN..YEN SIGN
+00A6..00A7 ; Common # So [2] BROKEN BAR..SECTION SIGN
+00A8 ; Common # Sk DIAERESIS
+00A9 ; Common # So COPYRIGHT SIGN
+00AB ; Common # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC ; Common # Sm NOT SIGN
+00AD ; Common # Cf SOFT HYPHEN
+00AE ; Common # So REGISTERED SIGN
+00AF ; Common # Sk MACRON
+00B0 ; Common # So DEGREE SIGN
+00B1 ; Common # Sm PLUS-MINUS SIGN
+00B2..00B3 ; Common # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; Common # Sk ACUTE ACCENT
+00B5 ; Common # L& MICRO SIGN
+00B6 ; Common # So PILCROW SIGN
+00B7 ; Common # Po MIDDLE DOT
+00B8 ; Common # Sk CEDILLA
+00B9 ; Common # No SUPERSCRIPT ONE
+00BB ; Common # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BC..00BE ; Common # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00BF ; Common # Po INVERTED QUESTION MARK
+00D7 ; Common # Sm MULTIPLICATION SIGN
+00F7 ; Common # Sm DIVISION SIGN
+02B9..02C1 ; Common # Lm [9] MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C2..02C5 ; Common # Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+02C6..02D1 ; Common # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02D2..02DF ; Common # Sk [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
+02E5..02ED ; Common # Sk [9] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER UNASPIRATED
+02EE ; Common # Lm MODIFIER LETTER DOUBLE APOSTROPHE
+02EF..02FF ; Common # Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+037E ; Common # Po GREEK QUESTION MARK
+0387 ; Common # Po GREEK ANO TELEIA
+0589 ; Common # Po ARMENIAN FULL STOP
+0600..0603 ; Common # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+060C ; Common # Po ARABIC COMMA
+061B ; Common # Po ARABIC SEMICOLON
+061F ; Common # Po ARABIC QUESTION MARK
+0640 ; Common # Lm ARABIC TATWEEL
+0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+06DD ; Common # Cf ARABIC END OF AYAH
+0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+0970 ; Common # Po DEVANAGARI ABBREVIATION SIGN
+0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT
+10FB ; Common # Po GEORGIAN PARAGRAPH SEPARATOR
+16EB..16ED ; Common # Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
+1735..1736 ; Common # Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+1802..1803 ; Common # Po [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP
+1805 ; Common # Po MONGOLIAN FOUR DOTS
+2000..200A ; Common # Zs [11] EN QUAD..HAIR SPACE
+200B ; Common # Cf ZERO WIDTH SPACE
+200E..200F ; Common # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+2010..2015 ; Common # Pd [6] HYPHEN..HORIZONTAL BAR
+2016..2017 ; Common # Po [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
+2018 ; Common # Pi LEFT SINGLE QUOTATION MARK
+2019 ; Common # Pf RIGHT SINGLE QUOTATION MARK
+201A ; Common # Ps SINGLE LOW-9 QUOTATION MARK
+201B..201C ; Common # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
+201D ; Common # Pf RIGHT DOUBLE QUOTATION MARK
+201E ; Common # Ps DOUBLE LOW-9 QUOTATION MARK
+201F ; Common # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020..2027 ; Common # Po [8] DAGGER..HYPHENATION POINT
+2028 ; Common # Zl LINE SEPARATOR
+2029 ; Common # Zp PARAGRAPH SEPARATOR
+202A..202E ; Common # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+202F ; Common # Zs NARROW NO-BREAK SPACE
+2030..2038 ; Common # Po [9] PER MILLE SIGN..CARET
+2039 ; Common # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A ; Common # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B..203E ; Common # Po [4] REFERENCE MARK..OVERLINE
+203F..2040 ; Common # Pc [2] UNDERTIE..CHARACTER TIE
+2041..2043 ; Common # Po [3] CARET INSERTION POINT..HYPHEN BULLET
+2044 ; Common # Sm FRACTION SLASH
+2045 ; Common # Ps LEFT SQUARE BRACKET WITH QUILL
+2046 ; Common # Pe RIGHT SQUARE BRACKET WITH QUILL
+2047..2051 ; Common # Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
+2052 ; Common # Sm COMMERCIAL MINUS SIGN
+2053 ; Common # Po SWUNG DASH
+2054 ; Common # Pc INVERTED UNDERTIE
+2055..205E ; Common # Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
+205F ; Common # Zs MEDIUM MATHEMATICAL SPACE
+2060..2063 ; Common # Cf [4] WORD JOINER..INVISIBLE SEPARATOR
+206A..206F ; Common # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+2070 ; Common # No SUPERSCRIPT ZERO
+2074..2079 ; Common # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; Common # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; Common # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; Common # Pe SUPERSCRIPT RIGHT PARENTHESIS
+2080..2089 ; Common # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
+20A0..20B5 ; Common # Sc [22] EURO-CURRENCY SIGN..CEDI SIGN
+2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
+2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
+2107 ; Common # L& EULER CONSTANT
+2108..2109 ; Common # So [2] SCRUPLE..DEGREE FAHRENHEIT
+210A..2113 ; Common # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2114 ; Common # So L B BAR SYMBOL
+2115 ; Common # L& DOUBLE-STRUCK CAPITAL N
+2116..2118 ; Common # So [3] NUMERO SIGN..SCRIPT CAPITAL P
+2119..211D ; Common # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+211E..2123 ; Common # So [6] PRESCRIPTION TAKE..VERSICLE
+2124 ; Common # L& DOUBLE-STRUCK CAPITAL Z
+2125 ; Common # So OUNCE SIGN
+2127 ; Common # So INVERTED OHM SIGN
+2128 ; Common # L& BLACK-LETTER CAPITAL Z
+2129 ; Common # So TURNED GREEK SMALL LETTER IOTA
+212C..212D ; Common # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C
+212E ; Common # So ESTIMATED SYMBOL
+212F..2131 ; Common # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; Common # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; Common # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; Common # L& INFORMATION SOURCE
+213A..213B ; Common # So [2] ROTATED CAPITAL Q..FACSIMILE SIGN
+213C..213F ; Common # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140..2144 ; Common # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+2145..2149 ; Common # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+214A ; Common # So PROPERTY LINE
+214B ; Common # Sm TURNED AMPERSAND
+214C..214D ; Common # So [2] PER SIGN..AKTIESELSKAB
+2153..215F ; Common # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..2182 ; Common # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+2183 ; Common # L& ROMAN NUMERAL REVERSED ONE HUNDRED
+2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW
+219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+219C..219F ; Common # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+21A0 ; Common # Sm RIGHTWARDS TWO HEADED ARROW
+21A1..21A2 ; Common # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+21A3 ; Common # Sm RIGHTWARDS ARROW WITH TAIL
+21A4..21A5 ; Common # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+21A6 ; Common # Sm RIGHTWARDS ARROW FROM BAR
+21A7..21AD ; Common # So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
+21AE ; Common # Sm LEFT RIGHT ARROW WITH STROKE
+21AF..21CD ; Common # So [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Common # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0..21D1 ; Common # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+21D2 ; Common # Sm RIGHTWARDS DOUBLE ARROW
+21D3 ; Common # So DOWNWARDS DOUBLE ARROW
+21D4 ; Common # Sm LEFT RIGHT DOUBLE ARROW
+21D5..21F3 ; Common # So [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
+21F4..22FF ; Common # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+2300..2307 ; Common # So [8] DIAMETER SIGN..WAVY LINE
+2308..230B ; Common # Sm [4] LEFT CEILING..RIGHT FLOOR
+230C..231F ; Common # So [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
+2320..2321 ; Common # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+2322..2328 ; Common # So [7] FROWN..KEYBOARD
+2329 ; Common # Ps LEFT-POINTING ANGLE BRACKET
+232A ; Common # Pe RIGHT-POINTING ANGLE BRACKET
+232B..237B ; Common # So [81] ERASE TO THE LEFT..NOT CHECK MARK
+237C ; Common # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+237D..239A ; Common # So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
+239B..23B3 ; Common # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+23B4..23DB ; Common # So [40] TOP SQUARE BRACKET..FUSE
+23DC..23E1 ; Common # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+23E2..23E7 ; Common # So [6] WHITE TRAPEZIUM..ELECTRICAL INTERSECTION
+2400..2426 ; Common # So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
+2440..244A ; Common # So [11] OCR HOOK..OCR DOUBLE BACKSLASH
+2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; Common # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA..24FF ; Common # No [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
+2500..25B6 ; Common # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
+25B7 ; Common # Sm WHITE RIGHT-POINTING TRIANGLE
+25B8..25C0 ; Common # So [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+25C1 ; Common # Sm WHITE LEFT-POINTING TRIANGLE
+25C2..25F7 ; Common # So [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+25F8..25FF ; Common # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+2600..266E ; Common # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
+266F ; Common # Sm MUSIC SHARP SIGN
+2670..269C ; Common # So [45] WEST SYRIAC CROSS..FLEUR-DE-LIS
+26A0..26B2 ; Common # So [19] WARNING SIGN..NEUTER
+2701..2704 ; Common # So [4] UPPER BLADE SCISSORS..WHITE SCISSORS
+2706..2709 ; Common # So [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270C..2727 ; Common # So [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2729..274B ; Common # So [35] STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D ; Common # So SHADOWED WHITE CIRCLE
+274F..2752 ; Common # So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2756 ; Common # So BLACK DIAMOND MINUS WHITE X
+2758..275E ; Common # So [7] LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761..2767 ; Common # So [7] CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
+2768 ; Common # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
+2769 ; Common # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A ; Common # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B ; Common # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C ; Common # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D ; Common # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E ; Common # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F ; Common # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770 ; Common # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771 ; Common # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772 ; Common # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2773 ; Common # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2774 ; Common # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775 ; Common # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
+2776..2793 ; Common # No [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+2794 ; Common # So HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798..27AF ; Common # So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1..27BE ; Common # So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
+27C0..27C4 ; Common # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+27C5 ; Common # Ps LEFT S-SHAPED BAG DELIMITER
+27C6 ; Common # Pe RIGHT S-SHAPED BAG DELIMITER
+27C7..27CA ; Common # Sm [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
+27D0..27E5 ; Common # Sm [22] WHITE DIAMOND WITH CENTRED DOT..WHITE SQUARE WITH RIGHTWARDS TICK
+27E6 ; Common # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7 ; Common # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8 ; Common # Ps MATHEMATICAL LEFT ANGLE BRACKET
+27E9 ; Common # Pe MATHEMATICAL RIGHT ANGLE BRACKET
+27EA ; Common # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB ; Common # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27F0..27FF ; Common # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+2900..2982 ; Common # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+2983 ; Common # Ps LEFT WHITE CURLY BRACKET
+2984 ; Common # Pe RIGHT WHITE CURLY BRACKET
+2985 ; Common # Ps LEFT WHITE PARENTHESIS
+2986 ; Common # Pe RIGHT WHITE PARENTHESIS
+2987 ; Common # Ps Z NOTATION LEFT IMAGE BRACKET
+2988 ; Common # Pe Z NOTATION RIGHT IMAGE BRACKET
+2989 ; Common # Ps Z NOTATION LEFT BINDING BRACKET
+298A ; Common # Pe Z NOTATION RIGHT BINDING BRACKET
+298B ; Common # Ps LEFT SQUARE BRACKET WITH UNDERBAR
+298C ; Common # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
+298D ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F ; Common # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990 ; Common # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991 ; Common # Ps LEFT ANGLE BRACKET WITH DOT
+2992 ; Common # Pe RIGHT ANGLE BRACKET WITH DOT
+2993 ; Common # Ps LEFT ARC LESS-THAN BRACKET
+2994 ; Common # Pe RIGHT ARC GREATER-THAN BRACKET
+2995 ; Common # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996 ; Common # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997 ; Common # Ps LEFT BLACK TORTOISE SHELL BRACKET
+2998 ; Common # Pe RIGHT BLACK TORTOISE SHELL BRACKET
+2999..29D7 ; Common # Sm [63] DOTTED FENCE..BLACK HOURGLASS
+29D8 ; Common # Ps LEFT WIGGLY FENCE
+29D9 ; Common # Pe RIGHT WIGGLY FENCE
+29DA ; Common # Ps LEFT DOUBLE WIGGLY FENCE
+29DB ; Common # Pe RIGHT DOUBLE WIGGLY FENCE
+29DC..29FB ; Common # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS
+29FC ; Common # Ps LEFT-POINTING CURVED ANGLE BRACKET
+29FD ; Common # Pe RIGHT-POINTING CURVED ANGLE BRACKET
+29FE..2AFF ; Common # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
+2B00..2B1A ; Common # So [27] NORTH EAST WHITE ARROW..DOTTED SQUARE
+2B20..2B23 ; Common # So [4] WHITE PENTAGON..HORIZONTAL BLACK HEXAGON
+2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET
+2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET
+2E04 ; Common # Pi LEFT DOTTED SUBSTITUTION BRACKET
+2E05 ; Common # Pf RIGHT DOTTED SUBSTITUTION BRACKET
+2E06..2E08 ; Common # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
+2E09 ; Common # Pi LEFT TRANSPOSITION BRACKET
+2E0A ; Common # Pf RIGHT TRANSPOSITION BRACKET
+2E0B ; Common # Po RAISED SQUARE
+2E0C ; Common # Pi LEFT RAISED OMISSION BRACKET
+2E0D ; Common # Pf RIGHT RAISED OMISSION BRACKET
+2E0E..2E16 ; Common # Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
+2E17 ; Common # Pd DOUBLE OBLIQUE HYPHEN
+2E1C ; Common # Pi LEFT LOW PARAPHRASE BRACKET
+2E1D ; Common # Pf RIGHT LOW PARAPHRASE BRACKET
+2FF0..2FFB ; Common # So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000 ; Common # Zs IDEOGRAPHIC SPACE
+3001..3003 ; Common # Po [3] IDEOGRAPHIC COMMA..DITTO MARK
+3004 ; Common # So JAPANESE INDUSTRIAL STANDARD SYMBOL
+3006 ; Common # Lo IDEOGRAPHIC CLOSING MARK
+3008 ; Common # Ps LEFT ANGLE BRACKET
+3009 ; Common # Pe RIGHT ANGLE BRACKET
+300A ; Common # Ps LEFT DOUBLE ANGLE BRACKET
+300B ; Common # Pe RIGHT DOUBLE ANGLE BRACKET
+300C ; Common # Ps LEFT CORNER BRACKET
+300D ; Common # Pe RIGHT CORNER BRACKET
+300E ; Common # Ps LEFT WHITE CORNER BRACKET
+300F ; Common # Pe RIGHT WHITE CORNER BRACKET
+3010 ; Common # Ps LEFT BLACK LENTICULAR BRACKET
+3011 ; Common # Pe RIGHT BLACK LENTICULAR BRACKET
+3012..3013 ; Common # So [2] POSTAL MARK..GETA MARK
+3014 ; Common # Ps LEFT TORTOISE SHELL BRACKET
+3015 ; Common # Pe RIGHT TORTOISE SHELL BRACKET
+3016 ; Common # Ps LEFT WHITE LENTICULAR BRACKET
+3017 ; Common # Pe RIGHT WHITE LENTICULAR BRACKET
+3018 ; Common # Ps LEFT WHITE TORTOISE SHELL BRACKET
+3019 ; Common # Pe RIGHT WHITE TORTOISE SHELL BRACKET
+301A ; Common # Ps LEFT WHITE SQUARE BRACKET
+301B ; Common # Pe RIGHT WHITE SQUARE BRACKET
+301C ; Common # Pd WAVE DASH
+301D ; Common # Ps REVERSED DOUBLE PRIME QUOTATION MARK
+301E..301F ; Common # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+3020 ; Common # So POSTAL MARK FACE
+3030 ; Common # Pd WAVY DASH
+3031..3035 ; Common # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+3036..3037 ; Common # So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+303C ; Common # Lo MASU MARK
+303D ; Common # Po PART ALTERNATION MARK
+303E..303F ; Common # So [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+309B..309C ; Common # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+30A0 ; Common # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FB ; Common # Po KATAKANA MIDDLE DOT
+30FC ; Common # Lm KATAKANA-HIRAGANA PROLONGED SOUND MARK
+3190..3191 ; Common # So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192..3195 ; Common # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; Common # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+31C0..31CF ; Common # So [16] CJK STROKE T..CJK STROKE N
+3220..3229 ; Common # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Common # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Common # So PARTNERSHIP SIGN
+3251..325F ; Common # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+327E..327F ; Common # So [2] CIRCLED HANGUL IEUNG U..KOREAN STANDARD SYMBOL
+3280..3289 ; Common # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; Common # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; Common # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; Common # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; Common # So [256] SQUARE APAATO..SQUARE GAL
+4DC0..4DFF ; Common # So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+A700..A716 ; Common # Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A717..A71A ; Common # Lm [4] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE
+A720..A721 ; Common # Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+FD3E ; Common # Ps ORNATE LEFT PARENTHESIS
+FD3F ; Common # Pe ORNATE RIGHT PARENTHESIS
+FDFD ; Common # So ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FE10..FE16 ; Common # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; Common # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Common # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; Common # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; Common # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE45..FE46 ; Common # Po [2] SESAME DOT..WHITE SESAME DOT
+FE47 ; Common # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; Common # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; Common # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; Common # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; Common # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; Common # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; Common # Pd SMALL EM DASH
+FE59 ; Common # Ps SMALL LEFT PARENTHESIS
+FE5A ; Common # Pe SMALL RIGHT PARENTHESIS
+FE5B ; Common # Ps SMALL LEFT CURLY BRACKET
+FE5C ; Common # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; Common # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; Common # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; Common # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; Common # Sm SMALL PLUS SIGN
+FE63 ; Common # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; Common # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; Common # Po SMALL REVERSE SOLIDUS
+FE69 ; Common # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; Common # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FEFF ; Common # Cf ZERO WIDTH NO-BREAK SPACE
+FF01..FF03 ; Common # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; Common # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; Common # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; Common # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; Common # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; Common # Po FULLWIDTH ASTERISK
+FF0B ; Common # Sm FULLWIDTH PLUS SIGN
+FF0C ; Common # Po FULLWIDTH COMMA
+FF0D ; Common # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; Common # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; Common # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; Common # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; Common # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; Common # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF3B ; Common # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; Common # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; Common # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; Common # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; Common # Pc FULLWIDTH LOW LINE
+FF40 ; Common # Sk FULLWIDTH GRAVE ACCENT
+FF5B ; Common # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; Common # Sm FULLWIDTH VERTICAL LINE
+FF5D ; Common # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; Common # Sm FULLWIDTH TILDE
+FF5F ; Common # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; Common # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; Common # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; Common # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; Common # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; Common # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF70 ; Common # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF9E..FF9F ; Common # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFE0..FFE1 ; Common # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; Common # Sm FULLWIDTH NOT SIGN
+FFE3 ; Common # Sk FULLWIDTH MACRON
+FFE4 ; Common # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; Common # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; Common # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; Common # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; Common # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+FFF9..FFFB ; Common # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
+10100..10101 ; Common # Po [2] AEGEAN WORD SEPARATOR LINE..AEGEAN WORD SEPARATOR DOT
+10102 ; Common # So AEGEAN CHECK MARK
+10107..10133 ; Common # No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+10137..1013F ; Common # So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+1D000..1D0F5 ; Common # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100..1D126 ; Common # So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
+1D12A..1D164 ; Common # So [59] MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D165..1D166 ; Common # Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D16A..1D16C ; Common # So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
+1D16D..1D172 ; Common # Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
+1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
+1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
+1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS
+1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; Common # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; Common # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; Common # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; Common # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; Common # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; Common # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; Common # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; Common # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; Common # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; Common # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; Common # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; Common # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; Common # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; Common # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; Common # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; Common # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; Common # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; Common # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; Common # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; Common # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; Common # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; Common # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; Common # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; Common # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; Common # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; Common # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; Common # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; Common # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; Common # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; Common # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; Common # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; Common # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; Common # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; Common # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; Common # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; Common # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+E0001 ; Common # Cf LANGUAGE TAG
+E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 5020
+
+# ================================================
+
+0041..005A ; Latin # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+0061..007A ; Latin # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA ; Latin # L& FEMININE ORDINAL INDICATOR
+00BA ; Latin # L& MASCULINE ORDINAL INDICATOR
+00C0..00D6 ; Latin # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00F6 ; Latin # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..01BA ; Latin # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+01BB ; Latin # Lo LATIN LETTER TWO WITH STROKE
+01BC..01BF ; Latin # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+01C0..01C3 ; Latin # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+01C4..0293 ; Latin # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+0294 ; Latin # Lo LATIN LETTER GLOTTAL STOP
+0295..02AF ; Latin # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0..02B8 ; Latin # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02E0..02E4 ; Latin # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+1D00..1D25 ; Latin # L& [38] LATIN LETTER SMALL CAPITAL A..LATIN LETTER AIN
+1D2C..1D5C ; Latin # Lm [49] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL AIN
+1D62..1D65 ; Latin # L& [4] LATIN SUBSCRIPT SMALL LETTER I..LATIN SUBSCRIPT SMALL LETTER V
+1D6B..1D77 ; Latin # L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+1D79..1D9A ; Latin # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1D9B..1DBE ; Latin # Lm [36] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL EZH
+1E00..1E9B ; Latin # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; Latin # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+2071 ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER I
+207F ; Latin # L& SUPERSCRIPT LATIN SMALL LETTER N
+2090..2094 ; Latin # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+212A..212B ; Latin # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2132 ; Latin # L& TURNED CAPITAL F
+214E ; Latin # L& TURNED SMALL F
+2184 ; Latin # L& LATIN SMALL LETTER REVERSED C
+2C60..2C6C ; Latin # L& [13] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN SMALL LETTER Z WITH DESCENDER
+2C74..2C77 ; Latin # L& [4] LATIN SMALL LETTER V WITH CURL..LATIN SMALL LETTER TAILLESS PHI
+FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+
+# Total code points: 1070
+
+# ================================================
+
+0374..0375 ; Greek # Sk [2] GREEK NUMERAL SIGN..GREEK LOWER NUMERAL SIGN
+037A ; Greek # Lm GREEK YPOGEGRAMMENI
+037B..037D ; Greek # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0384..0385 ; Greek # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; Greek # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Greek # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Greek # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..03A1 ; Greek # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+03A3..03CE ; Greek # L& [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03E1 ; Greek # L& [18] GREEK BETA SYMBOL..GREEK SMALL LETTER SAMPI
+03F0..03F5 ; Greek # L& [6] GREEK KAPPA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F6 ; Greek # Sm GREEK REVERSED LUNATE EPSILON SYMBOL
+03F7..03FF ; Greek # L& [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+1D26..1D2A ; Greek # L& [5] GREEK LETTER SMALL CAPITAL GAMMA..GREEK LETTER SMALL CAPITAL PSI
+1D5D..1D61 ; Greek # Lm [5] MODIFIER LETTER SMALL BETA..MODIFIER LETTER SMALL CHI
+1D66..1D6A ; Greek # L& [5] GREEK SUBSCRIPT SMALL LETTER BETA..GREEK SUBSCRIPT SMALL LETTER CHI
+1DBF ; Greek # Lm MODIFIER LETTER SMALL THETA
+1F00..1F15 ; Greek # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Greek # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Greek # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Greek # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Greek # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Greek # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Greek # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Greek # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Greek # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; Greek # Sk GREEK KORONIS
+1FBE ; Greek # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; Greek # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Greek # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Greek # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Greek # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Greek # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Greek # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Greek # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Greek # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; Greek # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; Greek # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Greek # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; Greek # Sk [2] GREEK OXIA..GREEK DASIA
+2126 ; Greek # L& OHM SIGN
+10140..10174 ; Greek # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10175..10178 ; Greek # No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
+10179..10189 ; Greek # So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
+1018A ; Greek # No GREEK ZERO SIGN
+1D200..1D241 ; Greek # So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D242..1D244 ; Greek # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+1D245 ; Greek # So GREEK MUSICAL LEIMMA
+
+# Total code points: 506
+
+# ================================================
+
+0400..0481 ; Cyrillic # L& [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA
+0482 ; Cyrillic # So CYRILLIC THOUSANDS SIGN
+0483..0486 ; Cyrillic # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
+0488..0489 ; Cyrillic # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+048A..0513 ; Cyrillic # L& [138] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH HOOK
+1D2B ; Cyrillic # L& CYRILLIC LETTER SMALL CAPITAL EL
+1D78 ; Cyrillic # Lm MODIFIER LETTER CYRILLIC EN
+
+# Total code points: 277
+
+# ================================================
+
+0531..0556 ; Armenian # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+0559 ; Armenian # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
+055A..055F ; Armenian # Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
+0561..0587 ; Armenian # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+058A ; Armenian # Pd ARMENIAN HYPHEN
+FB13..FB17 ; Armenian # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+
+# Total code points: 90
+
+# ================================================
+
+0591..05BD ; Hebrew # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BE ; Hebrew # Po HEBREW PUNCTUATION MAQAF
+05BF ; Hebrew # Mn HEBREW POINT RAFE
+05C0 ; Hebrew # Po HEBREW PUNCTUATION PASEQ
+05C1..05C2 ; Hebrew # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C3 ; Hebrew # Po HEBREW PUNCTUATION SOF PASUQ
+05C4..05C5 ; Hebrew # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C6 ; Hebrew # Po HEBREW PUNCTUATION NUN HAFUKHA
+05C7 ; Hebrew # Mn HEBREW POINT QAMATS QATAN
+05D0..05EA ; Hebrew # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2 ; Hebrew # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3..05F4 ; Hebrew # Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
+FB1D ; Hebrew # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1E ; Hebrew # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FB1F..FB28 ; Hebrew # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; Hebrew # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; Hebrew # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Hebrew # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Hebrew # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Hebrew # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Hebrew # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+
+# Total code points: 133
+
+# ================================================
+
+060B ; Arabic # Sc AFGHANI SIGN
+060D ; Arabic # Po ARABIC DATE SEPARATOR
+060E..060F ; Arabic # So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
+0610..0615 ; Arabic # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
+061E ; Arabic # Po ARABIC TRIPLE DOT PUNCTUATION MARK
+0621..063A ; Arabic # Lo [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
+0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+0656..065E ; Arabic # Mn [9] ARABIC SUBSCRIPT ALEF..ARABIC FATHA WITH TWO DOTS
+066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
+066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D4 ; Arabic # Po ARABIC FULL STOP
+06D5 ; Arabic # Lo ARABIC LETTER AE
+06D6..06DC ; Arabic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DE ; Arabic # Me ARABIC START OF RUB EL HIZB
+06DF..06E4 ; Arabic # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E5..06E6 ; Arabic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+06E7..06E8 ; Arabic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06E9 ; Arabic # So ARABIC PLACE OF SAJDAH
+06EA..06ED ; Arabic # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+06EE..06EF ; Arabic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06F0..06F9 ; Arabic # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+06FA..06FC ; Arabic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
+06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V
+0750..076D ; Arabic # Lo [30] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Arabic # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Arabic # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Arabic # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Arabic # Sc RIAL SIGN
+FE70..FE74 ; Arabic # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+
+# Total code points: 966
+
+# ================================================
+
+0700..070D ; Syriac # Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
+070F ; Syriac # Cf SYRIAC ABBREVIATION MARK
+0710 ; Syriac # Lo SYRIAC LETTER ALAPH
+0711 ; Syriac # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0712..072F ; Syriac # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+0730..074A ; Syriac # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+074D..074F ; Syriac # Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE
+
+# Total code points: 77
+
+# ================================================
+
+0780..07A5 ; Thaana # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU
+07A6..07B0 ; Thaana # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07B1 ; Thaana # Lo THAANA LETTER NAA
+
+# Total code points: 50
+
+# ================================================
+
+0901..0902 ; Devanagari # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+0903 ; Devanagari # Mc DEVANAGARI SIGN VISARGA
+0904..0939 ; Devanagari # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093C ; Devanagari # Mn DEVANAGARI SIGN NUKTA
+093D ; Devanagari # Lo DEVANAGARI SIGN AVAGRAHA
+093E..0940 ; Devanagari # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0941..0948 ; Devanagari # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+0949..094C ; Devanagari # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+094D ; Devanagari # Mn DEVANAGARI SIGN VIRAMA
+0950 ; Devanagari # Lo DEVANAGARI OM
+0951..0954 ; Devanagari # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
+0958..0961 ; Devanagari # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+0962..0963 ; Devanagari # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0966..096F ; Devanagari # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+097B..097F ; Devanagari # Lo [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA
+
+# Total code points: 107
+
+# ================================================
+
+0981 ; Bengali # Mn BENGALI SIGN CANDRABINDU
+0982..0983 ; Bengali # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+0985..098C ; Bengali # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; Bengali # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; Bengali # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; Bengali # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; Bengali # Lo BENGALI LETTER LA
+09B6..09B9 ; Bengali # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BC ; Bengali # Mn BENGALI SIGN NUKTA
+09BD ; Bengali # Lo BENGALI SIGN AVAGRAHA
+09BE..09C0 ; Bengali # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+09C1..09C4 ; Bengali # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09C7..09C8 ; Bengali # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; Bengali # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09CD ; Bengali # Mn BENGALI SIGN VIRAMA
+09CE ; Bengali # Lo BENGALI LETTER KHANDA TA
+09D7 ; Bengali # Mc BENGALI AU LENGTH MARK
+09DC..09DD ; Bengali # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; Bengali # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09E2..09E3 ; Bengali # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+09E6..09EF ; Bengali # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+09F0..09F1 ; Bengali # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+09F2..09F3 ; Bengali # Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
+09F4..09F9 ; Bengali # No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA ; Bengali # So BENGALI ISSHAR
+
+# Total code points: 91
+
+# ================================================
+
+0A01..0A02 ; Gurmukhi # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A03 ; Gurmukhi # Mc GURMUKHI SIGN VISARGA
+0A05..0A0A ; Gurmukhi # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; Gurmukhi # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; Gurmukhi # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; Gurmukhi # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; Gurmukhi # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; Gurmukhi # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; Gurmukhi # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A3C ; Gurmukhi # Mn GURMUKHI SIGN NUKTA
+0A3E..0A40 ; Gurmukhi # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A41..0A42 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Gurmukhi # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Gurmukhi # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A59..0A5C ; Gurmukhi # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; Gurmukhi # Lo GURMUKHI LETTER FA
+0A66..0A6F ; Gurmukhi # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0A70..0A71 ; Gurmukhi # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A72..0A74 ; Gurmukhi # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+
+# Total code points: 77
+
+# ================================================
+
+0A81..0A82 ; Gujarati # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0A83 ; Gujarati # Mc GUJARATI SIGN VISARGA
+0A85..0A8D ; Gujarati # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; Gujarati # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; Gujarati # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; Gujarati # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; Gujarati # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; Gujarati # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABC ; Gujarati # Mn GUJARATI SIGN NUKTA
+0ABD ; Gujarati # Lo GUJARATI SIGN AVAGRAHA
+0ABE..0AC0 ; Gujarati # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC1..0AC5 ; Gujarati # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0AC9 ; Gujarati # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; Gujarati # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0ACD ; Gujarati # Mn GUJARATI SIGN VIRAMA
+0AD0 ; Gujarati # Lo GUJARATI OM
+0AE0..0AE1 ; Gujarati # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0AE2..0AE3 ; Gujarati # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN
+
+# Total code points: 83
+
+# ================================================
+
+0B01 ; Oriya # Mn ORIYA SIGN CANDRABINDU
+0B02..0B03 ; Oriya # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B05..0B0C ; Oriya # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; Oriya # Lo [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; Oriya # Lo [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; Oriya # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; Oriya # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39 ; Oriya # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3C ; Oriya # Mn ORIYA SIGN NUKTA
+0B3D ; Oriya # Lo ORIYA SIGN AVAGRAHA
+0B3E ; Oriya # Mc ORIYA VOWEL SIGN AA
+0B3F ; Oriya # Mn ORIYA VOWEL SIGN I
+0B40 ; Oriya # Mc ORIYA VOWEL SIGN II
+0B41..0B43 ; Oriya # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R
+0B47..0B48 ; Oriya # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Oriya # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B4D ; Oriya # Mn ORIYA SIGN VIRAMA
+0B56 ; Oriya # Mn ORIYA AI LENGTH MARK
+0B57 ; Oriya # Mc ORIYA AU LENGTH MARK
+0B5C..0B5D ; Oriya # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; Oriya # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B66..0B6F ; Oriya # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0B70 ; Oriya # So ORIYA ISSHAR
+0B71 ; Oriya # Lo ORIYA LETTER WA
+
+# Total code points: 81
+
+# ================================================
+
+0B82 ; Tamil # Mn TAMIL SIGN ANUSVARA
+0B83 ; Tamil # Lo TAMIL SIGN VISARGA
+0B85..0B8A ; Tamil # Lo [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; Tamil # Lo [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; Tamil # Lo [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; Tamil # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; Tamil # Lo TAMIL LETTER JA
+0B9E..0B9F ; Tamil # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; Tamil # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; Tamil # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9 ; Tamil # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA
+0BBE..0BBF ; Tamil # Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+0BC0 ; Tamil # Mn TAMIL VOWEL SIGN II
+0BC1..0BC2 ; Tamil # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; Tamil # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; Tamil # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0BCD ; Tamil # Mn TAMIL SIGN VIRAMA
+0BD7 ; Tamil # Mc TAMIL AU LENGTH MARK
+0BE6..0BEF ; Tamil # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0BF0..0BF2 ; Tamil # No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+0BF3..0BF8 ; Tamil # So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
+0BF9 ; Tamil # Sc TAMIL RUPEE SIGN
+0BFA ; Tamil # So TAMIL NUMBER SIGN
+
+# Total code points: 71
+
+# ================================================
+
+0C01..0C03 ; Telugu # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C05..0C0C ; Telugu # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; Telugu # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; Telugu # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33 ; Telugu # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39 ; Telugu # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C3E..0C40 ; Telugu # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C41..0C44 ; Telugu # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+
+# Total code points: 80
+
+# ================================================
+
+0C82..0C83 ; Kannada # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C85..0C8C ; Kannada # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; Kannada # Lo [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; Kannada # Lo [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; Kannada # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; Kannada # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBC ; Kannada # Mn KANNADA SIGN NUKTA
+0CBD ; Kannada # Lo KANNADA SIGN AVAGRAHA
+0CBE ; Kannada # Mc KANNADA VOWEL SIGN AA
+0CBF ; Kannada # Mn KANNADA VOWEL SIGN I
+0CC0..0CC4 ; Kannada # Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+0CC6 ; Kannada # Mn KANNADA VOWEL SIGN E
+0CC7..0CC8 ; Kannada # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Kannada # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CCC..0CCD ; Kannada # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; Kannada # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CDE ; Kannada # Lo KANNADA LETTER FA
+0CE0..0CE1 ; Kannada # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0CE2..0CE3 ; Kannada # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0CE6..0CEF ; Kannada # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0CF1..0CF2 ; Kannada # So [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+
+# Total code points: 86
+
+# ================================================
+
+0D02..0D03 ; Malayalam # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D05..0D0C ; Malayalam # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; Malayalam # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28 ; Malayalam # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39 ; Malayalam # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D3E..0D40 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+0D41..0D43 ; Malayalam # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R
+0D46..0D48 ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; Malayalam # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA
+0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK
+0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+
+# Total code points: 78
+
+# ================================================
+
+0D82..0D83 ; Sinhala # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0D85..0D96 ; Sinhala # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; Sinhala # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; Sinhala # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; Sinhala # Lo SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; Sinhala # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0DCA ; Sinhala # Mn SINHALA SIGN AL-LAKUNA
+0DCF..0DD1 ; Sinhala # Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2..0DD4 ; Sinhala # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Sinhala # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8..0DDF ; Sinhala # Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+0DF2..0DF3 ; Sinhala # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DF4 ; Sinhala # Po SINHALA PUNCTUATION KUNDDALIYA
+
+# Total code points: 80
+
+# ================================================
+
+0E01..0E30 ; Thai # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+0E31 ; Thai # Mn THAI CHARACTER MAI HAN-AKAT
+0E32..0E33 ; Thai # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+0E34..0E3A ; Thai # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E40..0E45 ; Thai # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+0E46 ; Thai # Lm THAI CHARACTER MAIYAMOK
+0E47..0E4E ; Thai # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0E4F ; Thai # Po THAI CHARACTER FONGMAN
+0E50..0E59 ; Thai # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0E5A..0E5B ; Thai # Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
+
+# Total code points: 86
+
+# ================================================
+
+0E81..0E82 ; Lao # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG
+0E84 ; Lao # Lo LAO LETTER KHO TAM
+0E87..0E88 ; Lao # Lo [2] LAO LETTER NGO..LAO LETTER CO
+0E8A ; Lao # Lo LAO LETTER SO TAM
+0E8D ; Lao # Lo LAO LETTER NYO
+0E94..0E97 ; Lao # Lo [4] LAO LETTER DO..LAO LETTER THO TAM
+0E99..0E9F ; Lao # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG
+0EA1..0EA3 ; Lao # Lo [3] LAO LETTER MO..LAO LETTER LO LING
+0EA5 ; Lao # Lo LAO LETTER LO LOOT
+0EA7 ; Lao # Lo LAO LETTER WO
+0EAA..0EAB ; Lao # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
+0EAD..0EB0 ; Lao # Lo [4] LAO LETTER O..LAO VOWEL SIGN A
+0EB1 ; Lao # Mn LAO VOWEL SIGN MAI KAN
+0EB2..0EB3 ; Lao # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+0EB4..0EB9 ; Lao # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+0EBB..0EBC ; Lao # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EBD ; Lao # Lo LAO SEMIVOWEL SIGN NYO
+0EC0..0EC4 ; Lao # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+0EC6 ; Lao # Lm LAO KO LA
+0EC8..0ECD ; Lao # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
+0ED0..0ED9 ; Lao # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0EDC..0EDD ; Lao # Lo [2] LAO HO NO..LAO HO MO
+
+# Total code points: 65
+
+# ================================================
+
+0F00 ; Tibetan # Lo TIBETAN SYLLABLE OM
+0F01..0F03 ; Tibetan # So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04..0F12 ; Tibetan # Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
+0F13..0F17 ; Tibetan # So [5] TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F18..0F19 ; Tibetan # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F1A..0F1F ; Tibetan # So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
+0F20..0F29 ; Tibetan # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+0F2A..0F33 ; Tibetan # No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
+0F34 ; Tibetan # So TIBETAN MARK BSDUS RTAGS
+0F35 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F36 ; Tibetan # So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F37 ; Tibetan # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F38 ; Tibetan # So TIBETAN MARK CHE MGO
+0F39 ; Tibetan # Mn TIBETAN MARK TSA -PHRU
+0F3A ; Tibetan # Ps TIBETAN MARK GUG RTAGS GYON
+0F3B ; Tibetan # Pe TIBETAN MARK GUG RTAGS GYAS
+0F3C ; Tibetan # Ps TIBETAN MARK ANG KHANG GYON
+0F3D ; Tibetan # Pe TIBETAN MARK ANG KHANG GYAS
+0F3E..0F3F ; Tibetan # Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+0F40..0F47 ; Tibetan # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6A ; Tibetan # Lo [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA
+0F71..0F7E ; Tibetan # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F7F ; Tibetan # Mc TIBETAN SIGN RNAM BCAD
+0F80..0F84 ; Tibetan # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F85 ; Tibetan # Po TIBETAN MARK PALUTA
+0F86..0F87 ; Tibetan # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F88..0F8B ; Tibetan # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
+0F90..0F97 ; Tibetan # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Tibetan # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FBE..0FC5 ; Tibetan # So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
+0FC6 ; Tibetan # Mn TIBETAN SYMBOL PADMA GDAN
+0FC7..0FCC ; Tibetan # So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCF ; Tibetan # So TIBETAN SIGN RDEL NAG GSUM
+0FD0..0FD1 ; Tibetan # Po [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN
+
+# Total code points: 195
+
+# ================================================
+
+1000..1021 ; Myanmar # Lo [34] MYANMAR LETTER KA..MYANMAR LETTER A
+1023..1027 ; Myanmar # Lo [5] MYANMAR LETTER I..MYANMAR LETTER E
+1029..102A ; Myanmar # Lo [2] MYANMAR LETTER O..MYANMAR LETTER AU
+102C ; Myanmar # Mc MYANMAR VOWEL SIGN AA
+102D..1030 ; Myanmar # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1031 ; Myanmar # Mc MYANMAR VOWEL SIGN E
+1032 ; Myanmar # Mn MYANMAR VOWEL SIGN AI
+1036..1037 ; Myanmar # Mn [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW
+1038 ; Myanmar # Mc MYANMAR SIGN VISARGA
+1039 ; Myanmar # Mn MYANMAR SIGN VIRAMA
+1040..1049 ; Myanmar # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+104A..104F ; Myanmar # Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
+1050..1055 ; Myanmar # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+1056..1057 ; Myanmar # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+1058..1059 ; Myanmar # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+
+# Total code points: 78
+
+# ================================================
+
+10A0..10C5 ; Georgian # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+10D0..10FA ; Georgian # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10FC ; Georgian # Lm MODIFIER LETTER GEORGIAN NAR
+2D00..2D25 ; Georgian # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+
+# Total code points: 120
+
+# ================================================
+
+1100..1159 ; Hangul # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2 ; Hangul # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9 ; Hangul # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+3131..318E ; Hangul # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3200..321E ; Hangul # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3260..327D ; Hangul # So [30] CIRCLED HANGUL KIYEOK..CIRCLED KOREAN CHARACTER JUEUI
+AC00..D7A3 ; Hangul # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FFA0..FFBE ; Hangul # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; Hangul # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; Hangul # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+
+# Total code points: 11619
+
+# ================================================
+
+1200..1248 ; Ethiopic # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+124A..124D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; Ethiopic # Lo ETHIOPIC SYLLABLE QHWA
+125A..125D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288 ; Ethiopic # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0 ; Ethiopic # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; Ethiopic # Lo ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6 ; Ethiopic # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310 ; Ethiopic # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315 ; Ethiopic # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A ; Ethiopic # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+135F ; Ethiopic # Mn ETHIOPIC COMBINING GEMINATION MARK
+1360 ; Ethiopic # So ETHIOPIC SECTION MARK
+1361..1368 ; Ethiopic # Po [8] ETHIOPIC WORDSPACE..ETHIOPIC PARAGRAPH SEPARATOR
+1369..137C ; Ethiopic # No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
+1380..138F ; Ethiopic # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+1390..1399 ; Ethiopic # So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
+2D80..2D96 ; Ethiopic # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+
+# Total code points: 461
+
+# ================================================
+
+13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+
+# Total code points: 85
+
+# ================================================
+
+1401..166C ; Canadian_Aboriginal # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166D..166E ; Canadian_Aboriginal # Po [2] CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
+166F..1676 ; Canadian_Aboriginal # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
+
+# Total code points: 630
+
+# ================================================
+
+1680 ; Ogham # Zs OGHAM SPACE MARK
+1681..169A ; Ogham # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+169B ; Ogham # Ps OGHAM FEATHER MARK
+169C ; Ogham # Pe OGHAM REVERSED FEATHER MARK
+
+# Total code points: 29
+
+# ================================================
+
+16A0..16EA ; Runic # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+16EE..16F0 ; Runic # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+
+# Total code points: 78
+
+# ================================================
+
+1780..17B3 ; Khmer # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+17B4..17B5 ; Khmer # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+17B6 ; Khmer # Mc KHMER VOWEL SIGN AA
+17B7..17BD ; Khmer # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17BE..17C5 ; Khmer # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C6 ; Khmer # Mn KHMER SIGN NIKAHIT
+17C7..17C8 ; Khmer # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+17C9..17D3 ; Khmer # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17D4..17D6 ; Khmer # Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
+17D7 ; Khmer # Lm KHMER SIGN LEK TOO
+17D8..17DA ; Khmer # Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
+17DB ; Khmer # Sc KHMER CURRENCY SYMBOL RIEL
+17DC ; Khmer # Lo KHMER SIGN AVAKRAHASANYA
+17DD ; Khmer # Mn KHMER SIGN ATTHACAN
+17E0..17E9 ; Khmer # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+17F0..17F9 ; Khmer # No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
+19E0..19FF ; Khmer # So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
+
+# Total code points: 146
+
+# ================================================
+
+1800..1801 ; Mongolian # Po [2] MONGOLIAN BIRGA..MONGOLIAN ELLIPSIS
+1804 ; Mongolian # Po MONGOLIAN COLON
+1806 ; Mongolian # Pd MONGOLIAN TODO SOFT HYPHEN
+1807..180A ; Mongolian # Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
+180B..180D ; Mongolian # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+180E ; Mongolian # Zs MONGOLIAN VOWEL SEPARATOR
+1810..1819 ; Mongolian # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1820..1842 ; Mongolian # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1843 ; Mongolian # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844..1877 ; Mongolian # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1880..18A8 ; Mongolian # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+18A9 ; Mongolian # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+
+# Total code points: 152
+
+# ================================================
+
+3041..3096 ; Hiragana # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+309D..309E ; Hiragana # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+309F ; Hiragana # Lo HIRAGANA DIGRAPH YORI
+
+# Total code points: 89
+
+# ================================================
+
+30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FD..30FE ; Katakana # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK
+30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO
+31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+
+# Total code points: 164
+
+# ================================================
+
+3105..312C ; Bopomofo # Lo [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN
+31A0..31B7 ; Bopomofo # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+
+# Total code points: 64
+
+# ================================================
+
+2E80..2E99 ; Han # So [26] CJK RADICAL REPEAT..CJK RADICAL RAP
+2E9B..2EF3 ; Han # So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; Han # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3005 ; Han # Lm IDEOGRAPHIC ITERATION MARK
+3007 ; Han # Nl IDEOGRAPHIC NUMBER ZERO
+3021..3029 ; Han # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
+3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
+4E00..9FBB ; Han # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB
+F900..FA2D ; Han # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; Han # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
+2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 71570
+
+# ================================================
+
+A000..A014 ; Yi # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
+A015 ; Yi # Lm YI SYLLABLE WU
+A016..A48C ; Yi # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A490..A4C6 ; Yi # So [55] YI RADICAL QOT..YI RADICAL KE
+
+# Total code points: 1220
+
+# ================================================
+
+10300..1031E ; Old_Italic # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10320..10323 ; Old_Italic # No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
+
+# Total code points: 35
+
+# ================================================
+
+10330..10340 ; Gothic # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
+10341 ; Gothic # Nl GOTHIC LETTER NINETY
+10342..10349 ; Gothic # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+1034A ; Gothic # Nl GOTHIC LETTER NINE HUNDRED
+
+# Total code points: 27
+
+# ================================================
+
+10400..1044F ; Deseret # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+
+# Total code points: 80
+
+# ================================================
+
+0300..036F ; Inherited # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+064B..0655 ; Inherited # Mn [11] ARABIC FATHATAN..ARABIC HAMZA BELOW
+0670 ; Inherited # Mn ARABIC LETTER SUPERSCRIPT ALEF
+1DC0..1DCA ; Inherited # Mn [11] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER R BELOW
+1DFE..1DFF ; Inherited # Mn [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C..200D ; Inherited # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+20D0..20DC ; Inherited # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; Inherited # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1 ; Inherited # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; Inherited # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20EF ; Inherited # Mn [11] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW
+302A..302F ; Inherited # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Inherited # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+FE00..FE0F ; Inherited # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE23 ; Inherited # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
+1D167..1D169 ; Inherited # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D17B..1D182 ; Inherited # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Inherited # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Inherited # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 461
+
+# ================================================
+
+1700..170C ; Tagalog # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1711 ; Tagalog # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA
+1712..1714 ; Tagalog # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+
+# Total code points: 20
+
+# ================================================
+
+1720..1731 ; Hanunoo # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA
+1732..1734 ; Hanunoo # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+
+# Total code points: 21
+
+# ================================================
+
+1740..1751 ; Buhid # Lo [18] BUHID LETTER A..BUHID LETTER HA
+1752..1753 ; Buhid # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+
+# Total code points: 20
+
+# ================================================
+
+1760..176C ; Tagbanwa # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; Tagbanwa # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1772..1773 ; Tagbanwa # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+
+# Total code points: 18
+
+# ================================================
+
+1900..191C ; Limbu # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1920..1922 ; Limbu # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1923..1926 ; Limbu # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1927..1928 ; Limbu # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1929..192B ; Limbu # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; Limbu # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1932 ; Limbu # Mn LIMBU SMALL LETTER ANUSVARA
+1933..1938 ; Limbu # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1939..193B ; Limbu # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1940 ; Limbu # So LIMBU SIGN LOO
+1944..1945 ; Limbu # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+1946..194F ; Limbu # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+
+# Total code points: 66
+
+# ================================================
+
+1950..196D ; Tai_Le # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI
+1970..1974 ; Tai_Le # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+
+# Total code points: 35
+
+# ================================================
+
+10000..1000B ; Linear_B # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; Linear_B # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; Linear_B # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; Linear_B # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; Linear_B # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; Linear_B # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; Linear_B # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+
+# Total code points: 211
+
+# ================================================
+
+10380..1039D ; Ugaritic # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+1039F ; Ugaritic # Po UGARITIC WORD DIVIDER
+
+# Total code points: 31
+
+# ================================================
+
+10450..1047F ; Shavian # Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW
+
+# Total code points: 48
+
+# ================================================
+
+10480..1049D ; Osmanya # Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO
+104A0..104A9 ; Osmanya # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+
+# Total code points: 40
+
+# ================================================
+
+10800..10805 ; Cypriot # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; Cypriot # Lo CYPRIOT SYLLABLE JO
+1080A..10835 ; Cypriot # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; Cypriot # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; Cypriot # Lo CYPRIOT SYLLABLE ZA
+1083F ; Cypriot # Lo CYPRIOT SYLLABLE ZO
+
+# Total code points: 55
+
+# ================================================
+
+2800..28FF ; Braille # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
+
+# Total code points: 256
+
+# ================================================
+
+1A00..1A16 ; Buginese # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1A17..1A18 ; Buginese # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1A19..1A1B ; Buginese # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1A1E..1A1F ; Buginese # Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
+
+# Total code points: 30
+
+# ================================================
+
+03E2..03EF ; Coptic # L& [14] COPTIC CAPITAL LETTER SHEI..COPTIC SMALL LETTER DEI
+2C80..2CE4 ; Coptic # L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI
+2CE5..2CEA ; Coptic # So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
+2CF9..2CFC ; Coptic # Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
+2CFD ; Coptic # No COPTIC FRACTION ONE HALF
+2CFE..2CFF ; Coptic # Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
+
+# Total code points: 128
+
+# ================================================
+
+1980..19A9 ; New_Tai_Lue # Lo [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
+19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
+19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
+19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
+19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+19DE..19DF ; New_Tai_Lue # Po [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
+
+# Total code points: 80
+
+# ================================================
+
+2C00..2C2E ; Glagolitic # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C30..2C5E ; Glagolitic # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+
+# Total code points: 94
+
+# ================================================
+
+2D30..2D65 ; Tifinagh # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D6F ; Tifinagh # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+
+# Total code points: 55
+
+# ================================================
+
+A800..A801 ; Syloti_Nagri # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I
+A802 ; Syloti_Nagri # Mc SYLOTI NAGRI SIGN DVISVARA
+A803..A805 ; Syloti_Nagri # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A806 ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN HASANTA
+A807..A80A ; Syloti_Nagri # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80B ; Syloti_Nagri # Mn SYLOTI NAGRI SIGN ANUSVARA
+A80C..A822 ; Syloti_Nagri # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A823..A824 ; Syloti_Nagri # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A825..A826 ; Syloti_Nagri # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+A827 ; Syloti_Nagri # Mc SYLOTI NAGRI VOWEL SIGN OO
+A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
+
+# Total code points: 44
+
+# ================================================
+
+103A0..103C3 ; Old_Persian # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF ; Old_Persian # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+103D0 ; Old_Persian # Po OLD PERSIAN WORD DIVIDER
+103D1..103D5 ; Old_Persian # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+
+# Total code points: 50
+
+# ================================================
+
+10A00 ; Kharoshthi # Lo KHAROSHTHI LETTER A
+10A01..10A03 ; Kharoshthi # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Kharoshthi # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Kharoshthi # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A10..10A13 ; Kharoshthi # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17 ; Kharoshthi # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33 ; Kharoshthi # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+10A38..10A3A ; Kharoshthi # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Kharoshthi # Mn KHAROSHTHI VIRAMA
+10A40..10A47 ; Kharoshthi # No [8] KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
+10A50..10A58 ; Kharoshthi # Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
+
+# Total code points: 65
+
+# ================================================
+
+1B00..1B03 ; Balinese # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B04 ; Balinese # Mc BALINESE SIGN BISAH
+1B05..1B33 ; Balinese # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B34 ; Balinese # Mn BALINESE SIGN REREKAN
+1B35 ; Balinese # Mc BALINESE VOWEL SIGN TEDUNG
+1B36..1B3A ; Balinese # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3B ; Balinese # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C ; Balinese # Mn BALINESE VOWEL SIGN LA LENGA
+1B3D..1B41 ; Balinese # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B42 ; Balinese # Mn BALINESE VOWEL SIGN PEPET
+1B43..1B44 ; Balinese # Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+1B45..1B4B ; Balinese # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
+1B50..1B59 ; Balinese # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+1B5A..1B60 ; Balinese # Po [7] BALINESE PANTI..BALINESE PAMENENG
+1B61..1B6A ; Balinese # So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
+1B6B..1B73 ; Balinese # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1B74..1B7C ; Balinese # So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+
+# Total code points: 121
+
+# ================================================
+
+12000..1236E ; Cuneiform # Lo [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+12400..12462 ; Cuneiform # Nl [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12470..12473 ; Cuneiform # Po [4] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+
+# Total code points: 982
+
+# ================================================
+
+10900..10915 ; Phoenician # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10916..10919 ; Phoenician # No [4] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED
+1091F ; Phoenician # Po PHOENICIAN WORD SEPARATOR
+
+# Total code points: 27
+
+# ================================================
+
+A840..A873 ; Phags_Pa # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+A874..A877 ; Phags_Pa # Po [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
+
+# Total code points: 56
+
+# ================================================
+
+07C0..07C9 ; Nko # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
+07CA..07EA ; Nko # Lo [33] NKO LETTER A..NKO LETTER JONA RA
+07EB..07F3 ; Nko # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+07F4..07F5 ; Nko # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07F6 ; Nko # So NKO SYMBOL OO DENNEN
+07F7..07F9 ; Nko # Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
+07FA ; Nko # Lm NKO LAJANYALAN
+
+# Total code points: 59
+
+# EOF
diff --git a/util/unicode/data/ScriptsCorrections.txt b/util/unicode/data/ScriptsCorrections.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/util/unicode/data/ScriptsCorrections.txt
diff --git a/util/unicode/data/ScriptsInitial.txt b/util/unicode/data/ScriptsInitial.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/util/unicode/data/ScriptsInitial.txt
diff --git a/util/unicode/data/SentenceBreakProperty.txt b/util/unicode/data/SentenceBreakProperty.txt
new file mode 100644
index 0000000000..3aefc410fc
--- /dev/null
+++ b/util/unicode/data/SentenceBreakProperty.txt
@@ -0,0 +1,1664 @@
+# SentenceBreakProperty-5.0.0.txt
+# Date: 2006-03-09, 23:14:25 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property: Sentence_Break
+
+# All code points not explicitly listed for Sentence_Break
+# have the value Other (XX).
+
+# @missing: 0000..10FFFF; Other
+
+# ================================================
+
+000A ; Sep # Cc <control-000A>
+000D ; Sep # Cc <control-000D>
+0085 ; Sep # Cc <control-0085>
+2028 ; Sep # Zl LINE SEPARATOR
+2029 ; Sep # Zp PARAGRAPH SEPARATOR
+
+# Total code points: 5
+
+# ================================================
+
+00AD ; Format # Cf SOFT HYPHEN
+0600..0603 ; Format # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+06DD ; Format # Cf ARABIC END OF AYAH
+070F ; Format # Cf SYRIAC ABBREVIATION MARK
+17B4..17B5 ; Format # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+200B ; Format # Cf ZERO WIDTH SPACE
+200E..200F ; Format # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+202A..202E ; Format # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2063 ; Format # Cf [4] WORD JOINER..INVISIBLE SEPARATOR
+206A..206F ; Format # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+FEFF ; Format # Cf ZERO WIDTH NO-BREAK SPACE
+FFF9..FFFB ; Format # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+1D173..1D17A ; Format # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0001 ; Format # Cf LANGUAGE TAG
+E0020..E007F ; Format # Cf [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 136
+
+# ================================================
+
+0009 ; Sp # Cc <control-0009>
+000B..000C ; Sp # Cc [2] <control-000B>..<control-000C>
+0020 ; Sp # Zs SPACE
+1680 ; Sp # Zs OGHAM SPACE MARK
+180E ; Sp # Zs MONGOLIAN VOWEL SEPARATOR
+2000..200A ; Sp # Zs [11] EN QUAD..HAIR SPACE
+202F ; Sp # Zs NARROW NO-BREAK SPACE
+205F ; Sp # Zs MEDIUM MATHEMATICAL SPACE
+3000 ; Sp # Zs IDEOGRAPHIC SPACE
+
+# Total code points: 20
+
+# ================================================
+
+0061..007A ; Lower # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA ; Lower # L& FEMININE ORDINAL INDICATOR
+00B5 ; Lower # L& MICRO SIGN
+00BA ; Lower # L& MASCULINE ORDINAL INDICATOR
+00DF..00F6 ; Lower # L& [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..00FF ; Lower # L& [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
+0101 ; Lower # L& LATIN SMALL LETTER A WITH MACRON
+0103 ; Lower # L& LATIN SMALL LETTER A WITH BREVE
+0105 ; Lower # L& LATIN SMALL LETTER A WITH OGONEK
+0107 ; Lower # L& LATIN SMALL LETTER C WITH ACUTE
+0109 ; Lower # L& LATIN SMALL LETTER C WITH CIRCUMFLEX
+010B ; Lower # L& LATIN SMALL LETTER C WITH DOT ABOVE
+010D ; Lower # L& LATIN SMALL LETTER C WITH CARON
+010F ; Lower # L& LATIN SMALL LETTER D WITH CARON
+0111 ; Lower # L& LATIN SMALL LETTER D WITH STROKE
+0113 ; Lower # L& LATIN SMALL LETTER E WITH MACRON
+0115 ; Lower # L& LATIN SMALL LETTER E WITH BREVE
+0117 ; Lower # L& LATIN SMALL LETTER E WITH DOT ABOVE
+0119 ; Lower # L& LATIN SMALL LETTER E WITH OGONEK
+011B ; Lower # L& LATIN SMALL LETTER E WITH CARON
+011D ; Lower # L& LATIN SMALL LETTER G WITH CIRCUMFLEX
+011F ; Lower # L& LATIN SMALL LETTER G WITH BREVE
+0121 ; Lower # L& LATIN SMALL LETTER G WITH DOT ABOVE
+0123 ; Lower # L& LATIN SMALL LETTER G WITH CEDILLA
+0125 ; Lower # L& LATIN SMALL LETTER H WITH CIRCUMFLEX
+0127 ; Lower # L& LATIN SMALL LETTER H WITH STROKE
+0129 ; Lower # L& LATIN SMALL LETTER I WITH TILDE
+012B ; Lower # L& LATIN SMALL LETTER I WITH MACRON
+012D ; Lower # L& LATIN SMALL LETTER I WITH BREVE
+012F ; Lower # L& LATIN SMALL LETTER I WITH OGONEK
+0131 ; Lower # L& LATIN SMALL LETTER DOTLESS I
+0133 ; Lower # L& LATIN SMALL LIGATURE IJ
+0135 ; Lower # L& LATIN SMALL LETTER J WITH CIRCUMFLEX
+0137..0138 ; Lower # L& [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA
+013A ; Lower # L& LATIN SMALL LETTER L WITH ACUTE
+013C ; Lower # L& LATIN SMALL LETTER L WITH CEDILLA
+013E ; Lower # L& LATIN SMALL LETTER L WITH CARON
+0140 ; Lower # L& LATIN SMALL LETTER L WITH MIDDLE DOT
+0142 ; Lower # L& LATIN SMALL LETTER L WITH STROKE
+0144 ; Lower # L& LATIN SMALL LETTER N WITH ACUTE
+0146 ; Lower # L& LATIN SMALL LETTER N WITH CEDILLA
+0148..0149 ; Lower # L& [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014B ; Lower # L& LATIN SMALL LETTER ENG
+014D ; Lower # L& LATIN SMALL LETTER O WITH MACRON
+014F ; Lower # L& LATIN SMALL LETTER O WITH BREVE
+0151 ; Lower # L& LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0153 ; Lower # L& LATIN SMALL LIGATURE OE
+0155 ; Lower # L& LATIN SMALL LETTER R WITH ACUTE
+0157 ; Lower # L& LATIN SMALL LETTER R WITH CEDILLA
+0159 ; Lower # L& LATIN SMALL LETTER R WITH CARON
+015B ; Lower # L& LATIN SMALL LETTER S WITH ACUTE
+015D ; Lower # L& LATIN SMALL LETTER S WITH CIRCUMFLEX
+015F ; Lower # L& LATIN SMALL LETTER S WITH CEDILLA
+0161 ; Lower # L& LATIN SMALL LETTER S WITH CARON
+0163 ; Lower # L& LATIN SMALL LETTER T WITH CEDILLA
+0165 ; Lower # L& LATIN SMALL LETTER T WITH CARON
+0167 ; Lower # L& LATIN SMALL LETTER T WITH STROKE
+0169 ; Lower # L& LATIN SMALL LETTER U WITH TILDE
+016B ; Lower # L& LATIN SMALL LETTER U WITH MACRON
+016D ; Lower # L& LATIN SMALL LETTER U WITH BREVE
+016F ; Lower # L& LATIN SMALL LETTER U WITH RING ABOVE
+0171 ; Lower # L& LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0173 ; Lower # L& LATIN SMALL LETTER U WITH OGONEK
+0175 ; Lower # L& LATIN SMALL LETTER W WITH CIRCUMFLEX
+0177 ; Lower # L& LATIN SMALL LETTER Y WITH CIRCUMFLEX
+017A ; Lower # L& LATIN SMALL LETTER Z WITH ACUTE
+017C ; Lower # L& LATIN SMALL LETTER Z WITH DOT ABOVE
+017E..0180 ; Lower # L& [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE
+0183 ; Lower # L& LATIN SMALL LETTER B WITH TOPBAR
+0185 ; Lower # L& LATIN SMALL LETTER TONE SIX
+0188 ; Lower # L& LATIN SMALL LETTER C WITH HOOK
+018C..018D ; Lower # L& [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA
+0192 ; Lower # L& LATIN SMALL LETTER F WITH HOOK
+0195 ; Lower # L& LATIN SMALL LETTER HV
+0199..019B ; Lower # L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
+019E ; Lower # L& LATIN SMALL LETTER N WITH LONG RIGHT LEG
+01A1 ; Lower # L& LATIN SMALL LETTER O WITH HORN
+01A3 ; Lower # L& LATIN SMALL LETTER OI
+01A5 ; Lower # L& LATIN SMALL LETTER P WITH HOOK
+01A8 ; Lower # L& LATIN SMALL LETTER TONE TWO
+01AA..01AB ; Lower # L& [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK
+01AD ; Lower # L& LATIN SMALL LETTER T WITH HOOK
+01B0 ; Lower # L& LATIN SMALL LETTER U WITH HORN
+01B4 ; Lower # L& LATIN SMALL LETTER Y WITH HOOK
+01B6 ; Lower # L& LATIN SMALL LETTER Z WITH STROKE
+01B9..01BA ; Lower # L& [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL
+01BD..01BF ; Lower # L& [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN
+01C6 ; Lower # L& LATIN SMALL LETTER DZ WITH CARON
+01C9 ; Lower # L& LATIN SMALL LETTER LJ
+01CC ; Lower # L& LATIN SMALL LETTER NJ
+01CE ; Lower # L& LATIN SMALL LETTER A WITH CARON
+01D0 ; Lower # L& LATIN SMALL LETTER I WITH CARON
+01D2 ; Lower # L& LATIN SMALL LETTER O WITH CARON
+01D4 ; Lower # L& LATIN SMALL LETTER U WITH CARON
+01D6 ; Lower # L& LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D8 ; Lower # L& LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01DA ; Lower # L& LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01DC..01DD ; Lower # L& [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
+01DF ; Lower # L& LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01E1 ; Lower # L& LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E3 ; Lower # L& LATIN SMALL LETTER AE WITH MACRON
+01E5 ; Lower # L& LATIN SMALL LETTER G WITH STROKE
+01E7 ; Lower # L& LATIN SMALL LETTER G WITH CARON
+01E9 ; Lower # L& LATIN SMALL LETTER K WITH CARON
+01EB ; Lower # L& LATIN SMALL LETTER O WITH OGONEK
+01ED ; Lower # L& LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EF..01F0 ; Lower # L& [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F3 ; Lower # L& LATIN SMALL LETTER DZ
+01F5 ; Lower # L& LATIN SMALL LETTER G WITH ACUTE
+01F9 ; Lower # L& LATIN SMALL LETTER N WITH GRAVE
+01FB ; Lower # L& LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FD ; Lower # L& LATIN SMALL LETTER AE WITH ACUTE
+01FF ; Lower # L& LATIN SMALL LETTER O WITH STROKE AND ACUTE
+0201 ; Lower # L& LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0203 ; Lower # L& LATIN SMALL LETTER A WITH INVERTED BREVE
+0205 ; Lower # L& LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0207 ; Lower # L& LATIN SMALL LETTER E WITH INVERTED BREVE
+0209 ; Lower # L& LATIN SMALL LETTER I WITH DOUBLE GRAVE
+020B ; Lower # L& LATIN SMALL LETTER I WITH INVERTED BREVE
+020D ; Lower # L& LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020F ; Lower # L& LATIN SMALL LETTER O WITH INVERTED BREVE
+0211 ; Lower # L& LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0213 ; Lower # L& LATIN SMALL LETTER R WITH INVERTED BREVE
+0215 ; Lower # L& LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0217 ; Lower # L& LATIN SMALL LETTER U WITH INVERTED BREVE
+0219 ; Lower # L& LATIN SMALL LETTER S WITH COMMA BELOW
+021B ; Lower # L& LATIN SMALL LETTER T WITH COMMA BELOW
+021D ; Lower # L& LATIN SMALL LETTER YOGH
+021F ; Lower # L& LATIN SMALL LETTER H WITH CARON
+0221 ; Lower # L& LATIN SMALL LETTER D WITH CURL
+0223 ; Lower # L& LATIN SMALL LETTER OU
+0225 ; Lower # L& LATIN SMALL LETTER Z WITH HOOK
+0227 ; Lower # L& LATIN SMALL LETTER A WITH DOT ABOVE
+0229 ; Lower # L& LATIN SMALL LETTER E WITH CEDILLA
+022B ; Lower # L& LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022D ; Lower # L& LATIN SMALL LETTER O WITH TILDE AND MACRON
+022F ; Lower # L& LATIN SMALL LETTER O WITH DOT ABOVE
+0231 ; Lower # L& LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0233..0239 ; Lower # L& [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH
+023C ; Lower # L& LATIN SMALL LETTER C WITH STROKE
+023F..0240 ; Lower # L& [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
+0242 ; Lower # L& LATIN SMALL LETTER GLOTTAL STOP
+0247 ; Lower # L& LATIN SMALL LETTER E WITH STROKE
+0249 ; Lower # L& LATIN SMALL LETTER J WITH STROKE
+024B ; Lower # L& LATIN SMALL LETTER Q WITH HOOK TAIL
+024D ; Lower # L& LATIN SMALL LETTER R WITH STROKE
+024F..0293 ; Lower # L& [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL
+0295..02AF ; Lower # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0..02B8 ; Lower # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02C0..02C1 ; Lower # Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP
+02E0..02E4 ; Lower # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+037A ; Lower # Lm GREEK YPOGEGRAMMENI
+037B..037D ; Lower # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0390 ; Lower # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AC..03CE ; Lower # L& [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03D1 ; Lower # L& [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL
+03D5..03D7 ; Lower # L& [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL
+03D9 ; Lower # L& GREEK SMALL LETTER ARCHAIC KOPPA
+03DB ; Lower # L& GREEK SMALL LETTER STIGMA
+03DD ; Lower # L& GREEK SMALL LETTER DIGAMMA
+03DF ; Lower # L& GREEK SMALL LETTER KOPPA
+03E1 ; Lower # L& GREEK SMALL LETTER SAMPI
+03E3 ; Lower # L& COPTIC SMALL LETTER SHEI
+03E5 ; Lower # L& COPTIC SMALL LETTER FEI
+03E7 ; Lower # L& COPTIC SMALL LETTER KHEI
+03E9 ; Lower # L& COPTIC SMALL LETTER HORI
+03EB ; Lower # L& COPTIC SMALL LETTER GANGIA
+03ED ; Lower # L& COPTIC SMALL LETTER SHIMA
+03EF..03F3 ; Lower # L& [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT
+03F5 ; Lower # L& GREEK LUNATE EPSILON SYMBOL
+03F8 ; Lower # L& GREEK SMALL LETTER SHO
+03FB..03FC ; Lower # L& [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL
+0430..045F ; Lower # L& [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE
+0461 ; Lower # L& CYRILLIC SMALL LETTER OMEGA
+0463 ; Lower # L& CYRILLIC SMALL LETTER YAT
+0465 ; Lower # L& CYRILLIC SMALL LETTER IOTIFIED E
+0467 ; Lower # L& CYRILLIC SMALL LETTER LITTLE YUS
+0469 ; Lower # L& CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+046B ; Lower # L& CYRILLIC SMALL LETTER BIG YUS
+046D ; Lower # L& CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+046F ; Lower # L& CYRILLIC SMALL LETTER KSI
+0471 ; Lower # L& CYRILLIC SMALL LETTER PSI
+0473 ; Lower # L& CYRILLIC SMALL LETTER FITA
+0475 ; Lower # L& CYRILLIC SMALL LETTER IZHITSA
+0477 ; Lower # L& CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0479 ; Lower # L& CYRILLIC SMALL LETTER UK
+047B ; Lower # L& CYRILLIC SMALL LETTER ROUND OMEGA
+047D ; Lower # L& CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047F ; Lower # L& CYRILLIC SMALL LETTER OT
+0481 ; Lower # L& CYRILLIC SMALL LETTER KOPPA
+048B ; Lower # L& CYRILLIC SMALL LETTER SHORT I WITH TAIL
+048D ; Lower # L& CYRILLIC SMALL LETTER SEMISOFT SIGN
+048F ; Lower # L& CYRILLIC SMALL LETTER ER WITH TICK
+0491 ; Lower # L& CYRILLIC SMALL LETTER GHE WITH UPTURN
+0493 ; Lower # L& CYRILLIC SMALL LETTER GHE WITH STROKE
+0495 ; Lower # L& CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0497 ; Lower # L& CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0499 ; Lower # L& CYRILLIC SMALL LETTER ZE WITH DESCENDER
+049B ; Lower # L& CYRILLIC SMALL LETTER KA WITH DESCENDER
+049D ; Lower # L& CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049F ; Lower # L& CYRILLIC SMALL LETTER KA WITH STROKE
+04A1 ; Lower # L& CYRILLIC SMALL LETTER BASHKIR KA
+04A3 ; Lower # L& CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A5 ; Lower # L& CYRILLIC SMALL LIGATURE EN GHE
+04A7 ; Lower # L& CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A9 ; Lower # L& CYRILLIC SMALL LETTER ABKHASIAN HA
+04AB ; Lower # L& CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AD ; Lower # L& CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AF ; Lower # L& CYRILLIC SMALL LETTER STRAIGHT U
+04B1 ; Lower # L& CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B3 ; Lower # L& CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B5 ; Lower # L& CYRILLIC SMALL LIGATURE TE TSE
+04B7 ; Lower # L& CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B9 ; Lower # L& CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04BB ; Lower # L& CYRILLIC SMALL LETTER SHHA
+04BD ; Lower # L& CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BF ; Lower # L& CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04C2 ; Lower # L& CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C4 ; Lower # L& CYRILLIC SMALL LETTER KA WITH HOOK
+04C6 ; Lower # L& CYRILLIC SMALL LETTER EL WITH TAIL
+04C8 ; Lower # L& CYRILLIC SMALL LETTER EN WITH HOOK
+04CA ; Lower # L& CYRILLIC SMALL LETTER EN WITH TAIL
+04CC ; Lower # L& CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04CE..04CF ; Lower # L& [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA
+04D1 ; Lower # L& CYRILLIC SMALL LETTER A WITH BREVE
+04D3 ; Lower # L& CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D5 ; Lower # L& CYRILLIC SMALL LIGATURE A IE
+04D7 ; Lower # L& CYRILLIC SMALL LETTER IE WITH BREVE
+04D9 ; Lower # L& CYRILLIC SMALL LETTER SCHWA
+04DB ; Lower # L& CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DD ; Lower # L& CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DF ; Lower # L& CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E1 ; Lower # L& CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E3 ; Lower # L& CYRILLIC SMALL LETTER I WITH MACRON
+04E5 ; Lower # L& CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E7 ; Lower # L& CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E9 ; Lower # L& CYRILLIC SMALL LETTER BARRED O
+04EB ; Lower # L& CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04ED ; Lower # L& CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EF ; Lower # L& CYRILLIC SMALL LETTER U WITH MACRON
+04F1 ; Lower # L& CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F3 ; Lower # L& CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F5 ; Lower # L& CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F7 ; Lower # L& CYRILLIC SMALL LETTER GHE WITH DESCENDER
+04F9 ; Lower # L& CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04FB ; Lower # L& CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+04FD ; Lower # L& CYRILLIC SMALL LETTER HA WITH HOOK
+04FF ; Lower # L& CYRILLIC SMALL LETTER HA WITH STROKE
+0501 ; Lower # L& CYRILLIC SMALL LETTER KOMI DE
+0503 ; Lower # L& CYRILLIC SMALL LETTER KOMI DJE
+0505 ; Lower # L& CYRILLIC SMALL LETTER KOMI ZJE
+0507 ; Lower # L& CYRILLIC SMALL LETTER KOMI DZJE
+0509 ; Lower # L& CYRILLIC SMALL LETTER KOMI LJE
+050B ; Lower # L& CYRILLIC SMALL LETTER KOMI NJE
+050D ; Lower # L& CYRILLIC SMALL LETTER KOMI SJE
+050F ; Lower # L& CYRILLIC SMALL LETTER KOMI TJE
+0511 ; Lower # L& CYRILLIC SMALL LETTER REVERSED ZE
+0513 ; Lower # L& CYRILLIC SMALL LETTER EL WITH HOOK
+0561..0587 ; Lower # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+1D00..1D2B ; Lower # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+1D2C..1D61 ; Lower # Lm [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI
+1D62..1D77 ; Lower # L& [22] LATIN SUBSCRIPT SMALL LETTER I..LATIN SMALL LETTER TURNED G
+1D78 ; Lower # Lm MODIFIER LETTER CYRILLIC EN
+1D79..1D9A ; Lower # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1D9B..1DBF ; Lower # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E01 ; Lower # L& LATIN SMALL LETTER A WITH RING BELOW
+1E03 ; Lower # L& LATIN SMALL LETTER B WITH DOT ABOVE
+1E05 ; Lower # L& LATIN SMALL LETTER B WITH DOT BELOW
+1E07 ; Lower # L& LATIN SMALL LETTER B WITH LINE BELOW
+1E09 ; Lower # L& LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E0B ; Lower # L& LATIN SMALL LETTER D WITH DOT ABOVE
+1E0D ; Lower # L& LATIN SMALL LETTER D WITH DOT BELOW
+1E0F ; Lower # L& LATIN SMALL LETTER D WITH LINE BELOW
+1E11 ; Lower # L& LATIN SMALL LETTER D WITH CEDILLA
+1E13 ; Lower # L& LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E15 ; Lower # L& LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E17 ; Lower # L& LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E19 ; Lower # L& LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E1B ; Lower # L& LATIN SMALL LETTER E WITH TILDE BELOW
+1E1D ; Lower # L& LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1F ; Lower # L& LATIN SMALL LETTER F WITH DOT ABOVE
+1E21 ; Lower # L& LATIN SMALL LETTER G WITH MACRON
+1E23 ; Lower # L& LATIN SMALL LETTER H WITH DOT ABOVE
+1E25 ; Lower # L& LATIN SMALL LETTER H WITH DOT BELOW
+1E27 ; Lower # L& LATIN SMALL LETTER H WITH DIAERESIS
+1E29 ; Lower # L& LATIN SMALL LETTER H WITH CEDILLA
+1E2B ; Lower # L& LATIN SMALL LETTER H WITH BREVE BELOW
+1E2D ; Lower # L& LATIN SMALL LETTER I WITH TILDE BELOW
+1E2F ; Lower # L& LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E31 ; Lower # L& LATIN SMALL LETTER K WITH ACUTE
+1E33 ; Lower # L& LATIN SMALL LETTER K WITH DOT BELOW
+1E35 ; Lower # L& LATIN SMALL LETTER K WITH LINE BELOW
+1E37 ; Lower # L& LATIN SMALL LETTER L WITH DOT BELOW
+1E39 ; Lower # L& LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E3B ; Lower # L& LATIN SMALL LETTER L WITH LINE BELOW
+1E3D ; Lower # L& LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3F ; Lower # L& LATIN SMALL LETTER M WITH ACUTE
+1E41 ; Lower # L& LATIN SMALL LETTER M WITH DOT ABOVE
+1E43 ; Lower # L& LATIN SMALL LETTER M WITH DOT BELOW
+1E45 ; Lower # L& LATIN SMALL LETTER N WITH DOT ABOVE
+1E47 ; Lower # L& LATIN SMALL LETTER N WITH DOT BELOW
+1E49 ; Lower # L& LATIN SMALL LETTER N WITH LINE BELOW
+1E4B ; Lower # L& LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4D ; Lower # L& LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4F ; Lower # L& LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E51 ; Lower # L& LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E53 ; Lower # L& LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E55 ; Lower # L& LATIN SMALL LETTER P WITH ACUTE
+1E57 ; Lower # L& LATIN SMALL LETTER P WITH DOT ABOVE
+1E59 ; Lower # L& LATIN SMALL LETTER R WITH DOT ABOVE
+1E5B ; Lower # L& LATIN SMALL LETTER R WITH DOT BELOW
+1E5D ; Lower # L& LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5F ; Lower # L& LATIN SMALL LETTER R WITH LINE BELOW
+1E61 ; Lower # L& LATIN SMALL LETTER S WITH DOT ABOVE
+1E63 ; Lower # L& LATIN SMALL LETTER S WITH DOT BELOW
+1E65 ; Lower # L& LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E67 ; Lower # L& LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E69 ; Lower # L& LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6B ; Lower # L& LATIN SMALL LETTER T WITH DOT ABOVE
+1E6D ; Lower # L& LATIN SMALL LETTER T WITH DOT BELOW
+1E6F ; Lower # L& LATIN SMALL LETTER T WITH LINE BELOW
+1E71 ; Lower # L& LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E73 ; Lower # L& LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E75 ; Lower # L& LATIN SMALL LETTER U WITH TILDE BELOW
+1E77 ; Lower # L& LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E79 ; Lower # L& LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E7B ; Lower # L& LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7D ; Lower # L& LATIN SMALL LETTER V WITH TILDE
+1E7F ; Lower # L& LATIN SMALL LETTER V WITH DOT BELOW
+1E81 ; Lower # L& LATIN SMALL LETTER W WITH GRAVE
+1E83 ; Lower # L& LATIN SMALL LETTER W WITH ACUTE
+1E85 ; Lower # L& LATIN SMALL LETTER W WITH DIAERESIS
+1E87 ; Lower # L& LATIN SMALL LETTER W WITH DOT ABOVE
+1E89 ; Lower # L& LATIN SMALL LETTER W WITH DOT BELOW
+1E8B ; Lower # L& LATIN SMALL LETTER X WITH DOT ABOVE
+1E8D ; Lower # L& LATIN SMALL LETTER X WITH DIAERESIS
+1E8F ; Lower # L& LATIN SMALL LETTER Y WITH DOT ABOVE
+1E91 ; Lower # L& LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E93 ; Lower # L& LATIN SMALL LETTER Z WITH DOT BELOW
+1E95..1E9B ; Lower # L& [7] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA1 ; Lower # L& LATIN SMALL LETTER A WITH DOT BELOW
+1EA3 ; Lower # L& LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA5 ; Lower # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA7 ; Lower # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA9 ; Lower # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAB ; Lower # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAD ; Lower # L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAF ; Lower # L& LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EB1 ; Lower # L& LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB3 ; Lower # L& LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB5 ; Lower # L& LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB7 ; Lower # L& LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB9 ; Lower # L& LATIN SMALL LETTER E WITH DOT BELOW
+1EBB ; Lower # L& LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBD ; Lower # L& LATIN SMALL LETTER E WITH TILDE
+1EBF ; Lower # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC1 ; Lower # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC3 ; Lower # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC5 ; Lower # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC7 ; Lower # L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC9 ; Lower # L& LATIN SMALL LETTER I WITH HOOK ABOVE
+1ECB ; Lower # L& LATIN SMALL LETTER I WITH DOT BELOW
+1ECD ; Lower # L& LATIN SMALL LETTER O WITH DOT BELOW
+1ECF ; Lower # L& LATIN SMALL LETTER O WITH HOOK ABOVE
+1ED1 ; Lower # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED3 ; Lower # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED5 ; Lower # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED7 ; Lower # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED9 ; Lower # L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDB ; Lower # L& LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDD ; Lower # L& LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDF ; Lower # L& LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EE1 ; Lower # L& LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE3 ; Lower # L& LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE5 ; Lower # L& LATIN SMALL LETTER U WITH DOT BELOW
+1EE7 ; Lower # L& LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE9 ; Lower # L& LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EEB ; Lower # L& LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EED ; Lower # L& LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEF ; Lower # L& LATIN SMALL LETTER U WITH HORN AND TILDE
+1EF1 ; Lower # L& LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF3 ; Lower # L& LATIN SMALL LETTER Y WITH GRAVE
+1EF5 ; Lower # L& LATIN SMALL LETTER Y WITH DOT BELOW
+1EF7 ; Lower # L& LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF9 ; Lower # L& LATIN SMALL LETTER Y WITH TILDE
+1F00..1F07 ; Lower # L& [8] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F10..1F15 ; Lower # L& [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F27 ; Lower # L& [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F30..1F37 ; Lower # L& [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F40..1F45 ; Lower # L& [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Lower # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F60..1F67 ; Lower # L& [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F70..1F7D ; Lower # L& [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1F87 ; Lower # L& [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F90..1F97 ; Lower # L& [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA0..1FA7 ; Lower # L& [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FB0..1FB4 ; Lower # L& [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FB7 ; Lower # L& [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FBE ; Lower # L& GREEK PROSGEGRAMMENI
+1FC2..1FC4 ; Lower # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FC7 ; Lower # L& [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FD0..1FD3 ; Lower # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FD7 ; Lower # L& [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE0..1FE7 ; Lower # L& [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF2..1FF4 ; Lower # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FF7 ; Lower # L& [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+2071 ; Lower # L& SUPERSCRIPT LATIN SMALL LETTER I
+207F ; Lower # L& SUPERSCRIPT LATIN SMALL LETTER N
+2090..2094 ; Lower # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+210A ; Lower # L& SCRIPT SMALL G
+210E..210F ; Lower # L& [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI
+2113 ; Lower # L& SCRIPT SMALL L
+212F ; Lower # L& SCRIPT SMALL E
+2134 ; Lower # L& SCRIPT SMALL O
+2139 ; Lower # L& INFORMATION SOURCE
+213C..213D ; Lower # L& [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA
+2146..2149 ; Lower # L& [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J
+214E ; Lower # L& TURNED SMALL F
+2170..217F ; Lower # Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+2184 ; Lower # L& LATIN SMALL LETTER REVERSED C
+24D0..24E9 ; Lower # So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+2C30..2C5E ; Lower # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C61 ; Lower # L& LATIN SMALL LETTER L WITH DOUBLE BAR
+2C65..2C66 ; Lower # L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
+2C68 ; Lower # L& LATIN SMALL LETTER H WITH DESCENDER
+2C6A ; Lower # L& LATIN SMALL LETTER K WITH DESCENDER
+2C6C ; Lower # L& LATIN SMALL LETTER Z WITH DESCENDER
+2C74 ; Lower # L& LATIN SMALL LETTER V WITH CURL
+2C76..2C77 ; Lower # L& [2] LATIN SMALL LETTER HALF H..LATIN SMALL LETTER TAILLESS PHI
+2C81 ; Lower # L& COPTIC SMALL LETTER ALFA
+2C83 ; Lower # L& COPTIC SMALL LETTER VIDA
+2C85 ; Lower # L& COPTIC SMALL LETTER GAMMA
+2C87 ; Lower # L& COPTIC SMALL LETTER DALDA
+2C89 ; Lower # L& COPTIC SMALL LETTER EIE
+2C8B ; Lower # L& COPTIC SMALL LETTER SOU
+2C8D ; Lower # L& COPTIC SMALL LETTER ZATA
+2C8F ; Lower # L& COPTIC SMALL LETTER HATE
+2C91 ; Lower # L& COPTIC SMALL LETTER THETHE
+2C93 ; Lower # L& COPTIC SMALL LETTER IAUDA
+2C95 ; Lower # L& COPTIC SMALL LETTER KAPA
+2C97 ; Lower # L& COPTIC SMALL LETTER LAULA
+2C99 ; Lower # L& COPTIC SMALL LETTER MI
+2C9B ; Lower # L& COPTIC SMALL LETTER NI
+2C9D ; Lower # L& COPTIC SMALL LETTER KSI
+2C9F ; Lower # L& COPTIC SMALL LETTER O
+2CA1 ; Lower # L& COPTIC SMALL LETTER PI
+2CA3 ; Lower # L& COPTIC SMALL LETTER RO
+2CA5 ; Lower # L& COPTIC SMALL LETTER SIMA
+2CA7 ; Lower # L& COPTIC SMALL LETTER TAU
+2CA9 ; Lower # L& COPTIC SMALL LETTER UA
+2CAB ; Lower # L& COPTIC SMALL LETTER FI
+2CAD ; Lower # L& COPTIC SMALL LETTER KHI
+2CAF ; Lower # L& COPTIC SMALL LETTER PSI
+2CB1 ; Lower # L& COPTIC SMALL LETTER OOU
+2CB3 ; Lower # L& COPTIC SMALL LETTER DIALECT-P ALEF
+2CB5 ; Lower # L& COPTIC SMALL LETTER OLD COPTIC AIN
+2CB7 ; Lower # L& COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+2CB9 ; Lower # L& COPTIC SMALL LETTER DIALECT-P KAPA
+2CBB ; Lower # L& COPTIC SMALL LETTER DIALECT-P NI
+2CBD ; Lower # L& COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+2CBF ; Lower # L& COPTIC SMALL LETTER OLD COPTIC OOU
+2CC1 ; Lower # L& COPTIC SMALL LETTER SAMPI
+2CC3 ; Lower # L& COPTIC SMALL LETTER CROSSED SHEI
+2CC5 ; Lower # L& COPTIC SMALL LETTER OLD COPTIC SHEI
+2CC7 ; Lower # L& COPTIC SMALL LETTER OLD COPTIC ESH
+2CC9 ; Lower # L& COPTIC SMALL LETTER AKHMIMIC KHEI
+2CCB ; Lower # L& COPTIC SMALL LETTER DIALECT-P HORI
+2CCD ; Lower # L& COPTIC SMALL LETTER OLD COPTIC HORI
+2CCF ; Lower # L& COPTIC SMALL LETTER OLD COPTIC HA
+2CD1 ; Lower # L& COPTIC SMALL LETTER L-SHAPED HA
+2CD3 ; Lower # L& COPTIC SMALL LETTER OLD COPTIC HEI
+2CD5 ; Lower # L& COPTIC SMALL LETTER OLD COPTIC HAT
+2CD7 ; Lower # L& COPTIC SMALL LETTER OLD COPTIC GANGIA
+2CD9 ; Lower # L& COPTIC SMALL LETTER OLD COPTIC DJA
+2CDB ; Lower # L& COPTIC SMALL LETTER OLD COPTIC SHIMA
+2CDD ; Lower # L& COPTIC SMALL LETTER OLD NUBIAN SHIMA
+2CDF ; Lower # L& COPTIC SMALL LETTER OLD NUBIAN NGI
+2CE1 ; Lower # L& COPTIC SMALL LETTER OLD NUBIAN NYI
+2CE3..2CE4 ; Lower # L& [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI
+2D00..2D25 ; Lower # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+FB00..FB06 ; Lower # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Lower # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FF41..FF5A ; Lower # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+10428..1044F ; Lower # L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+1D41A..1D433 ; Lower # L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
+1D44E..1D454 ; Lower # L& [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D467 ; Lower # L& [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z
+1D482..1D49B ; Lower # L& [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z
+1D4B6..1D4B9 ; Lower # L& [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; Lower # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; Lower # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D4CF ; Lower # L& [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z
+1D4EA..1D503 ; Lower # L& [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z
+1D51E..1D537 ; Lower # L& [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z
+1D552..1D56B ; Lower # L& [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D586..1D59F ; Lower # L& [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5BA..1D5D3 ; Lower # L& [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z
+1D5EE..1D607 ; Lower # L& [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D622..1D63B ; Lower # L& [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D656..1D66F ; Lower # L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D68A..1D6A5 ; Lower # L& [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6C2..1D6DA ; Lower # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DC..1D6E1 ; Lower # L& [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL
+1D6FC..1D714 ; Lower # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D716..1D71B ; Lower # L& [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL
+1D736..1D74E ; Lower # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D750..1D755 ; Lower # L& [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D770..1D788 ; Lower # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D78A..1D78F ; Lower # L& [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D7AA..1D7C2 ; Lower # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C4..1D7C9 ; Lower # L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+1D7CB ; Lower # L& MATHEMATICAL BOLD SMALL DIGAMMA
+
+# Total code points: 1790
+
+# ================================================
+
+0041..005A ; Upper # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+00C0..00D6 ; Upper # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00DE ; Upper # L& [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN
+0100 ; Upper # L& LATIN CAPITAL LETTER A WITH MACRON
+0102 ; Upper # L& LATIN CAPITAL LETTER A WITH BREVE
+0104 ; Upper # L& LATIN CAPITAL LETTER A WITH OGONEK
+0106 ; Upper # L& LATIN CAPITAL LETTER C WITH ACUTE
+0108 ; Upper # L& LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010A ; Upper # L& LATIN CAPITAL LETTER C WITH DOT ABOVE
+010C ; Upper # L& LATIN CAPITAL LETTER C WITH CARON
+010E ; Upper # L& LATIN CAPITAL LETTER D WITH CARON
+0110 ; Upper # L& LATIN CAPITAL LETTER D WITH STROKE
+0112 ; Upper # L& LATIN CAPITAL LETTER E WITH MACRON
+0114 ; Upper # L& LATIN CAPITAL LETTER E WITH BREVE
+0116 ; Upper # L& LATIN CAPITAL LETTER E WITH DOT ABOVE
+0118 ; Upper # L& LATIN CAPITAL LETTER E WITH OGONEK
+011A ; Upper # L& LATIN CAPITAL LETTER E WITH CARON
+011C ; Upper # L& LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+011E ; Upper # L& LATIN CAPITAL LETTER G WITH BREVE
+0120 ; Upper # L& LATIN CAPITAL LETTER G WITH DOT ABOVE
+0122 ; Upper # L& LATIN CAPITAL LETTER G WITH CEDILLA
+0124 ; Upper # L& LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+0126 ; Upper # L& LATIN CAPITAL LETTER H WITH STROKE
+0128 ; Upper # L& LATIN CAPITAL LETTER I WITH TILDE
+012A ; Upper # L& LATIN CAPITAL LETTER I WITH MACRON
+012C ; Upper # L& LATIN CAPITAL LETTER I WITH BREVE
+012E ; Upper # L& LATIN CAPITAL LETTER I WITH OGONEK
+0130 ; Upper # L& LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132 ; Upper # L& LATIN CAPITAL LIGATURE IJ
+0134 ; Upper # L& LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+0136 ; Upper # L& LATIN CAPITAL LETTER K WITH CEDILLA
+0139 ; Upper # L& LATIN CAPITAL LETTER L WITH ACUTE
+013B ; Upper # L& LATIN CAPITAL LETTER L WITH CEDILLA
+013D ; Upper # L& LATIN CAPITAL LETTER L WITH CARON
+013F ; Upper # L& LATIN CAPITAL LETTER L WITH MIDDLE DOT
+0141 ; Upper # L& LATIN CAPITAL LETTER L WITH STROKE
+0143 ; Upper # L& LATIN CAPITAL LETTER N WITH ACUTE
+0145 ; Upper # L& LATIN CAPITAL LETTER N WITH CEDILLA
+0147 ; Upper # L& LATIN CAPITAL LETTER N WITH CARON
+014A ; Upper # L& LATIN CAPITAL LETTER ENG
+014C ; Upper # L& LATIN CAPITAL LETTER O WITH MACRON
+014E ; Upper # L& LATIN CAPITAL LETTER O WITH BREVE
+0150 ; Upper # L& LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0152 ; Upper # L& LATIN CAPITAL LIGATURE OE
+0154 ; Upper # L& LATIN CAPITAL LETTER R WITH ACUTE
+0156 ; Upper # L& LATIN CAPITAL LETTER R WITH CEDILLA
+0158 ; Upper # L& LATIN CAPITAL LETTER R WITH CARON
+015A ; Upper # L& LATIN CAPITAL LETTER S WITH ACUTE
+015C ; Upper # L& LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+015E ; Upper # L& LATIN CAPITAL LETTER S WITH CEDILLA
+0160 ; Upper # L& LATIN CAPITAL LETTER S WITH CARON
+0162 ; Upper # L& LATIN CAPITAL LETTER T WITH CEDILLA
+0164 ; Upper # L& LATIN CAPITAL LETTER T WITH CARON
+0166 ; Upper # L& LATIN CAPITAL LETTER T WITH STROKE
+0168 ; Upper # L& LATIN CAPITAL LETTER U WITH TILDE
+016A ; Upper # L& LATIN CAPITAL LETTER U WITH MACRON
+016C ; Upper # L& LATIN CAPITAL LETTER U WITH BREVE
+016E ; Upper # L& LATIN CAPITAL LETTER U WITH RING ABOVE
+0170 ; Upper # L& LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0172 ; Upper # L& LATIN CAPITAL LETTER U WITH OGONEK
+0174 ; Upper # L& LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+0176 ; Upper # L& LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0178..0179 ; Upper # L& [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
+017B ; Upper # L& LATIN CAPITAL LETTER Z WITH DOT ABOVE
+017D ; Upper # L& LATIN CAPITAL LETTER Z WITH CARON
+0181..0182 ; Upper # L& [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
+0184 ; Upper # L& LATIN CAPITAL LETTER TONE SIX
+0186..0187 ; Upper # L& [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
+0189..018B ; Upper # L& [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
+018E..0191 ; Upper # L& [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
+0193..0194 ; Upper # L& [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
+0196..0198 ; Upper # L& [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
+019C..019D ; Upper # L& [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
+019F..01A0 ; Upper # L& [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
+01A2 ; Upper # L& LATIN CAPITAL LETTER OI
+01A4 ; Upper # L& LATIN CAPITAL LETTER P WITH HOOK
+01A6..01A7 ; Upper # L& [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
+01A9 ; Upper # L& LATIN CAPITAL LETTER ESH
+01AC ; Upper # L& LATIN CAPITAL LETTER T WITH HOOK
+01AE..01AF ; Upper # L& [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
+01B1..01B3 ; Upper # L& [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
+01B5 ; Upper # L& LATIN CAPITAL LETTER Z WITH STROKE
+01B7..01B8 ; Upper # L& [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
+01BC ; Upper # L& LATIN CAPITAL LETTER TONE FIVE
+01C4..01C5 ; Upper # L& [2] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C7..01C8 ; Upper # L& [2] LATIN CAPITAL LETTER LJ..LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01CA..01CB ; Upper # L& [2] LATIN CAPITAL LETTER NJ..LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CD ; Upper # L& LATIN CAPITAL LETTER A WITH CARON
+01CF ; Upper # L& LATIN CAPITAL LETTER I WITH CARON
+01D1 ; Upper # L& LATIN CAPITAL LETTER O WITH CARON
+01D3 ; Upper # L& LATIN CAPITAL LETTER U WITH CARON
+01D5 ; Upper # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01D7 ; Upper # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D9 ; Upper # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01DB ; Upper # L& LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DE ; Upper # L& LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+01E0 ; Upper # L& LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+01E2 ; Upper # L& LATIN CAPITAL LETTER AE WITH MACRON
+01E4 ; Upper # L& LATIN CAPITAL LETTER G WITH STROKE
+01E6 ; Upper # L& LATIN CAPITAL LETTER G WITH CARON
+01E8 ; Upper # L& LATIN CAPITAL LETTER K WITH CARON
+01EA ; Upper # L& LATIN CAPITAL LETTER O WITH OGONEK
+01EC ; Upper # L& LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+01EE ; Upper # L& LATIN CAPITAL LETTER EZH WITH CARON
+01F1..01F2 ; Upper # L& [2] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F4 ; Upper # L& LATIN CAPITAL LETTER G WITH ACUTE
+01F6..01F8 ; Upper # L& [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
+01FA ; Upper # L& LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+01FC ; Upper # L& LATIN CAPITAL LETTER AE WITH ACUTE
+01FE ; Upper # L& LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0200 ; Upper # L& LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0202 ; Upper # L& LATIN CAPITAL LETTER A WITH INVERTED BREVE
+0204 ; Upper # L& LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0206 ; Upper # L& LATIN CAPITAL LETTER E WITH INVERTED BREVE
+0208 ; Upper # L& LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+020A ; Upper # L& LATIN CAPITAL LETTER I WITH INVERTED BREVE
+020C ; Upper # L& LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020E ; Upper # L& LATIN CAPITAL LETTER O WITH INVERTED BREVE
+0210 ; Upper # L& LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0212 ; Upper # L& LATIN CAPITAL LETTER R WITH INVERTED BREVE
+0214 ; Upper # L& LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0216 ; Upper # L& LATIN CAPITAL LETTER U WITH INVERTED BREVE
+0218 ; Upper # L& LATIN CAPITAL LETTER S WITH COMMA BELOW
+021A ; Upper # L& LATIN CAPITAL LETTER T WITH COMMA BELOW
+021C ; Upper # L& LATIN CAPITAL LETTER YOGH
+021E ; Upper # L& LATIN CAPITAL LETTER H WITH CARON
+0220 ; Upper # L& LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+0222 ; Upper # L& LATIN CAPITAL LETTER OU
+0224 ; Upper # L& LATIN CAPITAL LETTER Z WITH HOOK
+0226 ; Upper # L& LATIN CAPITAL LETTER A WITH DOT ABOVE
+0228 ; Upper # L& LATIN CAPITAL LETTER E WITH CEDILLA
+022A ; Upper # L& LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+022C ; Upper # L& LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022E ; Upper # L& LATIN CAPITAL LETTER O WITH DOT ABOVE
+0230 ; Upper # L& LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+0232 ; Upper # L& LATIN CAPITAL LETTER Y WITH MACRON
+023A..023B ; Upper # L& [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
+023D..023E ; Upper # L& [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+0241 ; Upper # L& LATIN CAPITAL LETTER GLOTTAL STOP
+0243..0246 ; Upper # L& [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
+0248 ; Upper # L& LATIN CAPITAL LETTER J WITH STROKE
+024A ; Upper # L& LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+024C ; Upper # L& LATIN CAPITAL LETTER R WITH STROKE
+024E ; Upper # L& LATIN CAPITAL LETTER Y WITH STROKE
+0386 ; Upper # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Upper # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Upper # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..038F ; Upper # L& [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
+0391..03A1 ; Upper # L& [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
+03A3..03AB ; Upper # L& [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03D2..03D4 ; Upper # L& [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03D8 ; Upper # L& GREEK LETTER ARCHAIC KOPPA
+03DA ; Upper # L& GREEK LETTER STIGMA
+03DC ; Upper # L& GREEK LETTER DIGAMMA
+03DE ; Upper # L& GREEK LETTER KOPPA
+03E0 ; Upper # L& GREEK LETTER SAMPI
+03E2 ; Upper # L& COPTIC CAPITAL LETTER SHEI
+03E4 ; Upper # L& COPTIC CAPITAL LETTER FEI
+03E6 ; Upper # L& COPTIC CAPITAL LETTER KHEI
+03E8 ; Upper # L& COPTIC CAPITAL LETTER HORI
+03EA ; Upper # L& COPTIC CAPITAL LETTER GANGIA
+03EC ; Upper # L& COPTIC CAPITAL LETTER SHIMA
+03EE ; Upper # L& COPTIC CAPITAL LETTER DEI
+03F4 ; Upper # L& GREEK CAPITAL THETA SYMBOL
+03F7 ; Upper # L& GREEK CAPITAL LETTER SHO
+03F9..03FA ; Upper # L& [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
+03FD..042F ; Upper # L& [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
+0460 ; Upper # L& CYRILLIC CAPITAL LETTER OMEGA
+0462 ; Upper # L& CYRILLIC CAPITAL LETTER YAT
+0464 ; Upper # L& CYRILLIC CAPITAL LETTER IOTIFIED E
+0466 ; Upper # L& CYRILLIC CAPITAL LETTER LITTLE YUS
+0468 ; Upper # L& CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+046A ; Upper # L& CYRILLIC CAPITAL LETTER BIG YUS
+046C ; Upper # L& CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046E ; Upper # L& CYRILLIC CAPITAL LETTER KSI
+0470 ; Upper # L& CYRILLIC CAPITAL LETTER PSI
+0472 ; Upper # L& CYRILLIC CAPITAL LETTER FITA
+0474 ; Upper # L& CYRILLIC CAPITAL LETTER IZHITSA
+0476 ; Upper # L& CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0478 ; Upper # L& CYRILLIC CAPITAL LETTER UK
+047A ; Upper # L& CYRILLIC CAPITAL LETTER ROUND OMEGA
+047C ; Upper # L& CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047E ; Upper # L& CYRILLIC CAPITAL LETTER OT
+0480 ; Upper # L& CYRILLIC CAPITAL LETTER KOPPA
+048A ; Upper # L& CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+048C ; Upper # L& CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+048E ; Upper # L& CYRILLIC CAPITAL LETTER ER WITH TICK
+0490 ; Upper # L& CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0492 ; Upper # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE
+0494 ; Upper # L& CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+0496 ; Upper # L& CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0498 ; Upper # L& CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+049A ; Upper # L& CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+049C ; Upper # L& CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+049E ; Upper # L& CYRILLIC CAPITAL LETTER KA WITH STROKE
+04A0 ; Upper # L& CYRILLIC CAPITAL LETTER BASHKIR KA
+04A2 ; Upper # L& CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04A4 ; Upper # L& CYRILLIC CAPITAL LIGATURE EN GHE
+04A6 ; Upper # L& CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+04A8 ; Upper # L& CYRILLIC CAPITAL LETTER ABKHASIAN HA
+04AA ; Upper # L& CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+04AC ; Upper # L& CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+04AE ; Upper # L& CYRILLIC CAPITAL LETTER STRAIGHT U
+04B0 ; Upper # L& CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+04B2 ; Upper # L& CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04B4 ; Upper # L& CYRILLIC CAPITAL LIGATURE TE TSE
+04B6 ; Upper # L& CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04B8 ; Upper # L& CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+04BA ; Upper # L& CYRILLIC CAPITAL LETTER SHHA
+04BC ; Upper # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BE ; Upper # L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+04C0..04C1 ; Upper # L& [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04C3 ; Upper # L& CYRILLIC CAPITAL LETTER KA WITH HOOK
+04C5 ; Upper # L& CYRILLIC CAPITAL LETTER EL WITH TAIL
+04C7 ; Upper # L& CYRILLIC CAPITAL LETTER EN WITH HOOK
+04C9 ; Upper # L& CYRILLIC CAPITAL LETTER EN WITH TAIL
+04CB ; Upper # L& CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04CD ; Upper # L& CYRILLIC CAPITAL LETTER EM WITH TAIL
+04D0 ; Upper # L& CYRILLIC CAPITAL LETTER A WITH BREVE
+04D2 ; Upper # L& CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D4 ; Upper # L& CYRILLIC CAPITAL LIGATURE A IE
+04D6 ; Upper # L& CYRILLIC CAPITAL LETTER IE WITH BREVE
+04D8 ; Upper # L& CYRILLIC CAPITAL LETTER SCHWA
+04DA ; Upper # L& CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04DC ; Upper # L& CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DE ; Upper # L& CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E0 ; Upper # L& CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+04E2 ; Upper # L& CYRILLIC CAPITAL LETTER I WITH MACRON
+04E4 ; Upper # L& CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E6 ; Upper # L& CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E8 ; Upper # L& CYRILLIC CAPITAL LETTER BARRED O
+04EA ; Upper # L& CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+04EC ; Upper # L& CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+04EE ; Upper # L& CYRILLIC CAPITAL LETTER U WITH MACRON
+04F0 ; Upper # L& CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F2 ; Upper # L& CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F4 ; Upper # L& CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F6 ; Upper # L& CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+04F8 ; Upper # L& CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04FA ; Upper # L& CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+04FC ; Upper # L& CYRILLIC CAPITAL LETTER HA WITH HOOK
+04FE ; Upper # L& CYRILLIC CAPITAL LETTER HA WITH STROKE
+0500 ; Upper # L& CYRILLIC CAPITAL LETTER KOMI DE
+0502 ; Upper # L& CYRILLIC CAPITAL LETTER KOMI DJE
+0504 ; Upper # L& CYRILLIC CAPITAL LETTER KOMI ZJE
+0506 ; Upper # L& CYRILLIC CAPITAL LETTER KOMI DZJE
+0508 ; Upper # L& CYRILLIC CAPITAL LETTER KOMI LJE
+050A ; Upper # L& CYRILLIC CAPITAL LETTER KOMI NJE
+050C ; Upper # L& CYRILLIC CAPITAL LETTER KOMI SJE
+050E ; Upper # L& CYRILLIC CAPITAL LETTER KOMI TJE
+0510 ; Upper # L& CYRILLIC CAPITAL LETTER REVERSED ZE
+0512 ; Upper # L& CYRILLIC CAPITAL LETTER EL WITH HOOK
+0531..0556 ; Upper # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+10A0..10C5 ; Upper # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+1E00 ; Upper # L& LATIN CAPITAL LETTER A WITH RING BELOW
+1E02 ; Upper # L& LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E04 ; Upper # L& LATIN CAPITAL LETTER B WITH DOT BELOW
+1E06 ; Upper # L& LATIN CAPITAL LETTER B WITH LINE BELOW
+1E08 ; Upper # L& LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+1E0A ; Upper # L& LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E0C ; Upper # L& LATIN CAPITAL LETTER D WITH DOT BELOW
+1E0E ; Upper # L& LATIN CAPITAL LETTER D WITH LINE BELOW
+1E10 ; Upper # L& LATIN CAPITAL LETTER D WITH CEDILLA
+1E12 ; Upper # L& LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E14 ; Upper # L& LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1E16 ; Upper # L& LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E18 ; Upper # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E1A ; Upper # L& LATIN CAPITAL LETTER E WITH TILDE BELOW
+1E1C ; Upper # L& LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+1E1E ; Upper # L& LATIN CAPITAL LETTER F WITH DOT ABOVE
+1E20 ; Upper # L& LATIN CAPITAL LETTER G WITH MACRON
+1E22 ; Upper # L& LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E24 ; Upper # L& LATIN CAPITAL LETTER H WITH DOT BELOW
+1E26 ; Upper # L& LATIN CAPITAL LETTER H WITH DIAERESIS
+1E28 ; Upper # L& LATIN CAPITAL LETTER H WITH CEDILLA
+1E2A ; Upper # L& LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E2C ; Upper # L& LATIN CAPITAL LETTER I WITH TILDE BELOW
+1E2E ; Upper # L& LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+1E30 ; Upper # L& LATIN CAPITAL LETTER K WITH ACUTE
+1E32 ; Upper # L& LATIN CAPITAL LETTER K WITH DOT BELOW
+1E34 ; Upper # L& LATIN CAPITAL LETTER K WITH LINE BELOW
+1E36 ; Upper # L& LATIN CAPITAL LETTER L WITH DOT BELOW
+1E38 ; Upper # L& LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E3A ; Upper # L& LATIN CAPITAL LETTER L WITH LINE BELOW
+1E3C ; Upper # L& LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3E ; Upper # L& LATIN CAPITAL LETTER M WITH ACUTE
+1E40 ; Upper # L& LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E42 ; Upper # L& LATIN CAPITAL LETTER M WITH DOT BELOW
+1E44 ; Upper # L& LATIN CAPITAL LETTER N WITH DOT ABOVE
+1E46 ; Upper # L& LATIN CAPITAL LETTER N WITH DOT BELOW
+1E48 ; Upper # L& LATIN CAPITAL LETTER N WITH LINE BELOW
+1E4A ; Upper # L& LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E4C ; Upper # L& LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4E ; Upper # L& LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+1E50 ; Upper # L& LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1E52 ; Upper # L& LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E54 ; Upper # L& LATIN CAPITAL LETTER P WITH ACUTE
+1E56 ; Upper # L& LATIN CAPITAL LETTER P WITH DOT ABOVE
+1E58 ; Upper # L& LATIN CAPITAL LETTER R WITH DOT ABOVE
+1E5A ; Upper # L& LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5C ; Upper # L& LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5E ; Upper # L& LATIN CAPITAL LETTER R WITH LINE BELOW
+1E60 ; Upper # L& LATIN CAPITAL LETTER S WITH DOT ABOVE
+1E62 ; Upper # L& LATIN CAPITAL LETTER S WITH DOT BELOW
+1E64 ; Upper # L& LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+1E66 ; Upper # L& LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E68 ; Upper # L& LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E6A ; Upper # L& LATIN CAPITAL LETTER T WITH DOT ABOVE
+1E6C ; Upper # L& LATIN CAPITAL LETTER T WITH DOT BELOW
+1E6E ; Upper # L& LATIN CAPITAL LETTER T WITH LINE BELOW
+1E70 ; Upper # L& LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E72 ; Upper # L& LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E74 ; Upper # L& LATIN CAPITAL LETTER U WITH TILDE BELOW
+1E76 ; Upper # L& LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E78 ; Upper # L& LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+1E7A ; Upper # L& LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1E7C ; Upper # L& LATIN CAPITAL LETTER V WITH TILDE
+1E7E ; Upper # L& LATIN CAPITAL LETTER V WITH DOT BELOW
+1E80 ; Upper # L& LATIN CAPITAL LETTER W WITH GRAVE
+1E82 ; Upper # L& LATIN CAPITAL LETTER W WITH ACUTE
+1E84 ; Upper # L& LATIN CAPITAL LETTER W WITH DIAERESIS
+1E86 ; Upper # L& LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E88 ; Upper # L& LATIN CAPITAL LETTER W WITH DOT BELOW
+1E8A ; Upper # L& LATIN CAPITAL LETTER X WITH DOT ABOVE
+1E8C ; Upper # L& LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8E ; Upper # L& LATIN CAPITAL LETTER Y WITH DOT ABOVE
+1E90 ; Upper # L& LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+1E92 ; Upper # L& LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E94 ; Upper # L& LATIN CAPITAL LETTER Z WITH LINE BELOW
+1EA0 ; Upper # L& LATIN CAPITAL LETTER A WITH DOT BELOW
+1EA2 ; Upper # L& LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EA4 ; Upper # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA6 ; Upper # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA8 ; Upper # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAA ; Upper # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAC ; Upper # L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAE ; Upper # L& LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB0 ; Upper # L& LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB2 ; Upper # L& LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB4 ; Upper # L& LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB6 ; Upper # L& LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EB8 ; Upper # L& LATIN CAPITAL LETTER E WITH DOT BELOW
+1EBA ; Upper # L& LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EBC ; Upper # L& LATIN CAPITAL LETTER E WITH TILDE
+1EBE ; Upper # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC0 ; Upper # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC2 ; Upper # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC4 ; Upper # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC6 ; Upper # L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC8 ; Upper # L& LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECA ; Upper # L& LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECC ; Upper # L& LATIN CAPITAL LETTER O WITH DOT BELOW
+1ECE ; Upper # L& LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1ED0 ; Upper # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED2 ; Upper # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED4 ; Upper # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED6 ; Upper # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED8 ; Upper # L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1EDA ; Upper # L& LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDC ; Upper # L& LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDE ; Upper # L& LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE0 ; Upper # L& LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EE2 ; Upper # L& LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1EE4 ; Upper # L& LATIN CAPITAL LETTER U WITH DOT BELOW
+1EE6 ; Upper # L& LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EE8 ; Upper # L& LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEA ; Upper # L& LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEC ; Upper # L& LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EEE ; Upper # L& LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EF0 ; Upper # L& LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF2 ; Upper # L& LATIN CAPITAL LETTER Y WITH GRAVE
+1EF4 ; Upper # L& LATIN CAPITAL LETTER Y WITH DOT BELOW
+1EF6 ; Upper # L& LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF8 ; Upper # L& LATIN CAPITAL LETTER Y WITH TILDE
+1F08..1F0F ; Upper # L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F18..1F1D ; Upper # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F28..1F2F ; Upper # L& [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F38..1F3F ; Upper # L& [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F48..1F4D ; Upper # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F59 ; Upper # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Upper # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Upper # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F ; Upper # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F68..1F6F ; Upper # L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F88..1F8F ; Upper # L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F98..1F9F ; Upper # L& [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA8..1FAF ; Upper # L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB8..1FBC ; Upper # L& [5] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC8..1FCC ; Upper # L& [5] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FD8..1FDB ; Upper # L& [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE8..1FEC ; Upper # L& [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FF8..1FFC ; Upper # L& [5] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+2102 ; Upper # L& DOUBLE-STRUCK CAPITAL C
+2107 ; Upper # L& EULER CONSTANT
+210B..210D ; Upper # L& [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H
+2110..2112 ; Upper # L& [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L
+2115 ; Upper # L& DOUBLE-STRUCK CAPITAL N
+2119..211D ; Upper # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2124 ; Upper # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; Upper # L& OHM SIGN
+2128 ; Upper # L& BLACK-LETTER CAPITAL Z
+212A..212D ; Upper # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+2130..2133 ; Upper # L& [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M
+213E..213F ; Upper # L& [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI
+2145 ; Upper # L& DOUBLE-STRUCK ITALIC CAPITAL D
+2160..216F ; Upper # Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND
+2183 ; Upper # L& ROMAN NUMERAL REVERSED ONE HUNDRED
+24B6..24CF ; Upper # So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z
+2C00..2C2E ; Upper # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C60 ; Upper # L& LATIN CAPITAL LETTER L WITH DOUBLE BAR
+2C62..2C64 ; Upper # L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
+2C67 ; Upper # L& LATIN CAPITAL LETTER H WITH DESCENDER
+2C69 ; Upper # L& LATIN CAPITAL LETTER K WITH DESCENDER
+2C6B ; Upper # L& LATIN CAPITAL LETTER Z WITH DESCENDER
+2C75 ; Upper # L& LATIN CAPITAL LETTER HALF H
+2C80 ; Upper # L& COPTIC CAPITAL LETTER ALFA
+2C82 ; Upper # L& COPTIC CAPITAL LETTER VIDA
+2C84 ; Upper # L& COPTIC CAPITAL LETTER GAMMA
+2C86 ; Upper # L& COPTIC CAPITAL LETTER DALDA
+2C88 ; Upper # L& COPTIC CAPITAL LETTER EIE
+2C8A ; Upper # L& COPTIC CAPITAL LETTER SOU
+2C8C ; Upper # L& COPTIC CAPITAL LETTER ZATA
+2C8E ; Upper # L& COPTIC CAPITAL LETTER HATE
+2C90 ; Upper # L& COPTIC CAPITAL LETTER THETHE
+2C92 ; Upper # L& COPTIC CAPITAL LETTER IAUDA
+2C94 ; Upper # L& COPTIC CAPITAL LETTER KAPA
+2C96 ; Upper # L& COPTIC CAPITAL LETTER LAULA
+2C98 ; Upper # L& COPTIC CAPITAL LETTER MI
+2C9A ; Upper # L& COPTIC CAPITAL LETTER NI
+2C9C ; Upper # L& COPTIC CAPITAL LETTER KSI
+2C9E ; Upper # L& COPTIC CAPITAL LETTER O
+2CA0 ; Upper # L& COPTIC CAPITAL LETTER PI
+2CA2 ; Upper # L& COPTIC CAPITAL LETTER RO
+2CA4 ; Upper # L& COPTIC CAPITAL LETTER SIMA
+2CA6 ; Upper # L& COPTIC CAPITAL LETTER TAU
+2CA8 ; Upper # L& COPTIC CAPITAL LETTER UA
+2CAA ; Upper # L& COPTIC CAPITAL LETTER FI
+2CAC ; Upper # L& COPTIC CAPITAL LETTER KHI
+2CAE ; Upper # L& COPTIC CAPITAL LETTER PSI
+2CB0 ; Upper # L& COPTIC CAPITAL LETTER OOU
+2CB2 ; Upper # L& COPTIC CAPITAL LETTER DIALECT-P ALEF
+2CB4 ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC AIN
+2CB6 ; Upper # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+2CB8 ; Upper # L& COPTIC CAPITAL LETTER DIALECT-P KAPA
+2CBA ; Upper # L& COPTIC CAPITAL LETTER DIALECT-P NI
+2CBC ; Upper # L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+2CBE ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC OOU
+2CC0 ; Upper # L& COPTIC CAPITAL LETTER SAMPI
+2CC2 ; Upper # L& COPTIC CAPITAL LETTER CROSSED SHEI
+2CC4 ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC SHEI
+2CC6 ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC ESH
+2CC8 ; Upper # L& COPTIC CAPITAL LETTER AKHMIMIC KHEI
+2CCA ; Upper # L& COPTIC CAPITAL LETTER DIALECT-P HORI
+2CCC ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC HORI
+2CCE ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC HA
+2CD0 ; Upper # L& COPTIC CAPITAL LETTER L-SHAPED HA
+2CD2 ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC HEI
+2CD4 ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC HAT
+2CD6 ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+2CD8 ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC DJA
+2CDA ; Upper # L& COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+2CDC ; Upper # L& COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+2CDE ; Upper # L& COPTIC CAPITAL LETTER OLD NUBIAN NGI
+2CE0 ; Upper # L& COPTIC CAPITAL LETTER OLD NUBIAN NYI
+2CE2 ; Upper # L& COPTIC CAPITAL LETTER OLD NUBIAN WAU
+FF21..FF3A ; Upper # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+10400..10427 ; Upper # L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+1D400..1D419 ; Upper # L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
+1D434..1D44D ; Upper # L& [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z
+1D468..1D481 ; Upper # L& [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D49C ; Upper # L& MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; Upper # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; Upper # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; Upper # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; Upper # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B5 ; Upper # L& [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z
+1D4D0..1D4E9 ; Upper # L& [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D504..1D505 ; Upper # L& [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; Upper # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; Upper # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; Upper # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D538..1D539 ; Upper # L& [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; Upper # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; Upper # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; Upper # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; Upper # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D56C..1D585 ; Upper # L& [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5A0..1D5B9 ; Upper # L& [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5D4..1D5ED ; Upper # L& [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D608..1D621 ; Upper # L& [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D63C..1D655 ; Upper # L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D670..1D689 ; Upper # L& [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z
+1D6A8..1D6C0 ; Upper # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6E2..1D6FA ; Upper # L& [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D71C..1D734 ; Upper # L& [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D756..1D76E ; Upper # L& [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D790..1D7A8 ; Upper # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7CA ; Upper # L& MATHEMATICAL BOLD CAPITAL DIGAMMA
+
+# Total code points: 1393
+
+# ================================================
+
+00A0 ; OLetter # Zs NO-BREAK SPACE
+01BB ; OLetter # Lo LATIN LETTER TWO WITH STROKE
+01C0..01C3 ; OLetter # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+0294 ; OLetter # Lo LATIN LETTER GLOTTAL STOP
+02B9..02BF ; OLetter # Lm [7] MODIFIER LETTER PRIME..MODIFIER LETTER LEFT HALF RING
+02C6..02D1 ; OLetter # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02EE ; OLetter # Lm MODIFIER LETTER DOUBLE APOSTROPHE
+0559 ; OLetter # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
+05D0..05EA ; OLetter # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2 ; OLetter # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3 ; OLetter # Po HEBREW PUNCTUATION GERESH
+0621..063A ; OLetter # Lo [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
+0640 ; OLetter # Lm ARABIC TATWEEL
+0641..064A ; OLetter # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+066E..066F ; OLetter # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3 ; OLetter # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D5 ; OLetter # Lo ARABIC LETTER AE
+06E5..06E6 ; OLetter # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+06EE..06EF ; OLetter # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06FA..06FC ; OLetter # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FF ; OLetter # Lo ARABIC LETTER HEH WITH INVERTED V
+0710 ; OLetter # Lo SYRIAC LETTER ALAPH
+0712..072F ; OLetter # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+074D..076D ; OLetter # Lo [33] SYRIAC LETTER SOGDIAN ZHAIN..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+0780..07A5 ; OLetter # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU
+07B1 ; OLetter # Lo THAANA LETTER NAA
+07CA..07EA ; OLetter # Lo [33] NKO LETTER A..NKO LETTER JONA RA
+07F4..07F5 ; OLetter # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07FA ; OLetter # Lm NKO LAJANYALAN
+0903 ; OLetter # Mc DEVANAGARI SIGN VISARGA
+0904..0939 ; OLetter # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093D ; OLetter # Lo DEVANAGARI SIGN AVAGRAHA
+093E..0940 ; OLetter # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0949..094C ; OLetter # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+0950 ; OLetter # Lo DEVANAGARI OM
+0958..0961 ; OLetter # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+097B..097F ; OLetter # Lo [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA
+0982..0983 ; OLetter # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+0985..098C ; OLetter # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; OLetter # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; OLetter # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; OLetter # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; OLetter # Lo BENGALI LETTER LA
+09B6..09B9 ; OLetter # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BD ; OLetter # Lo BENGALI SIGN AVAGRAHA
+09BF..09C0 ; OLetter # Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II
+09C7..09C8 ; OLetter # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; OLetter # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09CE ; OLetter # Lo BENGALI LETTER KHANDA TA
+09DC..09DD ; OLetter # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; OLetter # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09F0..09F1 ; OLetter # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+0A03 ; OLetter # Mc GURMUKHI SIGN VISARGA
+0A05..0A0A ; OLetter # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; OLetter # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; OLetter # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; OLetter # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; OLetter # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; OLetter # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; OLetter # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A3E..0A40 ; OLetter # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A59..0A5C ; OLetter # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; OLetter # Lo GURMUKHI LETTER FA
+0A72..0A74 ; OLetter # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+0A83 ; OLetter # Mc GUJARATI SIGN VISARGA
+0A85..0A8D ; OLetter # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; OLetter # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; OLetter # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; OLetter # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; OLetter # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; OLetter # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABD ; OLetter # Lo GUJARATI SIGN AVAGRAHA
+0ABE..0AC0 ; OLetter # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC9 ; OLetter # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; OLetter # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0AD0 ; OLetter # Lo GUJARATI OM
+0AE0..0AE1 ; OLetter # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0B02..0B03 ; OLetter # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B05..0B0C ; OLetter # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; OLetter # Lo [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; OLetter # Lo [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; OLetter # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; OLetter # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39 ; OLetter # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3D ; OLetter # Lo ORIYA SIGN AVAGRAHA
+0B40 ; OLetter # Mc ORIYA VOWEL SIGN II
+0B47..0B48 ; OLetter # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; OLetter # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; OLetter # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; OLetter # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B71 ; OLetter # Lo ORIYA LETTER WA
+0B83 ; OLetter # Lo TAMIL SIGN VISARGA
+0B85..0B8A ; OLetter # Lo [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; OLetter # Lo [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; OLetter # Lo [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; OLetter # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; OLetter # Lo TAMIL LETTER JA
+0B9E..0B9F ; OLetter # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; OLetter # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; OLetter # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9 ; OLetter # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA
+0BBF ; OLetter # Mc TAMIL VOWEL SIGN I
+0BC1..0BC2 ; OLetter # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; OLetter # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; OLetter # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C01..0C03 ; OLetter # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C05..0C0C ; OLetter # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; OLetter # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; OLetter # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33 ; OLetter # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39 ; OLetter # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C41..0C44 ; OLetter # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C60..0C61 ; OLetter # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C82..0C83 ; OLetter # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C85..0C8C ; OLetter # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; OLetter # Lo [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; OLetter # Lo [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; OLetter # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; OLetter # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBD ; OLetter # Lo KANNADA SIGN AVAGRAHA
+0CBE ; OLetter # Mc KANNADA VOWEL SIGN AA
+0CC0..0CC1 ; OLetter # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+0CC3..0CC4 ; OLetter # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
+0CC7..0CC8 ; OLetter # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; OLetter # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CDE ; OLetter # Lo KANNADA LETTER FA
+0CE0..0CE1 ; OLetter # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0D02..0D03 ; OLetter # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D05..0D0C ; OLetter # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; OLetter # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28 ; OLetter # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39 ; OLetter # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D3F..0D40 ; OLetter # Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
+0D46..0D48 ; OLetter # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; OLetter # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D60..0D61 ; OLetter # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D82..0D83 ; OLetter # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0D85..0D96 ; OLetter # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; OLetter # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; OLetter # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; OLetter # Lo SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; OLetter # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0DD0..0DD1 ; OLetter # Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD8..0DDE ; OLetter # Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DF2..0DF3 ; OLetter # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0E01..0E30 ; OLetter # Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+0E32..0E33 ; OLetter # Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+0E40..0E45 ; OLetter # Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+0E46 ; OLetter # Lm THAI CHARACTER MAIYAMOK
+0E81..0E82 ; OLetter # Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG
+0E84 ; OLetter # Lo LAO LETTER KHO TAM
+0E87..0E88 ; OLetter # Lo [2] LAO LETTER NGO..LAO LETTER CO
+0E8A ; OLetter # Lo LAO LETTER SO TAM
+0E8D ; OLetter # Lo LAO LETTER NYO
+0E94..0E97 ; OLetter # Lo [4] LAO LETTER DO..LAO LETTER THO TAM
+0E99..0E9F ; OLetter # Lo [7] LAO LETTER NO..LAO LETTER FO SUNG
+0EA1..0EA3 ; OLetter # Lo [3] LAO LETTER MO..LAO LETTER LO LING
+0EA5 ; OLetter # Lo LAO LETTER LO LOOT
+0EA7 ; OLetter # Lo LAO LETTER WO
+0EAA..0EAB ; OLetter # Lo [2] LAO LETTER SO SUNG..LAO LETTER HO SUNG
+0EAD..0EB0 ; OLetter # Lo [4] LAO LETTER O..LAO VOWEL SIGN A
+0EB2..0EB3 ; OLetter # Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+0EBD ; OLetter # Lo LAO SEMIVOWEL SIGN NYO
+0EC0..0EC4 ; OLetter # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+0EC6 ; OLetter # Lm LAO KO LA
+0EDC..0EDD ; OLetter # Lo [2] LAO HO NO..LAO HO MO
+0F00 ; OLetter # Lo TIBETAN SYLLABLE OM
+0F40..0F47 ; OLetter # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6A ; OLetter # Lo [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA
+0F7F ; OLetter # Mc TIBETAN SIGN RNAM BCAD
+0F88..0F8B ; OLetter # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
+1000..1021 ; OLetter # Lo [34] MYANMAR LETTER KA..MYANMAR LETTER A
+1023..1027 ; OLetter # Lo [5] MYANMAR LETTER I..MYANMAR LETTER E
+1029..102A ; OLetter # Lo [2] MYANMAR LETTER O..MYANMAR LETTER AU
+102C ; OLetter # Mc MYANMAR VOWEL SIGN AA
+1031 ; OLetter # Mc MYANMAR VOWEL SIGN E
+1038 ; OLetter # Mc MYANMAR SIGN VISARGA
+1050..1055 ; OLetter # Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+1056..1057 ; OLetter # Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+10D0..10FA ; OLetter # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10FC ; OLetter # Lm MODIFIER LETTER GEORGIAN NAR
+1100..1159 ; OLetter # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2 ; OLetter # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9 ; OLetter # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+1200..1248 ; OLetter # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+124A..124D ; OLetter # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; OLetter # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; OLetter # Lo ETHIOPIC SYLLABLE QHWA
+125A..125D ; OLetter # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288 ; OLetter # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D ; OLetter # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0 ; OLetter # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; OLetter # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; OLetter # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; OLetter # Lo ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; OLetter # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6 ; OLetter # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310 ; OLetter # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315 ; OLetter # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A ; OLetter # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+1380..138F ; OLetter # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+13A0..13F4 ; OLetter # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+1401..166C ; OLetter # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166F..1676 ; OLetter # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
+1681..169A ; OLetter # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+16A0..16EA ; OLetter # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+16EE..16F0 ; OLetter # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+1700..170C ; OLetter # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1711 ; OLetter # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA
+1720..1731 ; OLetter # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA
+1740..1751 ; OLetter # Lo [18] BUHID LETTER A..BUHID LETTER HA
+1760..176C ; OLetter # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; OLetter # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1780..17B3 ; OLetter # Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+17B6 ; OLetter # Mc KHMER VOWEL SIGN AA
+17BE..17C5 ; OLetter # Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+17C7..17C8 ; OLetter # Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+17D7 ; OLetter # Lm KHMER SIGN LEK TOO
+17DC ; OLetter # Lo KHMER SIGN AVAKRAHASANYA
+1820..1842 ; OLetter # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1843 ; OLetter # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844..1877 ; OLetter # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1880..18A8 ; OLetter # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1900..191C ; OLetter # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1923..1926 ; OLetter # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1929..192B ; OLetter # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; OLetter # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1933..1938 ; OLetter # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1950..196D ; OLetter # Lo [30] TAI LE LETTER KA..TAI LE LETTER AI
+1970..1974 ; OLetter # Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+1980..19A9 ; OLetter # Lo [42] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
+19B0..19C0 ; OLetter # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
+19C1..19C7 ; OLetter # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
+19C8..19C9 ; OLetter # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
+1A00..1A16 ; OLetter # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1A19..1A1B ; OLetter # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1B04 ; OLetter # Mc BALINESE SIGN BISAH
+1B05..1B33 ; OLetter # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B35 ; OLetter # Mc BALINESE VOWEL SIGN TEDUNG
+1B3B ; OLetter # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D..1B41 ; OLetter # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; OLetter # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1B45..1B4B ; OLetter # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
+2135..2138 ; OLetter # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2180..2182 ; OLetter # Nl [3] ROMAN NUMERAL ONE THOUSAND C D..ROMAN NUMERAL TEN THOUSAND
+2D30..2D65 ; OLetter # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D6F ; OLetter # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2D80..2D96 ; OLetter # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; OLetter # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; OLetter # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; OLetter # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; OLetter # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; OLetter # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; OLetter # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; OLetter # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; OLetter # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+3005 ; OLetter # Lm IDEOGRAPHIC ITERATION MARK
+3006 ; OLetter # Lo IDEOGRAPHIC CLOSING MARK
+3007 ; OLetter # Nl IDEOGRAPHIC NUMBER ZERO
+3021..3029 ; OLetter # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+3031..3035 ; OLetter # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+3038..303A ; OLetter # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+303B ; OLetter # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
+303C ; OLetter # Lo MASU MARK
+3041..3096 ; OLetter # Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+309D..309E ; OLetter # Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+309F ; OLetter # Lo HIRAGANA DIGRAPH YORI
+30A1..30FA ; OLetter # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FC..30FE ; OLetter # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+30FF ; OLetter # Lo KATAKANA DIGRAPH KOTO
+3105..312C ; OLetter # Lo [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN
+3131..318E ; OLetter # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+31A0..31B7 ; OLetter # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+31F0..31FF ; OLetter # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+3400..4DB5 ; OLetter # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
+4E00..9FBB ; OLetter # Lo [20924] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FBB
+A000..A014 ; OLetter # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
+A015 ; OLetter # Lm YI SYLLABLE WU
+A016..A48C ; OLetter # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A717..A71A ; OLetter # Lm [4] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE
+A800..A801 ; OLetter # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I
+A803..A805 ; OLetter # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A807..A80A ; OLetter # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80C..A822 ; OLetter # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A823..A824 ; OLetter # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A827 ; OLetter # Mc SYLOTI NAGRI VOWEL SIGN OO
+A840..A873 ; OLetter # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+AC00..D7A3 ; OLetter # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA2D ; OLetter # Lo [302] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; OLetter # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; OLetter # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; OLetter # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; OLetter # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB2A..FB36 ; OLetter # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; OLetter # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; OLetter # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; OLetter # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; OLetter # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; OLetter # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; OLetter # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; OLetter # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; OLetter # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; OLetter # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FE70..FE74 ; OLetter # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; OLetter # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF66..FF6F ; OLetter # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; OLetter # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; OLetter # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; OLetter # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; OLetter # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; OLetter # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; OLetter # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; OLetter # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; OLetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+10000..1000B ; OLetter # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; OLetter # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; OLetter # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; OLetter # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; OLetter # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; OLetter # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; OLetter # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+10140..10174 ; OLetter # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10300..1031E ; OLetter # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10330..10340 ; OLetter # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
+10341 ; OLetter # Nl GOTHIC LETTER NINETY
+10342..10349 ; OLetter # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+1034A ; OLetter # Nl GOTHIC LETTER NINE HUNDRED
+10380..1039D ; OLetter # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+103A0..103C3 ; OLetter # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF ; OLetter # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+103D1..103D5 ; OLetter # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+10450..1049D ; OLetter # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+10800..10805 ; OLetter # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; OLetter # Lo CYPRIOT SYLLABLE JO
+1080A..10835 ; OLetter # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; OLetter # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; OLetter # Lo CYPRIOT SYLLABLE ZA
+1083F ; OLetter # Lo CYPRIOT SYLLABLE ZO
+10900..10915 ; OLetter # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10A00 ; OLetter # Lo KHAROSHTHI LETTER A
+10A10..10A13 ; OLetter # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17 ; OLetter # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33 ; OLetter # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+12000..1236E ; OLetter # Lo [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+12400..12462 ; OLetter # Nl [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+20000..2A6D6 ; OLetter # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
+2F800..2FA1D ; OLetter # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 89727
+
+# ================================================
+
+0030..0039 ; Numeric # Nd [10] DIGIT ZERO..DIGIT NINE
+0660..0669 ; Numeric # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+066B..066C ; Numeric # Po [2] ARABIC DECIMAL SEPARATOR..ARABIC THOUSANDS SEPARATOR
+06F0..06F9 ; Numeric # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+07C0..07C9 ; Numeric # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
+0966..096F ; Numeric # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+09E6..09EF ; Numeric # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+0A66..0A6F ; Numeric # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0AE6..0AEF ; Numeric # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0B66..0B6F ; Numeric # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0BE6..0BEF ; Numeric # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0C66..0C6F ; Numeric # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0CE6..0CEF ; Numeric # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0D66..0D6F ; Numeric # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0E50..0E59 ; Numeric # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0ED0..0ED9 ; Numeric # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0F20..0F29 ; Numeric # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+1040..1049 ; Numeric # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+17E0..17E9 ; Numeric # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+1810..1819 ; Numeric # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1946..194F ; Numeric # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+19D0..19D9 ; Numeric # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+1B50..1B59 ; Numeric # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+104A0..104A9 ; Numeric # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+1D7CE..1D7FF ; Numeric # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+
+# Total code points: 282
+
+# ================================================
+
+002E ; ATerm # Po FULL STOP
+
+# Total code points: 1
+
+# ================================================
+
+0021 ; STerm # Po EXCLAMATION MARK
+003F ; STerm # Po QUESTION MARK
+055C ; STerm # Po ARMENIAN EXCLAMATION MARK
+055E ; STerm # Po ARMENIAN QUESTION MARK
+0589 ; STerm # Po ARMENIAN FULL STOP
+061F ; STerm # Po ARABIC QUESTION MARK
+06D4 ; STerm # Po ARABIC FULL STOP
+0700..0702 ; STerm # Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
+07F9 ; STerm # Po NKO EXCLAMATION MARK
+0964..0965 ; STerm # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+104A..104B ; STerm # Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
+1362 ; STerm # Po ETHIOPIC FULL STOP
+1367..1368 ; STerm # Po [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR
+166E ; STerm # Po CANADIAN SYLLABICS FULL STOP
+1803 ; STerm # Po MONGOLIAN FULL STOP
+1809 ; STerm # Po MONGOLIAN MANCHU FULL STOP
+1944..1945 ; STerm # Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+1B5A..1B5B ; STerm # Po [2] BALINESE PANTI..BALINESE PAMADA
+1B5E..1B5F ; STerm # Po [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN
+203C..203D ; STerm # Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG
+2047..2049 ; STerm # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+3002 ; STerm # Po IDEOGRAPHIC FULL STOP
+A876..A877 ; STerm # Po [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD
+FE52 ; STerm # Po SMALL FULL STOP
+FE56..FE57 ; STerm # Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK
+FF01 ; STerm # Po FULLWIDTH EXCLAMATION MARK
+FF0E ; STerm # Po FULLWIDTH FULL STOP
+FF1F ; STerm # Po FULLWIDTH QUESTION MARK
+FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+
+# Total code points: 42
+
+# ================================================
+
+0022 ; Close # Po QUOTATION MARK
+0027 ; Close # Po APOSTROPHE
+0028 ; Close # Ps LEFT PARENTHESIS
+0029 ; Close # Pe RIGHT PARENTHESIS
+005B ; Close # Ps LEFT SQUARE BRACKET
+005D ; Close # Pe RIGHT SQUARE BRACKET
+007B ; Close # Ps LEFT CURLY BRACKET
+007D ; Close # Pe RIGHT CURLY BRACKET
+00AB ; Close # Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BB ; Close # Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+0F3A ; Close # Ps TIBETAN MARK GUG RTAGS GYON
+0F3B ; Close # Pe TIBETAN MARK GUG RTAGS GYAS
+0F3C ; Close # Ps TIBETAN MARK ANG KHANG GYON
+0F3D ; Close # Pe TIBETAN MARK ANG KHANG GYAS
+169B ; Close # Ps OGHAM FEATHER MARK
+169C ; Close # Pe OGHAM REVERSED FEATHER MARK
+2018 ; Close # Pi LEFT SINGLE QUOTATION MARK
+2019 ; Close # Pf RIGHT SINGLE QUOTATION MARK
+201A ; Close # Ps SINGLE LOW-9 QUOTATION MARK
+201B..201C ; Close # Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
+201D ; Close # Pf RIGHT DOUBLE QUOTATION MARK
+201E ; Close # Ps DOUBLE LOW-9 QUOTATION MARK
+201F ; Close # Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2039 ; Close # Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A ; Close # Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+2045 ; Close # Ps LEFT SQUARE BRACKET WITH QUILL
+2046 ; Close # Pe RIGHT SQUARE BRACKET WITH QUILL
+207D ; Close # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; Close # Pe SUPERSCRIPT RIGHT PARENTHESIS
+208D ; Close # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; Close # Pe SUBSCRIPT RIGHT PARENTHESIS
+2329 ; Close # Ps LEFT-POINTING ANGLE BRACKET
+232A ; Close # Pe RIGHT-POINTING ANGLE BRACKET
+275B..275E ; Close # So [4] HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+2768 ; Close # Ps MEDIUM LEFT PARENTHESIS ORNAMENT
+2769 ; Close # Pe MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A ; Close # Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B ; Close # Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C ; Close # Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D ; Close # Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E ; Close # Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F ; Close # Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770 ; Close # Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771 ; Close # Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772 ; Close # Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2773 ; Close # Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2774 ; Close # Ps MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775 ; Close # Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT
+27C5 ; Close # Ps LEFT S-SHAPED BAG DELIMITER
+27C6 ; Close # Pe RIGHT S-SHAPED BAG DELIMITER
+27E6 ; Close # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7 ; Close # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8 ; Close # Ps MATHEMATICAL LEFT ANGLE BRACKET
+27E9 ; Close # Pe MATHEMATICAL RIGHT ANGLE BRACKET
+27EA ; Close # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB ; Close # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+2983 ; Close # Ps LEFT WHITE CURLY BRACKET
+2984 ; Close # Pe RIGHT WHITE CURLY BRACKET
+2985 ; Close # Ps LEFT WHITE PARENTHESIS
+2986 ; Close # Pe RIGHT WHITE PARENTHESIS
+2987 ; Close # Ps Z NOTATION LEFT IMAGE BRACKET
+2988 ; Close # Pe Z NOTATION RIGHT IMAGE BRACKET
+2989 ; Close # Ps Z NOTATION LEFT BINDING BRACKET
+298A ; Close # Pe Z NOTATION RIGHT BINDING BRACKET
+298B ; Close # Ps LEFT SQUARE BRACKET WITH UNDERBAR
+298C ; Close # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
+298D ; Close # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E ; Close # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F ; Close # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990 ; Close # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991 ; Close # Ps LEFT ANGLE BRACKET WITH DOT
+2992 ; Close # Pe RIGHT ANGLE BRACKET WITH DOT
+2993 ; Close # Ps LEFT ARC LESS-THAN BRACKET
+2994 ; Close # Pe RIGHT ARC GREATER-THAN BRACKET
+2995 ; Close # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996 ; Close # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997 ; Close # Ps LEFT BLACK TORTOISE SHELL BRACKET
+2998 ; Close # Pe RIGHT BLACK TORTOISE SHELL BRACKET
+29D8 ; Close # Ps LEFT WIGGLY FENCE
+29D9 ; Close # Pe RIGHT WIGGLY FENCE
+29DA ; Close # Ps LEFT DOUBLE WIGGLY FENCE
+29DB ; Close # Pe RIGHT DOUBLE WIGGLY FENCE
+29FC ; Close # Ps LEFT-POINTING CURVED ANGLE BRACKET
+29FD ; Close # Pe RIGHT-POINTING CURVED ANGLE BRACKET
+2E00..2E01 ; Close # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E02 ; Close # Pi LEFT SUBSTITUTION BRACKET
+2E03 ; Close # Pf RIGHT SUBSTITUTION BRACKET
+2E04 ; Close # Pi LEFT DOTTED SUBSTITUTION BRACKET
+2E05 ; Close # Pf RIGHT DOTTED SUBSTITUTION BRACKET
+2E06..2E08 ; Close # Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
+2E09 ; Close # Pi LEFT TRANSPOSITION BRACKET
+2E0A ; Close # Pf RIGHT TRANSPOSITION BRACKET
+2E0B ; Close # Po RAISED SQUARE
+2E0C ; Close # Pi LEFT RAISED OMISSION BRACKET
+2E0D ; Close # Pf RIGHT RAISED OMISSION BRACKET
+2E1C ; Close # Pi LEFT LOW PARAPHRASE BRACKET
+2E1D ; Close # Pf RIGHT LOW PARAPHRASE BRACKET
+3008 ; Close # Ps LEFT ANGLE BRACKET
+3009 ; Close # Pe RIGHT ANGLE BRACKET
+300A ; Close # Ps LEFT DOUBLE ANGLE BRACKET
+300B ; Close # Pe RIGHT DOUBLE ANGLE BRACKET
+300C ; Close # Ps LEFT CORNER BRACKET
+300D ; Close # Pe RIGHT CORNER BRACKET
+300E ; Close # Ps LEFT WHITE CORNER BRACKET
+300F ; Close # Pe RIGHT WHITE CORNER BRACKET
+3010 ; Close # Ps LEFT BLACK LENTICULAR BRACKET
+3011 ; Close # Pe RIGHT BLACK LENTICULAR BRACKET
+3014 ; Close # Ps LEFT TORTOISE SHELL BRACKET
+3015 ; Close # Pe RIGHT TORTOISE SHELL BRACKET
+3016 ; Close # Ps LEFT WHITE LENTICULAR BRACKET
+3017 ; Close # Pe RIGHT WHITE LENTICULAR BRACKET
+3018 ; Close # Ps LEFT WHITE TORTOISE SHELL BRACKET
+3019 ; Close # Pe RIGHT WHITE TORTOISE SHELL BRACKET
+301A ; Close # Ps LEFT WHITE SQUARE BRACKET
+301B ; Close # Pe RIGHT WHITE SQUARE BRACKET
+301D ; Close # Ps REVERSED DOUBLE PRIME QUOTATION MARK
+301E..301F ; Close # Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+FD3E ; Close # Ps ORNATE LEFT PARENTHESIS
+FD3F ; Close # Pe ORNATE RIGHT PARENTHESIS
+FE17 ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE35 ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47 ; Close # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; Close # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE59 ; Close # Ps SMALL LEFT PARENTHESIS
+FE5A ; Close # Pe SMALL RIGHT PARENTHESIS
+FE5B ; Close # Ps SMALL LEFT CURLY BRACKET
+FE5C ; Close # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; Close # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; Close # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FF08 ; Close # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; Close # Pe FULLWIDTH RIGHT PARENTHESIS
+FF3B ; Close # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3D ; Close # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF5B ; Close # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5D ; Close # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5F ; Close # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; Close # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF62 ; Close # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; Close # Pe HALFWIDTH RIGHT CORNER BRACKET
+
+# Total code points: 163
+
+# EOF
diff --git a/util/unicode/data/SpecialCasing.txt b/util/unicode/data/SpecialCasing.txt
new file mode 100644
index 0000000000..4bfe148b06
--- /dev/null
+++ b/util/unicode/data/SpecialCasing.txt
@@ -0,0 +1,264 @@
+# SpecialCasing-5.0.0.txt
+# Date: 2006-03-03, 08:23:36 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+#
+# Special Casing Properties
+#
+# This file is a supplement to the UnicodeData file.
+# It contains additional information about the casing of Unicode characters.
+# (For compatibility, the UnicodeData.txt file only contains case mappings for
+# characters where they are 1-1, and does not have locale-specific mappings.)
+# For more information, see the discussion of Case Mappings in the Unicode Standard.
+#
+# All code points not listed in this file that do not have a simple case mappings
+# in UnicodeData.txt map to themselves.
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <code>; <lower> ; <title> ; <upper> ; (<condition_list> ;)? # <comment>
+#
+# <code>, <lower>, <title>, and <upper> provide character values in hex. If there is more
+# than one character, they are separated by spaces. Other than as used to separate
+# elements, spaces are to be ignored.
+#
+# The <condition_list> is optional. Where present, it consists of one or more locale IDs
+# or contexts, separated by spaces. In these conditions:
+# - A condition list overrides the normal behavior if all of the listed conditions are true.
+# - The context is always the context of the characters in the original string,
+# NOT in the resulting string.
+# - Case distinctions in the condition list are not significant.
+# - Conditions preceded by "Not_" represent the negation of the condition.
+#
+# A locale ID is defined by taking any language tag as defined by
+# RFC 3066 (or its successor), and replacing '-' by '_'.
+#
+# A context for a character C is defined by Section 3.13 Default Case
+# Operations, of The Unicode Standard, Version 5.0.
+# (This is identical to the context defined by Unicode 4.1.0,
+# as specified in http://www.unicode.org/versions/Unicode4.1.0/)
+#
+# Parsers of this file must be prepared to deal with future additions to this format:
+# * Additional contexts
+# * Additional fields
+# ================================================================================
+
+# ================================================================================
+# Unconditional mappings
+# ================================================================================
+
+# The German es-zed is special--the normal mapping is to SS.
+# Note: the titlecase should never occur in practice. It is equal to titlecase(uppercase(<es-zed>))
+
+00DF; 00DF; 0053 0073; 0053 0053; # LATIN SMALL LETTER SHARP S
+
+# Preserve canonical equivalence for I with dot. Turkic is handled below.
+
+0130; 0069 0307; 0130; 0130; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# Ligatures
+
+FB00; FB00; 0046 0066; 0046 0046; # LATIN SMALL LIGATURE FF
+FB01; FB01; 0046 0069; 0046 0049; # LATIN SMALL LIGATURE FI
+FB02; FB02; 0046 006C; 0046 004C; # LATIN SMALL LIGATURE FL
+FB03; FB03; 0046 0066 0069; 0046 0046 0049; # LATIN SMALL LIGATURE FFI
+FB04; FB04; 0046 0066 006C; 0046 0046 004C; # LATIN SMALL LIGATURE FFL
+FB05; FB05; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE LONG S T
+FB06; FB06; 0053 0074; 0053 0054; # LATIN SMALL LIGATURE ST
+
+0587; 0587; 0535 0582; 0535 0552; # ARMENIAN SMALL LIGATURE ECH YIWN
+FB13; FB13; 0544 0576; 0544 0546; # ARMENIAN SMALL LIGATURE MEN NOW
+FB14; FB14; 0544 0565; 0544 0535; # ARMENIAN SMALL LIGATURE MEN ECH
+FB15; FB15; 0544 056B; 0544 053B; # ARMENIAN SMALL LIGATURE MEN INI
+FB16; FB16; 054E 0576; 054E 0546; # ARMENIAN SMALL LIGATURE VEW NOW
+FB17; FB17; 0544 056D; 0544 053D; # ARMENIAN SMALL LIGATURE MEN XEH
+
+# No corresponding uppercase precomposed character
+
+0149; 0149; 02BC 004E; 02BC 004E; # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+0390; 0390; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03B0; 03B0; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+01F0; 01F0; 004A 030C; 004A 030C; # LATIN SMALL LETTER J WITH CARON
+1E96; 1E96; 0048 0331; 0048 0331; # LATIN SMALL LETTER H WITH LINE BELOW
+1E97; 1E97; 0054 0308; 0054 0308; # LATIN SMALL LETTER T WITH DIAERESIS
+1E98; 1E98; 0057 030A; 0057 030A; # LATIN SMALL LETTER W WITH RING ABOVE
+1E99; 1E99; 0059 030A; 0059 030A; # LATIN SMALL LETTER Y WITH RING ABOVE
+1E9A; 1E9A; 0041 02BE; 0041 02BE; # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1F50; 1F50; 03A5 0313; 03A5 0313; # GREEK SMALL LETTER UPSILON WITH PSILI
+1F52; 1F52; 03A5 0313 0300; 03A5 0313 0300; # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F54; 1F54; 03A5 0313 0301; 03A5 0313 0301; # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F56; 1F56; 03A5 0313 0342; 03A5 0313 0342; # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1FB6; 1FB6; 0391 0342; 0391 0342; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FC6; 1FC6; 0397 0342; 0397 0342; # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FD2; 1FD2; 0399 0308 0300; 0399 0308 0300; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD3; 1FD3; 0399 0308 0301; 0399 0308 0301; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6; 1FD6; 0399 0342; 0399 0342; # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+1FD7; 1FD7; 0399 0308 0342; 0399 0308 0342; # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FE2; 1FE2; 03A5 0308 0300; 03A5 0308 0300; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE3; 1FE3; 03A5 0308 0301; 03A5 0308 0301; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE4; 1FE4; 03A1 0313; 03A1 0313; # GREEK SMALL LETTER RHO WITH PSILI
+1FE6; 1FE6; 03A5 0342; 03A5 0342; # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+1FE7; 1FE7; 03A5 0308 0342; 03A5 0308 0342; # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FF6; 1FF6; 03A9 0342; 03A9 0342; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+
+# IMPORTANT-when capitalizing iota-subscript (0345)
+# It MUST be in normalized form--moved to the end of any sequence of combining marks.
+# This is because logically it represents a following base character!
+# E.g. <iota_subscript> (<Mn> | <Mc> | <Me>)+ => (<Mn> | <Mc> | <Me>)+ <iota_subscript>
+# It should never be the first character in a word, so in titlecasing it can be left as is.
+
+# The following cases are already in the UnicodeData file, so are only commented here.
+
+# 0345; 0345; 0345; 0399; # COMBINING GREEK YPOGEGRAMMENI
+
+# All letters with YPOGEGRAMMENI (iota-subscript) or PROSGEGRAMMENI (iota adscript)
+# have special uppercases.
+# Note: characters with PROSGEGRAMMENI are actually titlecase, not uppercase!
+
+1F80; 1F80; 1F88; 1F08 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F81; 1F81; 1F89; 1F09 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F82; 1F82; 1F8A; 1F0A 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F83; 1F83; 1F8B; 1F0B 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F84; 1F84; 1F8C; 1F0C 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F85; 1F85; 1F8D; 1F0D 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F86; 1F86; 1F8E; 1F0E 0399; # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F87; 1F87; 1F8F; 1F0F 0399; # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F88; 1F80; 1F88; 1F08 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F89; 1F81; 1F89; 1F09 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+1F8A; 1F82; 1F8A; 1F0A 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F8B; 1F83; 1F8B; 1F0B 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F8C; 1F84; 1F8C; 1F0C 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F8D; 1F85; 1F8D; 1F0D 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F8E; 1F86; 1F8E; 1F0E 0399; # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F8F; 1F87; 1F8F; 1F0F 0399; # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F90; 1F90; 1F98; 1F28 0399; # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F91; 1F91; 1F99; 1F29 0399; # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F92; 1F92; 1F9A; 1F2A 0399; # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F93; 1F93; 1F9B; 1F2B 0399; # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F94; 1F94; 1F9C; 1F2C 0399; # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F95; 1F95; 1F9D; 1F2D 0399; # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F96; 1F96; 1F9E; 1F2E 0399; # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F97; 1F97; 1F9F; 1F2F 0399; # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F98; 1F90; 1F98; 1F28 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F99; 1F91; 1F99; 1F29 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+1F9A; 1F92; 1F9A; 1F2A 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F9B; 1F93; 1F9B; 1F2B 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F9C; 1F94; 1F9C; 1F2C 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F9D; 1F95; 1F9D; 1F2D 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F9E; 1F96; 1F9E; 1F2E 0399; # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F9F; 1F97; 1F9F; 1F2F 0399; # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0; 1FA0; 1FA8; 1F68 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA1; 1FA1; 1FA9; 1F69 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA2; 1FA2; 1FAA; 1F6A 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FA3; 1FA3; 1FAB; 1F6B 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FA4; 1FA4; 1FAC; 1F6C 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FA5; 1FA5; 1FAD; 1F6D 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FA6; 1FA6; 1FAE; 1F6E 0399; # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FA7; 1FA7; 1FAF; 1F6F 0399; # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FA8; 1FA0; 1FA8; 1F68 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1FA9; 1FA1; 1FA9; 1F69 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+1FAA; 1FA2; 1FAA; 1F6A 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1FAB; 1FA3; 1FAB; 1F6B 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1FAC; 1FA4; 1FAC; 1F6C 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1FAD; 1FA5; 1FAD; 1F6D 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1FAE; 1FA6; 1FAE; 1F6E 0399; # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FAF; 1FA7; 1FAF; 1F6F 0399; # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FB3; 1FB3; 1FBC; 0391 0399; # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC; 1FB3; 1FBC; 0391 0399; # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC3; 1FC3; 1FCC; 0397 0399; # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC; 1FC3; 1FCC; 0397 0399; # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FF3; 1FF3; 1FFC; 03A9 0399; # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC; 1FF3; 1FFC; 03A9 0399; # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+
+# Some characters with YPOGEGRAMMENI also have no corresponding titlecases
+
+1FB2; 1FB2; 1FBA 0345; 1FBA 0399; # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB4; 1FB4; 0386 0345; 0386 0399; # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FC2; 1FC2; 1FCA 0345; 1FCA 0399; # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC4; 1FC4; 0389 0345; 0389 0399; # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FF2; 1FF2; 1FFA 0345; 1FFA 0399; # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF4; 1FF4; 038F 0345; 038F 0399; # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+
+1FB7; 1FB7; 0391 0342 0345; 0391 0342 0399; # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC7; 1FC7; 0397 0342 0345; 0397 0342 0399; # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF7; 1FF7; 03A9 0342 0345; 03A9 0342 0399; # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+
+# ================================================================================
+# Conditional mappings
+# ================================================================================
+
+# Special case for final form of sigma
+
+03A3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK CAPITAL LETTER SIGMA
+
+# Note: the following cases for non-final are already in the UnicodeData file.
+
+# 03A3; 03C3; 03A3; 03A3; # GREEK CAPITAL LETTER SIGMA
+# 03C3; 03C3; 03A3; 03A3; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C2; 03A3; 03A3; # GREEK SMALL LETTER FINAL SIGMA
+
+# Note: the following cases are not included, since they would case-fold in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; Final_Sigma; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; Not_Final_Sigma; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Lithuanian
+
+# Lithuanian retains the dot in a lowercase i when followed by accents.
+
+# Remove DOT ABOVE after "i" with upper or titlecase
+
+0307; 0307; ; ; lt After_Soft_Dotted; # COMBINING DOT ABOVE
+
+# Introduce an explicit dot above when lowercasing capital I's and J's
+# whenever there are more accents above.
+# (of the accents used in Lithuanian: grave, acute, tilde above, and ogonek)
+
+0049; 0069 0307; 0049; 0049; lt More_Above; # LATIN CAPITAL LETTER I
+004A; 006A 0307; 004A; 004A; lt More_Above; # LATIN CAPITAL LETTER J
+012E; 012F 0307; 012E; 012E; lt More_Above; # LATIN CAPITAL LETTER I WITH OGONEK
+00CC; 0069 0307 0300; 00CC; 00CC; lt; # LATIN CAPITAL LETTER I WITH GRAVE
+00CD; 0069 0307 0301; 00CD; 00CD; lt; # LATIN CAPITAL LETTER I WITH ACUTE
+0128; 0069 0307 0303; 0128; 0128; lt; # LATIN CAPITAL LETTER I WITH TILDE
+
+# ================================================================================
+
+# Turkish and Azeri
+
+# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri
+# The following rules handle those cases.
+
+0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i.
+# This matches the behavior of the canonically equivalent I-dot_above
+
+0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE
+0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE
+
+# When lowercasing, unless an I is before a dot_above, it turns into a dotless i.
+
+0049; 0131; 0049; 0049; tr Not_Before_Dot; # LATIN CAPITAL LETTER I
+0049; 0131; 0049; 0049; az Not_Before_Dot; # LATIN CAPITAL LETTER I
+
+# When uppercasing, i turns into a dotted capital I
+
+0069; 0069; 0130; 0130; tr; # LATIN SMALL LETTER I
+0069; 0069; 0130; 0130; az; # LATIN SMALL LETTER I
+
+# Note: the following case is already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; tr; # LATIN SMALL LETTER DOTLESS I
+
+# EOF
+
diff --git a/util/unicode/data/UnicodeData.txt b/util/unicode/data/UnicodeData.txt
new file mode 100644
index 0000000000..299f0e57d1
--- /dev/null
+++ b/util/unicode/data/UnicodeData.txt
@@ -0,0 +1,17720 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
+001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
+0020;SPACE;Zs;0;WS;;;;;N;;;;;
+0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
+0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
+0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
+0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
+0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
+0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
+0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
+002A;ASTERISK;Po;0;ON;;;;;N;;;;;
+002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
+0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
+0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
+0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
+0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
+0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
+0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
+0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
+0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
+0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
+0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
+003A;COLON;Po;0;CS;;;;;N;;;;;
+003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
+003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
+003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
+0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
+0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
+0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
+0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
+0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
+0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
+0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
+0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
+0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
+0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
+004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
+004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
+004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
+004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
+004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
+004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
+0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
+0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
+0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
+0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
+0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
+0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
+0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
+0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
+0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
+0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
+005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
+005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
+005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
+005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
+005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
+0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
+0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
+0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
+0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
+0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
+0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
+0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
+0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
+0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
+006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
+006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
+006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
+006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
+006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
+006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
+0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
+0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
+0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
+0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
+0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
+0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
+0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
+0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
+0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
+0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
+007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
+007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
+007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
+007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
+007E;TILDE;Sm;0;ON;;;;;N;;;;;
+007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
+00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
+00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
+00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
+00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
+00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
+00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;
+00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
+00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
+00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
+00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
+00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
+00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
+00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
+00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
+00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
+00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
+00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
+00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
+00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
+00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6;
+00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
+00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
+00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
+00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
+00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
+00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
+00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
+00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
+00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
+00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0;
+00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
+00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
+00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
+00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
+00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
+00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
+00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
+00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
+00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
+00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
+00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
+00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
+00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
+00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;;
+00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
+00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
+00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
+00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
+00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
+00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
+00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6
+00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
+00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
+00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
+00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
+00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
+00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
+00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
+00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
+00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
+00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0
+00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
+00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
+00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
+00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
+00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
+00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
+00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
+00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
+00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
+00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
+00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
+00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
+00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE
+00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
+0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
+0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
+0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
+0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
+0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
+0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
+0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
+0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
+0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
+0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
+010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
+010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
+010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
+010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
+010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
+010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
+0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
+0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
+0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
+0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
+0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
+0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
+0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
+0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
+0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
+0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
+011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
+011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
+011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
+011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
+011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
+011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
+0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
+0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
+0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
+0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
+0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
+0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
+0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
+0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
+0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
+0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
+012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
+012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
+012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
+012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
+012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
+012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
+0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
+0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
+0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
+0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
+0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
+0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
+0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
+0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;;
+0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
+013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
+013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
+013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
+013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
+013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
+013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
+0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
+0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
+0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
+0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
+0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
+0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
+0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
+0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
+0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A
+014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
+014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
+014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
+014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
+0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
+0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
+0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
+0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
+0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
+0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
+0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
+0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
+0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
+0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
+015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
+015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
+015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
+015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
+015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F;
+015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E
+0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
+0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
+0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163;
+0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162
+0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
+0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
+0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
+0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
+0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
+0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
+016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
+016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
+016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
+016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
+016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
+016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
+0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
+0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
+0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
+0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
+0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
+0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
+0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
+0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
+0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
+0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
+017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
+017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
+017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
+017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
+017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
+017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
+0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243
+0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
+0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
+0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
+0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
+0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
+0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
+0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
+0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
+0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256;
+018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
+018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
+018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
+018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
+018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
+018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
+0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
+0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
+0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
+0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
+0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
+0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6
+0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
+0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
+0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
+0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
+019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D
+019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
+019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
+019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
+019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
+019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275;
+01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
+01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
+01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2
+01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
+01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
+01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280;
+01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
+01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
+01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
+01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
+01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
+01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
+01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
+01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
+01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
+01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
+01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
+01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
+01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
+01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
+01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
+01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
+01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
+01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
+01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
+01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
+01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
+01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
+01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
+01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
+01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
+01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
+01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
+01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
+01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
+01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
+01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
+01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
+01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
+01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
+01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
+01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
+01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
+01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
+01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
+01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
+01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
+01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
+01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
+01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
+01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
+01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
+01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
+01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
+01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
+01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
+01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2
+01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
+01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
+01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
+01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
+01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
+01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
+01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
+01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
+01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
+01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
+01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
+01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
+01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
+01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
+01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
+01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
+01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
+01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
+01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
+01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
+01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
+01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
+01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC
+01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
+01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
+0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
+0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
+0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
+0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
+0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
+0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
+0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
+0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
+0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
+0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
+020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
+020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
+020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
+020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
+020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
+020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
+0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
+0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
+0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
+0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
+0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
+0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
+0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
+0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
+0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219;
+0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218
+021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B;
+021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A
+021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
+021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
+021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
+021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
+0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
+0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
+0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
+0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
+0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
+0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
+0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
+0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
+0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
+0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
+022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
+022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
+022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
+022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
+022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
+022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
+0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
+0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
+0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
+0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
+0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
+0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
+0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
+0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;
+0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;
+0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;
+023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65;
+023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;
+023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B
+023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;
+023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66;
+023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;;
+0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242;
+0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241
+0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180;
+0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289;
+0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C;
+0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247;
+0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246
+0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249;
+0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248
+024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B;
+024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A
+024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D;
+024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C
+024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F;
+024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E
+0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;;
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;;
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;;
+0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
+0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
+0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
+0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
+0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
+0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
+0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
+025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
+025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
+025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
+025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
+025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
+025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
+0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
+0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
+0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
+0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
+0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
+0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
+0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
+0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
+0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
+0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62
+026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
+026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
+026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
+026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
+0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;;
+0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
+0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
+0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
+0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
+0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
+0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
+0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
+0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
+027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
+027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
+027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64
+027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
+027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
+0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6
+0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
+0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
+0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
+0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
+0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
+0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
+0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
+0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
+0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244
+028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
+028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
+028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245
+028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
+028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
+028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
+0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
+0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
+0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
+0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
+0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
+0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
+0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
+0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
+0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
+029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
+029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
+029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
+029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
+029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
+029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
+02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
+02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
+02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
+02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
+02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
+02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
+02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
+02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
+02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
+02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
+02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
+02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
+02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
+02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
+02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
+02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
+02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
+02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
+02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
+02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
+02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
+02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
+02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
+02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
+02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
+02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;;
+02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
+02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
+02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
+02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
+02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
+02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
+02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
+02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
+02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
+02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
+02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
+02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
+0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
+034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
+034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
+034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
+034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
+0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
+0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
+0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
+0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;
+0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;
+035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;
+035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
+035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
+035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
+035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
+0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
+0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
+0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
+0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
+0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
+0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
+0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
+0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
+036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
+036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
+036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
+036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
+036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
+036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD
+037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE
+037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF
+037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
+0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
+0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
+0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
+0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
+0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
+0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
+0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
+0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
+0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
+039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
+039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
+039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
+039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
+039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
+039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
+03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
+03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
+03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
+03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
+03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
+03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
+03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
+03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
+03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
+03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
+03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
+03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
+03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
+03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
+03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
+03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
+03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
+03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
+03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
+03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
+03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
+03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
+03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
+03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
+03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
+03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
+03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
+03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
+03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
+03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
+03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
+03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
+03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
+03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
+03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
+03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
+03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
+03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
+03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
+03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
+03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;;
+03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9;
+03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
+03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
+03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
+03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
+03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
+03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
+03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
+03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
+03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
+03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
+03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
+03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
+03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
+03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
+03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
+03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
+03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
+03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
+03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
+03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
+03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
+03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
+03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
+03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
+03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
+03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
+03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;
+03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B;
+03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C;
+03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D;
+0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
+0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
+0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452;
+0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
+0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
+0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
+0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
+0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457;
+0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
+0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
+040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
+040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B;
+040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
+040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
+040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E;
+040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
+0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
+0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
+0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
+0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
+0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
+0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
+0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
+0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
+0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
+0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
+041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
+041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
+041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
+041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
+041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
+041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
+0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
+0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
+0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
+0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
+0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
+0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
+0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
+0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
+0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
+0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
+042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
+042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
+042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
+042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
+042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
+042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
+0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
+0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
+0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
+0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
+0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
+0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
+0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
+0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
+0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
+0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
+043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
+043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
+043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
+043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
+043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
+043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
+0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
+0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
+0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
+0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
+0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
+0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
+0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
+0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
+0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
+0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
+044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
+044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
+044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
+044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
+044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
+0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
+0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
+0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402
+0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
+0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
+0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
+0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
+0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407
+0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
+0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
+045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
+045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B
+045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
+045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
+045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E
+045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
+0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
+0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
+0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
+0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
+0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
+0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
+0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
+0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
+0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
+0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
+046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
+046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
+046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
+046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
+046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
+046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
+0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
+0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
+0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
+0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
+0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
+0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
+0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
+0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
+0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
+0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
+047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
+047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
+047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
+047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
+047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
+047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
+0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
+0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
+0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
+0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
+0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
+048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
+048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
+048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
+048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
+048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
+0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
+0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
+0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
+0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
+0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
+0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
+0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
+0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
+0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
+0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
+049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
+049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
+049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
+049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
+049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
+049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
+04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
+04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
+04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
+04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
+04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
+04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
+04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6
+04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
+04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
+04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
+04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
+04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
+04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
+04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
+04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
+04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
+04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
+04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
+04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
+04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4
+04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
+04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
+04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
+04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
+04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
+04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
+04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
+04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
+04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
+04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
+04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF;
+04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
+04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
+04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
+04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
+04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
+04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
+04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
+04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
+04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
+04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
+04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
+04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
+04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
+04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
+04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0
+04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
+04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
+04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
+04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
+04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
+04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
+04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
+04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
+04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
+04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
+04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
+04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
+04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
+04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
+04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
+04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
+04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
+04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
+04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
+04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
+04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
+04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
+04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
+04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
+04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
+04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
+04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
+04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
+04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
+04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
+04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;
+04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6
+04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
+04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
+04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB;
+04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA
+04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD;
+04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC
+04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF;
+04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE
+0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
+0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
+0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
+0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
+0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
+0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
+0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
+0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
+0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
+0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
+050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
+050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
+050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
+050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
+050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
+050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
+0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511;
+0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510
+0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513;
+0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512
+0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
+0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
+0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
+0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
+0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
+0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
+0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
+0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
+0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
+053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
+053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
+053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
+053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
+053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
+053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
+0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
+0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
+0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
+0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
+0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
+0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
+0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
+0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
+0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
+0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
+054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
+054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
+054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
+054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
+054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
+054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
+0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
+0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
+0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
+0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
+0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
+0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
+0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
+0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
+055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
+055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
+055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
+055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
+055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
+055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
+0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
+0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
+0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
+0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
+0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
+0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
+0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
+0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
+0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
+056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
+056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
+056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
+056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
+056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
+056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
+0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
+0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
+0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
+0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
+0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
+0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
+0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
+0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
+0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
+0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
+057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
+057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
+057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
+057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
+057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
+057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
+0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
+0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
+0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
+0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
+0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
+0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
+0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
+0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
+0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
+058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;;
+0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
+05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;;
+05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
+05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
+05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;
+05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;
+05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;;
+05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
+05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
+05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
+05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
+05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
+05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
+05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
+05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
+05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
+05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
+05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
+05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
+05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
+05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
+05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
+05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
+05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
+05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
+05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
+05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
+05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
+05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
+05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
+05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
+05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
+05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
+05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
+05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
+05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
+0600;ARABIC NUMBER SIGN;Cf;0;AL;;;;;N;;;;;
+0601;ARABIC SIGN SANAH;Cf;0;AL;;;;;N;;;;;
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AL;;;;;N;;;;;
+0603;ARABIC SIGN SAFHA;Cf;0;AL;;;;;N;;;;;
+060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
+060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
+060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
+0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
+0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
+0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
+0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
+0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
+061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
+0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
+0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
+0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
+0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
+0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
+0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;
+065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
+065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;
+065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;;
+0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
+0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
+0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
+0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
+0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
+0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
+0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
+0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
+0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
+0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
+066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
+066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
+066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
+066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
+066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
+066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
+06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
+06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
+06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
+06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
+06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
+06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
+06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
+06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
+06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
+06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
+06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
+06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
+06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
+0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
+0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
+0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
+0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
+0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
+0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
+070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
+070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
+070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
+070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
+070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
+0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
+0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
+0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
+0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
+0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
+0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
+0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
+0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
+0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
+0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
+071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
+071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
+071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
+071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
+071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
+071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
+0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
+0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
+0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
+0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
+0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
+0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
+0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
+0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
+0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
+0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
+072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
+072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
+072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
+072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
+072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
+072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;
+0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
+0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
+0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
+0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
+073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
+073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
+073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
+073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
+0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
+0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
+0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
+0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
+0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
+0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
+074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
+074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
+074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
+074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
+0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;
+0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
+075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;
+075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;
+075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
+0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;
+0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;
+076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;
+076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
+076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
+0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
+0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
+0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
+0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
+0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
+0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
+0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
+0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
+078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
+078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
+078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
+078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
+078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
+078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
+0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
+0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
+0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
+0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
+0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
+0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
+0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
+0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
+0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
+0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
+079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
+079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
+079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
+079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
+079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
+079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
+07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
+07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
+07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
+07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
+07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
+07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
+07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
+07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
+07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
+07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
+07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
+07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
+07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
+07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
+07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
+07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
+07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
+07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
+07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
+07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
+07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
+07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
+07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
+07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
+07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
+07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
+07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
+07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
+07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;;
+07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;;
+07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;;
+07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;;
+07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;;
+07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;;
+07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;;
+07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;;
+07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;;
+07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;;
+07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;;
+07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;;
+07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;;
+07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;;
+07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;;
+07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;;
+07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;;
+07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;;
+07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;;
+07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;;
+07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;;
+07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;;
+07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;;
+07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;;
+07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;;
+07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;;
+07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;;
+07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;;
+07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;;
+07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;;
+07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;;
+07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;;
+07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;;
+07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;;
+07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;;
+07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;;
+07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;;
+07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
+07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;;
+07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;;
+07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
+07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;
+0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
+0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
+0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
+0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
+0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
+090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
+090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
+090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
+090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
+0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
+0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
+0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
+0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
+0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
+0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
+0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
+0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
+091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
+091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
+091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
+091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
+091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
+091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
+0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
+0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
+0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
+0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
+092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
+092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
+092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
+092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
+092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
+092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
+0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
+0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
+0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
+0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
+0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
+0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
+0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
+093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
+094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
+0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
+095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
+095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
+095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
+095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
+095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
+095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
+0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
+0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;;
+097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;;
+097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;;
+097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
+0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
+0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
+0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
+0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
+098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
+098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
+0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
+0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
+0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
+0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
+0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
+0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
+099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
+099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
+099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
+099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
+099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
+099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
+09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
+09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
+09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
+09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
+09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
+09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
+09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
+09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
+09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
+09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
+09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
+09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
+09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
+09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
+09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
+09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
+09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
+09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
+09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
+09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
+09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
+09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;;
+09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
+09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
+09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
+09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;;
+09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
+0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
+0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
+0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
+0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
+0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
+0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
+0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
+0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
+0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
+0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
+0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
+0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
+0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
+0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
+0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
+0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
+0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
+0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
+0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
+0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
+0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
+0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
+0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
+0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
+0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
+0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
+0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
+0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
+0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
+0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
+0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
+0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
+0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
+0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
+0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
+0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
+0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
+0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
+0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
+0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
+0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
+0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
+0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
+0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
+0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
+0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
+0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
+0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
+0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
+0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
+0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
+0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
+0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
+0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
+0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
+0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
+0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
+0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
+0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
+0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
+0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
+0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
+0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
+0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
+0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
+0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
+0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
+0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
+0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
+0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
+0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
+0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
+0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
+0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
+0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
+0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
+0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
+0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
+0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
+0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
+0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
+0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
+0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
+0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
+0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
+0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
+0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
+0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
+0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
+0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
+0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
+0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
+0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
+0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;
+0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
+0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
+0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
+0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
+0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
+0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
+0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
+0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
+0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
+0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
+0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
+0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
+0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
+0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
+0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
+0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
+0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
+0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
+0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
+0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
+0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
+0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
+0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
+0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
+0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
+0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
+0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
+0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
+0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
+0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
+0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
+0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
+0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
+0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
+0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
+0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
+0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
+0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
+0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
+0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
+0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;;
+0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
+0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
+0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
+0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
+0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
+0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
+0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
+0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;;
+0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;;
+0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;;
+0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;;
+0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;;
+0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;;
+0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;;
+0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;;
+0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
+0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
+0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
+0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
+0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
+0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
+0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
+0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
+0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
+0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
+0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
+0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
+0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
+0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
+0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
+0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
+0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
+0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
+0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
+0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
+0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
+0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
+0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
+0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
+0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
+0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
+0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
+0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
+0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
+0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
+0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
+0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
+0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
+0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
+0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
+0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
+0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
+0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
+0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
+0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
+0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
+0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
+0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
+0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
+0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
+0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
+0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
+0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
+0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
+0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
+0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
+0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
+0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
+0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
+0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
+0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
+0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
+0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
+0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
+0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
+0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
+0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
+0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
+0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
+0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
+0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
+0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
+0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
+0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
+0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
+0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
+0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
+0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
+0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
+0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
+0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
+0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
+0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
+0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
+0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
+0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
+0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
+0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
+0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
+0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;
+0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
+0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;
+0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
+0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
+0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
+0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
+0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;;
+0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;;
+0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
+0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
+0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
+0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
+0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
+0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
+0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
+0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
+0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
+0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
+0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
+0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
+0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
+0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
+0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
+0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
+0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
+0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
+0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
+0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
+0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
+0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
+0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
+0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
+0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
+0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
+0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
+0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
+0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
+0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
+0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
+0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
+0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
+0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
+0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
+0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
+0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
+0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
+0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
+0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
+0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
+0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
+0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
+0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
+0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
+0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
+0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
+0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
+0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
+0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
+0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
+0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
+0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
+0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
+0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
+0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
+0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
+0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
+0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
+0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
+0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
+0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
+0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
+0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
+0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
+0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
+0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
+0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
+0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
+0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
+0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
+0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
+0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
+0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
+0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
+0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
+0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
+0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
+0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
+0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
+0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
+0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
+0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
+0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
+0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
+0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
+0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
+0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
+0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
+0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
+0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
+0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
+0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
+0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
+0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
+0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
+0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
+0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
+0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
+0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
+0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
+0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
+0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
+0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
+0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
+0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
+0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
+0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
+0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
+0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
+0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
+0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
+0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
+0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
+0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
+0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
+0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
+0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
+0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
+0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
+0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
+0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
+0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
+0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
+0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
+0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
+0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
+0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
+0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
+0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
+0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
+0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
+0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
+0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
+0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
+0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
+0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
+0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;;
+0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
+0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
+0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
+0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
+0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
+0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
+0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
+0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
+0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
+0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
+0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
+0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
+0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
+0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
+0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
+0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
+0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
+0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
+0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
+0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
+0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
+0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
+0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
+0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
+0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
+0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
+0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
+0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
+0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
+0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
+0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
+0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
+0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
+0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
+0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
+0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
+0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
+0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
+0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
+0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
+0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
+0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
+0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;;
+0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;;
+0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
+0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
+0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
+0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
+0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
+0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
+0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
+0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
+0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
+0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
+0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
+0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
+0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
+0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
+0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
+0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
+0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
+0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
+0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
+0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
+0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
+0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
+0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
+0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;;
+0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
+0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
+0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
+0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
+0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
+0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
+0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;;
+0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
+0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;;
+0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;;
+0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;;
+0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;;
+0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
+0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
+0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;;
+0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;;
+0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;;
+1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
+1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
+1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
+1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
+1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
+1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
+1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
+1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
+1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
+1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
+100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
+100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
+100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
+100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
+100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
+100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
+1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
+1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
+1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
+1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
+1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
+1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
+1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
+1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
+1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
+1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
+101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
+101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
+101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
+101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
+101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
+101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
+1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
+1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
+1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
+1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
+1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
+1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
+1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
+1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
+104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
+104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
+104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
+104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
+104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
+1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
+1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
+1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25;
+10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
+10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
+10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
+10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
+1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
+1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
+1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
+1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
+1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
+1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
+1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;;
+1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
+120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
+1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
+1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
+1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
+1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
+1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
+1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
+1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
+1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
+1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
+121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
+1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
+1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
+1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
+1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
+1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
+1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
+1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
+1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
+1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
+122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
+1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
+1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
+1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
+123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
+1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
+1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
+1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
+1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
+1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;;
+1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
+124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
+124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
+124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
+124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
+1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
+1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
+1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
+1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
+1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
+1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
+1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
+1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
+125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
+125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
+125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
+125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
+1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
+1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
+1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
+126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
+1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
+1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
+1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
+127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
+1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
+1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
+1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
+1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
+1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
+1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;;
+1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
+128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
+128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
+128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
+128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
+1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
+1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
+1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
+129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
+12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
+12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
+12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
+12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
+12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
+12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
+12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
+12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
+12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
+12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;;
+12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
+12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
+12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
+12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
+12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
+12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
+12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
+12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
+12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
+12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
+12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
+12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
+12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
+12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
+12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
+12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
+12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
+12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
+12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;;
+12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
+12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
+12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
+12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
+12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
+12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
+12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
+12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
+12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
+12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
+12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
+12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
+12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;;
+12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
+12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
+12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
+12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
+12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
+1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
+1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
+1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
+130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;;
+1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
+1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
+1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
+1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
+1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
+1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
+131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
+131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;;
+1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
+1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
+1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
+132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
+132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
+132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
+1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
+1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
+1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
+1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
+1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
+1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
+1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
+1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
+1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
+1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
+133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
+133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
+133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
+133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
+133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
+133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
+1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
+1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
+1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
+1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
+1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
+1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
+1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
+1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;;
+1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
+134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
+1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
+1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
+1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
+1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
+135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
+135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;;
+1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
+1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
+1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
+1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
+1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
+1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
+1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
+1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;;
+1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
+1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
+1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
+137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
+137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;
+1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
+1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;
+1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
+1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;
+1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
+1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;
+1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
+1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;
+1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;
+138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;
+138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;
+138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;
+138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
+138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;
+138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
+1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;
+1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;
+1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;
+1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;
+1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;
+1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;
+1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;
+1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;
+1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;
+1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;;
+13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
+13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
+13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
+13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
+13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
+13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
+13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
+13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
+13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
+13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
+13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
+13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
+13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
+13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
+13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
+13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
+13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
+13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
+13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
+13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
+13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
+13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
+13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
+13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
+13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
+13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
+13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
+13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
+13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
+13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
+13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
+13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
+13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
+13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
+13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
+13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
+13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
+13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
+13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
+13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
+13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
+13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
+13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
+13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
+13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
+13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
+13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
+13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
+13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
+13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
+13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
+13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
+13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
+13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
+13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
+13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
+13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
+13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
+13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
+13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
+13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
+13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
+13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
+13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
+13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
+13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
+13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
+13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
+13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
+13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
+13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
+13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
+13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
+13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
+13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
+13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
+13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
+13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
+13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
+13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
+13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
+13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
+13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
+13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
+13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
+1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
+1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
+1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
+1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
+1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
+1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
+1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
+1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
+1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
+140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
+140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
+140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
+140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
+140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
+140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
+1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
+1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
+1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
+1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
+1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
+1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
+1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
+1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
+1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
+1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
+141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
+141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
+141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
+141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
+141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
+141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
+1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
+1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
+1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
+1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
+1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
+1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
+1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
+1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
+1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
+1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
+142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
+142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
+142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
+142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
+142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
+142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
+1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
+1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
+1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
+1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
+1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
+1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
+1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
+1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
+1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
+1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
+143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
+143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
+143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
+143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
+143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
+143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
+1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
+1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
+1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
+1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
+1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
+1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
+1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
+1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
+1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
+144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
+144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
+144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
+144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
+144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
+144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
+1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
+1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
+1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
+1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
+1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
+1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
+1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
+1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
+1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
+1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
+145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
+145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
+145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
+145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
+145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
+145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
+1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
+1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
+1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
+1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
+1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
+1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
+1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
+1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
+1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
+1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
+146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
+146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
+146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
+146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
+146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
+146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
+1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
+1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
+1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
+1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
+1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
+1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
+1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
+1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
+1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
+1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
+147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
+147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
+147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
+147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
+147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
+147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
+1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
+1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
+1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
+1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
+1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
+1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
+1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
+1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
+1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
+1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
+148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
+148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
+148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
+148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
+148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
+148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
+1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
+1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
+1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
+1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
+1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
+1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
+1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
+1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
+1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
+1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
+149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
+149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
+149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
+149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
+149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
+149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
+14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
+14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
+14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
+14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
+14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
+14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
+14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
+14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
+14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
+14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
+14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
+14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
+14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
+14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
+14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
+14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
+14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
+14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
+14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
+14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
+14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
+14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
+14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
+14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
+14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
+14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
+14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
+14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
+14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
+14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
+14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
+14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
+14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
+14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
+14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
+14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
+14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
+14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
+14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
+14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
+14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
+14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
+14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
+14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
+14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
+14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
+14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
+14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
+14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
+14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
+14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
+14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
+14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
+14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
+14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
+14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
+14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
+14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
+14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
+14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
+14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
+14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
+14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
+14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
+14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
+14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
+14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
+14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
+14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
+14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
+14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
+14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
+14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
+14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
+14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
+14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
+14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
+14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
+14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
+14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
+14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
+14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
+14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
+14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
+14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
+14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
+14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
+14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
+14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
+14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
+14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
+14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
+14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
+14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
+14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
+14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
+1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
+1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
+1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
+1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
+1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
+1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
+1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
+1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
+1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
+1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
+150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
+150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
+150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
+150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
+150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
+150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
+1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
+1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
+1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
+1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
+1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
+1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
+1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
+1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
+1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
+1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
+151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
+151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
+151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
+151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
+151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
+151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
+1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
+1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
+1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
+1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
+1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
+1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
+1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
+1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
+1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
+1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
+152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
+152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
+152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
+152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
+152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
+152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
+1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
+1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
+1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
+1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
+1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
+1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
+1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
+1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
+1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
+1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
+153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
+153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
+153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
+153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
+153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
+153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
+1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
+1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
+1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
+1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
+1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
+1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
+1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
+1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
+1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
+1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
+154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
+154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
+154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
+154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
+154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
+154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
+1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
+1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
+1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
+1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
+1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
+1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
+1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
+1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
+1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
+1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
+155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
+155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
+155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
+155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
+155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
+155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
+1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
+1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
+1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
+1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
+1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
+1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
+1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
+1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
+1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
+1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
+156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
+156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
+156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
+156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
+156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
+156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
+1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
+1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
+1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
+1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
+1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
+1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
+1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
+1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
+1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
+1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
+157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
+157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
+157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
+157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
+157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
+157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
+1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
+1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
+1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
+1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
+1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
+1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
+1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
+1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
+1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
+1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
+158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
+158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
+158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
+158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
+158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
+158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
+1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
+1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
+1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
+1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
+1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
+1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
+1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
+1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
+1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
+1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
+159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
+159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
+159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
+159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
+159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
+159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
+15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
+15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
+15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
+15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
+15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
+15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
+15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
+15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
+15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
+15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
+15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
+15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
+15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
+15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
+15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
+15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
+15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
+15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
+15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
+15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
+15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
+15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
+15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
+15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
+15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
+15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
+15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
+15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
+15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
+15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
+15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
+15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
+15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
+15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
+15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
+15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
+15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
+15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
+15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
+15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
+15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
+15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
+15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
+15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
+15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
+15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
+15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
+15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
+15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
+15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
+15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
+15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
+15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
+15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
+15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
+15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
+15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
+15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
+15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
+15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
+15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
+15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
+15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
+15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
+15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
+15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
+15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
+15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
+15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
+15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
+15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
+15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
+15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
+15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
+15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
+15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
+15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
+15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
+15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
+15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
+15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
+15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
+15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
+15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
+15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
+15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
+15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
+15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
+15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
+15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
+15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
+15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
+15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
+15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
+15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
+15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
+1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
+1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
+1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
+1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
+1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
+1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
+1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
+1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
+1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
+1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
+160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
+160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
+160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
+160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
+160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
+160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
+1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
+1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
+1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
+1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
+1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
+1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
+1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
+1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
+1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
+1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
+161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
+161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
+161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
+161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
+161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
+161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
+1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
+1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
+1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
+1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
+1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
+1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
+1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
+1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
+1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
+1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
+162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
+162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
+162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
+162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
+162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
+162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
+1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
+1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
+1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
+1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
+1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
+1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
+1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
+1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
+1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
+1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
+163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
+163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
+163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
+163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
+163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
+163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
+1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
+1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
+1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
+1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
+1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
+1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
+1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
+1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
+1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
+1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
+164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
+164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
+164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
+164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
+164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
+164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
+1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
+1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
+1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
+1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
+1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
+1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
+1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
+1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
+1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
+1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
+165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
+165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
+165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
+165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
+165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
+165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
+1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
+1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
+1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
+1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
+1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
+1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
+1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
+1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
+1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
+1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
+166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
+166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
+166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
+166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
+166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
+166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
+1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
+1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
+1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
+1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
+1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
+1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
+1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
+1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
+1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
+1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
+1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
+1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
+1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
+1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
+1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
+1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
+1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
+168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
+168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
+168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
+168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
+168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
+168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
+1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
+1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
+1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
+1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
+1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
+1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
+1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
+1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
+1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
+1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
+169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
+169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;;
+16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
+16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
+16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
+16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
+16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
+16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
+16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
+16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
+16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
+16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
+16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
+16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
+16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
+16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
+16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
+16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
+16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
+16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
+16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
+16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
+16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
+16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
+16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
+16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
+16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
+16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
+16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
+16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
+16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
+16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
+16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
+16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
+16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
+16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
+16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
+16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
+16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
+16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
+16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
+16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
+16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
+16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
+16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
+16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
+16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
+16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
+16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
+16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
+16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
+16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
+16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
+16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
+16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
+16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
+16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
+16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
+16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
+16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
+16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
+16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
+16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
+16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
+16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
+16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
+16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
+16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
+16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
+16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
+16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
+16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
+16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
+16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
+16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
+16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
+16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;;
+1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
+1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
+1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
+1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
+1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
+1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
+1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
+1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
+1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
+1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
+170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
+170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
+170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
+170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
+1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
+1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
+1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
+1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
+1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
+1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
+1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
+1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
+1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
+1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
+1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
+1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
+172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
+172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
+172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
+172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
+172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
+172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
+1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
+1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
+1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
+1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
+1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
+1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
+1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
+1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
+1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
+1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
+1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
+1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
+1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
+1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
+174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
+174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
+174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
+174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
+174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
+174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
+1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
+1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
+1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
+1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
+1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
+1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
+1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
+1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
+1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
+1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
+176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
+176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
+176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
+176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
+176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
+1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
+1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
+1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
+1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
+1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
+1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
+1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
+1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
+1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
+1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
+1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
+178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
+178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
+178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
+178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
+178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
+178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
+1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
+1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
+1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
+1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
+1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
+1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
+1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
+1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
+1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
+1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
+179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
+179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
+179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
+179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
+179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
+179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
+17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
+17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
+17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
+17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;;
+17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;;
+17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
+17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
+17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
+17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
+17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
+17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
+17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
+17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
+17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
+17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
+17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
+17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
+17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
+17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
+17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
+17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;;
+17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;;
+17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
+17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
+17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
+17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
+17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
+17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
+17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
+17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
+17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
+17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
+17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
+17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
+17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
+17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
+17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
+17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
+17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
+17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
+17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
+17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;;
+17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
+17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
+17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
+17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
+17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;;
+17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
+17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
+17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
+17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
+17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;
+17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
+17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
+17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
+17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
+17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
+17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
+17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
+17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
+17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
+17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
+1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
+1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
+1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
+1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
+1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
+1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
+1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
+1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
+1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
+180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
+180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
+1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
+1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
+1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
+1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
+1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
+1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
+1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
+1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
+1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
+1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
+182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
+182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
+182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
+182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
+182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
+182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
+1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
+1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
+1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
+1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
+1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
+1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
+1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
+1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
+1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
+1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
+183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
+183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
+183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
+183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
+183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
+183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
+1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
+1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
+1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
+1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
+1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
+1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
+1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
+1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
+1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
+1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
+184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
+184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
+184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
+184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
+184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
+184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
+1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
+1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
+1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
+1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
+1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
+1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
+1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
+1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
+1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
+1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
+185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
+185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
+185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
+185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
+185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
+185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
+1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
+1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
+1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
+1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
+1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
+1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
+1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
+1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
+1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
+1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
+186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
+186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
+186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
+186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
+186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
+186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
+1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
+1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
+1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
+1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
+1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
+1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
+1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
+1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
+1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
+1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
+1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
+1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
+1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
+1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
+1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
+188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
+188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
+188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
+188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
+1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
+1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
+1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
+1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
+1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
+1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
+189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
+189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
+189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
+189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
+189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
+18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
+18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
+18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
+18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
+18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
+18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
+18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
+18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
+18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
+18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
+1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
+1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
+1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
+1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
+1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
+1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
+1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
+1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
+1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
+1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
+190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
+190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
+190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
+190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
+190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
+190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
+1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
+1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
+1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
+1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
+1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
+1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
+1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
+1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
+1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
+1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
+191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
+191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
+191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
+1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
+1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+1929;LIMBU SUBJOINED LETTER YA;Mc;0;NSM;;;;;N;;;;;
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;NSM;;;;;N;;;;;
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;NSM;;;;;N;;;;;
+1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
+1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
+1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
+1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
+1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
+1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
+1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
+1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
+1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
+193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
+193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
+1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
+1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
+1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
+1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
+1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
+1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
+1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
+1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
+1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
+1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
+1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
+195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
+195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
+195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
+195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
+195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
+195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
+1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
+1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
+1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
+1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
+1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
+1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
+1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
+1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
+196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
+196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
+196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
+196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
+1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
+1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
+1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
+1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
+1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
+1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;
+1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;
+1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
+1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;
+1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;
+1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;
+1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;
+1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;
+1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;
+1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
+198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
+198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;
+198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;
+198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;
+198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
+198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
+1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;
+1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;
+1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;
+1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;
+1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
+1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
+1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;
+1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;
+1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
+1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;
+199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
+199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;
+199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;
+199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;
+199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;
+199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;
+19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
+19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;
+19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;
+19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;
+19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;
+19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;
+19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;
+19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;
+19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;
+19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;
+19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;;
+19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;;
+19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;;
+19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;;
+19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;;
+19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;;
+19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
+19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;;
+19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;;
+19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;;
+19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;
+19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;
+19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;
+19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;
+19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;;
+19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;;
+19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;;
+19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;;
+19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
+19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
+19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
+19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
+19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
+19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
+19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
+19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
+19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
+19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
+19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
+19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
+19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
+19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
+19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
+19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
+19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
+19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
+19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
+19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
+19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
+19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
+19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
+19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
+19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
+19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
+19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
+19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
+19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
+19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
+19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
+19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
+1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;
+1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;
+1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;
+1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;
+1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;
+1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
+1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
+1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
+1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
+1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;;
+1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;;
+1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;;
+1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;;
+1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;;
+1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;;
+1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;;
+1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;;
+1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;;
+1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;;
+1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;;
+1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;;
+1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;;
+1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;;
+1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;;
+1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;;
+1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;;
+1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;;
+1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;;
+1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;;
+1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;;
+1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;;
+1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;;
+1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;;
+1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;;
+1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;;
+1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;;
+1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;;
+1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;;
+1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;;
+1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;;
+1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;;
+1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;;
+1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;;
+1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;;
+1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;;
+1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;;
+1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;;
+1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;;
+1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;;
+1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;;
+1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;;
+1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;;
+1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;;
+1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;;
+1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;;
+1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;;
+1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;;
+1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;;
+1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;;
+1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;;
+1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;;
+1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;;
+1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;;
+1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;;
+1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
+1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
+1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
+1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;;
+1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;;
+1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;;
+1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;;
+1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;;
+1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;;
+1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;;
+1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;;
+1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;;
+1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;;
+1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;;
+1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;;
+1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;;
+1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;;
+1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;;
+1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;;
+1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;;
+1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;;
+1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;;
+1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;;
+1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;;
+1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
+1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;;
+1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;;
+1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;;
+1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;;
+1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;;
+1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;;
+1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;;
+1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;;
+1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
+1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
+1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
+1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
+1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
+1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
+1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
+1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
+1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
+1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
+1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
+1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
+1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
+1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
+1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
+1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
+1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
+1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
+1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
+1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
+1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
+1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
+1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
+1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
+1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
+1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
+1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
+1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
+1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
+1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
+1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
+1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
+1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
+1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
+1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
+1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
+1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
+1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
+1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
+1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
+1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
+1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
+1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
+1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
+1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
+1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
+1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
+1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
+1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
+1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
+1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
+1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
+1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
+1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
+1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
+1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
+1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
+1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
+1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
+1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
+1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
+1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
+1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
+1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
+1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
+1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
+1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
+1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
+1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
+1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
+1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
+1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
+1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
+1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
+1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
+1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
+1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
+1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
+1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
+1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
+1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
+1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
+1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
+1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
+1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
+1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
+1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
+1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
+1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
+1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
+1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
+1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
+1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
+1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
+1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
+1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
+1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
+1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
+1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
+1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
+1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
+1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
+1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
+1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
+1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
+1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
+1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
+1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
+1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
+1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;
+1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
+1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;;;
+1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;
+1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63
+1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;
+1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
+1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
+1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
+1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
+1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
+1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
+1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
+1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
+1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
+1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
+1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
+1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
+1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
+1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
+1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
+1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
+1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
+1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
+1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
+1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
+1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
+1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
+1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
+1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
+1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
+1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
+1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
+1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
+1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
+1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
+1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
+1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
+1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
+1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
+1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
+1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
+1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
+1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;
+1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;;
+1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;;
+1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;;
+1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;;
+1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
+1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
+1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
+1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
+1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
+1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
+1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
+1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
+1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
+1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
+1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
+1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
+1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
+1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
+1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
+1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
+1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
+1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
+1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
+1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
+1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
+1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
+1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
+1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
+1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
+1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
+1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
+1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
+1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
+1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
+1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
+1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
+1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
+1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
+1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
+1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
+1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
+1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
+1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
+1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
+1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
+1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
+1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
+1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
+1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
+1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
+1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
+1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
+1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
+1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
+1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
+1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
+1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
+1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
+1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
+1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
+1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
+1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
+1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
+1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
+1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
+1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
+1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
+1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
+1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
+1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
+1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
+1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
+1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
+1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
+1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
+1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
+1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
+1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
+1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
+1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
+1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
+1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
+1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
+1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
+1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
+1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
+1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
+1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
+1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
+1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
+1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
+1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
+1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
+1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
+1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
+1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
+1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
+1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
+1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
+1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
+1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
+1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
+1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
+1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
+1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
+1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
+1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
+1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
+1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
+1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
+1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
+1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
+1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
+1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
+1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
+1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
+1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
+1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
+1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
+1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
+1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
+1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
+1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
+1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
+1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
+1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
+1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
+1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
+1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
+1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
+1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
+1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
+1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
+1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
+1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
+1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
+1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
+1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
+1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
+1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
+1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
+1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
+1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
+1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
+1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
+1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
+1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
+1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
+1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
+1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
+1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
+1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
+1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
+1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
+1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
+1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
+1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
+1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
+1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
+1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
+1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
+1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
+1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
+1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
+1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
+1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
+1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
+1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
+1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
+1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
+1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
+1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
+1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
+1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
+1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
+1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
+1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
+1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
+1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
+1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
+1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
+1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
+1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
+1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
+1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
+1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
+1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
+1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
+1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
+1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
+1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
+1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
+1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
+1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
+1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
+1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
+1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
+1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
+1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
+1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
+1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
+1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
+1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
+1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
+1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
+1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
+1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
+1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
+1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
+1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
+1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
+1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
+1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
+1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
+1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
+1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
+1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
+1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
+1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
+1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
+1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
+1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
+1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
+1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
+1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
+1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
+1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
+1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
+1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
+1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
+1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
+1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
+1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
+1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
+1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
+1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
+1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
+1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
+1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
+1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
+1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
+1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
+1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
+1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
+1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
+1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
+1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
+1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
+1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
+1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
+1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
+1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
+1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
+1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
+1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
+1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
+1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
+1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
+1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
+1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
+1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
+1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
+1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
+1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
+1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
+1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
+1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
+1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
+1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
+1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
+1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
+1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
+1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
+1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
+1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
+1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
+1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
+1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
+1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
+1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
+1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
+1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
+1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
+1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
+1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
+1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
+1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
+1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
+1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
+1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
+1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
+1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
+1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
+1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
+1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
+1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
+1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
+1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
+1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
+1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
+1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
+1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
+1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
+1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
+1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
+1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
+1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
+1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
+1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
+1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
+1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
+1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
+1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
+1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
+1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
+1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
+1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
+1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
+1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
+1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
+1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
+1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
+1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
+1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
+1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
+1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
+1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
+1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
+1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
+1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
+1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
+1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
+1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
+1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
+1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
+1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
+1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
+1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
+1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
+1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
+1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
+1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
+1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
+1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
+1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
+1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
+1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
+1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
+1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
+1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
+1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
+1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
+1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
+1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
+1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
+1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
+1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
+1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
+1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
+1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
+1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
+1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
+1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
+1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
+1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
+1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
+1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
+1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
+1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
+1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
+1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
+1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
+1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
+1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
+1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
+1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
+1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
+1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
+1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
+1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
+1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
+1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
+1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
+1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
+1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
+1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
+1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
+1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
+1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
+1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
+1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
+1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
+1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
+1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
+1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
+1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
+1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
+1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
+1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
+1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
+1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
+1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
+1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
+1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
+1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
+1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
+1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
+1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
+1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
+1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
+1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
+1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
+1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
+1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
+1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
+1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
+1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
+1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
+1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
+1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
+1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
+1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
+1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
+1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
+1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
+1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
+1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
+1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
+1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
+1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
+1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
+1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
+1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
+1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
+1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
+1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
+2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
+2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
+2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
+200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
+200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
+2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
+2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
+2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
+2013;EN DASH;Pd;0;ON;;;;;N;;;;;
+2014;EM DASH;Pd;0;ON;;;;;N;;;;;
+2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
+2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
+2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;Y;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;Y;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;Y;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;Y;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;Y;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;Y;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;Y;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;Y;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
+2020;DAGGER;Po;0;ON;;;;;N;;;;;
+2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
+2022;BULLET;Po;0;ON;;;;;N;;;;;
+2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
+2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
+2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
+2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
+202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
+2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
+2032;PRIME;Po;0;ET;;;;;N;;;;;
+2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
+2038;CARET;Po;0;ON;;;;;N;;;;;
+2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
+203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
+203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;;
+2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
+2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
+2042;ASTERISM;Po;0;ON;;;;;N;;;;;
+2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
+2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
+204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
+204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
+204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
+204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
+204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
+2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
+2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
+2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
+2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
+2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;
+2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
+2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;
+205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;
+205D;TRICOLON;Po;0;ON;;;;;N;;;;;
+205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;;
+205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
+2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
+2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
+2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
+2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
+2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
+2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
+2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;
+20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
+20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
+20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
+20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
+20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
+20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
+20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
+20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
+20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
+20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
+20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
+20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
+20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
+20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
+20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
+20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
+20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
+20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;
+20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;
+20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;
+20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
+20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
+20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
+20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
+20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
+20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
+20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
+20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
+20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
+2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
+2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
+212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
+213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
+2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
+2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
+2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
+2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
+214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
+214C;PER SIGN;So;0;ON;;;;;N;;;;;
+214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;;
+214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
+2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
+2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
+2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
+2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184;
+2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183
+2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
+2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
+2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
+2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
+2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
+2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
+2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
+2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
+2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
+219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
+219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
+219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
+219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
+219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
+21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
+21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
+21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
+21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
+21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
+21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
+21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
+21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
+21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
+21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
+21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
+21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
+21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
+21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
+21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
+21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
+21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
+21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
+21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
+21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
+21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
+21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
+21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
+21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
+21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
+21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
+21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
+21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
+21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
+21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
+21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
+21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
+21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
+21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
+21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
+21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
+21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
+21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
+21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
+21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
+21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
+21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
+21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
+21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
+21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
+21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
+21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
+21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
+21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
+21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
+21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
+21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
+21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
+21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
+21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
+21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
+21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
+21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
+21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
+21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
+21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
+21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
+21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
+21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
+21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
+21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
+21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
+21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
+21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
+21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
+21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
+21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
+21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
+21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
+21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
+21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
+2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
+2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
+2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
+2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
+2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
+2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
+2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
+2207;NABLA;Sm;0;ON;;;;;N;;;;;
+2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
+220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
+220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
+220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
+220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
+220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
+2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
+2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;;
+2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
+2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
+2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
+2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
+221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
+221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
+221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
+221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
+221E;INFINITY;Sm;0;ON;;;;;N;;;;;
+221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
+2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
+2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
+2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
+2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
+2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
+2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
+222A;UNION;Sm;0;ON;;;;;N;;;;;
+222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
+2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
+2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
+2236;RATIO;Sm;0;ON;;;;;N;;;;;
+2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
+2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
+2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
+223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
+223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
+223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;;
+223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
+223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
+2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
+2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
+2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
+2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
+2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
+224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
+224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
+2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
+2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
+2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
+2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
+2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
+225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
+225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
+225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
+225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
+225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
+225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
+2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
+2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
+2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
+2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
+2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
+2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
+2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
+2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
+2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
+226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
+226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
+226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
+226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
+226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
+226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
+2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
+2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
+2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
+2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
+2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
+2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
+2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
+2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
+2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
+2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
+227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
+227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
+2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
+2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
+2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
+2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
+2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
+2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
+2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
+228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
+228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
+228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
+228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
+228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
+228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
+2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
+2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
+2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
+2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
+2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
+229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
+229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
+229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
+229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
+229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
+22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
+22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
+22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
+22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
+22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
+22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
+22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
+22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
+22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
+22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
+22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
+22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
+22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
+22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
+22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
+22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
+22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
+22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
+22BB;XOR;Sm;0;ON;;;;;N;;;;;
+22BC;NAND;Sm;0;ON;;;;;N;;;;;
+22BD;NOR;Sm;0;ON;;;;;N;;;;;
+22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
+22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
+22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
+22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
+22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
+22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
+22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
+22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
+22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
+22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
+22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
+22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
+22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
+22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
+22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
+22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
+22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
+22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
+22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
+22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
+22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
+22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
+22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
+22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
+22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
+22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
+22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
+22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
+22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
+22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
+22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
+22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
+22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
+22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
+2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
+2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
+2302;HOUSE;So;0;ON;;;;;N;;;;;
+2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
+2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
+2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
+2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
+2307;WAVY LINE;So;0;ON;;;;;N;;;;;
+2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
+2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
+230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
+230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
+230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
+230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
+230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
+2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
+2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
+2312;ARC;So;0;ON;;;;;N;;;;;
+2313;SEGMENT;So;0;ON;;;;;N;;;;;
+2314;SECTOR;So;0;ON;;;;;N;;;;;
+2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
+2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
+2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
+2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
+2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
+231A;WATCH;So;0;ON;;;;;N;;;;;
+231B;HOURGLASS;So;0;ON;;;;;N;;;;;
+231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
+231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
+231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
+231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
+2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2322;FROWN;So;0;ON;;;;;N;;;;;
+2323;SMILE;So;0;ON;;;;;N;;;;;
+2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
+2325;OPTION KEY;So;0;ON;;;;;N;;;;;
+2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
+2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
+2328;KEYBOARD;So;0;ON;;;;;N;;;;;
+2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
+232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
+232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
+232C;BENZENE RING;So;0;ON;;;;;N;;;;;
+232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
+232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
+232F;SYMMETRY;So;0;ON;;;;;N;;;;;
+2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
+2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
+2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
+2333;SLOPE;So;0;ON;;;;;N;;;;;
+2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
+2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
+2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
+2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
+2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
+2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
+233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
+233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
+233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
+233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
+233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
+233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
+2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
+2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
+2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
+2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
+2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
+2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
+2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
+2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
+2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
+2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
+234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;;
+234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
+234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
+234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
+234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;;
+234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
+2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
+2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;;
+2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
+2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
+2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
+2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;;
+2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
+2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
+2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
+2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
+235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
+235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
+235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
+235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
+235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
+235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
+2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
+2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;;
+2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
+2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
+2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
+2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
+2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
+2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
+2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
+2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
+236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
+236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
+236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
+236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
+236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
+236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
+2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
+2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
+2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
+2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
+2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
+2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
+2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
+2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
+2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
+2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
+237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
+237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
+237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
+237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
+237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
+237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
+2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
+2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
+2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
+2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
+2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
+2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
+2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
+2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;;
+238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
+238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
+238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
+238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
+2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
+2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
+2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
+2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
+2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
+2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
+2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
+2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
+239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
+23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
+23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
+23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
+23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
+23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
+23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
+23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
+23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
+23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
+23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
+23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
+23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
+23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
+23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
+23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
+23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
+23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
+23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
+23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
+23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
+23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
+23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
+23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
+23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
+23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
+23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
+23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
+23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
+23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;
+23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;
+23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;
+23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;
+23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;
+23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;
+23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;
+23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;
+23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;
+23DA;EARTH GROUND;So;0;ON;;;;;N;;;;;
+23DB;FUSE;So;0;ON;;;;;N;;;;;
+23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;;
+23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;;
+23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;;
+23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;;
+23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;;
+23E5;FLATNESS;So;0;ON;;;;;N;;;;;
+23E6;AC CURRENT;So;0;ON;;;;;N;;;;;
+23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;;
+2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
+2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
+2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
+2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
+2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
+2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
+2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
+2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
+2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
+2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
+240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
+240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
+240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
+240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
+240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
+240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
+2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
+2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
+2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
+2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
+2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
+2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
+2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
+2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
+2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
+2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
+241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
+241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
+241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
+241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
+241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
+241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
+2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
+2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
+2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
+2423;OPEN BOX;So;0;ON;;;;;N;;;;;
+2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
+2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
+2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
+2440;OCR HOOK;So;0;ON;;;;;N;;;;;
+2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
+2442;OCR FORK;So;0;ON;;;;;N;;;;;
+2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
+2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
+2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
+2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
+2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
+2448;OCR DASH;So;0;ON;;;;;N;;;;;
+2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
+244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
+2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;;
+24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
+24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
+24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
+24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
+24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
+24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
+24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
+24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
+24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
+24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
+24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
+24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
+24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
+24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
+24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
+24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
+24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
+24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
+24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
+24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
+24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
+2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
+2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
+2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
+2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
+2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
+2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
+2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
+2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
+2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
+2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
+250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
+250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
+250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
+250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
+250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
+250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
+2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
+2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
+2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
+2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
+2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
+2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
+2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
+2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
+2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
+2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
+251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
+251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
+251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
+251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
+251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
+251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
+2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
+2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
+2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
+2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
+2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
+2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
+2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
+2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
+2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
+252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
+252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
+252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
+252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
+252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
+252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
+2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
+2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
+2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
+2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
+2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
+2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
+2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
+2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
+2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
+2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
+253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
+253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
+253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
+253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
+253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
+253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
+2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
+2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
+2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
+2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
+2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
+2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
+2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
+2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
+2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
+2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
+254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
+254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
+254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
+254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
+254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
+254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
+2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
+2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
+2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
+2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
+2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
+2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
+2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
+2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
+2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
+2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
+255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
+255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
+255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
+255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
+255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
+255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
+2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
+2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
+2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
+2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
+2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
+2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
+2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
+2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
+2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
+2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
+256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
+256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
+256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
+256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
+256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
+256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
+2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
+2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
+2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
+2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
+2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
+2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
+2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
+2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
+2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
+2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
+257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
+257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
+257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
+257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
+257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
+257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
+2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
+2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
+2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
+2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
+258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
+258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
+258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
+258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
+2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
+2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
+2593;DARK SHADE;So;0;ON;;;;;N;;;;;
+2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
+2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
+2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
+2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
+2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
+259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
+259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
+25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
+25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
+25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
+25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
+25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
+25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
+25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
+25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
+25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
+25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
+25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
+25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
+25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
+25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
+25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
+25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
+25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
+25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
+25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
+25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
+25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
+25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
+25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
+25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
+25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
+25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
+25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
+25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
+25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
+25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
+25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
+25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
+25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
+25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
+25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+25C9;FISHEYE;So;0;ON;;;;;N;;;;;
+25CA;LOZENGE;So;0;ON;;;;;N;;;;;
+25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
+25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
+25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
+25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
+25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
+25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
+25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
+25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
+25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
+25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
+25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
+25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
+25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
+25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
+25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
+25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
+25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
+25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
+25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+2601;CLOUD;So;0;ON;;;;;N;;;;;
+2602;UMBRELLA;So;0;ON;;;;;N;;;;;
+2603;SNOWMAN;So;0;ON;;;;;N;;;;;
+2604;COMET;So;0;ON;;;;;N;;;;;
+2605;BLACK STAR;So;0;ON;;;;;N;;;;;
+2606;WHITE STAR;So;0;ON;;;;;N;;;;;
+2607;LIGHTNING;So;0;ON;;;;;N;;;;;
+2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
+2609;SUN;So;0;ON;;;;;N;;;;;
+260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
+260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
+260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
+260D;OPPOSITION;So;0;ON;;;;;N;;;;;
+260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
+260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
+2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
+2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
+2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
+2613;SALTIRE;So;0;ON;;;;;N;;;;;
+2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
+2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
+2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+2618;SHAMROCK;So;0;ON;;;;;N;;;;;
+2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
+261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
+261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
+2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
+2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
+2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
+2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
+2624;CADUCEUS;So;0;ON;;;;;N;;;;;
+2625;ANKH;So;0;ON;;;;;N;;;;;
+2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
+2627;CHI RHO;So;0;ON;;;;;N;;;;;
+2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
+2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
+262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
+262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
+262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
+262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
+262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
+262F;YIN YANG;So;0;ON;;;;;N;;;;;
+2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
+2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
+2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
+2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
+2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
+2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
+2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
+2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
+2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
+263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
+263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
+263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
+263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
+263F;MERCURY;So;0;ON;;;;;N;;;;;
+2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
+2641;EARTH;So;0;ON;;;;;N;;;;;
+2642;MALE SIGN;So;0;ON;;;;;N;;;;;
+2643;JUPITER;So;0;ON;;;;;N;;;;;
+2644;SATURN;So;0;ON;;;;;N;;;;;
+2645;URANUS;So;0;ON;;;;;N;;;;;
+2646;NEPTUNE;So;0;ON;;;;;N;;;;;
+2647;PLUTO;So;0;ON;;;;;N;;;;;
+2648;ARIES;So;0;ON;;;;;N;;;;;
+2649;TAURUS;So;0;ON;;;;;N;;;;;
+264A;GEMINI;So;0;ON;;;;;N;;;;;
+264B;CANCER;So;0;ON;;;;;N;;;;;
+264C;LEO;So;0;ON;;;;;N;;;;;
+264D;VIRGO;So;0;ON;;;;;N;;;;;
+264E;LIBRA;So;0;ON;;;;;N;;;;;
+264F;SCORPIUS;So;0;ON;;;;;N;;;;;
+2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
+2651;CAPRICORN;So;0;ON;;;;;N;;;;;
+2652;AQUARIUS;So;0;ON;;;;;N;;;;;
+2653;PISCES;So;0;ON;;;;;N;;;;;
+2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
+2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
+2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
+2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
+2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
+265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
+265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
+265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
+265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
+265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
+265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
+2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
+2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
+2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
+2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
+2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
+2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
+2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
+2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
+2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
+266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
+266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
+266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
+266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
+266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
+266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
+2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
+2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;;
+267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
+267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
+267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
+267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;
+267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;;
+2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
+2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
+2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
+2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
+2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
+2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
+2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
+2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
+2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
+2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
+268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
+268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
+268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
+268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
+268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
+268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
+2690;WHITE FLAG;So;0;ON;;;;;N;;;;;
+2691;BLACK FLAG;So;0;ON;;;;;N;;;;;
+2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;
+2693;ANCHOR;So;0;ON;;;;;N;;;;;
+2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;
+2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;
+2696;SCALES;So;0;ON;;;;;N;;;;;
+2697;ALEMBIC;So;0;ON;;;;;N;;;;;
+2698;FLOWER;So;0;ON;;;;;N;;;;;
+2699;GEAR;So;0;ON;;;;;N;;;;;
+269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;
+269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;
+269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;
+26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
+26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
+26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;
+26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;
+26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
+26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
+26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;
+26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;
+26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;
+26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;
+26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;
+26B0;COFFIN;So;0;ON;;;;;N;;;;;
+26B1;FUNERAL URN;So;0;ON;;;;;N;;;;;
+26B2;NEUTER;So;0;ON;;;;;N;;;;;
+2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
+2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
+2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
+2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
+2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
+2708;AIRPLANE;So;0;ON;;;;;N;;;;;
+2709;ENVELOPE;So;0;ON;;;;;N;;;;;
+270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
+270D;WRITING HAND;So;0;ON;;;;;N;;;;;
+270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+270F;PENCIL;So;0;ON;;;;;N;;;;;
+2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
+2711;WHITE NIB;So;0;ON;;;;;N;;;;;
+2712;BLACK NIB;So;0;ON;;;;;N;;;;;
+2713;CHECK MARK;So;0;ON;;;;;N;;;;;
+2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
+2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
+2717;BALLOT X;So;0;ON;;;;;N;;;;;
+2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
+2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
+271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
+271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
+271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
+271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
+271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
+271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
+2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
+2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
+2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
+2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
+272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
+272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
+272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
+272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
+2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
+2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
+2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
+2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
+2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
+273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
+273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
+273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
+2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
+2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
+2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
+2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
+2747;SPARKLE;So;0;ON;;;;;N;;;;;
+2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
+2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
+274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
+274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
+274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
+2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
+2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
+2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
+275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
+2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
+2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
+2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
+2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
+2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
+2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
+2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
+2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
+2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
+2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
+2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
+277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
+277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
+277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
+277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
+277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
+277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
+2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
+2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
+2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
+2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
+2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
+2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
+2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
+2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
+278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
+278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
+278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
+278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
+278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
+278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
+2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
+2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
+2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
+2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
+2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
+2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
+2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
+279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
+279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
+279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
+279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
+279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
+279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
+27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
+27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
+27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
+27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
+27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
+27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
+27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
+27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
+27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
+27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
+27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
+27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
+27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
+27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
+27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
+27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
+27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
+27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
+27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
+27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
+27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
+27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
+27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
+27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;
+27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;
+27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;
+27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;
+27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;
+27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;
+27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;;
+27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;N;;;;;
+27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;N;;;;;
+27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
+27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
+27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
+27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
+27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
+27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
+27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
+27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
+27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
+27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
+27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
+27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
+27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
+27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
+27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
+27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
+27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;;
+2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
+290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
+2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
+291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
+2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
+292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
+2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
+2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
+2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
+2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
+2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
+2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
+293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
+293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
+2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
+2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
+2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
+294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
+2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
+2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
+2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
+2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
+2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
+2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
+295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
+295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
+295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
+2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
+2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
+2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
+296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
+296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
+296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
+2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
+2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
+297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
+297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
+2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
+2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
+2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
+2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
+2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
+2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
+2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
+2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
+298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
+298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
+298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
+298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
+298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
+298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
+2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
+2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
+2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
+2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
+2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
+2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
+299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
+299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
+299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
+299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
+299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
+29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
+29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
+29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
+29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
+29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
+29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
+29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
+29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
+29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
+29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
+29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
+29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
+29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
+29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
+29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
+29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
+29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
+29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
+29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
+29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
+29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
+29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
+29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
+29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
+29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
+29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
+29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
+29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
+29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
+29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
+29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
+29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
+29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
+29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
+29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
+29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
+29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
+29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
+29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
+29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
+29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
+29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
+29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
+29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
+29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
+29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
+29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
+29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
+29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
+29FE;TINY;Sm;0;ON;;;;;N;;;;;
+29FF;MINY;Sm;0;ON;;;;;N;;;;;
+2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
+2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
+2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
+2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
+2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
+2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
+2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
+2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
+2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
+2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
+2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
+2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
+2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
+2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
+2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
+2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
+2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
+2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
+2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
+2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
+2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
+2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
+2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
+2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
+2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
+2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
+2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
+2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
+2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
+2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
+2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
+2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
+2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
+2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
+2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
+2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
+2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
+2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
+2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
+2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
+2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
+2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
+2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
+2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
+2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
+2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
+2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
+2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
+2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
+2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
+2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
+2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
+2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
+2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
+2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
+2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
+2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
+2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
+2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
+2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
+2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
+2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
+2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
+2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
+2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
+2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
+2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
+2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
+2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
+2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
+2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
+2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
+2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
+2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
+2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
+2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;;
+2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
+2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
+2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
+2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
+2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
+2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
+2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
+2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
+2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
+2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
+2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
+2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
+2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
+2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
+2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
+2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
+2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
+2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
+2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
+2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
+2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
+2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
+2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
+2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
+2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
+2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
+2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
+2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
+2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;;
+2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;;
+2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;;
+2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;;
+2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
+2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
+2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
+2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;
+2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;
+2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;
+2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;
+2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;
+2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;
+2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;
+2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;
+2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;
+2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;
+2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;
+2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;
+2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;
+2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;
+2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;
+2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;
+2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;
+2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;
+2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;
+2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;
+2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;
+2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;
+2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;
+2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;
+2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;
+2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;
+2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;
+2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;
+2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;
+2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;
+2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;
+2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;
+2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;
+2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;
+2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;
+2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;
+2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;
+2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;
+2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;
+2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;
+2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;
+2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
+2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
+2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
+2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
+2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
+2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
+2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03
+2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04
+2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05
+2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06
+2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07
+2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08
+2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09
+2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A
+2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B
+2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C
+2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D
+2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E
+2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F
+2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10
+2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11
+2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12
+2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13
+2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14
+2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15
+2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16
+2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17
+2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18
+2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19
+2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A
+2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B
+2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C
+2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D
+2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E
+2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F
+2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20
+2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21
+2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22
+2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23
+2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24
+2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25
+2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26
+2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27
+2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28
+2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29
+2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A
+2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B
+2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
+2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
+2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
+2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
+2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
+2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
+2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D;
+2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D;
+2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A
+2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E
+2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68;
+2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67
+2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A;
+2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69
+2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C;
+2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B
+2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;;
+2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76;
+2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75
+2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;;
+2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;
+2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80
+2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;
+2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82
+2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;
+2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84
+2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;
+2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86
+2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;
+2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88
+2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;
+2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A
+2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;
+2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C
+2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;
+2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E
+2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;
+2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90
+2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;
+2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92
+2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;
+2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94
+2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;
+2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96
+2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;
+2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98
+2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;
+2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A
+2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;
+2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C
+2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;
+2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E
+2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;
+2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0
+2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;
+2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2
+2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;
+2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4
+2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;
+2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6
+2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;
+2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8
+2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;
+2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA
+2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;
+2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC
+2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;
+2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE
+2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;
+2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0
+2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;
+2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2
+2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;
+2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4
+2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;
+2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6
+2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;
+2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8
+2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;
+2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA
+2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;
+2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC
+2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;
+2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE
+2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;
+2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0
+2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;
+2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2
+2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;
+2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4
+2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;
+2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6
+2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;
+2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8
+2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;
+2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA
+2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;
+2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC
+2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;
+2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE
+2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;
+2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0
+2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;
+2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2
+2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;
+2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4
+2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;
+2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6
+2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;
+2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8
+2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;
+2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA
+2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;
+2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC
+2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;
+2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE
+2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;
+2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0
+2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;
+2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2
+2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;
+2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;
+2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;
+2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;
+2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;
+2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;
+2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;
+2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
+2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;
+2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;
+2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;
+2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0
+2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1
+2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2
+2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3
+2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4
+2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5
+2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6
+2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7
+2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8
+2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9
+2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA
+2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB
+2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC
+2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD
+2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE
+2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF
+2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0
+2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1
+2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2
+2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3
+2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4
+2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5
+2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6
+2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7
+2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8
+2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9
+2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA
+2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB
+2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC
+2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD
+2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE
+2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF
+2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0
+2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1
+2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2
+2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3
+2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4
+2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5
+2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;
+2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;
+2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;
+2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;
+2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;
+2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;
+2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;
+2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;
+2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;
+2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;
+2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;
+2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;
+2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;
+2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;
+2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;
+2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;
+2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;;
+2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;
+2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;
+2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;
+2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;
+2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;
+2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;
+2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;
+2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;
+2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;
+2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;
+2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;
+2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;
+2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;
+2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;
+2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;
+2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;
+2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;
+2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;
+2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;;
+2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;
+2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;
+2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;
+2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;
+2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;;
+2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;
+2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;
+2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;
+2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;
+2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;
+2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;
+2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;
+2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;
+2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;
+2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;
+2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;
+2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;;
+2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
+2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;tamatart;;;
+2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;
+2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;
+2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;
+2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;
+2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;
+2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;
+2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;
+2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;
+2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;
+2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;
+2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;
+2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;
+2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;
+2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;
+2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;
+2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;
+2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;
+2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;
+2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;
+2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
+2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
+2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;
+2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
+2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;
+2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;
+2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;
+2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;
+2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;
+2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;
+2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;
+2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;
+2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;
+2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;
+2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;
+2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;
+2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;
+2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;
+2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;
+2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;
+2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;
+2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;
+2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;
+2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;
+2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;
+2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;
+2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;
+2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;
+2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;
+2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
+2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
+2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
+2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;
+2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;
+2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
+2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
+2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;
+2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;
+2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;
+2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;
+2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;
+2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;
+2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;
+2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
+2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
+2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
+2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;
+2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;
+2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
+2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
+2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
+2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
+2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;
+2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;
+2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;
+2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
+2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;
+2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;
+2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;
+2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;
+2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
+2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
+2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
+2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
+2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
+2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
+2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
+2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
+2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
+2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
+2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
+2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
+2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
+2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
+2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
+2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
+2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
+2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
+2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
+2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
+2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
+2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
+2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
+2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
+2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
+2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
+2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
+2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
+2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
+2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
+2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
+2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
+2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
+2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
+2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
+2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
+2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
+2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
+2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
+2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
+2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
+2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
+2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
+2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
+2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
+2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
+2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
+2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
+2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
+2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
+2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
+2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
+2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
+2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
+2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
+2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
+2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
+2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
+2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
+2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
+2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
+2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
+2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
+2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
+2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
+2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
+2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
+2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
+2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
+2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
+2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
+2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
+2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
+2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
+2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
+2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
+2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
+2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
+2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
+2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
+2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
+2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
+2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
+2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
+2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
+2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
+2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
+2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
+2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
+2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
+2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
+2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
+2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
+2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
+2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
+2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
+2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
+2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
+2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
+2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
+2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
+2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
+2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
+2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
+2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
+2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
+2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
+2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
+2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
+2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
+2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
+2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
+2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
+2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
+2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
+2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
+2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
+2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
+2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
+2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
+2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
+2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
+2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
+2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
+2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
+3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
+3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
+3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
+3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
+3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
+3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
+3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
+3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
+300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
+300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
+300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
+300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
+300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
+300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
+3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
+3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
+3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
+3013;GETA MARK;So;0;ON;;;;;N;;;;;
+3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
+3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
+3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
+3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
+3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
+3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
+301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
+301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
+301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
+301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;Y;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;Y;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;Y;;;;;
+3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
+3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
+3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
+3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
+3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
+3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
+3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
+3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
+3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
+3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
+302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
+303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
+303C;MASU MARK;Lo;0;L;;;;;N;;;;;
+303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
+303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
+303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
+3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
+3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
+3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
+3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
+3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
+304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
+304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
+304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
+304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
+304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
+3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
+3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
+3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
+3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
+3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
+3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
+3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
+3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
+3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
+3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
+305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
+305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
+305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
+305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
+305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
+305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
+3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
+3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
+3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
+3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
+3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
+3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
+3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
+3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
+3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
+306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
+306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
+306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
+306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
+306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
+306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
+3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
+3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
+3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
+3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
+3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
+3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
+3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
+3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
+3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
+3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
+307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
+307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
+307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
+307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
+307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
+307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
+3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
+3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
+3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
+3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
+3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
+3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
+3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
+308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
+308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
+308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
+308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
+308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
+3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
+3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
+3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
+3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
+3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
+3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
+309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
+30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
+30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
+30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
+30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
+30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
+30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
+30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
+30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
+30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
+30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
+30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
+30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
+30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
+30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
+30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
+30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
+30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
+30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
+30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
+30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
+30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
+30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
+30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
+30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
+30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
+30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
+30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
+30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
+30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
+30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
+30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
+30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
+30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
+30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
+30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
+30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
+30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
+30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
+30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
+30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
+30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
+30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
+30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
+30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
+30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
+30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
+30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
+30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
+30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
+30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
+30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
+30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
+30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
+30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
+30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
+30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
+30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
+30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
+30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
+30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
+30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
+30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
+30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
+30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
+30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
+30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
+30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
+30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
+30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
+30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
+30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
+30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
+30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
+30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
+30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
+30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
+30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
+30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
+30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
+30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
+30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
+30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
+30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
+30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
+30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
+30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
+30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
+30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
+30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
+30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
+30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
+30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
+30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
+3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
+3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
+3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
+3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
+3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
+310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
+310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
+310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
+310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
+310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
+310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
+3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
+3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
+3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
+3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
+3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
+3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
+3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
+3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
+3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
+3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
+311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
+311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
+311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
+311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
+311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
+311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
+3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
+3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
+3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
+3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
+3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
+3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
+3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
+3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
+3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
+3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
+312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
+312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
+312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;Kaeriten;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;Kaeriten;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;Kaeriten;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;Kaeriten;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;Kaeriten;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;Kaeriten;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;Kaeriten;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;Kaeriten;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;;
+31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
+31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
+31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
+31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
+31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
+31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
+31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
+31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
+31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
+31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
+31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
+31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
+31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
+31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
+31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
+31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
+31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
+31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
+31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
+31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
+31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
+31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
+31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
+31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
+31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
+31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
+31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
+31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;
+31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;
+31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;
+31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;
+31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;
+31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;
+31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;
+31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;
+31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;
+31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;
+31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;
+31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;
+31CF;CJK STROKE N;So;0;ON;;;;;N;;;;;
+31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
+31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
+31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
+31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
+31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
+31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
+31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
+31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
+31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
+31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
+31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
+31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
+31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
+31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
+31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
+31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
+3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
+321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
+327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
+327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
+32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
+32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
+32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
+3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
+3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
+337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
+33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
+4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
+4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
+4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
+4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
+4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
+4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
+4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
+4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
+4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
+4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
+4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
+4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
+4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
+4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
+4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
+4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
+4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
+4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
+4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
+4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
+4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
+4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
+4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
+4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
+4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
+4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
+4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
+4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
+4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
+4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
+4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
+4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
+4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
+4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
+4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
+4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
+4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
+4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
+4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
+4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
+4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
+4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
+4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
+4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
+4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
+4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
+4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
+4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
+4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
+4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
+4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
+4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
+4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
+4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
+4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
+4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
+4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
+4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FBB;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
+A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
+A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
+A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
+A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
+A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
+A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
+A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
+A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
+A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
+A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
+A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
+A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
+A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
+A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
+A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
+A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
+A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;;
+A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
+A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
+A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
+A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
+A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
+A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
+A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
+A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
+A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
+A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
+A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
+A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
+A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
+A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
+A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
+A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
+A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
+A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
+A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
+A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
+A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
+A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
+A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
+A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
+A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
+A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
+A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
+A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
+A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
+A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
+A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
+A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
+A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
+A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
+A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
+A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
+A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
+A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
+A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
+A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
+A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
+A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
+A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
+A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
+A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
+A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
+A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
+A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
+A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
+A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
+A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
+A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
+A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
+A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
+A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
+A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
+A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
+A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
+A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
+A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
+A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
+A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
+A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
+A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
+A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
+A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
+A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
+A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
+A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
+A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
+A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
+A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
+A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
+A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
+A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
+A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
+A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
+A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
+A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
+A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
+A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
+A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
+A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
+A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
+A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
+A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
+A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
+A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
+A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
+A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
+A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
+A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
+A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
+A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
+A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
+A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
+A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
+A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
+A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
+A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
+A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
+A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
+A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
+A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
+A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
+A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
+A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
+A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
+A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
+A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
+A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
+A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
+A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
+A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
+A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
+A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
+A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
+A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
+A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
+A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
+A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
+A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
+A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
+A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
+A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
+A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
+A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
+A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
+A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
+A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
+A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
+A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
+A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
+A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
+A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
+A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
+A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
+A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
+A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
+A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
+A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
+A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
+A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
+A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
+A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
+A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
+A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
+A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
+A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
+A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
+A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
+A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
+A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
+A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
+A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
+A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
+A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
+A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
+A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
+A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
+A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
+A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
+A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
+A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
+A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
+A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
+A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
+A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
+A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
+A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
+A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
+A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
+A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
+A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
+A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
+A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
+A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
+A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
+A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
+A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
+A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
+A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
+A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
+A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
+A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
+A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
+A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
+A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
+A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
+A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
+A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
+A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
+A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
+A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
+A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
+A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
+A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
+A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
+A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
+A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
+A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
+A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
+A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
+A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
+A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
+A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
+A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
+A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
+A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
+A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
+A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
+A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
+A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
+A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
+A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
+A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
+A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
+A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
+A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
+A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
+A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
+A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
+A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
+A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
+A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
+A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
+A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
+A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
+A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
+A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
+A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
+A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
+A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
+A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
+A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
+A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
+A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
+A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
+A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
+A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
+A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
+A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
+A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
+A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
+A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
+A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
+A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
+A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
+A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
+A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
+A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
+A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
+A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
+A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
+A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
+A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
+A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
+A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
+A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
+A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
+A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
+A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
+A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
+A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
+A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
+A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
+A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
+A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
+A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
+A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
+A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
+A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
+A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
+A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
+A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
+A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
+A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
+A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
+A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
+A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
+A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
+A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
+A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
+A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
+A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
+A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
+A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
+A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
+A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
+A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
+A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
+A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
+A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
+A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
+A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
+A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
+A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
+A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
+A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
+A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
+A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
+A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
+A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
+A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
+A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
+A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
+A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
+A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
+A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
+A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
+A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
+A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
+A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
+A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
+A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
+A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
+A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
+A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
+A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
+A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
+A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
+A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
+A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
+A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
+A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
+A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
+A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
+A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
+A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
+A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
+A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
+A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
+A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
+A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
+A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
+A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
+A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
+A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
+A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
+A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
+A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
+A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
+A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
+A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
+A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
+A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
+A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
+A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
+A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
+A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
+A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
+A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
+A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
+A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
+A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
+A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
+A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
+A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
+A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
+A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
+A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
+A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
+A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
+A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
+A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
+A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
+A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
+A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
+A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
+A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
+A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
+A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
+A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
+A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
+A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
+A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
+A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
+A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
+A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
+A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
+A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
+A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
+A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
+A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
+A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
+A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
+A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
+A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
+A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
+A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
+A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
+A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
+A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
+A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
+A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
+A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
+A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
+A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
+A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
+A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
+A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
+A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
+A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
+A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
+A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
+A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
+A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
+A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
+A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
+A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
+A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
+A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
+A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
+A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
+A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
+A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
+A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
+A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
+A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
+A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
+A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
+A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
+A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
+A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
+A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
+A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
+A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
+A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
+A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
+A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
+A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
+A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
+A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
+A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
+A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
+A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
+A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
+A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
+A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
+A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
+A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
+A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
+A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
+A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
+A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
+A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
+A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
+A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
+A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
+A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
+A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
+A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
+A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
+A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
+A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
+A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
+A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
+A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
+A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
+A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
+A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
+A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
+A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
+A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
+A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
+A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
+A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
+A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
+A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
+A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
+A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
+A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
+A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
+A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
+A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
+A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
+A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
+A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
+A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
+A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
+A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
+A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
+A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
+A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
+A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
+A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
+A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
+A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
+A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
+A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
+A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
+A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
+A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
+A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
+A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
+A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
+A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
+A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
+A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
+A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
+A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
+A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
+A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
+A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
+A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
+A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
+A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
+A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
+A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
+A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
+A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
+A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
+A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
+A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
+A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
+A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
+A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
+A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
+A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
+A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
+A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
+A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
+A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
+A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
+A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
+A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
+A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
+A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
+A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
+A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
+A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
+A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
+A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
+A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
+A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
+A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
+A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
+A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
+A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
+A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
+A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
+A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
+A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
+A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
+A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
+A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
+A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
+A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
+A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
+A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
+A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
+A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
+A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
+A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
+A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
+A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
+A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
+A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
+A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
+A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
+A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
+A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
+A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
+A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
+A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
+A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
+A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
+A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
+A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
+A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
+A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
+A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
+A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
+A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
+A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
+A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
+A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
+A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
+A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
+A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
+A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
+A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
+A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
+A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
+A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
+A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
+A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
+A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
+A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
+A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
+A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
+A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
+A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
+A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
+A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
+A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
+A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
+A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
+A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
+A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
+A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
+A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
+A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
+A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
+A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
+A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
+A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
+A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
+A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
+A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
+A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
+A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
+A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
+A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
+A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
+A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
+A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
+A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
+A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
+A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
+A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
+A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
+A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
+A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
+A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
+A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
+A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
+A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
+A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
+A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
+A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
+A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
+A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
+A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
+A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
+A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
+A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
+A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
+A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
+A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
+A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
+A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
+A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
+A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
+A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
+A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
+A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
+A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
+A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
+A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
+A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
+A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
+A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
+A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
+A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
+A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
+A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
+A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
+A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
+A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
+A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
+A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
+A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
+A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
+A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
+A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
+A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
+A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
+A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
+A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
+A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
+A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
+A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
+A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
+A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
+A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
+A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
+A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
+A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
+A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
+A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
+A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
+A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
+A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
+A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
+A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
+A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
+A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
+A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
+A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
+A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
+A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
+A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
+A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
+A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
+A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
+A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
+A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
+A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
+A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
+A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
+A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
+A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
+A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
+A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
+A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
+A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
+A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
+A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
+A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
+A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
+A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
+A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
+A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
+A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
+A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
+A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
+A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
+A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
+A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
+A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
+A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
+A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
+A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
+A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
+A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
+A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
+A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
+A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
+A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
+A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
+A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
+A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
+A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
+A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
+A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
+A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
+A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
+A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
+A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
+A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
+A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
+A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
+A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
+A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
+A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
+A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
+A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
+A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
+A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
+A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
+A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
+A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
+A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
+A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
+A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
+A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
+A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
+A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
+A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
+A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
+A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
+A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
+A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
+A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
+A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
+A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
+A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
+A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
+A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
+A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
+A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
+A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
+A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
+A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
+A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
+A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
+A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
+A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
+A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
+A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
+A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
+A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
+A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
+A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
+A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
+A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
+A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
+A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
+A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
+A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
+A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
+A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
+A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
+A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
+A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
+A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
+A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
+A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
+A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
+A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
+A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
+A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
+A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
+A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
+A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
+A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
+A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
+A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
+A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
+A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
+A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
+A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
+A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
+A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
+A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
+A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
+A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
+A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
+A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
+A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
+A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
+A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
+A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
+A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
+A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
+A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
+A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
+A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
+A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
+A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
+A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
+A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
+A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
+A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
+A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
+A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
+A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
+A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
+A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
+A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
+A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
+A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
+A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
+A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
+A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
+A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
+A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
+A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
+A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
+A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
+A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
+A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
+A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
+A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
+A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
+A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
+A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
+A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
+A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
+A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
+A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
+A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
+A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
+A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
+A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
+A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
+A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
+A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
+A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
+A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
+A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
+A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
+A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
+A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
+A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
+A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
+A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
+A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
+A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
+A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
+A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
+A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
+A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
+A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
+A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
+A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
+A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
+A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
+A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
+A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
+A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
+A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
+A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
+A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
+A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
+A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
+A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
+A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
+A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
+A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
+A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
+A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
+A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
+A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
+A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
+A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
+A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
+A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
+A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
+A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
+A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
+A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
+A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
+A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
+A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
+A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
+A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
+A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
+A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
+A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
+A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
+A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
+A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
+A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
+A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
+A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
+A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
+A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
+A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
+A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
+A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
+A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
+A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
+A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
+A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
+A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
+A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
+A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
+A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
+A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
+A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
+A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
+A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
+A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
+A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
+A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
+A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
+A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
+A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
+A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
+A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
+A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
+A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
+A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
+A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
+A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
+A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
+A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
+A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
+A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
+A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
+A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
+A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
+A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
+A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
+A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
+A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
+A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
+A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
+A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
+A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
+A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
+A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
+A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
+A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
+A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
+A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
+A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
+A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
+A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
+A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
+A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
+A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
+A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
+A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
+A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
+A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
+A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
+A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
+A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
+A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
+A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
+A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
+A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
+A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
+A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
+A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
+A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
+A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
+A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
+A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
+A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
+A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
+A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
+A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
+A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
+A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
+A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
+A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
+A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
+A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
+A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
+A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
+A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
+A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
+A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
+A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
+A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
+A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
+A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
+A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
+A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
+A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
+A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
+A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
+A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
+A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
+A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
+A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
+A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
+A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
+A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
+A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
+A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
+A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
+A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
+A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
+A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
+A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
+A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
+A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
+A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
+A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
+A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
+A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
+A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
+A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
+A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
+A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
+A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
+A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
+A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
+A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
+A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
+A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
+A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
+A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
+A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
+A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
+A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
+A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
+A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
+A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
+A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
+A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
+A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
+A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
+A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
+A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
+A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
+A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
+A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
+A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
+A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
+A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
+A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
+A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
+A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
+A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
+A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
+A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
+A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
+A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
+A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
+A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
+A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
+A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
+A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
+A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
+A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
+A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
+A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
+A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
+A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
+A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
+A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
+A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
+A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
+A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
+A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
+A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
+A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
+A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
+A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
+A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
+A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
+A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
+A802;SYLOTI NAGRI SIGN DVISVARA;Mc;0;NSM;;;;;N;;;;;
+A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;
+A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;
+A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;
+A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;
+A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;
+A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;
+A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;
+A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;
+A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;
+A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;
+A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;
+A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;
+A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;
+A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;
+A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;
+A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;
+A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;
+A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;
+A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;
+A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;
+A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;
+A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;
+A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;
+A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;
+A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;
+A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;
+A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;
+A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;
+A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;
+A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;
+A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;
+A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
+A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;
+A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
+A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
+A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
+A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;;
+A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;;
+A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;;
+A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;;
+A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;;
+A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;;
+A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;;
+A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;;
+A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;;
+A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;;
+A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;;
+A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;;
+A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;;
+A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;;
+A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;;
+A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;;
+A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
+A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;;
+A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;;
+A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;;
+A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;;
+A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;;
+A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;;
+A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;;
+A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;;
+A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;;
+A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;;
+A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;;
+A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;;
+A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;;
+A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;;
+A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;;
+A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;;
+A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;;
+A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;;
+A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;;
+A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;;
+A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;;
+A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;;
+A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;;
+A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;;
+A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;;
+A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;;
+A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
+F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
+F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
+F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
+F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
+F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
+F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
+F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
+F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
+F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
+F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
+F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
+F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
+F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
+F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
+F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
+F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
+F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
+F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
+F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
+F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
+F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
+F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
+F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
+F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
+F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
+F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
+F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
+F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
+F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
+F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
+F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
+F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
+F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
+F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
+F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
+F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
+F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
+F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
+F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
+F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
+F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
+F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
+F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
+F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
+F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
+F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
+F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
+F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
+F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
+F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
+F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
+F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
+F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
+F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
+F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
+F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
+F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
+F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
+F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
+F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
+F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
+F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
+F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
+F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
+F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
+F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
+F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
+F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
+F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
+F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
+F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
+F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
+F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
+F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
+F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
+F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
+F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
+F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
+F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
+F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
+F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
+F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
+F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
+F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
+F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
+F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
+F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
+F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
+F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
+F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
+F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
+F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
+F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
+F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
+F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
+F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
+F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
+F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
+F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
+F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
+F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
+F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
+F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
+F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
+F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
+F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
+F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
+F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;;
+F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
+F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
+F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
+F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
+F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
+F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
+F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
+F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;;
+F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
+F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
+F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
+F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
+F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;;
+F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
+F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
+F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
+F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
+F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
+F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
+F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
+F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
+F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
+F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
+F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
+F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
+F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
+F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
+F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
+F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
+F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
+F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
+F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
+F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
+F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
+F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
+F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
+F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
+F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
+F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
+F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
+F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
+F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
+F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
+F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
+F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
+F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
+F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
+F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
+F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
+F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
+F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
+F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
+F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
+F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
+F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
+F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
+F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
+F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
+F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
+F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
+F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
+F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
+F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
+F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
+F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
+F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
+F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
+F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
+F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
+F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
+F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;;
+F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
+F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
+F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
+F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
+F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
+F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
+F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
+F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
+F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
+F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
+F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
+F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
+F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
+F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
+F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
+F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
+F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
+F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
+F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
+F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
+F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
+F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
+F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
+F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
+F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
+F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
+F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
+F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
+F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
+F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
+F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;;
+F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
+F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
+F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
+F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
+F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
+F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
+F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
+F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
+F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
+F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
+F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
+F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
+F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
+F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
+F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
+F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
+F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
+F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
+F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
+F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
+F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
+F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
+F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
+F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
+F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
+F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
+F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
+F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
+F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
+F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
+F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
+F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
+F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
+F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
+F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
+F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
+F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
+F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
+F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
+F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
+F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
+F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;;
+F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
+F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
+FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
+FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
+FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
+FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
+FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
+FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
+FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
+FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
+FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
+FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
+FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
+FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
+FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
+FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
+FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
+FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
+FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
+FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
+FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
+FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
+FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
+FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
+FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
+FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
+FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
+FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
+FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
+FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
+FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
+FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
+FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
+FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;;
+FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
+FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
+FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
+FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;;
+FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
+FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
+FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
+FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
+FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
+FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
+FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
+FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
+FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
+FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
+FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
+FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
+FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
+FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
+FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
+FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
+FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
+FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
+FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
+FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
+FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
+FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
+FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
+FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
+FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
+FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
+FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
+FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
+FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
+FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
+FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
+FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
+FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
+FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
+FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
+FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
+FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
+FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
+FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
+FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
+FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
+FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
+FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
+FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
+FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
+FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
+FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
+FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
+FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
+FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
+FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
+FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
+FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
+FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
+FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
+FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
+FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
+FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
+FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
+FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
+FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
+FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
+FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
+FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
+FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
+FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
+FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
+FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
+FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
+FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;
+FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;
+FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;
+FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;
+FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;
+FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;
+FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;
+FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;
+FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;
+FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;
+FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;
+FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;
+FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;
+FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;
+FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;
+FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;
+FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;
+FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;
+FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;
+FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;
+FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;
+FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;
+FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;
+FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;
+FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;
+FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;
+FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;
+FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;
+FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;
+FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;
+FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;
+FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;
+FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;
+FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;
+FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;
+FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;
+FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;
+FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;
+FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;
+FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;
+FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;
+FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;
+FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;
+FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;
+FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;
+FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;
+FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;
+FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;
+FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;
+FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;
+FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;
+FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;
+FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;
+FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;
+FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;
+FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;
+FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;
+FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;
+FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;
+FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;
+FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;
+FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;
+FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;
+FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;
+FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;
+FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;
+FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;
+FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;
+FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;
+FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;
+FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;
+FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;
+FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;
+FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;
+FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;
+FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;
+FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;
+FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;
+FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;
+FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;
+FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;
+FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;
+FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;
+FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;
+FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;
+FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;
+FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;
+FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;
+FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;
+FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;
+FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;
+FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;
+FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;
+FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;
+FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;
+FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;
+FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;
+FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;
+FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;
+FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;
+FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;
+FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;
+FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;
+FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;
+FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;
+FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;;
+FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
+FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
+FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
+FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;;
+FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
+FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
+FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
+FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
+FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
+FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
+FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
+FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
+FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
+FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
+FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
+FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
+FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
+FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
+FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
+FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
+FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
+FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
+FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
+FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
+FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
+FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
+FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
+FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
+FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
+FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
+FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
+FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
+FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
+FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
+FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
+FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
+FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
+FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
+FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
+FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
+FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
+FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
+FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
+FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
+FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
+FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
+FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
+FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
+FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
+FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
+FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
+FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
+FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
+FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
+FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
+FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
+FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;
+FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
+FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
+FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
+FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
+FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
+FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
+FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
+FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
+FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
+FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
+FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
+FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
+FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
+FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
+FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;*;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;*;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
+FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
+10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
+10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
+10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
+10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
+10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
+10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
+10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
+10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
+10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
+1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
+1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
+1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
+1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
+1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
+10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
+10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
+10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
+10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
+10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
+10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
+10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
+10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
+10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
+10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
+1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
+1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
+1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
+1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
+1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
+1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
+10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
+10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
+10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
+10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
+10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
+10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
+10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
+10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
+10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
+1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
+1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
+1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
+1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
+1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
+1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
+10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
+10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
+10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
+10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
+10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
+10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
+10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
+10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
+10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
+10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
+1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
+1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
+1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
+1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
+10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
+10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
+10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
+10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
+10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
+10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
+10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
+10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
+10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
+10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
+1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
+1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
+1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
+1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
+10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
+10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
+10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
+10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
+10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
+10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
+10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
+10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
+10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
+10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
+1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
+1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
+1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
+1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
+10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
+10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
+10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
+10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
+10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
+10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
+10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
+10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
+10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
+10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
+1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
+1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
+1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
+1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
+1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
+1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
+10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
+10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
+10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
+10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
+10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
+10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
+10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
+10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
+10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
+10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
+1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
+1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
+1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
+1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
+1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
+1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
+100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
+100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
+100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
+100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
+100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
+100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
+100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
+100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
+100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
+100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
+100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
+100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
+100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
+100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
+100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
+100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
+100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
+100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
+100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
+100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
+100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
+100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
+100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
+100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
+100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
+100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
+100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
+100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
+100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
+100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
+100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
+100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
+100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
+100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
+100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
+100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
+100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
+100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
+100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
+100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
+100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
+100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;;
+100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
+100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;;
+100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
+100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
+100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
+100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
+100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
+100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
+100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
+100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
+100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
+100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
+100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
+100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
+100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
+100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
+100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
+100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
+100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
+100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
+100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
+100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
+100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
+100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
+100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
+100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
+100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
+100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
+100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
+100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
+100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
+100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
+100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
+100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
+100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
+100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
+100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
+100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
+100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
+100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
+100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
+100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
+100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
+100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
+100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
+100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
+100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
+100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
+100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
+10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
+10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
+10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
+10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
+10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
+10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
+1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
+1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
+1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
+1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
+1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
+1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
+10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
+10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
+10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
+10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
+1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
+1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
+1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
+1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
+1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
+10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
+10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
+10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
+10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
+10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
+10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
+10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
+10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
+10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
+1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
+1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
+1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
+1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
+1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
+1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
+10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
+10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
+10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
+10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
+10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
+10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
+1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
+1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
+1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
+10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;
+10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;
+10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;
+10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;
+10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;
+10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;
+10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;
+10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;
+1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;
+1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;
+1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;
+1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;
+1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;
+1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;
+10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;
+10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;
+10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;
+10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;
+10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;
+10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;
+10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;
+10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;
+10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;
+10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;
+1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;
+1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
+1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;
+10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;
+10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;
+10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;
+10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;
+10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
+1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;
+1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;
+1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
+10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;
+10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
+10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;
+10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;
+10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;
+10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;
+10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;
+10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;
+10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;
+1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;
+1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;
+1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;
+1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;
+10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;
+10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;
+10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;
+10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;
+10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;
+10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;
+10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;
+10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;
+10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;
+1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
+10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
+10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
+10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
+10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
+10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
+10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
+10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
+10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
+10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
+10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
+1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
+1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
+1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
+1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
+1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
+1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;;
+10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
+10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
+10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
+10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
+10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
+10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
+10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
+10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;;
+10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
+10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
+1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
+1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;;
+10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
+10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
+10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
+10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
+10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
+10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
+10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
+10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
+10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
+10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
+10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
+10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
+10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
+1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
+1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
+1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
+1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
+1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
+1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
+10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
+10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;;
+10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
+10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
+10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
+10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
+10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
+10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
+10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
+10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
+1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;;
+10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
+10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
+10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
+10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
+10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
+10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
+10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
+10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
+10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
+10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
+1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
+1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
+1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
+1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
+1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
+1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
+10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
+10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
+10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
+10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
+10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
+10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
+10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
+10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
+10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
+10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
+1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
+1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
+1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
+1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
+1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
+103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;
+103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;
+103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;
+103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;
+103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;
+103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;
+103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;
+103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;
+103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;
+103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;
+103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;
+103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;
+103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;
+103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;
+103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;
+103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;
+103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;
+103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;
+103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;
+103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;
+103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;
+103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;
+103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;
+103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;
+103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;
+103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;
+103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;
+103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;
+103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;
+103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;
+103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;
+103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;
+103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;
+103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;
+103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;
+103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;
+103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;
+103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;
+103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;
+103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;
+103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;
+103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;
+103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;
+103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;
+103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;;
+103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;;
+103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;;
+103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;;
+103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;;
+10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
+10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
+10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
+10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
+10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
+10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
+10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
+10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
+10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
+10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
+1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
+1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
+1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
+1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
+1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
+1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
+10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
+10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
+10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
+10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
+10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
+10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
+10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
+10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
+10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
+10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
+1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
+1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
+1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
+1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
+1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
+1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
+10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
+10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
+10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
+10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
+10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
+10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
+10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
+10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
+10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
+10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
+1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
+1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
+1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
+1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
+1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
+1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
+10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
+10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
+10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
+10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
+10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
+10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
+10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
+10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
+10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
+10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
+1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
+1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
+1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
+1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
+1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
+1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
+10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
+10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
+10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
+10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
+10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
+10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
+10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
+10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
+10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
+10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
+1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
+1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
+1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
+1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
+1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
+1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
+10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
+10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
+10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
+10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
+10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
+10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
+10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
+10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
+10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
+10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
+1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
+1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
+1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
+1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
+1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
+1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
+10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
+10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
+10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
+10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
+10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
+10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
+10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
+10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
+10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
+10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
+1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
+1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
+1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
+1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
+1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
+1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
+10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
+10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
+10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
+10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
+10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
+10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
+10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
+10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
+10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
+10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
+1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
+1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
+1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
+1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
+1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
+1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
+10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
+10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
+10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
+10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
+10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
+10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
+10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
+10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
+10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
+10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
+1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
+1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
+1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
+1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
+1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
+1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
+10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
+10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
+10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
+10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
+10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
+10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
+10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
+10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
+10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
+10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
+1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
+1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
+1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
+1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
+104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
+10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
+10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
+10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
+10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
+10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
+10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
+1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
+1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
+1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
+1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
+1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
+1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
+10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
+10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
+10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
+10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
+10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
+10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
+10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
+10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
+10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
+10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
+1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
+1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
+1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
+1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
+1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
+1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
+10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
+10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
+10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
+10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
+10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
+10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
+10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
+10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
+10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
+10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
+1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
+1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
+1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
+1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
+1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
+1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
+10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
+10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
+10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
+10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
+10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
+10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
+10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
+10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
+1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
+1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
+10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;;
+10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;;
+10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;;
+10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;;
+10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;;
+10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;;
+10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;;
+10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;;
+10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;;
+1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;;
+1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;;
+1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;;
+1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;;
+10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;;
+10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;;
+10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;;
+10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;;
+10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;
+10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;
+10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
+10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
+10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;
+10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;
+10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;
+10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;
+10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;
+10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;
+10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;
+10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;
+10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;
+10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;
+10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;
+10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;
+10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;
+10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;
+10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;
+10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;
+10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;
+10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;
+10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;
+10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;
+10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;
+10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;
+10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;
+10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;
+10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;
+10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;
+10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;
+10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;
+10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;
+10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;
+10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;
+10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;
+10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
+10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
+10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
+10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
+10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
+10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;
+10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;
+10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;
+10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;
+10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;
+10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;
+10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
+10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
+10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
+10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;
+10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;
+10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;
+10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;
+10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;
+10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;
+12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
+12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
+12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
+12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;;
+12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;;
+12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;;
+12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;;
+12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;;
+1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;;
+1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;;
+1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;;
+12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;;
+12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;;
+12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;;
+12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;;
+12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;;
+1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;;
+1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;;
+1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;;
+12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;;
+12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;;
+12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;;
+12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;;
+12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;;
+12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;;
+12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;;
+12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;;
+12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;;
+1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;;
+1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;;
+1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;;
+1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;;
+1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;;
+12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;;
+12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;;
+12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;;
+12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;;
+12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;;
+12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;;
+12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;;
+12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;;
+12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;;
+1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;;
+1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
+1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;;
+1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;;
+12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;;
+12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;;
+12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;;
+12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;;
+12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;;
+12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;;
+12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;;
+12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;;
+12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;;
+12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;;
+1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;;
+1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;;
+1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;;
+1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;;
+1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;;
+12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;;
+12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;;
+12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;;
+12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;;
+12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;;
+12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;;
+12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;;
+12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;;
+12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;;
+12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;;
+1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;;
+1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;;
+1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;;
+1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;;
+12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;;
+12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;;
+12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;;
+12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;;
+12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;;
+12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;;
+12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;;
+12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;;
+12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;
+1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;;
+1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;;
+1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;;
+1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;;
+1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;;
+12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;;
+12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;;
+12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;;
+12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;;
+12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;;
+12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;;
+12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;;
+12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;;
+12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;;
+1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;;
+1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;;
+1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;;
+1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;;
+1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;;
+1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;;
+12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;;
+12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;;
+12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;;
+12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;;
+12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;;
+12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;;
+12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;;
+1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;;
+1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;;
+1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;;
+1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;;
+1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;;
+12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;;
+12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;;
+12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;;
+12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;;
+12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;;
+12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;;
+12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;;
+1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;;
+1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;;
+1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;;
+1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;;
+1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;;
+120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;;
+120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;;
+120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;;
+120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;;
+120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;;
+120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
+120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
+120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;;
+120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;;
+120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;;
+120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;;
+120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;;
+120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;;
+120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;;
+120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;;
+120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;;
+120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;;
+120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;;
+120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;;
+120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;;
+120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;;
+120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;;
+120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;;
+120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;;
+120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;;
+120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
+120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;;
+120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;;
+120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;;
+120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;;
+120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;;
+120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;;
+120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;;
+120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;;
+120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;;
+120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;;
+120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;;
+120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;;
+120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;;
+120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;;
+120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;;
+120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;;
+120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;;
+120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;;
+120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;;
+120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;;
+120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;;
+120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;;
+120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;;
+120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;;
+120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;;
+120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
+120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;;
+120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;;
+120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;;
+120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;;
+120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;;
+120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;;
+120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;;
+120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;;
+120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;;
+120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;;
+120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;;
+120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;;
+120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;;
+120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;;
+120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;;
+120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;;
+120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;;
+120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;;
+120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;;
+120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;;
+12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;;
+12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;;
+12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;;
+12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;;
+12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;;
+12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;;
+12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;;
+12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;;
+12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;;
+12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;;
+1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;;
+1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;;
+1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;;
+1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;;
+12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;;
+12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;;
+12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;;
+12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;;
+12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;;
+12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;;
+12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;;
+12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;;
+1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;;
+1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;;
+1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;;
+1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;;
+12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;;
+12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;;
+12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;;
+12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;;
+12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;;
+12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;;
+12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;;
+12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;;
+12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;;
+12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;;
+1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;;
+1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;;
+1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;;
+1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;;
+1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;;
+1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;;
+12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;;
+12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;;
+12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;;
+12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;;
+12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;;
+12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;;
+12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;;
+1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;;
+1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;;
+1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;;
+1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;;
+1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;;
+12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;;
+12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;;
+12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;;
+12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;;
+12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;;
+12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;;
+12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;;
+12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;;
+12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;;
+12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;;
+1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;;
+1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;;
+1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;;
+1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;;
+1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;;
+12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;;
+12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;;
+12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;;
+12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;;
+12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;;
+12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;;
+12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;;
+12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;;
+12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;;
+1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;;
+1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;;
+1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;;
+1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;;
+1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;;
+1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;;
+12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;;
+12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;;
+12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;;
+12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;;
+12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;;
+12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;;
+12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;;
+12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;;
+1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
+1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;;
+1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;;
+1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;;
+1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;;
+1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;;
+12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;;
+12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;;
+12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;;
+12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;;
+12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;;
+12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;;
+12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;;
+12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;;
+12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;;
+12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;;
+1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;;
+1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;;
+1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;;
+1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;;
+1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;;
+1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;;
+12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;;
+12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;;
+12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;;
+12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;;
+12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;;
+12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;;
+12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;;
+12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;;
+12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;;
+12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;;
+1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;;
+1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;;
+1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;;
+1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;;
+1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;;
+12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;;
+12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;;
+12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;;
+12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;;
+12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;;
+12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;;
+12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;;
+12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;;
+12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;;
+1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;;
+1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;;
+1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;;
+1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;;
+121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;;
+121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;;
+121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;;
+121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;;
+121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;;
+121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;;
+121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;;
+121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;;
+121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;;
+121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;;
+121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;;
+121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
+121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;;
+121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;;
+121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;;
+121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;;
+121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;;
+121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;;
+121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;;
+121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;;
+121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;;
+121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;;
+121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;;
+121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;;
+121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;;
+121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;;
+121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
+121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;;
+121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
+121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;;
+121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;;
+121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
+121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;;
+121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;;
+121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;;
+121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;;
+121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;;
+121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;;
+121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;;
+121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;;
+121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;;
+121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;;
+121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;;
+121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;;
+121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;;
+121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;;
+121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;;
+121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;;
+121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;;
+121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;;
+121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;;
+121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;;
+121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;;
+121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;;
+121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;;
+121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;;
+121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;;
+121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;;
+121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;;
+121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;;
+121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;;
+121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;;
+121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;;
+121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;;
+121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;;
+121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
+121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;;
+121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;;
+121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;;
+121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;;
+121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;;
+121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
+121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;;
+121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;;
+121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;;
+121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;;
+121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
+121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;;
+121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;;
+121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;;
+121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;;
+121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;;
+121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;;
+121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;;
+121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;;
+121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;;
+121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;;
+121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;;
+121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;;
+12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;;
+12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;;
+12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;;
+12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;;
+12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;;
+12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;;
+12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
+1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;;
+1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;;
+1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;;
+1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;;
+12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;;
+12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;;
+12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;;
+12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;;
+12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;;
+12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;;
+12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;;
+12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;;
+12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;;
+12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;;
+1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;;
+1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;;
+1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;;
+1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;;
+1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;;
+1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;;
+12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;;
+12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;;
+12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;;
+12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;;
+12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;;
+12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;;
+12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;;
+12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;;
+1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;;
+1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;;
+1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;;
+1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;;
+1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;;
+1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;;
+12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;;
+12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;;
+12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;;
+12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;;
+12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;;
+12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;;
+12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;;
+12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;;
+1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;;
+1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;;
+1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;;
+1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;;
+1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;;
+1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;;
+12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;;
+12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;;
+12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;;
+12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;;
+12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;;
+12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;;
+12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;;
+12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;;
+12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;;
+12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;;
+1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;;
+1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;;
+1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;;
+1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;;
+1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;;
+1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;;
+12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;;
+12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;;
+12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
+12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
+12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
+1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;;
+1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;;
+12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;;
+12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;;
+12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;;
+12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;;
+12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;;
+12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;;
+12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
+12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;;
+12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;;
+1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;;
+1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;;
+1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;;
+1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;;
+1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;;
+12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;;
+12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;;
+12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
+12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;;
+12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;;
+12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;;
+12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
+12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;;
+1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;;
+1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;;
+1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;;
+1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;;
+1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;;
+1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;;
+12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;;
+12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;;
+12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;;
+12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;;
+12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;;
+12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;;
+12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;;
+12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;;
+12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;;
+12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;;
+1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;;
+1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;;
+1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;;
+1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;;
+1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;;
+1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;;
+12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;;
+12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;;
+12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;;
+12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;;
+12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;;
+12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;;
+12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;;
+12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;;
+12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;;
+12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;;
+1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;;
+1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;;
+1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;;
+1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;;
+1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;;
+1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;;
+122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;;
+122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;;
+122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;;
+122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;;
+122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;;
+122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;;
+122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;;
+122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;;
+122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;;
+122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;;
+122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;;
+122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;;
+122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;;
+122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;;
+122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;;
+122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;;
+122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;;
+122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;;
+122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;;
+122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;;
+122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;;
+122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;;
+122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
+122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;;
+122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;;
+122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;;
+122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;;
+122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;;
+122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;;
+122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;;
+122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;;
+122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;;
+122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;;
+122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;;
+122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;;
+122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;;
+122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;;
+122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;;
+122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;;
+122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;;
+122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;;
+122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;;
+122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;;
+122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
+122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;;
+122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;;
+122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;;
+122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;;
+122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;;
+122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;;
+122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;;
+122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;;
+122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;;
+122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;;
+122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;;
+122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;;
+122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;;
+122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;;
+122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;;
+122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;;
+122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;;
+122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;;
+122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;;
+122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;;
+122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;;
+122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;;
+122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;;
+122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;;
+122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;;
+122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;;
+122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;;
+122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;;
+122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;;
+122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;;
+122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;;
+122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;;
+122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;;
+122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;;
+122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;;
+122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;;
+122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;;
+122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;;
+122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;;
+122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;;
+122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;;
+122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;;
+122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;;
+122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;;
+122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;;
+122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;;
+122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;;
+122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;;
+122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;;
+122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;;
+12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;;
+12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;;
+12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;;
+12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;;
+12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;;
+12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;;
+12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;;
+12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;;
+1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;;
+1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;;
+1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;;
+1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;;
+1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;;
+1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;;
+12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;;
+12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;;
+12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;;
+12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;;
+12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;;
+12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;;
+12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;;
+12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
+12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;;
+12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;;
+1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;;
+1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;
+1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;;
+1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;;
+1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;;
+1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;;
+12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;;
+12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;;
+12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;;
+12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;;
+12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
+12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;;
+12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;;
+12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;;
+12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;;
+1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;;
+1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;;
+1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
+1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
+1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;;
+1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;;
+12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;;
+12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;;
+12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
+12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;;
+12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;;
+12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;;
+12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;;
+12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;;
+12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;;
+12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
+1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;;
+1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;;
+1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;;
+1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;;
+1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
+1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;;
+12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;;
+12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;;
+12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;;
+12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;;
+12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;;
+12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;;
+12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;;
+12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;;
+12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;;
+12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;;
+1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;;
+1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;;
+1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;;
+1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;;
+1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;;
+1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;;
+12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;;
+12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;;
+12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;;
+12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;;
+12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;;
+12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;;
+12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;;
+12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;;
+12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;;
+12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;;
+1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;;
+1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
+1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;;
+1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;;
+1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;;
+1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;;
+12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;;
+12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;;
+12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;;
+12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;;
+12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;;
+12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;;
+12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;;
+12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;;
+12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;;
+12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;;
+1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;;
+1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;;
+1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;;
+1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;;
+1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;;
+12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;;
+12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;;
+12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;;
+12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;;
+12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;;
+12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;;
+12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;;
+12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;;
+12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;;
+12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;;
+1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;;
+1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;;
+1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;;
+1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;;
+1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;;
+1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;;
+12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;;
+12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;;
+12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;;
+12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;;
+12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;;
+12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;;
+12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;;
+12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;;
+12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;;
+12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;;
+1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;;
+1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;;
+1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;;
+1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;;
+1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;;
+1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;;
+12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;;
+12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;;
+12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;;
+12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;;
+12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;;
+12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;;
+12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;;
+12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;;
+12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;;
+1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;;
+1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;;
+1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;;
+1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;;
+1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;;
+1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
+12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
+12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
+12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
+12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
+12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
+12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
+12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
+12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;;
+12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;;
+1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;;
+1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;;
+1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;;
+1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;;
+1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;;
+1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;;
+12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;;
+12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;;
+12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;;
+12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;;
+12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;;
+12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;;
+12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;;
+12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;;
+12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;;
+12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;;
+1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;;
+1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;;
+1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;;
+1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;;
+1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;;
+1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;;
+12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;;
+12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;;
+12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;;
+12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
+12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
+12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
+12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
+12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
+12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
+12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
+1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
+1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;;
+1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;;
+1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;;
+1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;;
+1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;;
+12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;;
+12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;;
+12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;;
+12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
+12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;;
+12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;;
+12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;;
+1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
+1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
+1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
+1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
+1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
+1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
+1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
+1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
+1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
+1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
+1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
+1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
+1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
+1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
+1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
+1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
+1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
+1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
+1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
+1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
+1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
+1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
+1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
+1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
+1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
+1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
+1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
+1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
+1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
+1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
+1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
+1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
+1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
+1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
+1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
+1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
+1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
+1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
+1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
+1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
+1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
+1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
+1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
+1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
+1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
+1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
+1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
+1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
+1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
+1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
+1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
+1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
+1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
+1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
+1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
+1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
+1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
+1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
+1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
+1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
+1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
+1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
+1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
+1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
+1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
+1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
+1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
+1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
+1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
+1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
+1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
+1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
+1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
+1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
+1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
+1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
+1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
+1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
+1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
+1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
+1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
+1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
+1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
+1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
+1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
+1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
+1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
+1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
+1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
+1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
+1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
+1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
+1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
+1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
+1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
+1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
+1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
+1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
+1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
+1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
+1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
+1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
+1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
+1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
+1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
+1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
+1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
+1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
+1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
+1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
+1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
+1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
+1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
+1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
+1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
+1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
+1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
+1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
+1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
+1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
+1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
+1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
+1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
+1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
+1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
+1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
+1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
+1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
+1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
+1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
+1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
+1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
+1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
+1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
+1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
+1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
+1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
+1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
+1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
+1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
+1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
+1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
+1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
+1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
+1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
+1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
+1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
+1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
+1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
+1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
+1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
+1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
+1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
+1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
+1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
+1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
+1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
+1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
+1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
+1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
+1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
+1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
+1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
+1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
+1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
+1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
+1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
+1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
+1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
+1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
+1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
+1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
+1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
+1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
+1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
+1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
+1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
+1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
+1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
+1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
+1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
+1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
+1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
+1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
+1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
+1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
+1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
+1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
+1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
+1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
+1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
+1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
+1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
+1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
+1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
+1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
+1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
+1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
+1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
+1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
+1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
+1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
+1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
+1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
+1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
+1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
+1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
+1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
+1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
+1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
+1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
+1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
+1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
+1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
+1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
+1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
+1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
+1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
+1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
+1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
+1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
+1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
+1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
+1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
+1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
+1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
+1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
+1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
+1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
+1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
+1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
+1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
+1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
+1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
+1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
+1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
+1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
+1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
+1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
+1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
+1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
+1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
+1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
+1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
+1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
+1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
+1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
+1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
+1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
+1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
+1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
+1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
+1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
+1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
+1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
+1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
+1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
+1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
+1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
+1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
+1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
+1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
+1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
+1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
+1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
+1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
+1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
+1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
+1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
+1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
+1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
+1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
+1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
+1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
+1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
+1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
+1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
+1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
+1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
+1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
+1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
+1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
+1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
+1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
+1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
+1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
+1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
+1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
+1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
+1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
+1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
+1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
+1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
+1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
+1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
+1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
+1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
+1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
+1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
+1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
+1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
+1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
+1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
+1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
+1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
+1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
+1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
+1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
+1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
+1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
+1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
+1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
+1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
+1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
+1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
+1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
+1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
+1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
+1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
+1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
+1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
+1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
+1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
+1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
+1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
+1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
+1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
+1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
+1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
+1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
+1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
+1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
+1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
+1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
+1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
+1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
+1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
+1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
+1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
+1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
+1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
+1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
+1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
+1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
+1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
+1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
+1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
+1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
+1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
+1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
+1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
+1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
+1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
+1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
+1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
+1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
+1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
+1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
+1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
+1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
+1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
+1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
+1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
+1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
+1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
+1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
+1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
+1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
+1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
+1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
+1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
+1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
+1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
+1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
+1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
+1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
+1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
+1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
+1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
+1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
+1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
+1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
+1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
+1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
+1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
+1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
+1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
+1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
+1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
+1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
+1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
+1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
+1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
+1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
+1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
+1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
+1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
+1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
+1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
+1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;
+1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;
+1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;
+1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;
+1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;
+1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;
+1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;
+1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;
+1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
+1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
+1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
+1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
+1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
+1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
+1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
+1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
+1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
+1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
+1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
+1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
+1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
+1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
+1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
+1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;
+1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;
+1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;
+1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;
+1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;
+1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;
+1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;
+1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;
+1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;
+1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;
+1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;
+1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;
+1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;
+1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;
+1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;
+1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;
+1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;
+1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
+1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
+1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
+1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
+1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
+1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;
+1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
+1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
+1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;;
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;;
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;;
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;;
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;;
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;;
+1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
+1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
+1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
+1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
+1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
+1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
+1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
+1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
+1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
+1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
+1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
+1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
+1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
+1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
+1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
+1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
+1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
+1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
+1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
+1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
+1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
+1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
+1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
+1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
+1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
+1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
+1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
+1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
+1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
+1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
+1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
+1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
+1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
+1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
+1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
+1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
+1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
+1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
+1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
+1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
+1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
+1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
+1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
+1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
+1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
+1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
+1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
+1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
+1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
+1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
+1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
+1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
+1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
+1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
+1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
+1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
+1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
+1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
+1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
+1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
+1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
+1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
+1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
+1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
+1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
+1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
+1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
+1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
+1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
+1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
+1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
+1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
+1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
+1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
+1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
+1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
+1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
+1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
+1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
+1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
+1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
+1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;;
+1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;;
+1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;;
+1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;;
+1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;;
+1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;;
+1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;;
+1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;;
+1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;;
+1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;;
+1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;;
+1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;;
+1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;;
+1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;;
+1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;;
+1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
+1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
+1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;
+1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
+1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L;<font> 2202;;;;Y;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;
+1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
+2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
+2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
+2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
+2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
+2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
+2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
+2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
+2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
+2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
+2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
+2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
+2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
+2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
+2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
+2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
+2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
+2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
+2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
+2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
+2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
+2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
+2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
+2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
+2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
+2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
+2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
+2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
+2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
+2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
+2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
+2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
+2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
+2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
+2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
+2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
+2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
+2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
+2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
+2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
+2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
+2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
+2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
+2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
+2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
+2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
+2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
+2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
+2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
+2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
+2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
+2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
+2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
+2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
+2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
+2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
+2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
+2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
+2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
+2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
+2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
+2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
+2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
+2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
+2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
+2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
+2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
+2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
+2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
+2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
+2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
+2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
+2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
+2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
+2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
+2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
+2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
+2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
+2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
+2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
+2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
+2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
+2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
+2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
+2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
+2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
+2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
+2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
+2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
+2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
+2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
+2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
+2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
+2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
+2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
+2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
+2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
+2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
+2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
+2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
+2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
+2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
+2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
+2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
+2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
+2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
+2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
+2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
+2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
+2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
+2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
+2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
+2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
+2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
+2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
+2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
+2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
+2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
+2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
+2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
+2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
+2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
+2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
+2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
+2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
+2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
+2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
+2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
+2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
+2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
+2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
+2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
+2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
+2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
+2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
+2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
+2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
+2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
+2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
+2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
+2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
+2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
+2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
+2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
+2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;;
+2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
+2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
+2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
+2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
+2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
+2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
+2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
+2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
+2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
+2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
+2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
+2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
+2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
+2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
+2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
+2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
+2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
+2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
+2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
+2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
+2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
+2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
+2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
+2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
+2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
+2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
+2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
+2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
+2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
+2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
+2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
+2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
+2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
+2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
+2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
+2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
+2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
+2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
+2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
+2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
+2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
+2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
+2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
+2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
+2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
+2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
+2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
+2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
+2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
+2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
+2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
+2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
+2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
+2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
+2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
+2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
+2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
+2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
+2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
+2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
+2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
+2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
+2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
+2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
+2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
+2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
+2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
+2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
+2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
+2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
+2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
+2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
+2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
+2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
+2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
+2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
+2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
+2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
+2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
+2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
+2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
+2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
+2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
+2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
+2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
+2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
+2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
+2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
+2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
+2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
+2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
+2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
+2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
+2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
+2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
+2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
+2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
+2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
+2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
+2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
+2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
+2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
+2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
+2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
+2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
+2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
+2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
+2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
+2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
+2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
+2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
+2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
+2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
+2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
+2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
+2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
+2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
+2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
+2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
+2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
+2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
+2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
+2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
+2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
+2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
+2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
+2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
+2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
+2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
+2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
+2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
+2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
+2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
+2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
+2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
+2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
+2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
+2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
+2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
+2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
+2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
+2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
+2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
+2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
+2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
+2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
+2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
+2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
+2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
+2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
+2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
+2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
+2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
+2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
+2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
+2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
+2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
+2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
+2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
+2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
+2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
+2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
+2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
+2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
+2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
+2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
+2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
+2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
+2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
+2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
+2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
+2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
+2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
+2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
+2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
+2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
+2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
+2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
+2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
+2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
+2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
+2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
+2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
+2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
+2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
+2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
+2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
+2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
+2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
+2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
+2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
+2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
+2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
+2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
+2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
+2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
+2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
+2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
+2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
+2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
+2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
+2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
+2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
+2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
+2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
+2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
+2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
+2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
+2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
+2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
+2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
+2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
+2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
+2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
+2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
+2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
+2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
+2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
+2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
+2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
+2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
+2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
+2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
+2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
+2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
+2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
+2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
+2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
+2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
+2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
+2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
+2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
+2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
+2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
+2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
+2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
+2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
+2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
+2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
+2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
+2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
+2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
+2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
+2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
+2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
+2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
+2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
+2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
+2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
+2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
+2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
+2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
+2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
+2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
+2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
+2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
+2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
+2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
+2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
+2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
+2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
+2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
+2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
+2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
+2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
+2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
+2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
+2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
+2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
+2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
+2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
+2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
+2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
+2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
+2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
+2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
+2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
+2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
+2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
+2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
+2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
+2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
+2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
+2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
+2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
+2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
+2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
+2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
+2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
+2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
+2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
+2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
+2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
+2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
+2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
+2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
+2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
+2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
+2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
+2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
+2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
+2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
+2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
+2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
+2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
+2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
+2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
+2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
+2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
+2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
+2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
+2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
+2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
+2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
+2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
+2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
+2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
+2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
+2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
+2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
+2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
+2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
+2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
+2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
+2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
+2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
+2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
+2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
+2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
+2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
+2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
+2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
+2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
+2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
+2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
+2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
+2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
+2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
+2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
+2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
+2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
+2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
+2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
+2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
+2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
+2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
+2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
+2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
+2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
+2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
+2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
+2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
+2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
+2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
+2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
+2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
+2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
+2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
+2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
+2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
+2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
+2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
+2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
+2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
+2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
+2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
+2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
+2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
+2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
+2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
+2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
+2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
+2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
+2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
+2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
+2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
+2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
+2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
+2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
+2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
+2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
+2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
+2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
+2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
+2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
+2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
+2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
+2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
+2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
+2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
+2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
+2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
+2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
+2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
+2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
+2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
+2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
+E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
+E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
+E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
+E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;;
+E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;;
+E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;;
+E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;;
+E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;;
+E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;;
+E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;;
+E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;;
+E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;;
+E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;;
+E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;;
+E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;;
+E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;;
+E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;;
+E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;;
+E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;;
+E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;;
+E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;;
+E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;;
+E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;;
+E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;;
+E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;;
+E003A;TAG COLON;Cf;0;BN;;;;;N;;;;;
+E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;;
+E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;;
+E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;;
+E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;;
+E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;;
+E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;;
+E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;;
+E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;;
+E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;;
+E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;;
+E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;;
+E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;;
+E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;;
+E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;;
+E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;;
+E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;;
+E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;;
+E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;;
+E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;;
+E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;;
+E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;;
+E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;;
+E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;;
+E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;;
+E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;;
+E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;;
+E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;;
+E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;;
+E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;;
+E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;;
+E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;;
+E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;;
+E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;;
+E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;;
+E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;;
+E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;;
+E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;;
+E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;;
+E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;;
+E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;;
+E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;;
+E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;;
+E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;;
+E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;;
+E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;;
+E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;;
+E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;;
+E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;;
+E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;;
+E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;;
+E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;;
+E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;;
+E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;;
+E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;;
+E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;;
+E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;;
+E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;;
+E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;;
+E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;;
+E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;;
+E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;;
+E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;;
+E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;;
+E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;;
+E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;;
+E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;;
+E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;;
+E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;;
+E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;;
+E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;;
+E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;;
+E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;;
+E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;;
+E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;;
+E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;;
+E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;;
+E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;;
+E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;;
+E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;;
+E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;;
+E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;;
+E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;;
+E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;;
+E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;;
+E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;;
+E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;;
+E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;;
+E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;;
+E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;;
+E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;;
+E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;;
+E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;;
+E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;;
+E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;;
+E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;;
+E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;;
+E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;;
+E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;;
+E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;;
+E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;;
+E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;;
+E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;;
+E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;;
+E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;;
+E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;;
+E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;;
+E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;;
+E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;;
+E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;;
+E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;;
+E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;;
+E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;;
+E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;;
+E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;;
+E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;;
+E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;;
+E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;;
+E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;;
+E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;;
+E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;;
+E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;;
+E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;;
+E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;;
+E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;;
+E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;;
+E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;;
+E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;;
+E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;;
+E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;;
+E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;;
+E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;;
+E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;;
+E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;;
+E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;;
+E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;;
+E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;;
+E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;;
+E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;;
+E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;;
+E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;;
+E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;;
+E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;;
+E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;;
+E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;;
+E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;;
+E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;;
+E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;;
+E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;;
+E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;;
+E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;;
+E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;;
+E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;;
+E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;;
+E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;;
+E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;;
+E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;;
+E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;;
+E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;;
+E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;;
+E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;;
+E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;;
+E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;;
+E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;;
+E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;;
+E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;;
+E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;;
+E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;;
+E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;;
+E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;;
+E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;;
+E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;;
+E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;;
+E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;;
+E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;;
+E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;;
+E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;;
+E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;;
+E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;;
+E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;;
+E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;;
+E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;;
+E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;;
+E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;;
+E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;;
+E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;;
+E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;;
+E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;;
+E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;;
+E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;;
+E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;;
+E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;;
+E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;;
+E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;;
+E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;;
+E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;;
+E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;;
+E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;;
+E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;;
+E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;;
+E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;;
+E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;;
+E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;;
+E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;;
+E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;;
+E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;;
+E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;;
+E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;;
+E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;;
+E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;;
+E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;;
+E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;;
+E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;;
+E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;;
+E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;;
+E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;;
+E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;;
+E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;;
+E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;;
+E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;;
+E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;;
+E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;;
+E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;;
+E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;;
+E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;;
+E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;;
+E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;;
+E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;;
+E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;;
+E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;;
+E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;;
+E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;;
+E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;;
+E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;;
+E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;;
+E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;;
+E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;;
+E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;;
+E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;;
+E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;;
+E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;;
+E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;;
+E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;;
+E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;;
+E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;;
+E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;;
+E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;;
+E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;;
+E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;;
+E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;;
+E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;;
+E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;;
+E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;;
+E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;;
+E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;;
+E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;;
+E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;;
+E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;;
+E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;;
+E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;;
+E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;;
+E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;;
+E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;;
+E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;;
+E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;;
+E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;;
+E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;;
+E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;;
+E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;;
+E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;;
+E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;;
+E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;;
+E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;;
+E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;;
+E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;;
+E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;;
+E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;;
+E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;;
+E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;;
+E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;;
+E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;;
+E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;;
+E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;;
+E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;;
+E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;;
+E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;;
+E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;;
+F0000;<Plane 15 Private Use, First>;Co;0;L;;;;;N;;;;;
+FFFFD;<Plane 15 Private Use, Last>;Co;0;L;;;;;N;;;;;
+100000;<Plane 16 Private Use, First>;Co;0;L;;;;;N;;;;;
+10FFFD;<Plane 16 Private Use, Last>;Co;0;L;;;;;N;;;;;
diff --git a/util/unicode/data/WordBreakProperty.txt b/util/unicode/data/WordBreakProperty.txt
new file mode 100644
index 0000000000..27b3b913bb
--- /dev/null
+++ b/util/unicode/data/WordBreakProperty.txt
@@ -0,0 +1,677 @@
+# WordBreakProperty-5.0.0.txt
+# Date: 2006-06-07, 23:23:03 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Property: Word_Break
+
+# All code points not explicitly listed for Word_Break
+# have the value Other (XX).
+
+# @missing: 0000..10FFFF; Other
+
+# ================================================
+
+00AD ; Format # Cf SOFT HYPHEN
+0600..0603 ; Format # Cf [4] ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
+06DD ; Format # Cf ARABIC END OF AYAH
+070F ; Format # Cf SYRIAC ABBREVIATION MARK
+17B4..17B5 ; Format # Cf [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+200B ; Format # Cf ZERO WIDTH SPACE
+200E..200F ; Format # Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
+202A..202E ; Format # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+2060..2063 ; Format # Cf [4] WORD JOINER..INVISIBLE SEPARATOR
+206A..206F ; Format # Cf [6] INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
+FEFF ; Format # Cf ZERO WIDTH NO-BREAK SPACE
+FFF9..FFFB ; Format # Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+1D173..1D17A ; Format # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+E0001 ; Format # Cf LANGUAGE TAG
+E0020..E007F ; Format # Cf [96] TAG SPACE..CANCEL TAG
+
+# Total code points: 201
+
+# ================================================
+
+0300..036F ; Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+0483..0486 ; Extend # Mn [4] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
+0488..0489 ; Extend # Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+0591..05BD ; Extend # Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+05BF ; Extend # Mn HEBREW POINT RAFE
+05C1..05C2 ; Extend # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5 ; Extend # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7 ; Extend # Mn HEBREW POINT QAMATS QATAN
+0610..0615 ; Extend # Mn [6] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
+064B..065E ; Extend # Mn [20] ARABIC FATHATAN..ARABIC FATHA WITH TWO DOTS
+0670 ; Extend # Mn ARABIC LETTER SUPERSCRIPT ALEF
+06D6..06DC ; Extend # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06DE ; Extend # Me ARABIC START OF RUB EL HIZB
+06DF..06E4 ; Extend # Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+06E7..06E8 ; Extend # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06EA..06ED ; Extend # Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+0711 ; Extend # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0730..074A ; Extend # Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+07A6..07B0 ; Extend # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07EB..07F3 ; Extend # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+0901..0902 ; Extend # Mn [2] DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+093C ; Extend # Mn DEVANAGARI SIGN NUKTA
+0941..0948 ; Extend # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+094D ; Extend # Mn DEVANAGARI SIGN VIRAMA
+0951..0954 ; Extend # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
+0962..0963 ; Extend # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0981 ; Extend # Mn BENGALI SIGN CANDRABINDU
+09BC ; Extend # Mn BENGALI SIGN NUKTA
+09BE ; Extend # Mc BENGALI VOWEL SIGN AA
+09C1..09C4 ; Extend # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09CD ; Extend # Mn BENGALI SIGN VIRAMA
+09D7 ; Extend # Mc BENGALI AU LENGTH MARK
+09E2..09E3 ; Extend # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+0A01..0A02 ; Extend # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A3C ; Extend # Mn GURMUKHI SIGN NUKTA
+0A41..0A42 ; Extend # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Extend # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4D ; Extend # Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+0A70..0A71 ; Extend # Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+0A81..0A82 ; Extend # Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+0ABC ; Extend # Mn GUJARATI SIGN NUKTA
+0AC1..0AC5 ; Extend # Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+0AC7..0AC8 ; Extend # Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+0ACD ; Extend # Mn GUJARATI SIGN VIRAMA
+0AE2..0AE3 ; Extend # Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+0B01 ; Extend # Mn ORIYA SIGN CANDRABINDU
+0B3C ; Extend # Mn ORIYA SIGN NUKTA
+0B3E ; Extend # Mc ORIYA VOWEL SIGN AA
+0B3F ; Extend # Mn ORIYA VOWEL SIGN I
+0B41..0B43 ; Extend # Mn [3] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC R
+0B4D ; Extend # Mn ORIYA SIGN VIRAMA
+0B56 ; Extend # Mn ORIYA AI LENGTH MARK
+0B57 ; Extend # Mc ORIYA AU LENGTH MARK
+0B82 ; Extend # Mn TAMIL SIGN ANUSVARA
+0BBE ; Extend # Mc TAMIL VOWEL SIGN AA
+0BC0 ; Extend # Mn TAMIL VOWEL SIGN II
+0BCD ; Extend # Mn TAMIL SIGN VIRAMA
+0BD7 ; Extend # Mc TAMIL AU LENGTH MARK
+0C3E..0C40 ; Extend # Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+0C46..0C48 ; Extend # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+0C4A..0C4D ; Extend # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+0C55..0C56 ; Extend # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+0CBC ; Extend # Mn KANNADA SIGN NUKTA
+0CBF ; Extend # Mn KANNADA VOWEL SIGN I
+0CC2 ; Extend # Mc KANNADA VOWEL SIGN UU
+0CC6 ; Extend # Mn KANNADA VOWEL SIGN E
+0CCC..0CCD ; Extend # Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+0CD5..0CD6 ; Extend # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0CE2..0CE3 ; Extend # Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+0D3E ; Extend # Mc MALAYALAM VOWEL SIGN AA
+0D41..0D43 ; Extend # Mn [3] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC R
+0D4D ; Extend # Mn MALAYALAM SIGN VIRAMA
+0D57 ; Extend # Mc MALAYALAM AU LENGTH MARK
+0DCA ; Extend # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; Extend # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DD2..0DD4 ; Extend # Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; Extend # Mn SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DDF ; Extend # Mc SINHALA VOWEL SIGN GAYANUKITTA
+0E31 ; Extend # Mn THAI CHARACTER MAI HAN-AKAT
+0E34..0E3A ; Extend # Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+0E47..0E4E ; Extend # Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+0EB1 ; Extend # Mn LAO VOWEL SIGN MAI KAN
+0EB4..0EB9 ; Extend # Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+0EBB..0EBC ; Extend # Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+0EC8..0ECD ; Extend # Mn [6] LAO TONE MAI EK..LAO NIGGAHITA
+0F18..0F19 ; Extend # Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F35 ; Extend # Mn TIBETAN MARK NGAS BZUNG NYI ZLA
+0F37 ; Extend # Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F39 ; Extend # Mn TIBETAN MARK TSA -PHRU
+0F71..0F7E ; Extend # Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+0F80..0F84 ; Extend # Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+0F86..0F87 ; Extend # Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+0F90..0F97 ; Extend # Mn [8] TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER JA
+0F99..0FBC ; Extend # Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0FC6 ; Extend # Mn TIBETAN SYMBOL PADMA GDAN
+102D..1030 ; Extend # Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+1032 ; Extend # Mn MYANMAR VOWEL SIGN AI
+1036..1037 ; Extend # Mn [2] MYANMAR SIGN ANUSVARA..MYANMAR SIGN DOT BELOW
+1039 ; Extend # Mn MYANMAR SIGN VIRAMA
+1058..1059 ; Extend # Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+135F ; Extend # Mn ETHIOPIC COMBINING GEMINATION MARK
+1712..1714 ; Extend # Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+1732..1734 ; Extend # Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
+1752..1753 ; Extend # Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+1772..1773 ; Extend # Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+17B7..17BD ; Extend # Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+17C6 ; Extend # Mn KHMER SIGN NIKAHIT
+17C9..17D3 ; Extend # Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+17DD ; Extend # Mn KHMER SIGN ATTHACAN
+180B..180D ; Extend # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+18A9 ; Extend # Mn MONGOLIAN LETTER ALI GALI DAGALGA
+1920..1922 ; Extend # Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+1927..1928 ; Extend # Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+1932 ; Extend # Mn LIMBU SMALL LETTER ANUSVARA
+1939..193B ; Extend # Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+1A17..1A18 ; Extend # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+1B00..1B03 ; Extend # Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+1B34 ; Extend # Mn BALINESE SIGN REREKAN
+1B36..1B3A ; Extend # Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+1B3C ; Extend # Mn BALINESE VOWEL SIGN LA LENGA
+1B42 ; Extend # Mn BALINESE VOWEL SIGN PEPET
+1B6B..1B73 ; Extend # Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+1DC0..1DCA ; Extend # Mn [11] COMBINING DOTTED GRAVE ACCENT..COMBINING LATIN SMALL LETTER R BELOW
+1DFE..1DFF ; Extend # Mn [2] COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C..200D ; Extend # Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+20D0..20DC ; Extend # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20DD..20E0 ; Extend # Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+20E1 ; Extend # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E2..20E4 ; Extend # Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+20E5..20EF ; Extend # Mn [11] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW
+302A..302F ; Extend # Mn [6] IDEOGRAPHIC LEVEL TONE MARK..HANGUL DOUBLE DOT TONE MARK
+3099..309A ; Extend # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+A806 ; Extend # Mn SYLOTI NAGRI SIGN HASANTA
+A80B ; Extend # Mn SYLOTI NAGRI SIGN ANUSVARA
+A825..A826 ; Extend # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+FB1E ; Extend # Mn HEBREW POINT JUDEO-SPANISH VARIKA
+FE00..FE0F ; Extend # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+FE20..FE23 ; Extend # Mn [4] COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
+10A01..10A03 ; Extend # Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05..10A06 ; Extend # Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+10A0C..10A0F ; Extend # Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+10A38..10A3A ; Extend # Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+10A3F ; Extend # Mn KHAROSHTHI VIRAMA
+1D165 ; Extend # Mc MUSICAL SYMBOL COMBINING STEM
+1D167..1D169 ; Extend # Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16E..1D172 ; Extend # Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+1D17B..1D182 ; Extend # Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+1D185..1D18B ; Extend # Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D1AA..1D1AD ; Extend # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D242..1D244 ; Extend # Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+
+# Total code points: 136
+
+# ================================================
+
+3031..3035 ; Katakana # Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+309B..309C ; Katakana # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+30A0 ; Katakana # Pd KATAKANA-HIRAGANA DOUBLE HYPHEN
+30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+30FC..30FE ; Katakana # Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO
+31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; Katakana # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; Katakana # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+
+# Total code points: 176
+
+# ================================================
+
+0041..005A ; ALetter # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+0061..007A ; ALetter # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA ; ALetter # L& FEMININE ORDINAL INDICATOR
+00B5 ; ALetter # L& MICRO SIGN
+00BA ; ALetter # L& MASCULINE ORDINAL INDICATOR
+00C0..00D6 ; ALetter # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00F6 ; ALetter # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..01BA ; ALetter # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+01BB ; ALetter # Lo LATIN LETTER TWO WITH STROKE
+01BC..01BF ; ALetter # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+01C0..01C3 ; ALetter # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+01C4..0293 ; ALetter # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+0294 ; ALetter # Lo LATIN LETTER GLOTTAL STOP
+0295..02AF ; ALetter # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0..02C1 ; ALetter # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C6..02D1 ; ALetter # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02E0..02E4 ; ALetter # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02EE ; ALetter # Lm MODIFIER LETTER DOUBLE APOSTROPHE
+037A ; ALetter # Lm GREEK YPOGEGRAMMENI
+037B..037D ; ALetter # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0386 ; ALetter # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; ALetter # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; ALetter # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..03A1 ; ALetter # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+03A3..03CE ; ALetter # L& [44] GREEK CAPITAL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03F5 ; ALetter # L& [38] GREEK BETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F7..0481 ; ALetter # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+048A..0513 ; ALetter # L& [138] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH HOOK
+0531..0556 ; ALetter # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+0559 ; ALetter # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
+0561..0587 ; ALetter # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+05D0..05EA ; ALetter # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2 ; ALetter # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+05F3 ; ALetter # Po HEBREW PUNCTUATION GERESH
+0621..063A ; ALetter # Lo [26] ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
+0640 ; ALetter # Lm ARABIC TATWEEL
+0641..064A ; ALetter # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+066E..066F ; ALetter # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0671..06D3 ; ALetter # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D5 ; ALetter # Lo ARABIC LETTER AE
+06E5..06E6 ; ALetter # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+06EE..06EF ; ALetter # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06FA..06FC ; ALetter # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FF ; ALetter # Lo ARABIC LETTER HEH WITH INVERTED V
+0710 ; ALetter # Lo SYRIAC LETTER ALAPH
+0712..072F ; ALetter # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+074D..076D ; ALetter # Lo [33] SYRIAC LETTER SOGDIAN ZHAIN..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+0780..07A5 ; ALetter # Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU
+07B1 ; ALetter # Lo THAANA LETTER NAA
+07CA..07EA ; ALetter # Lo [33] NKO LETTER A..NKO LETTER JONA RA
+07F4..07F5 ; ALetter # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07FA ; ALetter # Lm NKO LAJANYALAN
+0903 ; ALetter # Mc DEVANAGARI SIGN VISARGA
+0904..0939 ; ALetter # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093D ; ALetter # Lo DEVANAGARI SIGN AVAGRAHA
+093E..0940 ; ALetter # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0949..094C ; ALetter # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+0950 ; ALetter # Lo DEVANAGARI OM
+0958..0961 ; ALetter # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+097B..097F ; ALetter # Lo [5] DEVANAGARI LETTER GGA..DEVANAGARI LETTER BBA
+0982..0983 ; ALetter # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+0985..098C ; ALetter # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; ALetter # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; ALetter # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; ALetter # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; ALetter # Lo BENGALI LETTER LA
+09B6..09B9 ; ALetter # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BD ; ALetter # Lo BENGALI SIGN AVAGRAHA
+09BF..09C0 ; ALetter # Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II
+09C7..09C8 ; ALetter # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; ALetter # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09CE ; ALetter # Lo BENGALI LETTER KHANDA TA
+09DC..09DD ; ALetter # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; ALetter # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09F0..09F1 ; ALetter # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+0A03 ; ALetter # Mc GURMUKHI SIGN VISARGA
+0A05..0A0A ; ALetter # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; ALetter # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; ALetter # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; ALetter # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; ALetter # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; ALetter # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; ALetter # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A3E..0A40 ; ALetter # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A59..0A5C ; ALetter # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+0A5E ; ALetter # Lo GURMUKHI LETTER FA
+0A72..0A74 ; ALetter # Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+0A83 ; ALetter # Mc GUJARATI SIGN VISARGA
+0A85..0A8D ; ALetter # Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+0A8F..0A91 ; ALetter # Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+0A93..0AA8 ; ALetter # Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA
+0AAA..0AB0 ; ALetter # Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+0AB2..0AB3 ; ALetter # Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+0AB5..0AB9 ; ALetter # Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+0ABD ; ALetter # Lo GUJARATI SIGN AVAGRAHA
+0ABE..0AC0 ; ALetter # Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+0AC9 ; ALetter # Mc GUJARATI VOWEL SIGN CANDRA O
+0ACB..0ACC ; ALetter # Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+0AD0 ; ALetter # Lo GUJARATI OM
+0AE0..0AE1 ; ALetter # Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+0B02..0B03 ; ALetter # Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+0B05..0B0C ; ALetter # Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+0B0F..0B10 ; ALetter # Lo [2] ORIYA LETTER E..ORIYA LETTER AI
+0B13..0B28 ; ALetter # Lo [22] ORIYA LETTER O..ORIYA LETTER NA
+0B2A..0B30 ; ALetter # Lo [7] ORIYA LETTER PA..ORIYA LETTER RA
+0B32..0B33 ; ALetter # Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA
+0B35..0B39 ; ALetter # Lo [5] ORIYA LETTER VA..ORIYA LETTER HA
+0B3D ; ALetter # Lo ORIYA SIGN AVAGRAHA
+0B40 ; ALetter # Mc ORIYA VOWEL SIGN II
+0B47..0B48 ; ALetter # Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+0B4B..0B4C ; ALetter # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; ALetter # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B5F..0B61 ; ALetter # Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+0B71 ; ALetter # Lo ORIYA LETTER WA
+0B83 ; ALetter # Lo TAMIL SIGN VISARGA
+0B85..0B8A ; ALetter # Lo [6] TAMIL LETTER A..TAMIL LETTER UU
+0B8E..0B90 ; ALetter # Lo [3] TAMIL LETTER E..TAMIL LETTER AI
+0B92..0B95 ; ALetter # Lo [4] TAMIL LETTER O..TAMIL LETTER KA
+0B99..0B9A ; ALetter # Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA
+0B9C ; ALetter # Lo TAMIL LETTER JA
+0B9E..0B9F ; ALetter # Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+0BA3..0BA4 ; ALetter # Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA
+0BA8..0BAA ; ALetter # Lo [3] TAMIL LETTER NA..TAMIL LETTER PA
+0BAE..0BB9 ; ALetter # Lo [12] TAMIL LETTER MA..TAMIL LETTER HA
+0BBF ; ALetter # Mc TAMIL VOWEL SIGN I
+0BC1..0BC2 ; ALetter # Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+0BC6..0BC8 ; ALetter # Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+0BCA..0BCC ; ALetter # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C01..0C03 ; ALetter # Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+0C05..0C0C ; ALetter # Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+0C0E..0C10 ; ALetter # Lo [3] TELUGU LETTER E..TELUGU LETTER AI
+0C12..0C28 ; ALetter # Lo [23] TELUGU LETTER O..TELUGU LETTER NA
+0C2A..0C33 ; ALetter # Lo [10] TELUGU LETTER PA..TELUGU LETTER LLA
+0C35..0C39 ; ALetter # Lo [5] TELUGU LETTER VA..TELUGU LETTER HA
+0C41..0C44 ; ALetter # Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+0C60..0C61 ; ALetter # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C82..0C83 ; ALetter # Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+0C85..0C8C ; ALetter # Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+0C8E..0C90 ; ALetter # Lo [3] KANNADA LETTER E..KANNADA LETTER AI
+0C92..0CA8 ; ALetter # Lo [23] KANNADA LETTER O..KANNADA LETTER NA
+0CAA..0CB3 ; ALetter # Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA
+0CB5..0CB9 ; ALetter # Lo [5] KANNADA LETTER VA..KANNADA LETTER HA
+0CBD ; ALetter # Lo KANNADA SIGN AVAGRAHA
+0CBE ; ALetter # Mc KANNADA VOWEL SIGN AA
+0CC0..0CC1 ; ALetter # Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+0CC3..0CC4 ; ALetter # Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
+0CC7..0CC8 ; ALetter # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; ALetter # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0CDE ; ALetter # Lo KANNADA LETTER FA
+0CE0..0CE1 ; ALetter # Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+0D02..0D03 ; ALetter # Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+0D05..0D0C ; ALetter # Lo [8] MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
+0D0E..0D10 ; ALetter # Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+0D12..0D28 ; ALetter # Lo [23] MALAYALAM LETTER O..MALAYALAM LETTER NA
+0D2A..0D39 ; ALetter # Lo [16] MALAYALAM LETTER PA..MALAYALAM LETTER HA
+0D3F..0D40 ; ALetter # Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
+0D46..0D48 ; ALetter # Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+0D4A..0D4C ; ALetter # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0D60..0D61 ; ALetter # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
+0D82..0D83 ; ALetter # Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+0D85..0D96 ; ALetter # Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+0D9A..0DB1 ; ALetter # Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+0DB3..0DBB ; ALetter # Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+0DBD ; ALetter # Lo SINHALA LETTER DANTAJA LAYANNA
+0DC0..0DC6 ; ALetter # Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+0DD0..0DD1 ; ALetter # Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD8..0DDE ; ALetter # Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DF2..0DF3 ; ALetter # Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0F00 ; ALetter # Lo TIBETAN SYLLABLE OM
+0F40..0F47 ; ALetter # Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+0F49..0F6A ; ALetter # Lo [34] TIBETAN LETTER NYA..TIBETAN LETTER FIXED-FORM RA
+0F7F ; ALetter # Mc TIBETAN SIGN RNAM BCAD
+0F88..0F8B ; ALetter # Lo [4] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN GRU MED RGYINGS
+10A0..10C5 ; ALetter # L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+10D0..10FA ; ALetter # Lo [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+10FC ; ALetter # Lm MODIFIER LETTER GEORGIAN NAR
+1100..1159 ; ALetter # Lo [90] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
+115F..11A2 ; ALetter # Lo [68] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG SSANGARAEA
+11A8..11F9 ; ALetter # Lo [82] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
+1200..1248 ; ALetter # Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA
+124A..124D ; ALetter # Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+1250..1256 ; ALetter # Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+1258 ; ALetter # Lo ETHIOPIC SYLLABLE QHWA
+125A..125D ; ALetter # Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+1260..1288 ; ALetter # Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+128A..128D ; ALetter # Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+1290..12B0 ; ALetter # Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+12B2..12B5 ; ALetter # Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+12B8..12BE ; ALetter # Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+12C0 ; ALetter # Lo ETHIOPIC SYLLABLE KXWA
+12C2..12C5 ; ALetter # Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+12C8..12D6 ; ALetter # Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8..1310 ; ALetter # Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+1312..1315 ; ALetter # Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+1318..135A ; ALetter # Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+1380..138F ; ALetter # Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+13A0..13F4 ; ALetter # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV
+1401..166C ; ALetter # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+166F..1676 ; ALetter # Lo [8] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
+1681..169A ; ALetter # Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+16A0..16EA ; ALetter # Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+16EE..16F0 ; ALetter # Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+1700..170C ; ALetter # Lo [13] TAGALOG LETTER A..TAGALOG LETTER YA
+170E..1711 ; ALetter # Lo [4] TAGALOG LETTER LA..TAGALOG LETTER HA
+1720..1731 ; ALetter # Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA
+1740..1751 ; ALetter # Lo [18] BUHID LETTER A..BUHID LETTER HA
+1760..176C ; ALetter # Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+176E..1770 ; ALetter # Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+1820..1842 ; ALetter # Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+1843 ; ALetter # Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1844..1877 ; ALetter # Lo [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
+1880..18A8 ; ALetter # Lo [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1900..191C ; ALetter # Lo [29] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
+1923..1926 ; ALetter # Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+1929..192B ; ALetter # Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+1930..1931 ; ALetter # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+1933..1938 ; ALetter # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+1A00..1A16 ; ALetter # Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+1A19..1A1B ; ALetter # Mc [3] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN AE
+1B04 ; ALetter # Mc BALINESE SIGN BISAH
+1B05..1B33 ; ALetter # Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+1B35 ; ALetter # Mc BALINESE VOWEL SIGN TEDUNG
+1B3B ; ALetter # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D..1B41 ; ALetter # Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; ALetter # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1B45..1B4B ; ALetter # Lo [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
+1D00..1D2B ; ALetter # L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+1D2C..1D61 ; ALetter # Lm [54] MODIFIER LETTER CAPITAL A..MODIFIER LETTER SMALL CHI
+1D62..1D77 ; ALetter # L& [22] LATIN SUBSCRIPT SMALL LETTER I..LATIN SMALL LETTER TURNED G
+1D78 ; ALetter # Lm MODIFIER LETTER CYRILLIC EN
+1D79..1D9A ; ALetter # L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+1D9B..1DBF ; ALetter # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E00..1E9B ; ALetter # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; ALetter # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; ALetter # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; ALetter # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; ALetter # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; ALetter # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; ALetter # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; ALetter # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; ALetter # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; ALetter # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; ALetter # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBE ; ALetter # L& GREEK PROSGEGRAMMENI
+1FC2..1FC4 ; ALetter # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; ALetter # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FD0..1FD3 ; ALetter # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; ALetter # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE0..1FEC ; ALetter # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FF2..1FF4 ; ALetter # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; ALetter # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+2071 ; ALetter # L& SUPERSCRIPT LATIN SMALL LETTER I
+207F ; ALetter # L& SUPERSCRIPT LATIN SMALL LETTER N
+2090..2094 ; ALetter # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+2102 ; ALetter # L& DOUBLE-STRUCK CAPITAL C
+2107 ; ALetter # L& EULER CONSTANT
+210A..2113 ; ALetter # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; ALetter # L& DOUBLE-STRUCK CAPITAL N
+2119..211D ; ALetter # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2124 ; ALetter # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; ALetter # L& OHM SIGN
+2128 ; ALetter # L& BLACK-LETTER CAPITAL Z
+212A..212D ; ALetter # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2134 ; ALetter # L& [6] SCRIPT SMALL E..SCRIPT SMALL O
+2135..2138 ; ALetter # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; ALetter # L& INFORMATION SOURCE
+213C..213F ; ALetter # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2145..2149 ; ALetter # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+214E ; ALetter # L& TURNED SMALL F
+2160..2182 ; ALetter # Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+2183..2184 ; ALetter # L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+24B6..24E9 ; ALetter # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
+2C00..2C2E ; ALetter # L& [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C30..2C5E ; ALetter # L& [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C60..2C6C ; ALetter # L& [13] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN SMALL LETTER Z WITH DESCENDER
+2C74..2C77 ; ALetter # L& [4] LATIN SMALL LETTER V WITH CURL..LATIN SMALL LETTER TAILLESS PHI
+2C80..2CE4 ; ALetter # L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI
+2D00..2D25 ; ALetter # L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+2D30..2D65 ; ALetter # Lo [54] TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
+2D6F ; ALetter # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2D80..2D96 ; ALetter # Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+2DA0..2DA6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+2DA8..2DAE ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+2DB0..2DB6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+2DB8..2DBE ; ALetter # Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+2DC0..2DC6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+2DC8..2DCE ; ALetter # Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+2DD0..2DD6 ; ALetter # Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+2DD8..2DDE ; ALetter # Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+3005 ; ALetter # Lm IDEOGRAPHIC ITERATION MARK
+303B ; ALetter # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
+303C ; ALetter # Lo MASU MARK
+3105..312C ; ALetter # Lo [40] BOPOMOFO LETTER B..BOPOMOFO LETTER GN
+3131..318E ; ALetter # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+31A0..31B7 ; ALetter # Lo [24] BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
+A000..A014 ; ALetter # Lo [21] YI SYLLABLE IT..YI SYLLABLE E
+A015 ; ALetter # Lm YI SYLLABLE WU
+A016..A48C ; ALetter # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+A717..A71A ; ALetter # Lm [4] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE
+A800..A801 ; ALetter # Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I
+A803..A805 ; ALetter # Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+A807..A80A ; ALetter # Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+A80C..A822 ; ALetter # Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+A823..A824 ; ALetter # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+A827 ; ALetter # Mc SYLOTI NAGRI VOWEL SIGN OO
+A840..A873 ; ALetter # Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+AC00..D7A3 ; ALetter # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FA30..FA6A ; ALetter # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FB00..FB06 ; ALetter # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; ALetter # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; ALetter # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; ALetter # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB2A..FB36 ; ALetter # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; ALetter # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; ALetter # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; ALetter # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; ALetter # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; ALetter # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; ALetter # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; ALetter # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; ALetter # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; ALetter # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FE70..FE74 ; ALetter # Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; ALetter # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF21..FF3A ; ALetter # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF41..FF5A ; ALetter # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FFA0..FFBE ; ALetter # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; ALetter # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; ALetter # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+10000..1000B ; ALetter # Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+1000D..10026 ; ALetter # Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+10028..1003A ; ALetter # Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+1003C..1003D ; ALetter # Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+1003F..1004D ; ALetter # Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+10050..1005D ; ALetter # Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+10080..100FA ; ALetter # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+10140..10174 ; ALetter # Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10300..1031E ; ALetter # Lo [31] OLD ITALIC LETTER A..OLD ITALIC LETTER UU
+10330..10340 ; ALetter # Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
+10341 ; ALetter # Nl GOTHIC LETTER NINETY
+10342..10349 ; ALetter # Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+1034A ; ALetter # Nl GOTHIC LETTER NINE HUNDRED
+10380..1039D ; ALetter # Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+103A0..103C3 ; ALetter # Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+103C8..103CF ; ALetter # Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+103D1..103D5 ; ALetter # Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+10400..1044F ; ALetter # L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+10450..1049D ; ALetter # Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+10800..10805 ; ALetter # Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+10808 ; ALetter # Lo CYPRIOT SYLLABLE JO
+1080A..10835 ; ALetter # Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+10837..10838 ; ALetter # Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+1083C ; ALetter # Lo CYPRIOT SYLLABLE ZA
+1083F ; ALetter # Lo CYPRIOT SYLLABLE ZO
+10900..10915 ; ALetter # Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+10A00 ; ALetter # Lo KHAROSHTHI LETTER A
+10A10..10A13 ; ALetter # Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+10A15..10A17 ; ALetter # Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+10A19..10A33 ; ALetter # Lo [27] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
+12000..1236E ; ALetter # Lo [879] CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
+12400..12462 ; ALetter # Nl [99] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+1D400..1D454 ; ALetter # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; ALetter # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; ALetter # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; ALetter # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; ALetter # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; ALetter # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; ALetter # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; ALetter # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; ALetter # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; ALetter # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; ALetter # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; ALetter # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; ALetter # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; ALetter # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; ALetter # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; ALetter # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; ALetter # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; ALetter # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; ALetter # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; ALetter # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C2..1D6DA ; ALetter # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DC..1D6FA ; ALetter # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FC..1D714 ; ALetter # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D716..1D734 ; ALetter # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D736..1D74E ; ALetter # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D750..1D76E ; ALetter # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D770..1D788 ; ALetter # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D78A..1D7A8 ; ALetter # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7AA..1D7C2 ; ALetter # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C4..1D7CB ; ALetter # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+
+# Total code points: 21149
+
+# ================================================
+
+0027 ; MidLetter # Po APOSTROPHE
+003A ; MidLetter # Po COLON
+00B7 ; MidLetter # Po MIDDLE DOT
+05F4 ; MidLetter # Po HEBREW PUNCTUATION GERSHAYIM
+2019 ; MidLetter # Pf RIGHT SINGLE QUOTATION MARK
+2027 ; MidLetter # Po HYPHENATION POINT
+
+# Total code points: 6
+
+# ================================================
+
+002C ; MidNum # Po COMMA
+002E ; MidNum # Po FULL STOP
+003B ; MidNum # Po SEMICOLON
+037E ; MidNum # Po GREEK QUESTION MARK
+0589 ; MidNum # Po ARMENIAN FULL STOP
+060D ; MidNum # Po ARABIC DATE SEPARATOR
+07F8 ; MidNum # Po NKO COMMA
+2044 ; MidNum # Sm FRACTION SLASH
+FE10 ; MidNum # Po PRESENTATION FORM FOR VERTICAL COMMA
+FE13..FE14 ; MidNum # Po [2] PRESENTATION FORM FOR VERTICAL COLON..PRESENTATION FORM FOR VERTICAL SEMICOLON
+
+# Total code points: 11
+
+# ================================================
+
+0030..0039 ; Numeric # Nd [10] DIGIT ZERO..DIGIT NINE
+0660..0669 ; Numeric # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+066B..066C ; Numeric # Po [2] ARABIC DECIMAL SEPARATOR..ARABIC THOUSANDS SEPARATOR
+06F0..06F9 ; Numeric # Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+07C0..07C9 ; Numeric # Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE
+0966..096F ; Numeric # Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+09E6..09EF ; Numeric # Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+0A66..0A6F ; Numeric # Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+0AE6..0AEF ; Numeric # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+0B66..0B6F ; Numeric # Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+0BE6..0BEF ; Numeric # Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+0C66..0C6F ; Numeric # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0CE6..0CEF ; Numeric # Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+0D66..0D6F ; Numeric # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+0E50..0E59 ; Numeric # Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE
+0ED0..0ED9 ; Numeric # Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE
+0F20..0F29 ; Numeric # Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+1040..1049 ; Numeric # Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+17E0..17E9 ; Numeric # Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+1810..1819 ; Numeric # Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+1946..194F ; Numeric # Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+19D0..19D9 ; Numeric # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+1B50..1B59 ; Numeric # Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+104A0..104A9 ; Numeric # Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+1D7CE..1D7FF ; Numeric # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+
+# Total code points: 282
+
+# ================================================
+
+005F ; ExtendNumLet # Pc LOW LINE
+203F..2040 ; ExtendNumLet # Pc [2] UNDERTIE..CHARACTER TIE
+2054 ; ExtendNumLet # Pc INVERTED UNDERTIE
+FE33..FE34 ; ExtendNumLet # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE4D..FE4F ; ExtendNumLet # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FF3F ; ExtendNumLet # Pc FULLWIDTH LOW LINE
+
+# Total code points: 10
+
+# EOF
diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp
new file mode 100644
index 0000000000..fa6ca8b8df
--- /dev/null
+++ b/util/unicode/main.cpp
@@ -0,0 +1,2524 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <qlist.h>
+#include <qhash.h>
+#include <qfile.h>
+#include <qstring.h>
+#include <qchar.h>
+#include <private/qunicodetables_p.h>
+#include <qvector.h>
+#include <qdebug.h>
+
+
+static struct AgeMap {
+ const char *age;
+ const QChar::UnicodeVersion version;
+} ageMap [] = {
+ { "1.1", QChar::Unicode_1_1 },
+ { "2.0", QChar::Unicode_2_0 },
+ { "2.1", QChar::Unicode_2_1_2 },
+ { "3.0", QChar::Unicode_3_0 },
+ { "3.1", QChar::Unicode_3_1 },
+ { "3.2", QChar::Unicode_3_2 },
+ { "4.0", QChar::Unicode_4_0 },
+ { "4.1", QChar::Unicode_4_1 },
+ { "5.0", QChar::Unicode_5_0 },
+ { 0, QChar::Unicode_Unassigned }
+};
+#define CURRENT_UNICODE_VERSION "QChar::Unicode_5_0"
+
+static const char *grapheme_break_string =
+ " enum GraphemeBreak {\n"
+ " GraphemeBreakOther, \n"
+ " GraphemeBreakCR,\n"
+ " GraphemeBreakLF,\n"
+ " GraphemeBreakControl,\n"
+ " GraphemeBreakExtend,\n"
+ " GraphemeBreakL,\n"
+ " GraphemeBreakV,\n"
+ " GraphemeBreakT,\n"
+ " GraphemeBreakLV,\n"
+ " GraphemeBreakLVT\n"
+ " };\n\n";
+
+enum GraphemeBreak {
+ GraphemeBreakOther,
+ GraphemeBreakCR,
+ GraphemeBreakLF,
+ GraphemeBreakControl,
+ GraphemeBreakExtend,
+ GraphemeBreakL,
+ GraphemeBreakV,
+ GraphemeBreakT,
+ GraphemeBreakLV,
+ GraphemeBreakLVT
+};
+
+QHash<QByteArray, GraphemeBreak> grapheme_break_map;
+
+static void initGraphemeBreak()
+{
+ struct GraphemeBreakList {
+ GraphemeBreak brk;
+ const char *name;
+ } breaks[] = {
+ { GraphemeBreakOther, "Other" },
+ { GraphemeBreakCR, "CR" },
+ { GraphemeBreakLF, "LF" },
+ { GraphemeBreakControl, "Control" },
+ { GraphemeBreakExtend, "Extend" },
+ { GraphemeBreakL, "L" },
+ { GraphemeBreakV, "V" },
+ { GraphemeBreakT, "T" },
+ { GraphemeBreakLV, "LV" },
+ { GraphemeBreakLVT, "LVT" },
+ { GraphemeBreakOther, 0 }
+ };
+ GraphemeBreakList *d = breaks;
+ while (d->name) {
+ grapheme_break_map.insert(d->name, d->brk);
+ ++d;
+ }
+}
+
+const char *word_break_string =
+ " enum WordBreak {\n"
+ " WordBreakOther,\n"
+ " WordBreakFormat,\n"
+ " WordBreakKatakana,\n"
+ " WordBreakALetter,\n"
+ " WordBreakMidLetter,\n"
+ " WordBreakMidNum,\n"
+ " WordBreakNumeric,\n"
+ " WordBreakExtendNumLet\n"
+ " };\n\n";
+
+enum WordBreak {
+ WordBreakOther,
+ WordBreakFormat,
+ WordBreakKatakana,
+ WordBreakALetter,
+ WordBreakMidLetter,
+ WordBreakMidNum,
+ WordBreakNumeric,
+ WordBreakExtendNumLet
+};
+
+
+QHash<QByteArray, WordBreak> word_break_map;
+
+static void initWordBreak()
+{
+ struct WordBreakList {
+ WordBreak brk;
+ const char *name;
+ } breaks[] = {
+ { WordBreakFormat, "Format" },
+ { WordBreakFormat, "Extend" }, // these are copied in from GraphemeBreakProperty.txt
+ { WordBreakKatakana, "Katakana" },
+ { WordBreakALetter, "ALetter" },
+ { WordBreakMidLetter, "MidLetter" },
+ { WordBreakMidNum, "MidNum" },
+ { WordBreakNumeric, "Numeric" },
+ { WordBreakExtendNumLet, "ExtendNumLet" },
+ { WordBreakFormat, 0 }
+ };
+ WordBreakList *d = breaks;
+ while (d->name) {
+ word_break_map.insert(d->name, d->brk);
+ ++d;
+ }
+}
+
+
+static const char *sentence_break_string =
+ " enum SentenceBreak {\n"
+ " SentenceBreakOther,\n"
+ " SentenceBreakSep,\n"
+ " SentenceBreakFormat,\n"
+ " SentenceBreakSp,\n"
+ " SentenceBreakLower,\n"
+ " SentenceBreakUpper,\n"
+ " SentenceBreakOLetter,\n"
+ " SentenceBreakNumeric,\n"
+ " SentenceBreakATerm,\n"
+ " SentenceBreakSTerm,\n"
+ " SentenceBreakClose\n"
+ " };\n\n";
+
+enum SentenceBreak {
+ SentenceBreakOther,
+ SentenceBreakSep,
+ SentenceBreakFormat,
+ SentenceBreakSp,
+ SentenceBreakLower,
+ SentenceBreakUpper,
+ SentenceBreakOLetter,
+ SentenceBreakNumeric,
+ SentenceBreakATerm,
+ SentenceBreakSTerm,
+ SentenceBreakClose
+};
+
+
+QHash<QByteArray, SentenceBreak> sentence_break_map;
+
+static void initSentenceBreak()
+{
+ struct SentenceBreakList {
+ SentenceBreak brk;
+ const char *name;
+ } breaks[] = {
+ { SentenceBreakOther, "Other" },
+ { SentenceBreakSep, "Sep" },
+ { SentenceBreakFormat, "Format" },
+ { SentenceBreakSp, "Sp" },
+ { SentenceBreakLower, "Lower" },
+ { SentenceBreakUpper, "Upper" },
+ { SentenceBreakOLetter, "OLetter" },
+ { SentenceBreakNumeric, "Numeric" },
+ { SentenceBreakATerm, "ATerm" },
+ { SentenceBreakSTerm, "STerm" },
+ { SentenceBreakClose, "Close" },
+ { SentenceBreakOther, 0 }
+ };
+ SentenceBreakList *d = breaks;
+ while (d->name) {
+ sentence_break_map.insert(d->name, d->brk);
+ ++d;
+ }
+}
+
+
+// Keep this one in sync with the code in createPropertyInfo
+const char *property_string =
+ " struct Properties {\n"
+ " ushort category : 8;\n"
+ " ushort line_break_class : 8;\n"
+ " ushort direction : 8;\n"
+ " ushort combiningClass :8;\n"
+ " ushort joining : 2;\n"
+ " signed short digitValue : 6; /* 5 needed */\n"
+ " ushort unicodeVersion : 4;\n"
+ " ushort lowerCaseSpecial : 1;\n"
+ " ushort upperCaseSpecial : 1;\n"
+ " ushort titleCaseSpecial : 1;\n"
+ " ushort caseFoldSpecial : 1; /* currently unused */\n"
+ " signed short mirrorDiff : 16;\n"
+ " signed short lowerCaseDiff : 16;\n"
+ " signed short upperCaseDiff : 16;\n"
+ " signed short titleCaseDiff : 16;\n"
+ " signed short caseFoldDiff : 16;\n"
+ " ushort graphemeBreak : 8;\n"
+ " ushort wordBreak : 8;\n"
+ " ushort sentenceBreak : 8;\n"
+ " };\n"
+ " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(uint ucs4);\n"
+ " Q_CORE_EXPORT const Properties * QT_FASTCALL properties(ushort ucs2);\n";
+
+const char *lineBreakClass =
+ " // see http://www.unicode.org/reports/tr14/tr14-19.html\n"
+ " // we don't use the XX, AI and CB properties and map them to AL instead.\n"
+ " // as we don't support any EBDIC based OS'es, NL is ignored and mapped to AL as well.\n"
+ " enum LineBreakClass {\n"
+ " LineBreak_OP, LineBreak_CL, LineBreak_QU, LineBreak_GL, LineBreak_NS,\n"
+ " LineBreak_EX, LineBreak_SY, LineBreak_IS, LineBreak_PR, LineBreak_PO,\n"
+ " LineBreak_NU, LineBreak_AL, LineBreak_ID, LineBreak_IN, LineBreak_HY,\n"
+ " LineBreak_BA, LineBreak_BB, LineBreak_B2, LineBreak_ZW, LineBreak_CM,\n"
+ " LineBreak_WJ, LineBreak_H2, LineBreak_H3, LineBreak_JL, LineBreak_JV,\n"
+ " LineBreak_JT, LineBreak_SA, LineBreak_SG,\n"
+ " LineBreak_SP, LineBreak_CR, LineBreak_LF, LineBreak_BK\n"
+ " };\n\n";
+
+const char *methods =
+ " Q_CORE_EXPORT QUnicodeTables::LineBreakClass QT_FASTCALL lineBreakClass(uint ucs4);\n"
+ " inline int lineBreakClass(const QChar &ch) {\n"
+ " return QUnicodeTables::lineBreakClass(ch.unicode());\n"
+ " }\n"
+ "\n"
+ " Q_CORE_EXPORT int QT_FASTCALL script(uint ucs4);\n"
+ " Q_CORE_EXPORT_INLINE int QT_FASTCALL script(const QChar &ch) {\n"
+ " return script(ch.unicode());\n"
+ " }\n\n";
+
+
+struct PropertyFlags {
+ bool operator ==(const PropertyFlags &o) {
+ return (combiningClass == o.combiningClass
+ && category == o.category
+ && direction == o.direction
+ && joining == o.joining
+ && age == o.age
+ && digitValue == o.digitValue
+ && line_break_class == o.line_break_class
+ && mirrorDiff == o.mirrorDiff
+ && lowerCaseDiff == o.lowerCaseDiff
+ && upperCaseDiff == o.upperCaseDiff
+ && titleCaseDiff == o.titleCaseDiff
+ && lowerCaseSpecial == o.lowerCaseSpecial
+ && upperCaseSpecial == o.upperCaseSpecial
+ && titleCaseSpecial == o.titleCaseSpecial
+ && caseFoldSpecial == o.caseFoldSpecial
+ && graphemeBreak == o.graphemeBreak
+ && wordBreak == o.wordBreak
+ && sentenceBreak == o.sentenceBreak
+ );
+ }
+ // from UnicodeData.txt
+ uchar combiningClass : 8;
+ QChar::Category category : 5;
+ QChar::Direction direction : 5;
+ // from ArabicShaping.txt
+ QChar::Joining joining : 2;
+ // from DerivedAge.txt
+ QChar::UnicodeVersion age : 4;
+ int digitValue;
+ uint line_break_class : 5;
+
+ int mirrorDiff : 16;
+
+ int lowerCaseDiff;
+ int upperCaseDiff;
+ int titleCaseDiff;
+ int caseFoldDiff;
+ bool lowerCaseSpecial;
+ bool upperCaseSpecial;
+ bool titleCaseSpecial;
+ bool caseFoldSpecial;
+ GraphemeBreak graphemeBreak;
+ WordBreak wordBreak;
+ SentenceBreak sentenceBreak;
+};
+
+QList<int> specialCaseMap;
+int specialCaseMaxLen = 0;
+
+static int appendToSpecialCaseMap(const QList<int> &map)
+{
+ QList<int> utf16map;
+ for (int i = 0; i < map.size(); ++i) {
+ int val = map.at(i);
+ if (val > 0xffff) {
+ utf16map << QChar::highSurrogate(val);
+ utf16map << QChar::lowSurrogate(val);
+ } else {
+ utf16map << val;
+ }
+ }
+ specialCaseMaxLen = qMax(specialCaseMaxLen, utf16map.size());
+ utf16map << 0;
+
+ for (int i = 0; i < specialCaseMap.size() - utf16map.size() - 1; ++i) {
+ int j;
+ for (j = 0; j < utf16map.size(); ++j) {
+ if (specialCaseMap.at(i+j) != utf16map.at(j))
+ break;
+ }
+ if (j == utf16map.size())
+ return i;
+ }
+
+ int pos = specialCaseMap.size();
+ specialCaseMap << utf16map;
+ return pos;
+}
+
+struct UnicodeData {
+ UnicodeData(int codepoint = 0) {
+ p.category = QChar::NoCategory;
+ p.combiningClass = 0;
+
+ p.direction = QChar::DirL;
+ // DirR for: U+0590..U+05FF, U+07C0..U+08FF, U+FB1D..U+FB4F, U+10800..U+10FFF
+ if ((codepoint >= 0x590 && codepoint <= 0x5ff)
+ || (codepoint >= 0x7c0 && codepoint <= 0x8ff)
+ || (codepoint >= 0xfb1d && codepoint <= 0xfb4f)
+ || (codepoint >= 0x10800 && codepoint <= 0x10fff))
+ p.direction = QChar::DirR;
+ // DirAL for: U+0600..U+07BF, U+FB50..U+FDCF, U+FDF0..U+FDFF, U+FE70..U+FEFE
+ if ((codepoint >= 0x600 && codepoint <= 0x7bf)
+ || (codepoint >= 0xfb50 && codepoint <= 0xfdcf)
+ || (codepoint >= 0xfdf0 && codepoint <= 0xfdff)
+ || (codepoint >= 0xfe70 && codepoint <= 0xfefe))
+ p.direction = QChar::DirAL;
+
+ mirroredChar = 0;
+ decompositionType = QChar::NoDecomposition;
+ p.joining = QChar::OtherJoining;
+ p.age = QChar::Unicode_Unassigned;
+ p.mirrorDiff = 0;
+ p.digitValue = -1;
+ p.line_break_class = QUnicodeTables::LineBreak_AL;
+ p.lowerCaseDiff = 0;
+ p.upperCaseDiff = 0;
+ p.titleCaseDiff = 0;
+ p.caseFoldDiff = 0;
+ p.lowerCaseSpecial = 0;
+ p.upperCaseSpecial = 0;
+ p.titleCaseSpecial = 0;
+ p.caseFoldSpecial = 0;
+ p.graphemeBreak = GraphemeBreakOther;
+ p.wordBreak = WordBreakOther;
+ p.sentenceBreak = SentenceBreakOther;
+ propertyIndex = -1;
+ excludedComposition = false;
+ }
+ PropertyFlags p;
+
+ // from UnicodeData.txt
+ QChar::Decomposition decompositionType;
+ QList<int> decomposition;
+
+ QList<int> specialFolding;
+
+ // from BidiMirroring.txt
+ int mirroredChar;
+
+ // CompositionExclusions.txt
+ bool excludedComposition;
+
+ // computed position of unicode property set
+ int propertyIndex;
+};
+
+enum UniDataFields {
+ UD_Value,
+ UD_Name,
+ UD_Category,
+ UD_CombiningClass,
+ UD_BidiCategory,
+ UD_Decomposition,
+ UD_DecimalDigitValue,
+ UD_DigitValue,
+ UD_NumericValue,
+ UD_Mirrored,
+ UD_OldName,
+ UD_Comment,
+ UD_UpperCase,
+ UD_LowerCase,
+ UD_TitleCase
+};
+
+QHash<QByteArray, QChar::Category> categoryMap;
+
+static void initCategoryMap()
+{
+ struct Cat {
+ QChar::Category cat;
+ const char *name;
+ } categories [] = {
+ { QChar::Mark_NonSpacing, "Mn" },
+ { QChar::Mark_SpacingCombining, "Mc" },
+ { QChar::Mark_Enclosing, "Me" },
+
+ { QChar::Number_DecimalDigit, "Nd" },
+ { QChar::Number_Letter, "Nl" },
+ { QChar::Number_Other, "No" },
+
+ { QChar::Separator_Space, "Zs" },
+ { QChar::Separator_Line, "Zl" },
+ { QChar::Separator_Paragraph, "Zp" },
+
+ { QChar::Other_Control, "Cc" },
+ { QChar::Other_Format, "Cf" },
+ { QChar::Other_Surrogate, "Cs" },
+ { QChar::Other_PrivateUse, "Co" },
+ { QChar::Other_NotAssigned, "Cn" },
+
+ { QChar::Letter_Uppercase, "Lu" },
+ { QChar::Letter_Lowercase, "Ll" },
+ { QChar::Letter_Titlecase, "Lt" },
+ { QChar::Letter_Modifier, "Lm" },
+ { QChar::Letter_Other, "Lo" },
+
+ { QChar::Punctuation_Connector, "Pc" },
+ { QChar::Punctuation_Dash, "Pd" },
+ { QChar::Punctuation_Open, "Ps" },
+ { QChar::Punctuation_Close, "Pe" },
+ { QChar::Punctuation_InitialQuote, "Pi" },
+ { QChar::Punctuation_FinalQuote, "Pf" },
+ { QChar::Punctuation_Other, "Po" },
+
+ { QChar::Symbol_Math, "Sm" },
+ { QChar::Symbol_Currency, "Sc" },
+ { QChar::Symbol_Modifier, "Sk" },
+ { QChar::Symbol_Other, "So" },
+ { QChar::NoCategory, 0 }
+ };
+ Cat *c = categories;
+ while (c->cat != QChar::NoCategory) {
+ categoryMap.insert(c->name, c->cat);
+ ++c;
+ }
+}
+
+QHash<QByteArray, QChar::Direction> directionMap;
+
+static void initDirectionMap()
+{
+ struct Dir {
+ QChar::Direction dir;
+ const char *name;
+ } directions[] = {
+ { QChar::DirL, "L" },
+ { QChar::DirR, "R" },
+ { QChar::DirEN, "EN" },
+ { QChar::DirES, "ES" },
+ { QChar::DirET, "ET" },
+ { QChar::DirAN, "AN" },
+ { QChar::DirCS, "CS" },
+ { QChar::DirB, "B" },
+ { QChar::DirS, "S" },
+ { QChar::DirWS, "WS" },
+ { QChar::DirON, "ON" },
+ { QChar::DirLRE, "LRE" },
+ { QChar::DirLRO, "LRO" },
+ { QChar::DirAL, "AL" },
+ { QChar::DirRLE, "RLE" },
+ { QChar::DirRLO, "RLO" },
+ { QChar::DirPDF, "PDF" },
+ { QChar::DirNSM, "NSM" },
+ { QChar::DirBN, "BN" },
+ { QChar::DirL, 0 }
+ };
+ Dir *d = directions;
+ while (d->name) {
+ directionMap.insert(d->name, d->dir);
+ ++d;
+ }
+}
+
+
+QHash<QByteArray, QChar::Decomposition> decompositionMap;
+
+static void initDecompositionMap()
+{
+ struct Dec {
+ QChar::Decomposition dec;
+ const char *name;
+ } decompositions[] = {
+ { QChar::Canonical, "<canonical>" },
+ { QChar::Font, "<font>" },
+ { QChar::NoBreak, "<noBreak>" },
+ { QChar::Initial, "<initial>" },
+ { QChar::Medial, "<medial>" },
+ { QChar::Final, "<final>" },
+ { QChar::Isolated, "<isolated>" },
+ { QChar::Circle, "<circle>" },
+ { QChar::Super, "<super>" },
+ { QChar::Sub, "<sub>" },
+ { QChar::Vertical, "<vertical>" },
+ { QChar::Wide, "<wide>" },
+ { QChar::Narrow, "<narrow>" },
+ { QChar::Small, "<small>" },
+ { QChar::Square, "<square>" },
+ { QChar::Compat, "<compat>" },
+ { QChar::Fraction, "<fraction>" },
+ { QChar::NoDecomposition, 0 }
+ };
+ Dec *d = decompositions;
+ while (d->name) {
+ decompositionMap.insert(d->name, d->dec);
+ ++d;
+ }
+}
+
+
+QHash<int, UnicodeData> unicodeData;
+QList<PropertyFlags> uniqueProperties;
+
+
+QHash<int, int> decompositionLength;
+int highestComposedCharacter = 0;
+int numLigatures = 0;
+int highestLigature = 0;
+
+struct Ligature {ushort u1; ushort u2; ushort ligature;};
+// we need them sorted after the first component for fast lookup
+bool operator < (const Ligature &l1, const Ligature &l2) {
+ return l1.u1 < l2.u1;
+}
+
+QHash<ushort, QList<Ligature> > ligatureHashes;
+
+QHash<int, int> combiningClassUsage;
+
+int maxLowerCaseDiff = 0;
+int maxUpperCaseDiff = 0;
+int maxTitleCaseDiff = 0;
+
+static void readUnicodeData()
+{
+ QFile f("data/UnicodeData.txt");
+ if (!f.exists())
+ qFatal("Couldn't find UnicodeData.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.truncate(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> properties = line.split(';');
+ bool ok;
+ int codepoint = properties[UD_Value].toInt(&ok, 16);
+ int lastCodepoint = codepoint;
+
+ QByteArray name = properties[UD_Name];
+ if (name.startsWith('<') && name.contains("First")) {
+ QByteArray nextLine;
+ nextLine.resize(1024);
+ f.readLine(nextLine.data(), 1024);
+ QList<QByteArray> properties = nextLine.split(';');
+ lastCodepoint = properties[UD_Value].toInt(&ok, 16);
+ }
+
+ UnicodeData data(codepoint);
+ data.p.category = categoryMap.value(properties[UD_Category], QChar::NoCategory);
+ data.p.combiningClass = properties[UD_CombiningClass].toInt();
+
+ if (!combiningClassUsage.contains(data.p.combiningClass))
+ combiningClassUsage[data.p.combiningClass] = 1;
+ else
+ ++combiningClassUsage[data.p.combiningClass];
+
+ data.p.direction = directionMap.value(properties[UD_BidiCategory], data.p.direction);
+
+ if (!properties[UD_UpperCase].isEmpty()) {
+ int upperCase = properties[UD_UpperCase].toInt(&ok, 16);
+ Q_ASSERT(ok);
+ data.p.upperCaseDiff = upperCase - codepoint;
+ maxUpperCaseDiff = qMax(maxUpperCaseDiff, qAbs(data.p.upperCaseDiff));
+ if (codepoint > 0xffff) {
+ // if the condition below doesn't hold anymore we need to modify our case folding code
+ //qDebug() << codepoint << QChar::highSurrogate(codepoint) << QChar::highSurrogate(foldMap.at(0));
+ Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(upperCase));
+ }
+ }
+ if (!properties[UD_LowerCase].isEmpty()) {
+ int lowerCase = properties[UD_LowerCase].toInt(&ok, 16);
+ Q_ASSERT (ok);
+ data.p.lowerCaseDiff = lowerCase - codepoint;
+ maxLowerCaseDiff = qMax(maxLowerCaseDiff, qAbs(data.p.lowerCaseDiff));
+ if (codepoint > 0xffff) {
+ // if the condition below doesn't hold anymore we need to modify our case folding code
+ //qDebug() << codepoint << QChar::highSurrogate(codepoint) << QChar::highSurrogate(foldMap.at(0));
+ Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(lowerCase));
+ }
+ }
+ // we want toTitleCase to map to ToUpper in case we don't have any titlecase.
+ if (properties[UD_TitleCase].isEmpty())
+ properties[UD_TitleCase] = properties[UD_UpperCase];
+ if (!properties[UD_TitleCase].isEmpty()) {
+ int titleCase = properties[UD_TitleCase].toInt(&ok, 16);
+ Q_ASSERT (ok);
+ data.p.titleCaseDiff = titleCase - codepoint;
+ maxTitleCaseDiff = qMax(maxTitleCaseDiff, qAbs(data.p.titleCaseDiff));
+ if (codepoint > 0xffff) {
+ // if the condition below doesn't hold anymore we need to modify our case folding code
+ //qDebug() << codepoint << QChar::highSurrogate(codepoint) << QChar::highSurrogate(foldMap.at(0));
+ Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(titleCase));
+ }
+ }
+
+ if (!properties[UD_DigitValue].isEmpty())
+ data.p.digitValue = properties[UD_DigitValue].toInt();
+
+ // decompositition
+ QByteArray decomposition = properties[UD_Decomposition];
+ if (!decomposition.isEmpty()) {
+ highestComposedCharacter = qMax(highestComposedCharacter, codepoint);
+ QList<QByteArray> d = decomposition.split(' ');
+ if (d[0].contains('<')) {
+ data.decompositionType = decompositionMap.value(d[0], QChar::Canonical);
+ d.takeFirst();
+ } else {
+ data.decompositionType = QChar::Canonical;
+ }
+ for (int i = 0; i < d.size(); ++i)
+ data.decomposition.append(d[i].toInt(&ok, 16));
+ if (!decompositionLength.contains(data.decomposition.size()))
+ decompositionLength[data.decomposition.size()] = 1;
+ else
+ ++decompositionLength[data.decomposition.size()];
+ }
+
+ for (int i = codepoint; i <= lastCodepoint; ++i)
+ unicodeData.insert(i, data);
+ }
+
+}
+
+static int maxMirroredDiff = 0;
+
+static void readBidiMirroring()
+{
+ QFile f("data/BidiMirroring.txt");
+ if (!f.exists())
+ qFatal("Couldn't find BidiMirroring.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+
+ if (line.isEmpty())
+ continue;
+ line = line.replace(" ", "");
+
+ QList<QByteArray> pair = line.split(';');
+ Q_ASSERT(pair.size() == 2);
+
+ bool ok;
+ int codepoint = pair[0].toInt(&ok, 16);
+ int mirror = pair[1].toInt(&ok, 16);
+
+ UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint));
+ d.mirroredChar = mirror;
+ if (qAbs(codepoint-d.mirroredChar) > maxMirroredDiff)
+ maxMirroredDiff = qAbs(codepoint - d.mirroredChar);
+
+ d.p.mirrorDiff = d.mirroredChar - codepoint;
+ unicodeData.insert(codepoint, d);
+ }
+}
+
+static void readArabicShaping()
+{
+ QFile f("data/ArabicShaping.txt");
+ if (!f.exists())
+ qFatal("Couldn't find ArabicShaping.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+ line = line.trimmed();
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> shaping = line.split(';');
+ Q_ASSERT(shaping.size() == 4);
+
+ bool ok;
+ int codepoint = shaping[0].toInt(&ok, 16);
+ QChar::Joining j = QChar::OtherJoining;
+ QByteArray shape = shaping[2].trimmed();
+ if (shape == "R")
+ j = QChar::Right;
+ else if (shape == "D")
+ j = QChar::Dual;
+ else if (shape == "C")
+ j = QChar::Center;
+
+ UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint));
+ d.p.joining = j;
+ unicodeData.insert(codepoint, d);
+ }
+}
+
+static void readDerivedAge()
+{
+ QFile f("data/DerivedAge.txt");
+ if (!f.exists())
+ qFatal("Couldn't find DerivedAge.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+ line.replace(" ", "");
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> l = line.split(';');
+ Q_ASSERT(l.size() == 2);
+
+ QByteArray codes = l[0];
+ codes.replace("..", ".");
+ QList<QByteArray> cl = codes.split('.');
+
+ bool ok;
+ int from = cl[0].toInt(&ok, 16);
+ int to = from;
+ if (cl.size() == 2)
+ to = cl[1].toInt(&ok, 16);
+
+ QChar::UnicodeVersion age = QChar::Unicode_Unassigned;
+ QByteArray ba = l[1];
+ AgeMap *map = ageMap;
+ while (map->age) {
+ if (ba == map->age) {
+ age = map->version;
+ break;
+ }
+ ++map;
+ }
+ //qDebug() << hex << from << ".." << to << ba << age;
+ Q_ASSERT(age != QChar::Unicode_Unassigned);
+
+ for (int codepoint = from; codepoint <= to; ++codepoint) {
+ UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint));
+ d.p.age = age;
+ unicodeData.insert(codepoint, d);
+ }
+ }
+}
+
+
+static void readCompositionExclusion()
+{
+ QFile f("data/CompositionExclusions.txt");
+ if (!f.exists())
+ qFatal("Couldn't find CompositionExclusions.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+ line.replace(" ", "");
+
+ if (line.isEmpty())
+ continue;
+
+ Q_ASSERT(!line.contains(".."));
+
+ bool ok;
+ int codepoint = line.toInt(&ok, 16);
+
+ UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint));
+ d.excludedComposition = true;
+ unicodeData.insert(codepoint, d);
+ }
+
+ for (int i = 0; i < 0x110000; ++i) {
+ UnicodeData data = unicodeData.value(i, UnicodeData(i));
+ if (!data.excludedComposition
+ && data.decompositionType == QChar::Canonical
+ && data.decomposition.size() > 1) {
+ Q_ASSERT(data.decomposition.size() == 2);
+
+ uint part1 = data.decomposition.at(0);
+ uint part2 = data.decomposition.at(1);
+ UnicodeData first = unicodeData.value(part1, UnicodeData(part1));
+ if (first.p.combiningClass != 0)
+ continue;
+
+ ++numLigatures;
+ highestLigature = qMax(highestLigature, (int)part1);
+ Ligature l = {(ushort)part1, (ushort)part2, i};
+ ligatureHashes[part2].append(l);
+ }
+ }
+}
+
+struct NormalizationCorrection {
+ uint codepoint;
+ uint mapped;
+ uint version;
+};
+
+static QByteArray createNormalizationCorrections()
+{
+ QFile f("data/NormalizationCorrections.txt");
+ if (!f.exists())
+ qFatal("Couldn't find NormalizationCorrections.txt");
+
+ f.open(QFile::ReadOnly);
+
+ QByteArray out;
+
+ out += "struct NormalizationCorrection {\n"
+ " uint ucs4;\n"
+ " uint old_mapping;\n"
+ " int version;\n"
+ "};\n\n"
+
+ "static const NormalizationCorrection uc_normalization_corrections[] = {\n";
+
+ int numCorrections = 0;
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+ line.replace(" ", "");
+
+ if (line.isEmpty())
+ continue;
+
+ Q_ASSERT(!line.contains(".."));
+
+ QList<QByteArray> fields = line.split(';');
+ Q_ASSERT(fields.size() == 4);
+
+ NormalizationCorrection c;
+ bool ok;
+ c.codepoint = fields.at(0).toInt(&ok, 16);
+ c.mapped = fields.at(1).toInt(&ok, 16);
+ if (fields.at(3) == "3.2.0")
+ c.version = QChar::Unicode_3_2;
+ else if (fields.at(3) == "4.0.0")
+ c.version = QChar::Unicode_4_0;
+ else
+ qFatal("unknown unicode version in NormalizationCorrection.txt");
+
+ out += " { 0x" + QByteArray::number(c.codepoint, 16) + ", 0x" + QByteArray::number(c.mapped, 16)
+ + ", " + QString::number(c.version) + " },\n";
+ ++numCorrections;
+ }
+
+ out += "};\n\n"
+
+ "enum { NumNormalizationCorrections = " + QByteArray::number(numCorrections) + " };\n\n";
+
+
+ return out;
+}
+
+
+static void computeUniqueProperties()
+{
+ qDebug("computeUniqueProperties:");
+ for (int uc = 0; uc < 0x110000; ++uc) {
+ UnicodeData d = unicodeData.value(uc, UnicodeData(uc));
+
+ int index = uniqueProperties.indexOf(d.p);
+ if (index == -1) {
+ index = uniqueProperties.size();
+ uniqueProperties.append(d.p);
+ }
+ d.propertyIndex = index;
+ unicodeData.insert(uc, d);
+ }
+ qDebug(" %d unicode properties found", uniqueProperties.size());
+}
+
+
+static void readLineBreak()
+{
+ QFile f("data/LineBreak.txt");
+ if (!f.exists())
+ qFatal("Couldn't find LineBreak.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+ line.replace(" ", "");
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> l = line.split(';');
+ Q_ASSERT(l.size() == 2);
+
+ QByteArray codes = l[0];
+ codes.replace("..", ".");
+ QList<QByteArray> cl = codes.split('.');
+
+ bool ok;
+ int from = cl[0].toInt(&ok, 16);
+ int to = from;
+ if (cl.size() == 2)
+ to = cl[1].toInt(&ok, 16);
+
+ // ### Classes XX and AI are left out and mapped to AL for now
+ QUnicodeTables::LineBreakClass lb = QUnicodeTables::LineBreak_AL;
+ QByteArray ba = l[1];
+
+ if (ba == "AI") lb = QUnicodeTables::LineBreak_AL;
+ else if (ba == "XX") lb = QUnicodeTables::LineBreak_AL;
+ else if (ba == "NL") lb = QUnicodeTables::LineBreak_AL;
+ else if (ba == "OP") lb = QUnicodeTables::LineBreak_OP;
+ else if (ba == "CL") lb = QUnicodeTables::LineBreak_CL;
+ else if (ba == "QU") lb = QUnicodeTables::LineBreak_QU;
+ else if (ba == "GL") lb = QUnicodeTables::LineBreak_GL;
+ else if (ba == "NS") lb = QUnicodeTables::LineBreak_NS;
+ else if (ba == "EX") lb = QUnicodeTables::LineBreak_EX;
+ else if (ba == "SY") lb = QUnicodeTables::LineBreak_SY;
+ else if (ba == "IS") lb = QUnicodeTables::LineBreak_IS;
+ else if (ba == "PR") lb = QUnicodeTables::LineBreak_PR;
+ else if (ba == "PO") lb = QUnicodeTables::LineBreak_PO;
+ else if (ba == "NU") lb = QUnicodeTables::LineBreak_NU;
+ else if (ba == "AL") lb = QUnicodeTables::LineBreak_AL;
+ else if (ba == "ID") lb = QUnicodeTables::LineBreak_ID;
+ else if (ba == "IN") lb = QUnicodeTables::LineBreak_IN;
+ else if (ba == "HY") lb = QUnicodeTables::LineBreak_HY;
+ else if (ba == "BA") lb = QUnicodeTables::LineBreak_BA;
+ else if (ba == "BB") lb = QUnicodeTables::LineBreak_BB;
+ else if (ba == "B2") lb = QUnicodeTables::LineBreak_B2;
+ else if (ba == "ZW") lb = QUnicodeTables::LineBreak_ZW;
+ else if (ba == "CM") lb = QUnicodeTables::LineBreak_CM;
+ else if (ba == "SA") lb = QUnicodeTables::LineBreak_SA;
+ else if (ba == "BK") lb = QUnicodeTables::LineBreak_BK;
+ else if (ba == "CR") lb = QUnicodeTables::LineBreak_CR;
+ else if (ba == "LF") lb = QUnicodeTables::LineBreak_LF;
+ else if (ba == "SG") lb = QUnicodeTables::LineBreak_SG;
+ else if (ba == "CB") lb = QUnicodeTables::LineBreak_AL;
+ else if (ba == "SP") lb = QUnicodeTables::LineBreak_SP;
+ else if (ba == "WJ") lb = QUnicodeTables::LineBreak_WJ;
+ else if (ba == "H2") lb = QUnicodeTables::LineBreak_H2;
+ else if (ba == "H3") lb = QUnicodeTables::LineBreak_H3;
+ else if (ba == "JL") lb = QUnicodeTables::LineBreak_JL;
+ else if (ba == "JV") lb = QUnicodeTables::LineBreak_JV;
+ else if (ba == "JT") lb = QUnicodeTables::LineBreak_JT;
+ else {
+ qDebug() << "unhandled line break class:" << ba;
+ }
+
+ for (int codepoint = from; codepoint <= to; ++codepoint) {
+ UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint));
+ d.p.line_break_class = lb;
+ unicodeData.insert(codepoint, d);
+ }
+ }
+}
+
+
+static void readSpecialCasing()
+{
+// qDebug() << "Reading SpecialCasing.txt";
+ QFile f("data/SpecialCasing.txt");
+ if (!f.exists())
+ qFatal("Couldn't find SpecialCasing.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> l = line.split(';');
+
+ QByteArray condition = l.size() < 5 ? QByteArray() : l[4].trimmed();
+ if (!condition.isEmpty())
+ // #####
+ continue;
+
+ bool ok;
+ int codepoint = l[0].trimmed().toInt(&ok, 16);
+ Q_ASSERT(ok);
+ Q_ASSERT(codepoint <= 0xffff);
+
+// qDebug() << "codepoint" << hex << codepoint;
+// qDebug() << line;
+
+ QList<QByteArray> lower = l[1].trimmed().split(' ');
+ QList<int> lowerMap;
+ for (int i = 0; i < lower.size(); ++i) {
+ bool ok;
+ lowerMap.append(lower.at(i).toInt(&ok, 16));
+ Q_ASSERT(ok);
+ }
+
+ QList<QByteArray> title = l[2].trimmed().split(' ');
+ QList<int> titleMap;
+ for (int i = 0; i < title.size(); ++i) {
+ bool ok;
+ titleMap.append(title.at(i).toInt(&ok, 16));
+ if (!ok)
+ qDebug() << line << title.at(i);
+ Q_ASSERT(ok);
+ }
+
+ QList<QByteArray> upper = l[3].trimmed().split(' ');
+ QList<int> upperMap;
+ for (int i = 0; i < upper.size(); ++i) {
+ bool ok;
+ upperMap.append(upper.at(i).toInt(&ok, 16));
+ Q_ASSERT(ok);
+ }
+
+
+ UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint));
+
+ Q_ASSERT(lowerMap.size() > 1 || lowerMap.at(0) == codepoint + ud.p.lowerCaseDiff);
+ Q_ASSERT(titleMap.size() > 1 || titleMap.at(0) == codepoint + ud.p.titleCaseDiff);
+ Q_ASSERT(upperMap.size() > 1 || upperMap.at(0) == codepoint + ud.p.upperCaseDiff);
+
+ if (lowerMap.size() > 1) {
+ ud.p.lowerCaseSpecial = true;
+ ud.p.lowerCaseDiff = appendToSpecialCaseMap(lowerMap);
+ }
+ if (titleMap.size() > 1) {
+ ud.p.titleCaseSpecial = true;
+ ud.p.titleCaseDiff = appendToSpecialCaseMap(titleMap);
+ }
+ if (upperMap.size() > 1) {
+ ud.p.upperCaseSpecial = true;
+ ud.p.upperCaseDiff = appendToSpecialCaseMap(upperMap);;
+ }
+
+ unicodeData.insert(codepoint, ud);
+ }
+}
+
+int maxCaseFoldDiff = 0;
+
+static void readCaseFolding()
+{
+ qDebug() << "Reading CaseFolding.txt";
+ QFile f("data/CaseFolding.txt");
+ if (!f.exists())
+ qFatal("Couldn't find CaseFolding.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> l = line.split(';');
+
+ bool ok;
+ uint codepoint = l[0].trimmed().toInt(&ok, 16);
+ Q_ASSERT(ok);
+
+
+ l[1] = l[1].trimmed();
+ if (l[1] == "F" || l[1] == "T")
+ continue;
+
+// qDebug() << "codepoint" << hex << codepoint;
+// qDebug() << line;
+ QList<QByteArray> fold = l[2].trimmed().split(' ');
+ QList<int> foldMap;
+ for (int i = 0; i < fold.size(); ++i) {
+ bool ok;
+ foldMap.append(fold.at(i).toInt(&ok, 16));
+ Q_ASSERT(ok);
+ }
+
+ UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint));
+ if (foldMap.size() == 1) {
+ ud.p.caseFoldDiff = foldMap.at(0) - codepoint;
+ maxCaseFoldDiff = qMax(maxCaseFoldDiff, ud.p.caseFoldDiff);
+ if (codepoint > 0xffff) {
+ // if the condition below doesn't hold anymore we need to modify our case folding code
+ //qDebug() << codepoint << QChar::highSurrogate(codepoint) << QChar::highSurrogate(foldMap.at(0));
+ Q_ASSERT(QChar::highSurrogate(codepoint) == QChar::highSurrogate(foldMap.at(0)));
+ }
+ if (foldMap.at(0) != codepoint + ud.p.lowerCaseDiff)
+ qDebug() << hex << codepoint;
+ } else {
+ Q_ASSERT(false); // we currently don't support full case foldings
+// qDebug() << "special" << hex << foldMap;
+ ud.p.caseFoldSpecial = true;
+ ud.p.caseFoldDiff = appendToSpecialCaseMap(foldMap);
+ }
+ unicodeData.insert(codepoint, ud);
+ }
+}
+
+static void readGraphemeBreak()
+{
+ qDebug() << "Reading GraphemeBreakProperty.txt";
+ QFile f("data/GraphemeBreakProperty.txt");
+ if (!f.exists())
+ qFatal("Couldn't find GraphemeBreakProperty.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> l = line.split(';');
+
+ QByteArray codes = l[0].trimmed();
+ codes.replace("..", ".");
+ QList<QByteArray> cl = codes.split('.');
+
+ bool ok;
+ int from = cl[0].toInt(&ok, 16);
+ Q_ASSERT(ok);
+ int to = from;
+ if (cl.size() == 2) {
+ to = cl[1].toInt(&ok, 16);
+ Q_ASSERT(ok);
+ }
+
+ GraphemeBreak brk = grapheme_break_map.value(l[1].trimmed(), GraphemeBreakOther);
+
+ for (int codepoint = from; codepoint <= to; ++codepoint) {
+ UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint));
+ ud.p.graphemeBreak = brk;
+ unicodeData.insert(codepoint, ud);
+ }
+ }
+}
+
+static void readWordBreak()
+{
+ qDebug() << "Reading WordBreakProperty.txt";
+ QFile f("data/WordBreakProperty.txt");
+ if (!f.exists())
+ qFatal("Couldn't find WordBreakProperty.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> l = line.split(';');
+
+ QByteArray codes = l[0].trimmed();
+ codes.replace("..", ".");
+ QList<QByteArray> cl = codes.split('.');
+
+ bool ok;
+ int from = cl[0].toInt(&ok, 16);
+ Q_ASSERT(ok);
+ int to = from;
+ if (cl.size() == 2) {
+ to = cl[1].toInt(&ok, 16);
+ Q_ASSERT(ok);
+ }
+
+ WordBreak brk = word_break_map.value(l[1].trimmed(), WordBreakOther);
+ Q_ASSERT(brk != WordBreakOther);
+
+ for (int codepoint = from; codepoint <= to; ++codepoint) {
+ UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint));
+ ud.p.wordBreak = brk;
+ unicodeData.insert(codepoint, ud);
+ }
+ }
+}
+
+static void readSentenceBreak()
+{
+ qDebug() << "Reading SentenceBreakProperty.txt";
+ QFile f("data/SentenceBreakProperty.txt");
+ if (!f.exists())
+ qFatal("Couldn't find SentenceBreakProperty.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line;
+ line.resize(1024);
+ int len = f.readLine(line.data(), 1024);
+ line.resize(len-1);
+
+ int comment = line.indexOf('#');
+ if (comment >= 0)
+ line = line.left(comment);
+
+ if (line.isEmpty())
+ continue;
+
+ QList<QByteArray> l = line.split(';');
+
+ QByteArray codes = l[0].trimmed();
+ codes.replace("..", ".");
+ QList<QByteArray> cl = codes.split('.');
+
+ bool ok;
+ int from = cl[0].toInt(&ok, 16);
+ Q_ASSERT(ok);
+ int to = from;
+ if (cl.size() == 2) {
+ to = cl[1].toInt(&ok, 16);
+ Q_ASSERT(ok);
+ }
+
+ SentenceBreak brk = sentence_break_map.value(l[1].trimmed(), SentenceBreakOther);
+ Q_ASSERT(brk != SentenceBreakOther);
+
+ for (int codepoint = from; codepoint <= to; ++codepoint) {
+ UnicodeData ud = unicodeData.value(codepoint, UnicodeData(codepoint));
+ ud.p.sentenceBreak = brk;
+ unicodeData.insert(codepoint, ud);
+ }
+ }
+}
+
+#if 0
+// this piece of code does full case folding and comparison. We currently
+// don't use it, since this gives lots of issues with things as case insensitive
+// search and replace.
+static inline void foldCase(uint ch, ushort *out)
+{
+ const QUnicodeTables::Properties *p = qGetProp(ch);
+ if (!p->caseFoldSpecial) {
+ *(out++) = ch + p->caseFoldDiff;
+ } else {
+ const ushort *folded = specialCaseMap + p->caseFoldDiff;
+ while (*folded)
+ *out++ = *folded++;
+ }
+ *out = 0;
+}
+
+static int ucstricmp(const ushort *a, const ushort *ae, const ushort *b, const ushort *be)
+{
+ if (a == b)
+ return 0;
+ if (a == 0)
+ return 1;
+ if (b == 0)
+ return -1;
+
+ while (a != ae && b != be) {
+ const QUnicodeTables::Properties *pa = qGetProp(*a);
+ const QUnicodeTables::Properties *pb = qGetProp(*b);
+ if (pa->caseFoldSpecial | pb->caseFoldSpecial)
+ goto special;
+ int diff = (int)(*a + pa->caseFoldDiff) - (int)(*b + pb->caseFoldDiff);
+ if ((diff))
+ return diff;
+ ++a;
+ ++b;
+ }
+ }
+ if (a == ae) {
+ if (b == be)
+ return 0;
+ return -1;
+ }
+ return 1;
+special:
+ ushort abuf[SPECIAL_CASE_MAX_LEN + 1];
+ ushort bbuf[SPECIAL_CASE_MAX_LEN + 1];
+ abuf[0] = bbuf[0] = 0;
+ ushort *ap = abuf;
+ ushort *bp = bbuf;
+ while (1) {
+ if (!*ap) {
+ if (a == ae) {
+ if (!*bp && b == be)
+ return 0;
+ return -1;
+ }
+ foldCase(*(a++), abuf);
+ ap = abuf;
+ }
+ if (!*bp) {
+ if (b == be)
+ return 1;
+ foldCase(*(b++), bbuf);
+ bp = bbuf;
+ }
+ if (*ap != *bp)
+ return (int)*ap - (int)*bp;
+ ++ap;
+ ++bp;
+ }
+}
+
+
+static int ucstricmp(const ushort *a, const ushort *ae, const uchar *b)
+{
+ if (a == 0)
+ return 1;
+ if (b == 0)
+ return -1;
+
+ while (a != ae && *b) {
+ const QUnicodeTables::Properties *pa = qGetProp(*a);
+ const QUnicodeTables::Properties *pb = qGetProp((ushort)*b);
+ if (pa->caseFoldSpecial | pb->caseFoldSpecial)
+ goto special;
+ int diff = (int)(*a + pa->caseFoldDiff) - (int)(*b + pb->caseFoldDiff);
+ if ((diff))
+ return diff;
+ ++a;
+ ++b;
+ }
+ if (a == ae) {
+ if (!*b)
+ return 0;
+ return -1;
+ }
+ return 1;
+
+special:
+ ushort abuf[SPECIAL_CASE_MAX_LEN + 1];
+ ushort bbuf[SPECIAL_CASE_MAX_LEN + 1];
+ abuf[0] = bbuf[0] = 0;
+ ushort *ap = abuf;
+ ushort *bp = bbuf;
+ while (1) {
+ if (!*ap) {
+ if (a == ae) {
+ if (!*bp && !*b)
+ return 0;
+ return -1;
+ }
+ foldCase(*(a++), abuf);
+ ap = abuf;
+ }
+ if (!*bp) {
+ if (!*b)
+ return 1;
+ foldCase(*(b++), bbuf);
+ bp = bbuf;
+ }
+ if (*ap != *bp)
+ return (int)*ap - (int)*bp;
+ ++ap;
+ ++bp;
+ }
+}
+#endif
+
+#if 0
+static QList<QByteArray> blockNames;
+struct BlockInfo
+{
+ int blockIndex;
+ int firstCodePoint;
+ int lastCodePoint;
+};
+static QList<BlockInfo> blockInfoList;
+
+static void readBlocks()
+{
+ QFile f("data/Blocks.txt");
+ if (!f.exists())
+ qFatal("Couldn't find Blocks.txt");
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line = f.readLine();
+ line.resize(line.size() - 1);
+
+ int comment = line.indexOf("#");
+ if (comment >= 0)
+ line = line.left(comment);
+
+ line.replace(" ", "");
+
+ if (line.isEmpty())
+ continue;
+
+ int semicolon = line.indexOf(';');
+ Q_ASSERT(semicolon >= 0);
+ QByteArray codePoints = line.left(semicolon);
+ QByteArray blockName = line.mid(semicolon + 1);
+
+ int blockIndex = blockNames.indexOf(blockName);
+ if (blockIndex < 0) {
+ blockNames.append(blockName);
+ blockIndex = blockNames.indexOf(blockName);
+ Q_ASSERT(blockIndex >= 0);
+ }
+
+ int dotdot = codePoints.indexOf("..");
+ Q_ASSERT(dotdot >= 0);
+ bool unused;
+ int first = codePoints.left(dotdot).toInt(&unused, 16);
+ int last = codePoints.mid(dotdot + 2).toInt(&unused, 16);
+
+ BlockInfo blockInfo = { blockIndex, first, last };
+ blockInfoList.append(blockInfo);
+ }
+}
+#endif
+
+static QList<QByteArray> scriptNames;
+static QHash<int, int> scriptAssignment;
+static QHash<int, int> scriptHash;
+
+struct ExtraBlock {
+ int block;
+ QVector<int> vector;
+};
+
+static QList<ExtraBlock> extraBlockList;
+
+
+static void readScripts()
+{
+ scriptNames.append("Common");
+
+ static const char *files[] = {
+ "data/ScriptsInitial.txt",
+ "data/Scripts.txt",
+ "data/ScriptsCorrections.txt"
+ };
+ enum { fileCount = sizeof(files) / sizeof(const char *) };
+
+ for (int i = 0; i < fileCount; ++i) {
+ QFile f(files[i]);
+ if (!f.exists())
+ qFatal("Couldn't find %s", files[i]);
+
+
+ f.open(QFile::ReadOnly);
+
+ while (!f.atEnd()) {
+ QByteArray line = f.readLine();
+ line.resize(line.size() - 1);
+
+ int comment = line.indexOf("#");
+ if (comment >= 0)
+ line = line.left(comment);
+
+ line.replace(" ", "");
+ line.replace("_", "");
+
+ if (line.isEmpty())
+ continue;
+
+ int semicolon = line.indexOf(';');
+ Q_ASSERT(semicolon >= 0);
+ QByteArray codePoints = line.left(semicolon);
+ QByteArray scriptName = line.mid(semicolon + 1);
+
+ int scriptIndex = scriptNames.indexOf(scriptName);
+ if (scriptIndex < 0) {
+ scriptNames.append(scriptName);
+ scriptIndex = scriptNames.indexOf(scriptName);
+ Q_ASSERT(scriptIndex >= 0);
+ }
+
+ int dotdot = codePoints.indexOf("..");
+ bool unused;
+ int first = -1, last = -1;
+ if (dotdot >= 0) {
+ first = codePoints.left(dotdot).toInt(&unused, 16);
+ last = codePoints.mid(dotdot + 2).toInt(&unused, 16);
+ } else {
+ first = codePoints.toInt(&unused, 16);
+ }
+
+ if (last != -1) {
+ for (int i = first; i <= last; ++i)
+ scriptAssignment[i] = scriptIndex;
+ } else {
+ scriptAssignment[first] = scriptIndex;
+ }
+ }
+ }
+}
+
+
+static int scriptSentinel = 0;
+
+QByteArray createScriptEnumDeclaration()
+{
+ static const char *specialScripts[] = {
+ "Common",
+ "Arabic",
+ "Armenian",
+ "Bengali",
+ "Cyrillic",
+ "Devanagari",
+ "Georgian",
+ "Greek",
+ "Gujarati",
+ "Gurmukhi",
+ "Hangul",
+ "Hebrew",
+ "Kannada",
+ "Khmer",
+ "Lao",
+ "Malayalam",
+ "Myanmar",
+ "Ogham",
+ "Oriya",
+ "Runic",
+ "Sinhala",
+ "Syriac",
+ "Tamil",
+ "Telugu",
+ "Thaana",
+ "Thai",
+ "Tibetan",
+ "Inherited"
+ };
+ const int specialScriptsCount = sizeof(specialScripts) / sizeof(const char *);
+
+ // generate script enum
+ QByteArray declaration;
+
+ declaration += " // See http://www.unicode.org/reports/tr24/tr24-5.html\n\n";
+ declaration += " enum Script {\n Common";
+
+ int uniqueScripts = 1; // Common
+
+ // output the ones with special processing first
+ for (int i = 1; i < scriptNames.size(); ++i) {
+ QByteArray scriptName = scriptNames.at(i);
+ // does the script require special processing?
+ bool special = false;
+ for (int s = 0; !special && s < specialScriptsCount; ++s) {
+ if (scriptName == specialScripts[s])
+ special = true;
+ }
+ if (!special) {
+ scriptHash[i] = 0; // alias for 'Common'
+ continue;
+ } else {
+ ++uniqueScripts;
+ scriptHash[i] = i;
+ }
+
+ declaration += ",\n ";
+ declaration += scriptName;
+ }
+ declaration += ",\n ScriptCount = Inherited";
+
+ // output the ones that are an alias for 'Common'
+ for (int i = 1; i < scriptNames.size(); ++i) {
+ if (scriptHash.value(i) != 0)
+ continue;
+ QByteArray scriptName = scriptNames.at(i);
+ scriptName += " = Common";
+ declaration += ",\n ";
+ declaration += scriptName;
+ }
+
+ declaration += "\n };\n";
+
+ scriptSentinel = ((uniqueScripts + 16) / 32) * 32; // a multiple of 32
+ declaration += " enum { ScriptSentinel = ";
+ declaration += QByteArray::number(scriptSentinel);
+ declaration += " };\n\n";
+ return declaration;
+}
+
+QByteArray createScriptTableDeclaration()
+{
+ Q_ASSERT(scriptSentinel > 0);
+
+ QByteArray declaration;
+
+ const int unicodeBlockCount = 512; // number of unicode blocks
+ const int unicodeBlockSize = 128; // size of each block
+ declaration = "enum { UnicodeBlockCount = ";
+ declaration += QByteArray::number(unicodeBlockCount);
+ declaration += " }; // number of unicode blocks\n";
+ declaration += "enum { UnicodeBlockSize = ";
+ declaration += QByteArray::number(unicodeBlockSize);
+ declaration += " }; // size of each block\n\n";
+
+ // script table
+ declaration += "namespace QUnicodeTables {\n\nstatic const unsigned char uc_scripts[] = {\n";
+ for (int i = 0; i < unicodeBlockCount; ++i) {
+ int block = (((i << 7) & 0xff00) | ((i & 1) * 0x80));
+ int blockAssignment[unicodeBlockSize];
+ for (int x = 0; x < unicodeBlockSize; ++x) {
+ int codePoint = (i << 7) | x;
+ blockAssignment[x] = scriptAssignment.value(codePoint, 0);
+ }
+ bool allTheSame = true;
+ const int originalScript = blockAssignment[0];
+ const int script = scriptHash.value(originalScript);
+ for (int x = 1; allTheSame && x < unicodeBlockSize; ++x) {
+ const int s = scriptHash.value(blockAssignment[x]);
+ if (s != script)
+ allTheSame = false;
+ }
+
+ if (allTheSame) {
+ declaration += " ";
+ declaration += scriptNames.value(originalScript);
+ declaration += ", /* U+";
+ declaration += QByteArray::number(block, 16).rightJustified(4, '0');
+ declaration += '-';
+ declaration +=
+ QByteArray::number(block + unicodeBlockSize - 1, 16).rightJustified(4, '0');
+ declaration += " */\n";
+ } else {
+ const int value = extraBlockList.size() + scriptSentinel;
+ const int offset =
+ ((value - scriptSentinel) * unicodeBlockSize) + unicodeBlockCount;
+
+ declaration += " ";
+ declaration += QByteArray::number(value);
+ declaration += ", /* U+";
+ declaration += QByteArray::number(block, 16).rightJustified(4, '0');
+ declaration += '-';
+ declaration +=
+ QByteArray::number(block + unicodeBlockSize - 1, 16).rightJustified(4, '0');
+ declaration += " at offset ";
+ declaration += QByteArray::number(offset);
+ declaration += " */\n";
+
+ ExtraBlock extraBlock;
+ extraBlock.block = block;
+ extraBlock.vector.resize(unicodeBlockSize);
+ for (int x = 0; x < unicodeBlockSize; ++x)
+ extraBlock.vector[x] = blockAssignment[x];
+
+ extraBlockList.append(extraBlock);
+ }
+ }
+
+ for (int i = 0; i < extraBlockList.size(); ++i) {
+ const int value = i + scriptSentinel;
+ const int offset =
+ ((value - scriptSentinel) * unicodeBlockSize) + unicodeBlockCount;
+ const ExtraBlock &extraBlock = extraBlockList.at(i);
+ const int block = extraBlock.block;
+
+ declaration += "\n\n /* U+";
+ declaration += QByteArray::number(block, 16).rightJustified(4, '0');
+ declaration += '-';
+ declaration +=
+ QByteArray::number(block + unicodeBlockSize - 1, 16).rightJustified(4, '0');
+ declaration += " at offset ";
+ declaration += QByteArray::number(offset);
+ declaration += " */\n ";
+
+ for (int x = 0; x < extraBlock.vector.size(); ++x) {
+ const int o = extraBlock.vector.at(x);
+
+ declaration += scriptNames.value(o);
+ if (x < extraBlock.vector.size() - 1 || i < extraBlockList.size() - 1)
+ declaration += ',';
+ if ((x & 7) == 7 && x < extraBlock.vector.size() - 1)
+ declaration += "\n ";
+ else
+ declaration += ' ';
+ }
+ }
+ declaration += "\n};\n\n} // namespace QUnicodeTables\n\n";
+
+ qDebug("createScriptTableDeclaration: table size is %d bytes",
+ unicodeBlockCount + (extraBlockList.size() * unicodeBlockSize));
+
+ return declaration;
+}
+
+#if 0
+static void dump(int from, int to)
+{
+ for (int i = from; i <= to; ++i) {
+ UnicodeData d = unicodeData.value(i, UnicodeData(i));
+ qDebug("0x%04x: cat=%d combining=%d dir=%d case=%x mirror=%x joining=%d age=%d",
+ i, d.p.category, d.p.combiningClass, d.p.direction, d.otherCase, d.mirroredChar, d.p.joining, d.p.age);
+ if (d.decompositionType != QChar::NoDecomposition) {
+ qDebug(" decomposition: type=%d, length=%d, first=%x", d.decompositionType, d.decomposition.size(),
+ d.decomposition[0]);
+ }
+ }
+ qDebug(" ");
+}
+#endif
+
+struct PropertyBlock {
+ PropertyBlock() { index = -1; }
+ int index;
+ QList<int> properties;
+ bool operator ==(const PropertyBlock &other) { return properties == other.properties; }
+};
+
+static QByteArray createPropertyInfo()
+{
+ qDebug("createPropertyInfo:");
+
+ const int BMP_BLOCKSIZE=32;
+ const int BMP_SHIFT = 5;
+ const int BMP_END = 0x11000;
+ const int SMP_END = 0x110000;
+ const int SMP_BLOCKSIZE = 256;
+ const int SMP_SHIFT = 8;
+
+ QList<PropertyBlock> blocks;
+ QList<int> blockMap;
+
+ int used = 0;
+
+ for (int block = 0; block < BMP_END/BMP_BLOCKSIZE; ++block) {
+ PropertyBlock b;
+ for (int i = 0; i < BMP_BLOCKSIZE; ++i) {
+ int uc = block*BMP_BLOCKSIZE + i;
+ UnicodeData d = unicodeData.value(uc, UnicodeData(uc));
+ b.properties.append(d.propertyIndex);
+ }
+ int index = blocks.indexOf(b);
+ if (index == -1) {
+ index = blocks.size();
+ b.index = used;
+ used += BMP_BLOCKSIZE;
+ blocks.append(b);
+ }
+ blockMap.append(blocks.at(index).index);
+ }
+
+ int bmp_blocks = blocks.size();
+ Q_ASSERT(blockMap.size() == BMP_END/BMP_BLOCKSIZE);
+
+ for (int block = BMP_END/SMP_BLOCKSIZE; block < SMP_END/SMP_BLOCKSIZE; ++block) {
+ PropertyBlock b;
+ for (int i = 0; i < SMP_BLOCKSIZE; ++i) {
+ int uc = block*SMP_BLOCKSIZE + i;
+ UnicodeData d = unicodeData.value(uc, UnicodeData(uc));
+ b.properties.append(d.propertyIndex);
+ }
+ int index = blocks.indexOf(b);
+ if (index == -1) {
+ index = blocks.size();
+ b.index = used;
+ used += SMP_BLOCKSIZE;
+ blocks.append(b);
+ }
+ blockMap.append(blocks.at(index).index);
+ }
+
+ int bmp_block_data = bmp_blocks*BMP_BLOCKSIZE*2;
+ int bmp_trie = BMP_END/BMP_BLOCKSIZE*2;
+ int bmp_mem = bmp_block_data + bmp_trie;
+ qDebug(" %d unique blocks in BMP.",blocks.size());
+ qDebug(" block data uses: %d bytes", bmp_block_data);
+ qDebug(" trie data uses : %d bytes", bmp_trie);
+
+ int smp_block_data = (blocks.size()- bmp_blocks)*SMP_BLOCKSIZE*2;
+ int smp_trie = (SMP_END-BMP_END)/SMP_BLOCKSIZE*2;
+ int smp_mem = smp_block_data + smp_trie;
+ qDebug(" %d unique blocks in SMP.",blocks.size()-bmp_blocks);
+ qDebug(" block data uses: %d bytes", smp_block_data);
+ qDebug(" trie data uses : %d bytes", smp_trie);
+
+ qDebug("\n properties use : %d bytes", uniqueProperties.size()*20);
+ qDebug(" memory usage: %d bytes", bmp_mem+smp_mem + uniqueProperties.size()*20);
+
+ QByteArray out;
+ out += "static const unsigned short uc_property_trie[] = {\n";
+
+ // first write the map
+ out += " // 0x" + QByteArray::number(BMP_END, 16);
+ for (int i = 0; i < BMP_END/BMP_BLOCKSIZE; ++i) {
+ if (!(i % 8)) {
+ if (!((i*BMP_BLOCKSIZE) % 0x1000))
+ out += "\n";
+ out += "\n ";
+ }
+ out += QByteArray::number(blockMap.at(i) + blockMap.size());
+ out += ", ";
+ }
+ out += "\n\n // 0x" + QByteArray::number(BMP_END, 16) + " - 0x" + QByteArray::number(SMP_END, 16) + "\n";;
+ for (int i = BMP_END/BMP_BLOCKSIZE; i < blockMap.size(); ++i) {
+ if (!(i % 8)) {
+ if (!(i % (0x10000/SMP_BLOCKSIZE)))
+ out += "\n";
+ out += "\n ";
+ }
+ out += QByteArray::number(blockMap.at(i) + blockMap.size());
+ out += ", ";
+ }
+ out += "\n";
+ // write the data
+ for (int i = 0; i < blocks.size(); ++i) {
+ out += "\n";
+ const PropertyBlock &b = blocks.at(i);
+ for (int j = 0; j < b.properties.size(); ++j) {
+ if (!(j % 8))
+ out += "\n ";
+ out += QByteArray::number(b.properties.at(j));
+ out += ", ";
+ }
+ }
+
+ // we reserve one bit more than in the assert below for the sign
+ Q_ASSERT(maxMirroredDiff < (1<<12));
+ Q_ASSERT(maxLowerCaseDiff < (1<<14));
+ Q_ASSERT(maxUpperCaseDiff < (1<<14));
+ Q_ASSERT(maxTitleCaseDiff < (1<<14));
+ Q_ASSERT(maxCaseFoldDiff < (1<<14));
+
+ out += "\n};\n\n"
+
+ "#define GET_PROP_INDEX(ucs4) \\\n"
+ " (ucs4 < 0x" + QByteArray::number(BMP_END, 16) + " \\\n"
+ " ? (uc_property_trie[uc_property_trie[ucs4>>" + QByteArray::number(BMP_SHIFT) +
+ "] + (ucs4 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")]) \\\n"
+ " : (uc_property_trie[uc_property_trie[((ucs4 - 0x" + QByteArray::number(BMP_END, 16) +
+ ")>>" + QByteArray::number(SMP_SHIFT) + ") + 0x" + QByteArray::number(BMP_END/BMP_BLOCKSIZE, 16) + "]"
+ " + (ucs4 & 0x" + QByteArray::number(SMP_BLOCKSIZE-1, 16) + ")]))\n\n"
+ "#define GET_PROP_INDEX_UCS2(ucs2) \\\n"
+ "(uc_property_trie[uc_property_trie[ucs2>>" + QByteArray::number(BMP_SHIFT) +
+ "] + (ucs2 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")])\n\n"
+
+
+ "static const QUnicodeTables::Properties uc_properties [] = {\n";
+
+ // keep in sync with the property declaration
+ for (int i = 0; i < uniqueProperties.size(); ++i) {
+ PropertyFlags p = uniqueProperties.at(i);
+ out += " { ";
+// " ushort category : 8;\n"
+ out += QByteArray::number( p.category );
+ out += ", ";
+// " ushort line_break_class : 8;\n"
+ out += QByteArray::number( p.line_break_class );
+ out += ", ";
+// " ushort direction : 8;\n"
+ out += QByteArray::number( p.direction );
+ out += ", ";
+// " ushort combiningClass :8;\n"
+ out += QByteArray::number( p.combiningClass );
+ out += ", ";
+// " ushort joining : 2;\n"
+ out += QByteArray::number( p.joining );
+ out += ", ";
+// " signed short digitValue : 6;\n /* 5 needed */"
+ out += QByteArray::number( p.digitValue );
+ out += ", ";
+// " ushort unicodeVersion : 4;\n"
+ out += QByteArray::number( p.age );
+ out += ", ";
+// " ushort lowerCaseSpecial : 1;\n"
+// " ushort upperCaseSpecial : 1;\n"
+// " ushort titleCaseSpecial : 1;\n"
+// " ushort caseFoldSpecial : 1;\n"
+ out += QByteArray::number( p.lowerCaseSpecial );
+ out += ", ";
+ out += QByteArray::number( p.upperCaseSpecial );
+ out += ", ";
+ out += QByteArray::number( p.titleCaseSpecial );
+ out += ", ";
+ out += QByteArray::number( p.caseFoldSpecial );
+ out += ", ";
+// " signed short mirrorDiff : 16;\n"
+// " signed short lowerCaseDiff : 16;\n"
+// " signed short upperCaseDiff : 16;\n"
+// " signed short titleCaseDiff : 16;\n"
+// " signed short caseFoldDiff : 16;\n"
+ out += QByteArray::number( p.mirrorDiff );
+ out += ", ";
+ out += QByteArray::number( p.lowerCaseDiff );
+ out += ", ";
+ out += QByteArray::number( p.upperCaseDiff );
+ out += ", ";
+ out += QByteArray::number( p.titleCaseDiff );
+ out += ", ";
+ out += QByteArray::number( p.caseFoldDiff );
+ out += ", ";
+ out += QByteArray::number( p.graphemeBreak );
+ out += ", ";
+ out += QByteArray::number( p.wordBreak );
+ out += ", ";
+ out += QByteArray::number( p.sentenceBreak );
+ out += "},\n";
+ }
+ out += "};\n\n";
+
+ out += "static inline const QUnicodeTables::Properties *qGetProp(uint ucs4)\n"
+ "{\n"
+ " int index = GET_PROP_INDEX(ucs4);\n"
+ " return uc_properties + index;\n"
+ "}\n"
+ "\n"
+ "static inline const QUnicodeTables::Properties *qGetProp(ushort ucs2)\n"
+ "{\n"
+ " int index = GET_PROP_INDEX_UCS2(ucs2);\n"
+ " return uc_properties + index;\n"
+ "}\n"
+ "\n"
+ "Q_CORE_EXPORT const QUnicodeTables::Properties *QUnicodeTables::properties(uint ucs4)\n"
+ "{\n"
+ " int index = GET_PROP_INDEX(ucs4);\n"
+ " return uc_properties + index;\n"
+ "}\n"
+ "\n"
+ "Q_CORE_EXPORT const QUnicodeTables::Properties *QUnicodeTables::properties(ushort ucs2)\n"
+ "{\n"
+ " int index = GET_PROP_INDEX_UCS2(ucs2);\n"
+ " return uc_properties + index;\n"
+ "}\n\n";
+
+ out += "#define CURRENT_VERSION "CURRENT_UNICODE_VERSION"\n\n";
+
+ out += "static const ushort specialCaseMap [] = {";
+ for (int i = 0; i < specialCaseMap.size(); ++i) {
+ if (!(i % 16))
+ out += "\n ";
+ out += QByteArray(" 0x") + QByteArray::number(specialCaseMap.at(i), 16);
+ if (i < specialCaseMap.size() - 1)
+ out += ",";
+ }
+ out += "\n};\n";
+ out += "#define SPECIAL_CASE_MAX_LEN " + QByteArray::number(specialCaseMaxLen) + "\n\n";
+
+ qDebug() << "Special case map uses " << specialCaseMap.size()*2 << "bytes";
+
+ return out;
+}
+
+
+struct DecompositionBlock {
+ DecompositionBlock() { index = -1; }
+ int index;
+ QList<int> decompositionPositions;
+ bool operator ==(const DecompositionBlock &other)
+ { return decompositionPositions == other.decompositionPositions; }
+};
+
+static QByteArray createCompositionInfo()
+{
+ qDebug("createCompositionInfo:");
+
+ const int BMP_BLOCKSIZE=16;
+ const int BMP_SHIFT = 4;
+ const int BMP_END = 0x3400; // start of Han
+ const int SMP_END = 0x30000;
+ const int SMP_BLOCKSIZE = 256;
+ const int SMP_SHIFT = 8;
+
+ if(SMP_END <= highestComposedCharacter)
+ qFatal("end of table smaller than highest composed character at %x", highestComposedCharacter);
+
+ QList<DecompositionBlock> blocks;
+ QList<int> blockMap;
+ QList<unsigned short> decompositions;
+
+ int used = 0;
+ int tableIndex = 0;
+
+ for (int block = 0; block < BMP_END/BMP_BLOCKSIZE; ++block) {
+ DecompositionBlock b;
+ for (int i = 0; i < BMP_BLOCKSIZE; ++i) {
+ int uc = block*BMP_BLOCKSIZE + i;
+ UnicodeData d = unicodeData.value(uc, UnicodeData(uc));
+ if (!d.decomposition.isEmpty()) {
+ int utf16Chars = 0;
+ for (int j = 0; j < d.decomposition.size(); ++j)
+ utf16Chars += d.decomposition.at(j) > 0x10000 ? 2 : 1;
+ decompositions.append(d.decompositionType + (utf16Chars<<8));
+ for (int j = 0; j < d.decomposition.size(); ++j) {
+ int code = d.decomposition.at(j);
+ if (code > 0x10000) {
+ // save as surrogate pair
+ code -= 0x10000;
+ ushort high = code/0x400 + 0xd800;
+ ushort low = code%0x400 + 0xdc00;
+ decompositions.append(high);
+ decompositions.append(low);
+ } else {
+ decompositions.append(code);
+ }
+ }
+ b.decompositionPositions.append(tableIndex);
+ tableIndex += utf16Chars + 1;
+ } else {
+ b.decompositionPositions.append(0xffff);
+ }
+ }
+ int index = blocks.indexOf(b);
+ if (index == -1) {
+ index = blocks.size();
+ b.index = used;
+ used += BMP_BLOCKSIZE;
+ blocks.append(b);
+ }
+ blockMap.append(blocks.at(index).index);
+ }
+
+ int bmp_blocks = blocks.size();
+ Q_ASSERT(blockMap.size() == BMP_END/BMP_BLOCKSIZE);
+
+ for (int block = BMP_END/SMP_BLOCKSIZE; block < SMP_END/SMP_BLOCKSIZE; ++block) {
+ DecompositionBlock b;
+ for (int i = 0; i < SMP_BLOCKSIZE; ++i) {
+ int uc = block*SMP_BLOCKSIZE + i;
+ UnicodeData d = unicodeData.value(uc, UnicodeData(uc));
+ if (!d.decomposition.isEmpty()) {
+ int utf16Chars = 0;
+ for (int j = 0; j < d.decomposition.size(); ++j)
+ utf16Chars += d.decomposition.at(j) > 0x10000 ? 2 : 1;
+ decompositions.append(d.decompositionType + (utf16Chars<<8));
+ for (int j = 0; j < d.decomposition.size(); ++j) {
+ int code = d.decomposition.at(j);
+ if (code > 0x10000) {
+ // save as surrogate pair
+ code -= 0x10000;
+ ushort high = code/0x400 + 0xd800;
+ ushort low = code%0x400 + 0xdc00;
+ decompositions.append(high);
+ decompositions.append(low);
+ } else {
+ decompositions.append(code);
+ }
+ }
+ b.decompositionPositions.append(tableIndex);
+ tableIndex += utf16Chars + 1;
+ } else {
+ b.decompositionPositions.append(0xffff);
+ }
+ }
+ int index = blocks.indexOf(b);
+ if (index == -1) {
+ index = blocks.size();
+ b.index = used;
+ used += SMP_BLOCKSIZE;
+ blocks.append(b);
+ }
+ blockMap.append(blocks.at(index).index);
+ }
+
+ int bmp_block_data = bmp_blocks*BMP_BLOCKSIZE*2;
+ int bmp_trie = BMP_END/BMP_BLOCKSIZE*2;
+ int bmp_mem = bmp_block_data + bmp_trie;
+ qDebug(" %d unique blocks in BMP.",blocks.size());
+ qDebug(" block data uses: %d bytes", bmp_block_data);
+ qDebug(" trie data uses : %d bytes", bmp_trie);
+ qDebug(" memory usage: %d bytes", bmp_mem);
+
+ int smp_block_data = (blocks.size()- bmp_blocks)*SMP_BLOCKSIZE*2;
+ int smp_trie = (SMP_END-BMP_END)/SMP_BLOCKSIZE*2;
+ int smp_mem = smp_block_data + smp_trie;
+ qDebug(" %d unique blocks in SMP.",blocks.size()-bmp_blocks);
+ qDebug(" block data uses: %d bytes", smp_block_data);
+ qDebug(" trie data uses : %d bytes", smp_trie);
+
+ qDebug("\n decomposition table use : %d bytes", decompositions.size()*2);
+ qDebug(" memory usage: %d bytes", bmp_mem+smp_mem + decompositions.size()*2);
+
+ QByteArray out;
+
+ out += "static const unsigned short uc_decomposition_trie[] = {\n";
+
+ // first write the map
+ out += " // 0 - 0x" + QByteArray::number(BMP_END, 16);
+ for (int i = 0; i < BMP_END/BMP_BLOCKSIZE; ++i) {
+ if (!(i % 8)) {
+ if (!((i*BMP_BLOCKSIZE) % 0x1000))
+ out += "\n";
+ out += "\n ";
+ }
+ out += QByteArray::number(blockMap.at(i) + blockMap.size());
+ out += ", ";
+ }
+ out += "\n\n // 0x" + QByteArray::number(BMP_END, 16) + " - 0x" + QByteArray::number(SMP_END, 16) + "\n";;
+ for (int i = BMP_END/BMP_BLOCKSIZE; i < blockMap.size(); ++i) {
+ if (!(i % 8)) {
+ if (!(i % (0x10000/SMP_BLOCKSIZE)))
+ out += "\n";
+ out += "\n ";
+ }
+ out += QByteArray::number(blockMap.at(i) + blockMap.size());
+ out += ", ";
+ }
+ out += "\n";
+ // write the data
+ for (int i = 0; i < blocks.size(); ++i) {
+ out += "\n";
+ const DecompositionBlock &b = blocks.at(i);
+ for (int j = 0; j < b.decompositionPositions.size(); ++j) {
+ if (!(j % 8))
+ out += "\n ";
+ out += "0x" + QByteArray::number(b.decompositionPositions.at(j), 16);
+ out += ", ";
+ }
+ }
+
+ out += "\n};\n\n"
+
+ "#define GET_DECOMPOSITION_INDEX(ucs4) \\\n"
+ " (ucs4 < 0x" + QByteArray::number(BMP_END, 16) + " \\\n"
+ " ? (uc_decomposition_trie[uc_decomposition_trie[ucs4>>" + QByteArray::number(BMP_SHIFT) +
+ "] + (ucs4 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")]) \\\n"
+ " : (ucs4 < 0x" + QByteArray::number(SMP_END, 16) + "\\\n"
+ " ? uc_decomposition_trie[uc_decomposition_trie[((ucs4 - 0x" + QByteArray::number(BMP_END, 16) +
+ ")>>" + QByteArray::number(SMP_SHIFT) + ") + 0x" + QByteArray::number(BMP_END/BMP_BLOCKSIZE, 16) + "]"
+ " + (ucs4 & 0x" + QByteArray::number(SMP_BLOCKSIZE-1, 16) + ")]\\\n"
+ " : 0xffff))\n\n"
+
+ "static const unsigned short uc_decomposition_map[] = {\n";
+
+ for (int i = 0; i < decompositions.size(); ++i) {
+ if (!(i % 8)) {
+ out += "\n ";
+ }
+ out += "0x" + QByteArray::number(decompositions.at(i), 16);
+ out += ", ";
+ }
+
+ out += "\n};\n\n";
+
+ return out;
+}
+
+static QByteArray createLigatureInfo()
+{
+ qDebug("createLigatureInfo: numLigatures=%d", numLigatures);
+
+ QList<DecompositionBlock> blocks;
+ QList<int> blockMap;
+ QList<unsigned short> ligatures;
+
+ const int BMP_BLOCKSIZE = 32;
+ const int BMP_SHIFT = 5;
+ const int BMP_END = 0x3100;
+ Q_ASSERT(highestLigature < BMP_END);
+
+ int used = 0;
+ int tableIndex = 0;
+
+ for (int block = 0; block < BMP_END/BMP_BLOCKSIZE; ++block) {
+ DecompositionBlock b;
+ for (int i = 0; i < BMP_BLOCKSIZE; ++i) {
+ int uc = block*BMP_BLOCKSIZE + i;
+ QList<Ligature> l = ligatureHashes.value(uc);
+ if (!l.isEmpty()) {
+ b.decompositionPositions.append(tableIndex);
+ qSort(l);
+
+ ligatures.append(l.size());
+ for (int i = 0; i < l.size(); ++i) {
+ Q_ASSERT(l.at(i).u2 == uc);
+ ligatures.append(l.at(i).u1);
+ ligatures.append(l.at(i).ligature);
+ }
+ tableIndex += 2*l.size() + 1;
+ } else {
+ b.decompositionPositions.append(0xffff);
+ }
+ }
+ int index = blocks.indexOf(b);
+ if (index == -1) {
+ index = blocks.size();
+ b.index = used;
+ used += BMP_BLOCKSIZE;
+ blocks.append(b);
+ }
+ blockMap.append(blocks.at(index).index);
+ }
+
+ int bmp_blocks = blocks.size();
+ Q_ASSERT(blockMap.size() == BMP_END/BMP_BLOCKSIZE);
+
+ int bmp_block_data = bmp_blocks*BMP_BLOCKSIZE*2;
+ int bmp_trie = BMP_END/BMP_BLOCKSIZE*2;
+ int bmp_mem = bmp_block_data + bmp_trie;
+ qDebug(" %d unique blocks in BMP.",blocks.size());
+ qDebug(" block data uses: %d bytes", bmp_block_data);
+ qDebug(" trie data uses : %d bytes", bmp_trie);
+ qDebug(" ligature data uses : %d bytes", ligatures.size()*2);
+ qDebug(" memory usage: %d bytes", bmp_mem + ligatures.size() * 2);
+
+ QByteArray out;
+
+
+ out += "static const unsigned short uc_ligature_trie[] = {\n";
+
+ // first write the map
+ out += " // 0 - 0x" + QByteArray::number(BMP_END, 16);
+ for (int i = 0; i < BMP_END/BMP_BLOCKSIZE; ++i) {
+ if (!(i % 8)) {
+ if (!((i*BMP_BLOCKSIZE) % 0x1000))
+ out += "\n";
+ out += "\n ";
+ }
+ out += QByteArray::number(blockMap.at(i) + blockMap.size());
+ out += ", ";
+ }
+ out += "\n";
+ // write the data
+ for (int i = 0; i < blocks.size(); ++i) {
+ out += "\n";
+ const DecompositionBlock &b = blocks.at(i);
+ for (int j = 0; j < b.decompositionPositions.size(); ++j) {
+ if (!(j % 8))
+ out += "\n ";
+ out += "0x" + QByteArray::number(b.decompositionPositions.at(j), 16);
+ out += ", ";
+ }
+ }
+ out += "\n};\n\n"
+
+ "#define GET_LIGATURE_INDEX(u2) "
+ "(u2 < 0x" + QByteArray::number(BMP_END, 16) + " ? "
+ "uc_ligature_trie[uc_ligature_trie[u2>>" + QByteArray::number(BMP_SHIFT) +
+ "] + (u2 & 0x" + QByteArray::number(BMP_BLOCKSIZE-1, 16)+ ")] : 0xffff);\n\n"
+
+ "static const unsigned short uc_ligature_map [] = {\n";
+
+ for (int i = 0; i < ligatures.size(); ++i) {
+ if (!(i % 8)) {
+ out += "\n ";
+ }
+ out += "0x" + QByteArray::number(ligatures.at(i), 16);
+ out += ", ";
+ }
+
+ out += "\n};\n\n";
+
+ return out;
+}
+
+QByteArray createCasingInfo()
+{
+ QByteArray out;
+
+ out += "struct CasingInfo {\n"
+ " uint codePoint : 16;\n"
+ " uint flags : 8;\n"
+ " uint offset : 8;\n"
+ "};\n\n";
+
+ return out;
+}
+
+int main(int, char **)
+{
+ initCategoryMap();
+ initDirectionMap();
+ initDecompositionMap();
+ initGraphemeBreak();
+ initWordBreak();
+ initSentenceBreak();
+
+ readUnicodeData();
+ readBidiMirroring();
+ readArabicShaping();
+ readDerivedAge();
+ readCompositionExclusion();
+ readLineBreak();
+ readSpecialCasing();
+ readCaseFolding();
+ // readBlocks();
+ readScripts();
+ readGraphemeBreak();
+ readWordBreak();
+ readSentenceBreak();
+
+ computeUniqueProperties();
+ QByteArray properties = createPropertyInfo();
+ QByteArray compositions = createCompositionInfo();
+ QByteArray ligatures = createLigatureInfo();
+ QByteArray normalizationCorrections = createNormalizationCorrections();
+ QByteArray scriptEnumDeclaration = createScriptEnumDeclaration();
+ QByteArray scriptTableDeclaration = createScriptTableDeclaration();
+
+ QFile f("../../src/corelib/tools/qunicodetables.cpp");
+ f.open(QFile::WriteOnly|QFile::Truncate);
+
+ QByteArray header =
+ "/****************************************************************************\n"
+ "**\n"
+ "** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).\n"
+ "**\n"
+ "** This file is part of the $MODULE$ of the Qt Toolkit.\n"
+ "**\n"
+ "** $TROLLTECH_DUAL_LICENSE$\n"
+ "**\n"
+ "** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n"
+ "** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n"
+ "**\n"
+ "****************************************************************************/\n\n"
+
+ "/* This file is autogenerated from the Unicode 5.0 database. Do not edit */\n\n";
+
+ QByteArray warning =
+ "//\n"
+ "// W A R N I N G\n"
+ "// -------------\n"
+ "//\n"
+ "// This file is not part of the Qt API. It exists for the convenience\n"
+ "// of internal files. This header file may change from version to version\n"
+ "// without notice, or even be removed.\n"
+ "//\n"
+ "// We mean it.\n"
+ "//\n\n";
+
+ f.write(header);
+ f.write("QT_BEGIN_NAMESPACE\n\n");
+ f.write(properties);
+ f.write(compositions);
+ f.write(ligatures);
+ f.write(normalizationCorrections);
+ f.write(scriptTableDeclaration);
+ f.write("\nQT_END_NAMESPACE\n");
+ f.close();
+
+ f.setFileName("../../src/corelib/tools/qunicodetables_p.h");
+ f.open(QFile::WriteOnly | QFile::Truncate);
+ f.write(header);
+ f.write(warning);
+ f.write("#ifndef QUNICODETABLES_P_H\n"
+ "#define QUNICODETABLES_P_H\n\n"
+ "#include <QtCore/qchar.h>\n\n"
+ "QT_BEGIN_NAMESPACE\n\n");
+ f.write("namespace QUnicodeTables {\n");
+ f.write(property_string);
+ f.write("\n");
+ f.write(scriptEnumDeclaration);
+ f.write("\n");
+ f.write(lineBreakClass);
+ f.write("\n");
+ f.write(methods);
+ f.write("\n");
+ f.write(grapheme_break_string);
+ f.write("\n");
+ f.write(word_break_string);
+ f.write("\n");
+ f.write(sentence_break_string);
+ f.write("\n}\n\n"
+ "QT_END_NAMESPACE\n\n"
+ "#endif\n");
+ f.close();
+
+ qDebug() << "maxMirroredDiff = " << hex << maxMirroredDiff;
+ qDebug() << "maxLowerCaseDiff = " << hex << maxLowerCaseDiff;
+ qDebug() << "maxUpperCaseDiff = " << hex << maxUpperCaseDiff;
+ qDebug() << "maxTitleCaseDiff = " << hex << maxTitleCaseDiff;
+ qDebug() << "maxCaseFoldDiff = " << hex << maxCaseFoldDiff;
+#if 0
+// dump(0, 0x7f);
+// dump(0x620, 0x640);
+// dump(0x10000, 0x10020);
+// dump(0x10800, 0x10820);
+
+ qDebug("decompositionLength used:");
+ int totalcompositions = 0;
+ int sum = 0;
+ for (int i = 1; i < 20; ++i) {
+ qDebug(" length %d used %d times", i, decompositionLength.value(i, 0));
+ totalcompositions += i*decompositionLength.value(i, 0);
+ sum += decompositionLength.value(i, 0);
+ }
+ qDebug(" len decomposition map %d, average length %f, num composed chars %d",
+ totalcompositions, (float)totalcompositions/(float)sum, sum);
+ qDebug("highest composed character %x", highestComposedCharacter);
+ qDebug("num ligatures = %d highest=%x, maxLength=%d", numLigatures, highestLigature, longestLigature);
+
+ qBubbleSort(ligatures);
+ for (int i = 0; i < ligatures.size(); ++i)
+ qDebug("%s", ligatures.at(i).data());
+
+// qDebug("combiningClass usage:");
+// int numClasses = 0;
+// for (int i = 0; i < 255; ++i) {
+// int num = combiningClassUsage.value(i, 0);
+// if (num) {
+// ++numClasses;
+// qDebug(" combiningClass %d used %d times", i, num);
+// }
+// }
+// qDebug("total of %d combining classes used", numClasses);
+
+#endif
+}
+
diff --git a/util/unicode/unicode.pro b/util/unicode/unicode.pro
new file mode 100644
index 0000000000..a53f70ac92
--- /dev/null
+++ b/util/unicode/unicode.pro
@@ -0,0 +1,2 @@
+SOURCES += main.cpp
+QT = core
diff --git a/util/unicode/writingSystems.sh b/util/unicode/writingSystems.sh
new file mode 100755
index 0000000000..0fdc7a3dc3
--- /dev/null
+++ b/util/unicode/writingSystems.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# This script generates the QFontDatabase::WritingSystem enum. It
+# uses the Unicode 4.0 Scripts.txt data file as the source, with the
+# following modifications:
+#
+# * Inherited is removed
+# * East Asian scripts (chapter 11) are renamed to: SimplifiedChinese,
+# TraditionalChinese, Japanese, Korean, Vietnamese
+# * Additiona Modern scripts (chapter 12) are removed
+# * Archaic scripts (chapter 13) are removed
+
+grep -Ev "(^[[:space:]]*#|^$)" data/Scripts.txt \
+ | awk '{print $3}' \
+ | grep -Ev "(Inherited|Hangul|Ogham|Old_Italic|Runic|Gothic|Ugaritic|Linear_B|Cypriot|Katakana_Or_Hiragana|Ethiopic|Mongolian|Osmanya|Cherokee|Canadian_Aboriginal|Deseret|Shavian)" \
+ | sed -e s,_,,g -e 's,^Common$,Any,' -e 's,^Hiragana$,SimplifiedChinese NEWLINE TraditionalChinese,' -e 's,^Katakana$,Japanese,' -e 's,^Bopomofo$,Korean,' -e 's,^Han$,Vietnamese,' -e 's,^#$,,' \
+ | uniq > writingSystems
+echo "" >> writingSystems
+echo "Other" >> writingSystems
diff --git a/util/unicode/x11/encodings.in b/util/unicode/x11/encodings.in
new file mode 100644
index 0000000000..f1578784be
--- /dev/null
+++ b/util/unicode/x11/encodings.in
@@ -0,0 +1,71 @@
+# This file contains the mapping of xlfds to mib enum (used to convert
+# unicode to the xlfd encoding) and the QFontDatabase::WritingSystem's
+# they support the format is 'xlfd mib script,...'
+#
+# Latin
+iso8859-1 4 Latin
+iso8859-2 5 Latin
+iso8859-3 6 Latin
+iso8859-4 7 Latin
+iso8859-9 12 Latin
+iso8859-10 13 Latin
+iso8859-13 109 Latin
+iso8859-14 110 Latin
+iso8859-15 111 Latin
+hp-roman8 2004 Latin
+#
+# Cyrillic
+iso8859-5 8 Cyrillic
+*-cp1251 2251 Cyrillic
+koi8-ru 2084 Cyrillic
+koi8-u 2088 Cyrillic
+koi8-r 2084 Cyrillic
+#
+# Greek
+iso8859-7 10 Greek
+#
+#
+# Hebrew
+iso8859-8 85 Hebrew
+#
+# China, Mainland
+gb18030-0 -114 SimplifiedChinese
+gb18030.2000-0 -113 SimplifiedChinese
+gbk-0 -113 SimplifiedChinese
+gb2312.*-0 57 SimplifiedChinese
+#
+# Japan
+jisx0201*-0 15 Japanese
+jisx0208*-0 63 Japanese
+#
+# Korea
+ksc5601*-* 36 Korean
+#
+# Hong Kong
+big5hkscs-0 -2101 TraditionalChinese
+hkscs-1 -2101 TraditionalChinese
+#
+# Taiwan
+big5*-* -2026 TraditionalChinese
+#
+# Tamil
+tscii-* 2028 Tamil
+#
+# Thai
+tis620*-* 2259 Thai
+iso8859-11 2259 Thai
+#
+# Lao
+mulelao-1 -4242 Lao
+#
+# Ethiopic
+ethiopic-unicode 0 Other
+#
+# Unicode
+iso10646-1 0 Latin,Greek,Cyrillic,Armenian,Hebrew,Arabic,Thai,Lao,Tibetan,Georgian,SimplifiedChinese,TraditionalChinese, Japanese,Korean,Vietnamese,Yi,Tagalog,Hanunoo,Buhid,Tagbanwa,Limbu,TaiLe,Braille,Other
+unicode-* 0 Latin,Greek,Cyrillic,Armenian,Hebrew,Arabic,Thai,Lao,Tibetan,Georgian,SimplifiedChinese,TraditionalChinese, Japanese,Korean,Vietnamese,Yi,Tagalog,Hanunoo,Buhid,Tagbanwa,Limbu,TaiLe,Braille,Other
+#
+# Other
+*-symbol 0 Other
+*-fontspecific 0 Other
+fontspecific-* 0 Other
diff --git a/util/unicode/x11/makeencodings b/util/unicode/x11/makeencodings
new file mode 100755
index 0000000000..841fc404ab
--- /dev/null
+++ b/util/unicode/x11/makeencodings
@@ -0,0 +1,135 @@
+#!/usr/bin/perl
+
+use strict;
+
+open IN, "encodings.in"
+ or die "Can't open in\n";
+open out, ">encodings.c"
+ or die "Can't open out\n";
+
+my @qwritingSystems = (
+ "Any",
+ "Latin",
+ "Greek",
+ "Cyrillic",
+ "Armenian",
+ "Hebrew",
+ "Arabic",
+ "Syriac",
+ "Thaana",
+ "Devanagari",
+ "Bengali",
+ "Gurmukhi",
+ "Gujarati",
+ "Oriya",
+ "Tamil",
+ "Telugu",
+ "Kannada",
+ "Malayalam",
+ "Sinhala",
+ "Thai",
+ "Lao",
+ "Tibetan",
+ "Myanmar",
+ "Georgian",
+ "Khmer",
+ "SimplifiedChinese",
+ "TraditionalChinese",
+ "Japanese",
+ "Korean",
+ "Vietnamese",
+ "Yi",
+ "Tagalog",
+ "Hanunoo",
+ "Buhid",
+ "Tagbanwa",
+ "Limbu",
+ "TaiLe",
+ "Braille",
+ "Other"
+);
+
+my $writingSystemsCount = @qwritingSystems;
+
+my $num = 0;
+my @xlfd = ();
+my @mib = ();
+my @writingSystems = ();
+
+my $i;
+
+while (<IN>) {
+ chomp;
+ s/#.*//;
+ if ( index( $_, ' ' ) > -1 ) {
+ chomp;
+ my @line = split( / /, $_ );
+ $xlfd[$num] = $line[0];
+ $mib[$num] = $line[1];
+ $writingSystems[$num] = $line[2];
+
+ $num = $num + 1;
+ }
+
+}
+
+print out "#define make_tag( c1, c2, c3, c4 ) \\\n";
+print out " ((((unsigned int)c1)<<24) | (((unsigned int)c2)<<16) | \\\n";
+print out " (((unsigned int)c3)<<8) | ((unsigned int)c4))\n\n";
+
+print out "struct XlfdEncoding {\n const char *name;\n int id;\n";
+print out " int mib;\n unsigned int hash1;\n unsigned int hash2;\n};\n\n";
+
+print out "static const XlfdEncoding xlfd_encoding[] = {\n";
+$i = 0;
+while( $i < $num ) {
+ my $x = $xlfd[$i];
+ my $hash1 = "make_tag('".substr($x,0,1)."','".substr($x,1,1)."','".substr($x,2,1)."','".substr($x,3,1)."')";
+ if( index( $x, "*" ) > -1 && index( $x, "*" ) < 4 ) {
+ $hash1 = "0";
+ }
+ my $idx = length( $x ) - 4;
+ my $hash2 = "make_tag('".substr($x,$idx,1)."','".substr($x,$idx+1,1)."','".substr($x,$idx+2,1)."','".substr($x,$idx+3,1)."')";
+ if( index( $x, "*", $idx ) > -1 ) {
+ $hash2 = "0";
+ }
+ print out " { \"".$xlfd[$i]."\", ".$i.", ".$mib[$i].
+ ", ".$hash1.", ".$hash2." },\n";
+ $i = $i + 1;
+}
+print out " { 0, 0, 0, 0, 0 }\n};\n\n";
+
+print out "static const char writingSystems_for_xlfd_encoding[".$num."][".$writingSystemsCount.
+"] = { \n";
+$i = 0;
+while( $i < $num ) {
+ my $j = 0;
+ my @s = split( /,/, $writingSystems[$i] );
+ print out " // ".$xlfd[$i]."\n";
+ print out " { ";
+ while( $j < $writingSystemsCount ) {
+ if( grep( /^$qwritingSystems[$j]$/, @s ) ) {
+ print out "1";
+ } else {
+ print out "0";
+ }
+ $j = $j + 1;
+ if ( $j < $writingSystemsCount ) {
+ print out ", ";
+ if ( !(($j) % 10) ) {
+ print out "\n ";
+ }
+ }
+ }
+ $i = $i + 1;
+ if ( $i < $num ) {
+ print out " },\n";
+ } else {
+ print out " }\n";
+ }
+}
+print out "\n};\n\n";
+
+
+
+close out;
diff --git a/util/webkit/mkdist-webkit b/util/webkit/mkdist-webkit
new file mode 100755
index 0000000000..1268b5e70d
--- /dev/null
+++ b/util/webkit/mkdist-webkit
@@ -0,0 +1,314 @@
+#!/bin/bash
+
+repository="git://git.dev.troll.no/webkit-mirror"
+tag="qtwebkit-merged-into-qt-4-4"
+
+excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/cf WebCore/platform/gtk WebCore/platform/chromium"
+excluded_directories="$excluded_directories PageLoadTests"
+excluded_directories="$excluded_directories BugsSite"
+excluded_directories="$excluded_directories PlanetWebKit"
+excluded_directories="$excluded_directories SunSpider"
+excluded_directories="$excluded_directories WebKitExamplePlugins"
+
+excluded_directories="$excluded_directories symbols.filter"
+excluded_directories="$excluded_directories JavaScriptCore/Makefile"
+excluded_directories="$excluded_directories Makefile"
+excluded_directories="$excluded_directories Makefile.shared"
+excluded_directories="$excluded_directories GNUmakefile.am"
+excluded_directories="$excluded_directories WebCore/Makefile"
+excluded_directories="$excluded_directories WebKit/Makefile"
+
+excluded_directories="$excluded_directories JavaScriptCore/GNUmakefile.am"
+excluded_directories="$excluded_directories JavaScriptCore/Configurations"
+excluded_directories="$excluded_directories JavaScriptCore/JavaScriptCore.exp"
+excluded_directories="$excluded_directories JavaScriptCore/JavaScriptCore.xcodeproj"
+excluded_directories="$excluded_directories JavaScriptCore/tests"
+excluded_directories="$excluded_directories JavaScriptCore/API/tests"
+excluded_directories="$excluded_directories JavaScriptCore/JavaScriptCore.vcproj"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/wx"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/gtk"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/mac"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/win"
+
+excluded_directories="$excluded_directories WebCore/WebCore.vcproj"
+excluded_directories="$excluded_directories WebCore/DerivedSources.make"
+excluded_directories="$excluded_directories WebCore/GNUmakefile.am"
+excluded_directories="$excluded_directories WebCore/WebCore.base.exp"
+excluded_directories="$excluded_directories WebCore/WebCore.xcodeproj"
+excluded_directories="$excluded_directories WebCore/Configurations"
+
+excluded_directories="$excluded_directories WebCore/bridge/objc"
+excluded_directories="$excluded_directories WebCore/bridge/testbindings.pro"
+excluded_directories="$excluded_directories WebCore/bindings/objc"
+
+excluded_directories="$excluded_directories JavaScriptCore/icu"
+
+excluded_directories="$excluded_directories WebCore/icu"
+# remove CollatorICU from SOURCES in JavaScriptCore.pri first
+#excluded_directories="$excluded_directories JavaScriptCore/wtf/unicode/icu"
+
+excluded_directories="$excluded_directories WebCore/loader/mac"
+excluded_directories="$excluded_directories WebCore/loader/win"
+
+excluded_directories="$excluded_directories WebCore/page/gtk"
+excluded_directories="$excluded_directories WebCore/page/mac"
+excluded_directories="$excluded_directories WebCore/page/wx"
+
+excluded_directories="$excluded_directories WebCore/history/mac"
+
+excluded_directories="$excluded_directories WebCore/editing/mac"
+excluded_directories="$excluded_directories WebCore/editing/wx"
+
+excluded_directories="$excluded_directories WebCore/platform/text/wx"
+excluded_directories="$excluded_directories WebCore/platform/text/gtk"
+
+
+excluded_directories="$excluded_directories WebCore/manual-tests"
+
+excluded_directories="$excluded_directories WebCore/platform/network/cf"
+excluded_directories="$excluded_directories WebCore/platform/network/curl"
+excluded_directories="$excluded_directories WebCore/platform/network/mac"
+excluded_directories="$excluded_directories WebCore/platform/network/win"
+excluded_directories="$excluded_directories WebCore/platform/network/soup"
+
+excluded_directories="$excluded_directories WebCore/platform/graphics/cg"
+excluded_directories="$excluded_directories WebCore/platform/graphics/cairo"
+excluded_directories="$excluded_directories WebCore/platform/graphics/gtk"
+excluded_directories="$excluded_directories WebCore/platform/graphics/wx"
+excluded_directories="$excluded_directories WebCore/platform/graphics/mac"
+excluded_directories="$excluded_directories WebCore/platform/graphics/win"
+excluded_directories="$excluded_directories WebCore/platform/graphics/skia"
+
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/bmp"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/gif"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/zlib"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/png"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/ico"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/jpeg"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/xbm"
+
+excluded_directories="$excluded_directories WebCore/plugins/wx"
+excluded_directories="$excluded_directories WebCore/plugins/gtk"
+
+excluded_directories="$excluded_directories WebCore/platform/symbian WebCore/platform/wx"
+excluded_directories="$excluded_directories WebKit/gtk"
+excluded_directories="$excluded_directories WebKit/win"
+excluded_directories="$excluded_directories WebKit/mac"
+excluded_directories="$excluded_directories WebKit/wx"
+excluded_directories="$excluded_directories WebKit/cf"
+
+excluded_directories="$excluded_directories WebCore/svg/graphics/cg"
+excluded_directories="$excluded_directories WebCore/svg/graphics/cairo"
+excluded_directories="$excluded_directories WebCore/svg/graphics/filters/cg"
+excluded_directories="$excluded_directories WebCore/svg/graphics/mac"
+
+excluded_directories="$excluded_directories WebKit/English.lproj WebKit/WebKit.xcodeproj"
+excluded_directories="$excluded_directories WebCore/English.lproj"
+
+exclude_with_exceptions_list="WebCore/platform/win/:WebCore/platform/win/SystemTimeWin.cpp"
+
+files_to_remove=""
+files_to_remove="$files_to_remove WebKit/qt/Api/qwebnetworkinterface.cpp"
+files_to_remove="$files_to_remove WebKit/qt/Api/qwebnetworkinterface.h"
+files_to_remove="$files_to_remove WebKit/qt/Api/qwebnetworkinterface_p.h"
+files_to_remove="$files_to_remove WebKit/qt/Api/qcookiejar.h"
+files_to_remove="$files_to_remove WebKit/qt/Api/qcookiejar.cpp"
+
+files_to_remove="$files_to_remove WebCore/rendering/RenderThemeMac.mm"
+files_to_remove="$files_to_remove acinclude.m4"
+files_to_remove="$files_to_remove autogen.sh"
+files_to_remove="$files_to_remove configure.ac"
+
+files_to_remove="$files_to_remove WebKit.pro"
+
+files_to_remove="$files_to_remove JavaScriptCore/jsc.pro"
+
+files_to_remove="$files_to_remove WebKit/qt/QtLauncher/QtLauncher.pro"
+files_to_remove="$files_to_remove WebKit/qt/QtLauncher/main.cpp"
+
+files_to_remove="$files_to_remove JavaScriptCore/AllInOneFile.cpp"
+files_to_remove="$files_to_remove JavaScriptCore/JavaScriptCore.scons"
+files_to_remove="$files_to_remove JavaScriptCore/JavaScriptCoreSources.bkl"
+files_to_remove="$files_to_remove JavaScriptCore/SConstruct"
+files_to_remove="$files_to_remove JavaScriptCore/jscore.bkl"
+
+files_to_remove="$files_to_remove WebCore/SConstruct"
+files_to_remove="$files_to_remove WebCore/WebCore.scons"
+files_to_remove="$files_to_remove WebCore/WebCoreSources.bkl"
+files_to_remove="$files_to_remove WebCore/webcore-base.bkl"
+files_to_remove="$files_to_remove WebCore/webcore-wx.bkl"
+
+if [ $# -eq 1 ]; then
+ tag=$1
+fi
+
+if [ $# -eq 2 ]; then
+ repository=$1
+ tag=$2
+fi
+
+die() {
+ echo $*
+ exit 1
+}
+
+require_clean_work_tree() {
+ # test if working tree is dirty
+ git rev-parse --verify HEAD > /dev/null &&
+ git update-index --refresh &&
+ git diff-files --quiet &&
+ git diff-index --cached --quiet HEAD ||
+ die "Working tree is dirty"
+}
+
+which qmake >/dev/null 2>/dev/null
+if [ "$?" != 0 ]; then
+ die "abort: Could not locate qmake in your PATH"
+fi
+
+test -z "$(git rev-parse --show-cdup)" || {
+ exit=$?
+ echo >&2 "You need to run this command from the toplevel of the working tree."
+ exit $exit
+}
+
+echo "checking working tree"
+require_clean_work_tree
+
+revCount=`git ls-remote $repository | grep $tag | awk '{print $1}' | wc -l`
+if [ "$revCount" != 1 ]; then
+ die "Cannot parse $tag into a revision. It seems ambiguous".
+fi
+
+rev=`git ls-remote $repository | grep -E "^.+$tag$" | awk '{print $1}'`
+
+tarball=`mktemp /tmp/webkit-snapshot.tar` || exit 1
+echo "creating $tarball"
+
+echo "archiving webkit from $repository $tag ( $rev )"
+
+git archive --remote=$repository $rev > $tarball || exit 1
+
+echo "removing unwanted files and directories"
+for dir in $excluded_directories; do
+ echo " removing $dir"
+ tar --delete --file=$tarball $dir
+done
+
+for item in $exclude_with_exceptions_list; do
+ dir=`echo $item | awk -F : '{print $1}'`
+ include=`echo $item | awk -F : '{print $2}'`
+ echo " removing $dir except $include"
+ files=`tar --list --file=$tarball $dir | grep -v -E "^$dir\$" | grep -v $include`
+ tar --delete --file=$tarball $files
+done
+
+for file in $files_to_remove; do
+ echo " removing $file"
+ tar --delete --file=$tarball $file
+done
+
+echo "done!"
+
+srcdir=src/3rdparty/webkit
+absSrcDir=$PWD/$srcdir
+localDiff=
+lastImportRevison=
+
+echo "replacing $srcdir"
+if [ -d $srcdir ]; then
+ lastImportRevison=`tail -n 1 src/3rdparty/webkit/VERSION`
+ git ls-files $srcdir | xargs rm
+ git ls-files -z src/3rdparty/webkit | git update-index --force-remove -z --stdin
+ lastImport=`git rev-list --max-count=1 HEAD -- src/3rdparty/webkit/VERSION`
+ changes=`git rev-list --no-merges --reverse $lastImport.. -- src/3rdparty/webkit`
+ localDiff=/tmp/webkit_patch
+ echo -n>$localDiff
+ for change in $changes; do
+ echo "Saving commit $change"
+ git show -p --stat "--pretty=format:%nFrom %H Mon Sep 17 00:00:00 2001%nFrom: %an <%ae>%nDate: %ad%nSubject: Re-apply change $change by %an%n%n%s%n%b%n" $change -- src/3rdparty/webkit >> $localDiff
+ echo "-- " >> $localDiff
+ echo "1.2.3" >> $localDiff
+ echo >> $localDiff
+ done
+ if [ -s $localDiff ]; then
+ echo "Saved locally applied patches to $localDiff"
+ else
+ localDiff=""
+ fi
+else
+ mkdir -p $srcdir
+fi
+
+(cd $srcdir && tar xf $tarball)
+git add $srcdir
+
+echo "generating extra sources"
+(
+ for proj in JavaScriptCore WebCore; do
+ cd $absSrcDir/$proj &&
+ rm -rf tmp &&
+ mkdir tmp &&
+ cd tmp &&
+ mkdir -p ../generated &&
+ qmake -o Makefile QT_CONFIG+=phonon GENERATED_SOURCES_DIR=`pwd`/../generated OUTPUT_DIR=`pwd` ../$proj.pro &&
+ make generated_files &&
+ perl -pi -e "s,$absSrcDir/,,g" ../generated/*.cpp ../generated/*.h &&
+ git add ../generated &&
+ cd .. &&
+ rm -rf tmp &&
+ cd ..
+ done
+)
+rm -rf $srcdir/WebKitBuild
+
+cat >$srcdir/VERSION <<EOT
+This is a snapshot of the Qt port of WebKit from
+
+ git://code.staikos.net/webkit
+
+The commit imported was from the
+
+ $tag branch/tag
+
+and has the sha1 checksum
+
+ $rev
+EOT
+git add $srcdir/VERSION
+
+git diff-files --name-only -z | git update-index --remove -z --stdin
+
+echo "removing $tarball"
+rm -f $tarball
+
+cat >commitlog.txt <<EOT
+Updated WebKit from $repository to $tag ( $rev )
+EOT
+
+if [ -d "$repository/.git" -a -n "$lastImportRevison" ]; then
+ echo >>commitlog.txt
+ echo "Changes in WebKit since the last update:" >>commitlog.txt
+ echo >>commitlog.txt
+ git --git-dir=$repository/.git ls-files | egrep "ChangeLog$" | xargs git --git-dir=$repository/.git diff $lastImportRevison $rev -- | sed -n -e "s,^\+\(.*\),\1,p" >>commitlog.txt
+fi
+
+echo "Changes:"
+echo
+git --no-pager diff --name-status --cached $srcdir
+
+echo
+echo "Wrote commitlog.txt. Use with"
+echo
+echo " git commit -e -F commitlog.txt"
+echo
+echo "to commit your changes"
+
+if [ -n "$localDiff" ]; then
+ echo
+ echo "The changes that were locally stored in Perforce are now stored as a git patch in $localDiff"
+ echo "You may want to appy them with"
+ echo
+ echo " git am -3 $localDiff"
+ echo
+fi
diff --git a/util/xkbdatagen/main.cpp b/util/xkbdatagen/main.cpp
new file mode 100644
index 0000000000..bd9f3ede8f
--- /dev/null
+++ b/util/xkbdatagen/main.cpp
@@ -0,0 +1,478 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the utils of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtXml>
+
+class XKBLayout
+{
+public:
+ QString name;
+ QString description;
+ QStringList variants;
+};
+
+QDomElement find(const QString &tagName, const QDomElement &e)
+{
+ QDomNodeList children = e.childNodes();
+ for (int i = 0; i < children.size(); ++i) {
+ const QDomNode &n = children.at(i);
+ if (n.isElement()) {
+ QDomElement c = n.toElement();
+ if (c.tagName() == tagName)
+ return c;
+ }
+ }
+ return QDomElement();
+}
+
+QString parseVariant(const QDomElement &e)
+{
+ QDomElement configItem = find("configItem", e);
+ return find("name", configItem).text();
+}
+
+QStringList findVariants(const QDomElement &e)
+{
+ QStringList variants;
+
+ QDomNodeList children = e.childNodes();
+ for (int i = 0; i < children.size(); ++i) {
+ const QDomNode &n = children.at(i);
+ if (n.isElement())
+ variants += parseVariant(n.toElement());
+ }
+
+ return variants;
+}
+
+XKBLayout parseLayout(const QDomElement &e)
+{
+ QDomElement configItem = find("configItem", e);
+
+ XKBLayout layout;
+ layout.name = find("name", configItem).text();
+ layout.description = find("description", configItem).text();
+
+ QDomElement variantList = find("variantList", e);
+ if (!variantList.isNull())
+ layout.variants = findVariants(variantList);
+
+ return layout;
+}
+
+QList<XKBLayout> findLayouts(const QDomElement &layoutList)
+{
+ QList<XKBLayout> layouts;
+
+ QDomNodeList children = layoutList.childNodes();
+ for (int i = 0; i < children.size(); ++i) {
+ const QDomNode &n = children.at(i);
+ if (n.isElement())
+ layouts += parseLayout(n.toElement());
+ }
+
+ return layouts;
+}
+
+QString mapCountry(const QString &v)
+{
+ static QMap<QString, QString> map;
+ static bool initialized = false;
+ if (!initialized) {
+ map["U.S. English"] = "UnitedStates";
+ map["PC-98xx Series"] = "Japan";
+ map["Bosnia and Herzegovina"] = "BosniaAndHerzegowina";
+ map["Czechia"] = "CzechRepublic";
+ map["Faroe Islands"] = "FaroeIslands";
+ map["Laos"] = "Lao";
+ map["Latin American"] = "Mexico";
+ map["Russia"] = "RussianFederation";
+ map["Syria"] = "SyrianArabRepublic";
+ map["Sri Lanka"] = "SriLanka";
+ map["United Kingdom"] = "UnitedKingdom";
+ map["Vietnam"] = "VietNam";
+ map["Macedonian"] = "Macedonia";
+ map["Serbian"] = "SerbiaAndMontenegro";
+ map["Turkish "] = "Turkey";
+ map["Maori"] = "NewZealand";
+ map["Arabic"] = "UnitedArabEmirates";
+ initialized = true;
+ }
+ return map.value(v, v);
+}
+
+QString mapLanguage(const QString &v)
+{
+ static QMap<QString, QString> map;
+ static bool initialized = false;
+ if (!initialized) {
+ map["us"] = "English";
+ map["us:intl"] = "English";
+ map["us:alt-intl"] = "English";
+ map["us:dvorak"] = "English";
+ map["us:rus"] = "Russian";
+ map["ara"] = "Arabic";
+ map["ara:azerty"] = "Arabic";
+ map["ara:azerty_digits"] = "Arabic";
+ map["ara:digits"] = "Arabic";
+ map["ara:qwerty"] = "Arabic";
+ map["ara:qwerty_digits"] = "Arabic";
+ map["al"] = "Albanian";
+ map["am"] = "Armenian";
+ map["am:phonetic"] = "Armenian";
+ map["az"] = "Azerbaijani";
+ map["az:cyrillic"] = "Azerbaijani";
+ map["by"] = "Byelorussian";
+ map["by:winkeys"] = "Byelorussian";
+ map["be"] = "Dutch";
+ map["be:iso-alternate"] = "Dutch";
+ map["be:nodeadkeys"] = "Dutch";
+ map["be:sundeadkeys"] = "Dutch";
+ map["bd"] = "Bengali";
+ map["bd:probhat"] = "Bengali";
+ map["in"] = "Hindi";
+ map["in:ben"] = "Bengali";
+ map["in:ben_probhat"] = "Bengali";
+ map["in:guj"] = "Gujarati";
+ map["in:guru"] = "Punjabi";
+ map["in:kan"] = "Kannada";
+ map["in:mal"] = "Malayalam";
+ map["in:ori"] = "Oriya";
+ map["in:tam_unicode"] = "Tamil";
+ map["in:tam_TAB"] = "Tamil";
+ map["in:tam_TSCII"] = "Tamil";
+ map["in:tam"] = "Tamil";
+ map["in:tel"] = "Telugu";
+ map["in:urd"] = "Urdu";
+ map["ba"] = "Bosnian";
+ map["br"] = "Portuguese";
+ map["br:nodeadkeys"] = "Portuguese";
+ map["bg"] = "Bulgarian";
+ map["bg:phonetic"] = "Bulgarian";
+ map["mm"] = "Burmese";
+ map["ca"] = "English";
+ map["ca:fr-dvorak"] = "French";
+ map["ca:fr-legacy"] = "French";
+ map["ca:multi"] = "English";
+ map["ca:multi-2gr"] = "English";
+ map["ca:ike"] = "Inuktitut";
+ map["hr"] = "Croatian";
+ map["hr:us"] = "Croatian";
+ map["cz"] = "Czech";
+ map["cz:bksl"] = "Czech";
+ map["cz:qwerty"] = "Czech";
+ map["cz:qwerty_bksl"] = "Czech";
+ map["dk"] = "Danish";
+ map["dk:nodeadkeys"] = "Danish";
+ map["nl"] = "Dutch";
+ map["bt"] = "Bhutani";
+ map["ee"] = "Estonian";
+ map["ee:nodeadkeys"] = "Estonian";
+ map["ir"] = "Persian";
+ map["fo"] = "Faroese";
+ map["fo:nodeadkeys"] = "Faroese";
+ map["fi"] = "Finnish";
+ map["fi:nodeadkeys"] = "Finnish";
+ map["fi:smi"] = "Finnish";
+ map["fr"] = "French";
+ map["fr:nodeadkeys"] = "French";
+ map["fr:sundeadkeys"] = "French";
+ map["fr:latin9"] = "French";
+ map["fr:latin9_nodeadkeys"] = "French";
+ map["fr:latin9_sundeadkeys"] = "French";
+ map["fr:dvorak"] = "French";
+ map["ge"] = "Georgian";
+ map["ge:ru"] = "Russian";
+ map["de"] = "German";
+ map["de:deadacute"] = "German";
+ map["de:deadgraveacute"] = "German";
+ map["de:nodeadkeys"] = "German";
+ map["de:ro"] = "Romanian";
+ map["de:ro_nodeadkeys"] = "Romanian";
+ map["de:dvorak"] = "German";
+ map["gr"] = "Greek";
+ map["gr:extended"] = "Greek";
+ map["gr:nodeadkeys"] = "Greek";
+ map["gr:polytonic"] = "Greek";
+ map["hu"] = "Hungarian";
+ map["hu:standard"] = "Hungarian";
+ map["hu:nodeadkeys"] = "Hungarian";
+ map["hu:qwerty"] = "Hungarian";
+ map["hu:101_qwertz_comma_dead"] = "Hungarian";
+ map["hu:101_qwertz_comma_nodead"] = "Hungarian";
+ map["hu:101_qwertz_dot_dead"] = "Hungarian";
+ map["hu:101_qwertz_dot_nodead"] = "Hungarian";
+ map["hu:101_qwerty_comma_dead"] = "Hungarian";
+ map["hu:101_qwerty_comma_nodead"] = "Hungarian";
+ map["hu:101_qwerty_dot_dead"] = "Hungarian";
+ map["hu:101_qwerty_dot_nodead"] = "Hungarian";
+ map["hu:102_qwertz_comma_dead"] = "Hungarian";
+ map["hu:102_qwertz_comma_nodead"] = "Hungarian";
+ map["hu:102_qwertz_dot_dead"] = "Hungarian";
+ map["hu:102_qwertz_dot_nodead"] = "Hungarian";
+ map["hu:102_qwerty_comma_dead"] = "Hungarian";
+ map["hu:102_qwerty_comma_nodead"] = "Hungarian";
+ map["hu:102_qwerty_dot_dead"] = "Hungarian";
+ map["hu:102_qwerty_dot_nodead"] = "Hungarian";
+ map["is"] = "Icelandic";
+ map["is:Sundeadkeys"] = "Icelandic";
+ map["is:nodeadkeys"] = "Icelandic";
+ map["il"] = "Hebrew";
+ map["il:lyx"] = "Hebrew";
+ map["il:si1452"] = "Hebrew";
+ map["il:phonetic"] = "Hebrew";
+ map["it"] = "Italian";
+ map["it:nodeadkeys"] = "Italian";
+ map["jp"] = "Japanese";
+ map["kg"] = "Kirghiz";
+ map["la"] = "Laothian";
+ map["latam"] = "Spanish";
+ map["latam:nodeadkeys"] = "Spanish";
+ map["latam:sundeadkeys"] = "Spanish";
+ map["lt"] = "Lithuanian";
+ map["lt:std"] = "Lithuanian";
+ map["lt:us"] = "Lithuanian";
+ map["lv"] = "Latvian";
+ map["lv:apostrophe"] = "Latvian";
+ map["lv:tilde"] = "Latvian";
+ map["lv:fkey"] = "Latvian";
+ map["mao"] = "Maori";
+ map["mkd"] = "Macedonian";
+ map["mkd:nodeadkeys"] = "Macedonian";
+ map["mt"] = "Maltese";
+ map["mt:us"] = "Maltese";
+ map["mn"] = "Mongolian";
+ map["no"] = "Norwegian";
+ map["no:nodeadkeys"] = "Norwegian";
+ map["no:dvorak"] = "Norwegian";
+ map["no:smi"] = "Norwegian";
+ map["no:smi_nodeadkeys"] = "Norwegian";
+ map["pl"] = "Polish";
+ map["pl:qwertz"] = "Polish";
+ map["pl:dvorak"] = "Polish";
+ map["pl:dvorak_quotes"] = "Polish";
+ map["pl:dvorak_altquotes"] = "Polish";
+ map["pt"] = "Portuguese";
+ map["pt:nodeadkeys"] = "Portuguese";
+ map["pt:sundeadkeys"] = "Portuguese";
+ map["ro"] = "Romanian";
+ map["ro:us"] = "English";
+ map["ro:de"] = "German";
+ map["ru"] = "Russian";
+ map["ru:phonetic"] = "Russian";
+ map["ru:typewriter"] = "Russian";
+ map["ru:winkeys"] = "Russian";
+ map["srp"] = "Serbian";
+ map["srp:yz"] = "Serbian";
+ map["srp:latin"] = "Serbian";
+ map["srp:latinunicode"] = "Serbian";
+ map["srp:latinyz"] = "Serbian";
+ map["srp:latinunicodeyz"] = "Serbian";
+ map["srp:alternatequotes"] = "Serbian";
+ map["srp:latinalternatequotes"] = "Serbian";
+ map["si"] = "Slovenian";
+ map["sk"] = "Slovak";
+ map["sk:bksl"] = "Slovak";
+ map["sk:qwerty"] = "Slovak";
+ map["sk:qwerty_bksl"] = "Slovak";
+ map["es"] = "Spanish";
+ map["es:nodeadkeys"] = "Spanish";
+ map["es:sundeadkeys"] = "Spanish";
+ map["es:dvorak"] = "Spanish";
+ map["se"] = "Swedish";
+ map["se:nodeadkeys"] = "Swedish";
+ map["se:dvorak"] = "Swedish";
+ map["se:rus"] = "Russian";
+ map["se:rus_nodeadkeys"] = "Russian";
+ map["se:smi"] = "Swedish";
+ map["ch"] = "German";
+ map["ch:de_nodeadkeys"] = "German";
+ map["ch:de_sundeadkeys"] = "German";
+ map["ch:fr"] = "French";
+ map["ch:fr_nodeadkeys"] = "French";
+ map["ch:fr_sundeadkeys"] = "French";
+ map["sy"] = "Arabic";
+ map["sy:syc"] = "Arabic";
+ map["sy:syc_phonetic"] = "Arabic";
+ map["tj"] = "Tajik";
+ map["lk"] = "Singhalese";
+ map["lk:tam_unicode"] = "Tamil";
+ map["lk:tam_TAB"] = "Tamil";
+ map["lk:tam_TSCII"] = "Tamil";
+ map["lk:sin_phonetic"] = "Singhalese";
+ map["th"] = "Thai";
+ map["th:tis"] = "Thai";
+ map["th:pat"] = "Thai";
+ map["tr"] = "Turkish";
+ map["tr:f"] = "Turkish";
+ map["tr:alt"] = "Turkish";
+ map["ua"] = "Ukrainian";
+ map["ua:phonetic"] = "Ukrainian";
+ map["ua:typewriter"] = "Ukrainian";
+ map["ua:winkeys"] = "Ukrainian";
+ map["ua:rstu"] = "Ukrainian";
+ map["ua:rstu_ru"] = "Ukrainian";
+ map["gb"] = "English";
+ map["gb:intl"] = "English";
+ map["gb:dvorak"] = "English";
+ map["uz"] = "Uzbek";
+ map["vn"] = "Vietnamese";
+ map["nec_vndr/jp"] = "Japanese";
+ map["ie"] = "Irish";
+ map["ie:CloGaelach"] = "Gaelic";
+ map["ie:UnicodeExpert"] = "Irish";
+ map["ie:ogam"] = "Gaelic";
+ map["ie:ogam_is434"] = "Gaelic";
+ map["pk"] = "Urdu";
+ initialized = true;
+ }
+ return map.value(v, v);
+}
+
+QString mapDirection(const QString &v)
+{
+ static QMap<QString, QString> map;
+ static bool initialized = false;
+ if (!initialized) {
+ // 1. xkbdata-X11R7.0-1.0.1/symbols% grep -l '\([Hh]ebrew\|[Aa]rabic\)' **/*
+ map["Arabic"] = "Qt::RightToLeft";
+ map["Persian"] = "Qt::RightToLeft";
+ map["Urdu"] = "Qt::RightToLeft";
+ initialized = true;
+ }
+ return map.value(v, "Qt::LeftToRight");
+}
+
+int main(int argc, char **argv)
+{
+ if (argc != 2) {
+ fprintf(stderr, "usage: %s <xml input file>\n", argv[0]);
+ return 1;
+ }
+
+ QCoreApplication app(argc, argv);
+
+ QFile file;
+ file.setFileName(argv[1]);
+ if (!file.open(QIODevice::ReadOnly)) {
+ fprintf(stderr, "cannot open %s: %s\n", qPrintable(file.fileName()), qPrintable(file.errorString()));
+ return 1;
+ }
+
+ QDomDocument dom;
+ dom.setContent(&file);
+
+ if (dom.documentElement().tagName() != QLatin1String("xkbConfigRegistry")) {
+ fprintf(stderr, "cannot parse %s, this is not an XKB config file\n", qPrintable(file.fileName()));
+ return 1;
+ }
+
+ QDomElement layoutList = find("layoutList", dom.documentElement());
+ if (layoutList.isNull()) {
+ fprintf(stderr, "cannot parse %s, this is not an XKB config file\n", qPrintable(file.fileName()));
+ return 1;
+ }
+
+ QList<XKBLayout> layouts = findLayouts(layoutList);
+
+ // copyright and stuff
+ printf("/****************************************************************************\n"
+ "**\n"
+ "** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).\n"
+ "**\n"
+ "** This file is part of the $MODULE$ of the Qt Toolkit.\n"
+ "**\n"
+ "** $TROLLTECH_DUAL_LICENSE$\n"
+ "**\n"
+ "** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n"
+ "** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n"
+ "**\n"
+ "****************************************************************************/\n"
+ "\n"
+ "// This file is auto-generated, do not edit!\n"
+ "\n");
+
+ // data structure
+ printf("static struct {\n"
+ " const char *layout;\n"
+ " const char *variant; // 0 means any variant\n"
+ " Qt::LayoutDirection direction;\n"
+ " QLocale::Language language;\n"
+ " QLocale::Country country;\n"
+ "} xkbLayoutData[] = {\n");
+
+ // contents
+ foreach (const XKBLayout &l, layouts) {
+ const QString country = mapCountry(l.description);
+ QString lang = mapLanguage(l.name);
+ if (lang.isEmpty())
+ lang = "C";
+ printf(" // name = %s, description = %s\n"
+ " { \"%s\", \"\", %s, QLocale::%s, QLocale::%s },\n",
+ l.name.toAscii().constData(),
+ l.description.toAscii().constData(),
+ l.name.toAscii().constData(),
+ mapDirection(lang).toAscii().constData(),
+ lang.toAscii().constData(),
+ country.toAscii().constData());
+ foreach (const QString &v, l.variants) {
+ QString vlang = mapLanguage(l.name + ":" + v);
+ if (vlang.isEmpty())
+ vlang = "C";
+ printf(" // name = %s:%s, description = %s\n"
+ " { \"%s\", \"%s\", %s, QLocale::%s, QLocale::%s },\n",
+ l.name.toAscii().constData(),
+ v.toAscii().constData(),
+ l.description.toAscii().constData(),
+ l.name.toAscii().constData(),
+ v.toAscii().constData(),
+ mapDirection(vlang).toAscii().constData(),
+ vlang.toAscii().constData(),
+ country.toAscii().constData());
+ }
+ }
+
+ // wrapping up
+ printf(" { 0, 0, Qt::LeftToRight, QLocale::C, QLocale::AnyCountry }\n"
+ "};\n");
+
+ return 0;
+}
diff --git a/util/xkbdatagen/xkbdatagen.pro b/util/xkbdatagen/xkbdatagen.pro
new file mode 100644
index 0000000000..c89ee887ea
--- /dev/null
+++ b/util/xkbdatagen/xkbdatagen.pro
@@ -0,0 +1,3 @@
+SOURCES = main.cpp
+QT = core xml
+