This commit was manufactured by cvs2svn to create tag 'dev1-0-0'.

X-SVN-Rev: 943
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..62b3798
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,63 @@
+* text=auto !eol
+
+*.c text !eol
+*.cc text !eol
+*.classpath text !eol
+*.cpp text !eol
+*.css text !eol
+*.dsp text !eol
+*.dsw text !eol
+*.filters text !eol
+*.h text !eol
+*.htm text !eol
+*.html text !eol
+*.in text !eol
+*.java text !eol
+*.launch text !eol
+*.mak text !eol
+*.md text !eol
+*.MF text !eol
+*.mk text !eol
+*.pl text !eol
+*.pm text !eol
+*.project text !eol
+*.properties text !eol
+*.py text !eol
+*.rc text !eol
+*.sh text eol=lf
+*.sln text !eol
+*.stub text !eol
+*.txt text !eol
+*.ucm text !eol
+*.vcproj text !eol
+*.vcxproj text !eol
+*.xml text !eol
+*.xsl text !eol
+*.xslt text !eol
+Makefile text !eol
+configure text !eol
+LICENSE text !eol
+README text !eol
+
+*.bin -text
+*.brk -text
+*.cnv -text
+*.icu -text
+*.res -text
+*.nrm -text
+*.spp -text
+*.tri2 -text
+
+src/com/ibm/demo/rbbi/english.dict -text
+src/com/ibm/test/rbbi/english.dict -text
+src/com/ibm/text/resources/thai_dict -text
+src/data/holidays_jp.ucs -text
+
+# The following file types are stored in Git-LFS.
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.dat filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+
diff --git a/build.bat b/build.bat
new file mode 100755
index 0000000..6fd4be8
--- /dev/null
+++ b/build.bat
@@ -0,0 +1,15 @@
+@echo off
+
+REM *******************************************************************************
+REM * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+REM * others. All Rights Reserved.                                                *
+REM *******************************************************************************
+
+REM $Source: /xsrl/Nsvn/icu/icu4j/Attic/build.bat,v $ 
+REM $Date: 2000/03/10 23:50:23 $ 
+REM $Revision: 1.3 $
+
+REM *******************************************************************************
+
+REM convience bat file to build with
+java -classpath "build\javac.jar;build\ant.jar;build\projectx-tr2.jar;%CLASSPATH%" org.apache.tools.ant.Main %1 %2 %3 %4 %5
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000..ee6ba6d
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,26 @@
+#/*
+#*******************************************************************************
+#* Copyright (C) 1997-2000, International Business Machines Corporation and    *
+#* others. All Rights Reserved.                                                *
+#*******************************************************************************
+#*
+#* $Source: /xsrl/Nsvn/icu/icu4j/Attic/build.sh,v $ 
+#* $Date: 2000/03/10 04:17:55 $ 
+#* $Revision: 1.2 $
+#*
+#*****************************************************************************************
+#*/
+#!/bin/sh
+
+ADDL_CLASSPATH=build/ant.jar:build/projectx-tr2.jar:build/javac.jar
+
+if [ "$CLASSPATH" != "" ] ; then
+  CLASSPATH=$CLASSPATH:$ADDL_CLASSPATH
+else
+ CLASSPATH=$ADDL_CLASSPATH
+fi
+export CLASSPATH
+
+echo Building with classpath $CLASSPATH
+
+java org.apache.tools.ant.Main $*
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..d18db7c
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,90 @@
+<!-- 
+/*
+*******************************************************************************
+* Copyright (C) 1997-2000, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* $Source: /xsrl/Nsvn/icu/icu4j/build.xml,v $ 
+* $Date: 2000/03/10 04:17:55 $ 
+* $Revision: 1.2 $
+*
+*****************************************************************************************
+*/
+-->
+
+<project name="ICU4J" default="core" basedir=".">
+
+  <property name="src.dir" value="src"/>
+  <property name="doc.dir" value="doc"/>
+  <property name="build.dir" value="classes"/>
+  <property name="classpath" value="${build.dir}"/>
+  <property name="build.compiler" value="classic"/>
+  
+  <target name="all" depends="core,tests,tools,demos,jar,docs"/>
+  
+  <target name="core">
+    <mkdir dir="${build.dir}"/>
+    <copyfile src="${src.dir}/com/ibm/text/resources/thai_dict"
+    	   dest="${build.dir}/com/ibm/text/resources/thai_dict"/>
+    <compile srcfiles="com/ibm/util,com/ibm/text"
+    	   srcdir="${src.dir}"
+    	   destdir="${build.dir}" 
+    	   classpath="${classpath}"
+           debug="on" deprecation="off" target="1.2"/>
+  </target>
+  
+  <target name="tests" depends="core">
+    <mkdir dir="${build.dir}"/>
+    <compile srcfiles="com/ibm/test"
+    	   srcdir="${src.dir}"
+    	   destdir="${build.dir}" 
+    	   classpath="${classpath}"
+           debug="on" deprecation="off" target="1.2"/>
+  </target>
+  
+  <target name="demos" depends="core">
+    <mkdir dir="${build.dir}"/>
+    <compile srcfiles="com/ibm/demo"
+    	   srcdir="${src.dir}"
+    	   destdir="${build.dir}" 
+    	   classpath="${classpath}"
+           debug="on" deprecation="off" target="1.2"/>
+  </target>
+  
+  <target name="tools" depends="core">
+    <mkdir dir="${build.dir}"/>
+    <compile srcfiles="com/ibm/tools"
+    	   srcdir="${src.dir}"
+    	   destdir="${build.dir}" 
+    	   classpath="${classpath}"
+           debug="on" deprecation="off" target="1.2"/>
+  </target>
+  
+  <target name="docs" depends="core,tests,tools">
+    <mkdir dir="${doc.dir}"/>
+    <docs sourcepath="${src.dir}"
+    		  destdir="${doc.dir}"
+    		  nodeprecatedlist="true"
+			  windowtitle="ICU4J"
+			  doctitle="ICU4J"
+			  encoding="iso-8859-1"
+			  docencoding="iso-8859-1"
+			  bottom="&quot;&lt;font size=-1>Copyright (c); 1998-2000 IBM Corporation.&lt;/font>&quot;"
+	    	  sourcefiles="src/com/ibm/text/*.java src/com/ibm/util/*.java"
+    		  />
+    		  
+  </target>
+
+  <target name="jar" depends="core">
+     <jar jarfile="ICU4J.jar" basedir="${build.dir}" items="com"/>
+  </target>
+
+  <target name="clean">
+    <deltree dir="${build.dir}"/>
+    <deltree dir="${doc.dir}"/>
+    <deltree dir="ICU4J.jar"/>
+  </target>
+
+</project>
+
diff --git a/license.html b/license.html
new file mode 100644
index 0000000..ede34e0
--- /dev/null
+++ b/license.html
@@ -0,0 +1,242 @@
+<html>
+
+<head>
+<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Latin-1">
+<title>IBM's Public License - IBM's Components for Unicode in Java</title>
+</head>
+
+<body>
+<b>
+
+<p ALIGN="CENTER"><big>IBM PUBLIC LICENSE - IBM&#146;s Components for Unicode in Java VERSION 1.0</big></p>
+</b><font size="2">
+
+<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM PUBLIC LICENSE
+(&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
+RECIPIENT&#146;S ACCEPTANCE OF THIS AGREEMENT.</p>
+<b>
+
+<p>1. DEFINITIONS</p>
+</b>
+
+<p>&quot;Contribution&quot; means: </p>
+
+<blockquote>
+  <blockquote>
+    <p>a) in the case of International Business Machines Corporation (&quot;IBM&quot;), the
+    Original Program, and </p>
+    <p>b) in the case of each Contributor, </p>
+    <blockquote>
+      <p>i) changes to the Program, and</p>
+      <p>ii) additions to the Program;</p>
+    </blockquote>
+  </blockquote>
+  <p>where such changes and/or additions to the Program originate from and are distributed
+  by that particular Contributor. A Contribution &#145;originates&#146; from a Contributor
+  if it was added to the Program by such Contributor itself or anyone acting on such
+  Contributor&#146;s behalf. Contributions do not include additions to the Program which:
+  (i) are separate modules of software distributed in conjunction with the Program under
+  their own license agreement, and (ii) are not derivative works of the Program.</p>
+</blockquote>
+
+<p>&quot;Contributor&quot; means IBM and any other entity that distributes the Program.</p>
+
+<p>&quot;Licensed Patents &quot; mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when combined with
+the Program. </p>
+
+<p>&quot;Original Program&quot; means the original version of the software accompanying
+this Agreement as released by IBM, including source code, object code and documentation,
+if any.</p>
+
+<p>&quot;Program&quot; means the Original Program and Contributions.</p>
+
+<p>&quot;Recipient&quot; means anyone who receives the Program under this Agreement,
+including all Contributors.</p>
+<b>
+
+<p>2. GRANT OF RIGHTS</p>
+
+<blockquote>
+  <blockquote>
+    </b><p>a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+    a non-exclusive, worldwide, royalty-free copyright license to<font COLOR="#ff0000"> </font>reproduce,
+    prepare derivative works of, publicly display, publicly perform, distribute and sublicense
+    the Contribution of such Contributor, if any, and such derivative works, in source code
+    and object code form.</p>
+    <p>b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a
+    non-exclusive, worldwide,<font COLOR="#008000"> </font>royalty-free patent license under
+    Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
+    Contribution of such Contributor, if any, in source code and object code form. This patent
+    license shall apply to the combination of the Contribution and the Program if, at the time
+    the Contribution is added by the Contributor, such addition of the Contribution causes
+    such combination to be covered by the Licensed Patents. The patent license shall not apply
+    to any other combinations which include the Contribution. No hardware per se is licensed
+    hereunder. </p>
+    <p>c) Recipient understands that although each Contributor grants the licenses to its
+    Contributions set forth herein, no assurances are provided by any Contributor that the
+    Program does not infringe the patent or other intellectual property rights of any other
+    entity. Each Contributor disclaims any liability to Recipient for claims brought by any
+    other entity based on infringement of intellectual property rights or otherwise. As a
+    condition to exercising the rights and licenses granted hereunder, each Recipient hereby
+    assumes sole responsibility to secure any other intellectual property rights needed, if
+    any. For example, if a third party patent license is required to allow Recipient to
+    distribute the Program, it is Recipient&#146;s responsibility to acquire that license
+    before distributing the Program.</p>
+    <p>d) Each Contributor represents that to its knowledge it has sufficient copyright rights
+    in its Contribution, if any, to grant the copyright license set forth in this Agreement. </p>
+  </blockquote>
+</blockquote>
+<b>
+
+<p>3. REQUIREMENTS</p>
+</b>
+
+<p>A Contributor may choose to distribute the Program in object code form under its own
+license agreement, provided that:</p>
+
+<blockquote>
+  <blockquote>
+    <p>a) it complies with the terms and conditions of this Agreement; and</p>
+    <p>b) its license agreement:</p>
+    <blockquote>
+      <p>i) effectively disclaims on behalf of all Contributors all warranties and conditions,
+      express and implied, including warranties or conditions of title and non-infringement, and
+      implied warranties or conditions of merchantability and fitness for a particular purpose; </p>
+      <p>ii) effectively excludes on behalf of all Contributors all liability for damages,
+      including direct, indirect, special, incidental and consequential damages, such as lost
+      profits; </p>
+      <p>iii) states that any provisions which differ from this Agreement are offered by that
+      Contributor alone and not by any other party; and</p>
+      <p>iv) states that source code for the Program is available from such Contributor, and
+      informs licensees how to obtain it in a reasonable manner on or through a medium
+      customarily used for software exchange.<font COLOR="#0000ff"> </p>
+      </font>
+    </blockquote>
+  </blockquote>
+</blockquote>
+
+<p>When the Program is made available in source code form:</p>
+
+<blockquote>
+  <blockquote>
+    <p>a) it must be made available under this Agreement; and </p>
+    <p>b) a copy of this Agreement must be included with each copy of the Program. </p>
+    <font COLOR="#0000ff"><strike>
+  </blockquote>
+</blockquote>
+</strike></font>
+
+<p>Each Contributor must include the following in a conspicuous location in the Program: </p>
+
+<blockquote>
+  <p>Copyright <font FACE="Times New Roman">©</font><font COLOR="#ff0000"> </font>1999,
+  International Business Machines Corporation and others. All Rights Reserved. </p>
+</blockquote>
+
+<p>In addition, each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify
+the originator of the Contribution. </p>
+<b>
+
+<p>4. COMMERCIAL DISTRIBUTION</p>
+</b>
+
+<p>Commercial distributors of software may accept certain responsibilities with respect to
+end users, business partners and the like. While this license is intended to facilitate
+the commercial use of the Program, the Contributor who includes the Program in a
+commercial product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the Program in a
+commercial product offering, such Contributor (&quot;Commercial Contributor&quot;) hereby
+agrees to defend and indemnify every other Contributor (&quot;Indemnified
+Contributor&quot;) against any losses, damages and costs (collectively &quot;Losses&quot;)
+arising from claims, lawsuits and other legal actions brought by a third party against the
+Indemnified Contributor to the extent caused by the acts or omissions of such Commercial
+Contributor in connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses relating to
+any actual or alleged intellectual property infringement. In order to qualify, an
+Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of
+such claim, and b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement negotiations. The
+Indemnified Contributor may participate in any such claim at its own expense.</p>
+
+<p>For example, a Contributor might include the Program in a commercial product offering,
+Product X. That Contributor is then a Commercial Contributor. If that Commercial
+Contributor then makes performance claims, or offers warranties related to Product X,
+those performance claims and warranties are such Commercial Contributor&#146;s
+responsibility alone. Under this section, the Commercial Contributor would have to defend
+claims against the other Contributors related to those performance claims and warranties,
+and if a court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</p>
+<b>
+
+<p>5. NO WARRANTY</p>
+</b>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS
+IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED
+INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible
+for determining the appropriateness of using and distributing the Program and assumes all
+risks associated with its exercise of rights under this Agreement, including but not
+limited to the risks and costs of program errors, compliance with applicable laws, damage
+to or loss of data, programs or equipment, and unavailability or interruption of
+operations. </p>
+<b>
+
+<p>6. DISCLAIMER OF LIABILITY</p>
+</b>
+
+<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
+SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM
+OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.</p>
+<b>
+
+<p>7. GENERAL</p>
+</b>
+
+<p>If any provision of this Agreement is invalid or unenforceable under applicable law, it
+shall not affect the validity or enforceability of the remainder of the terms of this
+Agreement, and without further action by the parties hereto, such provision shall be
+reformed to the minimum extent necessary to make such provision valid and enforceable.</p>
+
+<p>If Recipient institutes patent litigation against a Contributor with respect to a
+patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then
+any patent licenses granted by that Contributor to such Recipient under this Agreement
+shall terminate as of the date such litigation is filed. In addition, If Recipient
+institutes patent litigation against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient&#146;s patent(s), then such
+Recipient&#146;s rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed. </p>
+
+<p>All Recipient&#146;s rights under this Agreement shall terminate if it fails to comply
+with any of the material terms or conditions of this Agreement and does not cure such
+failure in a reasonable period of time after becoming aware of such noncompliance. If all
+Recipient&#146;s rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However, Recipient's
+obligations under this Agreement and any licenses granted by Recipient relating to the
+Program shall continue and survive. </p>
+
+<p>IBM may publish new versions (including revisions) of this Agreement from time to time.
+Each new version of the Agreement will be given a distinguishing version number. The
+Program (including Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. No one other than IBM has the right to modify this
+Agreement. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives
+no rights or licenses to the intellectual property of any Contributor under this
+Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the
+Program not expressly granted under this Agreement are reserved.</p>
+
+<p>This Agreement is governed by the laws of the State of New York and the intellectual
+property laws of the United States of America. No party to this Agreement will bring a
+legal action under this Agreement more than one year after the cause of action arose. Each
+party waives its rights to a jury trial in any resulting litigation. </p>
+</font>
+</body>
+</html>
diff --git a/src/com/ibm/demo/DemoApplet.java b/src/com/ibm/demo/DemoApplet.java
new file mode 100755
index 0000000..e3ed204
--- /dev/null
+++ b/src/com/ibm/demo/DemoApplet.java
@@ -0,0 +1,80 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/Attic/DemoApplet.java,v $ 
+ * $Date: 2000/03/10 03:47:42 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.demo;
+
+import java.applet.Applet;
+import java.util.Locale;
+import java.awt.*;
+import java.awt.event.*;
+
+public abstract class DemoApplet extends java.applet.Applet {
+    private Button   demoButton;
+    private Frame    demoFrame;
+	private static int demoFrameCount = 0;
+
+    protected abstract Frame createDemoFrame(DemoApplet applet);
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+    	return new Dimension(700, 550);
+    }
+
+    //Create a button that will display the demo
+    public void init()
+    {
+        setBackground(Color.white);
+        demoButton = new Button("Demo");
+        demoButton.setBackground(Color.yellow);
+        add( demoButton );
+
+        demoButton.addActionListener( new ActionListener() {
+             public void actionPerformed(ActionEvent e) {
+                if (e.getID() == ActionEvent.ACTION_PERFORMED) {
+                    demoButton.setLabel("loading");
+
+                    if (demoFrame == null) {
+                       demoFrame = createDemoFrame(DemoApplet.this);
+                       showDemo();
+                    }
+
+                    demoButton.setLabel("Demo");
+                }
+             }
+        } );
+    }
+
+    public void showDemo()
+    {
+    	demoFrame = createDemoFrame(this);
+        demoFrame.layout();
+        Dimension d = getDefaultFrameSize(this, demoFrame);
+        demoFrame.resize(d.width, d.height);
+        demoFrame.show();
+		demoFrameOpened();
+    }
+
+    public void demoClosed()
+    {
+        demoFrame = null;
+		demoFrameClosed();
+    }
+
+	protected static void demoFrameOpened() {
+		demoFrameCount++;
+    }
+	protected static void demoFrameClosed() {
+		if (--demoFrameCount == 0) {
+			System.exit(0);
+		}
+    }
+}
+
diff --git a/src/com/ibm/demo/DemoTextBox.java b/src/com/ibm/demo/DemoTextBox.java
new file mode 100755
index 0000000..3d11497
--- /dev/null
+++ b/src/com/ibm/demo/DemoTextBox.java
@@ -0,0 +1,101 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/Attic/DemoTextBox.java,v $ 
+ * $Date: 2000/03/10 03:47:42 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo;
+
+
+import java.text.BreakIterator;
+import java.awt.*;
+
+public class DemoTextBox {
+
+    public DemoTextBox(Graphics g, String text, int width)
+    {
+        this.text = text;
+        this.chars = new char[text.length()];
+        text.getChars(0, text.length(), chars, 0);
+
+        this.width = width;
+        this.port = g;
+        this.metrics = g.getFontMetrics();
+
+        breakText();
+    }
+
+    public  int getHeight() {
+        return (nbreaks + 1) * metrics.getHeight();
+    }
+
+    public  void draw(Graphics g, int x, int y)
+    {
+        int index = 0;
+
+        y += metrics.getAscent();
+
+        for (int i = 0; i < nbreaks; i++)
+        {
+            g.drawChars(chars, index, breakPos[i] - index, x, y);
+            index = breakPos[i];
+            y += metrics.getHeight();
+        }
+
+        g.drawChars(chars, index, chars.length - index, x, y);
+    }
+
+
+    private void breakText()
+    {
+        if (metrics.charsWidth(chars, 0, chars.length) > width)
+        {
+            BreakIterator iter = BreakIterator.getWordInstance();
+            iter.setText(text);
+
+            int start = iter.first();
+            int end = start;
+            int pos;
+
+            while ( (pos = iter.next()) != BreakIterator.DONE )
+            {
+                int w = metrics.charsWidth(chars, start, pos - start);
+                if (w > width)
+                {
+                    // We've gone past the maximum width, so break the line
+                    if (end > start) {
+                        // There was at least one break position before this point
+                        breakPos[nbreaks++] = end;
+                        start = end;
+                        end = pos;
+                    } else {
+                        // There weren't any break positions before this one, so
+                        // let this word overflow the margin (yuck)
+                        breakPos[nbreaks++] = pos;
+                        start = end = pos;
+                    }
+                } else {
+                    // the current position still fits on the line; it's the best
+                    // tentative break position we have so far.
+                    end = pos;
+                }
+
+            }
+        }
+    }
+
+    private String          text;
+    private char[]          chars;
+    private Graphics        port;
+    private FontMetrics     metrics;
+    private int             width;
+
+    private int[]           breakPos = new int[10]; // TODO: get real
+    private int             nbreaks = 0;
+}
\ No newline at end of file
diff --git a/src/com/ibm/demo/DemoUtility.java b/src/com/ibm/demo/DemoUtility.java
new file mode 100755
index 0000000..ed57b16
--- /dev/null
+++ b/src/com/ibm/demo/DemoUtility.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/Attic/DemoUtility.java,v $ 
+ * $Date: 2000/03/10 03:47:42 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo;
+
+import java.awt.*;
+import java.lang.*;
+import java.util.*;
+
+public class DemoUtility
+{
+    public static final Font titleFont = new Font("TimesRoman",Font.BOLD,18);
+    public static final Font labelFont = new Font("TimesRoman",Font.BOLD,14);
+    public static final Font choiceFont = new Font("Helvetica",Font.BOLD,12);
+    public static final Font editFont = new Font("Helvetica",Font.PLAIN,14);
+    public static final Font creditFont = new Font("Helvetica",Font.PLAIN,10);
+    public static final Font numberFont = new Font("sansserif", Font.PLAIN, 14);
+
+    public static final Color bgColor = Color.lightGray;
+    public static final Color choiceColor = Color.white;
+
+    public static final String copyright1 =
+        "(C) Copyright Taligent, Inc. 1996-1998.  Copyright (C) IBM, Inc. 1998 - All Rights Reserved";
+    public static final String copyright2 =
+        "Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.";
+
+    /**
+    Provides easy way to use basic functions of GridBagLayout, without
+    the complications. After building a panel, and inserting all the
+    * subcomponents, call this to lay it out in the desired number of columns.
+    */
+    public static void fixGrid(Container cont, int columns) {
+        GridBagLayout gridbag = new GridBagLayout();
+        cont.setLayout(gridbag);
+
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.VERTICAL;
+        c.weightx = 1.0;
+        c.insets = new Insets(2,2,2,2);
+
+        Component[] components = cont.getComponents();
+        for (int i = 0; i < components.length; ++i) {
+            int colNumber = i%columns;
+            c.gridwidth = 1;    // default
+            if ((i%columns) == columns - 1)
+                c.gridwidth = GridBagConstraints.REMAINDER;    // last in grid
+            if (components[i] instanceof Label) {
+                switch (((Label)components[i]).getAlignment()) {
+                case Label.CENTER: c.anchor = GridBagConstraints.CENTER; break;
+                case Label.LEFT: c.anchor = GridBagConstraints.WEST; break;
+                case Label.RIGHT: c.anchor = GridBagConstraints.EAST; break;
+                }
+            }
+            gridbag.setConstraints(components[i], c);
+        }
+
+    }
+
+    /**
+    Provides easy way to change the spacing around an object in a GridBagLayout.
+    Call AFTER fixGridBag, passing in the container, the component, and the
+    new insets.
+    */
+    public static void setInsets(Container cont, Component comp, Insets insets) {
+        GridBagLayout gbl = (GridBagLayout)cont.getLayout();
+        GridBagConstraints g = gbl.getConstraints(comp);
+        g.insets = insets;
+        gbl.setConstraints(comp,g);
+    }
+
+    public static Panel createSpacer() {
+        Panel spacer = new Panel();
+        spacer.setLayout(null);
+        spacer.resize(1000, 1);
+        return spacer;
+    }
+
+    // to avoid goofy updates and misplaced cursors
+    public static void setText(TextComponent area, String newText) {
+        String foo = area.getText();
+        if (foo.equals(newText)) return;
+        area.setText(newText);
+    }
+    /**
+     * Get the G7 locale list for demos.
+     */
+    public static Locale[] getG7Locales() {
+        return localeList;
+    }
+    private static Locale[] localeList = {
+        new Locale("DA", "DK", ""),
+        new Locale("EN", "US", ""),
+        new Locale("EN", "GB", ""),
+        new Locale("EN", "CA", ""),
+        new Locale("FR", "FR", ""),
+        new Locale("FR", "CA", ""),
+        new Locale("DE", "DE", ""),
+        new Locale("IT", "IT", ""),
+    //new Locale("JA", "JP", ""),
+    };
+}
diff --git a/src/com/ibm/demo/calendar/CalendarApp.java b/src/com/ibm/demo/calendar/CalendarApp.java
new file mode 100755
index 0000000..811eaa3
--- /dev/null
+++ b/src/com/ibm/demo/calendar/CalendarApp.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/calendar/Attic/CalendarApp.java,v $ 
+ * $Date: 2000/03/10 03:47:42 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.demo.calendar;
+
+import com.ibm.demo.*;
+
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.net.*;
+import java.io.*;
+
+import java.text.DateFormat;
+import java.util.SimpleTimeZone;
+
+import com.ibm.util.*;
+import com.ibm.text.*;
+
+/**
+ * CalendarApp demonstrates how Calendar works.
+ */
+public class CalendarApp extends DemoApplet
+{
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new CalendarApp().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+}
diff --git a/src/com/ibm/demo/calendar/CalendarCalc.java b/src/com/ibm/demo/calendar/CalendarCalc.java
new file mode 100755
index 0000000..23e51bb
--- /dev/null
+++ b/src/com/ibm/demo/calendar/CalendarCalc.java
@@ -0,0 +1,559 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/calendar/Attic/CalendarCalc.java,v $ 
+ * $Date: 2000/03/10 03:47:42 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.demo.calendar;
+
+import com.ibm.demo.*;
+
+import java.applet.Applet;
+import java.util.Date;
+import java.awt.*;
+import java.awt.event.*;
+
+import java.text.DateFormat;
+import java.text.ParsePosition;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+import java.util.Locale;
+
+import com.ibm.util.*;
+import com.ibm.text.*;
+
+import javax.swing.*;
+
+/**
+ * CalendarCalc demonstrates how Date/Time formatter works.
+ */
+public class CalendarCalc extends DemoApplet
+{
+    /**
+     * The main function which defines the behavior of the MultiCalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+        new CalendarCalc().showDemo();
+    }
+
+    /**
+     * This creates a CalendarCalcFrame for the demo applet.
+     */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarCalcFrame(applet);
+    }
+}
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarCalcFrame class defines the window layout of
+ * MultiCalendarDemo.
+ */
+class CalendarCalcFrame extends Frame
+{
+    private static final String     creditString = "";
+
+    static final Locale[] locales = DemoUtility.getG7Locales();
+
+    private static final boolean    DEBUG = false;
+
+    private DemoApplet              applet;
+    private long                    time = System.currentTimeMillis();
+
+    private static final RollAddField kRollAddFields[] = {
+        new RollAddField(Calendar.YEAR,                 "Year" ),
+        new RollAddField(Calendar.MONTH,                "Month" ),
+        new RollAddField(Calendar.WEEK_OF_MONTH,        "Week of Month" ),
+        new RollAddField(Calendar.WEEK_OF_YEAR,         "Week of Year" ),
+        new RollAddField(Calendar.DAY_OF_MONTH,         "Day of Month" ),
+        new RollAddField(Calendar.DAY_OF_WEEK,          "Day of Week" ),
+        new RollAddField(Calendar.DAY_OF_WEEK_IN_MONTH, "Day of Week in Month" ),
+        new RollAddField(Calendar.DAY_OF_YEAR,          "Day of Year" ),
+        new RollAddField(Calendar.AM_PM,                "AM/PM" ),
+        new RollAddField(Calendar.HOUR_OF_DAY,          "Hour of day" ),
+        new RollAddField(Calendar.HOUR,                 "Hour" ),
+        new RollAddField(Calendar.MINUTE,               "Minute" ),
+        new RollAddField(Calendar.SECOND,               "Second" ),
+    };
+
+    /**
+     * Constructs a new CalendarCalcFrame that is initially invisible.
+     */
+    public CalendarCalcFrame(DemoApplet applet)
+    {
+        super("Multiple Calendar Demo");
+        this.applet = applet;
+        init();
+        start();
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init()
+    {
+        buildGUI();
+
+        patternText.setText( calendars[0].toPattern() );
+
+        // Force an update of the display
+        cityChanged();
+        millisFormat();
+    }
+
+    //------------------------------------------------------------
+    // package private
+    //------------------------------------------------------------
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+    /**
+     * Called to start the applet. You never need to call this method
+     * directly, it is called when the applet's document is visited.
+     */
+    public void start()
+    {
+        // do nothing
+    }
+
+    TextField patternText;
+
+    Choice dateMenu;
+    Choice localeMenu;
+
+    Button up;
+    Button down;
+
+    Checkbox getRoll;
+    Checkbox getAdd;
+
+    public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new FlowLayout()); // shouldn't be necessary, but it is.
+
+// TITLE
+        Label label1=new Label("Calendar Converter", Label.CENTER);
+        label1.setFont(DemoUtility.titleFont);
+        add(label1);
+        add(DemoUtility.createSpacer());
+
+// IO Panel
+        Panel topPanel = new Panel();
+        topPanel.setLayout(new FlowLayout());
+
+        CheckboxGroup group1= new CheckboxGroup();
+
+        // Set up the controls for each calendar we're demonstrating
+        for (int i = 0; i < calendars.length; i++)
+        {
+            Label label = new Label(calendars[i].name, Label.RIGHT);
+            label.setFont(DemoUtility.labelFont);
+            topPanel.add(label);
+
+            topPanel.add(calendars[i].text);
+
+            final int j = i;
+            calendars[i].text.addActionListener( new ActionListener() {
+                public void actionPerformed(ActionEvent e) {
+                    textChanged(j);
+                }
+            } );
+
+            calendars[i].rollAdd.setCheckboxGroup(group1);
+            topPanel.add(calendars[i].rollAdd);
+        }
+        calendars[0].rollAdd.setState(true);    // Make the first one selected
+
+        Label label4=new Label("Pattern", Label.RIGHT);
+        label4.setFont(DemoUtility.labelFont);
+        topPanel.add(label4);
+
+        patternText=new TextField(FIELD_COLUMNS);
+        patternText.setFont(DemoUtility.editFont);
+        topPanel.add(patternText);
+        topPanel.add(new Label(""));
+
+        DemoUtility.fixGrid(topPanel,3);
+        add(topPanel);
+        add(DemoUtility.createSpacer());
+
+// ROLL / ADD
+        Panel rollAddPanel=new Panel();
+        {
+            rollAddPanel.setLayout(new FlowLayout());
+
+            Panel rollAddBoxes = new Panel();
+            {
+                rollAddBoxes.setLayout(new GridLayout(2,1));
+                CheckboxGroup group2= new CheckboxGroup();
+                getRoll = new Checkbox("Roll",group2, false);
+                getAdd = new Checkbox("Add",group2, true);
+
+                rollAddBoxes.add(getRoll);
+                rollAddBoxes.add(getAdd);
+            }
+
+            Label dateLabel=new Label("Date Fields");
+            dateLabel.setFont(DemoUtility.labelFont);
+
+            dateMenu= new Choice();
+            dateMenu.setBackground(DemoUtility.choiceColor);
+            for (int i = 0; i < kRollAddFields.length; i++) {
+                dateMenu.addItem(kRollAddFields[i].name);
+                if (kRollAddFields[i].field == Calendar.MONTH) {
+                    dateMenu.select(i);
+                }
+            }
+
+            Panel upDown = new Panel();
+            {
+                upDown.setLayout(new GridLayout(2,1));
+
+                // *** If the images are not found, we use the label.
+                up = new Button("^");
+                down = new Button("v");
+                up.setBackground(DemoUtility.bgColor);
+                down.setBackground(DemoUtility.bgColor);
+                upDown.add(up);
+                upDown.add(down);
+            }
+
+            rollAddPanel.add(dateLabel);
+            rollAddPanel.add(dateMenu);
+            rollAddPanel.add(rollAddBoxes);
+            rollAddPanel.add(upDown);
+
+        }
+        Panel localePanel = new Panel();
+        {
+            // Make the locale popup menus
+            localeMenu= new Choice();
+
+            int selectMe = 0;
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 && locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    localeMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    localeMenu.addItem( locales[i].getDisplayLanguage());
+                }
+                if (locales[i].getLanguage().equals(Locale.getDefault().getLanguage())) {
+                    selectMe = i;
+                }
+            }
+            localeMenu.setBackground(DemoUtility.choiceColor);
+            localeMenu.select(selectMe);
+
+            Label localeLabel =new Label("Display Locale");
+            localeLabel.setFont(DemoUtility.labelFont);
+
+            localePanel.add(localeLabel);
+            localePanel.add(localeMenu);
+            DemoUtility.fixGrid(localePanel,2);
+
+            localeMenu.addItemListener( new ItemListener() {
+                public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[localeMenu.getSelectedIndex()];
+                    System.out.println("Change locale to " + loc.getDisplayName());
+
+                    for (int i = 0; i < calendars.length; i++) {
+                        calendars[i].setLocale(loc);
+                    }
+                    millisFormat();
+                }
+            } );
+        }
+        add(rollAddPanel);
+        add(DemoUtility.createSpacer());
+        add(localePanel);
+        add(DemoUtility.createSpacer());
+
+// COPYRIGHT
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,new Label(DemoUtility.copyright1, Label.LEFT),
+            DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add(copyrightPanel);
+    }
+
+    /**
+     * Called if an action occurs in the CalendarCalcFrame object.
+     */
+    public boolean action(Event evt, Object obj)
+    {
+        // *** Button events are handled here.
+        if (evt.target instanceof Button) {
+            if (evt.target == up) {
+                    dateFieldChanged(false);
+                    return true;
+            } else
+            if (evt.target == down) {
+                    dateFieldChanged(true);
+                    return true;
+            }
+        }
+        return super.action(evt, obj);
+    }
+
+    /**
+     * Handles the event. Returns true if the event is handled and should not
+     * be passed to the parent of this component. The default event handler
+     * calls some helper methods to make life easier on the programmer.
+     */
+    public boolean handleEvent(Event evt)
+    {
+        if (evt.id == Event.KEY_RELEASE && evt.target == patternText) {
+            patternTextChanged();
+            return true;
+        }
+        else if (evt.id == Event.KEY_RELEASE) {
+            for (int i = 0; i < calendars.length; i++) {
+                if (evt.target == calendars[i].text) {
+                    textChanged(i);
+                    return true;
+                }
+            }
+        }
+        else if (evt.id == Event.ACTION_EVENT && evt.target == up) {
+            dateFieldChanged(true);
+            return true;
+        }
+        else if (evt.id == Event.ACTION_EVENT && evt.target == down) {
+            dateFieldChanged(false);
+            return true;
+        }
+        else if (evt.id == Event.WINDOW_DESTROY && evt.target == this) {
+            this.hide();
+            this.dispose();
+
+            if (applet != null) {
+               applet.demoClosed();
+            } else System.exit(0);
+
+            return true;
+        }
+
+        return super.handleEvent(evt);
+    }
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void setFormatFromPattern() {
+        String timePattern = patternText.getText();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].applyPattern(timePattern);
+        }
+
+        millisFormat();
+    }
+
+    /**
+     * This function is called when it is necessary to parse the time
+     * string in one of the formatted date fields
+     */
+    public void textChanged(int index) {
+        String rightString = calendars[index].text.getText();
+
+        ParsePosition status = new ParsePosition(0);
+
+        if (rightString.length() == 0)
+        {
+            errorText("Error: no input to parse!");
+            return;
+        }
+
+        try {
+            Date date = calendars[index].format.parse(rightString, status);
+            time = date.getTime();
+        }
+        catch (Exception e) {
+            for (int i = 0; i < calendars.length; i++) {
+                if (i != index) {
+                    calendars[i].text.setText("ERROR");
+                }
+            }
+            errorText("Exception: " + e.getClass().toString() + " parsing: "+rightString);
+            return;
+        }
+
+        int start = calendars[index].text.getSelectionStart();
+        int end = calendars[index].text.getSelectionEnd();
+
+        millisFormat();
+
+        calendars[index].text.select(start,end);
+    }
+
+    /**
+     * This function is called when it is necessary to format the time
+     * in the "Millis" text field.
+     */
+    public void millisFormat() {
+        String out = "";
+
+        for (int i = 0; i < calendars.length; i++) {
+            try {
+                out = calendars[i].format.format(new Date(time));
+                calendars[i].text.setText(out);
+            }
+            catch (Exception e) {
+                calendars[i].text.setText("ERROR");
+                errorText("Exception: " + e.getClass().toString() + " formatting "
+                            + calendars[i].name + " " + time);
+            }
+        }
+    }
+
+
+    /**
+     * This function is called when users change the pattern text.
+     */
+    public void patternTextChanged() {
+        setFormatFromPattern();
+    }
+
+    /**
+     * This function is called when users select a new representative city.
+     */
+    public void cityChanged() {
+        TimeZone timeZone = TimeZone.getDefault();
+
+        for (int i = 0; i < calendars.length; i++) {
+            calendars[i].format.setTimeZone(timeZone);
+        }
+        millisFormat();
+    }
+
+    /**
+     * This function is called when users select a new time field
+     * to add or roll its value.
+     */
+    public void dateFieldChanged(boolean up) {
+        int field = kRollAddFields[dateMenu.getSelectedIndex()].field;
+
+        for (int i = 0; i < calendars.length; i++)
+        {
+            if (calendars[i].rollAdd.getState())
+            {
+                Calendar c = calendars[i].calendar;
+                c.setTime(new Date(time));
+
+                if (getAdd.getState()) {
+                    c.add(field, up ? 1 : -1);
+                } else {
+                    c.roll(field, up);
+                }
+
+                time = c.getTime().getTime();
+                millisFormat();
+                break;
+            }
+        }
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (true) {
+            System.out.println(s);
+        }
+    }
+
+    private static final int        FIELD_COLUMNS = 35;
+    private static final String     DEFAULT_FORMAT = "EEEE MMMM d, yyyy G";
+
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, java.util.Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+            rollAdd = new Checkbox();
+
+            text = new JTextField("",FIELD_COLUMNS);
+            text.setFont(DemoUtility.editFont);
+
+            format = IBMCalendar.getDateFormat(cal, DateFormat.FULL,
+                                                Locale.getDefault());
+            //format.applyPattern(DEFAULT_FORMAT);
+        }
+
+        public void setLocale(Locale loc) {
+            String pattern = toPattern();
+
+            format = IBMCalendar.getDateFormat(calendar, DateFormat.FULL,
+                                                                    loc);
+            applyPattern(pattern);
+        }
+
+        public void applyPattern(String pattern) {
+            if (format instanceof SimpleDateFormat) {
+                ((SimpleDateFormat)format).applyPattern(pattern);
+            } else if (format instanceof java.text.SimpleDateFormat) {
+                ((java.text.SimpleDateFormat)format).applyPattern(pattern);
+            }
+        }
+        
+        private String toPattern() {
+            if (format instanceof SimpleDateFormat) {
+                return ((SimpleDateFormat)format).toPattern();
+            } else if (format instanceof java.text.SimpleDateFormat) {
+                return ((java.text.SimpleDateFormat)format).toPattern();
+            } else {
+                return "";
+            }
+        }
+
+        java.util.Calendar  calendar;
+        DateFormat          format;
+        String              name;
+        JTextField           text;
+        Checkbox            rollAdd;
+    };
+
+    private final CalendarRec[] calendars = {
+        new CalendarRec("Gregorian",        new GregorianCalendar()),
+        new CalendarRec("Hebrew",           new HebrewCalendar()),
+        new CalendarRec("Islamic (civil)",  makeIslamic(true)),
+        new CalendarRec("Islamic (true)",   makeIslamic(false)),
+        new CalendarRec("Buddhist",         new BuddhistCalendar()),
+        new CalendarRec("Japanese",         new JapaneseCalendar()),
+//        new CalendarRec("Chinese",          new ChineseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    };
+};
+
+class RollAddField {
+    RollAddField(int field, String name) {
+        this.field = field;
+        this.name = name;
+    }
+    int field;
+    String name;
+};
\ No newline at end of file
diff --git a/src/com/ibm/demo/calendar/CalendarFrame.java b/src/com/ibm/demo/calendar/CalendarFrame.java
new file mode 100755
index 0000000..4612cd2
--- /dev/null
+++ b/src/com/ibm/demo/calendar/CalendarFrame.java
@@ -0,0 +1,422 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/calendar/Attic/CalendarFrame.java,v $ 
+ * $Date: 2000/03/10 03:47:42 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.demo.calendar;
+
+import com.ibm.demo.*;
+import com.ibm.util.IBMCalendar;
+import com.ibm.util.HebrewCalendar;
+import com.ibm.util.BuddhistCalendar;
+import com.ibm.util.JapaneseCalendar;
+import com.ibm.util.IslamicCalendar;
+import com.ibm.text.SimpleDateFormat;
+import java.util.SimpleTimeZone;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.net.*;
+import java.io.*;
+import java.text.DateFormat;
+import java.text.MessageFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.TimeZone;
+
+/**
+ * A Frame is a top-level window with a title. The default layout for a frame
+ * is BorderLayout.  The CalendarFrame class defines the window layout of
+ * CalendarDemo.
+ */
+class CalendarFrame extends Frame
+{
+    private static final boolean DEBUG = false;
+
+    private DemoApplet applet;
+
+    /**
+     * Constructs a new CalendarFrame that is initially invisible.
+     */
+    public CalendarFrame(DemoApplet myApplet)
+    {
+        super("Calendar Demo");
+        this.applet = myApplet;
+        init();
+
+        // When the window is closed, we want to shut down the applet or application
+        addWindowListener(
+            new WindowAdapter() {
+                public void windowClosing(WindowEvent e) {
+                    setVisible(false);
+                    dispose();
+
+                    if (applet != null) {
+                        applet.demoClosed();
+                    } else System.exit(0);
+                }
+            } );
+    }
+
+    private Choice          displayMenu;
+    private Locale[]        locales = DemoUtility.getG7Locales();
+
+    private Calendar        calendars[]   = new Calendar[2];
+    private Choice          calMenu[]     = new Choice[2];
+    private ColoredLabel    monthLabel[]  = new ColoredLabel[2];
+    private DateFormat      monthFormat[] = new DateFormat[2];
+
+    private Button          prevYear;
+    private Button          prevMonth;
+    private Button          gotoToday;
+    private Button          nextMonth;
+    private Button          nextYear;
+    private CalendarPanel   calendarPanel;
+
+    private static void add(Container container, Component component,
+                            GridBagLayout g, GridBagConstraints c,
+                            int gridwidth, int weightx)
+    {
+        c.gridwidth = gridwidth;
+        c.weightx = weightx;
+        g.setConstraints(component, c);
+        container.add(component);
+    }
+
+    /**
+     * Initializes the applet. You never need to call this directly, it
+     * is called automatically by the system once the applet is created.
+     */
+    public void init() {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout(10,10));
+
+        Panel topPanel = new Panel();
+        GridBagLayout g = new GridBagLayout();
+        topPanel.setLayout(g);
+        GridBagConstraints c = new GridBagConstraints();
+        c.fill = GridBagConstraints.HORIZONTAL;
+
+        // Build the two menus for selecting which calendar is displayed,
+        // plus the month/year label for each calendar
+        for (int i = 0; i < 2; i++) {
+            calMenu[i] = new Choice();
+            for (int j = 0; j < CALENDARS.length; j++) {
+                calMenu[i].addItem(CALENDARS[j].name);
+            }
+            calMenu[i].setBackground(DemoUtility.choiceColor);
+            calMenu[i].select(i);
+            calMenu[i].addItemListener(new CalMenuListener());
+
+            // Label for the current month name
+            monthLabel[i] = new ColoredLabel("", COLORS[i]);
+            monthLabel[i].setFont(DemoUtility.titleFont);
+
+            // And the default calendar to use for this slot
+            calendars[i] = CALENDARS[i].calendar;
+
+            add(topPanel, calMenu[i], g, c, 5, 0);
+            add(topPanel, monthLabel[i], g, c, GridBagConstraints.REMAINDER, 1);
+        }
+
+        // Now add the next/previous year/month buttons:
+        prevYear = new Button("<<");
+        prevYear.addActionListener(new AddAction(Calendar.YEAR, -1));
+
+        prevMonth = new Button("<");
+        prevMonth.addActionListener(new AddAction(Calendar.MONTH, -1));
+
+        gotoToday = new Button("Today");
+        gotoToday.addActionListener( new ActionListener()
+        {
+            public void actionPerformed(ActionEvent e) {
+                calendarPanel.setDate( new Date() );
+                updateMonthName();
+            }
+        } );
+
+        nextMonth = new Button(">");
+        nextMonth.addActionListener(new AddAction(Calendar.MONTH, 1));
+
+        nextYear = new Button(">>");
+        nextYear.addActionListener(new AddAction(Calendar.YEAR, 1));
+
+        c.fill = GridBagConstraints.NONE;
+        add(topPanel, prevYear,  g, c, 1, 0);
+        add(topPanel, prevMonth, g, c, 1, 0);
+        add(topPanel, gotoToday, g, c, 1, 0);
+        add(topPanel, nextMonth, g, c, 1, 0);
+        add(topPanel, nextYear,  g, c, 1, 0);
+
+        // Now add the menu for selecting the display language
+        Panel displayPanel = new Panel();
+        {
+            displayMenu = new Choice();
+            int selectMe = 1;
+            for (int i = 0; i < locales.length; i++) {
+                if (i > 0 &&
+                        locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                    i < locales.length - 1 &&
+                        locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+                {
+                    displayMenu.addItem( locales[i].getDisplayName() );
+                } else {
+                    displayMenu.addItem( locales[i].getDisplayLanguage());
+                }
+
+                if (locales[i].getLanguage().equals(Locale.getDefault().getLanguage())) {
+                    selectMe = i;
+                }
+            }
+            displayMenu.setBackground(DemoUtility.choiceColor);
+            displayMenu.select(selectMe);
+
+            displayMenu.addItemListener( new ItemListener()
+            {
+                 public void itemStateChanged(ItemEvent e) {
+                    Locale loc = locales[displayMenu.getSelectedIndex()];
+                    calendarPanel.setLocale( loc );
+                    monthFormat[0] = monthFormat[1] = null;
+                    updateMonthName();
+                    repaint();
+                }
+            } );
+
+            Label l1 = new Label("Display Language:", Label.RIGHT);
+            l1.setFont(DemoUtility.labelFont);
+
+            displayPanel.setLayout(new FlowLayout());
+            displayPanel.add(l1);
+            displayPanel.add(displayMenu);
+
+        }
+        c.fill = GridBagConstraints.NONE;
+        c.anchor = GridBagConstraints.EAST;
+
+        add(topPanel, displayPanel, g, c, GridBagConstraints.REMAINDER, 0);
+
+        // The title, buttons, etc. go in a panel at the top of the window
+        add("North", topPanel);
+
+        // The copyright notice goes at the bottom of the window
+        Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+        copyright.setFont(DemoUtility.creditFont);
+        add("South", copyright);
+
+        // Now create the big calendar panel and stick it in the middle
+        calendarPanel = new CalendarPanel( locales[displayMenu.getSelectedIndex()] );
+        add("Center", calendarPanel);
+
+        for (int i = 0; i < 2; i++) {
+            calendarPanel.setCalendar(i, calendars[i]);
+            calendarPanel.setColor(i, COLORS[i]);
+        }
+
+        updateMonthName();
+    };
+
+
+    private void updateMonthName()
+    {
+            for (int i = 0; i < 2; i++) {
+                try {
+                    if (monthFormat[i] == null) {     // TODO: optimize
+                        DateFormat f = IBMCalendar.getDateTimeFormat(
+                                                calendars[i], DateFormat.MEDIUM, -1,
+                                                locales[displayMenu.getSelectedIndex()]);
+                        if (f instanceof com.ibm.text.SimpleDateFormat) {
+                            com.ibm.text.SimpleDateFormat f1 = (com.ibm.text.SimpleDateFormat) f;
+                            f1.applyPattern("MMMM, yyyy G");
+                            f1.setTimeZone(new SimpleTimeZone(0, "UTC"));
+                        } else if (f instanceof java.text.SimpleDateFormat) {
+                            java.text.SimpleDateFormat f1 = (java.text.SimpleDateFormat) f;
+                            f1.applyPattern("MMMM, yyyy G");
+                            f1.setTimeZone(new SimpleTimeZone(0, "UTC"));
+                        }
+                        monthFormat[i] = f;
+                    }
+                } catch (ClassCastException e) {
+                    //hey {lw} - there's something wrong in this routine that cuases exceptions.
+                    System.out.println(e);
+                }
+
+                monthLabel[i].setText( monthFormat[i].format( calendarPanel.firstOfMonth() ));
+            }
+    }
+
+    /**
+     * CalMenuListener responds to events in the two popup menus that select
+     * the calendar systems to be used in the display.  It figures out which
+     * of the two menus the event occurred in and updates the corresponding
+     * element of the calendars[] array to match the new selection.
+     */
+    private class CalMenuListener implements ItemListener
+    {
+         public void itemStateChanged(ItemEvent e)
+         {
+            for (int i = 0; i < calMenu.length; i++)
+            {
+                if (e.getItemSelectable() == calMenu[i])
+                {
+                    // We found the menu that the event happened in.
+                    // Figure out which new calendar they selected.
+                    Calendar newCal = CALENDARS[ calMenu[i].getSelectedIndex() ].calendar;
+
+                    if (newCal != calendars[i])
+                    {
+                        // If any of the other menus are set to the same new calendar
+                        // we're about to use for this menu, set them to the current
+                        // calendar from *this* menu so we won't have two the same
+                        for (int j = 0; j < calendars.length; j++) {
+                            if (j != i && calendars[j] == newCal) {
+                                calendars[j] = calendars[i];
+                                calendarPanel.setCalendar(j, calendars[j]);
+                                monthFormat[j] = null;
+
+                                for (int k = 0; k < CALENDARS.length; k++) {
+                                    if (calendars[j] == CALENDARS[k].calendar) {
+                                        calMenu[j].select(k);
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                        // Now update this menu to use the new calendar the user selected
+                        calendars[i] = newCal;
+                        calendarPanel.setCalendar(i, newCal);
+                        monthFormat[i] = null;
+
+                        updateMonthName();
+                    }
+                    break;
+                }
+            }
+         }
+    };
+
+    /**
+     * AddAction handles the next/previous year/month buttons...
+     */
+    private class AddAction implements ActionListener {
+        AddAction(int field, int amount) {
+            this.field = field;
+            this.amount = amount;
+        }
+
+        public void actionPerformed(ActionEvent e) {
+            calendarPanel.add(field, amount);
+            updateMonthName();
+        }
+
+        private int field, amount;
+    }
+
+    /**
+     * ColoredLabel is similar to java.awt.Label, with two differences:
+     *
+     *  - You can set its text color
+     *
+     *  - It draws text using drawString rather than using a host-specific
+     *    "Peer" object like AWT does.  On 1.2, using drawString gives
+     *    us Bidi reordering for free.
+     */
+    static private class ColoredLabel extends Component {
+        public ColoredLabel(String label) {
+            text = label;
+        }
+
+        public ColoredLabel(String label, Color c) {
+            text = label;
+            color = c;
+        }
+
+        public void setText(String label) {
+            text = label;
+            repaint();
+        }
+
+        public void setFont(Font f) {
+            font = f;
+            repaint();
+        }
+
+        public void paint(Graphics g) {
+            FontMetrics fm = g.getFontMetrics(font);
+
+            Rectangle bounds = getBounds();
+
+            g.setColor(color);
+            g.setFont(font);
+            g.drawString(text, fm.stringWidth("\u00a0"),
+                         bounds.height/2 + fm.getHeight()
+                         - fm.getAscent() + fm.getLeading()/2);
+        }
+
+        public Dimension getPreferredSize() {
+            return getMinimumSize();
+        }
+
+        public Dimension getMinimumSize() {
+            FontMetrics fm = getFontMetrics(font);
+
+            return new Dimension( fm.stringWidth(text) + 2*fm.stringWidth("\u00a0"),
+                                  fm.getHeight() + fm.getLeading()*2);
+        }
+
+        String text;
+        Color color = Color.black;
+        Font font = DemoUtility.labelFont;
+    }
+
+    /**
+     * Print out the error message while debugging this program.
+     */
+    public void errorText(String s)
+    {
+        if (DEBUG)
+        {
+            System.out.println(s);
+        }
+    }
+
+    class CalendarRec {
+        public CalendarRec(String nameStr, java.util.Calendar cal)
+        {
+            name = nameStr;
+            calendar = cal;
+        }
+
+        java.util.Calendar  calendar;
+        String              name;
+    };
+
+    private final CalendarRec[] CALENDARS = {
+        new CalendarRec("Gregorian Calendar",       new GregorianCalendar()),
+        new CalendarRec("Hebrew Calendar",          new HebrewCalendar()),
+        new CalendarRec("Islamic Calendar",         makeIslamic(false)),
+        new CalendarRec("Islamic Civil Calendar ",  makeIslamic(true)),
+        new CalendarRec("Buddhist Calendar",        new BuddhistCalendar()),
+        new CalendarRec("Japanese Calendar",        new JapaneseCalendar()),
+    };
+
+    static private final Calendar makeIslamic(boolean civil) {
+        IslamicCalendar cal = new IslamicCalendar();
+        cal.setCivil(civil);
+        return cal;
+    };
+
+    static final Color[] COLORS = { Color.blue, Color.black };
+}
+
diff --git a/src/com/ibm/demo/calendar/CalendarPanel.java b/src/com/ibm/demo/calendar/CalendarPanel.java
new file mode 100755
index 0000000..f9e3c8a
--- /dev/null
+++ b/src/com/ibm/demo/calendar/CalendarPanel.java
@@ -0,0 +1,364 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/calendar/Attic/CalendarPanel.java,v $ 
+ * $Date: 2000/03/10 03:47:43 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.demo.calendar;
+
+import com.ibm.demo.*;
+
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+//import java.util.*;
+import java.net.*;
+import java.io.*;
+
+import java.text.DateFormat;
+import java.util.SimpleTimeZone;
+import java.util.*;
+
+import com.ibm.util.*;
+import com.ibm.text.*;
+
+class CalendarPanel extends Canvas {
+
+    public CalendarPanel( Locale locale ) {
+        setLocale(locale);
+    }
+
+    public void setLocale(Locale locale) {
+        if (fDisplayLocale == null || !fDisplayLocale.equals(locale)) {
+            fDisplayLocale = locale;
+            dirty = true;
+
+            for (int i = 0; i < fCalendar.length; i++) {
+                if (fCalendar[i] != null) {
+                    fSymbols[i] = IBMCalendar.getDateFormatSymbols(fCalendar[i],
+                                                                   fDisplayLocale);
+                }
+            }
+            String lang = locale.getLanguage();
+            leftToRight = !(lang.equals("iw") || lang.equals("ar"));
+
+            repaint();
+        }
+    }
+
+    public void setDate(Date date) {
+        fStartOfMonth = date;
+        dirty = true;
+        repaint();
+    }
+
+    public void add(int field, int delta)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(fStartOfMonth);
+            fCalendar[0].add(field, delta);
+            fStartOfMonth = fCalendar[0].getTime();
+        }
+        dirty = true;
+        repaint();
+    }
+
+    public void setColor(int index, Color c) {
+        fColor[index] = c;
+        repaint();
+    }
+
+    public void setCalendar(int index, Calendar c) {
+        Date date = (fCalendar[index] == null) ? new Date()
+                                               : fCalendar[index].getTime();
+
+        fCalendar[index] = c;
+        fCalendar[index].setTime(date);
+
+        fSymbols[index] = IBMCalendar.getDateFormatSymbols(c, fDisplayLocale);
+        dirty = true;
+        repaint();
+    }
+
+    public Calendar getCalendar(int index) {
+        return fCalendar[index];
+    }
+
+    public Locale getDisplayLocale() {
+        return fDisplayLocale;
+    }
+
+    public Date firstOfMonth() {
+        return fStartOfMonth;
+    }
+
+    private Date startOfMonth(Date dateInMonth)
+    {
+        synchronized(fCalendar) {
+            fCalendar[0].setTime(dateInMonth);
+
+            int era = fCalendar[0].get(Calendar.ERA);
+            int year = fCalendar[0].get(Calendar.YEAR);
+            int month = fCalendar[0].get(Calendar.MONTH);
+
+            fCalendar[0].clear();
+            fCalendar[0].set(Calendar.ERA, era);
+            fCalendar[0].set(Calendar.YEAR, year);
+            fCalendar[0].set(Calendar.MONTH, month);
+            fCalendar[0].set(Calendar.DATE, 1);
+
+            return fCalendar[0].getTime();
+        }
+    }
+
+    private void calculate()
+    {
+        //
+        // As a workaround for JDK 1.1.3 and below, where Calendars and time
+        // zones are a bit goofy, always set my calendar's time zone to UTC.
+        // You would think I would want to do this in the "set" function above,
+        // but if I do that, the program hangs when this class is loaded,
+        // perhaps due to some sort of static initialization ordering problem.
+        // So I do it here instead.
+        //
+        fCalendar[0].setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+        Calendar c = (Calendar)fCalendar[0].clone(); // Temporary copy
+
+        fStartOfMonth = startOfMonth(fStartOfMonth);
+
+        // Stash away a few useful constants for this calendar and display
+        minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+        daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+        firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+        // Stash away a Date for the start of this month
+
+        // Find the day of week of the first day in this month
+        c.setTime(fStartOfMonth);
+        firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+        int firstWeek = c.get(Calendar.WEEK_OF_MONTH);
+
+        // Now find the # of days in the month
+        c.roll(Calendar.DATE, false);
+        daysInMonth = c.get(Calendar.DATE);
+
+        // Finally, find the end of the month, i.e. the start of the next one
+        c.roll(Calendar.DATE, true);
+        c.add(Calendar.MONTH, 1);
+        c.getTime();        // JDK 1.1.2 bug workaround
+        c.add(Calendar.SECOND, -1);
+        Date endOfMonth = c.getTime();
+        int lastWeek = c.get(Calendar.WEEK_OF_MONTH);
+
+        // Calculate the number of full or partial weeks in this month.
+        numWeeks = lastWeek - firstWeek + 1;
+
+        dirty = false;
+    }
+
+    static final int XINSET = 4;
+    static final int YINSET = 2;
+
+    /*
+     * Convert from the day number within a month (1-based)
+     * to the cell coordinates on the calendar (0-based)
+     */
+    private void dateToCell(int date, Point pos)
+    {
+        int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        pos.x = cell % daysInWeek;
+        pos.y = cell / daysInWeek;
+    }
+    private Point dateToCell(int date) {
+        Point p = new Point(0,0);
+        dateToCell(date, p);
+        return p;
+    }
+
+    public void paint(Graphics g) {
+
+        if (dirty) {
+            calculate();
+        }
+
+        Point cellPos = new Point(0,0);     // Temporary variable
+        Dimension d = this.getSize();
+
+        g.setColor(Color.lightGray);
+        g.fillRect(0,0,d.width,d.height);
+
+        // Draw the day names at the top
+        g.setColor(Color.black);
+        g.setFont(DemoUtility.labelFont);
+        FontMetrics fm = g.getFontMetrics();
+        int labelHeight = fm.getHeight() + YINSET * 2;
+
+        int v = fm.getAscent() + YINSET;
+        for (int i = 0; i < daysInWeek; i++) {
+            int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+            String dayName = fSymbols[0].getWeekdays()[dayNum];
+
+
+            double h;
+            if (leftToRight) {
+                h = d.width*(i + 0.5) / daysInWeek;
+            } else {
+                h = d.width*(daysInWeek - i - 0.5) / daysInWeek;
+            }
+            h -= fm.stringWidth(dayName) / 2;
+
+            g.drawString(dayName, (int)h, v);
+        }
+
+        double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+        double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+        // Draw a white background in the part of the calendar
+        // that displays this month.
+        // First figure out how much of the first week should be shaded.
+        {
+            g.setColor(Color.white);
+            dateToCell(1, cellPos);
+            int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+            if (leftToRight) {
+                g.fillRect((int)(width), labelHeight ,
+                           d.width - width, (int)cellHeight);
+            } else {
+                g.fillRect(0, labelHeight ,
+                           d.width - width, (int)cellHeight);
+            }
+
+            // All of the intermediate weeks get shaded completely
+            g.fillRect(0, (int)(labelHeight + cellHeight),
+                        d.width, (int)(cellHeight * (numWeeks - 2)));
+
+            // Now figure out the last week.
+            dateToCell(daysInMonth, cellPos);
+            width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+            if (leftToRight) {
+                g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            } else {
+                g.fillRect(d.width - width, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                           width, (int)cellHeight);
+            }
+
+        }
+        // Draw the X/Y grid lines
+        g.setColor(Color.black);
+        for (int i = 0; i <= numWeeks; i++) {
+            int y = (int)(labelHeight + i * cellHeight);
+            g.drawLine(0, y, d.width - 1, y);
+        }
+        for (int i = 0; i <= daysInWeek; i++) {
+            int x = (int)(i * cellWidth);
+            g.drawLine(x, labelHeight, x, d.height - 1);
+        }
+
+        // Now loop through all of the days in the month, figure out where
+        // they go in the grid, and draw the day # for each one
+
+        // Figure out the date of the first cell in the calendar display
+        int cell = (1 + firstDayInMonth - firstDayOfWeek - minDay);
+        if (firstDayInMonth < firstDayOfWeek) {
+            cell += daysInWeek;
+        }
+
+        Calendar c = (Calendar)fCalendar[0].clone();
+        c.setTime(fStartOfMonth);
+        c.add(Calendar.DATE, -cell);
+
+        StringBuffer buffer = new StringBuffer();
+
+        for (int row = 0; row < numWeeks; row++) {
+            for (int col = 0; col < daysInWeek; col++) {
+
+                g.setFont(DemoUtility.numberFont);
+                g.setColor(Color.black);
+                fm = g.getFontMetrics();
+
+                int cellx;
+                if (leftToRight) {
+                    cellx = (int)((col) * cellWidth);
+                } else {
+                    cellx = (int)((daysInWeek - col - 1) * cellWidth);
+                }
+
+                int celly = (int)(row * cellHeight + labelHeight);
+
+                for (int i = 0; i < 2; i++) {
+                    fCalendar[i].setTime(c.getTime());
+
+                    int date = fCalendar[i].get(Calendar.DATE);
+                    buffer.setLength(0);
+                    buffer.append(date);
+                    String dayNum = buffer.toString();
+
+                    int x;
+
+                    if (leftToRight) {
+                        x = cellx + (int)cellWidth - XINSET - fm.stringWidth(dayNum);
+                    } else {
+                        x = cellx + XINSET;
+                    }
+                    int y = celly + + fm.getAscent() + YINSET + i * fm.getHeight();
+
+                    if (fColor[i] != null) {
+                        g.setColor(fColor[i]);
+                    }
+                    g.drawString(dayNum, x, y);
+
+                    if (date == 1 || row == 0 && col == 0) {
+                        g.setFont(DemoUtility.numberFont);
+                        String month = fSymbols[i].getMonths()[
+                                            fCalendar[i].get(Calendar.MONTH)];
+
+                        if (leftToRight) {
+                            x = cellx + XINSET;
+                        } else {
+                            x = cellx + (int)cellWidth - XINSET - fm.stringWidth(month);
+                        }
+                        g.drawString(month, x, y);
+                    }
+                }
+
+                c.add(Calendar.DATE, 1);
+            }
+        }
+    }
+
+    // Important state variables
+    private Calendar[]          fCalendar = new Calendar[4];
+    private Color[]             fColor = new Color[4];
+
+    private Locale              fDisplayLocale;
+    private DateFormatSymbols[] fSymbols = new DateFormatSymbols[4];
+
+    private Date                fStartOfMonth = new Date();     // 00:00:00 on first day of month
+
+    // Cached calculations to make drawing faster.
+    private transient int       minDay;           // Minimum legal day #
+    private transient int       daysInWeek;       // # of days in a week
+    private transient int       firstDayOfWeek;   // First day to display in week
+    private transient int       numWeeks;         // # full or partial weeks in month
+    private transient int       daysInMonth;      // # days in this month
+    private transient int       firstDayInMonth;  // Day of week of first day in month
+    private transient boolean   leftToRight;
+
+    private transient boolean dirty = true;
+}
diff --git a/src/com/ibm/demo/holiday/HolidayBorderPanel.java b/src/com/ibm/demo/holiday/HolidayBorderPanel.java
new file mode 100755
index 0000000..d838142
--- /dev/null
+++ b/src/com/ibm/demo/holiday/HolidayBorderPanel.java
@@ -0,0 +1,550 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1997-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/holiday/Attic/HolidayBorderPanel.java,v $ 
+ * $Date: 2000/03/10 03:47:43 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo.holiday;
+
+import com.ibm.demo.*;
+import java.awt.*;
+
+/**
+ * Various graphical borders. The border itself is a Panel so that it can
+ * contain other Components (i.e. it borders something). You use the
+ * HolidayBorderPanel like any other Panel: you set the layout that you prefer and
+ * add Components to it. Beware that a null layout does not obey the insets
+ * of the panel so if you use null layouts, adjust your measurements to
+ * handle the border by calling insets().
+ *
+ * @author  Andy Clark, Taligent Inc.
+ * @version 1.0
+ */
+public class HolidayBorderPanel extends Panel {
+    // Constants
+
+    /** Solid border. */
+    public final static int SOLID = 0;
+    /** A raised border. */
+    public final static int RAISED = 1;
+    /** A lowered border. */
+    public final static int LOWERED = 2;
+    /** An etched in border. */
+    public final static int IN = 3;
+    /** An etched out border. */
+    public final static int OUT = 4;
+
+    /** Left alignment. */
+    public final static int LEFT = 0;
+    /** Center alignment. */
+    public final static int CENTER = 1;
+    /** Right alignment. */
+    public final static int RIGHT = 2;
+
+    /** Default style (IN). */
+    public final static int DEFAULT_STYLE = IN;
+    /** Default thickness (10). */
+    public final static int DEFAULT_THICKNESS = 10;
+    /** Default thickness for solid borders (4). */
+    public final static int DEFAULT_SOLID_THICKNESS = 4;
+    /** Default thickness for raised borders (2). */
+    public final static int DEFAULT_RAISED_THICKNESS = 2;
+    /** Default thickness for lowered borders (2). */
+    public final static int DEFAULT_LOWERED_THICKNESS = 2;
+    /** Default thickness for etched-in borders (10). */
+    public final static int DEFAULT_IN_THICKNESS = 10;
+    /** Default thickness for etched-out borders (10). */
+    public final static int DEFAULT_OUT_THICKNESS = 10;
+    /** Default gap between border and contained component (5). */
+    public final static int DEFAULT_GAP = 5;
+    /** Default color (black). Applies to SOLID and etched borders. */
+    public final static Color DEFAULT_COLOR = Color.black;
+
+    /** Default font (TimesRoman,PLAIN,14). Only applies to etched borders. */
+    public final static Font DEFAULT_FONT = new Font("TimesRoman", Font.PLAIN, 14);
+    /** Default alignment (LEFT). Only applies to etched borders. */
+    public final static int DEFAULT_ALIGNMENT = LEFT;
+
+    // Data
+    private int style;
+    private int thickness;
+    private int gap;
+    private Color color;
+
+    private Font font;
+    private String text;
+    private int alignment;
+
+    /**
+     * Constructor. Makes default border.
+     */
+    public HolidayBorderPanel() {
+
+        // initialize data
+        style       = DEFAULT_STYLE;
+        thickness   = DEFAULT_THICKNESS;
+        gap         = DEFAULT_GAP;
+        color       = DEFAULT_COLOR;
+
+        text        = null;
+        font        = DEFAULT_FONT;
+        alignment   = DEFAULT_ALIGNMENT;
+
+        }
+
+    /**
+     * Constructor. Makes an etched IN border with given text caption.
+     *
+     * @param text  Text caption
+     */
+    public HolidayBorderPanel(String text) {
+        this();
+
+        style = IN;
+        this.text = text;
+        }
+
+    /**
+     * Constructor. Makes SOLID border with color and thickness given.
+     *
+     * @param color     The color for the border.
+     * @param thickness The thickness of the border.
+     */
+    public HolidayBorderPanel(Color color, int thickness) {
+        this();
+
+        style = SOLID;
+        this.color = color;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Constructor. Makes a border of the given style with the default
+     * thickness for that style.
+     *
+     * @param style The style for this border.
+     */
+    public HolidayBorderPanel(int style) {
+        this();
+
+        // set thickness appropriate to this style
+        int thickness;
+        switch (style) {
+            case SOLID: thickness = DEFAULT_SOLID_THICKNESS; break;
+            case RAISED: thickness = DEFAULT_RAISED_THICKNESS; break;
+            case LOWERED: thickness = DEFAULT_LOWERED_THICKNESS; break;
+            case IN: thickness = DEFAULT_IN_THICKNESS; break;
+            case OUT: thickness = DEFAULT_OUT_THICKNESS; break;
+            default:
+                thickness = DEFAULT_THICKNESS;
+            }
+
+        this.style = style;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Constructor. Makes border with given style and thickness.
+     *
+     * @param style     The style for this border.
+     * @param thickness The thickness for this border.
+     */
+    public HolidayBorderPanel(int style, int thickness) {
+        this();
+
+        this.style = style;
+        this.thickness = thickness;
+        }
+
+    /**
+     * Returns the insets of this panel..
+     */
+    public Insets insets() {
+        int adjustment = 0;
+
+        // adjust for text string
+        if (style == IN || style == OUT) {
+            if (text != null && text.length() > 0) {
+                try {
+                    // set font and get info
+                    int height = getGraphics().getFontMetrics(font).getHeight();
+                    if (height > thickness)
+                        adjustment = height - thickness;
+                    }
+                catch (Exception e) {
+                    // nothing: just in case there is no graphics context
+                    //   at the beginning.
+                    }
+                }
+            }
+
+        // return appropriate insets
+        int dist = thickness + gap;
+        return new Insets(dist + adjustment, dist, dist, dist);
+        }
+
+    /**
+     * Sets the style of the border
+     *
+     * @param style The new style.
+     */
+    public HolidayBorderPanel setStyle(int style) {
+
+        // set the style and re-layout the panel
+        this.style = style;
+        layout();
+        repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the style of the border
+     */
+    public int getStyle() {
+
+        return style;
+        }
+
+    /**
+     * Sets the thickness of the border.
+     *
+     * @param thickness The new thickness
+     */
+    public HolidayBorderPanel setThickness(int thickness) {
+
+        if (thickness > 0) {
+            this.thickness = thickness;
+            layout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the thickness of the border.
+     */
+    public int getThickness() {
+
+        return thickness;
+        }
+
+    /**
+     * Sets the gap between the border and the contained Component.
+     *
+     * @param gap The new gap, in pixels.
+     */
+    public HolidayBorderPanel setGap(int gap) {
+
+        if (gap > -1) {
+            this.gap = gap;
+            layout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the gap between the border and the contained Component.
+     */
+    public int getGap() {
+
+        return gap;
+        }
+
+    /**
+     * Sets the current color for SOLID borders and the caption text
+     * color for etched borders.
+     *
+     * @param color The new color.
+     */
+    public HolidayBorderPanel setColor(Color color) {
+
+        this.color = color;
+        if (style == SOLID || style == IN || style == OUT)
+            repaint();
+
+        return this;
+        }
+
+    /**
+     * Gets the current color for SOLID borders and the caption
+     * text color for etched borders.
+     */
+    public Color getColor() {
+
+        return color;
+        }
+
+    /**
+     * Sets the font. Only applies to etched borders.
+     */
+    public HolidayBorderPanel setTextFont(Font font) {
+
+        // set font
+        if (font != null) {
+            this.font = font;
+            if (style == IN || style == OUT) {
+                layout();
+                repaint();
+                }
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the font of the text. Only applies to etched borders.
+     */
+    public Font getTextFont() {
+
+        return font;
+        }
+
+    /**
+     * Sets the text. Only applies to etched borders.
+     *
+     * @param text  The new text.
+     */
+    public HolidayBorderPanel setText(String text) {
+
+        this.text = text;
+        if (style == IN || style == OUT) {
+            layout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text. Only applies to etched borders.
+     */
+    public String getText() {
+
+        return text;
+        }
+
+    /**
+     * Sets the text alignment. Only applies to etched borders.
+     *
+     * @param alignment The new alignment.
+     */
+    public HolidayBorderPanel setAlignment(int alignment) {
+
+        this.alignment = alignment;
+        if (style == IN || style == OUT) {
+            layout();
+            repaint();
+            }
+
+        return this;
+        }
+
+    /**
+     * Gets the text alignment.
+     */
+    public int getAlignment() {
+
+        return alignment;
+        }
+
+    /**
+     * Repaints the border.
+     *
+     * @param g The graphics context.
+     */
+    public void paint(Graphics g) {
+
+        // get current dimensions
+        Dimension size = size();
+        int width = size.width;
+        int height = size.height;
+
+        // set colors
+        Color light = getBackground().brighter().brighter().brighter();
+        Color dark = getBackground().darker().darker().darker();
+
+        // Draw border
+        switch (style) {
+            case RAISED:    // 3D Border (in or out)
+            case LOWERED:
+                Color topleft = null;
+                Color bottomright = null;
+
+                // set colors
+                if (style == RAISED) {
+                    topleft = light;
+                    bottomright = dark;
+                    }
+                else {
+                    topleft = dark;
+                    bottomright = light;
+                    }
+
+                // draw border
+                g.setColor(topleft);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i, i, width - i - 2, i);
+                    g.drawLine(i, i + 1, i, height - i - 1);
+                    }
+                g.setColor(bottomright);
+                for (int i = 0; i < thickness; i++) {
+                    g.drawLine(i + 1, height - i - 1, width - i - 1, height - i - 1);
+                    g.drawLine(width - i - 1, i, width - i - 1, height - i - 2);
+                    }
+                break;
+
+            case IN:    // Etched Border (in or out)
+            case OUT:
+                int adjust1 = 0;
+                int adjust2 = 0;
+
+                // set font and get info
+                Font oldfont = g.getFont();
+                g.setFont(font);
+                FontMetrics fm = g.getFontMetrics();
+                int ascent = fm.getAscent();
+
+                // set adjustment
+                if (style == IN)
+                    adjust1 = 1;
+                else
+                    adjust2 = 1;
+
+                // Calculate adjustment for text
+                int adjustment = 0;
+                if (text != null && text.length() > 0) {
+                    if (ascent > thickness)
+                        adjustment = (ascent - thickness) / 2;
+                    }
+
+                // The adjustment is there so that we always draw the
+                // light rectangle first. Otherwise, your eye picks up
+                // the discrepancy where the light rect. passes over
+                // the darker rect.
+                int x = thickness / 2;
+                int y = thickness / 2 + adjustment;
+                int w = width - thickness - 1;
+                int h = height - thickness - 1 - adjustment;
+
+                // draw rectangles
+                g.setColor(light);
+                g.drawRect(x + adjust1, y + adjust1, w, h);
+                g.setColor(dark);
+                g.drawRect(x + adjust2, y + adjust2, w, h);
+
+                // draw text, if applicable
+                if (text != null && text.length() > 0) {
+                    // calculate drawing area
+                    int fontheight = fm.getHeight();
+                    int strwidth = fm.stringWidth(text);
+
+                    int textwidth = width - 2 * (thickness + 5);
+                    if (strwidth > textwidth)
+                        strwidth = textwidth;
+
+                    // calculate offset for alignment
+                    int offset;
+                    switch (alignment) {
+                        case CENTER:
+                            offset = (width - strwidth) / 2;
+                            break;
+                        case RIGHT:
+                            offset = width - strwidth - thickness - 5;
+                            break;
+                        case LEFT:
+                        default: // assume left alignment if invalid
+                            offset = thickness + 5;
+                            break;
+                        }
+
+                    // clear drawing area and set clipping region
+                    g.clearRect(offset - 5, 0, strwidth  + 10, fontheight);
+                    g.clipRect(offset, 0, strwidth, fontheight);
+
+                    // draw text
+                    g.setColor(color);
+                    g.drawString(text, offset, ascent);
+
+                    // restore old clipping area
+                    g.clipRect(0, 0, width, height);
+                    }
+
+                g.setFont(oldfont);
+                break;
+
+            case SOLID:
+            default: // assume SOLID
+                g.setColor(color);
+                for (int i = 0; i < thickness; i++)
+                    g.drawRect(i, i, width - 2 * i - 1, height - 2 * i - 1);
+            }
+
+        }
+
+    /**
+     * Returns the settings of this HolidayBorderPanel instance as a string.
+     */
+    public String toString() {
+        StringBuffer str = new StringBuffer("HolidayBorderPanel[");
+
+        // style
+        str.append("style=");
+        switch (style) {
+            case SOLID: str.append("SOLID"); break;
+            case RAISED: str.append("RAISED"); break;
+            case LOWERED: str.append("LOWERED"); break;
+            case IN: str.append("IN"); break;
+            case OUT: str.append("OUT"); break;
+            default: str.append("unknown");
+            }
+        str.append(",");
+
+        // thickness
+        str.append("thickness=");
+        str.append(thickness);
+        str.append(",");
+
+        // gap
+        str.append("gap=");
+        str.append(gap);
+        str.append(",");
+
+        // color
+        str.append(color);
+        str.append(",");
+
+        // font
+        str.append(font);
+        str.append(",");
+
+        // text
+        str.append("text=");
+        str.append(text);
+        str.append(",");
+
+        // alignment
+        str.append("alignment=");
+        switch (alignment) {
+            case LEFT: str.append("LEFT"); break;
+            case CENTER: str.append("CENTER"); break;
+            case RIGHT: str.append("RIGHT"); break;
+            default: str.append("unknown");
+            }
+
+        str.append("]");
+
+        return str.toString();
+        }
+
+    }
+
diff --git a/src/com/ibm/demo/holiday/HolidayCalendarDemo.java b/src/com/ibm/demo/holiday/HolidayCalendarDemo.java
new file mode 100755
index 0000000..cb438ef
--- /dev/null
+++ b/src/com/ibm/demo/holiday/HolidayCalendarDemo.java
@@ -0,0 +1,706 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/holiday/Attic/HolidayCalendarDemo.java,v $ 
+ * $Date: 2000/03/10 03:47:43 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.demo.holiday;
+
+import com.ibm.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.util.*;
+import java.net.*;
+import java.io.*;
+
+import java.text.SimpleDateFormat;
+import java.text.DateFormatSymbols;
+import java.util.SimpleTimeZone;
+import java.util.*;
+
+import com.ibm.util.*;
+
+/**
+ * CalendarDemo demonstrates how Calendar works.
+ */
+public class HolidayCalendarDemo extends DemoApplet
+{
+    /**
+     * The main function which defines the behavior of the CalendarDemo
+     * applet when an applet is started.
+     */
+    public static void main(String argv[]) {
+
+        new HolidayCalendarDemo().showDemo();
+    }
+
+    /* This creates a CalendarFrame for the demo applet. */
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new CalendarFrame(applet);
+    }
+
+	/**
+	* A Frame is a top-level window with a title. The default layout for a frame
+	* is BorderLayout.  The CalendarFrame class defines the window layout of
+	* CalendarDemo.
+	*/
+	private static class CalendarFrame extends Frame
+	{
+    	private static final String creditString = "";
+
+    	private static final boolean DEBUG = false;
+
+    	private Locale curLocale = Locale.US;
+
+    	private DemoApplet applet;
+
+    	private static final Locale[] calendars = {
+        	//new Locale("de","AT"),
+        	Locale.CANADA,
+        	Locale.CANADA_FRENCH,
+        	Locale.FRANCE,
+        	Locale.GERMANY,
+        	new Locale("iw","IL"),
+        	new Locale("el","GR"),
+        	//new Locale("es","MX"),
+        	Locale.UK,
+        	Locale.US,
+    	};
+    	private static final Locale[] displays = {
+        	Locale.CANADA,
+        	Locale.UK,
+        	Locale.US,
+        	Locale.FRANCE,
+        	Locale.CANADA_FRENCH,
+        	//new Locale("de","AT"),
+        	Locale.GERMAN,
+        	new Locale("el","GR"),
+        	//new Locale("iw","IL"),
+        	new Locale("es","MX"),
+    	};
+
+    	/**
+    	* Constructs a new CalendarFrame that is initially invisible.
+    	*/
+    	public CalendarFrame(DemoApplet applet)
+    	{
+        	super("Calendar Demo");
+        	this.applet = applet;
+        	init();
+        	start();
+    	}
+
+    	/**
+    	* Initializes the applet. You never need to call this directly, it
+    	* is called automatically by the system once the applet is created.
+    	*/
+    	public void init()
+    	{
+        	// Get G7 locales only for demo purpose. To get all the locales
+        	// supported, switch to calling Calendar.getAvailableLocales().
+        	// commented
+        	locales = displays;
+
+        	buildGUI();
+    	}
+
+    	//------------------------------------------------------------
+    	// package private
+    	//------------------------------------------------------------
+    	void addWithFont(Container container, Component foo, Font font) {
+        	if (font != null)
+            	foo.setFont(font);
+        	container.add(foo);
+    	}
+
+    	/**
+    	* Called to start the applet. You never need to call this method
+    	* directly, it is called when the applet's document is visited.
+    	*/
+    	public void start()
+    	{
+        	// do nothing
+    	}
+
+    	private Choice          localeMenu;
+    	private Choice          displayMenu;
+    	private Locale[]        locales;
+
+    	private Label           monthLabel;
+    	private Button          prevYear;
+    	private Button          prevMonth;
+    	private Button          gotoToday;
+    	private Button          nextMonth;
+    	private Button          nextYear;
+    	private CalendarPanel   calendarPanel;
+
+    	private static final Locale kFirstLocale = Locale.US;
+
+    	private static void add(Container container, Component component,
+                            	GridBagLayout g, GridBagConstraints c)
+    	{
+        	g.setConstraints(component, c);
+        	container.add(component);
+    	}
+
+    	public void buildGUI()
+    	{
+        	setBackground(DemoUtility.bgColor);
+        	setLayout(new BorderLayout(10,10));
+
+        	// Label for the demo's title
+        	Label titleLabel = new Label("Calendar Demo", Label.CENTER);
+        	titleLabel.setFont(DemoUtility.titleFont);
+
+        	// Label for the current month name
+        	monthLabel = new Label("", Label.LEFT);
+        	monthLabel.setFont(new Font(DemoUtility.titleFont.getName(),
+                                    	DemoUtility.titleFont.getStyle(),
+                                    	(DemoUtility.titleFont.getSize() * 3)/2));
+
+        	// Make the locale popup menus
+        	localeMenu= new Choice();
+        	int selectMe = 0;
+        	for (int i = 0; i < calendars.length; i++) {
+            	if (i > 0 &&
+                    	calendars[i].getCountry().equals(calendars[i-1].getCountry()) ||
+                	i < calendars.length - 1 &&
+                    	calendars[i].getCountry().equals(calendars[i+1].getCountry()))
+            	{
+                	localeMenu.addItem(calendars[i].getDisplayCountry() + " (" +
+                                	calendars[i].getDisplayLanguage() + ")");
+            	} else {
+                	localeMenu.addItem( calendars[i].getDisplayCountry() );
+            	}
+            	if (calendars[i].equals(kFirstLocale)) {
+                	selectMe = i;
+            	}
+        	}
+        	localeMenu.setBackground(DemoUtility.choiceColor);
+        	localeMenu.select(selectMe);
+
+        	displayMenu = new Choice();
+        	for (int i = 0; i < locales.length; i++) {
+            	if (i > 0 &&
+                    	locales[i].getLanguage().equals(locales[i-1].getLanguage()) ||
+                	i < locales.length - 1 &&
+                    	locales[i].getLanguage().equals(locales[i+1].getLanguage()))
+            	{
+                	displayMenu.addItem( locales[i].getDisplayName() );
+            	} else {
+                	displayMenu.addItem( locales[i].getDisplayLanguage());
+            	}
+        	}
+        	displayMenu.setBackground(DemoUtility.choiceColor);
+        	displayMenu.select(kFirstLocale.getDisplayName());
+
+        	// Make all the next/previous/today buttons
+        	prevYear = new Button("<<");
+        	prevMonth = new Button("<");
+        	gotoToday = new Button("Today");
+        	nextMonth = new Button(">");
+        	nextYear = new Button(">>");
+
+        	// The month name and the control buttons are bunched together
+        	Panel monthPanel = new Panel();
+        	{
+            	GridBagLayout g = new GridBagLayout();
+            	GridBagConstraints c = new GridBagConstraints();
+            	monthPanel.setLayout(g);
+
+            	c.weightx = 1;
+            	c.weighty = 1;
+
+            	c.gridwidth = 1;
+            	c.fill = GridBagConstraints.HORIZONTAL;
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(monthPanel, monthLabel, g, c);
+
+            	c.gridwidth = 1;
+            	add(monthPanel, prevYear, g, c);
+            	add(monthPanel, prevMonth, g, c);
+            	add(monthPanel, gotoToday, g, c);
+            	add(monthPanel, nextMonth, g, c);
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(monthPanel, nextYear, g, c);
+        	}
+
+        	// Stick the menu and buttons in a little "control panel"
+        	Panel menuPanel = new Panel();
+        	{
+            	GridBagLayout g = new GridBagLayout();
+            	GridBagConstraints c = new GridBagConstraints();
+            	menuPanel.setLayout(g);
+
+            	c.weightx = 1;
+            	c.weighty = 1;
+
+            	c.fill = GridBagConstraints.HORIZONTAL;
+
+            	c.gridwidth = GridBagConstraints.RELATIVE;
+            	Label l1 = new Label("Holidays");
+            	l1.setFont(DemoUtility.labelFont);
+            	add(menuPanel, l1, g, c);
+
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(menuPanel, localeMenu, g, c);
+
+            	c.gridwidth = GridBagConstraints.RELATIVE;
+            	Label l2 = new Label("Display:");
+            	l2.setFont(DemoUtility.labelFont);
+            	add(menuPanel, l2, g, c);
+
+            	c.gridwidth = GridBagConstraints.REMAINDER;
+            	add(menuPanel, displayMenu, g, c);
+        	}
+
+        	// The title, buttons, etc. go in a panel at the top of the window
+        	Panel topPanel = new Panel();
+        	{
+            	topPanel.setLayout(new BorderLayout());
+
+            	//topPanel.add("North", titleLabel);
+            	topPanel.add("Center", monthPanel);
+            	topPanel.add("East", menuPanel);
+        	}
+        	add("North", topPanel);
+
+        	// The copyright notice goes at the bottom of the window
+        	Label copyright = new Label(DemoUtility.copyright1, Label.LEFT);
+        	copyright.setFont(DemoUtility.creditFont);
+        	add("South", copyright);
+
+        	// Now create the big calendar panel and stick it in the middle
+        	calendarPanel = new CalendarPanel( kFirstLocale );
+        	add("Center", calendarPanel);
+
+        	updateMonthName();
+    	}
+
+    	/**
+    	* Called if an action occurs in the CalendarFrame object.
+    	*/
+    	public boolean action(Event evt, Object obj)
+    	{
+        	// *** Button events are handled here.
+        	boolean handled = false;
+
+        	if (evt.target instanceof Button) {
+            	if (evt.target == nextMonth) {
+                	calendarPanel.add(Calendar.MONTH, +1);
+                	handled = true;
+            	}
+            	else
+            	if (evt.target == prevMonth) {
+                	calendarPanel.add(Calendar.MONTH, -1);
+                	handled = true;
+            	}
+            	else
+            	if (evt.target == prevYear) {
+                	calendarPanel.add(Calendar.YEAR, -1);
+                	handled = true;
+            	}
+            	else
+            	if (evt.target == nextYear) {
+                	calendarPanel.add(Calendar.YEAR, +1);
+                	handled = true;
+            	}
+            	else
+            	if (evt.target == gotoToday) {
+                	calendarPanel.set( new Date() );
+                	handled = true;
+            	}
+            	if (handled) {
+                	updateMonthName();
+            	}
+        	}
+        	return handled || super.action(evt, obj);
+    	}
+
+    	private void updateMonthName()
+    	{
+        	SimpleDateFormat f = new SimpleDateFormat("MMMM yyyyy",
+                                                    	calendarPanel.getDisplayLocale());
+        	f.setCalendar(calendarPanel.getCalendar());
+        	f.setTimeZone(new SimpleTimeZone(0, "UTC"));        // JDK 1.1.2 workaround
+        	monthLabel.setText( f.format( calendarPanel.firstOfMonth() ));
+    	}
+
+    	/**
+    	* Handles the event. Returns true if the event is handled and should not
+    	* be passed to the parent of this component. The default event handler
+    	* calls some helper methods to make life easier on the programmer.
+    	*/
+    	public boolean handleEvent(Event evt)
+    	{
+        	if (evt.id == Event.ACTION_EVENT && evt.target == localeMenu) {
+            	calendarPanel.setCalendarLocale(calendars[localeMenu.getSelectedIndex()]);
+            	updateMonthName();
+            	return true;
+        	}
+        	if (evt.id == Event.ACTION_EVENT && evt.target == displayMenu) {
+            	calendarPanel.setDisplayLocale(locales[displayMenu.getSelectedIndex()]);
+            	updateMonthName();
+            	return true;
+        	}
+        	else
+        	if (evt.id == Event.WINDOW_DESTROY && evt.target == this) {
+            	this.hide();
+            	this.dispose();
+
+            	if (applet != null) {
+            	applet.demoClosed();
+            	} else {
+                	System.exit(0);
+            	}
+            	return true;
+        	}
+        	return super.handleEvent(evt);
+    	}
+
+    	/**
+    	* Print out the error message while debugging this program.
+    	*/
+    	public void errorText(String s)
+    	{
+        	if (DEBUG)
+        	{
+            	System.out.println(s);
+        	}
+    	}
+	}
+
+
+	private static class CalendarPanel extends Canvas {
+
+    	public CalendarPanel( Locale locale ) {
+        	set(locale, locale, new Date());
+    	}
+
+    	public void setCalendarLocale(Locale locale) {
+        	set(locale, fDisplayLocale, fCalendar.getTime());
+    	}
+
+    	public void setDisplayLocale(Locale locale) {
+        	set(fCalendarLocale, locale, fCalendar.getTime());
+    	}
+
+    	public void set(Date date) {
+        	set(fCalendarLocale, fDisplayLocale, date);
+    	}
+
+    	public void set(Locale loc, Locale display, Date date)
+    	{
+        	if (fCalendarLocale == null || !loc.equals(fCalendarLocale)) {
+            	fCalendarLocale = loc;
+            	fCalendar = Calendar.getInstance(fCalendarLocale);
+            	fAllHolidays = Holiday.getHolidays(fCalendarLocale);
+        	}
+        	if (fDisplayLocale == null || !display.equals(fDisplayLocale)) {
+            	fDisplayLocale = display;
+            	fSymbols = new DateFormatSymbols(fDisplayLocale);
+        	}
+
+        	fStartOfMonth = date;
+
+        	dirty = true;
+        	repaint();
+    	}
+
+    	public void add(int field, int delta)
+    	{
+        	synchronized(fCalendar) {
+            	fCalendar.setTime(fStartOfMonth);
+            	fCalendar.add(field, delta);
+            	fStartOfMonth = fCalendar.getTime();
+        	}
+        	dirty = true;
+        	repaint();
+    	}
+
+    	public Calendar getCalendar() {
+        	return fCalendar;
+    	}
+
+    	public Locale getCalendarLocale() {
+        	return fCalendarLocale;
+    	}
+
+    	public Locale getDisplayLocale() {
+        	return fDisplayLocale;
+    	}
+
+
+    	public Date firstOfMonth() {
+        	return fStartOfMonth;
+    	}
+
+    	private Date startOfMonth(Date dateInMonth)
+    	{
+        	synchronized(fCalendar) {
+            	fCalendar.setTime(dateInMonth);             // TODO: synchronization
+
+            	int era = fCalendar.get(Calendar.ERA);
+            	int year = fCalendar.get(Calendar.YEAR);
+            	int month = fCalendar.get(Calendar.MONTH);
+
+            	fCalendar.clear();
+            	fCalendar.set(Calendar.ERA, era);
+            	fCalendar.set(Calendar.YEAR, year);
+            	fCalendar.set(Calendar.MONTH, month);
+            	fCalendar.set(Calendar.DATE, 1);
+
+            	return fCalendar.getTime();
+        	}
+    	}
+
+    	private void calculate()
+    	{
+        	//
+        	// As a workaround for JDK 1.1.3 and below, where Calendars and time
+        	// zones are a bit goofy, always set my calendar's time zone to UTC.
+        	// You would think I would want to do this in the "set" function above,
+        	// but if I do that, the program hangs when this class is loaded,
+        	// perhaps due to some sort of static initialization ordering problem.
+        	// So I do it here instead.
+        	//
+        	fCalendar.setTimeZone(new SimpleTimeZone(0, "UTC"));
+
+        	Calendar c = (Calendar)fCalendar.clone(); // Temporary copy
+
+        	fStartOfMonth = startOfMonth(fStartOfMonth);
+
+        	// Stash away a few useful constants for this calendar and display
+        	minDay = c.getMinimum(Calendar.DAY_OF_WEEK);
+        	daysInWeek = c.getMaximum(Calendar.DAY_OF_WEEK) - minDay + 1;
+
+        	firstDayOfWeek = Calendar.getInstance(fDisplayLocale).getFirstDayOfWeek();
+
+        	// Stash away a Date for the start of this month
+
+        	// Find the day of week of the first day in this month
+        	c.setTime(fStartOfMonth);
+        	firstDayInMonth = c.get(Calendar.DAY_OF_WEEK);
+
+        	// Now find the # of days in the month
+        	c.roll(Calendar.DATE, false);
+        	daysInMonth = c.get(Calendar.DATE);
+
+        	// Finally, find the end of the month, i.e. the start of the next one
+        	c.roll(Calendar.DATE, true);
+        	c.add(Calendar.MONTH, 1);
+        	c.getTime();        // JDK 1.1.2 bug workaround
+        	c.add(Calendar.SECOND, -1);
+        	Date endOfMonth = c.getTime();
+
+        	//
+        	// Calculate the number of full or partial weeks in this month.
+        	// To do this I can just reuse the code that calculates which
+        	// calendar cell contains a given date.
+        	//
+        	numWeeks = dateToCell(daysInMonth).y - dateToCell(1).y + 1;
+
+        	// Remember which holidays fall on which days in this month,
+        	// to save the trouble of having to do it later
+        	fHolidays.setSize(0);
+
+        	for (int h = 0; h < fAllHolidays.length; h++)
+        	{
+            	Date d = fStartOfMonth;
+            	while ( (d = fAllHolidays[h].firstBetween(d, endOfMonth) ) != null)
+            	{
+                	c.setTime(d);
+                	fHolidays.addElement( new HolidayInfo(c.get(Calendar.DATE),
+                                        	fAllHolidays[h],
+                                        	fAllHolidays[h].getDisplayName(fDisplayLocale) ));
+
+                	d.setTime( d.getTime() + 1000 );    // "d++"
+            	}
+        	}
+        	dirty = false;
+    	}
+
+    	static final int INSET = 2;
+
+    	/*
+    	* Convert from the day number within a month (1-based)
+    	* to the cell coordinates on the calendar (0-based)
+    	*/
+    	private void dateToCell(int date, Point pos)
+    	{
+        	int cell = (date + firstDayInMonth - firstDayOfWeek - minDay);
+        	if (firstDayInMonth < firstDayOfWeek) {
+            	cell += daysInWeek;
+        	}
+
+        	pos.x = cell % daysInWeek;
+        	pos.y = cell / daysInWeek;
+    	}
+    	private Point dateToCell(int date) {
+        	Point p = new Point(0,0);
+        	dateToCell(date, p);
+        	return p;
+    	}
+
+    	public void paint(Graphics g) {
+
+        	if (dirty) {
+            	calculate();
+        	}
+
+        	Point cellPos = new Point(0,0);     // Temporary variable
+        	Dimension d = this.size();
+
+        	g.setColor(DemoUtility.bgColor);
+        	g.fillRect(0,0,d.width,d.height);
+
+        	// Draw the day names at the top
+        	g.setColor(Color.black);
+        	g.setFont(DemoUtility.labelFont);
+        	FontMetrics fm = g.getFontMetrics();
+        	int labelHeight = fm.getHeight() + INSET * 2;
+
+        	int v = fm.getAscent() + INSET;
+        	for (int i = 0; i < daysInWeek; i++) {
+            	int dayNum = (i + minDay + firstDayOfWeek - 2) % daysInWeek + 1;
+            	String dayName = fSymbols.getWeekdays()[dayNum];
+
+            	int h = (int) (d.width * (i + 0.5)) / daysInWeek;
+            	h -= fm.stringWidth(dayName) / 2;
+
+            	g.drawString(dayName, h, v);
+        	}
+
+        	double cellHeight = (d.height - labelHeight - 1) / numWeeks;
+        	double cellWidth = (double)(d.width - 1) / daysInWeek;
+
+        	// Draw a white background in the part of the calendar
+        	// that displays this month.
+        	// First figure out how much of the first week should be shaded.
+        	{
+            	g.setColor(Color.white);
+            	dateToCell(1, cellPos);
+            	int width = (int)(cellPos.x*cellWidth);  // Width of unshaded area
+
+            	g.fillRect((int)(width), labelHeight ,
+                    	(int)(d.width - width), (int)cellHeight);
+
+            	// All of the intermediate weeks get shaded completely
+            	g.fillRect(0, (int)(labelHeight + cellHeight),
+                        	d.width, (int)(cellHeight * (numWeeks - 2)));
+
+            	// Now figure out the last week.
+            	dateToCell(daysInMonth, cellPos);
+            	width = (int)((cellPos.x+1)*cellWidth);  // Width of shaded area
+
+            	g.fillRect(0, (int)(labelHeight + (numWeeks-1) * cellHeight),
+                        	width, (int)(cellHeight));
+
+        	}
+        	// Draw the X/Y grid lines
+        	g.setColor(Color.black);
+        	for (int i = 0; i <= numWeeks; i++) {
+            	int y = (int)(labelHeight + i * cellHeight);
+            	g.drawLine(0, y, d.width - 1, y);
+        	}
+        	for (int i = 0; i <= daysInWeek; i++) {
+            	int x = (int)(i * cellWidth);
+            	g.drawLine(x, labelHeight, x, d.height - 1);
+        	}
+
+        	// Now loop through all of the days in the month, figure out where
+        	// they go in the grid, and draw the day # for each one
+        	Font numberFont = new Font("Helvetica",Font.PLAIN,12);
+        	Font holidayFont = DemoUtility.creditFont;
+
+        	Calendar c = (Calendar)fCalendar.clone();
+        	c.setTime(fStartOfMonth);
+
+        	for (int i = 1, h = 0; i <= daysInMonth; i++) {
+            	g.setFont(numberFont);
+            	g.setColor(Color.black);
+            	fm = g.getFontMetrics();
+
+            	dateToCell(i, cellPos);
+            	int x = (int)((cellPos.x + 1) * cellWidth);
+            	int y = (int)(cellPos.y * cellHeight + labelHeight);
+
+            	StringBuffer buffer = new StringBuffer();
+            	buffer.append(i);
+            	String dayNum = buffer.toString();
+
+            	x = x - INSET - fm.stringWidth(dayNum);
+            	y = y + fm.getAscent() + INSET;
+
+            	g.drawString(dayNum, x, y);
+
+            	// See if any of the holidays land on this day....
+            	HolidayInfo info = null;
+            	int count = 0;
+
+            	// Coordinates of lower-left corner of cell.
+            	x = (int)((cellPos.x) * cellWidth);
+            	y = (int)((cellPos.y+1) * cellHeight) + labelHeight;
+
+            	while (h < fHolidays.size() &&
+                    	(info = (HolidayInfo)fHolidays.elementAt(h)).date <= i)
+            	{
+                	if (info.date == i) {
+                    	// Draw the holiday here.
+                    	g.setFont(numberFont);
+                    	g.setColor(Color.red);
+
+                    	DemoTextBox box = new DemoTextBox(g, info.name, (int)(cellWidth - INSET));
+                    	box.draw(g, x + INSET, y - INSET - box.getHeight());
+
+                    	y -= (box.getHeight() + INSET);
+                    	count++;
+                	}
+                	h++;
+            	}
+        	}
+    	}
+
+    	// Important state variables
+    	private Locale              fCalendarLocale;    // Whose calendar
+    	private Calendar            fCalendar;          // Calendar for calculations
+
+    	private Locale              fDisplayLocale;     // How to display it
+    	private DateFormatSymbols   fSymbols;           // Symbols for drawing
+
+    	private Date                fStartOfMonth;      // 00:00:00 on first day of month
+
+    	// Cached calculations to make drawing faster.
+    	private transient int minDay;           // Minimum legal day #
+    	private transient int daysInWeek;       // # of days in a week
+    	private transient int firstDayOfWeek;   // First day to display in week
+    	private transient int numWeeks;         // # full or partial weeks in month
+    	private transient int daysInMonth;      // # days in this month
+    	private transient int firstDayInMonth;  // Day of week of first day in month
+
+    	private transient Holiday[] fAllHolidays;
+    	private transient Vector    fHolidays = new Vector(5,5);
+
+    	private transient boolean dirty = true;
+	}
+
+	private static class HolidayInfo {
+    	public HolidayInfo(int date, Holiday holiday, String name) {
+        	this.date = date;
+        	this.holiday = holiday;
+        	this.name = name;
+    	}
+
+    	public Holiday holiday;
+    	public int date;
+    	public String name;
+	}
+}
+
diff --git a/src/com/ibm/demo/rbbi/BreakIteratorRules_en_US_DEMO.java b/src/com/ibm/demo/rbbi/BreakIteratorRules_en_US_DEMO.java
new file mode 100755
index 0000000..db933bc
--- /dev/null
+++ b/src/com/ibm/demo/rbbi/BreakIteratorRules_en_US_DEMO.java
@@ -0,0 +1,105 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/rbbi/Attic/BreakIteratorRules_en_US_DEMO.java,v $ 
+ * $Date: 2000/03/10 03:47:43 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * This resource bundle is included for testing and demonstration purposes only.
+ * It applies the dictionary-based algorithm to English text that has had all the
+ * spaces removed.  Once we have good test cases for Thai, we will replace this
+ * with good resource data (and a good dictionary file) for Thai
+ */
+public class BreakIteratorRules_en_US_DEMO extends ListResourceBundle {
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    static final Object[][] contents = {
+        // names of classes to instantiate for the different kinds of break
+        // iterator.  Notice we're now using DictionaryBasedBreakIterator
+        // for word and line breaking.
+        { "BreakIteratorClasses",
+            new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                           "DictionaryBasedBreakIterator",     // word-break iterator class
+                           "DictionaryBasedBreakIterator",     // line-break iterator class
+                           "RuleBasedBreakIterator" }          // sentence-break iterator class
+        },
+        
+        // These are the same word-breaking rules as are specified in the default
+        // resource, except that the Latin letters, apostrophe, and hyphen are
+        // specified as dictionary characters
+        { "WordBreakRules",
+            "<ignore>=[:Mn::Me::Cf:];"
+            + "<dictionary>=[a-zA-z\\'\\-];"
+            + "<kanji>=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+            + "<kata>=[\u30a1-\u30fa];"
+            + "<hira>=[\u3041-\u3094];"
+            + "<cjk-diacrit>=[\u3099-\u309c];"
+            + "<let>=[:L:^[<kanji><kata><hira><cjk-diacrit><dictionary>]];"
+            + "<dgt>=[:N:];"
+            + "<mid-word>=[:Pd:\u00ad\u2027\\\"\\\'\\.];"
+            + "<mid-num>=[\\\"\\\'\\,\u066b\\.];"
+            + "<pre-num>=[:Sc:\\#\\.^\u00a2];"
+            + "<post-num>=[\\%\\&\u00a2\u066a\u2030\u2031];"
+            + "<ls>=[\n\u000c\u2028\u2029];"
+            + "<ws>=[:Zs:\t];"
+            + "<word>=(<let><let>*(<mid-word><let><let>*)*|[a-zA-Z][a-z\\'\\-]*);"
+            + "<number>=(<dgt><dgt>*(<mid-num><dgt><dgt>*)*);"
+            + ".;"
+            + "{<word>}(<number><word>)*{<number>{<post-num>}};"
+            + "<pre-num>(<number><word>)*{<number>{<post-num>}};"
+            + "<ws>*{\r}{<ls>};"
+            + "[<kata><cjk-diacrit>]*;"
+            + "[<hira><cjk-diacrit>]*;"
+            + "<kanji>*;" },
+        
+        // These are the same line-breaking rules as are specified in the default
+        // resource, except that the Latin letters, apostrophe, and hyphen are
+        // specified as dictionary characters
+        { "LineBreakRules",
+            "<ignore>=[:Mn::Me::Cf:];"
+            + "<dictionary>=[a-zA-z\\'\\-];"
+            + "<break>=[\u0003\t\n\f\u2028\u2029];"
+            + "<nbsp>=[\u00a0\u2007\u2011\ufeff];"
+            + "<space>=[:Zs::Cc:^[<nbsp><break>\r]];"
+            + "<dash>=[:Pd:\u00ad^<nbsp>];"
+            + "<pre-word>=[:Sc::Ps:^\u00a2];"
+            + "<post-word>=[:Pe:\\!\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034\u2103"
+                    + "\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0e"
+                    + "\uff1f];"
+            + "<kanji>=[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa^[<post-word><ignore>]];"
+            + "<digit>=[:Nd::No:];"
+            + "<mid-num>=[\\.\\,];"
+            + "<char>=[^[<break><space><dash><kanji><nbsp><ignore><dictionary>\r]];"
+            + "<number>=([<pre-word><dash>]*<digit><digit>*(<mid-num><digit><digit>*)*);"
+            + "<word-core>=(<char>*|<kanji>|<number>|[a-zA-Z][a-z\\'\\-]*);"
+            + "<word-suffix>=((<dash><dash>*|<post-word>*)<space>*);"
+            + "<word>=(<pre-word>*<word-core><word-suffix>);"
+            + "<word>(<nbsp><nbsp>*<word>)*{\r}{<break>};" },
+            
+        // these two resources specify the pathnames of the dictionary files to
+        // use for word breaking and line breaking.  Both currently refer to 
+        // a file called english.dict placed in com\ibm\text\resources
+        // somewhere in the class path.  It's important to note that
+        // english.dict was created for testing purposes only, and doesn't
+        // come anywhere close to being an exhaustive dictionary of English
+        // words (basically, it contains all the words in the Declaration of
+        // Independence, and the Revised Standard Version of the book of Genesis,
+        // plus a few other words thrown in to show more interesting cases).
+        { "WordBreakDictionary", "com\\ibm\\text\\resources\\english.dict" },
+        { "LineBreakDictionary", "com\\ibm\\text\\resources\\english.dict" }
+    };
+}
diff --git a/src/com/ibm/demo/rbbi/DBBIDemo.java b/src/com/ibm/demo/rbbi/DBBIDemo.java
new file mode 100755
index 0000000..83af71a
--- /dev/null
+++ b/src/com/ibm/demo/rbbi/DBBIDemo.java
@@ -0,0 +1,458 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/rbbi/Attic/DBBIDemo.java,v $ 
+ * $Date: 2000/03/10 03:47:43 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo.rbbi;
+
+import com.ibm.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import javax.swing.JTextArea;
+import javax.swing.JScrollPane;
+import javax.swing.BorderFactory;
+import java.util.*;
+
+import com.ibm.text.BreakIterator;
+
+public class DBBIDemo extends DemoApplet
+{
+    public static void main(String argv[]) {
+        Locale.setDefault(new Locale("en", "US", "DEMO"));
+		new DBBIDemo().showDemo();
+    }
+
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new DBBIFrame(applet);
+    }
+}
+
+
+
+class DBBIFrame extends Frame
+{
+    private static final String creditString =
+        "v1.1a9, Demo";
+
+    private static final int FIELD_COLUMNS = 45;
+    private static final Font choiceFont = null;
+    private static final boolean DEBUG = false;
+    private DemoApplet applet;
+
+    final String right = "-->";
+    final String left = "<--";
+
+    private BreakIterator enum;
+
+JTextArea text;
+//    TextArea text;
+    Choice bound;
+
+    public DBBIFrame(DemoApplet applet)
+    {
+        this.applet = applet;
+        init();
+        start();
+    }
+
+
+
+    public void run()
+    {
+        /*
+        while (true) {
+            try {
+                checkChange();
+                Thread.sleep(250);
+            }
+            catch (InterruptedException e) {
+            }
+            catch (Exception e) {
+            }
+            catch (Throwable e) {
+            }
+        }
+        */
+    }
+
+    int s, e;
+    int ts, te;
+
+    public void checkChange()
+    {
+//        System.out.println("checkChange...");
+        if ((text.getSelectionStart() & 0x7FFF) != ts ||
+            (text.getSelectionEnd() & 0x7FFF) != te) {
+
+            int tempS = text.getSelectionStart() & 0x7FFF;
+            int tempE = text.getSelectionEnd() & 0x7FFF;
+
+//          System.out.println(">");
+//          select(0, 0);
+//          select(tempS, tempE);
+            //select(tempS - (ts - s), tempE - (te - e));
+//          System.out.println("<");
+
+
+//          if (s != ts || e != te) System.out.println("     s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//          if (tempS != ts || tempE != te) System.out.println(">s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+//          select(s - (ts - s), e - (te - e));
+//          if (tempS != ts || tempE != te) System.out.println("s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+
+//          System.out.println("lkdslksj");
+        }
+    }
+
+    public void select(int sIn, int eIn)
+    {
+        s = sIn;
+        e = eIn;
+        text.select(s, e);
+        ts = text.getSelectionStart() & 0x7FFF;
+        te = text.getSelectionEnd() & 0x7FFF;
+//        if (s != ts || e != te) {
+//            System.out.println(">s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//            System.out.println("   "+(ts-s)+","+(te-e));
+//        }
+    }
+
+    public int getSelectionStart()
+    {
+        checkChange();
+//      return s;
+        return text.getSelectionStart() & 0x7FFF;
+    }
+
+
+    public int getSelectionEnd()
+    {
+        checkChange();
+//      return e;
+        return text.getSelectionEnd() & 0x7FFF;
+    }
+
+    public final synchronized void selectRange(int s, int e)
+    {
+        try {
+            //if (getSelectionStart() != s || getSelectionEnd() != e) {
+                //text.select(s, e);
+                select(s,e);
+            //}
+//          if (getSelectionStart() != s || getSelectionEnd() != e) {
+//              System.out.println("AGH! select("+s+","+e+") -> ("+
+//              getSelectionStart()+","+getSelectionEnd()+")");
+//              text.select(s - (getSelectionStart() - s), e - (getSelectionEnd() - e));
+//          }
+        } catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+
+
+    public void init()
+    {
+        buildGUI();
+    }
+
+
+    public void start()
+    {
+    }
+
+
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+
+
+   public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout());
+
+       Panel topPanel = new Panel();
+
+            Label titleLabel =
+                new Label("Text Boundary Demo", Label.CENTER);
+            titleLabel.setFont(DemoUtility.titleFont);
+            topPanel.add(titleLabel);
+
+            //Label demo=new Label(creditString, Label.CENTER);
+            //demo.setFont(DemoUtility.creditFont);
+            //topPanel.add(demo);
+
+            Panel choicePanel = new Panel();
+
+            Label demo1=new Label("Boundaries", Label.LEFT);
+            demo1.setFont(DemoUtility.labelFont);
+            choicePanel.add(demo1);
+
+            bound = new Choice();
+                bound.setBackground(DemoUtility.choiceColor);
+            bound.addItem("Sentence");
+            bound.addItem("Line Break");
+            bound.addItem("Word");
+            bound.addItem("Char");
+            if (choiceFont != null)
+                bound.setFont(choiceFont);
+
+            choicePanel.add(bound);
+            topPanel.add(choicePanel);
+
+            DemoUtility.fixGrid(topPanel,1);
+
+
+        add("North", topPanel);
+
+
+            int ROWS = 15;
+            int COLUMNS = 50;
+//            text = new TextArea(getInitialText(), ROWS, COLUMNS);
+text = new JTextArea(getInitialText(), ROWS, COLUMNS);
+text.setLineWrap(true);
+text.setWrapStyleWord(true);
+            text.setEditable(true);
+            text.selectAll();
+            text.setFont(DemoUtility.editFont);
+            text.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+
+        add("Center", new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
+
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,
+            new Label(DemoUtility.copyright1, Label.LEFT),DemoUtility.creditFont);
+        addWithFont (copyrightPanel,
+            new Label(DemoUtility.copyright2, Label.LEFT),DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add("South", copyrightPanel);
+
+        //layout();
+        handleEnumChanged();
+
+        // (new Thread(this)).start();
+    }
+
+
+
+    public String getInitialText()
+    {
+        return
+"When,inthecourseofhumanevents,itbecomesnecessaryforonepeopletodissolvethepoliticalbondswhichhave"
++ "connectedthemwithanother,andtoassumeamongthepowersoftheearth,theseparateandequalstationtowhichthelaws"
++ "ofnatureandofnature'sGodentitlethem,adecentrespecttotheopinionsofmankindrequiresthattheyshoulddeclarethe"
++ "causeswhichimpelthemtotheseparation.\n"
++ "Weholdthesetruthstobeself-evident,thatallmenarecreatedequal,thattheyareendowedbytheirCreatorwithcertain"
++ "unalienablerights,thatamongthesearelife,libertyandthepursuitofhappiness.Thattosecuretheserights,governmentsare"
++ "institutedamongmen,derivingtheirjustpowersfromtheconsentofthegoverned.Thatwheneveranyformofgovernment"
++ "becomesdestructivetotheseends,itistherightofthepeopletoalterortoabolishit,andtoinstitutenewgovernment,laying"
++ "itsfoundationonsuchprinciplesandorganizingitspowersinsuchform,astothemshallseemmostlikelytoeffecttheirsafety"
++ "andhappiness.Prudence,indeed,willdictatethatgovernmentslongestablishedshouldnotbechangedforlightandtransient"
++ "causes;andaccordinglyallexperiencehathshownthatmankindaremoredisposedtosuffer,whileevilsaresufferable,than"
++ "torightthemselvesbyabolishingtheformstowhichtheyareaccustomed.Butwhenalongtrainofabusesandusurpations,"
++ "pursuinginvariablythesameobjectevincesadesigntoreducethemunderabsolutedespotism,itistheirright,itistheirduty,"
++ "tothrowoffsuchgovernment,andtoprovidenewguardsfortheirfuturesecurity.--Suchhasbeenthepatientsufferanceof"
++ "thesecolonies;andsuchisnowthenecessitywhichconstrainsthemtoaltertheirformersystemsofgovernment.Thehistory"
++ "ofthepresentKingofGreatBritainisahistoryofrepeatedinjuriesandusurpations,allhavingindirectobjectthe"
++ "establishmentofanabsolutetyrannyoverthesestates.Toprovethis,letfactsbesubmittedtoacandidworld.\n"
++ "Hehasrefusedhisassenttolaws,themostwholesomeandnecessaryforthepublicgood.\n"
++ "Hehasforbiddenhisgovernorstopasslawsofimmediateandpressingimportance,unlesssuspendedintheiroperationtill"
++ "hisassentshouldbeobtained;andwhensosuspended,hehasutterlyneglectedtoattendtothem.\n"
++ "Hehasrefusedtopassotherlawsfortheaccommodationoflargedistrictsofpeople,unlessthosepeoplewouldrelinquish"
++ "therightofrepresentationinthelegislature,arightinestimabletothemandformidabletotyrantsonly.\n"
++ "Hehascalledtogetherlegislativebodiesatplacesunusual,uncomfortable,anddistantfromthedepositoryoftheirpublic"
++ "records,forthesolepurposeoffatiguingthemintocompliancewithhismeasures.\n"
++ "Hehasdissolvedrepresentativehousesrepeatedly,foropposingwithmanlyfirmnesshisinvasionsontherightsofthepeople.\n"
++ "Hehasrefusedforalongtime,aftersuchdissolutions,tocauseotherstobeelected;wherebythelegislativepowers,"
++ "incapableofannihilation,havereturnedtothepeopleatlargefortheirexercise;thestateremaininginthemeantimeexposed"
++ "toallthedangersofinvasionfromwithout,andconvulsionswithin.\n"
++ "Hehasendeavoredtopreventthepopulationofthesestates;forthatpurposeobstructingthelawsfornaturalizationof"
++ "foreigners;refusingtopassotherstoencouragetheirmigrationhither,andraisingtheconditionsofnewappropriationsof"
++ "lands.\n"
++ "Hehasobstructedtheadministrationofjustice,byrefusinghisassenttolawsforestablishingjudiciarypowers.\n"
++ "Hehasmadejudgesdependentonhiswillalone,forthetenureoftheiroffices,andtheamountandpaymentoftheirsalaries.\n"
++ "Hehaserectedamultitudeofnewoffices,andsenthitherswarmsofofficerstoharassourpeople,andeatouttheir"
++ "substance.\n"
++ "Hehaskeptamongus,intimesofpeace,standingarmieswithouttheconsentofourlegislature.\n"
++ "Hehasaffectedtorenderthemilitaryindependentofandsuperiortocivilpower.\n"
++ "Hehascombinedwithotherstosubjectustoajurisdictionforeigntoourconstitution,andunacknowledgedbyourlaws;"
++ "givinghisassenttotheiractsofpretendedlegislation:\n"
++ "Forquarteringlargebodiesofarmedtroopsamongus:\n"
++ "Forprotectingthem,bymocktrial,frompunishmentforanymurderswhichtheyshouldcommitontheinhabitantsofthese"
++ "states:\n"
++ "Forcuttingoffourtradewithallpartsoftheworld:\n"
++ "Forimposingtaxesonuswithoutourconsent:\n"
++ "Fordeprivingusinmanycases,ofthebenefitsoftrialbyjury:\n"
++ "Fortransportingusbeyondseastobetriedforpretendedoffenses:\n"
++ "ForabolishingthefreesystemofEnglishlawsinaneighboringprovince,establishingthereinanarbitrarygovernment,and"
++ "enlargingitsboundariessoastorenderitatonceanexampleandfitinstrumentforintroducingthesameabsoluteruleinthese"
++ "colonies:\n"
++ "Fortakingawayourcharters,abolishingourmostvaluablelaws,andalteringfundamentallytheformsofourgovernments:\n"
++ "Forsuspendingourownlegislatures,anddeclaringthemselvesinvestedwithpowertolegislateforusinallcaseswhatsoever.\n"
++ "Hehasabdicatedgovernmenthere,bydeclaringusoutofhisprotectionandwagingwaragainstus.\n"
++ "Hehasplunderedourseas,ravagedourcoasts,burnedourtowns,anddestroyedthelivesofourpeople.\n"
++ "Heisatthistimetransportinglargearmiesofforeignmercenariestocompletetheworksofdeath,desolationandtyranny,"
++ "alreadybegunwithcircumstancesofcrueltyandperfidyscarcelyparalleledinthemostbarbarousages,andtotalyunworth"
++ "theheadofacivilizednation.\n"
++ "Hehasconstrainedourfellowcitizenstakencaptiveonthehighseastobeararmsagainsttheircountry,tobecomethe"
++ "executionersoftheirfriendsandbrethren,ortofallthemselvesbytheirhands.\n"
++ "Hehasexciteddomesticinsurrectionsamongstus,andhasendeavoredtobringontheinhabitantsofourfrontiers,the"
++ "mercilessIndiansavages,whoseknownruleofwarfare,isundistinguisheddestructionofallages,sexesandconditions.\n"
++ "Ineverystageoftheseoppressionswehavepetitionedforredressinthemosthumbleterms:ourrepeatedpetitionshave"
++ "beenansweredonlybyrepeatedinjury.Aprince,whosecharacteristhusmarkedbyeveryactwhichmaydefineatyrant,is"
++ "unfittobetherulerofafreepeople.\n"
++ "NorhavewebeenwantinginattentiontoourBritishbrethren.Wehavewarnedthemfromtimetotimeofattemptsbytheir"
++ "legislaturetoextendanunwarrantablejurisdictionoverus.Wehaveremindedthemofthecircumstancesofouremigration"
++ "andsettlementhere.Wehaveappealedtotheirnativejusticeandmagnanimity,andwehaveconjuredthembythetiesofour"
++ "commonkindredtodisavowtheseusurpations,which,wouldinevitablyinterruptourconnectionsandcorrespondence.We"
++ "must,therefore,acquiesceinthenecessity,whichdenouncesourseparation,andholdthem,asweholdtherestofmankind,"
++ "enemiesinwar,inpeacefriends.\n"
++ "We,therefore,therepresentativesoftheUnitedStatesofAmerica,inGeneralCongress,assembled,appealingtothe"
++ "SupremeJudgeoftheworldfortherectitudeofourintentions,do,inthename,andbytheauthorityofthegoodpeopleof"
++ "thesecolonies,solemnlypublishanddeclare,thattheseunitedcoloniesare,andofrightoughttobefreeandindependent"
++ "states;thattheyareabsolvedfromallallegiancetotheBritishCrown,andthatallpoliticalconnectionbetweenthemandthe"
++ "stateofGreatBritain,isandoughttobetotallydissolved;andthatasfreeandindependentstates,theyhavefullpowerto"
++ "leveywar,concludepeace,contractalliances,establishcommerce,andtodoallotheractsandthingswhichindependent"
++ "statesmayofrightdo.Andforthesupportofthisdeclaration,withafirmrelianceontheprotectionofDivineProvidence,we"
++ "mutuallypledgetoeachotherourlives,ourfortunesandoursacredhonor.\n";
+    }
+
+
+    public void handleEnumChanged()
+    {
+        String s = bound.getSelectedItem();
+        if (s.equals("Char")) {
+            errorText("getCharacterInstance");
+            enum = BreakIterator.getCharacterInstance();
+        }
+        else if (s.equals("Word")) {
+            errorText("tWordBreak");
+            enum = BreakIterator.getWordInstance();
+        }
+        else if (s.equals("Line Break")) {
+            errorText("getLineInstance");
+            enum = BreakIterator.getLineInstance();
+        }
+        else /* if (s.equals("Sentence")) */ {
+            errorText("getSentenceInstance");
+            enum = BreakIterator.getSentenceInstance();
+        }
+        enum.setText(text.getText());
+        selectRange(0, 0);
+        //text.select(0,0);
+    }
+
+    public void handleForward()
+    {
+        try {
+//          System.out.println("entering handleForward");
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+
+//          System.out.println("handleForward: oldStart=" + oldStart + ", oldEnd=" + oldEnd);
+
+            if (oldEnd < 1) {
+                selectRange(0, enum.following(0));
+            }
+            else {
+                int s = enum.following(oldEnd-1);
+                int e = enum.next();
+                if (e == -1) {
+                    e = s;
+                }
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" +
+                s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public void handleBackward()
+    {
+        try {
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+            if (oldStart < 1) {
+                selectRange(0, 0);
+            }
+            else {
+                int e = enum.following(oldStart-1);
+                int s = enum.previous();
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" + s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public boolean action(Event evt, Object obj)
+    {
+
+        if(evt.target instanceof Button && left.equals(obj))
+        {
+            handleBackward();
+            return true;
+        }
+        else if(evt.target instanceof Button && right.equals(obj))
+        {
+            handleForward();
+            return true;
+        }
+        else if(evt.target instanceof Choice)
+        {
+            handleEnumChanged();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean handleEvent(Event evt)
+    {
+        if (evt.id == Event.KEY_PRESS || evt.id == Event.KEY_ACTION) {
+            if (evt.key == Event.RIGHT || (evt.key == 0x0E && evt.controlDown())) {
+                handleForward();
+                return true;
+            }
+            else if (evt.key == Event.LEFT || (evt.key == 0x10 && evt.controlDown())) {
+                handleBackward();
+                return true;
+            }
+        }
+        else
+        if (evt.id == Event.WINDOW_DESTROY && evt.target == this) {
+            this.hide();
+            this.dispose();
+                if (applet != null) {
+                  applet.demoClosed();
+               } else System.exit(0);
+            return true;
+        }
+        return super.handleEvent(evt);
+    }
+
+    public void errorText(String s)
+    {
+       if (DEBUG)
+           System.out.println(s);
+    }
+}
diff --git a/src/com/ibm/demo/rbbi/TextBoundDemo.java b/src/com/ibm/demo/rbbi/TextBoundDemo.java
new file mode 100755
index 0000000..1609019
--- /dev/null
+++ b/src/com/ibm/demo/rbbi/TextBoundDemo.java
@@ -0,0 +1,424 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/rbbi/Attic/TextBoundDemo.java,v $ 
+ * $Date: 2000/03/10 03:47:43 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo.rbbi;
+
+import com.ibm.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import javax.swing.JTextArea;
+import javax.swing.JScrollPane;
+import javax.swing.BorderFactory;
+import java.util.*;
+
+import com.ibm.text.BreakIterator;
+
+public class TextBoundDemo extends DemoApplet
+{
+    public static void main(String argv[]) {
+        new TextBoundDemo().showDemo();
+    }
+
+    public Frame createDemoFrame(DemoApplet applet) {
+        return new TextBoundFrame(applet);
+    }
+}
+
+
+
+class TextBoundFrame extends Frame
+{
+    private static final String creditString =
+        "v1.1a9, Demo";
+
+    private static final int FIELD_COLUMNS = 45;
+    private static final Font choiceFont = null;
+    private static final boolean DEBUG = false;
+    private DemoApplet applet;
+
+    final String right = "-->";
+    final String left = "<--";
+
+    private BreakIterator enum;
+
+JTextArea text;
+//    TextArea text;
+    Choice bound;
+
+    public TextBoundFrame(DemoApplet applet)
+    {
+        this.applet = applet;
+        init();
+        start();
+    }
+
+
+
+    public void run()
+    {
+        /*
+        while (true) {
+            try {
+                checkChange();
+                Thread.sleep(250);
+            }
+            catch (InterruptedException e) {
+            }
+            catch (Exception e) {
+            }
+            catch (Throwable e) {
+            }
+        }
+        */
+    }
+
+    int s, e;
+    int ts, te;
+
+    public void checkChange()
+    {
+//        System.out.println("checkChange...");
+        if ((text.getSelectionStart() & 0x7FFF) != ts ||
+            (text.getSelectionEnd() & 0x7FFF) != te) {
+
+            int tempS = text.getSelectionStart() & 0x7FFF;
+            int tempE = text.getSelectionEnd() & 0x7FFF;
+
+//          System.out.println(">");
+//          select(0, 0);
+//          select(tempS, tempE);
+            //select(tempS - (ts - s), tempE - (te - e));
+//          System.out.println("<");
+
+
+//          if (s != ts || e != te) System.out.println("     s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//          if (tempS != ts || tempE != te) System.out.println(">s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+//          select(s - (ts - s), e - (te - e));
+//          if (tempS != ts || tempE != te) System.out.println("s("+s+") tempS("+tempS+") e("+e+") tempE("+tempE+")");
+
+//          System.out.println("lkdslksj");
+        }
+    }
+
+    public void select(int sIn, int eIn)
+    {
+        s = sIn;
+        e = eIn;
+        text.select(s, e);
+        ts = text.getSelectionStart() & 0x7FFF;
+        te = text.getSelectionEnd() & 0x7FFF;
+//        if (s != ts || e != te) {
+//            System.out.println(">s("+s+") ts("+ts+") e("+e+") te("+te+")");
+//            System.out.println("   "+(ts-s)+","+(te-e));
+//        }
+    }
+
+    public int getSelectionStart()
+    {
+        checkChange();
+//      return s;
+        return text.getSelectionStart() & 0x7FFF;
+    }
+
+
+    public int getSelectionEnd()
+    {
+        checkChange();
+//      return e;
+        return text.getSelectionEnd() & 0x7FFF;
+    }
+
+    public final synchronized void selectRange(int s, int e)
+    {
+        try {
+            //if (getSelectionStart() != s || getSelectionEnd() != e) {
+                //text.select(s, e);
+                select(s,e);
+            //}
+//          if (getSelectionStart() != s || getSelectionEnd() != e) {
+//              System.out.println("AGH! select("+s+","+e+") -> ("+
+//              getSelectionStart()+","+getSelectionEnd()+")");
+//              text.select(s - (getSelectionStart() - s), e - (getSelectionEnd() - e));
+//          }
+        } catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+
+
+    public void init()
+    {
+        buildGUI();
+    }
+
+
+    public void start()
+    {
+    }
+
+
+    void addWithFont(Container container, Component foo, Font font) {
+        if (font != null)
+            foo.setFont(font);
+        container.add(foo);
+    }
+
+
+
+   public void buildGUI()
+    {
+        setBackground(DemoUtility.bgColor);
+        setLayout(new BorderLayout());
+
+       Panel topPanel = new Panel();
+
+            Label titleLabel =
+                new Label("Text Boundary Demo", Label.CENTER);
+            titleLabel.setFont(DemoUtility.titleFont);
+            topPanel.add(titleLabel);
+
+            //Label demo=new Label(creditString, Label.CENTER);
+            //demo.setFont(DemoUtility.creditFont);
+            //topPanel.add(demo);
+
+            Panel choicePanel = new Panel();
+
+            Label demo1=new Label("Boundaries", Label.LEFT);
+            demo1.setFont(DemoUtility.labelFont);
+            choicePanel.add(demo1);
+
+            bound = new Choice();
+                bound.setBackground(DemoUtility.choiceColor);
+            bound.addItem("Sentence");
+            bound.addItem("Line Break");
+            bound.addItem("Word");
+            bound.addItem("Char");
+            if (choiceFont != null)
+                bound.setFont(choiceFont);
+
+            choicePanel.add(bound);
+            topPanel.add(choicePanel);
+
+            DemoUtility.fixGrid(topPanel,1);
+
+
+        add("North", topPanel);
+
+
+            int ROWS = 15;
+            int COLUMNS = 50;
+//            text = new TextArea(getInitialText(), ROWS, COLUMNS);
+text = new JTextArea(getInitialText(), ROWS, COLUMNS);
+text.setLineWrap(true);
+text.setWrapStyleWord(true);
+            text.setEditable(true);
+            text.selectAll();
+            text.setFont(DemoUtility.editFont);
+            text.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
+
+        add("Center", new JScrollPane(text, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+                        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));
+
+        Panel copyrightPanel = new Panel();
+        addWithFont (copyrightPanel,
+            new Label(DemoUtility.copyright1, Label.LEFT),DemoUtility.creditFont);
+        addWithFont (copyrightPanel,
+            new Label(DemoUtility.copyright2, Label.LEFT),DemoUtility.creditFont);
+        DemoUtility.fixGrid(copyrightPanel,1);
+        add("South", copyrightPanel);
+
+        //layout();
+        handleEnumChanged();
+
+        // (new Thread(this)).start();
+    }
+
+
+
+    public String getInitialText()
+    {
+        return
+    /*
+            "\"This is a sentence.\" This is not.\" \"because. And go. " +
+            "This is a simple 012.566,5 sample sentence. \n"+
+            "It does not have to make any sense as you can see. \n"+
+            "Nel mezzo del cammin di nostra vita, mi ritrovai in "+
+                "una selva oscura. \n"+
+            "Che la dritta via aveo smarrita. \n"+
+            "He said, that I said, that you said!! \n"+
+            "Don't rock the boat.\n\n"+
+            "Because I am the daddy, that is why. \n"+
+            "Not on my time (el timo.)! \n"+
+            "Tab\tTab\rTab\tWow."+
+            "So what!!\n\n"+
+            "Is this a question???  " +
+            "I wonder...Hmm.\n" +
+            "Harris thumbed down several, including \"Away We Go\" "+
+                "(which became the huge success Oklahoma!). \n"+
+            "One species, B. anthracis, is highly virulent.\n"+
+            "Wolf said about Sounder: \"Beautifully thought-out and "+
+                "directed.\"\n"+
+            "Have you ever said, \"This is where I shall live\"? \n"+
+            "He 1000,233,456.000 answered, \"You may not!\" \n"+
+            "Another popular saying is: \"How do you do?\". \n"+
+            "What is the proper use of the abbreviation pp.? \n"+
+            "Yes, I am 1,23.322% definatelly 12\" tall!!";
+    */
+            "(\"This is a complete sentence.\") This is (\"not.\") also.  "
+            +"An abbreviation in the middle, etc. and one at the end, etc. "+
+                "This "
+            +"is a simple sample 012.566,5 sentence. It doesn't "
+            +"have to make any sense, as you can see. Nel mezzo del  c"
+            +"ammin di nostra vita, mi ritrovai in una selva oscura. Che "
+            +"la dritta via aveo smarrita. Not on my time (el timo.)! And "
+            +"tabulated columns: \tCol1\tCol2\t3,456%.\t "
+            +"Is this a question???  I wonder... Hmm. Harris thumbed "
+            +"down several, including \"Away We Go\" (which became the  "
+            +"huge success Oklahoma!). One species, B. anthracis, is  "
+            +"highly virulent. Wolf said about Sounder: \"Beautifully  "
+            +"thought-out and directed.\" Have you ever said, \"This is "+
+                "where I "
+            +"shall live\"? He said 1000,233,456.000 and answered, \"You "+
+                "may not!\"  "
+            +"Another popular saying is: \"How do you do?\". What is the  "
+            +"proper use of the abbreviation pp.? Yes, I am 12\' 3\" tall!!";
+    }
+
+
+    public void handleEnumChanged()
+    {
+        String s = bound.getSelectedItem();
+        if (s.equals("Char")) {
+            errorText("getCharacterInstance");
+            enum = BreakIterator.getCharacterInstance();
+        }
+        else if (s.equals("Word")) {
+            errorText("tWordBreak");
+            enum = BreakIterator.getWordInstance();
+        }
+        else if (s.equals("Line Break")) {
+            errorText("getLineInstance");
+            enum = BreakIterator.getLineInstance();
+        }
+        else /* if (s.equals("Sentence")) */ {
+            errorText("getSentenceInstance");
+            enum = BreakIterator.getSentenceInstance();
+        }
+        enum.setText(text.getText());
+        selectRange(0, 0);
+        //text.select(0,0);
+    }
+
+    public void handleForward()
+    {
+        try {
+//          System.out.println("entering handleForward");
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+
+//          System.out.println("handleForward: oldStart=" + oldStart + ", oldEnd=" + oldEnd);
+
+            if (oldEnd < 1) {
+                selectRange(0, enum.following(0));
+            }
+            else {
+                int s = enum.following(oldEnd-1);
+                int e = enum.next();
+                if (e == -1) {
+                    e = s;
+                }
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" +
+                s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public void handleBackward()
+    {
+        try {
+            enum.setText(text.getText());
+            int oldStart = getSelectionStart();
+            int oldEnd = getSelectionEnd();
+            if (oldStart < 1) {
+                selectRange(0, 0);
+            }
+            else {
+                int e = enum.following(oldStart-1);
+                int s = enum.previous();
+                selectRange(s, e);
+            }
+            //text.select(s, e);
+            errorText("<" + oldStart + "," + oldEnd + "> -> <" + s + "," + e + ">");
+        }
+        catch (Exception exp) {
+            errorText(exp.toString());
+        }
+    }
+
+    public boolean action(Event evt, Object obj)
+    {
+
+        if(evt.target instanceof Button && left.equals(obj))
+        {
+            handleBackward();
+            return true;
+        }
+        else if(evt.target instanceof Button && right.equals(obj))
+        {
+            handleForward();
+            return true;
+        }
+        else if(evt.target instanceof Choice)
+        {
+            handleEnumChanged();
+            return true;
+        }
+        return false;
+    }
+
+    public boolean handleEvent(Event evt)
+    {
+        if (evt.id == Event.KEY_PRESS || evt.id == Event.KEY_ACTION) {
+            if (evt.key == Event.RIGHT || (evt.key == 0x0E && evt.controlDown())) {
+                handleForward();
+                return true;
+            }
+            else if (evt.key == Event.LEFT || (evt.key == 0x10 && evt.controlDown())) {
+                handleBackward();
+                return true;
+            }
+        }
+        else
+        if (evt.id == Event.WINDOW_DESTROY && evt.target == this) {
+            this.hide();
+            this.dispose();
+                if (applet != null) {
+                  applet.demoClosed();
+               } else System.exit(0);
+            return true;
+        }
+        return super.handleEvent(evt);
+    }
+
+    public void errorText(String s)
+    {
+       if (DEBUG)
+           System.out.println(s);
+    }
+}
diff --git a/src/com/ibm/demo/rbbi/english.dict b/src/com/ibm/demo/rbbi/english.dict
new file mode 100755
index 0000000..860dcbe
--- /dev/null
+++ b/src/com/ibm/demo/rbbi/english.dict
Binary files differ
diff --git a/src/com/ibm/demo/rbnf/RbnfDemo.java b/src/com/ibm/demo/rbnf/RbnfDemo.java
new file mode 100755
index 0000000..e78295a
--- /dev/null
+++ b/src/com/ibm/demo/rbnf/RbnfDemo.java
@@ -0,0 +1,533 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/rbnf/Attic/RbnfDemo.java,v $ 
+ * $Date: 2000/03/10 03:47:43 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo.rbnf;
+
+import com.ibm.demo.*;
+import java.applet.Applet;
+import java.awt.*;
+import java.awt.event.*;
+import java.text.DecimalFormat;
+import java.text.BreakIterator;
+import java.text.ParsePosition;
+import java.util.Locale;
+
+import com.ibm.text.RuleBasedNumberFormat;
+
+public class RbnfDemo extends DemoApplet {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /*
+     * code to run the demo as an application
+     */
+    public static void main(String[] argv) {
+    	new RbnfDemo().showDemo();
+    }
+
+    protected Dimension getDefaultFrameSize(DemoApplet applet, Frame f) {
+    	return new Dimension(430,270);
+    }
+
+    protected Frame createDemoFrame(DemoApplet applet) {
+        final Frame window = new Frame("Number Spellout Demo");
+        window.setSize(800, 600);
+        window.setLayout(new BorderLayout());
+
+        Panel mainPanel = new Panel();
+        mainPanel.setLayout(new GridLayout(1,2));
+
+        commentaryField = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        commentaryField.setSize(800, 50);
+        commentaryField.setText(RbnfSampleRuleSets.sampleRuleSetCommentary[0]);
+        commentaryField.setEditable(false);
+        commentaryField.setFont(new Font("Helvetica", Font.PLAIN, 14));
+
+        spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.usEnglish, Locale.US);
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+        numberFormatter = new DecimalFormat("#,##0.##########");
+        parsePosition = new ParsePosition(0);
+        theNumber = 0;
+
+        numberField = new TextField();
+        numberField.setFont(new Font("Serif", Font.PLAIN, 24));
+        textField = new DemoTextFieldHolder();
+        textField.setFont(new Font("Serif", Font.PLAIN, 24));
+        rulesField = new DemoTextFieldHolder();
+        rulesField.setFont(new Font("Serif", Font.PLAIN, 14));
+        lenientParseButton = new Checkbox("Lenient parse", lenientParse);
+
+        numberField.addTextListener(new TextListener() {
+            public void textValueChanged(TextEvent e) {
+                if (!numberFieldHasFocus)
+                    return;
+
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                Number temp = numberFormatter.parse(fieldText, parsePosition);
+                if (temp == null || parsePosition.getIndex() == 0) {
+                    theNumber = 0;
+                    textField.setText("PARSE ERROR");
+                }
+                else {
+                    theNumber = temp.doubleValue();
+                    textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+                }
+            }
+        } );
+
+        numberField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                numberFieldHasFocus = false;
+                numberField.setText(numberFormatter.format(theNumber));
+            }
+
+            public void focusGained(FocusEvent e) {
+                numberFieldHasFocus = true;
+                numberField.selectAll();
+            }
+        } );
+
+        textField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    parsePosition.setIndex(0);
+                    theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                        .doubleValue();
+                    if (parsePosition.getIndex() == 0) {
+                        theNumber = 0;
+                        numberField.setText("PARSE ERROR");
+                        textField.selectAll();
+                    }
+                    else if (parsePosition.getIndex() < fieldText.length()) {
+                        textField.select(parsePosition.getIndex(), fieldText.length());
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    else {
+                        textField.selectAll();
+                        numberField.setText(numberFormatter.format(theNumber));
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        textField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                parsePosition.setIndex(0);
+                theNumber = spelloutFormatter.parse(fieldText, parsePosition)
+                                .doubleValue();
+                if (parsePosition.getIndex() == 0)
+                    numberField.setText("PARSE ERROR");
+                else
+                    numberField.setText(numberFormatter.format(theNumber));
+                textField.setText(textField.getText()); // textField.repaint() didn't work right
+            }
+
+            public void focusGained(FocusEvent e) {
+                textField.selectAll();
+            }
+        } );
+
+        rulesField.addKeyListener(new KeyAdapter() {
+            public void keyTyped(KeyEvent e) {
+                if (e.getKeyChar() == '\t') {
+                    String fieldText = ((TextComponent)(e.getSource())).getText();
+                    if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                    RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                        try {
+                            RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                            temp.setLenientParseMode(lenientParse);
+                            populateRuleSetMenu();
+                            spelloutFormatter = temp;
+                            customRuleSet = fieldText;
+                            formatterMenu.select("Custom");
+                            commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[RbnfSampleRuleSets.
+                                sampleRuleSetCommentary.length - 1]);
+                            redisplay();
+                        }
+                        catch (Exception x) {
+                            textField.setText(x.toString());
+                        }
+                    }
+                    e.consume();
+                }
+            }
+        } );
+
+        rulesField.addFocusListener(new FocusAdapter() {
+            public void focusLost(FocusEvent e) {
+                String fieldText = ((TextComponent)(e.getSource())).getText();
+                if (formatterMenu.getSelectedItem().equals("Custom") || !fieldText.equals(
+                                RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()])) {
+                    try {
+                        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(fieldText);
+                        temp.setLenientParseMode(lenientParse);
+                        populateRuleSetMenu();
+                        spelloutFormatter = temp;
+                        customRuleSet = fieldText;
+                        formatterMenu.select("Custom");
+                        redisplay();
+                    }
+                    catch (Exception x) {
+                        textField.setText(x.toString());
+                    }
+                }
+                rulesField.setText(rulesField.getText()); // rulesField.repaint() didn't work right
+            }
+        } );
+
+        lenientParseButton.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                lenientParse = lenientParseButton.getState();
+                spelloutFormatter.setLenientParseMode(lenientParse);
+            }
+        } );
+
+        numberField.setText(numberFormatter.format(theNumber));
+        numberField.selectAll();
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+
+        Panel leftPanel = new Panel();
+        leftPanel.setLayout(new BorderLayout());
+        Panel panel = new Panel();
+        panel.setLayout(new BorderLayout());
+        Panel panel1 = new Panel();
+        panel1.setLayout(new GridLayout(3, 1));
+        panel1.add(new Panel());
+        panel1.add(numberField, "Center");
+        panel1.add(lenientParseButton);
+        panel.add(panel1, "Center");
+        Panel panel2 = new Panel();
+        panel2.setLayout(new GridLayout(3, 3));
+        Button button = new Button("+100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("+1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(1);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("<");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber *= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        panel2.add(new Panel());
+        button = new Button(">");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                theNumber /= 10;
+                redisplay();
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-100");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-100);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-10");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-10);
+            }
+        } );
+        panel2.add(button);
+        button = new Button("-1");
+        button.addActionListener( new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                roll(-1);
+            }
+        } );
+        panel2.add(button);
+        panel.add(panel2, "East");
+        leftPanel.add(panel, "North");
+        leftPanel.add(textField, "Center");
+
+        Panel rightPanel = new Panel();
+        rightPanel.setLayout(new BorderLayout());
+        formatterMenu = new Choice();
+        for (int i = 0; i < RbnfSampleRuleSets.sampleRuleSetNames.length; i++)
+            formatterMenu.addItem(RbnfSampleRuleSets.sampleRuleSetNames[i]);
+        formatterMenu.addItem("Custom");
+        formatterMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                Choice source = (Choice)(e.getSource());
+                int item = source.getSelectedIndex();
+                Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+
+                commentaryField.setText(RbnfSampleRuleSets.
+                                sampleRuleSetCommentary[item]);
+
+                if (locale != null && (locale.getLanguage().equals("iw")
+                        || locale.getLanguage().equals("ru") || locale.getLanguage().equals("ja")
+                        || locale.getLanguage().equals("el")
+                        || locale.getLanguage().equals("zh"))) {
+                    textField.togglePanes(false);
+                    rulesField.togglePanes(false);
+                }
+                else {
+                    textField.togglePanes(true);
+                    rulesField.togglePanes(true);
+                }
+
+                makeNewSpelloutFormatter();
+                redisplay();
+            }
+        } );
+
+        ruleSetMenu = new Choice();
+        populateRuleSetMenu();
+
+        ruleSetMenu.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                ruleSetName = ruleSetMenu.getSelectedItem();
+                redisplay();
+            }
+        } );
+
+        Panel menuPanel = new Panel();
+        menuPanel.setLayout(new GridLayout(1, 2));
+        menuPanel.add(formatterMenu);
+        menuPanel.add(ruleSetMenu);
+        rightPanel.add(menuPanel, "North");
+
+        rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[formatterMenu.getSelectedIndex()]);
+        rightPanel.add(rulesField, "Center");
+
+        mainPanel.add(leftPanel);
+        mainPanel.add(rightPanel);
+
+        window.add(mainPanel, "Center");
+        window.add(commentaryField, "South");
+
+        window.doLayout();
+        window.show();
+        return window;
+    }
+
+    void roll(int delta) {
+        theNumber += delta;
+        redisplay();
+    }
+
+    void redisplay() {
+        numberField.setText(numberFormatter.format(theNumber));
+        textField.setText(spelloutFormatter.format(theNumber, ruleSetName));
+    }
+
+    void makeNewSpelloutFormatter() {
+        int item = formatterMenu.getSelectedIndex();
+        String formatterMenuItem = formatterMenu.getSelectedItem();
+
+        if (formatterMenuItem.equals("Custom")) {
+            rulesField.setText(customRuleSet);
+            spelloutFormatter = new RuleBasedNumberFormat(customRuleSet);
+        }
+        else {
+            rulesField.setText(RbnfSampleRuleSets.sampleRuleSets[item]);
+
+            Locale locale = RbnfSampleRuleSets.sampleRuleSetLocales[item];
+            if (locale == null)
+                locale = Locale.getDefault();
+
+            spelloutFormatter = new RuleBasedNumberFormat(RbnfSampleRuleSets.
+                            sampleRuleSets[item], locale);
+        }
+        spelloutFormatter.setLenientParseMode(lenientParse);
+        populateRuleSetMenu();
+    }
+
+    void populateRuleSetMenu() {
+        String[] ruleSetNames = spelloutFormatter.getRuleSetNames();
+
+        if (ruleSetMenu != null) {
+            ruleSetMenu.removeAll();
+            for (int i = 0; i < ruleSetNames.length; i++)
+                ruleSetMenu.addItem(ruleSetNames[i]);
+
+            ruleSetName = ruleSetMenu.getSelectedItem();
+        }
+        else
+            ruleSetName = ruleSetNames[0];
+    }
+
+    private Frame demoWindow = null;
+
+    private TextComponent numberField;
+    private DemoTextFieldHolder textField;
+    private DemoTextFieldHolder rulesField;
+    private TextComponent commentaryField;
+    private Checkbox lenientParseButton;
+
+    private boolean numberFieldHasFocus = true;
+
+    private RuleBasedNumberFormat spelloutFormatter;
+    private DecimalFormat numberFormatter;
+    private ParsePosition parsePosition;
+
+    private boolean lenientParse = true;
+
+    private double theNumber = 0;
+    private boolean canEdit = true;
+
+    private Choice formatterMenu;
+    private Choice ruleSetMenu;
+    private String ruleSetName;
+
+    private String customRuleSet = "NO RULES!";
+}
+
+class DemoTextField extends Component {
+    public DemoTextField() {
+    }
+
+    public void setText(String text) {
+        this.text = text;
+        this.repaint();
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void paint(Graphics g) {
+        Font font = getFont();
+        FontMetrics fm = g.getFontMetrics();
+        g.setFont(font);
+        String text = getText();
+        BreakIterator bi = BreakIterator.getLineInstance();
+        bi.setText(text);
+        int lineHeight = fm.getHeight();
+        int width = getSize().width;
+        int penY = fm.getAscent();
+        int lineStart = 0;
+        int tempLineEnd = bi.first();
+        int lineEnd = 0;
+        int maxLineEnd = 0;
+        totalHeight = 0;
+
+        while (lineStart < text.length()) {
+            maxLineEnd = text.indexOf('\n', lineStart);
+            if (maxLineEnd == -1)
+                maxLineEnd = Integer.MAX_VALUE;
+            while (tempLineEnd != BreakIterator.DONE && fm.stringWidth(text.substring(
+                            lineStart, tempLineEnd)) < width) {
+                lineEnd = tempLineEnd;
+                tempLineEnd = bi.next();
+            }
+            if (lineStart >= lineEnd) {
+                if (tempLineEnd == BreakIterator.DONE)
+                    lineEnd = text.length();
+                else
+                    lineEnd = tempLineEnd;
+            }
+            if (lineEnd > maxLineEnd)
+                lineEnd = maxLineEnd;
+            g.drawString(text.substring(lineStart, lineEnd), 0, penY);
+            penY += lineHeight;
+            totalHeight += lineHeight;
+            lineStart = lineEnd;
+            if (lineStart < text.length() && text.charAt(lineStart) == '\n')
+                ++lineStart;
+        }
+    }
+
+/*
+    public Dimension getPreferredSize() {
+        Dimension size = getParent().getSize();
+        return new Dimension(size.width, totalHeight);
+    }
+*/
+
+    private String text;
+    private int totalHeight;
+}
+
+class DemoTextFieldHolder extends Panel {
+    public DemoTextFieldHolder() {
+        tf1 = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
+        tf2 = new DemoTextField();
+        sp = new ScrollPane();
+
+        setLayout(new CardLayout());
+
+        sp.add(tf2, "TextField1");
+        sp.setVisible(false);
+        add(tf1, "TestField2");
+        add(sp, "ScrollPane");
+    }
+
+    public void addFocusListener(FocusListener l) {
+        tf1.addFocusListener(l);
+    }
+
+    public void addKeyListener(KeyListener l) {
+        tf1.addKeyListener(l);
+    }
+
+    public void setText(String text) {
+        tf1.setText(text);
+        tf2.setText(text);
+    }
+
+    public String getText() {
+        return tf1.getText();
+    }
+
+    public void select(int start, int end) {
+        tf1.select(start, end);
+    }
+
+    public void selectAll() {
+        tf1.selectAll();
+    }
+
+    public void togglePanes(boolean canShowRealTextField) {
+        if (canShowRealTextField != showingRealTextField) {
+            CardLayout layout = (CardLayout)(getLayout());
+            layout.next(this);
+            showingRealTextField = canShowRealTextField;
+        }
+    }
+
+    private TextArea tf1 = null;
+    private DemoTextField tf2 = null;
+    private ScrollPane sp = null;
+    private boolean showingRealTextField = true;
+}
diff --git a/src/com/ibm/demo/rbnf/RbnfSampleRuleSets.java b/src/com/ibm/demo/rbnf/RbnfSampleRuleSets.java
new file mode 100755
index 0000000..2294212
--- /dev/null
+++ b/src/com/ibm/demo/rbnf/RbnfSampleRuleSets.java
@@ -0,0 +1,1949 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/rbnf/Attic/RbnfSampleRuleSets.java,v $ 
+ * $Date: 2000/03/10 03:47:44 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo.rbnf;
+
+import com.ibm.demo.*;
+import java.util.Locale;
+
+/**
+ * A collection of example rule sets for use with RuleBasedNumberFormat.
+ * These examples are intended to serve both as demonstrations of what can
+ * be done with this framework, and as starting points for designing new
+ * rule sets.
+ *
+ * For those that claim to represent number-spellout rules for languages
+ * other than U.S. English, we make no claims of either accuracy or
+ * completeness.  In fact, we know them to be incomplete, and suspect
+ * most have mistakes in them.  If you see something that you know is wrong,
+ * please tell us!
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 03:47:44 $
+ */
+public class RbnfSampleRuleSets {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //========================================================================
+    // Spellout rules for various languages
+    //
+    // The following RuleBasedNumberFormat descriptions show the rules for
+    // spelling out numeric values in various languages.  As mentioned
+    // before, we cannot vouch for the accuracy or completeness of this
+    // data, although we believe it's pretty close.  Basically, this
+    // represents one day's worth of Web-surfing.  If you can supply the
+    // missing information in any of these rule sets, or if you find errors,
+    // or if you can supply spellout rules for languages that aren't shown
+    // here, we want to hear from you!
+    //========================================================================
+
+    /**
+     * Spellout rules for U.S. English.  This demonstration version of the
+     * U.S. English spellout rules has four variants: 1) %simplified is a
+     * set of rules showing the simple method of spelling out numbers in
+     * English: 289 is formatted as "two hundred eighty-nine".  2) %alt-teens
+     * is the same as %simplified, except that values between 1,000 and 9,999
+     * whose hundreds place isn't zero are formatted in hundreds.  For example,
+     * 1,983 is formatted as "nineteen hundred eighty-three," and 2,183 is
+     * formatted as "twenty-one hundred eighty-three," but 2,083 is still
+     * formatted as "two thousand eighty-three."  3) %ordinal formats the
+     * values as ordinal numbers in English (e.g., 289 is "two hundred eighty-
+     * ninth").  4) %default uses a more complicated algorithm to format
+     * numbers in a more natural way: 289 is formatted as "two hundred AND
+     * eighty-nine" and commas are inserted between the thousands groups for
+     * values above 100,000.
+     */
+    public static final String usEnglish =
+        // This rule set shows the normal simple formatting rules for English
+        "%simplified:\n"
+               // negative number rule.  This rule is used to format negative
+               // numbers.  The result of formatting the number's absolute
+               // value is placed where the >> is.
+        + "    -x: minus >>;\n"
+               // faction rule.  This rule is used for formatting numbers
+               // with fractional parts.  The result of formatting the
+               // number's integral part is substituted for the <<, and
+               // the result of formatting the number's fractional part
+               // (one digit at a time, e.g., 0.123 is "zero point one two
+               // three") replaces the >>.
+        + "    x.x: << point >>;\n"
+               // the rules for the values from 0 to 19 are simply the
+               // words for those numbers
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+               // beginning at 20, we use the >> to mark the position where
+               // the result of formatting the number's ones digit.  Thus,
+               // we only need a new rule at every multiple of 10.  Text in
+               // backets is omitted if the value being formatted is an
+               // even multiple of 10.
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+               // beginning at 100, we can use << to mark the position where
+               // the result of formatting the multiple of 100 is to be
+               // inserted.  Notice also that the meaning of >> has shifted:
+               // here, it refers to both the ones place and the tens place.
+               // The meanings of the << and >> tokens depend on the base value
+               // of the rule.  A rule's divisor is (usually) the highest
+               // power of 10 that is less than or equal to the rule's base
+               // value.  The value being formatted is divided by the rule's
+               // divisor, and the integral quotient is used to get the text
+               // for <<, while the remainder is used to produce the text
+               // for >>.  Again, text in brackets is omitted if the value
+               // being formatted is an even multiple of the rule's divisor
+               // (in this case, an even multiple of 100)
+        + "    100: << hundred[ >>];\n"
+               // The rules for the higher numbers work the same way as the
+               // rule for 100: Again, the << and >> tokens depend on the
+               // rule's divisor, which for all these rules is also the rule's
+               // base value.  To group by thousand, we simply don't have any
+               // rules between 1,000 and 1,000,000.
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+               // overflow rule.  This rule specifies that values of a
+               // quadrillion or more are shown in numerals rather than words.
+               // The == token means to format (with new rules) the value
+               // being formatted by this rule and place the result where
+               // the == is.  The #,##0 inside the == signs is a
+               // DecimalFormat pattern.  It specifies that the value should
+               // be formatted with a DecimalFormat object, and that it
+               // should be formatted with no decimal places, at least one
+               // digit, and a thousands separator.
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+
+        // This rule set formats numbers between 1,000 and 9,999 somewhat
+        // differently: If the hundreds digit is not zero, the first two
+        // digits are treated as a number of hundreds.  For example, 2,197
+        // would come out as "twenty-one hundred ninety-seven."
+        + "%alt-teens:\n"
+               // just use %simplified to format values below 1,000
+        + "    =%simplified=;\n"
+               // values between 1,000 and 9,999 are delegated to %%alt-hundreds
+               // for formatting.  The > after "1000" decreases the exponent
+               // of the rule's radix by one, causing the rule's divisor
+               // to be 100 instead of 1,000.  This causes the first TWO
+               // digits of the number, instead of just the first digit,
+               // to be sent to %%alt-hundreds
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+               // for values of 10,000 and more, we again just use %simplified
+        + "    10,000: =%simplified=;\n"
+        // This rule set uses some obscure voodoo of the description language
+        // to format the first two digits of a value in the thousands.
+        // The rule at 10 formats the first two digits as a multiple of 1,000
+        // and the rule at 11 formats the first two digits as a multiple of
+        // 100.  This works because of something known as the "rollback rule":
+        // if the rule applicable to the value being formatted has two
+        // substitutions, the value being formatted is an even multiple of
+        // the rule's divisor, and the rule's base value ISN'T an even multiple
+        // if the rule's divisor, then the rule that precedes this one in the
+        // list is used instead.  (The [] notation is implemented internally
+        // using this notation: a rule containing [] is split into two rules,
+        // and the right one is chosen using the rollback rule.) In this case,
+        // it means that if the first two digits are an even multiple of 10,
+        // they're formatted with the 10 rule (containing "thousand"), and if
+        // they're not, they're formatted with the 11 rule (containing
+        // "hundred").  %%empty is a hack to cause the rollback rule to be
+        // invoked: it makes the 11 rule have two substitutions, even though
+        // the second substitution (calling %%empty) doesn't actually do
+        // anything.
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+
+        // this rule set is the same as %simplified, except that it formats
+        // the value as an ordinal number: 234 is formatted as "two hundred
+        // thirty-fourth".  Notice the calls to ^simplified: we have to
+        // call %simplified to avoid getting "second hundred thirty-fourth."
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000: <%simplified< trillionth;\n"
+        + "        <%simplified< trillion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+
+        // %default is a more elaborate form of %simplified;  It is basically
+        // the same, except that it introduces "and" before the ones digit
+        // when appropriate (basically, between the tens and ones digits) and
+        // separates the thousands groups with commas in values over 100,000.
+        + "%default:\n"
+               // negative-number and fraction rules.  These are the same
+               // as those for %simplified, but ave to be stated here too
+               // because this is an entry point
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+               // just use %simplified for values below 100
+        + "    =%simplified=;\n"
+               // for values from 100 to 9,999 use %%and to decide whether or
+               // not to interpose the "and"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+               // for values of 100,000 and up, use %%commas to interpose the
+               // commas in the right places (and also to interpose the "and")
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000: << trillion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // if the value passed to this rule set is greater than 100, don't
+        // add the "and"; if it's less than 100, add "and" before the last
+        // digits
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        // this rule set is used to place the commas
+        + "%%commas:\n"
+               // for values below 100, add "and" (the apostrophe at the
+               // beginning is ignored, but causes the space that follows it
+               // to be significant: this is necessary because the rules
+               // calling %%commas don't put a space before it)
+        + "    ' and =%default=;\n"
+               // put a comma after the thousands (or whatever preceded the
+               // hundreds)
+        + "    100: , =%default=;\n"
+               // put a comma after the millions (or whatever precedes the
+               // thousands)
+        + "    1000: , <%default< thousand, >%default>;\n"
+               // and so on...
+        + "    1,000,000: , =%default=;"
+        // %%lenient-parse isn't really a set of number formatting rules;
+        // it's a set of collation rules.  Lenient-parse mode uses a Collator
+        // object to compare fragments of the text being parsed to the text
+        // in the rules, allowing more leeway in the matching text.  This set
+        // of rules tells the formatter to ignore commas when parsing (it
+        // already ignores spaces, which is why we refer to the space; it also
+        // ignores hyphens, making "twenty one" and "twenty-one" parse
+        // identically)
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+
+    /**
+     * Spellout rules for U.K. English.  U.K. English has one significant
+     * difference from U.S. English: the names for values of 1,000,000,000
+     * and higher.  In American English, each successive "-illion" is 1,000
+     * times greater than the preceding one: 1,000,000,000 is "one billion"
+     * and 1,000,000,000,000 is "one trillion."  In British English, each
+     * successive "-illion" is one million times greater than the one before:
+     * "one billion" is 1,000,000,000,000 (or what Americans would call a
+     * "trillion"), and "one trillion" is 1,000,000,000,000,000,000.
+     * 1,000,000,000 in British English is "one thousand million."  (This
+     * value is sometimes called a "milliard," but this word seems to have
+     * fallen into disuse.)
+     */
+    public static final String ukEnglish =
+        "%simplified:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%alt-teens:\n"
+        + "    =%simplified=;\n"
+        + "    1000>: <%%alt-hundreds<[ >>];\n"
+        + "    10,000: =%simplified=;\n"
+        + "    1,000,000: << million[ >%simplified>];\n"
+        + "    1,000,000,000,000: << billion[ >%simplified>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-hundreds:\n"
+        + "    0: SHOULD NEVER GET HERE!;\n"
+        + "    10: <%simplified< thousand;\n"
+        + "    11: =%simplified= hundred>%%empty>;\n"
+        + "%%empty:\n"
+        + "    0:;"
+        + "%ordinal:\n"
+        + "    zeroth; first; second; third; fourth; fifth; sixth; seventh;\n"
+        + "        eighth; ninth;\n"
+        + "    tenth; eleventh; twelfth; thirteenth; fourteenth;\n"
+        + "        fifteenth; sixteenth; seventeenth; eighteenth;\n"
+        + "        nineteenth;\n"
+        + "    twentieth; twenty->>;\n"
+        + "    30: thirtieth; thirty->>;\n"
+        + "    40: fortieth; forty->>;\n"
+        + "    50: fiftieth; fifty->>;\n"
+        + "    60: sixtieth; sixty->>;\n"
+        + "    70: seventieth; seventy->>;\n"
+        + "    80: eightieth; eighty->>;\n"
+        + "    90: ninetieth; ninety->>;\n"
+        + "    100: <%simplified< hundredth; <%simplified< hundred >>;\n"
+        + "    1000: <%simplified< thousandth; <%simplified< thousand >>;\n"
+        + "    1,000,000: <%simplified< millionth; <%simplified< million >>;\n"
+        + "    1,000,000,000,000: <%simplified< billionth;\n"
+        + "        <%simplified< billion >>;\n"
+        + "    1,000,000,000,000,000: =#,##0=;"
+        + "%default:\n"
+        + "    -x: minus >>;\n"
+        + "    x.x: << point >>;\n"
+        + "    =%simplified=;\n"
+        + "    100: << hundred[ >%%and>];\n"
+        + "    1000: << thousand[ >%%and>];\n"
+        + "    100,000>>: << thousand[>%%commas>];\n"
+        + "    1,000,000: << million[>%%commas>];\n"
+        + "    1,000,000,000,000: << billion[>%%commas>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%and:\n"
+        + "    and =%default=;\n"
+        + "    100: =%default=;\n"
+        + "%%commas:\n"
+        + "    ' and =%default=;\n"
+        + "    100: , =%default=;\n"
+        + "    1000: , <%default< thousand, >%default>;\n"
+        + "    1,000,000: , =%default=;"
+        + "%%lenient-parse:\n"
+        + "    & ' ' , ',' ;\n";
+    // Could someone please correct me if I'm wrong about "milliard" falling
+    // into disuse, or have missed any other details of how large numbers
+    // are rendered.  Also, could someone please provide me with information
+    // on which other English-speaking countries use which system?  Right now,
+    // I'm assuming that the U.S. system is used in Canada and that all the
+    // other English-speaking countries follow the British system.  Can
+    // someone out there confirm this?
+
+    /**
+     * Spellout rules for Spanish.  The Spanish rules are quite similar to
+     * the English rules, but there are some important differences:
+     * First, we have to provide separate rules for most of the twenties
+     * because the ones digit frequently picks up an accent mark that it
+     * doesn't have when standing alone.  Second, each multiple of 100 has
+     * to be specified separately because the multiplier on 100 very often
+     * changes form in the contraction: 500 is "quinientos," not
+     * "cincocientos."  In addition, the word for 100 is "cien" when
+     * standing alone, but changes to "ciento" when followed by more digits.
+     * There also some other differences.
+     */
+    public static final String spanish =
+        // negative-number and fraction rules
+        "-x: menos >>;\n"
+        + "x.x: << punto >>;\n"
+        // words for values from 0 to 19
+        + "cero; uno; dos; tres; cuatro; cinco; seis; siete; ocho; nueve;\n"
+        + "diez; once; doce; trece; catorce; quince; diecis\u00e9is;\n"
+        + "    diecisiete; dieciocho; diecinueve;\n"
+        // words for values from 20 to 29 (necessary because the ones digit
+        // often picks up an accent mark it doesn't have when standing alone)
+        + "veinte; veintiuno; veintid\u00f3s; veintitr\u00e9s; veinticuatro;\n"
+        + "    veinticinco; veintis\u00e9is; veintisiete; veintiocho;\n"
+        + "    veintinueve;\n"
+        // words for multiples of 10 (notice that the tens digit is separated
+        // from the ones digit by the word "y".)
+        + "30: treinta[ y >>];\n"
+        + "40: cuarenta[ y >>];\n"
+        + "50: cincuenta[ y >>];\n"
+        + "60: sesenta[ y >>];\n"
+        + "70: setenta[ y >>];\n"
+        + "80: ochenta[ y >>];\n"
+        + "90: noventa[ y >>];\n"
+        // 100 by itself is "cien," but 100 followed by something is "cineto"
+        + "100: cien;\n"
+        + "101: ciento >>;\n"
+        // words for multiples of 100 (must be stated because they're
+        // rarely simple concatenations)
+        + "200: doscientos[ >>];\n"
+        + "300: trescientos[ >>];\n"
+        + "400: cuatrocientos[ >>];\n"
+        + "500: quinientos[ >>];\n"
+        + "600: seiscientos[ >>];\n"
+        + "700: setecientos[ >>];\n"
+        + "800: ochocientos[ >>];\n"
+        + "900: novecientos[ >>];\n"
+        // for 1,000, the multiplier on "mil" is omitted: 2,000 is "dos mil,"
+        // but 1,000 is just "mil."
+        + "1000: mil[ >>];\n"
+        + "2000: << mil[ >>];\n"
+        // 1,000,000 is "un millon," not "uno millon"
+        + "1,000,000: un mill\u00f3n[ >>];\n"
+        + "2,000,000: << mill\u00f3n[ >>];\n"
+        // overflow rule
+        + "1,000,000,000: =#,##0= (incomplete data);";
+    // The Spanish rules are incomplete.  I'm missing information on negative
+    // numbers and numbers with fractional parts.  I also don't have
+    // information on numbers higher than the millions
+
+    /**
+     * Spellout rules for French.  French adds some interesting quirks of its
+     * own: 1) The word "et" is interposed between the tens and ones digits,
+     * but only if the ones digit if 1: 20 is "vingt," and 2 is "vingt-deux,"
+     * but 21 is "vingt-et-un."  2)  There are no words for 70, 80, or 90.
+     * "quatre-vingts" ("four twenties") is used for 80, and values proceed
+     * by score from 60 to 99 (e.g., 73 is "soixante-treize" ["sixty-thirteen"]).
+     * Numbers from 1,100 to 1,199 are rendered as hundreds rather than
+     * thousands: 1,100 is "onze cents" ("eleven hundred"), rather than
+     * "mille cent" ("one thousand one hundred")
+     */
+    public static final String french =
+        // the main rule set
+        "%main:\n"
+               // negative-number and fraction rules
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+               // words for numbers from 0 to 10
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+               // ords for the multiples of 10: %%alt-ones inserts "et"
+               // when needed
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+               // rule for 60.  The /20 causes this rule's multiplier to be
+               // 20 rather than 10, allowinhg us to recurse for all values
+               // from 60 to 79...
+        + "    60/20: soixante[->%%alt-ones>];\n"
+               // ...except for 71, which must be special-cased
+        + "    71: soixante et onze;\n"
+               // at 72, we have to repeat the rule for 60 to get us to 79
+        + "    72/20: soixante->%%alt-ones>;\n"
+               // at 80, we state a new rule with the phrase for 80.  Since
+               // it changes form when there's a ones digit, we need a second
+               // rule at 81.  This rule also includes "/20," allowing it to
+               // be used correctly for all values up to 99
+        + "    80: quatre-vingts; 81/20: quatre-vingt->>;\n"
+               // "cent" becomes plural when preceded by a multiplier, and
+               // the multiplier is omitted from the singular form
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+               // values from 1,100 to 1,199 are rendered as "onze cents..."
+               // instead of "mille cent..."  The > after "1000" decreases
+               // the rule's exponent, causing its multiplier to be 100 instead
+               // of 1,000.  This prevents us from getting "onze cents cent
+               // vingt-deux" ("eleven hundred one hundred twenty-two").
+        + "    1100>: onze cents[ >>];\n"
+               // at 1,200, we go back to formating in thousands, so we
+               // repeat the rule for 1,000
+        + "    1200: mille >>;\n"
+               // at 2,000, the multiplier is added
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // %%alt-ones is used to insert "et" when the ones digit is 1
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+
+    /**
+     * Spellout rules for Swiss French.  Swiss French differs from French French
+     * in that it does have words for 70, 80, and 90.  This rule set shows them,
+     * and is simpler as a result.
+     */
+    public static final String swissFrench =
+        "%main:\n"
+        + "    -x: moins >>;\n"
+        + "    x.x: << virgule >>;\n"
+        + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+        + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+        + "        dix-sept; dix-huit; dix-neuf;\n"
+        + "    20: vingt[->%%alt-ones>];\n"
+        + "    30: trente[->%%alt-ones>];\n"
+        + "    40: quarante[->%%alt-ones>];\n"
+        + "    50: cinquante[->%%alt-ones>];\n"
+        + "    60: soixante[->%%alt-ones>];\n"
+               // notice new words for 70, 80, and 90
+        + "    70: septante[->%%alt-ones>];\n"
+        + "    80: octante[->%%alt-ones>];\n"
+        + "    90: nonante[->%%alt-ones>];\n"
+        + "    100: cent[ >>];\n"
+        + "    200: << cents[ >>];\n"
+        + "    1000: mille[ >>];\n"
+        + "    1100>: onze cents[ >>];\n"
+        + "    1200: mille >>;\n"
+        + "    2000: << mille[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << milliarde[ >>];\n"
+        + "    1,000,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        + "%%alt-ones:\n"
+        + "    ; et-un; =%main=;";
+    // I'm not 100% sure about Swiss French.  Is
+    // this correct?  Is "onze cents" commonly used for 1,100 in both France
+    // and Switzerland?  Can someone fill me in on the rules for the other
+    // French-speaking countries?  I've heard conflicting opinions on which
+    // version is used in Canada, and I understand there's an alternate set
+    // of words for 70, 80, and 90 that is used somewhere, but I don't know
+    // what those words are or where they're used.
+
+    /**
+     * Spellout rules for German.  German also adds some interesting
+     * characteristics.  For values below 1,000,000, numbers are customarily
+     * written out as a single word.  And the ones digit PRECEDES the tens
+     * digit (e.g., 23 is "dreiundzwanzig," not "zwanzigunddrei").
+     */
+    public static final String german =
+        // 1 is "eins" when by itself, but turns into "ein" in most
+        // combinations
+        "%alt-ones:\n"
+        + "    null; eins; =%%main=;\n"
+        + "%%main:\n"
+               // words for numbers from 0 to 12.  Notice that the values
+               // from 13 to 19 can derived algorithmically, unlike in most
+               // other languages
+        + "    null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
+        + "    zehn; elf; zw\u00f6lf; >>zehn;\n"
+               // rules for the multiples of 10.  Notice that the ones digit
+               // goes on the front
+        + "    20: [>>und]zwanzig;\n"
+        + "    30: [>>und]drei\u00dfig;\n"
+        + "    40: [>>und]vierzig;\n"
+        + "    50: [>>und]f\u00fcnfzig;\n"
+        + "    60: [>>und]sechzig;\n"
+        + "    70: [>>und]siebzig;\n"
+        + "    80: [>>und]achtzig;\n"
+        + "    90: [>>und]neunzig;\n"
+        + "    100: hundert[>%alt-ones>];\n"
+        + "    200: <<hundert[>%alt-ones>];\n"
+        + "    1000: tausend[>%alt-ones>];\n"
+        + "    2000: <<tausend[>%alt-ones>];\n"
+        + "    1,000,000: eine Million[ >%alt-ones>];\n"
+        + "    2,000,000: << Millionen[ >%alt-ones>];\n"
+        + "    1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
+        + "    2,000,000,000: << Milliarden[ >%alt-ones>];\n"
+        + "    1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
+        + "    2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;";
+    // again, I'm not 100% sure of these rules.  I think both "hundert" and
+    // "einhundert" are correct or 100, but I'm not sure which is preferable
+    // in situations where this framework is likely to be used.  Also, is it
+    // really true that numbers are run together into compound words all the
+    // time?  And again, I'm missing information on negative numbers and
+    // decimas.
+
+    /**
+     * Spellout rules for Italian.  Like German, most Italian numbers are
+     * written as single words.  What makes these rules complicated is the rule
+     * that says that when a word ending in a vowel and a word beginning with
+     * a vowel are combined into a compound, the vowel is dropped from the
+     * end of the first word: 180 is "centottanta," not "centoottanta."
+     * The complexity of this rule set is to produce this behavior.
+     */
+    public static final String italian =
+        // main rule set.  Follows the patterns of the preceding rule sets,
+        // except that the final vowel is omitted from words ending in
+        // vowels when they are followed by another word; instead, we have
+        // separate rule sets that are identical to this one, except that
+        // all the words that don't begin with a vowel have a vowel tacked
+        // onto them at the front.  A word ending in a vowel calls a
+        // substitution that will supply that vowel, unless that vowel is to
+        // be elided.
+        "%main:\n"
+        + "    -x: meno >>;\n"
+        + "    x.x: << virgola >>;\n"
+        + "    zero; uno; due; tre; quattro; cinque; sei; sette; otto;\n"
+        + "        nove;\n"
+        + "    dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
+        + "        diciasette; diciotto; diciannove;\n"
+        + "    20: venti; vent>%%with-i>;\n"
+        + "    30: trenta; trent>%%with-i>;\n"
+        + "    40: quaranta; quarant>%%with-a>;\n"
+        + "    50: cinquanta; cinquant>%%with-a>;\n"
+        + "    60: sessanta; sessant>%%with-a>;\n"
+        + "    70: settanta; settant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: novanta; novant>%%with-a>;\n"
+        + "    100: cento; cent[>%%with-o>];\n"
+        + "    200: <<cento; <<cent[>%%with-o>];\n"
+        + "    1000: mille; mill[>%%with-i>];\n"
+        + "    2000: <<mila; <<mil[>%%with-a>];\n"
+        + "    100,000>>: <<mila[ >>];\n"
+        + "    1,000,000: =#,##0= (incomplete data);\n"
+        + "%%with-a:\n"
+        + "    azero; uno; adue; atre; aquattro; acinque; asei; asette; otto;\n"
+        + "        anove;\n"
+        + "    adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
+        + "        adiciasette; adiciotto; adiciannove;\n"
+        + "    20: aventi; avent>%%with-i>;\n"
+        + "    30: atrenta; atrent>%%with-i>;\n"
+        + "    40: aquaranta; aquarant>%%with-a>;\n"
+        + "    50: acinquanta; acinquant>%%with-a>;\n"
+        + "    60: asessanta; asessant>%%with-a>;\n"
+        + "    70: asettanta; asettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: anovanta; anovant>%%with-a>;\n"
+        + "    100: acento; acent[>%%with-o>];\n"
+        + "    200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n"
+        + "    1000: amille; amill[>%%with-i>];\n"
+        + "    2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-i:\n"
+        + "    izero; uno; idue; itre; iquattro; icinque; isei; isette; otto;\n"
+        + "        inove;\n"
+        + "    idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
+        + "        idiciasette; idiciotto; idiciannove;\n"
+        + "    20: iventi; ivent>%%with-i>;\n"
+        + "    30: itrenta; itrent>%%with-i>;\n"
+        + "    40: iquaranta; iquarant>%%with-a>;\n"
+        + "    50: icinquanta; icinquant>%%with-a>;\n"
+        + "    60: isessanta; isessant>%%with-a>;\n"
+        + "    70: isettanta; isettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: inovanta; inovant>%%with-a>;\n"
+        + "    100: icento; icent[>%%with-o>];\n"
+        + "    200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n"
+        + "    1000: imille; imill[>%%with-i>];\n"
+        + "    2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n"
+        + "%%with-o:\n"
+        + "    ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto;\n"
+        + "        onove;\n"
+        + "    odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
+        + "        odiciasette; odiciotto; odiciannove;\n"
+        + "    20: oventi; ovent>%%with-i>;\n"
+        + "    30: otrenta; otrent>%%with-i>;\n"
+        + "    40: oquaranta; oquarant>%%with-a>;\n"
+        + "    50: ocinquanta; ocinquant>%%with-a>;\n"
+        + "    60: osessanta; osessant>%%with-a>;\n"
+        + "    70: osettanta; osettant>%%with-a>;\n"
+        + "    80: ottanta; ottant>%%with-a>;\n"
+        + "    90: onovanta; onovant>%%with-a>;\n"
+        + "    100: ocento; ocent[>%%with-o>];\n"
+        + "    200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n"
+        + "    1000: omille; omill[>%%with-i>];\n"
+        + "    2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n"
+        + "    100,000: =%main=;\n";
+    // Can someone confirm that I did the vowel-eliding thing right?  I'm
+    // not 100% sure I'm doing it in all the right places, or completely
+    // correctly.  Also, I don't have information for negatives and decimals,
+    // and I lack words fror values from 1,000,000 on up.
+
+    /**
+     * Spellout rules for Swedish.
+     */
+    public static final String swedish =
+        "noll; ett; tv\u00e5; tre; fyra; fem; sex; sjo; \u00e5tta; nio;\n"
+        + "tio; elva; tolv; tretton; fjorton; femton; sexton; sjutton; arton; nitton;\n"
+        + "20: tjugo[>>];\n"
+        + "30: trettio[>>];\n"
+        + "40: fyrtio[>>];\n"
+        + "50: femtio[>>];\n"
+        + "60: sextio[>>];\n"
+        + "70: sjuttio[>>];\n"
+        + "80: \u00e5ttio[>>];\n"
+        + "90: nittio[>>];\n"
+        + "100: hundra[>>];\n"
+        + "200: <<hundra[>>];\n"
+        + "1000: tusen[ >>];\n"
+        + "2000: << tusen[ >>];\n"
+        + "1,000,000: en miljon[ >>];\n"
+        + "2,000,000: << miljon[ >>];\n"
+        + "1,000,000,000: en miljard[ >>];\n"
+        + "2,000,000,000: << miljard[ >>];\n"
+        + "1,000,000,000,000: en biljon[ >>];\n"
+        + "2,000,000,000,000: << biljon[ >>];\n"
+        + "1,000,000,000,000,000: =#,##0=";
+    // can someone supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Dutch.  Notice that in Dutch, as in German,
+     * the ones digit precedes the tens digit.
+     */
+    public static final String dutch =
+        " -x: min >>;\n"
+        + "x.x: << komma >>;\n"
+        + "(zero?); een; twee; drie; vier; vijf; zes; zeven; acht; negen;\n"
+        + "tien; elf; twaalf; dertien; veertien; vijftien; zestien;\n"
+        + "zeventien; achtien; negentien;\n"
+        + "20: [>> en ]twintig;\n"
+        + "30: [>> en ]dertig;\n"
+        + "40: [>> en ]veertig;\n"
+        + "50: [>> en ]vijftig;\n"
+        + "60: [>> en ]zestig;\n"
+        + "70: [>> en ]zeventig;\n"
+        + "80: [>> en ]tachtig;\n"
+        + "90: [>> en ]negentig;\n"
+        + "100: << honderd[ >>];\n"
+        + "1000: << duizend[ >>];\n"
+        + "1,000,000: << miljoen[ >>];\n"
+        + "1,000,000,000: << biljoen[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+
+    /**
+     * Spellout rules for Japanese.  In Japanese, there really isn't any
+     * distinction between a number written out in digits and a number
+     * written out in words: the ideographic characters are both digits
+     * and words.  This rule set provides two variants:  %traditional
+     * uses the traditional CJK numerals (which are also used in China
+     * and Korea).  %financial uses alternate ideographs for many numbers
+     * that are harder to alter than the traditional numerals (one could
+     * fairly easily change a one to
+     * a three just by adding two strokes, for example).  This is also done in
+     * the other countries using Chinese idographs, but different ideographs
+     * are used in those places.
+     */
+    public static final String japanese =
+        "%financial:\n"
+        + "    \u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u62fe[>>];\n"
+        + "    20: <<\u62fe[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;\n"
+        + "%traditional:\n"
+        + "    \u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "    \u5341[>>];\n"
+        + "    20: <<\u5341[>>];\n"
+        + "    100: <<\u767e[>>];\n"
+        + "    1000: <<\u5343[>>];\n"
+        + "    10,000: <<\u4e07[>>];\n"
+        + "    100,000,000: <<\u5104[>>];\n"
+        + "    1,000,000,000,000: <<\u5146[>>];\n"
+        + "    10,000,000,000,000,000: =#,##0=;";
+    // Can someone supply me with the right fraud-proof ideographs for
+    // Simplified and Traditional Chinese, and for Korean?  Can someone
+    // supply me with information on negatives and decimals?
+
+    /**
+     * Spellout rules for Greek.  Again in Greek we have to supply the words
+     * for the multiples of 100 because they can't be derived algorithmically.
+     * Also, the tens dgit changes form when followed by a ones digit: an
+     * accent mark disappears from the tens digit and moves to the ones digit.
+     * Therefore, instead of using the [] notation, we actually have to use
+     * two separate rules for each multiple of 10 to show the two forms of
+     * the word.
+     */
+    public static final String greek =
+        "zero (incomplete data); \u03ad\u03bd\u03b1; \u03b4\u03cd\u03bf; \u03b4\u03c1\u03af\u03b1; "
+        + "\u03c4\u03ad\u03c3\u03c3\u03b5\u03c1\u03b1; \u03c0\u03ad\u03bd\u03c4\u03b5; "
+        + "\u03ad\u03be\u03b9; \u03b5\u03c0\u03c4\u03ac; \u03bf\u03ba\u03c4\u03ce; "
+        + "\u03b5\u03bd\u03bd\u03ad\u03b1;\n"
+        + "10: \u03b4\u03ad\u03ba\u03b1; "
+        + "\u03ad\u03bd\u03b4\u03b5\u03ba\u03b1; \u03b4\u03ce\u03b4\u03b5\u03ba\u03b1; "
+        + "\u03b4\u03b5\u03ba\u03b1>>;\n"
+        + "20: \u03b5\u03af\u03ba\u03bf\u03c3\u03b9; \u03b5\u03b9\u03ba\u03bf\u03c3\u03b9>>;\n"
+        + "30: \u03c4\u03c1\u03b9\u03ac\u03bd\u03c4\u03b1; \u03c4\u03c1\u03b9\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "40: \u03c3\u03b1\u03c1\u03ac\u03bd\u03c4\u03b1; \u03c3\u03b1\u03c1\u03b1\u03bd\u03c4\u03b1>>;\n"
+        + "50: \u03c0\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; \u03c0\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "60: \u03b5\u03be\u03ae\u03bd\u03c4\u03b1; \u03b5\u03be\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "70: \u03b5\u03b2\u03b4\u03bf\u03bc\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03b2\u03b4\u03bf\u03bc\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "80: \u03bf\u03b3\u03b4\u03cc\u03bd\u03c4\u03b1; \u03bf\u03b3\u03b4\u03bf\u03bd\u03c4\u03b1>>;\n"
+        + "90: \u03b5\u03bd\u03bd\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; "
+        + "\u03b5\u03bd\u03bd\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+        + "100: \u03b5\u03ba\u03b1\u03c4\u03cc[\u03bd >>];\n"
+        + "200: \u03b4\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "300: \u03c4\u03c1\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "400: \u03c4\u03b5\u03c4\u03c1\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "500: \u03c0\u03b5\u03bd\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "600: \u03b5\u03be\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "700: \u03b5\u03c0\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "800: \u03bf\u03ba\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "900: \u03b5\u03bd\u03bd\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+        + "1000: \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "2000: << \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+        + "1,000,000: << \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000: << \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+        + "1,000,000,000,000: =#,##0=";
+    // Can someone supply me with information on negatives and decimals?
+    // I'm also missing the word for zero.  Can someone clue me in?
+
+    /**
+     * Spellout rules for Russian.
+     */
+    public static final String russian =
+        "\u043d\u043e\u043b\u044c; \u043e\u0434\u0438\u043d; \u0434\u0432\u0430; \u0442\u0440\u0438; "
+        + "\u0447\u0435\u0442\u044b\u0440\u0435; \u043f\u044f\u0442; \u0448\u0435\u0441\u0442; "
+        + "\u0441\u0435\u043c\u044c; \u0432\u043e\u0441\u0435\u043c\u044c; \u0434\u0435\u0432\u044f\u0442;\n"
+        + "10: \u0434\u0435\u0441\u044f\u0442; "
+        + "\u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "\u0434\u0432\u0435\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "15: \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0432\u043e\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+        + "\u0434\u0435\u0432\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+        + "20: \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "30: \u0442\u0440\u043b\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+        + "40: \u0441\u043e\u0440\u043e\u043a[ >>];\n"
+        + "50: \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "60: \u0448\u0435\u0441\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "70: \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "80: \u0432\u043e\u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+        + "90: \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u043e[ >>];\n"
+        + "100: \u0441\u0442\u043e[ >>];\n"
+        + "200: << \u0441\u0442\u043e[ >>];\n"
+        + "1000: \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "2000: << \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+        + "1,000,000: \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "2,000,000: << \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+        + "1,000,000,000: =#,##0=;";
+    // Can someone supply me with information on negatives and decimals?
+    // How about words for billions and trillions?
+
+    /**
+     * Spellout rules for Hebrew.  Hebrew actually has inflected forms for
+     * most of the lower-order numbers.  The masculine forms are shown
+     * here.
+     */
+    public static final String hebrew =
+        "zero (incomplete data); \u05d0\u05d4\u05d3; \u05e9\u05d2\u05d9\u05d9\u05dd; \u05e9\u05dc\u05d5\u05e9\u05d4;\n"
+        + "4: \u05d0\u05d3\u05d1\u05e6\u05d4; \u05d7\u05d2\u05d5\u05d9\u05e9\u05d4; \u05e9\u05e9\u05d4;\n"
+        + "7: \u05e9\u05d1\u05e6\u05d4; \u05e9\u05de\u05d5\u05d2\u05d4; \u05ea\u05e9\u05e6\u05d4;\n"
+        + "10: \u05e6\u05e9\u05d3\u05d4[ >>];\n"
+        + "20: \u05e6\u05e9\u05d3\u05d9\u05dd[ >>];\n"
+        + "30: \u05e9\u05dc\u05d5\u05e9\u05d9\u05dd[ >>];\n"
+        + "40: \u05d0\u05d3\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "50: \u05d7\u05de\u05d9\u05e9\u05d9\u05dd[ >>];\n"
+        + "60: \u05e9\u05e9\u05d9\u05dd[ >>];\n"
+        + "70: \u05e9\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+        + "80: \u05e9\u05de\u05d5\u05d2\u05d9\u05dd[ >>];\n"
+        + "90: \u05ea\u05e9\u05e6\u05d9\u05dd[ >>];\n"
+        + "100: \u05de\u05d0\u05d4[ >>];\n"
+        + "200: << \u05de\u05d0\u05d4[ >>];\n"
+        + "1000: \u05d0\u05dc\u05e3[ >>];\n"
+        + "2000: << \u05d0\u05dc\u05e3[ >>];\n"
+        + "1,000,000: =#,##0= (incomplete data);";
+    // This data is woefully incomplete.  Can someone fill me in on the
+    // various inflected forms of the numbers, which seem to be necessary
+    // to do Hebrew correctly?  Can somone supply me with data for values
+    // from 1,000,000 on up?  What about the word for zero?  What about
+    // information on negatives and decimals?
+
+    //========================================================================
+    // Simple examples
+    //========================================================================
+
+    /**
+     * This rule set adds an English ordinal abbreviation to the end of a
+     * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
+     * this rule set.  To parse, use DecimalFormat on the numeral.
+     */
+    public static final String ordinal =
+        // this rule set formats the numeral and calls %%abbrev to
+        // supply the abbreviation
+        "%main:\n"
+        + "    =#,##0==%%abbrev=;\n"
+        // this rule set supplies the abbreviation
+        + "%%abbrev:\n"
+               // the abbreviations.  Everything from 4 to 19 ends in "th"
+        + "    th; st; nd; rd; th;\n"
+               // at 20, we begin repeating the cycle every 10 (13 is "13th",
+               // but 23 and 33 are "23rd" and "33rd")  We do this by
+               // ignoring all bug the ones digit in selecting the abbreviation
+        + "    20: >>;\n"
+               // at 100, we repeat the whole cycle by considering only the
+               // tens and ones digits in picking an abbreviation
+        + "    100: >>;\n";
+
+    /**
+     * This is a simple message-formatting example.  Normally one would
+     * use ChoiceFormat and MessageFormat to do something this simple,
+     * but this shows it could be done with RuleBasedNumberFormat too.
+     * A message-formatting example that might work better with
+     * RuleBasedNumberFormat appears later.
+     */
+    public static final String message1 =
+        // this rule surrounds whatever the other rules produce with the
+        // rest of the sentence
+        "x.0: The search found <<.;\n"
+        // use words for values below 10 (and change to "file" for 1)
+        + "no files; one file; two files; three files; four files; five files;\n"
+        + "    six files; seven files; eight files; nine files;\n"
+        // use numerals for values higher than 10
+        + "=#,##0= files;";
+
+    //========================================================================
+    // Fraction handling
+    //
+    // The next few examples show how RuleBasedNumberFormat can be used for
+    // more flexible handling of fractions
+    //========================================================================
+
+    /**
+     * This example formats a number in one of the two styles often used
+     * on checks.  %dollars-and-hundredths formats cents as hundredths of
+     * a dollar (23.40 comes out as "twenty-three and 40/100 dollars").
+     * %dollars-and-cents formats in dollars and cents (23.40 comes out as
+     * "twenty-three dollars and forty cents")
+     */
+    public static final String dollarsAndCents =
+        // this rule set formats numbers as dollars and cents
+        "%dollars-and-cents:\n"
+               // if the value is 1 or more, put "xx dollars and yy cents".
+               // the "and y cents" part is suppressed if the value is an
+               // even number of dollars
+        + "    x.0: << [and >%%cents>];\n"
+               // if the value is between 0 and 1, put "xx cents"
+        + "    0.x: >%%cents>;\n"
+               // these three rules take care of the singular and plural
+               // forms of "dollar" and use %%main to format the number
+        + "    0: zero dollars; one dollar; =%%main= dollars;\n"
+        // these are the regular U.S. English number spellout rules
+        + "%%main:\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    20: twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // this rule takes care of the fractional part of the value.  It
+        // multiplies the fractional part of the number being formatted by
+        // 100, formats it with %%main, and then addes the word "cent" or
+        // "cents" to the end.  (The text in brackets is omitted if the
+        // numerator of the fraction is 1.)
+        + "%%cents:\n"
+        + "    100: <%%main< cent[s];\n"
+
+        // this rule set formats numbers as dollars and hundredths of dollars
+        + "%dollars-and-hundredths:\n"
+               // this rule takes care of the general shell of the output
+               // string.  We always show the cents, even when there aren't
+               // any.  Because of this, the word is always "dollars"--
+               // we don't have to worry about the singular form.  We use
+               // %%main to format the number of dollars and %%hundredths to
+               // format the number of cents
+        + "    x.0: <%%main< and >%%hundredths>/100 dollars;\n"
+        // this rule set formats the cents for %dollars-and-hundredths.
+        // It multiplies the fractional part of the number by 100 and formats
+        // the result using a DecimalFormat ("00" tells the DecimalFormat to
+        // always use two digits, even for numbers under 10)
+        + "%%hundredths:\n"
+        + "    100: <00<;\n";
+
+    /**
+     * This rule set shows the fractional part of the number as a fraction
+     * with a power of 10 as the denominator.  Some languages don't spell
+     * out the fractional part of a number as "point one two three," but
+     * always render it as a fraction.  If we still want to treat the fractional
+     * part of the number as a decimal, then the fraction's denominator
+     * is always a power of 10.  This example does that: 23.125 is formatted
+     * as "twenty-three and one hundred twenty-five thousandths" (as opposed
+     * to "twenty-three point one two five" or "twenty-three and one eighth").
+     */
+    public static final String decimalAsFraction =
+        // the regular U.S. English spellout rules, with one difference
+        "%main:\n"
+        + "    -x: minus >>;\n"
+               // the difference.  This rule uses %%frac to show the fractional
+               // part of the number.  Text in brackets is omitted when the
+               // value is between 0 and 1 (causing 0.3 to come out as "three
+               // tenths" instead of "zero and three tenths").
+        + "    x.x: [<< and ]>%%frac>;\n"
+        + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+        + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+        + "        seventeen; eighteen; nineteen;\n"
+        + "    twenty[->>];\n"
+        + "    30: thirty[->>];\n"
+        + "    40: forty[->>];\n"
+        + "    50: fifty[->>];\n"
+        + "    60: sixty[->>];\n"
+        + "    70: seventy[->>];\n"
+        + "    80: eighty[->>];\n"
+        + "    90: ninety[->>];\n"
+        + "    100: << hundred[ >>];\n"
+        + "    1000: << thousand[ >>];\n"
+        + "    1,000,000: << million[ >>];\n"
+        + "    1,000,000,000: << billion[ >>];\n"
+        + "    1,000,000,000,000: << trillion[ >>];\n"
+        + "    1,000,000,000,000,000: =#,##0=;\n"
+        // the rule set that formats the fractional part of the number.
+        // The rule that is used is the one that, when its baase value is
+        // multiplied by the fractional part of the number being formatted,
+        // produces the result closest to zero.  Thus, the base values are
+        // prospective denominators of the fraction.  The << marks the place
+        // where the numerator of the fraction (the result of multiplying the
+        // fractional part of the number by the rule's base value) is
+        // placed.  Text in brackets is omitted when the numerator is 1, giving
+        // us the singular and plural forms of the words.
+        // [In languages where the singular and plural are completely different
+        // words, the rule can just be stated twice: the second time with
+        // the plural form.]
+        + "%%frac:\n"
+        + "    10: << tenth[s];\n"
+        + "    100: << hundredth[s];\n"
+        + "    1000: << thousandth[s];\n"
+        + "    10,000: << ten-thousandth[s];\n"
+        + "    100,000: << hundred-thousandth[s];\n"
+        + "    1,000,000: << millionth[s];";
+
+    /**
+     * Number with closest fraction.  This example formats a value using
+     * numerals, but shows the fractional part as a ratio (fraction) rather
+     * than a decimal.  The fraction always has a denominator between 2 and 10.
+     */
+    public static final String closestFraction =
+        "%main:\n"
+               // this rule formats the number if it's 1 or more.  It formats
+               // the integral part using a DecimalFormat ("#,##0" puts
+               // thousands separators in the right places) and the fractional
+               // part using %%frac.  If there is no fractional part, it
+               // just shows the integral part.
+        + "    x.0: <#,##0<[ >%%frac>];\n"
+               // this rule formats the number if it's between 0 and 1.  It
+               // shows only the fractional part (0.5 shows up as "1/2," not
+               // "0 1/2")
+        + "    0.x: >%%frac>;\n"
+        // the fraction rule set.  This works the same way as the one in the
+        // preceding example: We multiply the fractional part of the number
+        // being formatted by each rule's base value and use the rule that
+        // produces the result closest to 0 (or the first rule that produces 0).
+        // Since we only provide rules for the numbers from 2 to 10, we know
+        // we'll get a fraction with a denominator between 2 and 10.
+        // "<0<" causes the numerator of the fraction to be formatted
+        // using numerals
+        + "%%frac:\n"
+        + "    2: 1/2;\n"
+        + "    3: <0</3;\n"
+        + "    4: <0</4;\n"
+        + "    5: <0</5;\n"
+        + "    6: <0</6;\n"
+        + "    7: <0</7;\n"
+        + "    8: <0</8;\n"
+        + "    9: <0</9;\n"
+        + "    10: <0</10;\n";
+
+    /**
+     * American stock-price formatting.  Non-integral stock prices are still
+     * generally shown in eighths or sixteenths of dollars instead of dollars
+     * and cents.  This example formats stock prices in this way if possible,
+     * and in dollars and cents if not.
+     */
+    public static final String stock =
+        "%main:\n"
+               // this rule formats the integral part of the number in numerals
+               // and (if necessary) the fractional part using %%frac1
+        + "    x.0: <#,##0<[>%%frac1>];\n"
+               // this rule is used for values between 0 and 1 and omits the
+               // integral part
+        + "    0.x: >%%frac2>;\n"
+        // this rule set is used to format the fractional part of the number when
+        // there's an integral part before it (again, we try all denominators
+        // and use the "best" one)
+        + "%%frac1:\n"
+               // for even multiples of 1/4, format the fraction using the
+               // typographer's fractions
+        + "    4: <%%quarters<;\n"
+               // format the value as a number of eighths, sixteenths, or
+               // thirty-seconds, whichever produces the most accurate value.
+               // The apostrophe at the front of these rules is ignored, but
+               // it makes the space that follows it significant.  This puts a
+               // space between the value's integral and fractional parts so
+               // you can read it
+        + "    8: ' <0</8;\n"
+        + "    16: ' <0</16;\n"
+        + "    32: ' <0</32;\n"
+               // if we can't reasonably format the number in powers of 2,
+               // then show it as dollars and cents
+        + "    100: .<00<;\n"
+        // this rule set is used when the fractional part of the value stands
+        // alone
+        + "%%frac2:\n"
+        + "    4: <%%quarters<;\n"
+               // for fractions that we can't show using typographer's fractions,
+               // we don't have to put a space before the fraction
+        + "    8: <0</8;\n"
+        + "    16: <0</16;\n"
+        + "    32: <0</32;\n"
+               // but dollars and cents look better with a leading 0
+        + "    100: 0.<00<;\n"
+        // this rule set formats 1/4, 1/2, and 3/4 using typographer's fractions
+        + "%%quarters:\n"
+        + "    ; \u00bc; \u00bd; \u00be;\n"
+        // there are the lenient-parse rules.  These allow the user to type
+        // "1/4," "1/2," and "3/4" instead of their typographical counterparts
+        // and still have them be understood by the formatter
+        + "%%lenient-parse:\n"
+        + "    & '1/4' , \u00bc\n"
+        + "    & '1/2' , \u00bd\n"
+        + "    & '3/4' , \u00be\n;";
+
+    //========================================================================
+    // Changing dimensions
+    //
+    // The next few examples demonstrate using a RuleBasedNumberFormat to
+    // change the units a value is denominated in depending on its magnitude
+    //========================================================================
+
+    /**
+     * The example shows large numbers the way they often appear is nwespapers:
+     * 1,200,000 is formatted as "1.2 million".
+     */
+    public static final String abbEnglish =
+        "=#,##0=;\n"
+        // this is fairly self-explanatory, but note that the << substitution
+        // can show the fractional part of the substitution value if the user
+        // wants it
+        + "1,000,000: <##0.###< million;\n"
+        + "1,000,000,000: <##0.###< billion;\n"
+        + "1,000,000,000,000: <##0.###< trillion;\n";
+
+    /**
+     * This example takes a number of meters and formats it in whatever unit
+     * will produce a number with from one to three digits before the decimal
+     * point.  For example, 230,000 is formatted as "230 km".
+     */
+    public static final String units =
+        "%main:\n"
+               // for values between 0 and 1, delegate to %%small
+        + "    0.x: >%%small>;\n"
+               // otherwise, show between 3 and 6 significant digits of the value
+               // along with the most appropriate unit
+        + "    0: =##0.###= m;\n"
+        + "    1,000: <##0.###< km;\n"
+        + "    1,000,000: <##0.###< Mm;\n"
+        + "    1,000,000,000: <##0.###< Gm;\n"
+        + "    1,000,000,000,000: <#,##0.###< Tm;\n"
+        // %%small formats the number when it's less then 1.  It multiplies the
+        // value by one billion, and then uses %%small2 to actually do the
+        // formatting.
+        + "%%small:\n"
+        + "    1,000,000,000,000: <%%small2<;\n"
+        // this rule set actually formats small values.  %%small passes this
+        // rule set a number of picometers, and it takes care of scaling up as
+        // appropriate in exactly the same way %main does (we can't normally
+        // handle fractional values this way: here, we're concerned about
+        // magnitude; most of the time, we're concerned about precsion)
+        + "%%small2:\n"
+        + "    0: =##0= pm;\n"
+        + "    1,000: <##0.###< nm;\n"
+        + "    1,000,000: <##0.###< \u00b5m;\n"
+        + "    1,000,000,000: <##0.###< mm;\n";
+
+    /**
+     * A more complicated message-formatting example.  Here, in addition to
+     * handling the singular and plural versions of the word, the value is
+     * denominated in bytes, kilobytes, or megabytes depending on its magnitude.
+     * Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000),
+     * and a megabyte as 1,024 kilobytes (not 1,000).
+     */
+    public static final String message2 =
+        // this rule supplies the shell of the sentence
+        "x.0: There << free space on the disk.;\n"
+        // handle singular and plural forms of "byte" (and format 0 as
+        // "There is no free space...")
+        + "0: is no;\n"
+        + "is one byte of;\n"
+        + "are =0= bytes of;\n"
+        // for values above 1,024, format the number in K (since "K" is usually
+        // promounced "K" regardless of whether it's singular or plural, we
+        // don't worry about the plural form).  The "/1024" here causes us to
+        // treat a K as 1,024 bytes rather than 1,000 bytes.
+        + "1024/1024: is <0<K of;\n"
+        // for values about 1,048,576, format the number in Mb.  Since "Mb" is
+        // usually promounced "meg" in singular and "megs" in plural, we do have
+        // both singular and plural forms.  Again, notice we treat a megabyte
+        // as 1,024 kilobytes.
+        + "1,048,576/1024: is 1 Mb of;\n"
+        + "2,097,152/1024: are <0< Mb of;";
+
+    //========================================================================
+    // Alternate radices
+    //========================================================================
+
+    /**
+     * This example formats a number in dozens and gross.  This is intended to
+     * demonstrate how this rule set can be used to format numbers in systems
+     * other than base 10.  The "/12" after the rules' base values controls this.
+     * Also notice that the base doesn't have to be consistent throughout the
+     * whole rule set: we go back to base 10 for values over 1,000.
+     */
+    public static final String dozens =
+        // words for numbers...
+        "zero; one; two; three; four; five; six;\n"
+        + "seven; eight; nine; ten; eleven;\n"
+        // format values over 12 in dozens
+        + "12/12: << dozen[ and >>];\n"
+        // format values over 144 in gross
+        + "144/12: << gross[, >>];\n"
+        // format values over 1,000 in thousands
+        + "1000: << thousand[, >>];\n"
+        // overflow rule.  Format values over 10,000 in numerals
+        + "10,000: =#,##0=;\n";
+
+    //========================================================================
+    // Major and minor units
+    //
+    // These examples show how a single value can be divided up into major
+    // and minor units that don't relate to each other by a factor of 10.
+    //========================================================================
+
+    /**
+     * This example formats a number of seconds in sexagesimal notation
+     * (i.e., hours, minutes, and seconds).  %with-words formats it with
+     * words (3740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
+     * formats it entirely in numerals (3740 is "1:02:20").
+     */
+    public static final String durationInSeconds =
+        // main rule set for formatting with words
+        "%with-words:\n"
+               // take care of singular and plural forms of "second"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+               // use %%min to format values greater than 60 seconds
+        + "    60/60: <%%min<[, >>];\n"
+               // use %%hr to format values greater than 3,600 seconds
+               // (the ">>>" below causes us to see the number of minutes
+               // when when there are zero minutes)
+        + "    3600/60: <%%hr<[, >>>];\n"
+        // this rule set takes care of the singular and plural forms
+        // of "minute"
+        + "%%min:\n"
+        + "    0 minutes; 1 minute; =0= minutes;\n"
+        // this rule set takes care of the singular and plural forms
+        // of "hour"
+        + "%%hr:\n"
+        + "    0 hours; 1 hour; =0= hours;\n"
+
+        // main rule set for formatting in numerals
+        + "%in-numerals:\n"
+               // values below 60 seconds are shown with "sec."
+        + "    =0= sec.;\n"
+               // higher values are shown with colons: %%min-sec is used for
+               // values below 3,600 seconds...
+        + "    60: =%%min-sec=;\n"
+               // ...and %%hr-min-sec is used for values of 3,600 seconds
+               // and above
+        + "    3600: =%%hr-min-sec=;\n"
+        // this rule causes values of less than 10 minutes to show without
+        // a leading zero
+        + "%%min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <0<>>;\n"
+        // this rule set is used for values of 3,600 or more.  Minutes are always
+        // shown, and always shown with two digits
+        + "%%hr-min-sec:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        + "    3600/60: <#,##0<:>>>;\n"
+        // the lenient-parse rules allow several different characters to be used
+        // as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This example formats a number of hours in sexagesimal notation (i.e.,
+     * hours, minutes, and seconds).  %with-words formats the value using
+     * words for the units, and %in-numerals formats the value using only
+     * numerals.
+     */
+    public static final String durationInHours =
+        // main entry point for formatting with words
+        "%with-words:\n"
+               // this rule omits minutes and seconds when the value is
+               // an even number of hours
+        + "    x.0: <<[, >%%min-sec>];\n"
+               // these rules take care of the singular and plural forms
+               // of hours
+        + "    0 hours; 1 hour; =#,##0= hours;\n"
+        // this rule set takes the fractional part of the number and multiplies
+        // it by 3,600 (turning it into a number of seconds).  Then it delegates
+        // to %%min-sec-implementation to format the resulting value
+        + "%%min-sec:\n"
+        + "    3600: =%%min-sec-implementation=;\n"
+        // this rule set formats the seconds as either seconds or minutes and
+        // seconds, and takes care of the singular and plural forms of
+        // "minute" and "second"
+        + "%%min-sec-implementation:\n"
+        + "    0 seconds; 1 second; =0= seconds;\n"
+        + "    60/60: 1 minute[, >>];\n"
+        + "    120/60: <0< minutes[, >>];\n"
+
+        // main entry point for formatting in numerals
+        + "%in-numerals:\n"
+               // show minutes even for even numbers of hours
+        + "    x.0: <#,##0<:00;\n"
+               // delegate to %%min-sec2 to format minutes and seconds
+        + "    x.x: <#,##0<:>%%min-sec2>;\n"
+        // this rule set formats minutes when there is an even number of
+        // minutes, and delegates to %%min-sec2-implementation when there
+        // are seconds
+        + "%%min-sec2:\n"
+        + "    60: <00<;\n"
+        + "    3600: <%%min-sec2-implementation<;\n"
+        // these two rule sets are used to format the minutes and seconds
+        + "%%min-sec2-implementation:\n"
+               // if there are fewer than 60 seconds, show the minutes anyway
+        + "    0: 00:=00=;\n"
+               // if there are minutes, format them too, and always use 2 digits
+               // for both minutes and seconds
+        + "    60: =%%min-sec3=;\n"
+        + "%%min-sec3:\n"
+        + "    0: :=00=;\n"
+        + "    60/60: <00<>>;\n"
+        // the lenient-parse rules allow the user to use any of several
+        // characters as delimiters between hours, minutes, and seconds
+        + "%%lenient-parse:\n"
+        + "    & : = . = ' ' = -;\n";
+
+    /**
+     * This rule set formats a number of pounds as pounds, shillings, and
+     * pence in the old English system of currency.
+     */
+    public static final String poundsShillingsAndPence =
+        // for values of 1 or more, format the integral part with a pound
+        // sign in front, and show shillings and pence if necessary
+        "%main:\n"
+        + "    x.0: \u00a3<#,##0<[ >%%shillings-and-pence>];\n"
+        // for values between 0 and 1, omit the number of pounds
+        + "    0.x: >%%pence-alone>;\n"
+        // this rule set is used to show shillings and pence.  It multiplies
+        // the fractional part of the number by 240 (the number of pence in a
+        // pound) and uses %%shillings-and-pence-implementation to format
+        // the result
+        + "%%shillings-and-pence:\n"
+        + "    240: <%%shillings-and-pence-implementation<;\n"
+        // this rule set is used to show shillings and pence when there are
+        // no pounds.  It also multiplies the value by 240, and then it uses
+        // %%pence-alone-implementation to format the result.
+        + "%%pence-alone:\n"
+        + "    240: <%%pence-alone-implementation<;\n"
+        // this rule set formats a number of pence when we know we also
+        // have pounds.  We always show shillings (with a 0 if necessary),
+        // but only show pence if the value isn't an even number of shillings
+        + "%%shillings-and-pence-implementation:\n"
+        + "    0/; 0/=0=;\n"
+        + "    12/12: <0</[>0>];\n"
+        // this rule set formats a number of pence when we know there are
+        // no pounds.  Values less than a shilling are shown with "d." (the
+        // abbreviation for pence), and values greater than a shilling are
+        // shown with a shilling bar (and without pence when the value is
+        // an even number of shillings)
+        + "%%pence-alone-implementation:\n"
+        + "    =0= d.;\n"
+        + "    12/12: <0</[>0>];\n";
+
+    //========================================================================
+    // Alternate numeration systems
+    //
+    // These examples show how RuleBasedNumberFormat can be used to format
+    // numbers using non-positional numeration systems.
+    //========================================================================
+
+    /**
+     * Arabic digits.  This example formats numbers in Arabic numerals.
+     * Normally, you'd do this with DecimalFormat, but this shows that
+     * RuleBasedNumberFormat can handle it too.
+     */
+    public static final String arabicNumerals =
+        "0; 1; 2; 3; 4; 5; 6; 7; 8; 9;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<,>>>;\n"
+        + "1,000,000: <<,>>>;\n"
+        + "1,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000: <<,>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n"
+        + "-x: ->>;\n"
+        + "x.x: <<.>>;";
+
+    /**
+     * Words for digits.  Follows the same pattern as the Arabic-numerals
+     * example above, but uses words for the various digits (e.g., 123 comes
+     * out as "one two three").
+     */
+    public static final String wordsForDigits =
+        "-x: minus >>;\n"
+        + "x.x: << point >>;\n"
+        + "zero; one; two; three; four; five; six;\n"
+        + "    seven; eight; nine;\n"
+        + "10: << >>;\n"
+        + "100: << >>>;\n"
+        + "1000: <<, >>>;\n"
+        + "1,000,000: <<, >>>;\n"
+        + "1,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000: <<, >>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * This example formats numbers using Chinese characters in the Arabic
+     * place-value method.  This was used historically in China for a while.
+     */
+    public static final String chinesePlaceValue =
+        "\u3007; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+        + "10: <<>>;\n"
+        + "100: <<>>>;\n"
+        + "1000: <<>>>;\n"
+        + "1,000,000: <<>>>;\n"
+        + "1,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000: <<>>>;\n"
+        + "1,000,000,000,000,000: =#,##0=;\n";
+
+    /**
+     * Roman numerals.  This example has two variants: %modern shows how large
+     * numbers are usually handled today; %historical ses the older symbols for
+     * thousands.
+     */
+    public static final String romanNumerals =
+        "%historical:\n"
+        + "    =%modern=;\n"
+               // in early Roman numerals, 1,000 was shown with a circle
+               // bisected by a vertical line.  Additional thousands were
+               // shown by adding more concentric circles, and fives were
+               // shown by cutting the symbol for next-higher power of 10
+               // in half (the letter D for 500 evolved from this).
+               // We could go beyond 40,000, but Unicode doesn't encode
+               // the symbols for higher numbers/
+        + "    1000: \u2180[>>]; 2000: \u2180\u2180[>>]; 3000: \u2180\u2180\u2180[>>]; 4000: \u2180\u2181[>>];\n"
+        + "    5000: \u2181[>>]; 6000: \u2181\u2180[>>]; 7000: \u2181\u2180\u2180[>>];\n"
+        + "    8000: \u2181\u2180\u2180\u2180[>>]; 9000: \u2180\u2182[>>];\n"
+        + "    10,000: \u2182[>>]; 20,000: \u2182\u2182[>>]; 30,000: \u2182\u2182\u2182[>>];\n"
+        + "    40,000: =#,##0=;\n"
+        + "%modern:\n"
+        + "    ; I; II; III; IV; V; VI; VII; VIII; IX;\n"
+        + "    10: X[>>]; 20: XX[>>]; 30: XXX[>>]; 40: XL[>>]; 50: L[>>];\n"
+        + "    60: LX[>>]; 70: LXX[>>]; 80: LXXX[>>]; 90: XC[>>];\n"
+        + "    100: C[>>]; 200: CC[>>]; 300: CCC[>>]; 400: CD[>>]; 500: D[>>];\n"
+        + "    600: DC[>>]; 700: DCC[>>]; 800: DCCC[>>]; 900: CM[>>];\n"
+               // in modern Roman numerals, high numbers are generally shown
+               // by placing a bar over the letters for the lower numbers:
+               // the bar multiplied a letter's value by 1,000
+        + "    1000: M[>>]; 2000: MM[>>]; 3000: MMM[>>]; 4000: MV\u0306[>>];\n"
+        + "    5000: V\u0306[>>]; 6000: V\u0306M[>>]; 7000: V\u0306MM[>>];\n"
+        + "    8000: V\u0306MMM[>>]; 9000: MX\u0306[>>];\n"
+        + "    10,000: X\u0306[>>]; 20,000: X\u0306X\u0306[>>]; 30,000: X\u0306X\u0306X\u0306[>>];\n"
+        + "    40,000: X\u0306L\u0306[>>]; 50,000: L\u0306[>>]; 60,000: L\u0306X\u0306[>>];\n"
+        + "    70,000: L\u0306X\u0306X\u0306[>>]; 80,000: L\u0306X\u0306X\u0306X\u0306[>>];\n"
+        + "    90,000: X\u0306C\u0306[>>];\n"
+        + "    100,000: C\u0306[>>]; 200,000: C\u0306C\u0306[>>]; 300,000: C\u0306C\u0306[>>];\n"
+        + "    400,000: C\u0306D\u0306[>>]; 500,000: D\u0306[>>]; 600,000: D\u0306C\u0306[>>];\n"
+        + "    700,000: D\u0306C\u0306C\u0306[>>]; 800,000: D\u0306C\u0306C\u0306C\u0306[>>];\n"
+        + "    900,000: =#,##0=;\n";
+
+    /**
+     * Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers
+     * used the letter of their alphabet as numerals.  The first nine letters of
+     * the alphabet repesented the values from 1 to 9, the second nine letters the
+     * multiples of 10, and the remaining letters the multiples of 100.  Since they
+     * ran out of letters at 400, the remaining multiples of 100 were represented
+     * using combinations of the existing letters for the hundreds.  Numbers were
+     * distinguished from words in a number of different ways: the way shown here
+     * uses a single mark after a number consisting of one letter, and a double
+     * mark between the last two letters of a number consisting of two or more
+     * letters.  Two dots over a letter multiplied its value by 1,000.  Also, since
+     * the letter for 10 is the first letter of God's name and the letters for 5 and 6
+     * are letters in God's name, which wasn't supposed to be written or spoken, 15 and
+     * 16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.
+     */
+    public static final String hebrewAlphabetic =
+        // letters for the ones
+        "%%ones:\n"
+        + "    (no zero); \u05d0; \u05d1; \u05d2; \u05d3; \u05d4; \u05d5; \u05d6; \u05d7; \u05d8;\n"
+        // letters for the tens
+        + "%%tens:\n"
+        + "    ; \u05d9; \u05db; \u05dc; \u05de; \u05e0; \u05e1; \u05e2; \u05e4; \u05e6;\n"
+        // letters for the first four hundreds
+        + "%%hundreds:\n"
+        + "    ; \u05e7; \u05e8; \u05e9; \u05ea;\n"
+        // this rule set is used to write the combination of the tens and ones digits
+        // when we know that no other digits precede them: they put the numeral marks
+        // in the right place and properly handle 15 and 16 (I'm using the mathematical
+        // prime characters for the numeral marks because my Unicode font doesn't
+        // include the real Hebrew characters, which look just like the prime marks)
+        + "%%tens-and-ones:\n"
+               // for values less than 10, just use %%ones and put the numeral mark
+               // afterward
+        + "    =%%ones=\u2032;\n"
+               // put the numeral mark at the end for 10, but in the middle for
+               // 11 through 14
+        + "    10: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+               // special-case 15 and 16
+        + "    15: \u05d8\u2033\u05d5; 16: \u05d8\u2033\u05d6;\n"
+               // go back to the normal method at 17
+        + "    17: <%%tens<\u2033>%%ones>;\n"
+               // repeat the rules for 10 and 11 to cover the values from 20 to 99
+        + "    20: <%%tens<\u2032; <%%tens<\u2033>%%ones>;\n"
+        // this rule set is used to format numbers below 1,000.  It relies on
+        // %%tens-and-ones to format the tens and ones places, and adds logic
+        // to handle the high hundreds and the numeral marks when there is no
+        // tens digit.  Notice how the rules are paired: all of these pairs of
+        // rules take advantage of the rollback rule: if the value (between 100
+        // and 499) is an even multiple of 100, the rule for 100 is used; otherwise,
+        // the rule for 101 (the following rule) is used.  The first rule in each
+        // pair (the one for the even multiple) places the numeral mark in a different
+        // spot than the second rule in each pair (which knows there are more digits
+        // and relies on the rule supplying them to also supply the numeral mark).
+        // The call to %%null in line 10 is there simply to invoke the rollback
+        // rule.
+        + "%%low-order:\n"
+               // this rule is only called when there are other characters before.
+               // It places the numeral mark before the last digit
+        + "    \u2033=%%ones=;\n"
+               // the rule for 10 places the numeral mark before the 10 character
+               // (because we know it's the last character); the rule for 11 relies
+               // on %%tens-and-ones to place the numeral mark
+        + "    10: \u2033<%%tens<; =%%tens-and-ones=>%%null>;\n"
+               // the rule for 100 places the numeral mark before the 100 character
+               // (we know it's the last character); the rule for 101 recurses to
+               // fill in the remaining digits and the numeral mark
+        + "    100: <%%hundreds<\u2032; <%%hundreds<>>;\n"
+               // special-case the hundreds from 500 to 900 because they consist of
+               // more than one character
+        + "    500: \u05ea\u2033\u05e7; \u05ea\u05e7>>;\n"
+        + "    600: \u05ea\u2033\u05e8; \u05ea\u05e8>>;\n"
+        + "    700: \u05ea\u2033\u05e9; \u05ea\u05e9>>;\n"
+        + "    800: \u05ea\u2033\u05ea; \u05ea\u05ea>>;\n"
+        + "    900: \u05ea\u05ea\u2033\u05e7; \u05ea\u05ea\u05e7>>;\n"
+        // this rule set is used to format values of 1,000 or more.  Here, we don't
+        // worry about the numeral mark, and we add two dots (the Unicode combining
+        // diaeresis character) to ever letter
+        + "%%high-order:\n"
+               // put the ones digit, followed by the diaeresis
+        + "    =%%ones=\u0308;\n"
+               // the tens can be handled with recursion
+        + "    10: <%%tens<\u0308[>>];\n"
+               // still have to special-case 15 and 16
+        + "    15: \u05d8\u0308\u05d5\u0308; 16: \u05d8\u003078\u05d6\u0308;\n"
+               // back to the regular rules at 17
+        + "    17: <%%tens<\u0308[>>];\n"
+               // the hundreds with the dots added (and without worrying about
+               // placing the numeral mark)
+        + "    100: <%%hundreds<\u0308[>>];\n"
+        + "    500: \u05ea\u0308\u05e7\u0308[>>];\n"
+        + "    600: \u05ea\u0308\u05e8\u0308[>>];\n"
+        + "    700: \u05ea\u0308\u05e9\u0308[>>];\n"
+        + "    800: \u05ea\u0308\u05ea\u0308[>>];\n"
+        + "    900: \u05ea\u0308\u05ea\u0308\u05e7\u0308[>>];\n"
+        // this rule set doesn't do anything; it's used by some other rules to
+        // invoke the rollback rule
+        + " %%null:\n"
+        + "    ;\n"
+        // the main rule set.
+        + "%main:\n"
+               // for values below 10, just output the letter and the numeral mark
+        + "    =%%ones=\u2032;\n"
+               // for values from 10 to 99, use %%tens-and-ones to do the formatting
+        + "    10: =%%tens-and-ones=;\n"
+               // for values from 100 to 999, use %%low-order to do the formatting
+        + "    100: =%%low-order=;\n"
+               // for values of 1,000 and over, use %%high-order to do the formatting
+        + "    1000: <%%high-order<[>%%low-order>];\n";
+
+    /**
+     * Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals,
+     * also used the letters of their alphabet as numerals.  There are three now-
+     * obsolete Greek letters that are used as numerals; many fonts don't have them.
+     * Large numbers were handled many different ways; the way shown here divides
+     * large numbers into groups of four letters (factors of 10,000), and separates
+     * the groups with the capital letter mu (for myriad).  Capital letters are used
+     * for values below 10,000; small letters for higher numbers (to make the capital
+     * mu stand out).
+     */
+    public static final String greekAlphabetic =
+        // this rule set is used for formatting numbers below 10,000.  It uses
+        // capital letters.
+        "%%low-order:\n"
+        + "    (no zero); \u0391; \u0392; \u0393; \u0394; \u0395; \u03dc; \u0396; \u0397; \u0398;\n"
+        + "    10: \u0399[>>]; 20: \u039a[>>]; 30: \u039b[>>]; 40: \u039c[>>]; 50: \u039d[>>];\n"
+        + "    60: \u039e[>>]; 70: \u039f[>>]; 80: \u03a0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03a1[>>]; 200: \u03a3[>>]; 300: \u03a4[>>]; 400: \u03a5[>>];\n"
+        + "    500: \u03a6[>>]; 600: \u03a7[>>]; 700: \u03a8[>>]; 800: \u03a9[>>];\n"
+        + "    900: \u03e0[>>];\n"
+               // the thousands are represented by the same numbers as the ones, but
+               // with a comma-like mark added to their left shoulder
+        + "    1000: \u0391\u0313[>>]; 2000: \u0392\u0313[>>]; 3000: \u0393\u0313[>>];\n"
+        + "    4000: \u0394\u0313[>>]; 5000: \u0395\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u0396\u0313[>>]; 8000: \u0397\u0313[>>]; 9000: \u0398\u0313[>>];\n"
+        // this rule set is the same as above, but uses lowercase letters.  It is used
+        // for formatting the groups in numbers above 10,000.
+        + "%%high-order:\n"
+        + "    (no zero); \u03b1; \u03b2; \u03b3; \u03b4; \u03b5; \u03dc; \u03b6; \u03b7; \u03b8;\n"
+        + "    10: \u03b9[>>]; 20: \u03ba[>>]; 30: \u03bb[>>]; 40: \u03bc[>>]; 50: \u03bd[>>];\n"
+        + "    60: \u03be[>>]; 70: \u03bf[>>]; 80: \u03c0[>>]; 90: \u03de[>>];\n"
+        + "    100: \u03c1[>>]; 200: \u03c3[>>]; 300: \u03c4[>>]; 400: \u03c5[>>];\n"
+        + "    500: \u03c6[>>]; 600: \u03c7[>>]; 700: \u03c8[>>]; 800: \u03c9[>>];\n"
+        + "    900: \u03c0[>>];\n"
+        + "    1000: \u03b1\u0313[>>]; 2000: \u03b2\u0313[>>]; 3000: \u03b3\u0313[>>];\n"
+        + "    4000: \u03b4\u0313[>>]; 5000: \u03b5\u0313[>>]; 6000: \u03dc\u0313[>>];\n"
+        + "    7000: \u03b6\u0313[>>]; 8000: \u03b7\u0313[>>]; 9000: \u03b8\u0313[>>];\n"
+        // the main rule set
+        + "%main:\n"
+               // for values below 10,000, just use %%low-order
+        + "    =%%low-order=;\n"
+               // for values above 10,000, split into two groups of four digits
+               // and format each with %%high-order (putting an M in betwen)
+        + "    10,000: <%%high-order<\u039c>%%high-order>;\n"
+               // for values above 100,000,000, add another group onto the front
+               // and another M
+        + "    100,000,000: <%%high-order<\u039c>>\n";
+
+    /**
+     * A list of all the sample rule sets, used by the demo program.
+     */
+    public static final String[] sampleRuleSets =
+        { usEnglish,
+          ukEnglish,
+          spanish,
+          french,
+          swissFrench,
+          german,
+          italian,
+          swedish,
+          dutch,
+          japanese,
+          greek,
+          russian,
+          hebrew,
+          ordinal,
+          message1,
+          dollarsAndCents,
+          decimalAsFraction,
+          closestFraction,
+          stock,
+          abbEnglish,
+          units,
+          message2,
+          dozens,
+          durationInSeconds,
+          durationInHours,
+          poundsShillingsAndPence,
+          arabicNumerals,
+          wordsForDigits,
+          chinesePlaceValue,
+          romanNumerals,
+          hebrewAlphabetic,
+          greekAlphabetic };
+
+    /**
+     * The displayable names for all the sample rule sets, in the same order as
+     * the preceding array.
+     */
+    public static final String[] sampleRuleSetNames =
+        { "English (US)",
+          "English (UK)",
+          "Spanish",
+          "French (France)",
+          "French (Switzerland)",
+          "German",
+          "Italian",
+          "Swedish",
+          "Dutch",
+          "Japanese",
+          "Greek",
+          "Russian",
+          "Hebrew",
+          "English ordinal abbreviations",
+          "Simple message formatting",
+          "Dollars and cents",
+          "Decimals as fractions",
+          "Closest fraction",
+          "Stock prices",
+          "Abbreviated US English",
+          "Changing dimensions",
+          "Complex message formatting",
+          "Dozens",
+          "Duration (value in seconds)",
+          "Duration (value in hours)",
+          "Pounds, shillings, and pence",
+          "Arabic numerals",
+          "Words for digits",
+          "Chinese place-value notation",
+          "Roman numerals",
+          "Hebrew ahlphabetic numerals",
+          "Greek alphabetic numerals" };
+
+    /**
+     * The base locale for each of the sample rule sets.  The locale is used to
+     * determine DecimalFormat behavior, lenient-parse behavior, and text-display
+     * selection (we have a hack in here to allow display of non-Latin scripts).
+     * Null means the locale setting is irrelevant and the default can be used.
+     */
+    public static final Locale[] sampleRuleSetLocales =
+        { Locale.US,
+          Locale.UK,
+          new Locale("es", "", ""),
+          Locale.FRANCE,
+          new Locale("fr", "CH", ""),
+          Locale.GERMAN,
+          Locale.ITALIAN,
+          new Locale("sv", "", ""),
+          new Locale("nl", "", ""),
+          Locale.JAPANESE,
+          new Locale("el", "", ""),
+          new Locale("ru", "", ""),
+          new Locale("iw", "", ""),
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          Locale.US,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.ENGLISH,
+          null,
+          Locale.ENGLISH,
+          Locale.ENGLISH,
+          null,
+          null,
+          Locale.UK,
+          null,
+          Locale.ENGLISH,
+          new Locale("zh", "", ""),
+          null,
+          new Locale("iw", "", ""),
+          new Locale("el", "", ""),
+          null };
+
+        public static final String[] sampleRuleSetCommentary = {
+            "This demonstration version of the "
+            + "U.S. English spellout rules has four variants: 1) %simplified is a "
+            + "set of rules showing the simple method of spelling out numbers in "
+            + "English: 289 is formatted as \"two hundred eighty-nine\".  2) %alt-teens "
+            + "is the same as %simplified, except that values between 1,000 and 9,999 "
+            + "whose hundreds place isn't zero are formatted in hundreds.  For example, "
+            + "1,983 is formatted as \"nineteen hundred eighty-three,\" and 2,183 is "
+            + "formatted as \"twenty-one hundred eighty-three,\" but 2,083 is still "
+            + "formatted as \"two thousand eighty-three.\"  3) %ordinal formats the "
+            + "values as ordinal numbers in English (e.g., 289 is \"two hundred eighty-"
+            + "ninth\").  4) %default uses a more complicated algorithm to format "
+            + "numbers in a more natural way: 289 is formatted as \"two hundred AND "
+            + "eighty-nine\" and commas are inserted between the thousands groups for "
+            + "values above 100,000.",
+
+            "U.K. English has one significant "
+            + "difference from U.S. English: the names for values of 1,000,000,000 "
+            + "and higher.  In American English, each successive \"-illion\" is 1,000 "
+            + "times greater than the preceding one: 1,000,000,000 is \"one billion\" "
+            + "and 1,000,000,000,000 is \"one trillion.\"  In British English, each "
+            + "successive \"-illion\" is one million times greater than the one before: "
+            + "\"one billion\" is 1,000,000,000,000 (or what Americans would call a "
+            + "\"trillion\"), and \"one trillion\" is 1,000,000,000,000,000,000.  "
+            + "1,000,000,000 in British English is \"one thousand million.\"  (This "
+            + "value is sometimes called a \"milliard,\" but this word seems to have "
+            + "fallen into disuse.)",
+
+            "The Spanish rules are quite similar to "
+            + "the English rules, but there are some important differences: "
+            + "First, we have to provide separate rules for most of the twenties "
+            + "because the ones digit frequently picks up an accent mark that it "
+            + "doesn't have when standing alone.  Second, each multiple of 100 has "
+            + "to be specified separately because the multiplier on 100 very often "
+            + "changes form in the contraction: 500 is \"quinientos,\" not "
+            + "\"cincocientos.\"  In addition, the word for 100 is \"cien\" when "
+            + "standing alone, but changes to \"ciento\" when followed by more digits.  "
+            + "There also some other differences.",
+
+            "French adds some interesting quirks of its "
+            + "own: 1) The word \"et\" is interposed between the tens and ones digits, "
+            + "but only if the ones digit if 1: 20 is \"vingt,\" and 2 is \"vingt-deux,\" "
+            + "but 21 is \"vingt-et-un.\"  2)  There are no words for 70, 80, or 90.  "
+            + "\"quatre-vingts\" (\"four twenties\") is used for 80, and values proceed "
+            + "by score from 60 to 99 (e.g., 73 is \"soixante-treize\" [\"sixty-thirteen\"]).  "
+            + "Numbers from 1,100 to 1,199 are rendered as hundreds rather than "
+            + "thousands: 1,100 is \"onze cents\" (\"eleven hundred\"), rather than "
+            + "\"mille cent\" (\"one thousand one hundred\")",
+
+            "Swiss French differs from French French "
+            + "in that it does have words for 70, 80, and 90.  This rule set shows them, "
+            + "and is simpler as a result.",
+
+            "German also adds some interesting "
+            + "characteristics.  For values below 1,000,000, numbers are customarily "
+            + "written out as a single word.  And the ones digit PRECEDES the tens "
+            + "digit (e.g., 23 is \"dreiundzwanzig,\" not \"zwanzigunddrei\").",
+
+            "Like German, most Italian numbers are "
+            + "written as single words.  What makes these rules complicated is the rule "
+            + "that says that when a word ending in a vowel and a word beginning with "
+            + "a vowel are combined into a compound, the vowel is dropped from the "
+            + "end of the first word: 180 is \"centottanta,\" not \"centoottanta.\"  "
+            + "The complexity of this rule set is to produce this behavior.",
+
+            "Spellout rules for Swedish.",
+
+            "Spellout rules for Dutch.  Notice that in Dutch, as in German,"
+            + "the ones digit precedes the tens digit.",
+
+            "In Japanese, there really isn't any "
+            + "distinction between a number written out in digits and a number "
+            + "written out in words: the ideographic characters are both digits "
+            + "and words.  This rule set provides two variants:  %traditional "
+            + "uses the traditional CJK numerals (which are also used in China "
+            + "and Korea).  %financial uses alternate ideographs for many numbers "
+            + "that are harder to alter than the traditional numerals (one could "
+            + "fairly easily change a one to "
+            + "a three just by adding two strokes, for example).  This is also done in "
+            + "the other countries using Chinese idographs, but different ideographs "
+            + "are used in those places.",
+
+            "Again in Greek we have to supply the words "
+            + "for the multiples of 100 because they can't be derived algorithmically.  "
+            + "Also, the tens dgit changes form when followed by a ones digit: an "
+            + "accent mark disappears from the tens digit and moves to the ones digit.  "
+            + "Therefore, instead of using the [] notation, we actually have to use "
+            + "two separate rules for each multiple of 10 to show the two forms of "
+            + "the word.",
+
+            "Spellout rules for Russian.",
+
+            "Spellout rules for Hebrew.  Hebrew actually has inflected forms for "
+            + "most of the lower-order numbers.  The masculine forms are shown "
+            + "here.",
+
+            "This rule set adds an English ordinal abbreviation to the end of a "
+            + "number.  For example, 2 is formatted as \"2nd\".  Parsing doesn't work with "
+            + "this rule set.  To parse, use DecimalFormat on the numeral.",
+
+            "This is a simple message-formatting example.  Normally one would "
+            + "use ChoiceFormat and MessageFormat to do something this simple, "
+            + "but this shows it could be done with RuleBasedNumberFormat too.  "
+            + "A message-formatting example that might work better with "
+            + "RuleBasedNumberFormat appears later.",
+
+            "The next few examples demonstrate fraction handling.  "
+            + "This example formats a number in one of the two styles often used "
+            + "on checks.  %dollars-and-hundredths formats cents as hundredths of "
+            + "a dollar (23.40 comes out as \"twenty-three and 40/100 dollars\").  "
+            + "%dollars-and-cents formats in dollars and cents (23.40 comes out as "
+            + "\"twenty-three dollars and forty cents\")",
+
+            "This rule set shows the fractional part of the number as a fraction "
+            + "with a power of 10 as the denominator.  Some languages don't spell "
+            + "out the fractional part of a number as \"point one two three,\" but "
+            + "always render it as a fraction.  If we still want to treat the fractional "
+            + "part of the number as a decimal, then the fraction's denominator "
+            + "is always a power of 10.  This example does that: 23.125 is formatted "
+            + "as \"twenty-three and one hundred twenty-five thousandths\" (as opposed "
+            + "to \"twenty-three point one two five\" or \"twenty-three and one eighth\").",
+
+            "Number with closest fraction.  This example formats a value using "
+            + "numerals, but shows the fractional part as a ratio (fraction) rather "
+            + "than a decimal.  The fraction always has a denominator between 2 and 10.",
+
+            "American stock-price formatting.  Non-integral stock prices are still "
+            + "generally shown in eighths or sixteenths of dollars instead of dollars "
+            + "and cents.  This example formats stock prices in this way if possible, "
+            + "and in dollars and cents if not.",
+
+            "The next few examples demonstrate using a RuleBasedNumberFormat to "
+            + "change the units a value is denominated in depending on its magnitude.  "
+            + "The example shows large numbers the way they often appear is nwespapers: "
+            + "1,200,000 is formatted as \"1.2 million\".",
+
+            "This example takes a number of meters and formats it in whatever unit "
+            + "will produce a number with from one to three digits before the decimal "
+            + "point.  For example, 230,000 is formatted as \"230 km\".",
+
+            "A more complicated message-formatting example.  Here, in addition to "
+            + "handling the singular and plural versions of the word, the value is "
+            + "denominated in bytes, kilobytes, or megabytes depending on its magnitude.  "
+            + "Also notice that it correctly treats a kilobyte as 1,024 bytes (not 1,000), "
+            + "and a megabyte as 1,024 kilobytes (not 1,000).",
+
+            "This example formats a number in dozens and gross.  This is intended to "
+            + "demonstrate how this rule set can be used to format numbers in systems "
+            + "other than base 10.  The \"/12\" after the rules' base values controls this.  "
+            + "Also notice that the base doesn't have to be consistent throughout the "
+            + "whole rule set: we go back to base 10 for values over 1,000.",
+
+            "The next few examples show how a single value can be divided up into major "
+            + "and minor units that don't relate to each other by a factor of 10.  "
+            + "This example formats a number of seconds in sexagesimal notation "
+            + "(i.e., hours, minutes, and seconds).  %with-words formats it with "
+            + "words (3740 is \"1 hour, 2 minutes, 20 seconds\") and %in-numerals "
+            + "formats it entirely in numerals (3740 is \"1:02:20\").",
+
+            "This example formats a number of hours in sexagesimal notation (i.e., "
+            + "hours, minutes, and seconds).  %with-words formats the value using "
+            + "words for the units, and %in-numerals formats the value using only "
+            + "numerals.",
+
+            "This rule set formats a number of pounds as pounds, shillings, and "
+            + "pence in the old English system of currency.",
+
+            "These examples show how RuleBasedNumberFormat can be used to format "
+            + "numbers using non-positional numeration systems.  "
+            + "This example formats numbers in Arabic numerals.  "
+            + "Normally, you'd do this with DecimalFormat, but this shows that "
+            + "RuleBasedNumberFormat can handle it too.",
+
+            "This example follows the same pattern as the Arabic-numerals "
+            + "example, but uses words for the various digits (e.g., 123 comes "
+            + "out as \"one two three\").",
+
+            "This example formats numbers using Chinese characters in the Arabic "
+            + "place-value method.  This was used historically in China for a while.",
+
+            "Roman numerals.  This example has two variants: %modern shows how large "
+            + "numbers are usually handled today; %historical ses the older symbols for "
+            + "thousands.  Not all of the characters are displayable with most fonts.",
+
+            "Hebrew alphabetic numerals.  Before adoption of Arabic numerals, Hebrew speakers "
+            + "used the letter of their alphabet as numerals.  The first nine letters of "
+            + "the alphabet repesented the values from 1 to 9, the second nine letters the "
+            + "multiples of 10, and the remaining letters the multiples of 100.  Since they "
+            + "ran out of letters at 400, the remaining multiples of 100 were represented "
+            + "using combinations of the existing letters for the hundreds.  Numbers were "
+            + "distinguished from words in a number of different ways: the way shown here "
+            + "uses a single mark after a number consisting of one letter, and a double "
+            + "mark between the last two letters of a number consisting of two or more "
+            + "letters.  Two dots over a letter multiplied its value by 1,000.  Also, since "
+            + "the letter for 10 is the first letter of God's name and the letters for 5 and 6 "
+            + "are letters in God's name, which wasn't supposed to be written or spoken, 15 and "
+            + "16 were usually written as 9 + 6 and 9 + 7 instead of 10 + 5 and 10 + 6.",
+
+            "Greek alphabetic numerals.  The Greeks, before adopting the Arabic numerals, "
+            + "also used the letters of their alphabet as numerals.  There are three now-"
+            + "obsolete Greek letters that are used as numerals; many fonts don't have them.  "
+            + "Large numbers were handled many different ways; the way shown here divides "
+            + "large numbers into groups of four letters (factors of 10,000), and separates "
+            + "the groups with the capital letter mu (for myriad).  Capital letters are used "
+            + "for values below 10,000; small letters for higher numbers (to make the capital "
+            + "mu stand out).",
+
+            "This is a custom (user-defined) rule set."
+        };
+}
diff --git a/src/com/ibm/demo/translit/Demo.java b/src/com/ibm/demo/translit/Demo.java
new file mode 100755
index 0000000..83b91fb
--- /dev/null
+++ b/src/com/ibm/demo/translit/Demo.java
@@ -0,0 +1,266 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/translit/Attic/Demo.java,v $ 
+ * $Date: 2000/03/10 03:47:44 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo.translit;
+import java.applet.*;
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import com.ibm.text.components.*;
+import com.ibm.text.*;
+
+/**
+ * A frame that allows the user to experiment with keyboard
+ * transliteration.  This class has a main() method so it can be run
+ * as an application.  The frame contains an editable text component
+ * and uses keyboard transliteration to process keyboard events.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: Demo.java,v $ $Revision: 1.4 $ $Date: 2000/03/10 03:47:44 $
+ */
+public class Demo extends Frame {
+
+    static final boolean DEBUG = false;
+
+    Transliterator translit = null;
+
+    boolean compound = false;
+    Transliterator[] compoundTranslit = new Transliterator[MAX_COMPOUND];
+    static final int MAX_COMPOUND = 128;
+    int compoundCount = 0;
+
+    TransliteratingTextComponent text = null;
+
+    Menu translitMenu;
+    CheckboxMenuItem translitItem;
+    CheckboxMenuItem noTranslitItem;
+
+    static final String NO_TRANSLITERATOR = "None";
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    public static void main(String[] args) {
+        Frame f = new Demo(600, 200);
+        f.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                System.exit(0);
+            }
+        });
+        f.setVisible(true);
+    }
+
+	public Demo(int width, int height) {
+        super("Transliteration Demo");
+
+        initMenus();
+
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                handleClose();
+            }
+        });
+        
+        text = new TransliteratingTextComponent();
+        Font font = new Font("serif", Font.PLAIN, 48);
+        text.setFont(font);
+        text.setSize(width, height);
+        text.setVisible(true);
+        text.setText("\u03B1\u05D0\u3042\u4E80");
+        add(text);
+
+        setSize(width, height);
+    }
+
+    private void initMenus() {
+        MenuBar mbar;
+        Menu menu;
+        MenuItem mitem;
+        CheckboxMenuItem citem;
+        
+        setMenuBar(mbar = new MenuBar());
+        mbar.add(menu = new Menu("File"));
+        menu.add(mitem = new MenuItem("Quit"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleClose();
+            }
+        });
+
+        final ItemListener setTransliteratorListener = new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // Don't let the current transliterator be deselected.
+                    // Just reselect it.
+                    item.setState(true);
+                } else if (compound) {
+                    // Adding an item to a compound transliterator
+                    handleAddToCompound(item.getLabel());
+                } else if (item != translitItem) {
+                    // Deselect previous choice.  Don't need to call
+                    // setState(true) on new choice.
+                    translitItem.setState(false);
+                    translitItem = item;
+                    handleSetTransliterator(item.getLabel());
+                }
+            }
+        };
+
+        translit = null;
+        mbar.add(translitMenu = new Menu("Transliterator"));
+        translitMenu.add(translitItem = noTranslitItem =
+                         new CheckboxMenuItem(NO_TRANSLITERATOR, true));
+        noTranslitItem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                // Can't uncheck None -- any action here sets None to true
+                setNoTransliterator();
+            }
+        });
+
+        translitMenu.addSeparator();
+
+        translitMenu.add(citem = new CheckboxMenuItem("Compound"));
+        citem.addItemListener(new ItemListener() {
+            public void itemStateChanged(ItemEvent e) {
+                CheckboxMenuItem item = (CheckboxMenuItem) e.getSource();
+                if (e.getStateChange() == ItemEvent.DESELECTED) {
+                    // If compound gets deselected, then select NONE
+                    setNoTransliterator();
+                } else if (!compound) {
+                    // Switching from non-compound to compound
+                    translitItem.setState(false);
+                    translitItem = item;
+                    translit = null;
+                    compound = true;
+                    compoundCount = 0;
+                    for (int i=0; i<MAX_COMPOUND; ++i) {
+                        compoundTranslit[i] = null;
+                    }
+                }
+            }
+        });
+      
+        translitMenu.addSeparator();
+
+        for (Enumeration e=getSystemTransliteratorNames().elements();
+             e.hasMoreElements(); ) {
+            String s = (String) e.nextElement();
+            translitMenu.add(citem = new CheckboxMenuItem(s));
+            citem.addItemListener(setTransliteratorListener);
+        }
+
+        mbar.add(menu = new Menu("Batch"));
+        menu.add(mitem = new MenuItem("Transliterate Selection"));
+        mitem.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                handleBatchTransliterate();
+            }
+        });
+    }
+
+    /**
+     * Get a sorted list of the system transliterators.
+     */
+    private static Vector getSystemTransliteratorNames() {
+        Vector v = new Vector();
+        for (Enumeration e=Transliterator.getAvailableIDs();
+             e.hasMoreElements(); ) {
+            v.addElement(e.nextElement());
+        }
+        // Insertion sort, O(n^2) acceptable for small n
+        for (int i=0; i<(v.size()-1); ++i) {
+            String a = (String) v.elementAt(i);
+            for (int j=i+1; j<v.size(); ++j) {
+                String b = (String) v.elementAt(j);
+                if (a.compareTo(b) > 0) {
+                    v.setElementAt(b, i);
+                    v.setElementAt(a, j);
+                    a = b;
+                }
+            }
+        }
+        return v;
+    }
+
+    private void setNoTransliterator() {
+        translitItem = noTranslitItem;
+        noTranslitItem.setState(true);
+        handleSetTransliterator(noTranslitItem.getLabel());
+        compound = false;
+        for (int i=0; i<translitMenu.getItemCount(); ++i) {
+            MenuItem it = translitMenu.getItem(i);
+            if (it != noTranslitItem && it instanceof CheckboxMenuItem) {
+                ((CheckboxMenuItem) it).setState(false);
+            }
+        }
+    }
+
+    private void handleAddToCompound(String name) {
+        if (compoundCount < MAX_COMPOUND) {
+            compoundTranslit[compoundCount] = decodeTranslitItem(name);
+            ++compoundCount;
+            Transliterator t[] = new Transliterator[compoundCount];
+            System.arraycopy(compoundTranslit, 0, t, 0, compoundCount);
+            translit = new CompoundTransliterator(t);
+            text.setTransliterator(translit);
+        }
+    }
+
+    private void handleSetTransliterator(String name) {
+        translit = decodeTranslitItem(name);
+        text.setTransliterator(translit);
+    }
+
+    /**
+     * Decode a menu item that looks like <translit name>.
+     */
+    private static Transliterator decodeTranslitItem(String name) {
+        return (name.equals(NO_TRANSLITERATOR))
+            ? null : Transliterator.getInstance(name);
+    }
+
+    private void handleBatchTransliterate() {
+        if (translit == null) {
+            return;
+        }
+
+        int start = text.getSelectionStart();
+        int end = text.getSelectionEnd();
+        ReplaceableString s =
+            new ReplaceableString(text.getText().substring(start, end));
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+            log.append('"' + s.toString() + "\" (start " + start +
+                       ", end " + end + ") -> \"");
+        }
+
+        translit.transliterate(s);
+        String str = s.toString();
+
+        if (DEBUG) {
+            log.append(str + "\"");
+            System.out.println("Batch " + translit.getID() + ": " + log.toString());
+        }
+
+        text.replaceRange(str, start, end);
+        text.select(start, start + str.length());
+    }
+
+    private void handleClose() {
+        dispose();
+    }
+}
diff --git a/src/com/ibm/demo/translit/DemoApplet.java b/src/com/ibm/demo/translit/DemoApplet.java
new file mode 100755
index 0000000..77fb815
--- /dev/null
+++ b/src/com/ibm/demo/translit/DemoApplet.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/translit/Attic/DemoApplet.java,v $ 
+ * $Date: 2000/03/10 03:47:44 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.demo.translit;
+import java.awt.*;
+import java.awt.event.*;
+import java.applet.*;
+import com.ibm.text.components.AppletFrame;
+
+/**
+ * A simple Applet that shows a button.  When pressed, the button
+ * shows the DemoAppletFrame.  This Applet is meant to be embedded
+ * in a web page.
+ *
+ * <p>Copyright (c) IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: DemoApplet.java,v $ $Revision: 1.4 $ $Date: 2000/03/10 03:47:44 $
+ */
+public class DemoApplet extends Applet {
+
+    Demo frame = null;
+    
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    public static void main(String args[]) {
+        final DemoApplet applet = new DemoApplet();
+        new AppletFrame("Transliteration Demo", applet, 640, 480);
+    }
+
+	public void init() {
+
+		Button button = new Button("Transliteration Demo");
+		button.addActionListener(new ActionListener() {
+		    public void actionPerformed(ActionEvent e) {
+		        if (frame == null) {
+                    frame = new Demo(600, 200);
+                    frame.addWindowListener(new WindowAdapter() {
+                        public void windowClosing(WindowEvent we) {
+                            frame = null;
+                        }
+                    });
+                }
+                frame.setVisible(true);
+                frame.toFront();
+		    }
+		});
+
+		add(button);
+
+        Dimension size = button.getPreferredSize();
+        size.width += 10;
+        size.height += 10;
+
+		resize(size);
+	}
+	
+    public void stop() {
+        if (frame != null) {
+            frame.dispose();
+        }
+        frame = null;
+    }
+}
diff --git a/src/com/ibm/demo/translit/demo.bat b/src/com/ibm/demo/translit/demo.bat
new file mode 100755
index 0000000..36f8b78
--- /dev/null
+++ b/src/com/ibm/demo/translit/demo.bat
@@ -0,0 +1,19 @@
+REM /*
+REM *******************************************************************************
+REM  * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+REM  * others. All Rights Reserved.                                                *
+REM  *******************************************************************************
+REM  *
+REM  * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/demo/translit/Attic/demo.bat,v $ 
+REM  * $Date: 2000/03/10 03:47:44 $ 
+REM  * $Revision: 1.2 $
+REM  *
+REM  *****************************************************************************************
+REM  */
+REM For best results, run the demo as an applet inside of Netscape
+REM with Bitstream Cyberbit installed.
+
+REM setup your JDK 1.1.x path and classpath here:
+call JDK11
+set CLASSPATH=../translit.jar;%CLASSPATH%
+javaw Demo
diff --git a/src/com/ibm/demo/translit/demo.html b/src/com/ibm/demo/translit/demo.html
new file mode 100755
index 0000000..a5e7ba3
--- /dev/null
+++ b/src/com/ibm/demo/translit/demo.html
@@ -0,0 +1,27 @@
+<HTML>
+<HEAD>
+<TITLE>Transliteration Demo</TITLE>
+</HEAD>
+<BODY>
+
+<APPLET CODE="com.ibm.demo.translit.DemoApplet.class" WIDTH=140 HEIGHT=33></APPLET>
+
+<HR>
+
+If you don't see a button above, then your browser is failing to
+locate the necessary Java class files.
+
+<P>
+
+One way to make this work is to copy this HTML file to
+<code>jcu/src</code>, and make sure the Java files in the directories
+under <code>jcu/src/com</code> are built.  Then open this HTML file
+using a browser or appletviewer.
+
+<P>
+
+For best results, run this demo as an applet within Netscape with
+Bitstream Cyberbit installed.
+
+</BODY>
+</HTML>
diff --git a/src/com/ibm/test/TestFmwk.java b/src/com/ibm/test/TestFmwk.java
new file mode 100755
index 0000000..0c4104e
--- /dev/null
+++ b/src/com/ibm/test/TestFmwk.java
@@ -0,0 +1,262 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/Attic/TestFmwk.java,v $ 
+ * $Date: 2000/03/10 03:47:44 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test;
+
+import java.lang.reflect.*;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.util.Vector;
+import java.io.*;
+import java.text.*;
+
+
+
+/**
+ * BITestFmwk is a base class for tests that can be run conveniently from
+ * the command line as well as under the Java test harness.
+ * <p>
+ * Sub-classes implement a set of methods named Test<something>. Each
+ * of these methods performs some test. Test methods should indicate
+ * errors by calling either err or errln.  This will increment the
+ * errorCount field and may optionally print a message to the log.
+ * Debugging information may also be added to the log via the log
+ * and logln methods.  These methods will add their arguments to the
+ * log only if the test is being run in verbose mode.
+ */
+
+public class TestFmwk {
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //------------------------------------------------------------------------
+    // Everything below here is boilerplate code that makes it possible
+    // to add a new test by simply adding a function to an existing class
+    //------------------------------------------------------------------------
+
+	protected TestFmwk() {
+        // Create a hashtable containing all the test methods.
+        testMethods = new Hashtable();
+        Method[] methods = getClass().getDeclaredMethods();
+        for( int i=0; i<methods.length; i++ ) {
+            if( methods[i].getName().startsWith("Test") 
+					|| methods[i].getName().startsWith("test")) {
+                testMethods.put( methods[i].getName(), methods[i] );
+            }
+        }
+    }
+    
+    public void run(String[] args) throws Exception {
+    	if (params == null) params = new TestParams();
+        // Parse the test arguments.  They can be either the flag
+        // "-verbose" or names of test methods. Create a list of
+        // tests to be run.
+        testsToRun = new Vector(args.length);
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equals("-verbose")) {
+                params.verbose = true;
+            }
+            else if (args[i].equals("-prompt")) {
+                params.prompt = true;
+            } else if (args[i].equals("-nothrow")) {
+                params.nothrow = true;
+            } else {
+                Object m = testMethods.get(args[i]);
+                if (m != null) {
+                    testsToRun.addElement(m);
+                } else {
+                    usage();
+                    return;
+                }
+            }
+        }
+
+    	if (params == null) params = new TestParams();
+        System.out.println(getClass().getName() + " {");
+        params.indentLevel++;
+		Enumeration methodsToRun;
+		
+		if (testsToRun.size() < 1) {
+			methodsToRun = testMethods.elements();
+		} else {
+			methodsToRun = testsToRun.elements();
+		}
+
+        // Run the list of tests given in the test arguments
+        while (methodsToRun.hasMoreElements()) {
+            int oldCount = params.errorCount;
+
+           	Method testMethod = (Method)methodsToRun.nextElement();
+            writeTestName(testMethod.getName());
+
+            try {
+                testMethod.invoke(this, new Object[0]);
+            }
+            catch( IllegalAccessException e ) {
+                errln("Can't acces test method " + testMethod.getName());
+            } catch( InvocationTargetException e ) {
+                errln("Uncaught exception \""+e+"\"thrown in test method "
+                        + testMethod.getName());
+                e.getTargetException().printStackTrace(this.params.log);
+            }
+            writeTestResult(params.errorCount - oldCount);
+        }
+        params.indentLevel--;
+        writeTestResult(params.errorCount);
+
+        if (params.prompt) {
+            System.out.println("Hit RETURN to exit...");
+            try {
+                System.in.read();
+            } catch (IOException e) {
+                System.out.println("Exception: " + e.toString() + e.getMessage());
+            }
+        }
+        if (params.nothrow) {
+            System.exit(params.errorCount);
+        }
+    }
+
+	protected void run(TestFmwk childTest) throws Exception {
+		childTest.setParent(this);
+		childTest.run(new String[0]);
+	}
+
+    private void setParent(TestFmwk parent) {
+    	params = parent.params;
+    }
+
+    /**
+     * Adds given string to the log if we are in verbose mode.
+     */
+    protected void log( String message ) {
+        if( params.verbose ) {
+            indent(params.indentLevel + 1);
+            params.log.print( message );
+            params.log.flush();
+        }
+    }
+
+    protected void logln( String message ) {
+        log(message + System.getProperty("line.separator"));
+    }
+
+    /**
+     * Report an error
+     */
+    protected void err( String message ) {
+        params.errorCount++;
+        indent(params.indentLevel + 1);
+        params.log.print( message );
+        params.log.flush();
+
+        if (!params.nothrow) {
+            throw new RuntimeException(message);
+        }
+    }
+
+    protected void errln( String message ) {
+        err(message + System.getProperty("line.separator"));
+    }
+
+    protected int getErrorCount() {
+        return params.errorCount;
+    }
+
+    protected void writeTestName(String testName) {
+        indent(params.indentLevel);
+        params.log.print(testName);
+        params.log.flush();
+        params.needLineFeed = true;
+    }
+
+    protected void writeTestResult(int count) {
+        if (!params.needLineFeed) {
+            indent(params.indentLevel);
+            params.log.print("}");
+        }
+        params.needLineFeed = false;
+
+        if (count != 0) {
+            params.log.println(" FAILED");
+        } else {
+            params.log.println(" Passed");
+        }
+    }
+
+    private final void indent(int distance) {
+        if (params.needLineFeed) {
+            params.log.println(" {");
+            params.needLineFeed = false;
+        }
+        params.log.print(spaces.substring(0, distance * 2));
+    }
+
+    /**
+     * Print a usage message for this test class.
+     */
+    void usage() {
+        System.out.println(getClass().getName() +
+                ": [-verbose] [-nothrow] [-prompt] [test names]");
+
+        System.out.println("test names:");
+        Enumeration methodNames = testMethods.keys();
+        while( methodNames.hasMoreElements() ) {
+            System.out.println("\t" + methodNames.nextElement() );
+        }
+    }
+
+    public static String hex(char ch) {
+        StringBuffer result = new StringBuffer();
+        String foo = Integer.toString(ch,16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            result.append('0');
+        }
+        return result + foo;
+    }
+
+    public static String hex(String s) {
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(',');
+            result.append(hex(s.charAt(i)));
+        }
+        return result.toString();
+    }
+
+    public static String hex(StringBuffer s) {
+        return hex(s.toString());
+    }
+
+	private static class TestParams {
+    	public boolean   prompt = false;
+    	public boolean   nothrow = false;
+    	public boolean   verbose = false;
+
+    	public PrintWriter log = new PrintWriter(System.out,true);
+    	public int         indentLevel = 0;
+    	public boolean     needLineFeed = false;
+    	public int         errorCount = 0;
+    }
+
+	private TestParams params = null;
+    private Hashtable testMethods;
+	private Vector testsToRun;
+    private final String spaces = "                                          ";
+}
+
+
+
diff --git a/src/com/ibm/test/bnf/BigNumberFormatTest.java b/src/com/ibm/test/bnf/BigNumberFormatTest.java
new file mode 100755
index 0000000..b361941
--- /dev/null
+++ b/src/com/ibm/test/bnf/BigNumberFormatTest.java
@@ -0,0 +1,355 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/bnf/Attic/BigNumberFormatTest.java,v $ 
+ * $Date: 2000/03/10 03:47:44 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.bnf;
+
+import com.ibm.test.*;
+import com.ibm.text.*;
+import java.text.ParseException;
+import java.util.*;
+import java.math.BigInteger;
+
+/**
+ * @test
+ * General test of Big NumberFormat
+ */
+public class BigNumberFormatTest extends TestFmwk {
+
+    static final int ILLEGAL = -1;
+
+    public static void main(String[] args) throws Exception {
+        new BigNumberFormatTest().run(args);
+    }
+    	
+    public void TestExponent() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt1 = new DecimalFormat("0.###E0", US);
+        DecimalFormat fmt2 = new DecimalFormat("0.###E+0", US);
+        Number n = new Long(1234);
+        expect(fmt1, n, "1.234E3");
+        expect(fmt2, n, "1.234E+3");
+        expect(fmt1, "1.234E3", n);
+        expect(fmt1, "1.234E+3", n); // Either format should parse "E+3"
+        expect(fmt2, "1.234E+3", n);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat, int pos) {
+        expectPad(fmt, pat, pos, 0, (char)0);
+    }
+
+    private void expectPad(DecimalFormat fmt, String pat,
+                           int pos, int width, char pad) {
+        int apos = 0, awidth = 0;
+        char apad = 0;
+        try {
+            fmt.applyPattern(pat);
+            apos = fmt.getPadPosition();
+            awidth = fmt.getFormatWidth();
+            apad = fmt.getPadCharacter();
+        } catch (IllegalArgumentException e) {
+            apos = -1;
+            awidth = width;
+            apad = pad;
+        }
+        if (apos == pos && awidth == width && apad == pad) {
+            logln("Ok   \"" + pat + "\" pos=" + apos +
+                  ((pos == -1) ? "" : " width=" + awidth + " pad=" + apad));
+        } else {
+            logln("FAIL \"" + pat + "\" pos=" + apos +
+                  " width=" + awidth + " pad=" + apad +
+                  ", expected " + pos + " " + width + " " + pad);
+        }
+    }
+
+    /**
+     */
+    public void TestPatterns() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        DecimalFormat fmt = new DecimalFormat("#", US);
+
+        expectPad(fmt, "*^#", DecimalFormat.PAD_BEFORE_PREFIX, 1, '^');
+        expectPad(fmt, "$*^#", DecimalFormat.PAD_AFTER_PREFIX, 2, '^');
+        expectPad(fmt, "#*^", DecimalFormat.PAD_BEFORE_SUFFIX, 1, '^');
+        expectPad(fmt, "#$*^", DecimalFormat.PAD_AFTER_SUFFIX, 2, '^');
+        expectPad(fmt, "$*^$#", ILLEGAL);
+        expectPad(fmt, "#$*^$", ILLEGAL);
+        expectPad(fmt, "'pre'#,##0*x'post'", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  12, 'x');
+        expectPad(fmt, "''#0*x", DecimalFormat.PAD_BEFORE_SUFFIX,
+                  3, 'x');
+        expectPad(fmt, "'I''ll'*a###.##", DecimalFormat.PAD_AFTER_PREFIX,
+                  10, 'a');
+
+        fmt.applyPattern("AA#,##0.00ZZ");
+        fmt.setPadCharacter('^');
+
+        fmt.setFormatWidth(10);
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_PREFIX);
+        expectPat(fmt, "*^AA#,##0.00ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_BEFORE_SUFFIX);
+        expectPat(fmt, "AA#,##0.00*^ZZ");
+
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_SUFFIX);
+        expectPat(fmt, "AA#,##0.00ZZ*^");
+
+        //            12  3456789012
+        String exp = "AA*^#,##0.00ZZ";
+        fmt.setFormatWidth(12);
+        fmt.setPadPosition(DecimalFormat.PAD_AFTER_PREFIX);
+        expectPat(fmt, exp);
+
+        fmt.setFormatWidth(13);
+        //              12  34567890123
+        expectPat(fmt, "AA*^##,##0.00ZZ");
+
+        fmt.setFormatWidth(14);
+        //              12  345678901234
+        expectPat(fmt, "AA*^###,##0.00ZZ");
+
+        fmt.setFormatWidth(15);
+        //              12  3456789012345
+        expectPat(fmt, "AA*^####,##0.00ZZ"); // This is the interesting case
+
+        fmt.setFormatWidth(16);
+        //              12  34567890123456
+        expectPat(fmt, "AA*^#,###,##0.00ZZ");
+    }
+
+    private void expectPat(DecimalFormat fmt, String exp) {
+        String pat = fmt.toPattern();
+        if (pat.equals(exp)) {
+            logln("Ok   \"" + pat + '"');
+        } else {
+            errln("FAIL \"" + pat + "\", expected \"" + exp + '"');
+        }
+    }
+
+//This has been removed pending addition of com.ibm.math package to ICU4J
+    /*
+     * Test the handling of the AlphaWorks BigDecimal
+     *
+    public void TestAlphaBigDecimal() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new com.ibm.math.BigDecimal("12345.678901"),
+                           },
+               "1.234568E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.math.BigDecimal("12345.4999"),
+                              new com.ibm.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new com.ibm.math.BigDecimal("12345.5000"),
+                              new com.ibm.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+    } */
+
+    /**
+     */
+    public void TestScientific() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect(NumberFormat.getScientificInstance(Locale.US),
+               new Number[] { new Double(12345.678901),
+                              new java.math.BigDecimal("12345.678901"),
+                            },
+               "1.234568E4");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345),
+               "12.34E3");
+        expect(new DecimalFormat("##0.###E0", US),
+               new Double(12345.00001),
+               "12.35E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new Integer(12345),
+                              new Long(12345),
+                              new java.math.BigDecimal("12345.4999"),
+                              new java.math.BigDecimal("12344.5001"),
+                            },
+               "12.345E3");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Number[] { new java.math.BigDecimal("12345.5000"),
+                              new java.math.BigDecimal("12346.5000"),
+                            },
+               "12.346E3");
+        expect(NumberFormat.getScientificInstance(Locale.FRANCE),
+               new Double(12345.678901),
+               "1,234568E4");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(789.12345e-9),
+               "789.12E-9");
+        expect(new DecimalFormat("##0.####E0", US),
+               new Double(780.e-9),
+               "780E-9");
+        expect(new DecimalFormat(".###E0", US),
+               new Double(45678),
+               ".457E5");
+        expect(new DecimalFormat(".###E0", US),
+               new Long(0),
+               ".0E0");
+        expect(new DecimalFormat[] { new DecimalFormat("#E0", US),
+                                     new DecimalFormat("##E0", US),
+                                     new DecimalFormat("####E0", US),
+                                     new DecimalFormat("0E0", US),    
+                                     new DecimalFormat("00E0", US),   
+                                     new DecimalFormat("000E0", US), 
+                                   },
+               new Long(45678000),
+               new String[] { "4.5678E7",
+                              "45.678E6",
+                              "4567.8E4",
+                              "5E7",
+                              "46E6",  
+                              "457E5",
+                            }
+               );
+        expect(new DecimalFormat("###E0", US),
+               new Object[] { new Double(0.0000123), "12.3E-6",
+                              new Double(0.000123), "123E-6",
+                              new java.math.BigDecimal("0.00123"), "1.23E-3", // Cafe VM messes up Double(0.00123)
+                              new Double(0.0123), "12.3E-3",
+                              new Double(0.123), "123E-3",
+                              new Double(1.23), "1.23E0",
+                              new Double(12.3), "12.3E0",
+                              new Double(123), "123E0",
+                              new Double(1230), "1.23E3",
+                             });
+        expect(new DecimalFormat("0.#E+00", US),
+               new Object[] { new Double(0.00012), "1.2E-04",
+                              new Long(12000),     "1.2E+04",
+                             });
+    }
+
+    /**
+     */
+    public void TestPad() {
+        DecimalFormatSymbols US = new DecimalFormatSymbols(Locale.US);
+        expect(new DecimalFormat("*^##.##", US),
+               new Object[] { new Long(0),      "^^^^0",
+                              new Double(-1.3), "^-1.3",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####E0*_ g-m/s^2", US),
+               new Object[] { new Long(0),       "0.0E0______ g-m/s^2",
+                              new Double(1.0/3), "333.333E-3_ g-m/s^2",
+                            }
+               );
+        expect(new DecimalFormat("##0.0####*_ g-m/s^2", US),
+               new Object[] { new Long(0),       "0.0______ g-m/s^2",
+                              new Double(1.0/3), "0.33333__ g-m/s^2",
+                            }
+               );
+    }
+    
+    private void expect(NumberFormat fmt, Object[] data) {
+        for (int i=0; i<data.length; i+=2) {
+            expect(fmt, (Number) data[i], (String) data[i+1]);
+        }
+    }
+    
+    private void expect(Object fmto, Object numo, Object expo) {
+        NumberFormat fmt = null, fmts[] = null;
+        Number num = null, nums[] = null;
+        String exp = null, exps[] = null;
+        if (fmto instanceof NumberFormat[]) {
+            fmts = (NumberFormat[]) fmto;
+        } else {
+            fmt = (NumberFormat) fmto;
+        }
+        if (numo instanceof Number[]) {
+            nums = (Number[]) numo;
+        } else {
+            num = (Number) numo;
+        }
+        if (expo instanceof String[]) {
+            exps = (String[]) expo;
+        } else {
+            exp = (String) expo;
+        }
+        int n = 1;
+        if (fmts != null) {
+            n = Math.max(n, fmts.length);
+        }
+        if (nums != null) {
+            n = Math.max(n, nums.length);
+        }
+        if (exps != null) {
+            n = Math.max(n, exps.length);
+        }
+        for (int i=0; i<n; ++i) {
+            expect(fmts == null ? fmt : fmts[i],
+                   nums == null ? num : nums[i],
+                   exps == null ? exp : exps[i]);
+        }
+    }
+
+    private static String showNumber(Number n) {
+        String cls = n.getClass().getName();
+        //This has been removed pending addition of com.ibm.math package to ICU4J
+        if (!(/*n instanceof com.ibm.math.BigDecimal
+              ||*/ n instanceof java.math.BigDecimal)) {
+            int i = cls.lastIndexOf('.');
+            cls = cls.substring(i+1);
+        }
+        return n.toString() + " (" + cls + ')';
+    }
+
+    private void expect(NumberFormat fmt, Number n, String exp) {
+        String saw = fmt.format(n);
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   " + showNumber(n) + " x " +
+                  pat + " = \"" +
+                  saw + '"');
+        } else {
+            errln("FAIL " + showNumber(n) + " x " +
+                  pat + " = \"" +
+                  saw + "\", expected \"" + exp + '"');
+        }
+    }
+
+    private void expect(NumberFormat fmt, String str, Number exp) {
+        Number saw = null;
+        try {
+            saw = fmt.parse(str);
+        } catch (ParseException e) {
+            saw = null;
+        }
+        String pat = ((DecimalFormat) fmt).toPattern();
+        if (saw.equals(exp)) {
+            logln("Ok   \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw));
+        } else {
+            errln("FAIL \"" + str + "\" x " +
+                  pat + " = " +
+                  showNumber(saw) + ", expected " + showNumber(exp));
+        }
+    }
+
+    public void Test4161100() {
+        NumberFormat f = NumberFormat.getInstance();
+        f.setMinimumFractionDigits(1);
+        f.setMaximumFractionDigits(1);
+        double a = -0.09;
+        String s = f.format(a);
+        logln(a + " x " +
+              ((DecimalFormat) f).toPattern() + " = " +
+              s);
+        if (!s.equals("-0.1")) {
+            errln("FAIL");
+        }
+    }        
+}
diff --git a/src/com/ibm/test/calendar/AstroTest.java b/src/com/ibm/test/calendar/AstroTest.java
new file mode 100755
index 0000000..5db2e82
--- /dev/null
+++ b/src/com/ibm/test/calendar/AstroTest.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/calendar/Attic/AstroTest.java,v $ 
+ * $Date: 2000/03/10 03:47:45 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.calendar;
+
+// AstroTest
+
+import com.ibm.test.*;
+import java.util.*;
+import com.ibm.util.*;
+
+import com.ibm.util.CalendarAstronomer.*;
+
+// TODO: try finding next new moon after  07/28/1984 16:00 GMT
+
+public class AstroTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new AstroTest().run(args);
+    }
+
+    static final double PI = Math.PI;
+    
+    static GregorianCalendar gc = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+    static CalendarAstronomer astro = new CalendarAstronomer();
+    
+    public void TestSolarLongitude() {
+        final double tests[][] = {
+            { 1980, 7, 27, 00, 00, 124.114347 },
+            { 1988, 7, 27, 00, 00, 124.187732 },
+        };
+        logln("");
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+            
+            astro.setDate(gc.getTime());
+            
+            double longitude = astro.getSunLongitude();
+            
+            Equatorial result = astro.getSunPosition();
+        }
+    }
+    
+    public void TestLunarPosition() {
+        final double tests[][] = {
+            { 1979, 2, 26, 16, 00,  0, 0 },
+        };
+        logln("");
+        
+        for (int i = 0; i < tests.length; i++) {
+            gc.clear();
+            gc.set((int)tests[i][0], (int)tests[i][1]-1, (int)tests[i][2], (int)tests[i][3], (int) tests[i][4]);
+            astro.setDate(gc.getTime());
+            
+            Equatorial result = astro.getMoonPosition();
+        }
+
+    }
+    
+    public void TestCoordinates() {
+        Equatorial result = astro.eclipticToEquatorial(139.686111 * PI/ 180.0, 4.875278* PI / 180.0);
+        logln("result is " + result + ";  " + result.toHmsString());
+    }
+    
+}
\ No newline at end of file
diff --git a/src/com/ibm/test/calendar/CalendarTest.java b/src/com/ibm/test/calendar/CalendarTest.java
new file mode 100755
index 0000000..5b43c05
--- /dev/null
+++ b/src/com/ibm/test/calendar/CalendarTest.java
@@ -0,0 +1,171 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/calendar/Attic/CalendarTest.java,v $ 
+ * $Date: 2000/03/10 03:47:45 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.test.calendar;
+
+import com.ibm.test.*;
+import java.text.*;
+import java.util.*;
+import com.ibm.util.*;
+
+/**
+ * A base class for classes that test individual Calendar subclasses.
+ * Defines various useful utility methods and constants
+ */
+public class CalendarTest extends TestFmwk {
+    
+    // Constants for use by subclasses, solely to save typing
+    public final static int SUN = Calendar.SUNDAY;
+    public final static int MON = Calendar.MONDAY;
+    public final static int TUE = Calendar.TUESDAY;
+    public final static int WED = Calendar.WEDNESDAY;
+    public final static int THU = Calendar.THURSDAY;
+    public final static int FRI = Calendar.FRIDAY;
+    public final static int SAT = Calendar.SATURDAY;
+
+    public final static int ERA     = Calendar.ERA;
+    public final static int YEAR    = Calendar.YEAR;
+    public final static int MONTH   = Calendar.MONTH;
+    public final static int DATE    = Calendar.DATE;
+    public final static int HOUR    = Calendar.HOUR;
+    public final static int MINUTE  = Calendar.MINUTE;
+    public final static int SECOND  = Calendar.SECOND;
+    public final static int DOY     = Calendar.DAY_OF_YEAR;
+    public final static int WOY     = Calendar.WEEK_OF_YEAR;
+    public final static int WOM     = Calendar.WEEK_OF_MONTH;
+    public final static int DOW     = Calendar.DAY_OF_WEEK;
+    public final static int DOWM    = Calendar.DAY_OF_WEEK_IN_MONTH;
+    
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+
+    final String pattern = "E, MM/dd/yyyy G HH:mm:ss.S z";
+    
+    /**
+     * Iterates through a list of calendar <code>TestCase</code> objects and
+     * makes sure that the time-to-fields and fields-to-time calculations work
+     * correnctly for the values in each test case.
+     */
+    public void doTestCases(TestCase[] cases, Calendar cal)
+    {
+        cal.setTimeZone(UTC);
+        
+        // Get a format to use for printing dates in the calendar system we're testing
+        // TODO: This is kind of ugly right now . 
+        DateFormat format = IBMCalendar.getDateTimeFormat(cal, DateFormat.SHORT, -1, Locale.getDefault());
+        
+        ((SimpleDateFormat)format).applyPattern(pattern);
+        DateFormat testFmt = (DateFormat)format.clone();
+
+        // This format is used for pringing Gregorian dates.  This one is easier
+        DateFormat gregFormat = new SimpleDateFormat(pattern);
+        gregFormat.setTimeZone(UTC);
+        
+        // Now iterate through the test cases and see what happens
+        for (int i = 0; i < cases.length; i++)
+        {
+            TestCase test = cases[i];
+            testFmt.setCalendar(test);
+            
+            //
+            // First we want to make sure that the millis -> fields calculation works
+            // test.applyTime will call setTime() on the calendar object, and
+            // test.fieldsEqual will retrieve all of the field values and make sure
+            // that they're the same as the ones in the testcase
+            //
+            test.applyTime(cal);
+            if (!test.fieldsEqual(cal)) {
+                errln("ERROR: millis --> fields calculation incorrect for "
+                        + gregFormat.format(test.getTime()));
+                logln("  expected " + testFmt.format(test.getTime()));
+                logln("  got      " + format.format(cal.getTime()) );
+            }
+            else {
+                //
+                // If that was OK, check the fields -> millis calculation
+                // test.applyFields will set all of the calendar's fields to 
+                // match those in the test case.
+                //
+                cal.setTime(new Date(0));
+                test.applyFields(cal);
+                
+                if (!test.equals(cal)) {
+                    errln("ERROR: fields --> millis calculation incorrect for "
+                        + testFmt.format(test.getTime()));
+                    logln("  expected " + test.getTime().getTime());
+                    logln("  got      " + cal.getTime().getTime() );
+                }
+            }
+        }
+    }
+    
+    static public final boolean ROLL = true;
+    static public final boolean ADD = false;
+    
+    /**
+     * Process test cases for <code>add</code> and <code>roll</code> methods.
+     * Each test case is an array of integers, as follows:
+     * <ul>
+     *  <li>0: input year
+     *  <li>1:       month  (zero-based)
+     *  <li>2:       day
+     *  <li>3: field to roll or add to
+     *  <li>4: amount to roll or add
+     *  <li>5: result year
+     *  <li>6:        month (zero-based)
+     *  <li>7:        day
+     * </ul>
+     * For example:
+     * <pre>
+     *   //       input                add by          output
+     *   //  year  month     day     field amount    year  month     day
+     *   {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },
+     * </pre>
+     *
+     * @param roll  <code>true</code> or <code>ROLL</code> to test the <code>roll</code> method;
+     *              <code>false</code> or <code>ADD</code> to test the <code>add</code method
+     */
+    public void doRollAdd(boolean roll, IBMCalendar cal, int[][] tests)
+    {
+        String name = roll ? "rolling" : "adding";
+        
+        for (int i = 0; i < tests.length; i++) {
+            int[] test = tests[i];
+
+            cal.clear();
+            cal.set(test[0], test[1], test[2]);
+            
+            if (roll) {
+                cal.roll(test[3], test[4]);
+            } else {
+                cal.add(test[3], test[4]);
+            }
+            
+            if (cal.get(YEAR) != test[5] || cal.get(MONTH) != test[6]
+                    || cal.get(DATE) != test[7])
+            {
+                errln("Error " + name + " "+ ymdToString(test[0], test[1], test[2])
+                    + " field " + test[3] + " by " + test[4]
+                    + ": expected " + ymdToString(test[5], test[6], test[7])
+                    + ", got " + ymdToString(cal.get(YEAR), cal.get(MONTH), cal.get(DATE)));
+            }
+        }
+    }
+
+    /**
+     * Convert year,month,day values to the form "year/month/day".
+     * On input the month value is zero-based, but in the result string it is one-based.
+     */
+    static public String ymdToString(int year, int month, int day) {
+        return "" + year + "/" + (month+1) + "/" + day;
+    }
+};
diff --git a/src/com/ibm/test/calendar/HebrewTest.java b/src/com/ibm/test/calendar/HebrewTest.java
new file mode 100755
index 0000000..4779f64
--- /dev/null
+++ b/src/com/ibm/test/calendar/HebrewTest.java
@@ -0,0 +1,202 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/calendar/Attic/HebrewTest.java,v $ 
+ * $Date: 2000/03/10 03:47:45 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.test.calendar;
+
+import com.ibm.test.*;
+import java.util.*;
+import java.text.*;
+import com.ibm.util.*;
+
+/**
+ * Tests for the <code>HebrewCalendar</code> class.
+ */
+public class HebrewTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new HebrewTest().run(args);
+    }
+
+    // Constants to save typing.
+    public static final int TISHRI  = HebrewCalendar.TISHRI;
+    public static final int HESHVAN = HebrewCalendar.HESHVAN;
+    public static final int KISLEV  = HebrewCalendar.KISLEV;
+    public static final int TEVET   = HebrewCalendar.TEVET;
+    public static final int SHEVAT  = HebrewCalendar.SHEVAT;
+    public static final int ADAR_1  = HebrewCalendar.ADAR_1;
+    public static final int ADAR    = HebrewCalendar.ADAR;
+    public static final int NISAN   = HebrewCalendar.NISAN;
+    public static final int IYAR    = HebrewCalendar.IYAR;
+    public static final int SIVAN   = HebrewCalendar.SIVAN;
+    public static final int TAMUZ   = HebrewCalendar.TAMUZ;
+    public static final int AV      = HebrewCalendar.AV;
+    public static final int ELUL    = HebrewCalendar.ELUL;
+
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5759, SHEVAT,    2 },
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5757, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5757, SHEVAT,    2 },
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, KISLEV,    2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, KISLEV,    2 },   // 30-day month
+            
+            // Try some other fields too
+            {   5757, TISHRI,    1,     YEAR,    1,     5758, TISHRI,    1 },
+   
+
+            // Try some rolls that require other fields to be adjusted
+            {   5757, TISHRI,   30,     MONTH,   1,     5757, HESHVAN,  29 },
+            {   5758, KISLEV,   30,     YEAR,   -1,     5757, KISLEV,   29 },
+        };
+       
+        HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+
+        doRollAdd(ROLL, cal, tests);
+    }
+    
+    /**
+     * Test the behavior of HebrewCalendar.roll
+     * The only real nastiness with roll is the MONTH field, since a year can
+     * have a variable number of months.
+     */
+    public void TestAdd() {
+        int[][] tests = new int[][] {
+            //       input                add by          output
+            //  year  month     day     field amount    year  month     day
+            {   5759, HESHVAN,   2,     MONTH,   1,     5759, KISLEV,    2 },   // non-leap years
+            {   5759, SHEVAT,    2,     MONTH,   1,     5759, ADAR,      2 },
+            {   5759, SHEVAT,    2,     MONTH,   2,     5759, NISAN,     2 },
+            {   5759, SHEVAT,    2,     MONTH,  12,     5760, SHEVAT,    2 },
+
+            {   5757, HESHVAN,   2,     MONTH,   1,     5757, KISLEV,    2 },   // leap years
+            {   5757, SHEVAT,    2,     MONTH,   1,     5757, ADAR_1,    2 },
+            {   5757, SHEVAT,    2,     MONTH,   2,     5757, ADAR,      2 },
+            {   5757, SHEVAT,    2,     MONTH,   3,     5757, NISAN,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  12,     5758, TEVET,     2 },
+            {   5757, SHEVAT,    2,     MONTH,  13,     5758, SHEVAT,    2 },
+            
+            {   5757, KISLEV,    1,     DATE,   30,     5757, TEVET,     2 },   // 29-day month
+            {   5758, KISLEV,    1,     DATE,   31,     5758, TEVET,     2 },   // 30-day month
+        };
+       
+        HebrewCalendar cal = new HebrewCalendar(UTC, Locale.getDefault());
+
+        doRollAdd(ADD, cal, tests);
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data.
+     */
+    public void TestCases() {
+        doTestCases(testCases, new HebrewCalendar());
+    }
+
+    static final TestCase[] testCases = {
+        //
+        // Most of these test cases were taken from the back of
+        // "Calendrical Calculations", with some extras added to help
+        // debug a few of the problems that cropped up in development.
+        //
+        // The months in this table are 1-based rather than 0-based,
+        // because it's easier to edit that way.
+        //
+        //         Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+        new TestCase(1507231.5,  0,  3174,   12,  10,  SUN,   0,  0,  0),
+        new TestCase(1660037.5,  0,  3593,    3,  25,  WED,   0,  0,  0),
+        new TestCase(1746893.5,  0,  3831,    1,   3,  WED,   0,  0,  0),
+        new TestCase(1770641.5,  0,  3896,    1,   9,  SUN,   0,  0,  0),
+        new TestCase(1892731.5,  0,  4230,    4,  18,  WED,   0,  0,  0),
+        new TestCase(1931579.5,  0,  4336,   10,   4,  MON,   0,  0,  0),
+        new TestCase(1974851.5,  0,  4455,    2,  13,  SAT,   0,  0,  0),
+        new TestCase(2091164.5,  0,  4773,    9,   6,  SUN,   0,  0,  0),
+        new TestCase(2121509.5,  0,  4856,    9,  23,  SUN,   0,  0,  0),
+        new TestCase(2155779.5,  0,  4950,    8,   7,  FRI,   0,  0,  0),
+        new TestCase(2174029.5,  0,  5000,    7,   8,  SAT,   0,  0,  0),
+        new TestCase(2191584.5,  0,  5048,    8,  21,  FRI,   0,  0,  0),
+        new TestCase(2195261.5,  0,  5058,    9,   7,  SUN,   0,  0,  0),
+        new TestCase(2229274.5,  0,  5151,   11,   1,  SUN,   0,  0,  0),
+        new TestCase(2245580.5,  0,  5196,    5,   7,  WED,   0,  0,  0),
+        new TestCase(2266100.5,  0,  5252,    8,   3,  SAT,   0,  0,  0),
+        new TestCase(2288542.5,  0,  5314,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2290901.5,  0,  5320,    6,  27,  SAT,   0,  0,  0),
+        new TestCase(2323140.5,  0,  5408,   10,  20,  WED,   0,  0,  0),
+        new TestCase(2334551.5,  0,  5440,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2334581.5,  0,  5440,    2,   1,  SAT,   0,  0,  0),
+        new TestCase(2334610.5,  0,  5440,    3,   1,  SUN,   0,  0,  0),
+        new TestCase(2334639.5,  0,  5440,    4,   1,  MON,   0,  0,  0),
+        new TestCase(2334668.5,  0,  5440,    5,   1,  TUE,   0,  0,  0),
+        new TestCase(2334698.5,  0,  5440,    6,   1,  THU,   0,  0,  0),
+        new TestCase(2334728.5,  0,  5440,    7,   1,  SAT,   0,  0,  0),
+        new TestCase(2334757.5,  0,  5440,    8,   1,  SUN,   0,  0,  0),
+        new TestCase(2334787.5,  0,  5440,    9,   1,  TUE,   0,  0,  0),
+        new TestCase(2334816.5,  0,  5440,   10,   1,  WED,   0,  0,  0),
+        new TestCase(2334846.5,  0,  5440,   11,   1,  FRI,   0,  0,  0),
+        new TestCase(2334848.5,  0,  5440,   11,   3,  SUN,   0,  0,  0),
+        new TestCase(2334934.5,  0,  5441,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(2348020.5,  0,  5476,   12,   5,  FRI,   0,  0,  0),
+        new TestCase(2366978.5,  0,  5528,   11,   4,  SUN,   0,  0,  0),
+        new TestCase(2385648.5,  0,  5579,   12,  11,  MON,   0,  0,  0),
+        new TestCase(2392825.5,  0,  5599,    8,  12,  WED,   0,  0,  0),
+        new TestCase(2416223.5,  0,  5663,    8,  22,  SUN,   0,  0,  0),
+        new TestCase(2425848.5,  0,  5689,   12,  19,  SUN,   0,  0,  0),
+        new TestCase(2430266.5,  0,  5702,    1,   8,  MON,   0,  0,  0),
+        new TestCase(2430833.5,  0,  5703,    8,  14,  MON,   0,  0,  0),
+        new TestCase(2431004.5,  0,  5704,    1,   8,  THU,   0,  0,  0),
+        new TestCase(2448698.5,  0,  5752,    7,  12,  TUE,   0,  0,  0),
+        new TestCase(2450138.5,  0,  5756,    7,   5,  SUN,   0,  0,  0),
+        new TestCase(2465737.5,  0,  5799,    2,  12,  WED,   0,  0,  0),
+        new TestCase(2486076.5,  0,  5854,   12,   5,  SUN,   0,  0,  0),
+
+        // Additional test cases for bugs found during development
+        //           G.YY/MM/DD  Era  Year  Month Day  WkDay Hour Min Sec
+        new TestCase(1013, 9, 8, 0,  4774,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(1239, 9, 1, 0,  5000,    1,   1,  THU,   0,  0,  0),
+        new TestCase(1240, 9,18, 0,  5001,    1,   1,  TUE,   0,  0,  0),
+
+        // Test cases taken from a table of 14 "year types" in the Help file
+        // of the application "Hebrew Calendar"
+        new TestCase(2456187.5,  0,  5773,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2459111.5,  0,  5781,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2453647.5,  0,  5766,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(2462035.5,  0,  5789,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2458756.5,  0,  5780,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2460586.5,  0,  5785,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2463864.5,  0,  5794,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2463481.5,  0,  5793,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2470421.5,  0,  5812,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2460203.5,  0,  5784,    1,   1,  SAT,   0,  0,  0),
+        new TestCase(2459464.5,  0,  5782,    1,   1,  TUE,   0,  0,  0),
+        new TestCase(2467142.5,  0,  5803,    1,   1,  MON,   0,  0,  0),
+        new TestCase(2455448.5,  0,  5771,    1,   1,  THU,   0,  0,  0),
+        new TestCase(2487223.5,  0,  5858,    1,   1,  SAT,   0,  0,  0),
+    };
+    
+    
+};
\ No newline at end of file
diff --git a/src/com/ibm/test/calendar/IslamicTest.java b/src/com/ibm/test/calendar/IslamicTest.java
new file mode 100755
index 0000000..66a29e2
--- /dev/null
+++ b/src/com/ibm/test/calendar/IslamicTest.java
@@ -0,0 +1,128 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/calendar/Attic/IslamicTest.java,v $ 
+ * $Date: 2000/03/10 03:47:45 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.calendar;
+
+import com.ibm.test.*;
+import java.util.*;
+import java.text.*;
+import com.ibm.util.*;
+
+/**
+ * Tests for the <code>IslamicCalendar</code> class.
+ */
+public class IslamicTest extends CalendarTest {
+    public static void main(String args[]) throws Exception {
+        new IslamicTest().run(args);
+    }
+
+    /** Constants to save typing. */
+    public static final int MUHARRAM = IslamicCalendar.MUHARRAM;
+    public static final int SAFAR =  IslamicCalendar.SAFAR;
+    public static final int RABI_1 =  IslamicCalendar.RABI_1;
+    public static final int RABI_2 =  IslamicCalendar.RABI_2;
+    public static final int JUMADA_1 =  IslamicCalendar.JUMADA_1;
+    public static final int JUMADA_2 =  IslamicCalendar.JUMADA_2;
+    public static final int RAJAB =  IslamicCalendar.RAJAB;
+    public static final int SHABAN =  IslamicCalendar.SHABAN;
+    public static final int RAMADAN =  IslamicCalendar.RAMADAN;
+    public static final int SHAWWAL =  IslamicCalendar.SHAWWAL;
+    public static final int QIDAH =  IslamicCalendar.DHU_AL_QIDAH;
+    public static final int HIJJAH =  IslamicCalendar.DHU_AL_HIJJAH;
+
+    public void TestRoll() {
+        int[][] tests = new int[][] {
+            //       input                roll by          output
+            //  year  month     day     field amount    year  month     day
+    
+            {   0001, QIDAH,     2,     MONTH,   1,     0001, HIJJAH,    2 },   // non-leap years
+            {   0001, QIDAH,     2,     MONTH,   2,     0001, MUHARRAM,  2 },
+            {   0001, QIDAH,     2,     MONTH,  -1,     0001, SHAWWAL,   2 },
+            {   0001, MUHARRAM,  2,     MONTH,  12,     0001, MUHARRAM,  2 },
+            {   0001, MUHARRAM,  2,     MONTH,  13,     0001, SAFAR,     2 },
+
+            {   0001, HIJJAH,    1,     DATE,   30,     0001, HIJJAH,    2 },   // 29-day month
+            {   0002, HIJJAH,    1,     DATE,   31,     0002, HIJJAH,    2 },   // 30-day month
+
+            // Try some rolls that require other fields to be adjusted
+            {   0001, MUHARRAM, 30,     MONTH,   1,     0001, SAFAR,    29 },
+            {   0002, HIJJAH,   30,     YEAR,   -1,     0001, HIJJAH,   29 },
+        };
+       
+        IslamicCalendar cal = newCivil();
+
+        doRollAdd(ROLL, cal, tests);
+    }
+
+    /**
+     * A huge list of test cases to make sure that computeTime and computeFields
+     * work properly for a wide range of data in the civil calendar.
+     */
+    public void TestCivilCases()
+    {
+        final TestCase[] tests = {
+            //
+            // Most of these test cases were taken from the back of
+            // "Calendrical Calculations", with some extras added to help
+            // debug a few of the problems that cropped up in development.
+            //
+            // The months in this table are 1-based rather than 0-based,
+            // because it's easier to edit that way.
+            //                       Islamic
+            //          Julian Day  Era  Year  Month Day  WkDay Hour Min Sec
+            new TestCase(1507231.5,  0, -1245,   12,   9,  SUN,   0,  0,  0),
+            new TestCase(1660037.5,  0,  -813,    2,  23,  WED,   0,  0,  0),
+            new TestCase(1746893.5,  0,  -568,    4,   1,  WED,   0,  0,  0),
+            new TestCase(1770641.5,  0,  -501,    4,   6,  SUN,   0,  0,  0),
+            new TestCase(1892731.5,  0,  -157,   10,  17,  WED,   0,  0,  0),
+            new TestCase(1931579.5,  0,   -47,    6,   3,  MON,   0,  0,  0),
+            new TestCase(1974851.5,  0,    75,    7,  13,  SAT,   0,  0,  0),
+            new TestCase(2091164.5,  0,   403,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2121509.5,  0,   489,    5,  22,  SUN,   0,  0,  0),
+            new TestCase(2155779.5,  0,   586,    2,   7,  FRI,   0,  0,  0),
+            new TestCase(2174029.5,  0,   637,    8,   7,  SAT,   0,  0,  0),
+            new TestCase(2191584.5,  0,   687,    2,  20,  FRI,   0,  0,  0),
+            new TestCase(2195261.5,  0,   697,    7,   7,  SUN,   0,  0,  0),
+            new TestCase(2229274.5,  0,   793,    7,   1,  SUN,   0,  0,  0),
+            new TestCase(2245580.5,  0,   839,    7,   6,  WED,   0,  0,  0),
+            new TestCase(2266100.5,  0,   897,    6,   1,  SAT,   0,  0,  0),
+            new TestCase(2288542.5,  0,   960,    9,  30,  SAT,   0,  0,  0),
+            new TestCase(2290901.5,  0,   967,    5,  27,  SAT,   0,  0,  0),
+            new TestCase(2323140.5,  0,  1058,    5,  18,  WED,   0,  0,  0),
+            new TestCase(2334848.5,  0,  1091,    6,   2,  SUN,   0,  0,  0),
+            new TestCase(2348020.5,  0,  1128,    8,   4,  FRI,   0,  0,  0),
+            new TestCase(2366978.5,  0,  1182,    2,   3,  SUN,   0,  0,  0),
+            new TestCase(2385648.5,  0,  1234,   10,  10,  MON,   0,  0,  0),
+            new TestCase(2392825.5,  0,  1255,    1,  11,  WED,   0,  0,  0),
+            new TestCase(2416223.5,  0,  1321,    1,  21,  SUN,   0,  0,  0),
+            new TestCase(2425848.5,  0,  1348,    3,  19,  SUN,   0,  0,  0),
+            new TestCase(2430266.5,  0,  1360,    9,   8,  MON,   0,  0,  0),
+            new TestCase(2430833.5,  0,  1362,    4,  13,  MON,   0,  0,  0),
+            new TestCase(2431004.5,  0,  1362,   10,   7,  THU,   0,  0,  0),
+            new TestCase(2448698.5,  0,  1412,    9,  13,  TUE,   0,  0,  0),
+            new TestCase(2450138.5,  0,  1416,   10,   5,  SUN,   0,  0,  0),
+            new TestCase(2465737.5,  0,  1460,   10,  12,  WED,   0,  0,  0),
+            new TestCase(2486076.5,  0,  1518,    3,   5,  SUN,   0,  0,  0),
+        };
+        
+        IslamicCalendar civilCalendar = newCivil();
+        civilCalendar.setLenient(true);
+        doTestCases(tests, civilCalendar);
+    }
+
+    private static IslamicCalendar newCivil() {
+        IslamicCalendar civilCalendar = new IslamicCalendar();
+        civilCalendar.setCivil(true);
+        return civilCalendar;
+    }
+    
+};
\ No newline at end of file
diff --git a/src/com/ibm/test/calendar/TestCase.java b/src/com/ibm/test/calendar/TestCase.java
new file mode 100755
index 0000000..65911ca
--- /dev/null
+++ b/src/com/ibm/test/calendar/TestCase.java
@@ -0,0 +1,214 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/calendar/Attic/TestCase.java,v $ 
+ * $Date: 2000/03/10 03:47:45 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.calendar;
+
+import com.ibm.test.*;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Date;
+import java.util.SimpleTimeZone;
+import java.util.Locale;
+
+/**
+ * A dummy <code>Calendar</code> subclass that is useful for testing
+ * new calendars.  A <code>TestCase</code> object is used to hold the
+ * field and millisecond values that the calendar should have at one
+ * particular instant in time.  The applyFields and applyTime
+ * methods are used to apply these settings to the calendar object being
+ * tested, and the equals and fieldsEqual methods are used to ensure
+ * that the calendar has ended up in the right state.
+ */
+public class TestCase extends Calendar {
+    
+    /**
+     * Initialize a TestCase object using a julian day number and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param era       The ERA field of tested calendar on the given julian day
+     * @param year      The YEAR field of tested calendar on the given julian day
+     * @param month     The MONTH (0-based) field of tested calendar on the given julian day
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given julian day
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given julian day
+     * @param hour      The HOUR field of tested calendar on the given julian day
+     * @param min       The MINUTE field of tested calendar on the given julian day
+     * @param sec       The SECOND field of tested calendar on the given julian day
+     */
+    public TestCase(double julian,
+                   int era, int year, int month, int day,
+                   int dayOfWeek,
+                   int hour, int min, int sec)
+    {
+        super(UTC, Locale.getDefault());
+        
+        setTime(new Date(JULIAN_EPOCH + (long)(DAY_MS * julian)));
+        
+        set(ERA, era);
+        set(YEAR, year);
+        set(MONTH, month - 1);
+        set(DATE, day);
+        set(DAY_OF_WEEK, dayOfWeek);
+        set(HOUR, hour);
+        set(MINUTE, min);
+        set(SECOND, sec);
+    }
+
+    /**
+     * Initialize a TestCase object using a Gregorian year/month/day and
+     * the corresponding fields for the calendar being tested.
+     *
+     * @param gregYear  The Gregorian year of the date to be tested
+     * @param gregMonth The Gregorian month of the date to be tested
+     * @param gregDay   The Gregorian day of the month of the date to be tested
+     *
+     * @param era       The ERA field of tested calendar on the given gregorian date
+     * @param year      The YEAR field of tested calendar on the given gregorian date
+     * @param month     The MONTH (0-based) field of tested calendar on the given gregorian date
+     * @param day       The DAY_OF_MONTH field of tested calendar on the given gregorian date
+     * @param dayOfWeek The DAY_OF_WEEK field of tested calendar on the given gregorian date
+     * @param hour      The HOUR field of tested calendar on the given gregorian date
+     * @param min       The MINUTE field of tested calendar on the given gregorian date
+     * @param sec       The SECOND field of tested calendar on the given gregorian date
+     */
+    public TestCase(int gregYear, int gregMonth, int gregDay,
+                   int era, int year, int month, int day,
+                   int dayOfWeek,
+                   int hour, int min, int sec)
+    {
+        super(UTC, Locale.getDefault());
+        
+        GregorianCalendar greg = new GregorianCalendar(UTC, Locale.getDefault());
+        greg.clear();
+        greg.set(gregYear, gregMonth-1, gregDay);
+        setTime(greg.getTime());
+        
+        set(ERA, era);
+        set(YEAR, year);
+        set(MONTH, month - 1);
+        set(DATE, day);
+        set(DAY_OF_WEEK, dayOfWeek);
+        set(HOUR, hour);
+        set(MINUTE, min);
+        set(SECOND, sec);
+    }
+    
+    /**
+     * Apply this test case's field values to another calendar
+     * by calling its set method for each field.  This is useful in combination
+     * with the equal method.
+     *
+     * @see #equal
+     */
+    public void applyFields(Calendar c) {
+        c.set(ERA,     fields[ERA]);
+        c.set(YEAR,    fields[YEAR]);
+        c.set(MONTH,   fields[MONTH]);
+        c.set(DATE,    fields[DATE]);
+        c.set(HOUR,    fields[HOUR]);
+        c.set(MINUTE,  fields[MINUTE]);
+        c.set(SECOND,  fields[SECOND]);
+    }
+    
+    /**
+     * Apply this test case's time in milliseconds to another calendar
+     * by calling its setTime method.  This is useful in combination
+     * with fieldsEqual
+     *
+     * @see #fieldsEqual
+     */
+    public void applyTime(Calendar c) {
+        c.setTime(new Date(time));
+    }
+
+    /**
+     * Determine whether the fields of this calendar
+     * are the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeFields method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyTime(testCalendar);
+     *    if (!case.fieldsEqual(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyTime
+     */
+    public boolean fieldsEqual(Calendar c) {
+        for (int i=0; i < Calendar.FIELD_COUNT; i++) {
+            if (isSet(i) && get(i) != c.get(i)) {
+                System.out.println("field " + i + ": expected " + get(i) + ", got " + c.get(i));
+                return false;
+            }
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Determine whether time in milliseconds of this calendar
+     * is the same as that of the other calendar.  This method is useful
+     * for determining whether the other calendar's computeTime method
+     * works properly.  For example:
+     * <pre>
+     *    Calendar testCalendar = ...
+     *    TestCase case = ...
+     *    case.applyFields(testCalendar);
+     *    if (!case.equals(testCalendar)) {
+     *        // Error!
+     *    }
+     * </pre>
+     * 
+     * @see #applyFields
+     */
+    public boolean equals(Object obj) {
+        return time == ((Calendar)obj).getTime().getTime();
+    }
+    
+    /**
+     * Determine whether time of this calendar (as returned by getTime)
+     * is before that of the specified calendar
+     */
+    public boolean before(Object obj) {
+        return time < ((Calendar)obj).getTime().getTime();
+    }
+
+    /**
+     * Determine whether time of this calendar (as returned by getTime)
+     * is after that of the specified calendar
+     */
+    public boolean after(Object obj) {
+        return time > ((Calendar)obj).getTime().getTime();
+    }
+    
+    // This object is only pretending to be a Calendar; it doesn't do any real
+    // calendar computatations.  But we have to pretend it does, because Calendar
+    // declares all of these abstract methods....
+    protected void computeTime() {}
+    protected void computeFields() {}
+    public void roll(int field, boolean up) {}
+    public void add(int field, int amt) {}
+    public int getMinimum(int field) { return 0; }
+    public int getMaximum(int field) { return 0; }
+    public int getGreatestMinimum(int field) { return 0; }
+    public int getLeastMaximum(int field) { return 0; }
+    
+    private static final int  SECOND_MS = 1000;
+    private static final int  MINUTE_MS = 60*SECOND_MS;
+    private static final int  HOUR_MS   = 60*MINUTE_MS;
+    private static final long DAY_MS    = 24*HOUR_MS;
+    private static final long JULIAN_EPOCH = -210866760000000L;   // 1/1/4713 BC 12:00
+
+    public final static SimpleTimeZone UTC = new SimpleTimeZone(0, "GMT");
+}
diff --git a/src/com/ibm/test/compression/DecompressionTest.java b/src/com/ibm/test/compression/DecompressionTest.java
new file mode 100755
index 0000000..147f216
--- /dev/null
+++ b/src/com/ibm/test/compression/DecompressionTest.java
@@ -0,0 +1,130 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/compression/Attic/DecompressionTest.java,v $ 
+ * $Date: 2000/03/10 03:47:45 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.compression;
+
+import com.ibm.text.UnicodeCompressor;
+import com.ibm.text.UnicodeDecompressor;
+import com.ibm.test.TestFmwk;
+
+public class DecompressionTest extends TestFmwk {
+	public static void main(String[] args) throws Exception {
+		new DecompressionTest().run(args);
+	}
+
+    /** Print out a segment of a character array, if in verbose mode */
+    private void log(char [] chars, int start, int count) {
+        log("|");
+        for(int i = start; i < start + count; ++i) {
+            log(String.valueOf(chars[i]));
+        }
+        log("|");
+    }
+
+    /** Print out a segment of a character array, followed by a newline */
+    private void logln(char [] chars, int start, int count)
+    {
+        log(chars, start, count);
+        logln("");
+    }
+
+    /** Decompress the two segments */
+    private String decompressTest(byte [] segment1, byte [] segment2) {
+        StringBuffer s = new StringBuffer();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+
+        int [] bytesRead = new int[1];
+        char [] charBuffer = new char [2*(segment1.length + segment2.length)];
+        int count1 = 0, count2 = 0;
+
+        count1 = myDecompressor.decompress(segment1, 0, segment1.length,
+                                           bytesRead,
+                                           charBuffer, 0, charBuffer.length);
+        
+        logln("Segment 1 (" + segment1.length + " bytes) " +
+                "decompressed into " + count1  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, 0, count1);
+        s.append(charBuffer, 0, count1);
+
+        count2 = myDecompressor.decompress(segment2, 0, segment2.length,
+                                           bytesRead,
+                                           charBuffer, count1, 
+                                           charBuffer.length);
+        
+        logln("Segment 2 (" + segment2.length + " bytes) " +
+                "decompressed into " + count2  + " chars");
+        logln("Bytes consumed: " + bytesRead[0]);
+
+        logln("Got chars: ");
+        logln(charBuffer, count1, count2);
+        
+        s.append(charBuffer, count1, count2);
+
+        logln("Result: ");
+        logln(charBuffer, 0, count1 + count2);
+        logln("====================");
+
+        return s.toString();
+    }
+
+
+    public void testDecompression() throws Exception {
+        String result;
+
+        // compressed segment breaking on a define window sequence
+        /*                   B     o     o     t     h     SD1  */
+        byte [] segment1 = { 0x42, 0x6f, 0x6f, 0x74, 0x68, 0x19 };
+
+        // continuation
+        /*                   IDX   ,           S     .          */
+        byte [] segment2 = { 0x01, 0x2c, 0x20, 0x53, 0x2e };
+        
+        result = decompressTest(segment1, segment2);
+        if(! result.equals("Booth, S.")) {
+        	errln("Decompression test failed");
+        	return;
+		}
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   B     o     o     t     SQU        */
+        byte [] segment3 = { 0x42, 0x6f, 0x6f, 0x74, 0x0e, 0x00 };
+
+        // continuation
+        /*                   h     ,           S     .          */
+        byte [] segment4 = { 0x68, 0x2c, 0x20, 0x53, 0x2e };
+
+        result = decompressTest(segment3, segment4);
+        if(! result.equals("Booth, S.")) {
+        	errln("Decompression test failed");
+        	return;
+		}
+
+
+        // compressed segment breaking on a quote unicode sequence
+        /*                   SCU   UQU                         */
+        byte [] segment5 = { 0x0f, (byte)0xf0, 0x00 };
+
+        // continuation
+        /*                   B                                 */
+        byte [] segment6 = { 0x42 };
+
+        result = decompressTest(segment5, segment6);
+        if(! result.equals("B")) {
+        	errln("Decompression test failed");
+        	return;
+		}
+    }
+
+};
diff --git a/src/com/ibm/test/compression/ExhaustiveTest.java b/src/com/ibm/test/compression/ExhaustiveTest.java
new file mode 100755
index 0000000..0a2c399
--- /dev/null
+++ b/src/com/ibm/test/compression/ExhaustiveTest.java
@@ -0,0 +1,529 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/compression/Attic/ExhaustiveTest.java,v $ 
+ * $Date: 2000/03/10 03:47:46 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.compression;
+
+import com.ibm.text.UnicodeCompressor;
+import com.ibm.text.UnicodeDecompressor;
+import java.util.Random;
+import com.ibm.test.TestFmwk;
+
+public class ExhaustiveTest extends TestFmwk {
+	public static void main(String args[]) throws Exception {
+		new ExhaustiveTest().run(args);
+	}
+
+    /** Test simple compress/decompress API, returning # of errors */
+	public void testSimple() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            simpleTest(fTestCases[i]);
+        }
+	}
+    private void simpleTest(String s) throws Exception {
+        byte [] compressed = UnicodeCompressor.compress(s);
+        String res = UnicodeDecompressor.decompress(compressed);
+        if (logDiffs(s.toCharArray(), s.length(), 
+                res.toCharArray(), res.length()) == false) {
+            logln(s.length() + " chars ===> " 
+                    + compressed.length + " bytes ===> " 
+                    + res.length() + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(compressed, compressed.length);
+            errln("testSimple did not compress correctly");
+        }
+    }
+
+    /** Test iterative compress/decompress API, returning # of errors */
+    public void testIterative() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myTest(char[] chars, int len) {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        int myByteCount = 0;
+        int myCharCount = 0;
+        int myCompressedSize = Math.max(512, 3*len);
+        byte[] myCompressed = new byte[myCompressedSize];
+        int myDecompressedSize = Math.max(2, 2 * len);
+        char[] myDecompressed = new char[myDecompressedSize];
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        myByteCount = myCompressor.compress(chars, 0, len, unicharsRead,
+                myCompressed, 0, myCompressedSize);
+
+        myCharCount = myDecompressor.decompress(myCompressed, 0, myByteCount,
+                bytesRead, myDecompressed, 0, myDecompressedSize);
+
+        if (logDiffs(chars, len, myDecompressed, myCharCount) == false) {
+            logln(len + " chars ===> " 
+                    + myByteCount + " bytes ===> " 
+                    + myCharCount + " chars");
+        } else {
+            logln("Compressed:");
+            printBytes(myCompressed, myByteCount);
+            errln("Iterative test failed");
+        }
+    }
+
+    /** Test iterative compress/decompress API */
+    public void testMultipass() throws Exception {
+        for(int i = 0; i < fTestCases.length; i++) {
+            myMultipassTest(fTestCases[i].toCharArray(), fTestCases[i].length());
+        }
+    }
+    private void myMultipassTest(char [] chars, int len) throws Exception {
+        UnicodeCompressor myCompressor = new UnicodeCompressor();
+        UnicodeDecompressor myDecompressor = new UnicodeDecompressor();
+        
+        // variables for my compressor
+        
+        // for looping
+        int byteBufferSize = 4;//Math.max(4, len / 4);
+        byte[] byteBuffer = new byte [byteBufferSize];
+        // real target
+        int compressedSize = Math.max(512, 3 * len);
+        byte[] compressed = new byte[compressedSize];
+
+        // for looping
+        int unicharBufferSize = 2;//byteBufferSize;
+        char[] unicharBuffer = new char[unicharBufferSize];
+        // real target
+        int decompressedSize = Math.max(2, 2 * len);
+        char[] decompressed = new char[decompressedSize];
+
+        int bytesWritten = 0;
+        int unicharsWritten = 0;
+
+        int[] unicharsRead = new int[1];
+        int[] bytesRead = new int[1];
+        
+        int totalCharsCompressed = 0;
+        int totalBytesWritten = 0;
+
+        int totalBytesDecompressed  = 0;
+        int totalCharsWritten = 0;
+
+        boolean err = false;
+
+
+        // perform the compression in a loop
+        do {
+            
+            // do the compression
+            bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+                   len, unicharsRead, byteBuffer, 0, byteBufferSize);
+
+            // copy the current set of bytes into the target buffer
+            System.arraycopy(byteBuffer, 0, compressed, 
+                   totalBytesWritten, bytesWritten);
+            
+            // update the no. of characters compressed
+            totalCharsCompressed += unicharsRead[0];
+            
+            // update the no. of bytes written
+            totalBytesWritten += bytesWritten;
+            
+            /*System.out.logln("Compression pass complete.  Compressed "
+                               + unicharsRead[0] + " chars into "
+                               + bytesWritten + " bytes.");*/
+        } while(totalCharsCompressed < len);
+
+        if (totalCharsCompressed != len) {
+            errln("ERROR: Number of characters compressed("
+                    + totalCharsCompressed + ") != len(" + len + ")");
+        } else {
+            logln("MP: " + len + " chars ===> " + totalBytesWritten + " bytes.");
+        }
+        
+        // perform the decompression in a loop
+        do {
+            
+            // do the decompression
+            unicharsWritten = myDecompressor.decompress(compressed, 
+                    totalBytesDecompressed, totalBytesWritten, 
+                    bytesRead, unicharBuffer, 0, unicharBufferSize);
+
+            // copy the current set of chars into the target buffer
+            System.arraycopy(unicharBuffer, 0, decompressed, 
+                    totalCharsWritten, unicharsWritten);
+            
+            // update the no. of bytes decompressed
+            totalBytesDecompressed += bytesRead[0];
+            
+            // update the no. of chars written
+            totalCharsWritten += unicharsWritten;
+            
+            /*System.out.logln("Decompression pass complete.  Decompressed "
+                               + bytesRead[0] + " bytes into "
+                               + unicharsWritten + " chars.");*/
+        } while (totalBytesDecompressed < totalBytesWritten);
+
+        if (totalBytesDecompressed != totalBytesWritten) {
+            errln("ERROR: Number of bytes decompressed(" 
+                    + totalBytesDecompressed 
+                    + ") != totalBytesWritten(" 
+                    + totalBytesWritten + ")");
+        } else {
+            logln("MP: " + totalBytesWritten
+                    + " bytes ===> " + totalCharsWritten + " chars.");
+        }
+        
+        if (logDiffs(chars, len, decompressed, totalCharsWritten)) {
+            errln("ERROR: buffer contents incorrect");
+        }
+    }
+
+    /** Print differences between two character buffers */
+    private boolean logDiffs(char[] s1, int s1len, char[] s2, int s2len) {
+        boolean result  = false;
+        
+        if(s1len != s2len) {
+            logln("====================");
+            logln("Length doesn't match: expected " + s1len
+                               + ", got " + s2len);
+            logln("Expected:");
+            printChars(s1, s1len);
+            logln("Got:");
+            printChars(s2, s2len);
+            result = true;
+        }
+        
+        int len = Math.min(s1len, s2len);
+        for(int i = 0; i < len; ++i) {
+            if(s1[i] != s2[i]) {
+                if(result == false) {
+                    logln("====================");
+                }
+                logln("First difference at char " + i);
+                logln("Exp. char: " + Integer.toHexString(s1[i]));
+                logln("Got char : " + Integer.toHexString(s2[i]));
+                logln("Expected:");
+                printChars(s1, s1len);
+                logln("Got:");
+                printChars(s2, s2len);
+                result = true;
+                break;
+            }
+        }
+    
+        return result;
+    }
+
+    // generate a string of characters, with simulated runs of characters
+    private static char[] randomChars(int len, Random random) {
+        char[] result = new char [len];
+        int runLen = 0;
+        int used = 0;
+        
+        while(used < len) {
+            runLen = (int) (30 * random.nextDouble());
+            if(used + runLen >= len) {
+                runLen = len - used;
+            }
+            randomRun(result, used, runLen, random);
+            used += runLen;
+        }
+    
+        return result;
+    }
+
+    // generate a run of characters in a "window"
+    private static void randomRun(char[] target, int pos, int len, Random random) {
+        int offset = (int) (0xFFFF * random.nextDouble());
+
+        // don't overflow 16 bits
+        if(offset > 0xFF80) {
+            offset = 0xFF80;
+        }
+
+        for(int i = pos; i < pos + len; i++) {
+            target[i] = (char)(offset + (0x7F * random.nextDouble()));
+        }
+    }
+
+    private static final String [] fTestCases = {
+        "Hello \u9292 \u9192 World!",
+        "Hell\u0429o \u9292 \u9192 W„rld!",
+        "Hell\u0429o \u9292 \u9292W„rld!",
+
+        "\u0648\u06c8", // catch missing reset
+        "\u0648\u06c8",
+
+        "\u4444\uE001", // lowest quotable
+        "\u4444\uf2FF", // highest quotable
+        "\u4444\uf188\u4444",
+        "\u4444\uf188\uf288",
+        "\u4444\uf188abc\0429\uf288",
+        "\u9292\u2222",
+        "Hell\u0429\u04230o \u9292 \u9292W„\u0192rld!",
+        "Hell\u0429o \u9292 \u9292W„rld!",
+        "Hello World!123456",
+        "Hello W\u0081\u011f\u0082!", // Latin 1 run
+
+        "abc\u0301\u0302",  // uses SQn for u301 u302
+        "abc\u4411d",      // uses SQU
+        "abc\u4411\u4412d",// uses SCU
+        "abc\u0401\u0402\u047f\u00a5\u0405", // uses SQn for ua5
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000", // SJIS like data
+        "\u9292\u2222",
+        "\u9191\u9191\u3041\u9191\u3041\u3041\u3000",
+        "\u9999\u3051\u300c\u9999\u9999\u3060\u9999\u3065\u3065\u3065\u300c",
+        "\u3000\u266a\u30ea\u30f3\u30b4\u53ef\u611b\u3044\u3084\u53ef\u611b\u3044\u3084\u30ea\u30f3\u30b4\u3002",
+
+        "", // empty input
+        "\u0000", // smallest BMP character
+        "\uFFFF", // largest BMP character
+
+        "\ud800\udc00", // smallest surrogate
+        "\ud8ff\udcff", // largest surrogate pair
+        
+        // regression tests
+        "\u6441\ub413\ua733\uf8fe\ueedb\u587f\u195f\u4899\uf23d\u49fd\u0aac\u5792\ufc22\ufc3c\ufc46\u00aa",
+        "\u30f9\u8321\u05e5\u181c\ud72b\u2019\u99c9\u2f2f\uc10c\u82e1\u2c4d\u1ebc\u6013\u66dc\ubbde\u94a5\u4726\u74af\u3083\u55b9\u000c",
+        "\u0041\u00df\u0401\u015f",
+        "\u9066\u2123abc",
+        "\ud266\u43d7\\\ue386\uc9c0\u4a6b\u9222\u901f\u7410\ua63f\u539b\u9596\u482e\u9d47\ucfe4\u7b71\uc280\uf26a\u982f\u862a\u4edd\uf513\ufda6\u869d\u2ee0\ua216\u3ff6\u3c70\u89c0\u9576\ud5ec\ubfda\u6cca\u5bb3\ubcea\u554c\u914e\ufa4a\uede3\u2990\ud2f5\u2729\u5141\u0f26\uccd8\u5413\ud196\ubbe2\u51b9\u9b48\u0dc8\u2195\u21a2\u21e9\u00e4\u9d92\u0bc0\u06c5",
+        "\uf95b\u2458\u2468\u0e20\uf51b\ue36e\ubfc1\u0080\u02dd\uf1b5\u0cf3\u6059\u7489"
+
+    };
+
+    //==========================
+    // Compression modes
+    //==========================
+    private final static int SINGLEBYTEMODE                 = 0;
+    private final static int UNICODEMODE                        = 1;
+    
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    private final static int SDEFINEX                   = 0x0B;
+    private final static int SRESERVED                  = 0x0C;             // this is a reserved value
+    private final static int SQUOTEU                    = 0x0E;
+    private final static int SSWITCHU                   = 0x0F;
+
+        private final static int SQUOTE0                        = 0x01;
+        private final static int SQUOTE1                        = 0x02;
+        private final static int SQUOTE2                        = 0x03;
+        private final static int SQUOTE3                        = 0x04;
+        private final static int SQUOTE4                        = 0x05;
+        private final static int SQUOTE5                        = 0x06;
+        private final static int SQUOTE6                            = 0x07;
+        private final static int SQUOTE7                        = 0x08;
+
+        private final static int SSWITCH0                       = 0x10;
+        private final static int SSWITCH1                       = 0x11;
+        private final static int SSWITCH2                       = 0x12;
+        private final static int SSWITCH3                       = 0x13;
+        private final static int SSWITCH4                       = 0x14;
+        private final static int SSWITCH5                       = 0x15;
+        private final static int SSWITCH6                       = 0x16;
+        private final static int SSWITCH7                       = 0x17;
+
+        private final static int SDEFINE0                       = 0x18;
+        private final static int SDEFINE1                       = 0x19;
+        private final static int SDEFINE2                       = 0x1A;
+        private final static int SDEFINE3                       = 0x1B;
+        private final static int SDEFINE4                       = 0x1C;
+        private final static int SDEFINE5                       = 0x1D;
+        private final static int SDEFINE6                       = 0x1E;
+        private final static int SDEFINE7                       = 0x1F;
+
+        //==========================
+        // Unicode mode tags
+        //==========================
+        private final static int USWITCH0                       = 0xE0;
+        private final static int USWITCH1                       = 0xE1;
+        private final static int USWITCH2                       = 0xE2;
+        private final static int USWITCH3                       = 0xE3;
+        private final static int USWITCH4                       = 0xE4;
+        private final static int USWITCH5                       = 0xE5;
+        private final static int USWITCH6                       = 0xE6;
+        private final static int USWITCH7                       = 0xE7;
+
+        private final static int UDEFINE0                       = 0xE8;
+        private final static int UDEFINE1                       = 0xE9;
+        private final static int UDEFINE2                       = 0xEA;
+        private final static int UDEFINE3                       = 0xEB;
+        private final static int UDEFINE4                       = 0xEC;
+        private final static int UDEFINE5                       = 0xED;
+        private final static int UDEFINE6                       = 0xEE;
+        private final static int UDEFINE7                       = 0xEF;
+
+        private final static int UQUOTEU                        = 0xF0;
+        private final static int UDEFINEX                       = 0xF1;
+        private final static int URESERVED                      = 0xF2;         // this is a reserved value
+
+    /* Print out an array of characters, with non-printables (for me) 
+       displayed as hex values */
+    private void printChars(char[] chars, int len) {
+        for(int i = 0; i < len; i++) {
+            int c = (int)chars[i];
+            if(c < 0x0020 || c >= 0x7f) {
+                log("[0x");
+                log(Integer.toHexString(c));
+                log("]");
+            } else {
+                log(String.valueOf((char)c));
+            }
+        }
+        logln("");
+    }
+
+    private void printBytes(byte[] byteBuffer, int len) {
+        int curByteIndex = 0;
+        int byteBufferLimit = len;
+        int mode = SINGLEBYTEMODE;
+        int aByte = 0x00;
+        
+        if(len > byteBuffer.length) {
+            logln("Warning: printBytes called with length too large. Truncating");
+            byteBufferLimit = byteBuffer.length;;
+        }
+        
+        while(curByteIndex < byteBufferLimit) {
+            switch(mode) {  
+            case SINGLEBYTEMODE:
+                while(curByteIndex < byteBufferLimit 
+                      && mode == SINGLEBYTEMODE)  {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        break;
+                        // quote unicode
+                    case SQUOTEU:
+                        log("SQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // switch to Unicode mode
+                    case SSWITCHU:
+                        log("SSWITCHU ");
+                        mode = UNICODEMODE;
+                        break;
+                        
+                        // handle all quote tags
+                    case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+                    case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+                        log("SQUOTE" + (aByte - SQUOTE0) + " ");
+                        if(curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case SSWITCH0: case SSWITCH1: case SSWITCH2: case SSWITCH3:
+                    case SSWITCH4: case SSWITCH5: case SSWITCH6: case SSWITCH7:
+                        log("SSWITCH" + (aByte - SSWITCH0) + " ");
+                        break;
+                                        
+                        // handle all define tags
+                    case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+                    case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+                        log("SDEFINE" + (aByte - SDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle define extended tag
+                    case SDEFINEX:
+                        log("SDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            case UNICODEMODE:
+                while(curByteIndex < byteBufferLimit && mode == UNICODEMODE) {
+                    aByte = ((int)byteBuffer[curByteIndex++]) & 0xFF;
+                    switch(aByte) {
+                        // handle all define tags
+                    case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+                    case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+                        log("UDEFINE" + (aByte - UDEFINE0) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // handle define extended tag
+                    case UDEFINEX:
+                        log("UDEFINEX ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                        // handle all switch tags
+                    case USWITCH0: case USWITCH1: case USWITCH2: case USWITCH3:
+                    case USWITCH4: case USWITCH5: case USWITCH6: case USWITCH7:
+                        log("USWITCH" + (aByte - USWITCH0) + " ");
+                        mode = SINGLEBYTEMODE;
+                        break;
+                        
+                        // quote unicode
+                    case UQUOTEU:
+                        log("UQUOTEU ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    default:
+                        log(Integer.toHexString(((int) aByte) & 0xFF) + " ");
+                        if (curByteIndex < byteBufferLimit) {
+                            log(Integer.toHexString(((int) byteBuffer[curByteIndex++]) & 0xFF) + " ");
+                        }
+                        break;
+                        
+                    } // end switch
+                } // end while
+                break;
+                
+            } // end switch( mode )
+        } // end while
+        
+        logln("");
+    }    
+}
+
+
+
+
+
+
diff --git a/src/com/ibm/test/normalizer/BasicTest.java b/src/com/ibm/test/normalizer/BasicTest.java
new file mode 100755
index 0000000..e732968
--- /dev/null
+++ b/src/com/ibm/test/normalizer/BasicTest.java
@@ -0,0 +1,340 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/normalizer/Attic/BasicTest.java,v $ 
+ * $Date: 2000/03/10 03:47:46 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.normalizer;
+
+import com.ibm.test.*;
+import com.ibm.text.*;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+public class BasicTest extends TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new BasicTest().run(args);
+    }
+
+    String[][] canonTests = {
+        // Input                Decomposed              Composed
+        { "cat",                "cat",                  "cat"               },
+        { "\u00e0ardvark",      "a\u0300ardvark",       "\u00e0ardvark",    },
+
+        { "\u1e0a",             "D\u0307",              "\u1e0a"            }, // D-dot_above
+        { "D\u0307",            "D\u0307",              "\u1e0a"            }, // D dot_above
+
+        { "\u1e0c\u0307",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_below dot_above
+        { "\u1e0a\u0323",       "D\u0323\u0307",        "\u1e0c\u0307"      }, // D-dot_above dot_below
+        { "D\u0307\u0323",      "D\u0323\u0307",        "\u1e0c\u0307"      }, // D dot_below dot_above
+
+        { "\u1e10\u0307\u0323", "D\u0327\u0323\u0307",  "\u1e10\u0323\u0307"}, // D dot_below cedilla dot_above
+        { "D\u0307\u0328\u0323","D\u0328\u0323\u0307",  "\u1e0c\u0328\u0307"}, // D dot_above ogonek dot_below
+
+        { "\u1E14",             "E\u0304\u0300",        "\u1E14"            }, // E-macron-grave
+        { "\u0112\u0300",       "E\u0304\u0300",        "\u1E14"            }, // E-macron + grave
+        { "\u00c8\u0304",       "E\u0300\u0304",        "\u00c8\u0304"      }, // E-grave + macron
+
+        { "\u212b",             "A\u030a",              "\u00c5"            }, // angstrom_sign
+        { "\u00c5",             "A\u030a",              "\u00c5"            }, // A-ring
+
+//        { "ýffin",              "A\u0308ffin",          "ýffin"             },
+        { "ýffin",              "y\u0301ffin",          "ýffin"             },	//updated with 3.0
+//        { "ý\uFB03n",           "A\u0308\uFB03n",       "ý\uFB03n"          },
+        { "ý\uFB03n",           "y\u0301\uFB03n",       "ý\uFB03n"          },	//updated with 3.0
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry \u2163",         "Henry \u2163"      },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+        { "\uFF76\uFF9E",       "\uFF76\uFF9E",         "\uFF76\uFF9E"      }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\uFF9E",         "\u30AB\uFF9E"      }, // ka + hw_ten
+        { "\uFF76\u3099",       "\uFF76\u3099",         "\uFF76\u3099"      }, // hw_ka + ten
+    };
+
+    String[][] compatTests = {
+            // Input                Decomposed              Composed
+        { "\uFB4f",             "\u05D0\u05DC",         "\u05D0\u05DC",     }, // Alef-Lamed vs. Alef, Lamed
+
+//        { "ýffin",              "A\u0308ffin",          "ýffin"             },
+//       { "ý\uFB03n",           "A\u0308ffin",          "ýffin"             }, // ffi ligature -> f + f + i
+        { "ýffin",              "y\u0301ffin",          "ýffin"             },	//updated for 3.0
+        { "ý\uFB03n",           "y\u0301ffin",          "ýffin"             }, // ffi ligature -> f + f + i
+
+        { "Henry IV",           "Henry IV",             "Henry IV"          },
+        { "Henry \u2163",       "Henry IV",             "Henry IV"          },
+
+        { "\u30AC",             "\u30AB\u3099",         "\u30AC"            }, // ga (Katakana)
+        { "\u30AB\u3099",       "\u30AB\u3099",         "\u30AC"            }, // ka + ten
+
+        { "\uFF76\u3099",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + ten
+
+        /* These two are broken in Unicode 2.1.2 but fixed in 2.1.5 and later
+        { "\uFF76\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // hw_ka + hw_ten
+        { "\u30AB\uFF9E",       "\u30AB\u3099",         "\u30AC"            }, // ka + hw_ten
+        */
+    };
+
+    // With Canonical decomposition, Hangul syllables should get decomposed
+    // into Jamo, but Jamo characters should not be decomposed into
+    // conjoining Jamo
+    String[][] hangulCanon = {
+        // Input                Decomposed              Composed
+        { "\ud4db",             "\u1111\u1171\u11b6",   "\ud4db"        },
+        { "\u1111\u1171\u11b6", "\u1111\u1171\u11b6",   "\ud4db"        },
+    };
+
+    // With compatibility decomposition turned on,
+    // it should go all the way down to conjoining Jamo characters.
+    // THIS IS NO LONGER TRUE IN UNICODE v2.1.8, SO THIS TEST IS OBSOLETE
+    String[][] hangulCompat = {
+        // Input        Decomposed                          Composed
+        // { "\ud4db",     "\u1111\u116e\u1175\u11af\u11c2",   "\ud478\u1175\u11af\u11c2"  },
+    };
+
+    public void TestHangulCompose() {
+        // Make sure that the static composition methods work
+        logln("Canonical composition...");
+        staticTest(Normalizer.COMPOSE,        0, hangulCanon,  2);
+        logln("Compatibility composition...");
+        staticTest(Normalizer.COMPOSE_COMPAT, 0, hangulCompat, 2);
+
+        // Now try iterative composition....
+        logln("Static composition...");
+        Normalizer norm = new Normalizer("", Normalizer.COMPOSE, 0);
+        iterateTest(norm, hangulCanon, 2);
+
+        norm.setMode(Normalizer.COMPOSE_COMPAT);
+        iterateTest(norm, hangulCompat, 2);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.COMPOSE);
+        backAndForth(norm, hangulCanon);
+    }
+
+    public void TestHangulDecomp() {
+        // Make sure that the static decomposition methods work
+        logln("Canonical decomposition...");
+        staticTest(Normalizer.DECOMP,        0, hangulCanon,  1);
+        logln("Compatibility decomposition...");
+        staticTest(Normalizer.DECOMP_COMPAT, 0, hangulCompat, 1);
+
+        // Now the iterative decomposition methods...
+        logln("Iterative decomposition...");
+        Normalizer norm = new Normalizer("", Normalizer.DECOMP, 0);
+        iterateTest(norm, hangulCanon, 1);
+
+        norm.setMode(Normalizer.DECOMP_COMPAT);
+        iterateTest(norm, hangulCompat, 1);
+
+        // And finally, make sure you can do it in reverse too
+        logln("Reverse iteration...");
+        norm.setMode(Normalizer.DECOMP);
+        backAndForth(norm, hangulCanon);
+    }
+
+    public void TestPrevious() {
+        Normalizer norm = new Normalizer("", Normalizer.DECOMP, 0);
+
+        logln("testing decomp...");
+        backAndForth(norm, canonTests);
+
+        logln("testing compose...");
+        norm.setMode(Normalizer.COMPOSE);
+        backAndForth(norm, canonTests);
+    }
+
+    public void TestDecomp() {
+        Normalizer norm = new Normalizer("", Normalizer.DECOMP, 0);
+        iterateTest(norm, canonTests, 1);
+
+        staticTest(Normalizer.DECOMP, 0, canonTests, 1);
+    }
+
+    public void TestCompatDecomp() {
+        Normalizer norm = new Normalizer("", Normalizer.DECOMP_COMPAT, 0);
+        iterateTest(norm, compatTests, 1);
+
+        staticTest(Normalizer.DECOMP_COMPAT, 0, compatTests, 1);
+    }
+
+    public void TestCanonCompose() {
+        Normalizer norm = new Normalizer("", Normalizer.COMPOSE, 0);
+        iterateTest(norm, canonTests, 2);
+
+        staticTest(Normalizer.COMPOSE, 0, canonTests, 2);
+    }
+
+    public void TestCompatCompose() {
+        Normalizer norm = new Normalizer("", Normalizer.COMPOSE_COMPAT, 0);
+        iterateTest(norm, compatTests, 2);
+
+        staticTest(Normalizer.COMPOSE_COMPAT, 0, compatTests, 2);
+    }
+
+    public void TestExplodingBase() {
+        // \u017f - Latin small letter long s
+        // \u0307 - combining dot above
+        // \u1e61 - Latin small letter s with dot above
+        // \u1e9b - Latin small letter long s with dot above
+        String[][] canon = {
+            // Input                Decomposed              Composed
+            { "Tschu\u017f",        "Tschu\u017f",          "Tschu\u017f"       },
+            { "Tschu\u1e9b",        "Tschu\u017f\u0307",    "Tschu\u1e9b"       },
+        };
+        String[][] compat = {
+            // Input                Decomposed              Composed
+            { "\u017f",        "s",              "s"           },
+            { "\u1e9b",        "s\u0307",        "\u1e61"      },
+        };
+
+        staticTest(Normalizer.DECOMP,           0, canon,  1);
+        staticTest(Normalizer.COMPOSE,          0, canon,  2);
+
+        staticTest(Normalizer.DECOMP_COMPAT,    0, compat, 1);
+        staticTest(Normalizer.COMPOSE_COMPAT,   0, compat, 2);
+
+        Normalizer norm = new Normalizer("", Normalizer.DECOMP_COMPAT);
+        iterateTest(norm, compat, 1);
+        backAndForth(norm, compat);
+
+        norm.setMode(Normalizer.COMPOSE_COMPAT);
+        iterateTest(norm, compat, 2);
+        backAndForth(norm, compat);
+    }
+
+
+    /** The Tibetan vowel sign AA, 0f71, was messed up prior to Unicode version 2.1.9
+     & Once 2.1.9 or 3.0 is released, uncomment this test
+    public void TestTibetan() {
+        String[][] decomp = {
+            { "\u0f77", "\u0f77", "\u0fb2\u0f71\u0f80" }
+        };
+        String[][] compose = {
+            { "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80", "\u0fb2\u0f71\u0f80" }
+        };
+
+        staticTest(Normalizer.DECOMP,           0, decomp, 1);
+        staticTest(Normalizer.DECOMP_COMPAT,    0, decomp, 2);
+        staticTest(Normalizer.COMPOSE,          0, compose, 1);
+        staticTest(Normalizer.COMPOSE_COMPAT,   0, compose, 2);
+    }
+    */
+
+
+    //------------------------------------------------------------------------
+    // Internal utilities
+    //
+
+    private void backAndForth(Normalizer iter, String input)
+    {
+        iter.setText(input);
+
+        // Run through the iterator forwards and stick it into a StringBuffer
+        StringBuffer forward =  new StringBuffer();
+        for (char ch = iter.first(); ch != iter.DONE; ch = iter.next()) {
+            forward.append(ch);
+        }
+
+        // Now do it backwards
+        StringBuffer reverse = new StringBuffer();
+        for (char ch = iter.last(); ch != iter.DONE; ch = iter.previous()) {
+            reverse.insert(0, ch);
+        }
+
+        if (!forward.toString().equals(reverse.toString())) {
+            errln("Forward/reverse mismatch for input " + hex(input)
+                  + ", forward: " + hex(forward) + ", backward: " + hex(reverse));
+        }
+    }
+
+    private void backAndForth(Normalizer iter, String[][] tests)
+    {
+        for (int i = 0; i < tests.length; i++)
+        {
+            iter.setText(tests[i][0]);
+
+            // Run through the iterator forwards and stick it into a StringBuffer
+            StringBuffer forward =  new StringBuffer();
+            for (char ch = iter.first(); ch != iter.DONE; ch = iter.next()) {
+                forward.append(ch);
+            }
+
+            // Now do it backwards
+            StringBuffer reverse = new StringBuffer();
+            for (char ch = iter.last(); ch != iter.DONE; ch = iter.previous()) {
+                reverse.insert(0, ch);
+            }
+
+            if (!forward.toString().equals(reverse.toString())) {
+                errln("Forward/reverse mismatch for input " + hex(tests[i][0])
+                    + ", forward: " + hex(forward) + ", backward: " + hex(reverse));
+            }
+        }
+    }
+
+    private void staticTest(Normalizer.Mode mode, int options, String[][] tests, int outCol)
+    {
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = tests[i][0];
+            String expect = tests[i][outCol];
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            String output = Normalizer.normalize(input, mode, options);
+
+            if (!output.equals(expect)) {
+                errln("ERROR: case " + i
+                    + " expected '" + expect + "' (" + hex(expect) + ")"
+                    + " but got '" + output + "' (" + hex(output) + ")" );
+            }
+        }
+    }
+
+    private void iterateTest(Normalizer iter, String[][] tests, int outCol)
+    {
+        for (int i = 0; i < tests.length; i++)
+        {
+            String input = tests[i][0];
+            String expect = tests[i][outCol];
+
+            logln("Normalizing '" + input + "' (" + hex(input) + ")" );
+
+            iter.setText(input);
+            assertEqual(expect, iter, "ERROR: case " + i + " ");
+        }
+    }
+
+    private void assertEqual(String expected, Normalizer iter, String errPrefix)
+    {
+        int index = 0;
+        for (char ch = iter.first(); ch != iter.DONE; ch = iter.next())
+        {
+            if (index >= expected.length()) {
+                errln(errPrefix + "Unexpected character '" + ch + "' (" + hex(ch) + ")"
+                        + " at index " + index);
+                break;
+            }
+            char want = expected.charAt(index);
+            if (ch != want) {
+                errln(errPrefix + "got '" + ch + "' (" + hex(ch) + ")"
+                        + " but expected '" + want + "' (" + hex(want) + ")"
+                        + " at index " + index);
+            }
+            index++;
+        }
+        if (index < expected.length()) {
+            errln(errPrefix + "Only got " + index + " chars, expected " + expected.length());
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/test/normalizer/ExhaustiveTest.java b/src/com/ibm/test/normalizer/ExhaustiveTest.java
new file mode 100755
index 0000000..dd9e0ff
--- /dev/null
+++ b/src/com/ibm/test/normalizer/ExhaustiveTest.java
@@ -0,0 +1,146 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/normalizer/Attic/ExhaustiveTest.java,v $ 
+ * $Date: 2000/03/10 03:47:46 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.normalizer;
+
+import com.ibm.test.*;
+import com.ibm.text.*;
+
+public class ExhaustiveTest extends TestFmwk
+{
+    private UInfo info;
+	
+    public static void main(String[] args) throws Exception
+    {
+    	UInfo tempInfo = null;
+        String[] tempArgs = new String[args.length];
+        int count = 0;
+
+        // Allow the test to be pointed at a specific version of the Unicode database
+        for (int i = 0; i < args.length; i++)
+        {
+            if (args[i].equals("-data")) {
+                tempInfo = new UInfo(args[++i]);
+            } else {
+                tempArgs[count++] = args[i];
+            }
+        }
+
+        args = new String[count];
+        System.arraycopy(tempArgs, 0, args, 0, count);
+
+
+        if (tempInfo == null) {
+            tempInfo = new UInfo("../src/data/unicode/UnicodeData.txt");
+	    }
+        new ExhaustiveTest(tempInfo).run(args);
+    }
+    
+    public ExhaustiveTest() {
+    	this.info = new UInfo();
+    }
+
+    public ExhaustiveTest(UInfo info) {
+    	this.info = info;
+    }
+
+
+    /**
+     * Run through all of the characters returned by a composed-char iterator
+     * and make sure that:
+     * <ul>
+     * <li>a) They do indeed have decompositions.
+     * <li>b) The decomposition according to the iterator is the same as
+     *          returned by Normalizer.decompose().
+     * <li>c) All characters <em>not</em> returned by the iterator do not
+     *          have decompositions.
+     * </ul>
+     */
+    public void TestComposedCharIter() {
+        doTestComposedChars(false);
+    }
+
+    public void doTestComposedChars(boolean compat) {
+        int options = Normalizer.IGNORE_HANGUL;
+        ComposedCharIter iter = new ComposedCharIter(compat, options);
+
+        char lastChar = 0;
+
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            // Test all characters between the last one and this one to make
+            // sure that they don't have decompositions
+            assertNoDecomp(lastChar, ch, compat, options);
+            lastChar = ch;
+
+            // Now make sure that the decompositions for this character
+            // make sense
+            String chString   = new StringBuffer().append(ch).toString();
+            String iterDecomp = iter.decomposition();
+            String normDecomp = Normalizer.decompose(chString, compat, 0);
+
+            if (iterDecomp.equals(chString)) {
+                errln("ERROR: " + hex(ch) + " has identical decomp");
+            }
+            else if (!iterDecomp.equals(normDecomp)) {
+                errln("ERROR: Normalizer decomp for " + hex(ch) + " (" + hex(normDecomp) + ")"
+                    + " != iter decomp (" + hex(iterDecomp) + ")" );
+            }
+        }
+        assertNoDecomp(lastChar, '\uFFFF', compat, options);
+    }
+
+    void assertNoDecomp(char start, char limit, boolean compat, int options)
+    {
+        for (char x = ++start; x < limit; x++) {
+            String xString   = new StringBuffer().append(x).toString();
+            String decomp = Normalizer.decompose(xString, compat, options);
+            if (!decomp.equals(xString)) {
+                errln("ERROR: " + hex(x) + " has decomposition (" + hex(decomp) + ")"
+                    + " but was not returned by iterator");
+            }
+        }
+    }
+
+
+    public void TestRoundTrip() {
+        int options = Normalizer.IGNORE_HANGUL;
+        boolean compat = false;
+
+        ComposedCharIter iter = new ComposedCharIter(false, options);
+        while (iter.hasNext()) {
+            char ch = iter.next();
+
+            String chStr = new StringBuffer().append(ch).toString();
+            String decomp = Normalizer.decompose(chStr, compat, options);
+            String comp = Normalizer.compose(decomp, compat, options);
+
+            short cClass = info.getCanonicalClass(decomp.charAt(0));
+
+            if (info.isExcludedComposition(ch)) {
+                logln("Skipped excluded char " + hex(ch) + " (" + info.getName(ch,true) + ")" );
+                continue;
+            }
+
+            // Avoid disparaged characters
+            if (info.getDecomposition(ch).length() == 4) continue;
+
+            if (!comp.equals(chStr)) {
+                errln("ERROR: Round trip invalid: " + hex(chStr) + " --> " + hex(decomp)
+                    + " --> " + hex(comp));
+
+                errln("  char decomp is '" + info.getDecomposition(ch) + "'");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/test/rbbi/BreakIteratorRules_en_US_TEST.java b/src/com/ibm/test/rbbi/BreakIteratorRules_en_US_TEST.java
new file mode 100755
index 0000000..cae8e3f
--- /dev/null
+++ b/src/com/ibm/test/rbbi/BreakIteratorRules_en_US_TEST.java
@@ -0,0 +1,113 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/rbbi/Attic/BreakIteratorRules_en_US_TEST.java,v $ 
+ * $Date: 2000/03/10 03:47:46 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+import java.net.URL;
+
+/**
+ * This resource bundle is included for testing and demonstration purposes only.
+ * It applies the dictionary-based algorithm to English text that has had all the
+ * spaces removed.  Once we have good test cases for Thai, we will replace this
+ * with good resource data (and a good dictionary file) for Thai
+ */
+public class BreakIteratorRules_en_US_TEST extends ListResourceBundle {
+    public Object[][] getContents() {
+        URL url = getClass().getResource("english.dict");
+
+        // if dictionary wasn't found, then this resource bundle doesn't have
+        // much to contribute...
+        if (url == null) {
+            return new Object[0][0];
+        }
+        return new Object[][]  {
+        	// names of classes to instantiate for the different kinds of break
+        	// iterator.  Notice we're now using DictionaryBasedBreakIterator
+        	// for word and line breaking.
+        	{ "BreakIteratorClasses",
+            	new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                        	"DictionaryBasedBreakIterator",     // word-break iterator class
+                        	"DictionaryBasedBreakIterator",     // line-break iterator class
+                        	"RuleBasedBreakIterator" }          // sentence-break iterator class
+        	},
+	        
+        	// These are the same word-breaking rules as are specified in the default
+        	// resource, except that the Latin letters, apostrophe, and hyphen are
+        	// specified as dictionary characters
+        	{ "WordBreakRules",
+            	"$ignore=[[:Mn:][:Me:][:Cf:]];"
+            	+ "dictionary=[a-zA-z\\'\\-];"
+            	+ "kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+            	+ "kata=[\u30a1-\u30fa];"
+            	+ "hira=[\u3041-\u3094];"
+            	+ "cjk-diacrit=[\u3099-\u309c];"
+            	+ "let=[[:L:]^[{kanji}{kata}{hira}{cjk-diacrit}{dictionary}]];"
+            	+ "dgt=[[:N:]];"
+            	+ "mid-word=[[:Pd:]\u00ad\u2027\\\"\\\'\\.];"
+            	+ "mid-num=[\\\"\\\'\\,\u066b\\.];"
+            	+ "pre-num=[[:Sc:]\\#\\.^\u00a2];"
+            	+ "post-num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+            	+ "ls=[\n\u000c\u2028\u2029];"
+            	+ "ws=[[:Zs:]\t];"
+            	+ "word=({let}{let}*({mid-word}{let}{let}*)*|[a-zA-Z][a-z\\'\\-]*);"
+            	+ "number=({dgt}{dgt}*({mid-num}{dgt}{dgt}*)*);"
+            	+ ".;"
+            	+ "{{word}}({number}{word})*{{number}{{post-num}}};"
+            	+ "{pre-num}({number}{word})*{{number}{{post-num}}};"
+            	+ "{ws}*{\r}{{ls}};"
+            	+ "[{kata}{cjk-diacrit}]*;"
+            	+ "[{hira}{cjk-diacrit}]*;"
+            	+ "{kanji}*;" },
+	        
+        	// These are the same line-breaking rules as are specified in the default
+        	// resource, except that the Latin letters, apostrophe, and hyphen are
+        	// specified as dictionary characters
+        	{ "LineBreakRules",
+            	"<ignore>=[:Mn::Me::Cf:];"
+            	+ "<dictionary>=[a-zA-z\\'\\-];"
+            	+ "<break>=[\u0003\t\n\f\u2028\u2029];"
+            	+ "<nbsp>=[\u00a0\u2007\u2011\ufeff];"
+            	+ "<space>=[:Zs::Cc:^[<nbsp><break>\r]];"
+            	+ "<dash>=[:Pd:\u00ad^<nbsp>];"
+            	+ "<pre-word>=[:Sc::Ps:^\u00a2];"
+            	+ "<post-word>=[:Pe:\\!\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034\u2103"
+                    	+ "\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    	+ "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    	+ "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0e"
+                    	+ "\uff1f];"
+            	+ "<kanji>=[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa^[<post-word><ignore>]];"
+            	+ "<digit>=[:Nd::No:];"
+            	+ "<mid-num>=[\\.\\,];"
+            	+ "<char>=[^[<break><space><dash><kanji><nbsp><ignore><dictionary>\r]];"
+            	+ "<number>=([<pre-word><dash>]*<digit><digit>*(<mid-num><digit><digit>*)*);"
+            	+ "<word-core>=(<char>*|<kanji>|<number>|[a-zA-Z][a-z\\'\\-]*);"
+            	+ "<word-suffix>=((<dash><dash>*|<post-word>*)<space>*);"
+            	+ "<word>=(<pre-word>*<word-core><word-suffix>);"
+            	+ "<word>(<nbsp><nbsp>*<word>)*{\r}{<break>};" },
+	            
+        	// these two resources specify the pathnames of the dictionary files to
+        	// use for word breaking and line breaking.  Both currently refer to 
+        	// a file called english.dict placed in com\ibm\text\resources
+        	// somewhere in the class path.  It's important to note that
+        	// english.dict was created for testing purposes only, and doesn't
+        	// come anywhere close to being an exhaustive dictionary of English
+        	// words (basically, it contains all the words in the Declaration of
+        	// Independence, and the Revised Standard Version of the book of Genesis,
+        	// plus a few other words thrown in to show more interesting cases).
+	//        { "WordBreakDictionary", "com\\ibm\\text\\resources\\english.dict" },
+	//       { "LineBreakDictionary", "com\\ibm\\text\\resources\\english.dict" }
+        	{ "WordBreakDictionary", url },
+        	{ "LineBreakDictionary", url }
+    	};
+    }
+}
diff --git a/src/com/ibm/test/rbbi/BreakIteratorTest.java b/src/com/ibm/test/rbbi/BreakIteratorTest.java
new file mode 100755
index 0000000..fc05934
--- /dev/null
+++ b/src/com/ibm/test/rbbi/BreakIteratorTest.java
@@ -0,0 +1,1308 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/rbbi/Attic/BreakIteratorTest.java,v $ 
+ * $Date: 2000/03/10 03:47:46 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.rbbi;
+
+import com.ibm.test.*;
+import com.ibm.text.BreakIterator;
+import java.text.CharacterIterator;
+import com.ibm.text.StringCharacterIterator;
+import java.util.Locale;
+import java.util.Vector;
+import java.util.Enumeration;
+import java.io.*;
+
+public class BreakIteratorTest extends TestFmwk
+{
+    private BreakIterator characterBreak;
+    private BreakIterator wordBreak;
+    private BreakIterator lineBreak;
+    private BreakIterator sentenceBreak;
+
+    public static void main(String[] args) throws Exception {
+        new BreakIteratorTest().run(args);
+    }
+
+    public BreakIteratorTest()
+    {
+        characterBreak = BreakIterator.getCharacterInstance();
+        wordBreak = BreakIterator.getWordInstance();
+        lineBreak = BreakIterator.getLineInstance();
+System.out.println("Creating sentence iterator...");
+        sentenceBreak = BreakIterator.getSentenceInstance();
+System.out.println("Finished creating sentence iterator...");
+    }
+
+    //=========================================================================
+    // general test subroutines
+    //=========================================================================
+
+    private void generalIteratorTest(BreakIterator bi, Vector expectedResult) {
+        StringBuffer buffer = new StringBuffer();
+        String text;
+        for (int i = 0; i < expectedResult.size(); i++) {
+            text = (String)expectedResult.elementAt(i);
+            buffer.append(text);
+        }
+        text = buffer.toString();
+
+        bi.setText(text);
+
+        Vector nextResults = _testFirstAndNext(bi, text);
+        Vector previousResults = _testLastAndPrevious(bi, text);
+
+        logln("comparing forward and backward...");
+        int errs = getErrorCount();
+        compareFragmentLists("forward iteration", "backward iteration", nextResults,
+                        previousResults);
+        if (getErrorCount() == errs) {
+            logln("comparing expected and actual...");
+            compareFragmentLists("expected result", "actual result", expectedResult,
+                            nextResults);
+        }
+
+        int[] boundaries = new int[expectedResult.size() + 3];
+        boundaries[0] = BreakIterator.DONE;
+        boundaries[1] = 0;
+        for (int i = 0; i < expectedResult.size(); i++)
+            boundaries[i + 2] = boundaries[i + 1] + ((String)expectedResult.elementAt(i)).
+                            length();
+        boundaries[boundaries.length - 1] = BreakIterator.DONE;
+
+        _testFollowing(bi, text, boundaries);
+        _testPreceding(bi, text, boundaries);
+        _testIsBoundary(bi, text, boundaries);
+
+        doMultipleSelectionTest(bi, text);
+    }
+
+    private Vector _testFirstAndNext(BreakIterator bi, String text) {
+        int p = bi.first();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != 0)
+            errln("first() returned " + p + " instead of 0");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                if (p <= lastP)
+                    errln("next() failed to move forward: next() on position "
+                                    + lastP + " yielded " + p);
+
+                result.addElement(text.substring(lastP, p));
+            }
+            else {
+                if (lastP != text.length())
+                    errln("next() returned DONE prematurely: offset was "
+                                    + lastP + " instead of " + text.length());
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private Vector _testLastAndPrevious(BreakIterator bi, String text) {
+        int p = bi.last();
+        int lastP = p;
+        Vector result = new Vector();
+
+        if (p != text.length())
+            errln("last() returned " + p + " instead of " + text.length());
+        while (p != BreakIterator.DONE) {
+            p = bi.previous();
+            if (p != BreakIterator.DONE) {
+                if (p >= lastP)
+                    errln("previous() failed to move backward: previous() on position "
+                                    + lastP + " yielded " + p);
+
+                result.insertElementAt(text.substring(p, lastP), 0);
+            }
+            else {
+                if (lastP != 0)
+                    errln("previous() returned DONE prematurely: offset was "
+                                    + lastP + " instead of 0");
+            }
+            lastP = p;
+        }
+        return result;
+    }
+
+    private void compareFragmentLists(String f1Name, String f2Name, Vector f1, Vector f2) {
+        int p1 = 0;
+        int p2 = 0;
+        String s1;
+        String s2;
+        int t1 = 0;
+        int t2 = 0;
+
+        while (p1 < f1.size() && p2 < f2.size()) {
+            s1 = (String)f1.elementAt(p1);
+            s2 = (String)f2.elementAt(p2);
+            t1 += s1.length();
+            t2 += s2.length();
+
+            if (s1.equals(s2)) {
+                debugLogln("   >" + s1 + "<");
+                ++p1;
+                ++p2;
+            }
+            else {
+                int tempT1 = t1;
+                int tempT2 = t2;
+                int tempP1 = p1;
+                int tempP2 = p2;
+
+                while (tempT1 != tempT2 && tempP1 < f1.size() && tempP2 < f2.size()) {
+                    while (tempT1 < tempT2 && tempP1 < f1.size()) {
+                        tempT1 += ((String)f1.elementAt(tempP1)).length();
+                        ++tempP1;
+                    }
+                    while (tempT2 < tempT1 && tempP2 < f2.size()) {
+                        tempT2 += ((String)f2.elementAt(tempP2)).length();
+                        ++tempP2;
+                    }
+                }
+                logln("*** " + f1Name + " has:");
+                while (p1 <= tempP1 && p1 < f1.size()) {
+                    s1 = (String)f1.elementAt(p1);
+                    t1 += s1.length();
+                    debugLogln(" *** >" + s1 + "<");
+                    ++p1;
+                }
+                logln("***** " + f2Name + " has:");
+                while (p2 <= tempP2 && p2 < f2.size()) {
+                    s2 = (String)f2.elementAt(p2);
+                    t2 += s2.length();
+                    debugLogln(" ***** >" + s2 + "<");
+                    ++p2;
+                }
+                errln("Discrepancy between " + f1Name + " and " + f2Name);
+            }
+        }
+    }
+
+    private void _testFollowing(BreakIterator bi, String text, int[] boundaries) {
+        logln("testFollowing():");
+        int p = 2;
+        for (int i = 0; i <= text.length(); i++) {
+            if (i == boundaries[p])
+                ++p;
+
+            int b = bi.following(i);
+            logln("bi.following(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from following() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+        }
+    }
+
+    private void _testPreceding(BreakIterator bi, String text, int[] boundaries) {
+        logln("testPreceding():");
+        int p = 0;
+        for (int i = 0; i <= text.length(); i++) {
+            int b = bi.preceding(i);
+            logln("bi.preceding(" + i + ") -> " + b);
+            if (b != boundaries[p])
+                errln("Wrong result from preceding() for " + i + ": expected " + boundaries[p]
+                                + ", got " + b);
+
+            if (i == boundaries[p + 1])
+                ++p;
+        }
+    }
+
+    private void _testIsBoundary(BreakIterator bi, String text, int[] boundaries) {
+        logln("testIsBoundary():");
+        int p = 1;
+        boolean isB;
+        for (int i = 0; i <= text.length(); i++) {
+            isB = bi.isBoundary(i);
+            logln("bi.isBoundary(" + i + ") -> " + isB);
+
+            if (i == boundaries[p]) {
+                if (!isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected true, got false");
+                ++p;
+            }
+            else {
+                if (isB)
+                    errln("Wrong result from isBoundary() for " + i + ": expected false, got true");
+            }
+        }
+    }
+
+    private void doMultipleSelectionTest(BreakIterator iterator, String testText)
+    {
+        logln("Multiple selection test...");
+        BreakIterator testIterator = (BreakIterator)iterator.clone();
+        int offset = iterator.first();
+        int testOffset;
+        int count = 0;
+
+        do {
+            testOffset = testIterator.first();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count++;
+                offset = iterator.next();
+            }
+        } while (offset != BreakIterator.DONE);
+
+        // now do it backwards...
+        offset = iterator.last();
+        count = 0;
+
+        do {
+            testOffset = testIterator.last();
+            testOffset = testIterator.next(count);
+            logln("next(" + count + ") -> " + testOffset);
+            if (offset != testOffset)
+                errln("next(n) and next() not returning consistent results: for step " + count + ", next(n) returned " + testOffset + " and next() had " + offset);
+
+            if (offset != BreakIterator.DONE) {
+                count--;
+                offset = iterator.previous();
+            }
+        } while (offset != BreakIterator.DONE);
+    }
+
+    private void doBreakInvariantTest(BreakIterator tb, String testChars)
+    {
+        StringBuffer work = new StringBuffer("aaa");
+//        int errorCount = 0;
+
+        // a break should always occur after CR (unless followed by LF), LF, PS, and LS,
+        // unless they're followed by a non-spacing mark or a format character
+        String breaks = "\r\n\u2029\u2028";
+
+        for (int i = 0; i < breaks.length(); i++) {
+            work.setCharAt(1, breaks.charAt(i));
+            for (int j = 0; j < testChars.length(); j++) {
+                work.setCharAt(0, testChars.charAt(j));
+                for (int k = 0; k < testChars.length(); k++) {
+                    char c = testChars.charAt(k);
+
+                    // if a cr is followed by lf, ps, ls or etx, don't do the check (that's
+                    // not supposed to work)
+                    if (work.charAt(1) == '\r' && (c == '\n' || c == '\u2029'
+                            || c == '\u2028' || c == '\u0003'))
+                        continue;
+
+                    work.setCharAt(2, c);
+                    tb.setText(work.toString());
+                    boolean seen2 = false;
+                    for (int l = tb.first(); l != BreakIterator.DONE; l = tb.next()) {
+                        if (l == 2)
+                            seen2 = true;
+                    }
+                    if (!seen2) {
+                        errln("No break between U+" + Integer.toHexString((int)(work.charAt(1)))
+                                    + " and U+" + Integer.toHexString((int)(work.charAt(2))));
+                    }
+                }
+            }
+        }
+    }
+
+    private void doOtherInvariantTest(BreakIterator tb, String testChars)
+    {
+        StringBuffer work = new StringBuffer("a\r\na");
+        int errorCount = 0;
+
+        // a break should never occur between CR and LF
+        for (int i = 0; i < testChars.length(); i++) {
+            work.setCharAt(0, testChars.charAt(i));
+            for (int j = 0; j < testChars.length(); j++) {
+                work.setCharAt(3, testChars.charAt(j));
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between CR and LF in string U+" + Integer.toHexString(
+                                (int)(work.charAt(0))) + ", U+d U+a U+" + Integer.toHexString(
+                                (int)(work.charAt(3))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+
+        // a break should never occur before a non-spacing mark, unless it's preceded
+        // by a line terminator
+        work.setLength(0);
+        work.append("aaaa");
+        for (int i = 0; i < testChars.length(); i++) {
+            char c = testChars.charAt(i);
+            if (c == '\n' || c == '\r' || c == '\u2029' || c == '\u2028' || c == '\u0003')
+                continue;
+            work.setCharAt(1, c);
+            for (int j = 0; j < testChars.length(); j++) {
+                c = testChars.charAt(j);
+                if (Character.getType(c) != Character.NON_SPACING_MARK && Character.getType(c)
+                        != Character.ENCLOSING_MARK)
+                    continue;
+                work.setCharAt(2, c);
+                tb.setText(work.toString());
+                for (int k = tb.first(); k != BreakIterator.DONE; k = tb.next())
+                    if (k == 2) {
+                        errln("Break between U+" + Integer.toHexString((int)(work.charAt(1)))
+                                + " and U+" + Integer.toHexString((int)(work.charAt(2))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+            }
+        }
+    }
+
+    public void debugLogln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+    //=========================================================================
+    // tests
+    //=========================================================================
+
+    public void TestWordBreak() {
+        Vector wordSelectionData = new Vector();
+
+        wordSelectionData.addElement("12,34");
+
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u00A2"); //cent sign
+        wordSelectionData.addElement("\u00A3"); //pound sign
+        wordSelectionData.addElement("\u00A4"); //currency sign
+        wordSelectionData.addElement("\u00A5"); //yen sign
+        wordSelectionData.addElement("alpha-beta-gamma");
+        wordSelectionData.addElement(".");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("Badges");
+        wordSelectionData.addElement("?");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("BADGES");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement("?");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("We");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("don't");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("need");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("no");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("STINKING");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("BADGES");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement("!");
+        wordSelectionData.addElement("!");
+
+        wordSelectionData.addElement("012.566,5");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("123.3434,900");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("1000,233,456.000");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("1,23.322%");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("123.1222");
+
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u0024123,000.20");
+
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("179.01\u0025");
+
+        wordSelectionData.addElement("Hello");
+        wordSelectionData.addElement(",");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("how");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("are");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("you");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("X");
+        wordSelectionData.addElement(" ");
+
+        wordSelectionData.addElement("Now");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("is");
+        wordSelectionData.addElement("\n");
+        wordSelectionData.addElement("the");
+        wordSelectionData.addElement("\r\n");
+        wordSelectionData.addElement("time");
+        wordSelectionData.addElement("\n");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("for");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("\r");
+        wordSelectionData.addElement("all");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4097779
+     */
+    public void TestBug4097779() {
+        Vector wordSelectionData = new Vector();
+
+        wordSelectionData.addElement("aa\u0300a");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Words() {
+        Vector wordSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        wordSelectionData.addElement("\uc0c1\ud56d");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\ud55c\uc778");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc5f0\ud569");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\uc7a5\ub85c\uad50\ud68c");
+        wordSelectionData.addElement(" ");
+        // conjoining jamo...
+        wordSelectionData.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110b\u1167\u11ab\u1112\u1161\u11b8");
+        wordSelectionData.addElement(" ");
+        wordSelectionData.addElement("\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c");
+        wordSelectionData.addElement(" ");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Words() {
+        Vector wordSelectionData = new Vector();
+
+        // this is a test for bug #4117554: the ideographic iteration mark (U+3005) should
+        // count as a Kanji character for the purposes of word breaking
+        wordSelectionData.addElement("abc");
+        wordSelectionData.addElement("\u4e01\u4e02\u3005\u4e03\u4e03");
+        wordSelectionData.addElement("abc");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    public void TestSentenceBreak() {
+        Vector sentenceSelectionData = new Vector();
+
+        sentenceSelectionData.addElement("This is a simple sample sentence. ");
+        sentenceSelectionData.addElement("(This is it.) ");
+        sentenceSelectionData.addElement("This is a simple sample sentence. ");
+        sentenceSelectionData.addElement("\"This isn\'t it.\" ");
+        sentenceSelectionData.addElement("Hi! ");
+        sentenceSelectionData.addElement("This is a simple sample sentence. ");
+        sentenceSelectionData.addElement("It does not have to make any sense as you can see. ");
+        sentenceSelectionData.addElement("Nel mezzo del cammin di nostra vita, mi ritrovai in una selva oscura. ");
+        sentenceSelectionData.addElement("Che la dritta via aveo smarrita. ");
+        sentenceSelectionData.addElement("He said, that I said, that you said!! ");
+
+        sentenceSelectionData.addElement("Don't rock the boat.\u2029");
+
+        sentenceSelectionData.addElement("Because I am the daddy, that is why. ");
+        sentenceSelectionData.addElement("Not on my time (el timo.)! ");
+
+        sentenceSelectionData.addElement("So what!!\u2029");
+
+        sentenceSelectionData.addElement("\"But now,\" he said, \"I know!\" ");
+        sentenceSelectionData.addElement("Harris thumbed down several, including \"Away We Go\" (which became the huge success Oklahoma!). ");
+        sentenceSelectionData.addElement("One species, B. anthracis, is highly virulent.\n");
+        sentenceSelectionData.addElement("Wolf said about Sounder:\"Beautifully thought-out and directed.\" ");
+        sentenceSelectionData.addElement("Have you ever said, \"This is where \tI shall live\"? ");
+        sentenceSelectionData.addElement("He answered, \"You may not!\" ");
+        sentenceSelectionData.addElement("Another popular saying is: \"How do you do?\". ");
+        sentenceSelectionData.addElement("Yet another popular saying is: \'I\'m fine thanks.\' ");
+        sentenceSelectionData.addElement("What is the proper use of the abbreviation pp.? ");
+        sentenceSelectionData.addElement("Yes, I am definatelly 12\" tall!!");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4113835
+     */
+    public void TestBug4113835() {
+        Vector sentenceSelectionData = new Vector();
+
+        // test for bug #4113835: \n and \r count as spaces, not as paragraph breaks
+        sentenceSelectionData.addElement("Now\ris\nthe\r\ntime\n\rfor\r\rall\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4111338
+     */
+    public void TestBug4111338() {
+        Vector sentenceSelectionData = new Vector();
+
+        // test for bug #4111338: Don't break sentences at the boundary between CJK
+        // and other letters
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165:\"JAVA\u821c"
+                + "\u8165\u7fc8\u51ce\u306d,\u2494\u56d8\u4ec0\u60b1\u8560\u51ba"
+                + "\u611d\u57b6\u2510\u5d46\".\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e4JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8\u97e4"
+                + "\u6470\u8790JAVA\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8"
+                + "\u4ec0\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+        sentenceSelectionData.addElement("He said, \"I can go there.\"\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Sentences() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Treat fullwidth variants of .!? the same as their
+        // normal counterparts
+        sentenceSelectionData.addElement("I know I'm right\uff0e ");
+        sentenceSelectionData.addElement("Right\uff1f ");
+        sentenceSelectionData.addElement("Right\uff01 ");
+
+        // Don't break sentences at boundary between CJK and digits
+        sentenceSelectionData.addElement("\u5487\u67ff\ue591\u5017\u61b3\u60a1\u9510\u8165\u9de8"
+                + "\u97e48888\u821c\u8165\u7fc8\u51ce\u306d\ue30b\u2494\u56d8\u4ec0"
+                + "\u60b1\u8560\u51ba\u611d\u57b6\u2510\u5d46\u97e5\u7751\u2029");
+
+        // Break sentence between a sentence terminator and
+        // opening punctuation
+        sentenceSelectionData.addElement("no?");
+        sentenceSelectionData.addElement("(yes)");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4158381
+     */
+    public void TestBug4158381() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Don't break sentence after period if it isn't followed by a space
+        sentenceSelectionData.addElement("Test <code>Flags.Flag</code> class.  ");
+        sentenceSelectionData.addElement("Another test.\u2029");
+
+        // No breaks when there are no terminators around
+        sentenceSelectionData.addElement("<P>Provides a set of "
+                + "&quot;lightweight&quot; (all-java<FONT SIZE=\"-2\"><SUP>TM"
+                + "</SUP></FONT> language) components that, "
+                + "to the maximum degree possible, work the same on all platforms.  ");
+        sentenceSelectionData.addElement("Another test.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4143071
+     */
+    public void TestBug4143071() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences that end with digits work right
+        sentenceSelectionData.addElement("Today is the 27th of May, 1998.  ");
+        sentenceSelectionData.addElement("Tomorrow will be 28 May 1998.  ");
+        sentenceSelectionData.addElement("The day after will be the 30th.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152416
+     */
+    public void TestBug4152416() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentences ending with a capital letter are treated correctly
+        sentenceSelectionData.addElement("The type of all primitive "
+                + "<code>boolean</code> values accessed in the target VM.  ");
+        sentenceSelectionData.addElement("Calls to xxx will return an "
+                + "implementor of this interface.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    /**
+     * @bug 4152117
+     */
+    public void TestBug4152117() {
+        Vector sentenceSelectionData = new Vector();
+
+        // Make sure sentence breaking is handling punctuation correctly
+        // [COULD NOT REPRODUCE THIS BUG, BUT TEST IS HERE TO MAKE SURE
+        // IT DOESN'T CROP UP]
+        sentenceSelectionData.addElement("Constructs a randomly generated "
+                + "BigInteger, uniformly distributed over the range <tt>0</tt> "
+                + "to <tt>(2<sup>numBits</sup> - 1)</tt>, inclusive.  ");
+        sentenceSelectionData.addElement("The uniformity of the distribution "
+                + "assumes that a fair source of random bits is provided in "
+                + "<tt>rnd</tt>.  ");
+        sentenceSelectionData.addElement("Note that this constructor always "
+                + "constructs a non-negative BigInteger.\u2029");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    public void TestLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("Multi-");
+        lineSelectionData.addElement("Level ");
+        lineSelectionData.addElement("example ");
+        lineSelectionData.addElement("of ");
+        lineSelectionData.addElement("a ");
+        lineSelectionData.addElement("semi-");
+        lineSelectionData.addElement("idiotic ");
+        lineSelectionData.addElement("non-");
+        lineSelectionData.addElement("sensical ");
+        lineSelectionData.addElement("(non-");
+        lineSelectionData.addElement("important) ");
+        lineSelectionData.addElement("sentence. ");
+
+        lineSelectionData.addElement("Hi  ");
+        lineSelectionData.addElement("Hello ");
+        lineSelectionData.addElement("How\n");
+        lineSelectionData.addElement("are\r");
+        lineSelectionData.addElement("you\u2028");
+        lineSelectionData.addElement("fine.\t");
+        lineSelectionData.addElement("good.  ");
+
+        lineSelectionData.addElement("Now\r");
+        lineSelectionData.addElement("is\n");
+        lineSelectionData.addElement("the\r\n");
+        lineSelectionData.addElement("time\n");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("for\r");
+        lineSelectionData.addElement("\r");
+        lineSelectionData.addElement("all");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4068133
+     */
+    public void TestBug4068133() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("\u96f6");
+        lineSelectionData.addElement("\u4e00\u3002");
+        lineSelectionData.addElement("\u4e8c\u3001");
+        lineSelectionData.addElement("\u4e09\u3002\u3001");
+        lineSelectionData.addElement("\u56db\u3001\u3002\u3001");
+        lineSelectionData.addElement("\u4e94,");
+        lineSelectionData.addElement("\u516d.");
+        lineSelectionData.addElement("\u4e03.\u3001,\u3002");
+        lineSelectionData.addElement("\u516b");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4086052
+     */
+    public void TestBug4086052() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("foo\u00a0bar ");
+//        lineSelectionData.addElement("foo\ufeffbar");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4097920
+     */
+    public void TestBug4097920() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("dog,");
+        lineSelectionData.addElement("cat,");
+        lineSelectionData.addElement("mouse ");
+        lineSelectionData.addElement("(one)");
+        lineSelectionData.addElement("(two)\n");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4035266
+     */
+    public void TestBug4035266() {
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("The ");
+        lineSelectionData.addElement("balance ");
+        lineSelectionData.addElement("is ");
+        lineSelectionData.addElement("$-23,456.78, ");
+        lineSelectionData.addElement("not ");
+        lineSelectionData.addElement("-$32,456.78!\n");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        lineSelectionData.addElement("\uc0c1\ud56d ");
+        lineSelectionData.addElement("\ud55c\uc778 ");
+        lineSelectionData.addElement("\uc5f0\ud569 ");
+        lineSelectionData.addElement("\uc7a5\ub85c\uad50\ud68c ");
+        // conjoining jamo...
+        lineSelectionData.addElement("\u1109\u1161\u11bc\u1112\u1161\u11bc ");
+        lineSelectionData.addElement("\u1112\u1161\u11ab\u110b\u1175\u11ab ");
+        lineSelectionData.addElement("\u110b\u1167\u11ab\u1112\u1161\u11b8 ");
+        lineSelectionData.addElement("\u110c\u1161\u11bc\u1105\u1169\u1100\u116d\u1112\u116c");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestThaiLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        // \u0e2f-- the Thai paiyannoi character-- isn't a letter.  It's a symbol that
+        // represents elided letters at the end of a long word.  It should be bound to
+        // the end of the word and not treated as an independent punctuation mark.
+        lineSelectionData.addElement("\u0e2a\u0e16\u0e32\u0e19\u0e35\u0e2f");
+        lineSelectionData.addElement("\u0e08\u0e30");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e14\u0e21");
+        lineSelectionData.addElement("\u0e40\u0e08\u0e49\u0e32");
+//        lineSelectionData.addElement("\u0e2b\u0e19\u0e49\u0e32");
+//        lineSelectionData.addElement("\u0e17\u0e35\u0e48");
+// I think the above two lines are the preferred reading of this text, but our current
+// dictionary yields the following:
+lineSelectionData.addElement("\u0e2b\u0e16\u0e49\u0e32\u0e17\u0e35\u0e48");
+        lineSelectionData.addElement("\u0e2d\u0e2d\u0e01");
+        lineSelectionData.addElement("\u0e21\u0e32");
+        lineSelectionData.addElement("\u0e40\u0e23\u0e48\u0e07");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e1a\u0e32\u0e22");
+        lineSelectionData.addElement("\u0e2d\u0e22\u0e48\u0e32\u0e07");
+        lineSelectionData.addElement("\u0e40\u0e15\u0e47\u0e21");
+
+        // the one time where the paiyannoi occurs somewhere other than at the end
+        // of a word is in the Thai abbrevation for "etc.", which both begins and
+        // ends with a paiyannoi
+        lineSelectionData.addElement("\u0e2f\u0e25\u0e2f");
+        lineSelectionData.addElement("\u0e17\u0e35\u0e48");
+        lineSelectionData.addElement("\u0e19\u0e31\u0e49\u0e19");
+
+        generalIteratorTest(BreakIterator.getLineInstance(new Locale("th", "", "")),
+                lineSelectionData);
+    }
+
+    public void TestMixedThaiLineBreak() {
+        Vector lineSelectionData = new Vector();
+
+        // Arabic numerals should always be separated from surrounding Thai text
+/*
+        lineSelectionData.addElement("\u0e04\u0e48\u0e32");
+        lineSelectionData.addElement("\u0e40\u0e07\u0e34\u0e19");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17");
+        lineSelectionData.addElement("\u0e41\u0e15\u0e30");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e14\u0e31\u0e1a");
+        lineSelectionData.addElement("39");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17 ");
+
+        // words in non-Thai scripts should always be separated from surrounding Thai text
+        lineSelectionData.addElement("\u0e17\u0e14");
+        lineSelectionData.addElement("\u0e2a\u0e2d\u0e1a");
+        lineSelectionData.addElement("Java");
+        lineSelectionData.addElement("\u0e1a\u0e19");
+        lineSelectionData.addElement("\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07");
+        lineSelectionData.addElement("\u0e44\u0e2d\u0e1a\u0e35\u0e40\u0e2d\u0e47\u0e21 ");
+
+        // Thai numerals should always be separated from the text surrounding them
+        lineSelectionData.addElement("\u0e04\u0e48\u0e32");
+        lineSelectionData.addElement("\u0e40\u0e07\u0e34\u0e19");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17");
+        lineSelectionData.addElement("\u0e41\u0e15\u0e30");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e14\u0e31\u0e1a");
+        lineSelectionData.addElement("\u0e53\u0e59");
+        lineSelectionData.addElement("\u0e1a\u0e32\u0e17 ");
+
+        // Thai text should interact correctly with punctuation and symbols
+        lineSelectionData.addElement("\u0e44\u0e2d\u0e1a\u0e35\u0e40\u0e2d\u0e47\u0e21");
+//        lineSelectionData.addElement("(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28");
+//        lineSelectionData.addElement("\u0e44\u0e17\u0e22)");
+// I think the above lines represent the preferred reading for this text, but our current
+// dictionary file yields the following:
+lineSelectionData.addElement("(\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28\u0e44\u0e17\u0e22)");
+        lineSelectionData.addElement("\u0e08\u0e33\u0e01\u0e31\u0e14");
+        lineSelectionData.addElement("\u0e40\u0e1b\u0e34\u0e14");
+        lineSelectionData.addElement("\u0e15\u0e31\u0e27\"");
+*/
+        lineSelectionData.addElement("\u0e2e\u0e32\u0e23\u0e4c\u0e14\u0e14\u0e34\u0e2a\u0e01\u0e4c\"");
+        lineSelectionData.addElement("\u0e23\u0e38\u0e48\u0e19");
+        lineSelectionData.addElement("\u0e43\u0e2b\u0e21\u0e48");
+        lineSelectionData.addElement("\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e21\u0e34.");
+        lineSelectionData.addElement("\u0e22.");
+        lineSelectionData.addElement("\u0e19\u0e35\u0e49");
+        lineSelectionData.addElement("\u0e23\u0e32\u0e04\u0e32");
+        lineSelectionData.addElement("$200");
+        lineSelectionData.addElement("\u0e40\u0e17\u0e48\u0e32");
+        lineSelectionData.addElement("\u0e19\u0e31\u0e49\u0e19 ");
+        lineSelectionData.addElement("(\"\u0e2e\u0e32\u0e23\u0e4c\u0e14\u0e14\u0e34\u0e2a\u0e01\u0e4c\").");
+
+        generalIteratorTest(BreakIterator.getLineInstance(new Locale("th", "", "")),
+                lineSelectionData);
+    }
+
+    public void TestMaiyamok() {
+        Vector lineSelectionData = new Vector();
+
+        // the Thai maiyamok character is a shorthand symbol that means "repeat the previous
+        // word".  Instead of appearing as a word unto itself, however, it's kept together
+        // with the word before it
+        lineSelectionData.addElement("\u0e44\u0e1b\u0e46");
+        lineSelectionData.addElement("\u0e21\u0e32\u0e46");
+        lineSelectionData.addElement("\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07");
+        lineSelectionData.addElement("\u0e01\u0e23\u0e38\u0e07\u0e40\u0e17\u0e1e");
+        lineSelectionData.addElement("\u0e41\u0e25\u0e30");
+        lineSelectionData.addElement("\u0e40\u0e03\u0e35\u0e22\u0e07");
+        lineSelectionData.addElement("\u0e43\u0e2b\u0e21\u0e48");
+
+        generalIteratorTest(BreakIterator.getLineInstance(new Locale("th", "", "")),
+                lineSelectionData);
+    }
+
+    /**
+     * @bug 4117554
+     */
+    public void TestBug4117554Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // Fullwidth .!? should be treated as postJwrd
+        lineSelectionData.addElement("\u4e01\uff0e");
+        lineSelectionData.addElement("\u4e02\uff01");
+        lineSelectionData.addElement("\u4e03\uff1f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestLettersAndDigits() {
+        // a character sequence such as "X11" or "30F3" or "native2ascii" should
+        // be kept together as a single word
+        Vector lineSelectionData = new Vector();
+
+        lineSelectionData.addElement("X11 ");
+        lineSelectionData.addElement("30F3 ");
+        lineSelectionData.addElement("native2ascii");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    /**
+     * @bug 4217703
+     */
+    public void TestBug4217703() {
+        Vector lineSelectionData = new Vector();
+
+        // There shouldn't be a line break between sentence-ending punctuation
+        // and a closing quote
+        lineSelectionData.addElement("He ");
+        lineSelectionData.addElement("said ");
+        lineSelectionData.addElement("\"Go!\"  ");
+        lineSelectionData.addElement("I ");
+        lineSelectionData.addElement("went.  ");
+
+        lineSelectionData.addElement("Hashtable$Enumeration ");
+        lineSelectionData.addElement("getText().");
+        lineSelectionData.addElement("getIndex()");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    private static final String graveS = "S\u0300";
+    private static final String acuteBelowI = "i\u0317";
+    private static final String acuteE = "e\u0301";
+    private static final String circumflexA = "a\u0302";
+    private static final String tildeE = "e\u0303";
+
+    public void TestCharacterBreak() {
+        Vector characterSelectionData = new Vector();
+
+        characterSelectionData.addElement(graveS);
+        characterSelectionData.addElement(acuteBelowI);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(acuteE);
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("s");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("m");
+        characterSelectionData.addElement("p");
+        characterSelectionData.addElement("l");
+        characterSelectionData.addElement(tildeE);
+        characterSelectionData.addElement(".");
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement(circumflexA);
+        characterSelectionData.addElement("w");
+        characterSelectionData.addElement("a");
+        characterSelectionData.addElement("f");
+        characterSelectionData.addElement("q");
+        characterSelectionData.addElement("\n");
+        characterSelectionData.addElement("\r");
+        characterSelectionData.addElement("\r\n");
+        characterSelectionData.addElement("\n");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    /**
+     * @bug 4098467
+     */
+    public void TestBug4098467Characters() {
+        Vector characterSelectionData = new Vector();
+
+        // What follows is a string of Korean characters (I found it in the Yellow Pages
+        // ad for the Korean Presbyterian Church of San Francisco, and I hope I transcribed
+        // it correctly), first as precomposed syllables, and then as conjoining jamo.
+        // Both sequences should be semantically identical and break the same way.
+        // precomposed syllables...
+        characterSelectionData.addElement("\uc0c1");
+        characterSelectionData.addElement("\ud56d");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\ud55c");
+        characterSelectionData.addElement("\uc778");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc5f0");
+        characterSelectionData.addElement("\ud569");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\uc7a5");
+        characterSelectionData.addElement("\ub85c");
+        characterSelectionData.addElement("\uad50");
+        characterSelectionData.addElement("\ud68c");
+        characterSelectionData.addElement(" ");
+        // conjoining jamo...
+        characterSelectionData.addElement("\u1109\u1161\u11bc");
+        characterSelectionData.addElement("\u1112\u1161\u11bc");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u1112\u1161\u11ab");
+        characterSelectionData.addElement("\u110b\u1175\u11ab");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110b\u1167\u11ab");
+        characterSelectionData.addElement("\u1112\u1161\u11b8");
+        characterSelectionData.addElement(" ");
+        characterSelectionData.addElement("\u110c\u1161\u11bc");
+        characterSelectionData.addElement("\u1105\u1169");
+        characterSelectionData.addElement("\u1100\u116d");
+        characterSelectionData.addElement("\u1112\u116c");
+
+        generalIteratorTest(characterBreak, characterSelectionData);
+    }
+
+    /*
+     * @bug 4153072
+     */
+    public void TestBug4153072() {
+        BreakIterator iter = BreakIterator.getWordInstance();
+        String str = "...Hello, World!...";
+        int begin = 3;
+        int end = str.length() - 3;
+        boolean gotException = false;
+        boolean dummy;
+
+        iter.setText(new StringCharacterIterator(str, begin, end, begin));
+        for (int index = -1; index < begin + 1; ++index) {
+            try {
+                dummy = iter.isBoundary(index);
+                if (index < begin)
+                    errln("Didn't get exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+            catch (IllegalArgumentException e) {
+                if (index >= begin)
+                    errln("Got exception with offset = " + index +
+                                    " and begin index = " + begin);
+            }
+        }
+    }
+
+    public void TestBug4146175Sentences() {
+        Vector sentenceSelectionData = new Vector();
+
+        // break between periods and opening punctuation even when there's no
+        // intervening space
+        sentenceSelectionData.addElement("end.");
+        sentenceSelectionData.addElement("(This is\u2029");
+
+        // treat the fullwidth period as an unambiguous sentence terminator
+        sentenceSelectionData.addElement("\u7d42\u308f\u308a\uff0e");
+        sentenceSelectionData.addElement("\u300c\u3053\u308c\u306f");
+
+        generalIteratorTest(sentenceBreak, sentenceSelectionData);
+    }
+
+    public void TestBug4146175Lines() {
+        Vector lineSelectionData = new Vector();
+
+        // the fullwidth comma should stick to the preceding Japanese character
+        lineSelectionData.addElement("\u7d42\uff0c");
+        lineSelectionData.addElement("\u308f");
+
+        generalIteratorTest(lineBreak, lineSelectionData);
+    }
+
+    public void TestBug4214367() {
+        Vector wordSelectionData = new Vector();
+
+        // the hiragana and katakana iteration marks and the long vowel mark
+        // are not being treated correctly by the word-break iterator
+        wordSelectionData.addElement("\u3042\u3044\u309d\u3042\u309e\u3042\u30fc\u3042");
+        wordSelectionData.addElement("\u30a2\u30a4\u30fd\u30a2\u30fe\u30a2\u30fc\u30a2");
+
+        generalIteratorTest(wordBreak, wordSelectionData);
+    }
+
+    private static final String cannedTestChars
+        = "\u0000\u0001\u0002\u0003\u0004 !\"#$%&()+-01234<=>ABCDE[]^_`abcde{}|\u00a0\u00a2"
+        + "\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00ab\u00ad\u00ae\u00af\u00b0\u00b2\u00b3"
+        + "\u00b4\u00b9\u00bb\u00bc\u00bd\u02b0\u02b1\u02b2\u02b3\u02b4\u0300\u0301\u0302\u0303"
+        + "\u0304\u05d0\u05d1\u05d2\u05d3\u05d4\u0903\u093e\u093f\u0940\u0949\u0f3a\u0f3b\u2000"
+        + "\u2001\u2002\u200c\u200d\u200e\u200f\u2010\u2011\u2012\u2028\u2029\u202a\u203e\u203f"
+        + "\u2040\u20dd\u20de\u20df\u20e0\u2160\u2161\u2162\u2163\u2164";
+
+    public void TestSentenceInvariants()
+    {
+        BreakIterator e = BreakIterator.getSentenceInstance();
+        doOtherInvariantTest(e, cannedTestChars + ".,\u3001\u3002\u3041\u3042\u3043\ufeff");
+    }
+
+    public void TestWordInvariants()
+    {
+        BreakIterator e = BreakIterator.getWordInstance();
+        doBreakInvariantTest(e, cannedTestChars + "\',.\u3041\u3042\u3043\u309b\u309c\u30a1\u30a2"
+            + "\u30a3\u4e00\u4e01\u4e02");
+        doOtherInvariantTest(e, cannedTestChars + "\',.\u3041\u3042\u3043\u309b\u309c\u30a1\u30a2"
+            + "\u30a3\u4e00\u4e01\u4e02");
+    }
+
+    public void TestLineInvariants()
+    {
+        BreakIterator e = BreakIterator.getLineInstance();
+        String testChars = cannedTestChars + ".,;:\u3001\u3002\u3041\u3042\u3043\u3044\u3045"
+            + "\u30a3\u4e00\u4e01\u4e02";
+        doBreakInvariantTest(e, testChars);
+        doOtherInvariantTest(e, testChars);
+
+        int errorCount = 0;
+
+        // in addition to the other invariants, a line-break iterator should make sure that:
+        // it doesn't break around the non-breaking characters
+        String noBreak = "\u00a0\u2007\u2011\ufeff";
+        StringBuffer work = new StringBuffer("aaa");
+        for (int i = 0; i < testChars.length(); i++) {
+            char c = testChars.charAt(i);
+            if (c == '\r' || c == '\n' || c == '\u2029' || c == '\u2028' || c == '\u0003')
+                continue;
+            work.setCharAt(0, c);
+            for (int j = 0; j < noBreak.length(); j++) {
+                work.setCharAt(1, noBreak.charAt(j));
+                for (int k = 0; k < testChars.length(); k++) {
+                    work.setCharAt(2, testChars.charAt(k));
+                    e.setText(work.toString());
+                    for (int l = e.first(); l != BreakIterator.DONE; l = e.next())
+                        if (l == 1 || l == 2) {
+                            errln("Got break between U+" + Integer.toHexString((int)
+                                    (work.charAt(l - 1))) + " and U+" + Integer.toHexString(
+                                    (int)(work.charAt(l))));
+                            errorCount++;
+                            if (errorCount >= 75)
+                                return;
+                        }
+                }
+            }
+        }
+
+        // it does break after dashes (unless they're followed by a digit, a non-spacing mark,
+        // a currency symbol, a space, a format-control character, a regular control character,
+        // a line or paragraph separator, or another dash)
+        String dashes = "-\u00ad\u2010\u2012\u2013\u2014";
+        for (int i = 0; i < testChars.length(); i++) {
+            work.setCharAt(0, testChars.charAt(i));
+            for (int j = 0; j < dashes.length(); j++) {
+                work.setCharAt(1, dashes.charAt(j));
+                for (int k = 0; k < testChars.length(); k++) {
+                    char c = testChars.charAt(k);
+                    if (Character.getType(c) == Character.DECIMAL_DIGIT_NUMBER ||
+                        Character.getType(c) == Character.OTHER_NUMBER ||
+                        Character.getType(c) == Character.NON_SPACING_MARK ||
+                        Character.getType(c) == Character.ENCLOSING_MARK ||
+                        Character.getType(c) == Character.CURRENCY_SYMBOL ||
+                        Character.getType(c) == Character.DASH_PUNCTUATION ||
+                        Character.getType(c) == Character.SPACE_SEPARATOR ||
+                        Character.getType(c) == Character.FORMAT ||
+                        Character.getType(c) == Character.CONTROL ||
+                        c == '\n' || c == '\r' || c == '\u2028' || c == '\u2029' ||
+                        c == '\u0003' || c == '\u2007' || c == '\u2011' ||
+                        c == '\ufeff')
+                        continue;
+                    work.setCharAt(2, c);
+                    e.setText(work.toString());
+                    boolean saw2 = false;
+                    for (int l = e.first(); l != BreakIterator.DONE; l = e.next())
+                        if (l == 2)
+                            saw2 = true;
+                    if (!saw2) {
+                        errln("Didn't get break between U+" + Integer.toHexString((int)
+                                    (work.charAt(1))) + " and U+" + Integer.toHexString(
+                                    (int)(work.charAt(2))));
+                        errorCount++;
+                        if (errorCount >= 75)
+                            return;
+                    }
+                }
+            }
+        }
+    }
+
+    public void TestCharacterInvariants()
+    {
+        BreakIterator e = BreakIterator.getCharacterInstance();
+        doBreakInvariantTest(e, cannedTestChars + "\u1100\u1101\u1102\u1160\u1161\u1162\u11a8"
+            + "\u11a9\u11aa");
+        doOtherInvariantTest(e, cannedTestChars + "\u1100\u1101\u1102\u1160\u1161\u1162\u11a8"
+            + "\u11a9\u11aa");
+    }
+
+    public void TestEmptyString()
+    {
+        String text = "";
+        Vector x = new Vector();
+        x.addElement(text);
+
+        generalIteratorTest(lineBreak, x);
+    }
+
+    public void TestGetAvailableLocales()
+    {
+        Locale[] locList = BreakIterator.getAvailableLocales();
+
+        if (locList.length == 0)
+            errln("getAvailableLocales() returned an empty list!");
+        // I have no idea how to test this function...
+    }
+
+    /**
+     * @bug 4095322
+     */
+    public void TestJapaneseLineBreak()
+    {
+        StringBuffer testString = new StringBuffer("\u4e00x\u4e8c");
+        String precedingChars = "([{\u00ab$\u00a5\u00a3\u00a4\u2018\u201a\u201c\u201e\u201b\u201f";
+        String followingChars = ")]}\u00bb!%,.\u3001\u3002\u3063\u3083\u3085\u3087\u30c3\u30e3\u30e5\u30e7\u30fc:;\u309b\u309c\u3005\u309d\u309e\u30fd\u30fe\u2019\u201d\u00b0\u2032\u2033\u2034\u2030\u2031\u2103\u2109\u00a2\u0300\u0301\u0302";
+        BreakIterator iter = BreakIterator.getLineInstance(Locale.JAPAN);
+
+        for (int i = 0; i < precedingChars.length(); i++) {
+            testString.setCharAt(1, precedingChars.charAt(i));
+            iter.setText(testString.toString());
+            int j = iter.first();
+            if (j != 0)
+                errln("ja line break failure: failed to start at 0");
+            j = iter.next();
+            if (j != 1)
+                errln("ja line break failure: failed to stop before '" + precedingChars.charAt(i)
+                            + "' (" + ((int)(precedingChars.charAt(i))) + ")");
+            j = iter.next();
+            if (j != 3)
+                errln("ja line break failure: failed to skip position after '" + precedingChars.charAt(i)
+                            + "' (" + ((int)(precedingChars.charAt(i))) + ")");
+        }
+
+        for (int i = 0; i < followingChars.length(); i++) {
+            testString.setCharAt(1, followingChars.charAt(i));
+            iter.setText(testString.toString());
+            int j = iter.first();
+            if (j != 0)
+                errln("ja line break failure: failed to start at 0");
+            j = iter.next();
+            if (j != 2)
+                errln("ja line break failure: failed to skip position before '" + followingChars.charAt(i)
+                            + "' (" + ((int)(followingChars.charAt(i))) + ")");
+            j = iter.next();
+            if (j != 3)
+                errln("ja line break failure: failed to stop after '" + followingChars.charAt(i)
+                            + "' (" + ((int)(followingChars.charAt(i))) + ")");
+        }
+    }
+
+    /**
+     * @bug 4068137
+     */
+    public void TestEndBehavior()
+    {
+        String testString = "boo.";
+        BreakIterator wb = BreakIterator.getWordInstance();
+        wb.setText(testString);
+
+        if (wb.first() != 0)
+            errln("Didn't get break at beginning of string.");
+        if (wb.next() != 3)
+            errln("Didn't get break before period in \"boo.\"");
+        if (wb.current() != 4 && wb.next() != 4)
+            errln("Didn't get break at end of string.");
+    }
+}
+
diff --git a/src/com/ibm/test/rbbi/SimpleBITest.java b/src/com/ibm/test/rbbi/SimpleBITest.java
new file mode 100755
index 0000000..cc92283
--- /dev/null
+++ b/src/com/ibm/test/rbbi/SimpleBITest.java
@@ -0,0 +1,177 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/rbbi/Attic/SimpleBITest.java,v $ 
+ * $Date: 2000/03/10 03:47:46 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.rbbi;
+
+import java.util.Locale;
+import com.ibm.text.BreakIterator;
+import com.ibm.test.TestFmwk;
+
+public class SimpleBITest extends TestFmwk{
+    public static final String testText =
+//        "The rain in Spain stays mainly on the plain.  The plains in Spain are mainly pained with rain.";
+//"one-two now--  Hah!  You owe me exactly $1,345.67...  Pay up, huh?  By the way, why don't I send you my re\u0301sume\u0301?  This is a line\r\nbreak.";
+//"nowisthetimeforallgoodmen...  tocometothehelpoftheircountry";
+"When, in the course of human events, it becomes necessary for one people to dissolve the political bonds which have "
+//"When,inthecourseofhumanevents,itbecomesnecessaryforonepeopletodissolvethepoliticalbondswhichhave"
++ "connectedthemwithanother,andtoassumeamongthepowersoftheearth,theseparateandequalstationtowhichthelaws"
++ "ofnatureandofnature'sGodentitlethem,adecentrespecttotheopinionsofmankindrequiresthattheyshoulddeclarethe"
++ "causeswhichimpelthemtotheseparation\n"
++ "Weholdthesetruthstobeself-evident,thatallmenarecreatedequal,thattheyareendowedbytheirCreatorwithcertain"
++ "unalienablerights,thatamongthesearelife,libertyandthepursuitofhappiness.Thattosecuretheserights,governmentsare"
++ "institutedamongmen,derivingtheirjustpowersfromtheconsentofthegoverned.Thatwheneveranyformofgovernment"
++ "becomesdestructivetotheseends,itistherightofthepeopletoalterortoabolishit,andtoinstitutenewgovernment,laying"
++ "itsfoundationonsuchprinciplesandorganizingitspowersinsuchform,astothemshallseemmostlikelytoeffecttheirsafety"
++ "andhappiness.Prudence,indeed,willdictatethatgovernmentslongestablishedshouldnotbechangedforlightandtransient"
++ "causes;andaccordinglyallexperiencehathshownthatmankindaremoredisposedtosuffer,whileevilsaresufferable,than"
++ "torightthemselvesbyabolishingtheformstowhichtheyareaccustomed.Butwhenalongtrainofabusesandusurpations,"
++ "pursuinginvariablythesameobjectevincesadesigntoreducethemunderabsolutedespotism,itistheirright,itistheirduty,"
++ "tothrowoffsuchgovernment,andtoprovidenewguardsfortheirfuturesecurity.--Suchhasbeenthepatientsufferanceof"
++ "thesecolonies;andsuchisnowthenecessitywhichconstrainsthemtoaltertheirformersystemsofgovernment.Thehistory"
++ "ofthepresentKingofGreatBritainisahistoryofrepeatedinjuriesandusurpations,allhavingindirectobjectthe"
++ "establishmentofanabsolutetyrannyoverthesestates.Toprovethis,letfactsbesubmittedtoacandidworld.\n"
++ "Hehasrefusedhisassenttolaws,themostwholesomeandnecessaryforthepublicgood.\n"
++ "Hehasforbiddenhisgovernorstopasslawsofimmediateandpressingimportance,unlesssuspendedintheiroperationtill"
++ "hisassentshouldbeobtained;andwhensosuspended,hehasutterlyneglectedtoattendtothem.\n"
++ "Hehasrefusedtopassotherlawsfortheaccommodationoflargedistrictsofpeople,unlessthosepeoplewouldrelinquish"
++ "therightofrepresentationinthelegislature,arightinestimabletothemandformidabletotyrantsonly.\n"
++ "Hehascalledtogetherlegislativebodiesatplacesunusual,uncomfortable,anddistantfromthedepositoryoftheirpublic"
++ "records,forthesolepurposeoffatiguingthemintocompliancewithhismeasures.\n"
++ "Hehasdissolvedrepresentativehousesrepeatedly,foropposingwithmanlyfirmnesshisinvasionsontherightsofthepeople.\n"
++ "Hehasrefusedforalongtime,aftersuchdissolutions,tocauseotherstobeelected;wherebythelegislativepowers,"
++ "incapableofannihilation,havereturnedtothepeopleatlargefortheirexercise;thestateremaininginthemeantimeexposed"
++ "toallthedangersofinvasionfromwithout,andconvulsionswithin.\n"
++ "Hehasendeavoredtopreventthepopulationofthesestates;forthatpurposeobstructingthelawsfornaturalizationof"
++ "foreigners;refusingtopassotherstoencouragetheirmigrationhither,andraisingtheconditionsofnewappropriationsof"
++ "lands.\n"
++ "Hehasobstructedtheadministrationofjustice,byrefusinghisassenttolawsforestablishingjudiciarypowers.\n"
++ "Hehasmadejudgesdependentonhiswillalone,forthetenureoftheiroffices,andtheamountandpaymentoftheirsalaries.\n"
++ "Hehaserectedamultitudeofnewoffices,andsenthitherswarmsofofficerstoharassourpeople,andeatouttheir"
++ "substance.\n"
++ "Hehaskeptamongus,intimesofpeace,standingarmieswithouttheconsentofourlegislature.\n"
++ "Hehasaffectedtorenderthemilitaryindependentofandsuperiortocivilpower.\n"
++ "Hehascombinedwithotherstosubjectustoajurisdictionforeigntoourconstitution,andunacknowledgedbyourlaws;"
++ "givinghisassenttotheiractsofpretendedlegislation:\n"
++ "Forquarteringlargebodiesofarmedtroopsamongus:\n"
++ "Forprotectingthem,bymocktrial,frompunishmentforanymurderswhichtheyshouldcommitontheinhabitantsofthese"
++ "states:\n"
++ "Forcuttingoffourtradewithallpartsoftheworld:\n"
++ "Forimposingtaxesonuswithoutourconsent:\n"
++ "Fordeprivingusinmanycases,ofthebenefitsoftrialbyjury:\n"
++ "Fortransportingusbeyondseastobetriedforpretendedoffenses:\n"
++ "ForabolishingthefreesystemofEnglishlawsinaneighboringprovince,establishingthereinanarbitrarygovernment,and"
++ "enlargingitsboundariessoastorenderitatonceanexampleandfitinstrumentforintroducingthesameabsoluteruleinthese"
++ "colonies:\n"
++ "Fortakingawayourcharters,abolishingourmostvaluablelaws,andalteringfundamentallytheformsofourgovernments:\n"
++ "Forsuspendingourownlegislatures,anddeclaringthemselvesinvestedwithpowertolegislateforusinallcaseswhatsoever.\n"
++ "Hehasabdicatedgovernmenthere,bydeclaringusoutofhisprotectionandwagingwaragainstus.\n"
++ "Hehasplunderedourseas,ravagedourcoasts,burnedourtowns,anddestroyedthelivesofourpeople.\n"
++ "Heisatthistimetransportinglargearmiesofforeignmercenariestocompletetheworksofdeath,desolationandtyranny,"
++ "alreadybegunwithcircumstancesofcrueltyandperfidyscarcelyparalleledinthemostbarbarousages,andtotalyunworth"
++ "theheadofacivilizednation.\n"
++ "Hehasconstrainedourfellowcitizenstakencaptiveonthehighseastobeararmsagainsttheircountry,tobecomethe"
++ "executionersoftheirfriendsandbrethren,ortofallthemselvesbytheirhands.\n"
++ "Hehasexciteddomesticinsurrectionsamongstus,andhasendeavoredtobringontheinhabitantsofourfrontiers,the"
++ "mercilessIndiansavages,whoseknownruleofwarfare,isundistinguisheddestructionofallages,sexesandconditions.\n"
++ "Ineverystageoftheseoppressionswehavepetitionedforredressinthemosthumbleterms:ourrepeatedpetitionshave"
++ "beenansweredonlybyrepeatedinjury.Aprince,whosecharacteristhusmarkedbyeveryactwhichmaydefineatyrant,is"
++ "unfittobetherulerofafreepeople.\n"
++ "NorhavewebeenwantinginattentiontoourBritishbrethren.Wehavewarnedthemfromtimetotimeofattemptsbytheir"
++ "legislaturetoextendanunwarrantablejurisdictionoverus.Wehaveremindedthemofthecircumstancesofouremigration"
++ "andsettlementhere.Wehaveappealedtotheirnativejusticeandmagnanimity,andwehaveconjuredthembythetiesofour"
++ "commonkindredtodisavowtheseusurpations,which,wouldinevitablyinterruptourconnectionsandcorrespondence.We"
++ "must,therefore,acquiesceinthenecessity,whichdenouncesourseparation,andholdthem,asweholdtherestofmankind,"
++ "enemiesinwar,inpeacefriends.\n"
++ "We,therefore,therepresentativesoftheUnitedStatesofAmerica,inGeneralCongress,assembled,appealingtothe"
++ "SupremeJudgeoftheworldfortherectitudeofourintentions,do,inthename,andbytheauthorityofthegoodpeopleof"
++ "thesecolonies,solemnlypublishanddeclare,thattheseunitedcoloniesare,andofrightoughttobefreeandindependent"
++ "states;thattheyareabsolvedfromallallegiancetotheBritishCrown,andthatallpoliticalconnectionbetweenthemandthe"
++ "stateofGreatBritain,isandoughttobetotallydissolved;andthatasfreeandindependentstates,theyhavefullpowerto"
++ "leveywar,concludepeace,contractalliances,establishcommerce,andtodoallotheractsandthingswhichindependent"
++ "statesmayofrightdo.Andforthesupportofthisdeclaration,withafirmrelianceontheprotectionofDivineProvidence,we"
++ "mutuallypledgetoeachotherourlives,ourfortunesandoursacredhonor.\n";
+
+	public static void main(String[] args) throws Exception {
+		new SimpleBITest().run(args);
+	}
+
+    public void testWordBreak() throws Exception {
+        BreakIterator wordBreak = BreakIterator.getWordInstance(new Locale("en", "US", "TEST"));
+        int breaks = doTest(wordBreak);
+        logln(String.valueOf(breaks));
+	}
+
+    public void testLineBreak() throws Exception {
+        BreakIterator lineBreak = BreakIterator.getLineInstance(new Locale("en", "US", "TEST"));
+        int breaks = doTest(lineBreak);
+        logln(String.valueOf(breaks));
+	}
+
+    public void testSentenceBreak() throws Exception {
+        BreakIterator sentenceBreak = BreakIterator.getSentenceInstance(new Locale("en", "US", "TEST"));
+        int breaks = doTest(sentenceBreak);
+        logln(String.valueOf(breaks));
+    }
+
+    private int doTest(BreakIterator bi) {
+        // forward
+        bi.setText(testText);
+        int p = bi.first();
+        int lastP = p;
+        String fragment;
+        int breaks = 0;
+        logln("Forward...");
+        while (p != BreakIterator.DONE) {
+            p = bi.next();
+            if (p != BreakIterator.DONE) {
+                fragment = testText.substring(lastP, p);
+            } else {
+                fragment = testText.substring(lastP);
+			}
+            debugPrintln(": >" + fragment + "<");
+            ++breaks;
+            lastP = p;
+        }
+        return breaks;
+    }
+
+    private void debugPrintln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f')
+                out.append(c);
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        logln(out.toString());
+    }
+
+    private void debugPrintln2(String s) {
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= '\u0100')
+                out.append("<" + ((int)c - 0x100) + ">");
+            else
+                out.append(c);
+        }
+        logln(out.toString());
+    }
+}
+
diff --git a/src/com/ibm/test/rbbi/english.dict b/src/com/ibm/test/rbbi/english.dict
new file mode 100755
index 0000000..860dcbe
--- /dev/null
+++ b/src/com/ibm/test/rbbi/english.dict
Binary files differ
diff --git a/src/com/ibm/test/rbnf/RbnfRoundTripTest.java b/src/com/ibm/test/rbnf/RbnfRoundTripTest.java
new file mode 100755
index 0000000..2505402
--- /dev/null
+++ b/src/com/ibm/test/rbnf/RbnfRoundTripTest.java
@@ -0,0 +1,220 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/rbnf/Attic/RbnfRoundTripTest.java,v $ 
+ * $Date: 2000/03/10 03:47:47 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.rbnf;
+
+import com.ibm.text.RuleBasedNumberFormat;
+import com.ibm.test.TestFmwk;
+
+import java.util.Locale;
+import java.text.NumberFormat;
+
+public class RbnfRoundTripTest extends TestFmwk {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public static void main(String[] args) {
+        RbnfRoundTripTest test = new RbnfRoundTripTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                            + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the English spellout rules
+     */
+    public void TestEnglishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the duration-formatting rules
+     */
+    public void TestDurationsRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.DURATION);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Spanish spellout rules
+     */
+    public void TestSpanishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("es", "es",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the French spellout rules
+     */
+    public void TestFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.FRANCE,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Italian spellout rules
+     */
+    public void TestItalianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.ITALIAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -999999, 999999);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the German spellout rules
+     */
+    public void TestGermanSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.GERMANY,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Swedish spellout rules
+     */
+    public void TestSwedishSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("sv", "SE",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Dutch spellout rules
+     */
+    public void TestDutchSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("nl", "NL",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, -12345678, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Japanese spellout rules
+     */
+    public void TestJapaneseSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.JAPAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Russian spellout rules
+     */
+    public void TestRussianSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("ru", "RU",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    /**
+     * Perform an exhaustive round-trip test on the Greek spellout rules
+     */
+    public void TestGreekSpelloutRT() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("el", "GR",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+
+        doTest(formatter, 0, 12345678);
+    }
+
+    void doTest(RuleBasedNumberFormat formatter,  long lowLimit,
+                    long highLimit) {
+        try {
+            long count = 0;
+            long increment = 1;
+            for (long i = lowLimit; i <= highLimit; i += increment) {
+                if (count % 1000 == 0)
+                    logln(Long.toString(i));
+
+                if (Math.abs(i) < 5000)
+                    increment = 1;
+                else if (Math.abs(i) < 500000)
+                    increment = 2737;
+                else
+                    increment = 267437;
+
+                String text = formatter.format(i);
+                long rt = formatter.parse(text).longValue();
+
+                if (rt != i) {
+                    errln("Round-trip failed: " + i + " -> " + text +
+                                    " -> " + rt);
+                }
+
+                ++count;
+            }
+
+            if (lowLimit < 0) {
+                double d = 1.234;
+                while (d < 1000) {
+                    String text = formatter.format(d);
+                    double rt = formatter.parse(text).doubleValue();
+
+                    if (rt != d) {
+                        errln("Round-trip failed: " + d + " -> " + text +
+                                        " -> " + rt);
+                    }
+                    d *= 10;
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/test/rbnf/RbnfTest.java b/src/com/ibm/test/rbnf/RbnfTest.java
new file mode 100755
index 0000000..6e9ba34
--- /dev/null
+++ b/src/com/ibm/test/rbnf/RbnfTest.java
@@ -0,0 +1,390 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/rbnf/Attic/RbnfTest.java,v $ 
+ * $Date: 2000/03/10 03:47:47 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.rbnf;
+
+import com.ibm.text.RuleBasedNumberFormat;
+import com.ibm.test.TestFmwk;
+
+import java.util.Locale;
+import java.text.NumberFormat;
+
+public class RbnfTest extends TestFmwk {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1999 IBM Corp.  All rights reserved.";
+
+    public static void main(String[] args) {
+        RbnfTest test = new RbnfTest();
+
+        try {
+            test.run(args);
+        }
+        catch (Throwable e) {
+            System.out.println("Entire test failed because of exception: "
+                            + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Perform a simple spot check on the English spellout rules
+     */
+    public void TestEnglishSpellout() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "one" },
+            { "15", "fifteen" },
+            { "20", "twenty" },
+            { "23", "twenty-three" },
+            { "73", "seventy-three" },
+            { "88", "eighty-eight" },
+            { "100", "one hundred" },
+            { "106", "one hundred and six" },
+            { "127", "one hundred and twenty-seven" },
+            { "200", "two hundred" },
+            { "579", "five hundred and seventy-nine" },
+            { "1,000", "one thousand" },
+            { "2,000", "two thousand" },
+            { "3,004", "three thousand and four" },
+            { "4,567", "four thousand five hundred and sixty-seven" },
+            { "15,943", "fifteen thousand nine hundred and forty-three" },
+            { "2,345,678", "two million, three hundred and forty-five "
+                        + "thousand, six hundred and seventy-eight" },
+            { "-36", "minus thirty-six" },
+            { "234.567", "two hundred and thirty-four point five six seven" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "FOurhundred     thiRTY six", "436" },
+            { "2 thousand six HUNDRED fifty-7", "2,657" },
+            { "fifteen hundred and zero", "1,500" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the English ordinal-abbreviation rules
+     */
+    public void TestOrdinalAbbreviations() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.ORDINAL);
+        String[][] testData = {
+            { "1", "1st" },
+            { "2", "2nd" },
+            { "3", "3rd" },
+            { "4", "4th" },
+            { "7", "7th" },
+            { "10", "10th" },
+            { "11", "11th" },
+            { "13", "13th" },
+            { "20", "20th" },
+            { "21", "21st" },
+            { "22", "22nd" },
+            { "23", "23rd" },
+            { "24", "24th" },
+            { "33", "33rd" },
+            { "102", "102nd" },
+            { "312", "312th" },
+            { "12,345", "12,345th" }
+        };
+
+        doTest(formatter, testData, false);
+    }
+
+    /**
+     * Perform a simple spot check on the duration-formatting rules
+     */
+    public void TestDurations() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.US,
+                        RuleBasedNumberFormat.DURATION);
+        String[][] testData = {
+            { "3,600", "1:00:00" },		//move me and I fail
+            { "0", "0 sec." },
+            { "1", "1 sec." },
+            { "24", "24 sec." },
+            { "60", "1:00" },
+            { "73", "1:13" },
+            { "145", "2:25" },
+            { "666", "11:06" },
+//            { "3,600", "1:00:00" },
+            { "3,740", "1:02:20" },
+            { "10,293", "2:51:33" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "2-51-33", "10,293" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Spanish spellout rules
+     */
+    public void TestSpanishSpellout() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("es", "es",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "6", "seis" },
+            { "16", "diecis\u00e9is" },
+            { "20", "veinte" },
+            { "24", "veinticuatro" },
+            { "26", "veintis\u00e9is" },
+            { "73", "setenta y tres" },
+            { "88", "ochenta y ocho" },
+            { "100", "cien" },
+            { "106", "ciento seis" },
+            { "127", "ciento veintisiete" },
+            { "200", "doscientos" },
+            { "579", "quinientos setenta y nueve" },
+            { "1,000", "mil" },
+            { "2,000", "dos mil" },
+            { "3,004", "tres mil cuatro" },
+            { "4,567", "cuatro mil quinientos sesenta y siete" },
+            { "15,943", "quince mil novecientos cuarenta y tres" },
+            { "2,345,678", "dos mill\u00f3n trescientos cuarenta y cinco mil "
+                    + "seiscientos setenta y ocho"},
+            { "-36", "menos treinta y seis" },
+            { "234.567", "doscientos treinta y cuatro punto cinco seis siete" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the French spellout rules
+     */
+    public void TestFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.FRANCE,
+                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt-et-un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "soixante-dix" },
+            { "71", "soixante et onze" },
+            { "73", "soixante-treize" },
+            { "80", "quatre-vingts" },
+            { "88", "quatre-vingt-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cents soixante-dix-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "onze cents vingt-trois" },
+            { "1,594", "mille cinq cents quatre-vingt-quatorze" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cents soixante-sept" },
+            { "15,943", "quinze mille neuf cents quarante-trois" },
+            { "2,345,678", "deux million trois cents quarante-cinq mille "
+                        + "six cents soixante-dix-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cents trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "trente-un", "31" },
+            { "un cents quatre vingt dix huit", "198" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    /**
+     * Perform a simple spot check on the Swiss French spellout rules
+     */
+    public void TestSwissFrenchSpellout() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(new Locale("fr", "CH",
+                        ""), RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "un" },
+            { "15", "quinze" },
+            { "20", "vingt" },
+            { "21", "vingt-et-un" },
+            { "23", "vingt-trois" },
+            { "62", "soixante-deux" },
+            { "70", "septante" },
+            { "71", "septante-et-un" },
+            { "73", "septante-trois" },
+            { "80", "octante" },
+            { "88", "octante-huit" },
+            { "100", "cent" },
+            { "106", "cent six" },
+            { "127", "cent vingt-sept" },
+            { "200", "deux cents" },
+            { "579", "cinq cents septante-neuf" },
+            { "1,000", "mille" },
+            { "1,123", "onze cents vingt-trois" },
+            { "1,594", "mille cinq cents nonante-quatre" },
+            { "2,000", "deux mille" },
+            { "3,004", "trois mille quatre" },
+            { "4,567", "quatre mille cinq cents soixante-sept" },
+            { "15,943", "quinze mille neuf cents quarante-trois" },
+            { "2,345,678", "deux million trois cents quarante-cinq mille "
+                        + "six cents septante-huit" },
+            { "-36", "moins trente-six" },
+            { "234.567", "deux cents trente-quatre virgule cinq six sept" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the Italian spellout rules
+     */
+    public void TestItalianSpellout() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.ITALIAN,
+                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "uno" },
+            { "15", "quindici" },
+            { "20", "venti" },
+            { "23", "ventitre" },
+            { "73", "settantatre" },
+            { "88", "ottantotto" },
+            { "100", "cento" },
+            { "106", "centosei" },
+            { "108", "centotto" },
+            { "127", "centoventisette" },
+            { "181", "centottantuno" },
+            { "200", "duecento" },
+            { "579", "cinquecentosettantanove" },
+            { "1,000", "mille" },
+            { "2,000", "duemila" },
+            { "3,004", "tremilaquattro" },
+            { "4,567", "quattromilacinquecentosessantasette" },
+            { "15,943", "quindicimilanovecentoquarantatre" },
+            { "-36", "meno trentisei" },
+            { "234.567", "duecentotrentiquattro virgola cinque sei sette" }
+        };
+
+        doTest(formatter, testData, true);
+    }
+
+    /**
+     * Perform a simple spot check on the German spellout rules
+     */
+    public void TestGermanSpellout() {
+        RuleBasedNumberFormat formatter
+                        = new RuleBasedNumberFormat(Locale.GERMANY,
+                        RuleBasedNumberFormat.SPELLOUT);
+        String[][] testData = {
+            { "1", "eins" },
+            { "15", "f\u00fcnfzehn" },
+            { "20", "zwanzig" },
+            { "23", "dreiundzwanzig" },
+            { "73", "dreiundsiebzig" },
+            { "88", "achtundachtzig" },
+            { "100", "hundert" },
+            { "106", "hundertsechs" },
+            { "127", "hundertsiebenundzwanzig" },
+            { "200", "zweihundert" },
+            { "579", "f\u00fcnfhundertneunundsiebzig" },
+            { "1,000", "tausend" },
+            { "2,000", "zweitausend" },
+            { "3,004", "dreitausendvier" },
+            { "4,567", "viertausendf\u00fcnfhundertsiebenundsechzig" },
+            { "15,943", "f\u00fcnfzehntausendneunhundertdreiundvierzig" },
+            { "2,345,678", "zwei Millionen dreihundertf\u00fcnfundvierzigtausend"
+                        + "sechshundertachtundsiebzig" }
+        };
+
+        doTest(formatter, testData, true);
+
+        formatter.setLenientParseMode(true);
+        String[][] lpTestData = {
+            { "ein Tausend sechs Hundert fuenfunddreissig", "1,635" }
+        };
+        doLenientParseTest(formatter, lpTestData);
+    }
+
+    void doTest(RuleBasedNumberFormat formatter, String[][] testData,
+                boolean testParsing) {
+        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String number = testData[i][0];
+                String expectedWords = testData[i][1];
+                String actualWords = formatter.format(decFmt.parse(number));
+
+                if (!actualWords.equals(expectedWords)) {
+                    errln("Spot check failed: for " + number + ", expected "
+                                + expectedWords + ", but got " +
+                                actualWords);
+                }
+                else if (testParsing) {
+                    String actualNumber = decFmt.format(formatter
+                                    .parse(actualWords));
+
+                    if (!actualNumber.equals(number)) {
+                        errln("Spot check failed: for " + actualWords +
+                                ", expected " + number + ", but got " +
+                                actualNumber);
+                    }
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+
+    void doLenientParseTest(RuleBasedNumberFormat formatter,
+                    String[][] testData) {
+        NumberFormat decFmt = NumberFormat.getInstance(Locale.US);
+
+        try {
+            for (int i = 0; i < testData.length; i++) {
+                String words = testData[i][0];
+                String expectedNumber = testData[i][1];
+                String actualNumber = decFmt.format(formatter.parse(words));
+
+                if (!actualNumber.equals(expectedNumber)) {
+                    errln("Lenient-parse spot check failed: for "
+                                + words + ", expected " + expectedNumber
+                                + ", but got " + actualNumber);
+                }
+            }
+        }
+        catch (Throwable e) {
+            errln("Test failed with exception: " + e.toString());
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/com/ibm/test/search/SearchTest.java b/src/com/ibm/test/search/SearchTest.java
new file mode 100755
index 0000000..22286f1
--- /dev/null
+++ b/src/com/ibm/test/search/SearchTest.java
@@ -0,0 +1,463 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/search/Attic/SearchTest.java,v $ 
+ * $Date: 2000/03/10 03:47:47 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.search;
+
+import java.text.*;
+import java.util.*;
+
+//import com.ibm.text.*;
+import com.ibm.text.SearchIterator;
+import com.ibm.text.StringSearch;
+
+/**
+ * Unit and regression tests for the StringSearch and SearchIterator classes.
+ * This uses <code>IntlTest</code> as a framework for running the tests
+ * and displaying the output.  Basically, any method here that starts with
+ * <code>Test</code> is run as a test.
+ */
+public class SearchTest extends com.ibm.test.TestFmwk {
+    public static void main(String[] args) throws Exception {
+        new SearchTest().run(args);
+    }
+    
+    //-----------------------------------------------------------
+    // Static data: collators and break iterators to use for testing
+    //
+    static RuleBasedCollator enColl;        // Generic English collator
+    static RuleBasedCollator frColl;        // French accent rules
+    static RuleBasedCollator esColl;        // Has Spanish contracting "ch"
+    static RuleBasedCollator deColl;        // Has expansions, e.g. a-umlaut -> ae
+    
+    static {
+        try {
+            enColl = (RuleBasedCollator)Collator.getInstance(Locale.US);
+            frColl = (RuleBasedCollator)Collator.getInstance(Locale.FRANCE);
+            
+            esColl = new RuleBasedCollator(enColl.getRules() + " & C < ch ; cH ; Ch ; CH");
+            
+            deColl = new RuleBasedCollator(enColl.getRules() + " & ae ; ä & AE ; Ä"
+                                                             + " & oe ; ö & OE ; Ö"
+                                                             + " & ue ; ü & UE ; Ü"); 
+        }
+        catch (ParseException e) {
+        }
+    }
+    
+    static BreakIterator enWord = BreakIterator.getWordInstance(Locale.US);
+    
+    static String testString = 
+            "blackbirds Pat p\u00E9ch\u00E9 " +
+            "p\u00EAche p\u00E9cher p\u00EAcher " +
+            "Tod T\u00F6ne black Tofu blackbirds " +
+            "Ton PAT toehold " +
+            "blackbird " +
+            "black-bird pat " +
+            "toe big Toe";
+    
+    //-------------------------------------------------------------------------
+    // The primary test consists of running through all of the strings in this
+    // table and making sure we find the proper matches
+    //
+    static class TestCase {
+        TestCase(RuleBasedCollator c, int strength, BreakIterator breaker,
+                    String pattern, String target, int[] matches) {
+            this.collator = c;
+            this.strength = strength;
+            this.breaker = breaker;
+            this.pattern = pattern;
+            this.target = target;
+            this.matches = matches;
+        }
+        RuleBasedCollator   collator;
+        int                 strength;
+        BreakIterator       breaker;
+        String              pattern;
+        String              target;
+        int[]               matches;
+    };
+    static TestCase[] testCases = {
+        new TestCase(enColl, Collator.PRIMARY, null, "fox",
+                //   012345678901234567890123456789012345678901234567890123456789
+                    "The quick brown fox jumps over the lazy foxes",
+                    new int[] { 16, 40 }
+                    ),
+
+        new TestCase(enColl, Collator.PRIMARY, enWord, "fox",
+                //   012345678901234567890123456789012345678901234567890123456789
+                    "The quick brown fox jumps over the lazy foxes",
+                    new int[] { 16 }
+                    ),
+
+        new TestCase(frColl, Collator.PRIMARY, null, "peche",
+                    testString,
+                    new int[] { 15, 21, 27, 34 }
+                    ),
+        new TestCase(frColl, Collator.PRIMARY, enWord, "blackbird",
+                    testString,
+                    new int[] { 88, 98 }
+                    ),
+
+        // NOTE: this case depends on a bug fix in JDK 1.2.2 ("Cricket")
+        new TestCase(deColl, Collator.PRIMARY, null, "toe",
+                //   012345678901234567890123456789012345678901234567890123456789
+                    "This is a toe T\u00F6ne",
+                    new int[] { 10, 14 }
+                    ),
+
+        /* Due to a bug in the JDK 1.2 FCS version of CollationElementIterator,
+         * searching through text containing contracting character sequences 
+         * isn't working properly right now.  This will probably be fixed in
+         * JDK 1.3 ("Kestrel").  When it is, uncomment these test cases.
+         *
+        new TestCase(esColl, Collator.PRIMARY, enWord, "channel",
+                //   0123456789012345678901234567890123456789012345678901234567890123456789
+                    "A channel, another CHANNEL, more Channels, and one last channel...",
+                    new int[] {  }
+                    ),
+
+        new TestCase(esColl, Collator.TERTIARY, enWord, "Channel",
+                //   0123456789012345678901234567890123456789012345678901234567890123456789
+                    "Channel, another channel, more channels, and one last Channel",
+                    new int[] {  }
+                    ),
+        */
+
+    };
+
+    /**
+     * Test using the test cases defined above
+     */
+    public void TestCases() {
+        for (int t = 0; t < testCases.length; t++)
+        {
+            logln("case " + t);
+            TestCase c = testCases[t];
+            StringSearch iter = new StringSearch(c.pattern,
+                                        new StringCharacterIterator(c.target),
+                                        c.collator, c.breaker);
+            iter.setStrength(c.strength);
+            doTestCase(iter, c.matches);
+        }
+    }
+    
+    /**
+     * Test for SearchIterator.setOverlapping()
+     */
+    public void TestOverlapping() {
+        // Create a search iterator. 
+        StringSearch iter = new StringSearch("abab",
+                                             new StringCharacterIterator("abababab"),
+                                             enColl, null);
+        
+        int[] overlap = new int[] { 0, 2, 4 };  // expected results
+        int[] novrlap = new int[] { 0, 4 };
+
+        
+        doTestCase(iter, overlap);          // Overlapping is allowed by default
+        if (iter.isOverlapping() != true) {
+            errln("ERROR: isOverlapping returned " + iter.isOverlapping());
+        }
+        
+        iter.setOverlapping(false);         // Turn 'em back off
+        doTestCase(iter, novrlap);
+        if (iter.isOverlapping() != false) {
+            errln("ERROR: isOverlapping returned " + iter.isOverlapping());
+        }
+
+        iter.setOverlapping(true);
+        doTestCase(iter, overlap);
+        if (iter.isOverlapping() != true) {
+            errln("ERROR: isOverlapping returned " + iter.isOverlapping());
+        }
+    }
+    
+    /**
+     * Test for SearchIterator.setBreakIterator
+     */
+    public void TestBreakIterator() {
+        StringSearch iter = new StringSearch("fox",
+                                 new StringCharacterIterator("foxy fox"),
+                                 enColl, null);
+
+        BreakIterator charBreaker = BreakIterator.getCharacterInstance(Locale.US);
+        BreakIterator wordBreaker = BreakIterator.getWordInstance(Locale.US);
+        
+        int[] chars = new int[] { 0, 5 };   // expected results
+        int[] words = new int[] { 5 };
+        
+        logln("default break iterator...");
+        doTestCase(iter, chars);            // character breaker by default
+        
+        logln("word break iterator...");
+        iter.setBreakIterator(wordBreaker); // word break detection
+        doTestCase(iter, words);
+        if (iter.getBreakIterator() != wordBreaker) {
+            errln("ERROR: getBreakIterator returned wrong object");
+        }
+
+        logln("char break iterator...");
+        iter.setBreakIterator(charBreaker); // char break detection
+        doTestCase(iter, chars);
+        if (iter.getBreakIterator() != charBreaker) {
+            errln("ERROR: getBreakIterator returned wrong object");
+        }
+
+        logln("null break iterator...");
+        iter.setBreakIterator(null);
+        doTestCase(iter, chars);
+        if (iter.getBreakIterator() != null) {
+            errln("ERROR: getBreakIterator returned wrong object");
+        }
+    }
+    
+    /**
+     * Test for SearchIterator.setTarget
+     */
+    public void TestSetTarget() {
+        String  pat = "fox";
+        String  targ1 = "the foxy brown fox";
+        String  targ2 = "the quick brown fox";
+        
+        int[] match1 = new int[] { 4, 15 };   // expected results
+        int[] match2 = new int[] { 16 };
+
+        StringSearch iter = new StringSearch(pat, new StringCharacterIterator(targ1),
+                                 enColl, null);
+
+        logln("initial text...");
+        doTestCase(iter, match1);
+        assertEqual(iter.getTarget(), targ1);
+        
+        logln("target #2...");
+        iter.setTarget(new StringCharacterIterator(targ2));
+        doTestCase(iter, match2);
+        assertEqual(iter.getTarget(), targ2);
+        
+        logln("back to target #1...");
+        iter.setTarget(new StringCharacterIterator(targ1));
+        doTestCase(iter, match1);
+        assertEqual(iter.getTarget(), targ1);
+    }
+    
+    /**
+     * Test for StringSearch.setStrength
+     */
+    public void TestSetStrength() {
+        String  pat = "fox";
+        String  targ = "the foxy brown Fox";
+        
+        int[] match1 = new int[] { 4, 15 };   // expected results
+        int[] match3 = new int[] { 4 };
+
+        StringSearch iter = new StringSearch(pat, new StringCharacterIterator(targ),
+                                 enColl, null);
+
+       /* logln("Trying primary strength...");
+        iter.setStrength(Collator.PRIMARY);
+        doTestCase(iter, match1);
+        if (iter.getStrength() != Collator.PRIMARY) {
+            errln("ERROR: getStrength: expected PRIMARY, got " + iter.getStrength());
+        } */
+        
+        logln("Trying tertiary strength...");
+        iter.setStrength(Collator.TERTIARY);
+        doTestCase(iter, match3);
+        if (iter.getStrength() != Collator.TERTIARY) {
+            errln("ERROR: getStrength: expected PRIMARY, got " + iter.getStrength());
+        }
+        
+    }
+
+    /**
+     * Test for StringSearch.setCollator
+     */
+    public void TestSetCollator() throws ParseException {
+        // Create a test collator that thinks "o" and "p" are the same thing
+        RuleBasedCollator testColl = new RuleBasedCollator(enColl.getRules()
+                                            + "& o,O ; p,P" );
+                                            
+        String  pat = "fox";
+        String  targ = "fox fpx ";
+        
+        int[] match1 = new int[] { 0 };     // English results
+        int[] match2 = new int[] { 0, 4 };  // Test collator results
+
+        StringSearch iter = new StringSearch(pat, new StringCharacterIterator(targ),
+                                 enColl, null);
+
+        logln("Trying English collator...");
+
+        iter.setStrength(Collator.PRIMARY);
+        doTestCase(iter, match1);
+        if (iter.getCollator() != enColl) {
+            errln("ERROR: getCollator returned wrong collator");
+        }
+        
+        logln("Trying test collator...");
+
+        iter.setCollator(testColl);
+        iter.setStrength(Collator.PRIMARY);
+        doTestCase(iter, match2);
+        if (iter.getCollator() != testColl) {
+            errln("ERROR: getCollator returned wrong collator");
+        }
+        
+        logln("Trying English collator again...");
+
+        iter.setCollator(enColl);
+        iter.setStrength(Collator.PRIMARY);
+        doTestCase(iter, match1);
+        if (iter.getCollator() != enColl) {
+            errln("ERROR: getCollator returned wrong collator");
+        }
+        
+    }
+
+    /**
+     * Test for StringSearch.setPattern
+     */
+    public void TestSetPattern() {
+                      // 01234567890123456789012345678901234567890123456789
+        String target = "The quick brown fox jumps over the lazy foxes";
+        String pat1 = "the";
+        String pat2 = "fox";
+        
+        int[] match1 = new int[] { 0, 31 };
+        int[] match2 = new int[] { 16, 40 };
+
+        StringSearch iter = new StringSearch(pat1, new StringCharacterIterator(target),
+                                 enColl, null);
+        iter.setStrength(Collator.PRIMARY);
+        
+        doTestCase(iter, match1);
+        if (!iter.getPattern().equals(pat1)) {
+            errln("getPattern returned '" + iter.getPattern() + "', expected '"
+                + pat1 + "'");
+        }
+        
+        iter.setPattern(pat2);
+        doTestCase(iter, match2);
+        if (!iter.getPattern().equals(pat2)) {
+            errln("getPattern returned '" + iter.getPattern() + "', expected '"
+                + pat1 + "'");
+        }
+        
+        iter.setPattern(pat1);
+        doTestCase(iter, match1);
+        if (!iter.getPattern().equals(pat1)) {
+            errln("getPattern returned '" + iter.getPattern() + "', expected '"
+                + pat1 + "'");
+        }
+    }
+    
+    /**
+     * Test for an infinite loop that happened when the target text started
+     * with an ignorable character.
+     * Reported by Muly Oved, <mulyoved@netvision.net.il>
+     */
+    public void TestIgnorableLoop() {
+        String pattern = "go";
+        String target  = "  on";
+
+        StringSearch search;
+        
+        try {
+            search=new StringSearch(pattern, new StringCharacterIterator(target), enColl);
+                                                
+            logln("searching... "+pattern);
+            search.first();
+            logln("Will never go here if searching for 'go'");
+        } catch (Exception e) {
+            errln("Caught exception: " + e.toString());
+        }
+
+        System.out.println("end");
+    }
+    
+    //-------------------------------------------------------------------------
+    // Various internal utility methods....
+    //-------------------------------------------------------------------------
+
+    void assertEqual(CharacterIterator i1, String s2) {
+        CharacterIterator i2 = new StringCharacterIterator(s2);
+        char c1 = i1.first();
+        char c2 = i2.first();
+        int i = 0;
+        
+        while (c1 == c2 && c1 != CharacterIterator.DONE) {
+            c1 = i1.next();
+            c2 = i2.next();
+        }
+        if (c1 != CharacterIterator.DONE || c2 != CharacterIterator.DONE) {
+            errln("CharacterIterator mismatch at index " + i);
+        }
+    }
+    
+    void doTestCase(StringSearch iter, int[] expected) {
+        //
+        // The basic logic here is as follows...  We construct a search
+        // iterator and use it to find all of the matches in the target
+        // text.  Then we compare it to the expected matches
+        //
+        Vector matches = new Vector();
+
+        for (int i = iter.first(); i != SearchIterator.DONE; i = iter.next()) {
+            matches.addElement(new Integer(i));
+        }
+        compareMatches(expected, matches);
+        
+        // Now do the same exact thing as above, but in reverse
+        logln("Now searching in reverse...");
+        matches.removeAllElements();
+        for (int i = iter.last(); i != SearchIterator.DONE; i = iter.previous()) {
+            matches.insertElementAt(new Integer(i), 0);
+        }
+        compareMatches(expected, matches);
+    }
+    
+    /**
+     * Utility function used by TestCases to compare the matches that
+     * were found against the ones that were expected
+     */
+    void compareMatches(int[] expected, Vector found) {
+        // Step through the two arrays in parallel and make sure that they're
+        // the same
+        
+        int e=0, f=0;
+        
+        while (e < expected.length && f < found.size()) {
+            int eVal = expected[e];
+            int fVal = ((Integer)found.elementAt(f)).intValue();
+            
+            if (eVal < fVal) {
+                errln("Missed expected match at " + eVal);
+                e++;
+            } else if (eVal > fVal) {
+                errln("Found unexpected match at " + fVal);
+                f++;
+            } else {
+                e++;
+                f++;
+            }
+        }
+        while (e < expected.length) {
+            errln("Missed expected match at " + expected[e]);
+            e++;
+        }
+        while (f < found.size()) {
+            int fVal = ((Integer)found.elementAt(f)).intValue();
+            errln("Found unexpected match at " + fVal);
+            f++;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/test/topleveltest/TestAll.java b/src/com/ibm/test/topleveltest/TestAll.java
new file mode 100755
index 0000000..050aa66
--- /dev/null
+++ b/src/com/ibm/test/topleveltest/TestAll.java
@@ -0,0 +1,76 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/topleveltest/Attic/TestAll.java,v $ 
+ * $Date: 2000/03/10 03:47:47 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.topleveltest;
+import com.ibm.test.TestFmwk;
+import java.text.*;
+import java.util.*;
+
+/**
+ * @test
+ * @summary General test of UnicodeSet
+ */
+ 
+public class TestAll extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TestAll().run(args);
+    }
+
+    public void TestBigNumberFormat() throws Exception{
+        run(new com.ibm.test.bnf.BigNumberFormatTest());
+    }
+    
+    public void TestCompression1() throws Exception{
+        run(new com.ibm.test.compression.DecompressionTest());
+    }
+    
+    public void TestCompression2() throws Exception{
+        run(new com.ibm.test.compression.ExhaustiveTest());
+    }
+
+	public void TestNormalizer1() throws Exception{
+		run(new com.ibm.test.normalizer.BasicTest());
+	}
+
+	public void TestNormalizer2() throws Exception {
+		run(new com.ibm.test.normalizer.ExhaustiveTest());
+	}
+
+	public void TestRuleBasedNumberFormat1() throws Exception {
+		run(new com.ibm.test.rbnf.RbnfTest());
+	}
+
+	public void TestRulebasedNumberFormat2() throws Exception {
+		run(new com.ibm.test.rbnf.RbnfRoundTripTest());
+	}
+
+	public void TestRuleBasedBreakIteartor1() throws Exception {
+		run(new com.ibm.test.rbbi.SimpleBITest());
+	}
+
+	public void TestRuleBasedBreakIteartor2() throws Exception {
+		run(new com.ibm.test.rbbi.BreakIteratorTest());
+	}
+
+	public void TestTranslit1() throws Exception {
+		run(new com.ibm.test.translit.UnicodeSetTest());
+	}
+
+	public void TestTranslit2() throws Exception {
+		run(new com.ibm.test.translit.TransliteratorTest());
+	}
+	
+	public void TestSearch() throws Exception {
+		run(new com.ibm.test.search.SearchTest());
+	}
+}
diff --git a/src/com/ibm/test/translit/TransliteratorTest.java b/src/com/ibm/test/translit/TransliteratorTest.java
new file mode 100755
index 0000000..72b76c8
--- /dev/null
+++ b/src/com/ibm/test/translit/TransliteratorTest.java
@@ -0,0 +1,470 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/translit/Attic/TransliteratorTest.java,v $ 
+ * $Date: 2000/03/10 03:47:47 $ 
+ * $Revision: 1.13 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.translit;
+import com.ibm.text.*;
+import com.ibm.test.*;
+import com.ibm.util.Utility;
+import java.text.*;
+import java.util.*;
+
+/**
+ * @test
+ * @summary General test of Transliterator
+ */
+public class TransliteratorTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new TransliteratorTest().run(args);
+    }
+
+    public void TestInstantiation() {
+        long ms = System.currentTimeMillis();
+        String ID;
+        for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+            ID = (String) e.nextElement();
+            try {
+                Transliterator t = Transliterator.getInstance(ID);
+                // We should get a new instance if we try again
+                Transliterator t2 = Transliterator.getInstance(ID);
+                if (t != t2) {
+                    logln(ID + ":" + t);
+                } else {
+                    errln("FAIL: " + ID + " returned identical instances");
+                }
+            } catch (IllegalArgumentException ex) {
+                errln("FAIL: " + ID);
+                throw ex;
+            }
+        }
+
+        // Now test the failure path
+        try {
+            ID = "<Not a valid Transliterator ID>";
+            Transliterator t = Transliterator.getInstance(ID);
+            errln("FAIL: " + ID + " returned " + t);
+        } catch (IllegalArgumentException ex) {
+            logln("OK: Bogus ID handled properly");
+        }
+        
+        ms = System.currentTimeMillis() - ms;
+        logln("Elapsed time: " + ms + " ms");
+    }
+
+    public void TestDisplayName() {
+        String ID;
+        for (Enumeration e = Transliterator.getAvailableIDs(); e.hasMoreElements(); ) {
+            ID = (String) e.nextElement();
+            logln(ID + " -> " + Transliterator.getDisplayName(ID));
+        }
+    }
+
+    public void TestSimpleRules() {
+        /* Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * []|eabcd  start - no match, copy e to tranlated buffer
+         * [e]|abcd  match rule 1 - copy output & adjust cursor
+         * [ex|y]cd  match rule 2 - copy output & adjust cursor
+         * [exz]|d   no match, copy d to transliterated buffer
+         * [exzd]|   done
+         */
+        expect("ab>x|y;" +
+               "yc>z",
+               "eabcd", "exzd");
+
+        /* Another set of rules:
+         *    1. ab>x|yzacw
+         *    2. za>q
+         *    3. qc>r
+         *    4. cw>n
+         *
+         * []|ab       Rule 1
+         * [x|yzacw]   No match
+         * [xy|zacw]   Rule 2
+         * [xyq|cw]    Rule 4
+         * [xyqn]|     Done
+         */
+        expect("ab>x|yzacw;" +
+               "za>q;" +
+               "qc>r;" +
+               "cw>n",
+               "ab", "xyqn");
+
+        /* Test categories
+         */
+        Transliterator t = new RuleBasedTransliterator("<ID>",
+                                                       "dummy=\uE100;" +
+                                                       "vowel=[aeiouAEIOU];" +
+                                                       "lu=[:Lu:];" +
+                                                       "{vowel} ({lu}) > !;" +
+                                                       "{vowel} > &;" +
+                                                       "(!) {lu} > ^;" +
+                                                       "{lu} > *;" +
+                                                       "a>ERROR");
+        expect(t, "abcdefgABCDEFGU", "&bcd&fg!^**!^*&");
+    }
+
+    /**
+     * Test undefined variable.
+     */
+    public void TestUndefinedVariable() {
+        String rule = "({initial}) a <> \u1161;";
+        try {
+            Transliterator t = new RuleBasedTransliterator("<ID>", rule);
+        } catch (IllegalArgumentException e) {
+            logln("OK: Got exception for " + rule + ", as expected: " +
+                  e.getMessage());
+            return;
+        }
+        errln("Fail: bogus rule " + rule + " compiled without error");
+    }
+
+    /**
+     * Test empty context.
+     */
+    public void TestEmptyContext() {
+        expect("() a () > b;", "xay a ", "xby b ");
+    }
+
+    /**
+     * Test inline set syntax and set variable syntax.
+     */
+    public void TestInlineSet() {
+        expect("[:Ll:] (x) > y; [:Ll:] > z;", "aAbxq", "zAyzz");
+        expect("a[0-9]b > qrs", "1a7b9", "1qrs9");
+
+        expect("digit = [0-9];" +
+               "alpha = [a-zA-Z];" +
+               "alphanumeric = [{digit}{alpha}];" + // ***
+               "special = [^{alphanumeric}];" +     // ***
+               "{alphanumeric} > -;" +
+               "{special} > *;",
+
+               "thx-1138", "---*----");
+    }
+
+    /**
+     * Create some inverses and confirm that they work.  We have to be
+     * careful how we do this, since the inverses will not be true
+     * inverses -- we can't throw any random string at the composition
+     * of the transliterators and expect the identity function.  F x
+     * F' != I.  However, if we are careful about the input, we will
+     * get the expected results.
+     */
+    public void TestRuleBasedInverse() {
+        String RULES =
+            "abc>zyx;" +
+            "ab>yz;" +
+            "bc>zx;" +
+            "ca>xy;" +
+            "a>x;" +
+            "b>y;" +
+            "c>z;" +
+
+            "abc<zyx;" +
+            "ab<yz;" +
+            "bc<zx;" +
+            "ca<xy;" +
+            "a<x;" +
+            "b<y;" +
+            "c<z;" +
+
+            "";
+
+        String[] DATA = {
+            // Careful here -- random strings will not work.  If we keep
+            // the left side to the domain and the right side to the range
+            // we will be okay though (left, abc; right xyz).
+            "a", "x",
+            "abcacab", "zyxxxyy",
+            "caccb", "xyzzy",
+        };
+
+        Transliterator fwd = new RuleBasedTransliterator("<ID>", RULES);
+        Transliterator rev = new RuleBasedTransliterator("<ID>", RULES,
+                                     RuleBasedTransliterator.REVERSE, null);
+        for (int i=0; i<DATA.length; i+=2) {
+            expect(fwd, DATA[i], DATA[i+1]);
+            expect(rev, DATA[i+1], DATA[i]);
+        }
+    }
+
+    /**
+     * Basic test of keyboard.
+     */
+    public void TestKeyboard() {
+        Transliterator t = new RuleBasedTransliterator("<ID>", 
+                                                       "psch>Y;"
+                                                       +"ps>y;"
+                                                       +"ch>x;"
+                                                       +"a>A;");
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Aps",
+            "c", "Apsc",
+            "a", "AycA",
+            "psch", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Basic test of keyboard with cursor.
+     */
+    public void TestKeyboard2() {
+        Transliterator t = new RuleBasedTransliterator("<ID>", 
+                                                       "ych>Y;"
+                                                       +"ps>|y;"
+                                                       +"ch>x;"
+                                                       +"a>A;");
+        String DATA[] = {
+            // insertion, buffer
+            "a", "A",
+            "p", "Ap",
+            "s", "Ay",
+            "c", "Ayc",
+            "a", "AycA",
+            "p", "AycAp",
+            "s", "AycAy",
+            "c", "AycAyc",
+            "h", "AycAY",
+            null, "AycAY", // null means finishKeyboardTransliteration
+        };
+
+        keyboardAux(t, DATA);
+    }
+
+    /**
+     * Test keyboard transliteration with back-replacement.
+     */
+    public void TestKeyboard3() {
+        // We want th>z but t>y.  Furthermore, during keyboard
+        // transliteration we want t>y then yh>z if t, then h are
+        // typed.
+        String RULES =
+            "t>|y;" +
+            "yh>z;" +
+            "";
+
+        String[] DATA = {
+            // Column 1: characters to add to buffer (as if typed)
+            // Column 2: expected appearance of buffer after
+            //           keyboard xliteration.
+            "a", "a",
+            "b", "ab",
+            "t", "aby",
+            "c", "abyc",
+            "t", "abycy",
+            "h", "abycz",
+            null, "abycz", // null means finishKeyboardTransliteration
+        };
+
+        Transliterator t = new RuleBasedTransliterator("<ID>", RULES);
+        keyboardAux(t, DATA);
+    }
+
+    private void keyboardAux(Transliterator t, String[] DATA) {
+        Transliterator.Position index = new Transliterator.Position();
+        ReplaceableString s = new ReplaceableString();
+        for (int i=0; i<DATA.length; i+=2) {
+            StringBuffer log;
+            if (DATA[i] != null) {
+                log = new StringBuffer(s.toString() + " + "
+                                       + DATA[i]
+                                       + " -> ");
+                t.transliterate(s, index, DATA[i]);
+            } else {
+                log = new StringBuffer(s.toString() + " => ");
+                t.finishTransliteration(s, index);
+            }
+            String str = s.toString();
+            // Show the start index '{' and the cursor '|'
+            log.append(str.substring(0, index.start)).
+                append('{').
+                append(str.substring(index.start,
+                                     index.cursor)).
+                append('|').
+                append(str.substring(index.cursor));
+            if (str.equals(DATA[i+1])) {
+                logln(log.toString());
+            } else {
+                errln("FAIL: " + log.toString() + ", expected " + DATA[i+1]);
+            }
+        }
+    }
+
+    public void TestArabic() {
+        String DATA[] = {
+            "Arabic",
+                "\u062a\u062a\u0645\u062a\u0639 "+
+                "\u0627\u0644\u0644\u063a\u0629 "+
+                "\u0627\u0644\u0639\u0631\u0628\u0628\u064a\u0629 "+
+                "\u0628\u0628\u0646\u0638\u0645 "+
+                "\u0643\u062a\u0627\u0628\u0628\u064a\u0629 "+
+                "\u062c\u0645\u064a\u0644\u0629"
+        };
+
+        Transliterator t = Transliterator.getInstance("Latin-Arabic");
+        for (int i=0; i<DATA.length; i+=2) {
+            expect(t, DATA[i], DATA[i+1]);
+        }
+    }
+
+    /**
+     * Compose the Kana transliterator forward and reverse and try
+     * some strings that should come out unchanged.
+     */
+    public void TestCompoundKana() {
+        Transliterator t = new CompoundTransliterator("Latin-Kana;Kana-Latin");
+        expect(t, "aaaaa", "aaaaa");
+    }
+
+    /**
+     * Compose the hex transliterators forward and reverse.
+     */
+    public void TestCompoundHex() {
+        Transliterator a = Transliterator.getInstance("Unicode-Hex");
+        Transliterator b = Transliterator.getInstance("Hex-Unicode");
+        Transliterator[] trans = { a, b };
+        Transliterator ab = new CompoundTransliterator(trans);
+
+        // Do some basic tests of b
+        expect(b, "\\u0030\\u0031", "01");
+
+        String s = "abcde";
+        expect(ab, s, s);
+
+        trans = new Transliterator[] { b, a };
+        Transliterator ba = new CompoundTransliterator(trans);
+        ReplaceableString str = new ReplaceableString(s);
+        a.transliterate(str);
+        expect(ba, str.toString(), str.toString());
+    }
+
+    /**
+     * Do some basic tests of filtering.
+     */
+    public void TestFiltering() {
+        Transliterator hex = Transliterator.getInstance("Unicode-Hex");
+        hex.setFilter(new UnicodeFilter() {
+            public boolean contains(char c) {
+                return c != 'c';
+            }
+        });
+        String s = "abcde";
+        String out = hex.transliterate(s);
+        String exp = "\\u0061\\u0062c\\u0064\\u0065";
+        if (out.equals(exp)) {
+            logln("Ok:   \"" + exp + "\"");
+        } else {
+            logln("FAIL: \"" + out + "\", wanted \"" + exp + "\"");
+        }
+    }
+
+    /**
+     * Test pattern quoting and escape mechanisms.
+     */
+    public void TestPatternQuoting() {
+        // Array of 3n items
+        // Each item is <rules>, <input>, <expected output>
+        String[] DATA = {
+            "\u4E01>'[male adult]'", "\u4E01", "[male adult]",
+        };
+
+        for (int i=0; i<DATA.length; i+=3) {
+            logln("Pattern: " + Utility.escape(DATA[i]));
+            Transliterator t = new RuleBasedTransliterator("<ID>", DATA[i]);
+            expect(t, DATA[i+1], DATA[i+2]);
+        }
+    }
+
+    //======================================================================
+    // Support methods
+    //======================================================================
+
+    void expect(String rules, String source, String expectedResult) {
+        expect(new RuleBasedTransliterator("<ID>", rules), source, expectedResult);
+    }
+
+    void expect(Transliterator t, String source, String expectedResult,
+                Transliterator reverseTransliterator) {
+        expect(t, source, expectedResult);
+        if (reverseTransliterator != null) {
+            expect(reverseTransliterator, expectedResult, source);
+        }
+    }
+
+    void expect(Transliterator t, String source, String expectedResult) {
+        String result = t.transliterate(source);
+        expectAux(t.getID() + ":String", source, result, expectedResult);
+
+        ReplaceableString rsource = new ReplaceableString(source);
+        t.transliterate(rsource);
+        result = rsource.toString();
+        expectAux(t.getID() + ":Replaceable", source, result, expectedResult);
+
+        // Test keyboard (incremental) transliteration -- this result
+        // must be the same after we finalize (see below).
+        rsource.getStringBuffer().setLength(0);
+        Transliterator.Position index = new Transliterator.Position();
+        StringBuffer log = new StringBuffer();
+
+        for (int i=0; i<source.length(); ++i) {
+            if (i != 0) {
+                log.append(" + ");
+            }
+            log.append(source.charAt(i)).append(" -> ");
+            t.transliterate(rsource, index,
+                            String.valueOf(source.charAt(i)));
+            // Append the string buffer with a vertical bar '|' where
+            // the committed index is.
+            String s = rsource.toString();
+            log.append(s.substring(0, index.cursor)).
+                append('|').
+                append(s.substring(index.cursor));
+        }
+        
+        // As a final step in keyboard transliteration, we must call
+        // transliterate to finish off any pending partial matches that
+        // were waiting for more input.
+        t.finishTransliteration(rsource, index);
+        result = rsource.toString();
+        log.append(" => ").append(rsource.toString());
+
+        expectAux(t.getID() + ":Keyboard", log.toString(),
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+
+    void expectAux(String tag, String source,
+                   String result, String expectedResult) {
+        expectAux(tag, source + " -> " + result,
+                  result.equals(expectedResult),
+                  expectedResult);
+    }
+    
+    void expectAux(String tag, String summary, boolean pass,
+                   String expectedResult) {
+        if (pass) {
+            logln("("+tag+") " + Utility.escape(summary));
+        } else {
+            errln("FAIL: ("+tag+") "
+                  + Utility.escape(summary)
+                  + ", expected " + Utility.escape(expectedResult));
+        }
+    }
+}
diff --git a/src/com/ibm/test/translit/UnicodeSetTest.java b/src/com/ibm/test/translit/UnicodeSetTest.java
new file mode 100755
index 0000000..e3de87b
--- /dev/null
+++ b/src/com/ibm/test/translit/UnicodeSetTest.java
@@ -0,0 +1,170 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/test/translit/Attic/UnicodeSetTest.java,v $ 
+ * $Date: 2000/03/10 03:47:47 $ 
+ * $Revision: 1.6 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.test.translit;
+import com.ibm.text.*;
+import com.ibm.test.*;
+import java.text.*;
+import java.util.*;
+
+/**
+ * @test
+ * @summary General test of UnicodeSet
+ */
+public class UnicodeSetTest extends TestFmwk {
+
+    public static void main(String[] args) throws Exception {
+        new UnicodeSetTest().run(args);
+    }
+
+    public void TestPatterns() {
+        UnicodeSet set = new UnicodeSet();
+        expectPattern(set, "[[a-m]&[d-z]&[k-y]]",  "km");
+        expectPattern(set, "[[a-z]-[m-y]-[d-r]]",  "aczz");
+        expectPattern(set, "[a\\-z]",  "--aazz");
+        expectPattern(set, "[-az]",  "--aazz");
+        expectPattern(set, "[az-]",  "--aazz");
+        expectPattern(set, "[[[a-z]-[aeiou]i]]", "bdfnptvz");
+
+        // Throw in a test of complement
+        set.complement();
+        String exp = '\u0000' + "aeeoouu" + (char)('z'+1) + '\uFFFF';
+        expectPairs(set, exp);
+    }
+
+    public void TestCategories() {
+        UnicodeSet set = new UnicodeSet("[:Lu:]");
+        expectContainment(set, "ABC", "abc");
+    }
+
+    public void TestAddRemove() {
+        UnicodeSet set = new UnicodeSet();
+        set.add('a', 'z');
+        expectPairs(set, "az");
+        set.remove('m', 'p');
+        expectPairs(set, "alqz");
+        set.remove('e', 'g');
+        expectPairs(set, "adhlqz");
+        set.remove('d', 'i');
+        expectPairs(set, "acjlqz");
+        set.remove('c', 'r');
+        expectPairs(set, "absz");
+        set.add('f', 'q');
+        expectPairs(set, "abfqsz");
+        set.remove('a', 'g');
+        expectPairs(set, "hqsz");
+        set.remove('a', 'z');
+        expectPairs(set, "");
+
+        // Try removing an entire set from another set
+        expectPattern(set, "[c-x]", "cx");
+        UnicodeSet set2 = new UnicodeSet();
+        expectPattern(set2, "[f-ky-za-bc[vw]]", "acfkvwyz");
+        set.removeAll(set2);
+        expectPairs(set, "deluxx");
+
+        // Try adding an entire set to another set
+        expectPattern(set, "[jackiemclean]", "aacceein");
+        expectPattern(set2, "[hitoshinamekatajamesanderson]", "aadehkmort");
+        set.addAll(set2);
+        expectPairs(set, "aacehort");
+
+        // Test commutativity
+        expectPattern(set, "[hitoshinamekatajamesanderson]", "aadehkmort");
+        expectPattern(set2, "[jackiemclean]", "aacceein");
+        set.addAll(set2);
+        expectPairs(set, "aacehort");
+    }
+
+    void expectContainment(UnicodeSet set, String charsIn, String charsOut) {
+        StringBuffer bad = new StringBuffer();
+        if (charsIn != null) {
+            for (int i=0; i<charsIn.length(); ++i) {
+                char c = charsIn.charAt(i);
+                if (!set.contains(c)) {
+                    bad.append(c);
+                }
+            }
+            if (bad.length() > 0) {
+                logln("Fail: set " + set + " does not contain " + bad +
+                      ", expected containment of " + charsIn);
+            } else {
+                logln("Ok: set " + set + " contains " + charsIn);
+            }
+        }
+        if (charsOut != null) {
+            bad.setLength(0);
+            for (int i=0; i<charsOut.length(); ++i) {
+                char c = charsOut.charAt(i);
+                if (set.contains(c)) {
+                    bad.append(c);
+                }
+            }
+            if (bad.length() > 0) {
+                logln("Fail: set " + set + " contains " + bad +
+                      ", expected non-containment of " + charsOut);
+            } else {
+                logln("Ok: set " + set + " does not contain " + charsOut);
+            }
+        }
+    }
+
+    void expectPattern(UnicodeSet set,
+                       String pattern,
+                       String expectedPairs) {
+        set.applyPattern(pattern);
+        if (!set.getPairs().equals(expectedPairs)) {
+            errln("FAIL: applyPattern(\"" + pattern +
+                  "\") => pairs \"" +
+                  escape(set.getPairs()) + "\", expected \"" +
+                  escape(expectedPairs) + "\"");
+        } else {
+            logln("Ok:   applyPattern(\"" + pattern +
+                  "\") => pairs \"" +
+                  escape(set.getPairs()) + "\"");
+        }
+    }
+
+    void expectPairs(UnicodeSet set, String expectedPairs) {
+        if (!set.getPairs().equals(expectedPairs)) {
+            errln("FAIL: Expected pair list \"" +
+                  escape(expectedPairs) + "\", got \"" +
+                  escape(set.getPairs()) + "\"");
+        }
+    }
+
+    /**
+     * Escape non-ASCII characters as Unicode.
+     */
+    static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c <= 0x007F) {
+                buf.append(c);
+            } else {
+                buf.append("\\u");
+                if (c < 0x1000) {
+                    buf.append('0');
+                    if (c < 0x100) {
+                        buf.append('0');
+                        if (c < 0x10) {
+                            buf.append('0');
+                        }
+                    }
+                }
+                buf.append(Integer.toHexString(c));
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/text/BreakDictionary.java b/src/com/ibm/text/BreakDictionary.java
new file mode 100755
index 0000000..1656027
--- /dev/null
+++ b/src/com/ibm/text/BreakDictionary.java
@@ -0,0 +1,296 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/BreakDictionary.java,v $ 
+ * $Date: 2000/03/10 04:07:18 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.io.InputStream;
+import java.io.DataInputStream;
+import java.io.FileNotFoundException;
+import java.io.UnsupportedEncodingException;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.FileOutputStream;
+
+import com.ibm.util.CompactByteArray;
+
+/**
+ * This is the class that represents the list of known words used by
+ * DictionaryBasedBreakIterator.  The conceptual data structure used
+ * here is a trie: there is a node hanging off the root node for every
+ * letter that can start a word.  Each of these nodes has a node hanging
+ * off of it for every letter that can be the second letter of a word
+ * if this node is the first letter, and so on.  The trie is represented
+ * as a two-dimensional array that can be treated as a table of state
+ * transitions.  Indexes are used to compress this array, taking
+ * advantage of the fact that this array will always be very sparse.
+ */
+public class BreakDictionary {
+    //=================================================================================
+    // testing and debugging
+    //=================================================================================
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+
+        BreakDictionary dictionary = new BreakDictionary(new FileInputStream(filename));
+
+        String outputFile = "";
+        if(args.length >= 2) {
+            outputFile = args[1];
+        }
+        PrintWriter out = null;
+        if (outputFile.length() != 0) {
+            out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UnicodeLittle"));
+        }
+        dictionary.printWordList("", 0, out);
+    }
+
+    public void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == -1) {
+            System.out.println(partialWord);
+            if (out != null) {
+                out.println(partialWord);
+            }
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                if (at(state, i) != 0) {
+                    printWordList(partialWord + reverseColumnMap[i], at(state, i), out);
+                }
+            }
+        }
+    }
+
+    /**
+     * A map used to go from column numbers to characters.  Used only
+     * for debugging right now.
+     */
+    private char[] reverseColumnMap = null;
+
+    //=================================================================================
+    // data members
+    //=================================================================================
+
+    /**
+     * Maps from characters to column numbers.  The main use of this is to
+     * avoid making room in the array for empty columns.
+     */
+    private CompactByteArray columnMap = null;
+
+    /**
+     * The number of actual columns in the table
+     */
+    private int numCols;
+
+    /**
+     * Columns are organized into groups of 32.  This says how many
+     * column groups.  (We could calculate this, but we store the
+     * value to avoid having to repeatedly calculate it.)
+     */
+    private int numColGroups;
+
+    /**
+     * The actual compressed state table.  Each conceptual row represents
+     * a state, and the cells in it contain the row numbers of the states
+     * to transition to for each possible letter.  0 is used to indicate
+     * an illegal combination of letters (i.e., the error state).  The
+     * table is compressed by eliminating all the unpopulated (i.e., zero)
+     * cells.  Multiple conceptual rows can then be doubled up in a single
+     * physical row by sliding them up and possibly shifting them to one
+     * side or the other so the populated cells don't collide.  Indexes
+     * are used to identify unpopulated cells and to locate populated cells.
+     */
+    private short[] table = null;
+
+    /**
+     * This index maps logical row numbers to physical row numbers
+     */
+    private short[] rowIndex = null;
+
+    /**
+     * A bitmap is used to tell which cells in the comceptual table are
+     * populated.  This array contains all the unique bit combinations
+     * in that bitmap.  If the table is more than 32 columns wide,
+     * successive entries in this array are used for a single row.
+     */
+    private int[] rowIndexFlags = null;
+
+    /**
+     * This index maps from a logical row number into the bitmap table above.
+     * (This keeps us from storing duplicate bitmap combinations.)  Since there
+     * are a lot of rows with only one populated cell, instead of wasting space
+     * in the bitmap table, we just store a negative number in this index for
+     * rows with one populated cell.  The absolute value of that number is
+     * the column number of the populated cell.
+     */
+    private short[] rowIndexFlagsIndex = null;
+
+    /**
+     * For each logical row, this index contains a constant that is added to
+     * the logical column number to get the physical column number
+     */
+    private byte[] rowIndexShifts = null;
+
+    //=================================================================================
+    // deserialization
+    //=================================================================================
+
+    public BreakDictionary(InputStream dictionaryStream) throws IOException {
+        readDictionaryFile(new DataInputStream(dictionaryStream));
+    }
+
+    public void readDictionaryFile(DataInputStream in) throws IOException {
+        int l;
+
+        // read in the version number (right now we just ignore it)
+        in.readInt();
+        
+        // read in the column map (this is serialized in its internal form:
+        // an index array followed by a data array)
+        l = in.readInt();
+        char[] temp = new char[l];
+        for (int i = 0; i < temp.length; i++)
+            temp[i] = (char)in.readShort();
+        l = in.readInt();
+        byte[] temp2 = new byte[l];
+        for (int i = 0; i < temp2.length; i++)
+            temp2[i] = in.readByte();
+        columnMap = new CompactByteArray(temp, temp2);
+
+        // read in numCols and numColGroups
+        numCols = in.readInt();
+        numColGroups = in.readInt();
+
+        // read in the row-number index
+        l = in.readInt();
+        rowIndex = new short[l];
+        for (int i = 0; i < rowIndex.length; i++)
+            rowIndex[i] = in.readShort();
+
+        // load in the populated-cells bitmap: index first, then bitmap list
+        l = in.readInt();
+        rowIndexFlagsIndex = new short[l];
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            rowIndexFlagsIndex[i] = in.readShort();
+        l = in.readInt();
+        rowIndexFlags = new int[l];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = in.readInt();
+
+        // load in the row-shift index
+        l = in.readInt();
+        rowIndexShifts = new byte[l];
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            rowIndexShifts[i] = in.readByte();
+
+        // finally, load in the actual state table
+        l = in.readInt();
+        table = new short[l];
+        for (int i = 0; i < table.length; i++)
+            table[i] = in.readShort();
+
+        // this data structure is only necessary for testing and debugging purposes
+        reverseColumnMap = new char[numCols];
+        for (char c = 0; c < 0xffff; c++) {
+            int col = columnMap.elementAt(c);
+            if (col != 0) {
+               reverseColumnMap[col] = c;
+            }
+        }
+
+        // close the stream
+        in.close();
+    }
+
+    //=================================================================================
+    // access to the words
+    //=================================================================================
+
+    /**
+     * Uses the column map to map the character to a column number, then
+     * passes the row and column number to the other version of at()
+     * @param row The current state
+     * @param ch The character whose column we're interested in
+     * @return The new state to transition to
+     */
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    /**
+     * Returns the value in the cell with the specified (logical) row and
+     * column numbers.  In DictionaryBasedBreakIterator, the row number is
+     * a state number, the column number is an input, and the return value
+     * is the row number of the new state to transition to.  (0 is the
+     * "error" state, and -1 is the "end of word" state in a dictionary)
+     * @param row The row number of the current state
+     * @param col The column number of the input character (0 means "not a
+     * dictionary character")
+     * @return The row number of the new state to transition to
+     */
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col)) {
+            // we map from logical to physical row number by looking up the
+            // mapping in rowIndex; we map from logical column number to
+            // physical column number by looking up a shift value for this
+            // logical row and offsetting the logical column number by
+            // the shift amount.  Then we can use internalAt() to actually
+            // get the value out of the table.
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        }
+        else {
+            return 0;
+        }
+    }
+
+    /**
+     * Given (logical) row and column numbers, returns true if the
+     * cell in that position is populated
+     */
+    private final boolean cellIsPopulated(int row, int col) {
+        // look up the entry in the bitmap index for the specified row.
+        // If it's a negative number, it's the column number of the only
+        // populated cell in the row
+        if (rowIndexFlagsIndex[row] < 0) {
+            return col == -rowIndexFlagsIndex[row];
+        }
+
+        // if it's a positive number, it's the offset of an entry in the bitmap
+        // list.  If the table is more than 32 columns wide, the bitmap is stored
+        // successive entries in the bitmap list, so we have to divide the column
+        // number by 32 and offset the number we got out of the index by the result.
+        // Once we have the appropriate piece of the bitmap, test the appropriate
+        // bit and return the result.
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    /**
+     * Implementation of at() when we know the specified cell is populated.
+     * @param row The PHYSICAL row number of the cell
+     * @param col The PHYSICAL column number of the cell
+     * @return The value stored in the cell
+     */
+    private final short internalAt(int row, int col) {
+        // the table is a one-dimensional array, so this just does the math necessary
+        // to treat it as a two-dimensional array (we don't just use a two-dimensional
+        // array because two-dimensional arrays are inefficient in Java)
+        return table[row * numCols + col];
+    }
+}
+
diff --git a/src/com/ibm/text/BreakIterator.java b/src/com/ibm/text/BreakIterator.java
new file mode 100755
index 0000000..4699af7
--- /dev/null
+++ b/src/com/ibm/text/BreakIterator.java
@@ -0,0 +1,599 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/BreakIterator.java,v $ 
+ * $Date: 2000/03/10 04:07:18 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.util.Vector;
+import java.util.Locale;
+import java.util.ResourceBundle;                                    //ibm.597
+import java.util.MissingResourceException;                          //ibm.597
+import java.text.resources.LocaleData;                              //ibm.597
+import java.text.CharacterIterator;                                 //ibm.597
+import java.text.StringCharacterIterator;                           //ibm.597
+
+import java.net.URL;                                                //ibm.597
+import java.io.InputStream;                                         //ibm.597
+import java.io.IOException;                                         //ibm.597
+
+import java.lang.ref.SoftReference;                                 //ibm.597
+
+/**
+ * A class that locates boundaries in text.  This class defines a protocol for
+ * objects that break up a piece of natural-language text according to a set
+ * of criteria.  Instances or subclasses of BreakIterator can be provided, for
+ * example, to break a piece of text into words, sentences, or logical characters
+ * according to the conventions of some language or group of languages.
+ *
+ * We provide four built-in types of BreakIterator:
+ * <ul><li>getSentenceInstance() returns a BreakIterator that locates boundaries
+ * between sentences.  This is useful for triple-click selection, for example.
+ * <li>getWordInstance() returns a BreakIterator that locates boundaries between
+ * words.  This is useful for double-click selection or "find whole words" searches.
+ * This type of BreakIterator makes sure there is a boundary position at the
+ * beginning and end of each legal word.  (Numbers count as words, too.)  Whitespace
+ * and punctuation are kept separate from real words.
+ * <li>getLineInstance() returns a BreakIterator that locates positions where it is
+ * legal for a text editor to wrap lines.  This is similar to word breaking, but
+ * not the same: punctuation and whitespace are generally kept with words (you don't
+ * want a line to start with whitespace, for example), and some special characters
+ * can force a position to be considered a line-break position or prevent a position
+ * from being a line-break position.
+ * <li>getCharacterInstance() returns a BreakIterator that locates boundaries between
+ * logical characters.  Because of the structure of the Unicode encoding, a logical
+ * character may be stored internally as more than one Unicode code point.  (A with an
+ * umlaut may be stored as an a followed by a separate combining umlaut character,
+ * for example, but the user still thinks of it as one character.)  This iterator allows
+ * various processes (especially text editors) to treat as characters the units of text
+ * that a user would think of as characters, rather than the units of text that the
+ * computer sees as "characters".</ul>
+ *
+ * BreakIterator's interface follows an "iterator" model (hence the name), meaning it
+ * has a concept of a "current position" and methods like first(), last(), next(),
+ * and previous() that update the current position.  All BreakIterators uphold the
+ * following invariants:
+ * <ul><li>The beginning and end of the text are always treated as boundary positions.
+ * <li>The current position of the iterator is always a boundary position (random-
+ * access methods move the iterator to the nearest boundary position before or
+ * after the specified position, not _to_ the specified position).
+ * <li>DONE is used as a flag to indicate when iteration has stopped.  DONE is only
+ * returned when the current position is the end of the text and the user calls next(),
+ * or when the current position is the beginning of the text and the user calls
+ * previous().
+ * <li>Break positions are numbered by the positions of the characters that follow
+ * them.  Thus, under normal circumstances, the position before the first character
+ * is 0, the position after the first character is 1, and the position after the
+ * last character is 1 plus the length of the string.
+ * <li>The client can change the position of an iterator, or the text it analyzes,
+ * at will, but cannot change the behavior.  If the user wants different behavior, he
+ * must instantiate a new iterator.</ul>
+ *
+ * BreakIterator accesses the text it analyzes through a CharacterIterator, which makes
+ * it possible to use BreakIterator to analyze text in any text-storage vehicle that
+ * provides a CharacterIterator interface.
+ *
+ * <b>NOTE:</b>  Some types of BreakIterator can take a long time to create, and
+ * instances of BreakIterator are not currently cached by the system.  For
+ * optimal performance, keep instances of BreakIterator around as long as makes
+ * sense.  For example, when word-wrapping a document, don't create and destroy a
+ * new BreakIterator for each line.  Create one break iterator for the whole document
+ * (or whatever stretch of text you're wrapping) and use it to do the whole job of
+ * wrapping the text.
+ *
+  * <P>
+ * <strong>Examples</strong>:<P>
+ * Creating and using text boundaries
+ * <blockquote>
+ * <pre>
+ * public static void main(String args[]) {
+ *      if (args.length == 1) {
+ *          String stringToExamine = args[0];
+ *          //print each word in order
+ *          BreakIterator boundary = BreakIterator.getWordInstance();
+ *          boundary.setText(stringToExamine);
+ *          printEachForward(boundary, stringToExamine);
+ *          //print each sentence in reverse order
+ *          boundary = BreakIterator.getSentenceInstance(Locale.US);
+ *          boundary.setText(stringToExamine);
+ *          printEachBackward(boundary, stringToExamine);
+ *          printFirst(boundary, stringToExamine);
+ *          printLast(boundary, stringToExamine);
+ *      }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in order
+ * <blockquote>
+ * <pre>
+ * public static void printEachForward(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     for (int end = boundary.next();
+ *          end != BreakIterator.DONE;
+ *          start = end, end = boundary.next()) {
+ *          System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print each element in reverse order
+ * <blockquote>
+ * <pre>
+ * public static void printEachBackward(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     for (int start = boundary.previous();
+ *          start != BreakIterator.DONE;
+ *          end = start, start = boundary.previous()) {
+ *         System.out.println(source.substring(start,end));
+ *     }
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print first element
+ * <blockquote>
+ * <pre>
+ * public static void printFirst(BreakIterator boundary, String source) {
+ *     int start = boundary.first();
+ *     int end = boundary.next();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print last element
+ * <blockquote>
+ * <pre>
+ * public static void printLast(BreakIterator boundary, String source) {
+ *     int end = boundary.last();
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Print the element at a specified position
+ * <blockquote>
+ * <pre>
+ * public static void printAt(BreakIterator boundary, int pos, String source) {
+ *     int end = boundary.following(pos);
+ *     int start = boundary.previous();
+ *     System.out.println(source.substring(start,end));
+ * }
+ * </pre>
+ * </blockquote>
+ *
+ * Find the next word
+ * <blockquote>
+ * <pre>
+ * public static int nextWordStartAfter(int pos, String text) {
+ *     BreakIterator wb = BreakIterator.getWordInstance();
+ *     wb.setText(text);
+ *     int last = wb.following(pos);
+ *     int current = wb.next();
+ *     while (current != BreakIterator.DONE) {
+ *         for (int p = last; p < current; p++) {
+ *             if (Character.isLetter(text.charAt(p))
+ *                 return last;
+ *         }
+ *         last = current;
+ *         current = wb.next();
+ *     }
+ *     return BreakIterator.DONE;
+ * }
+ * </pre>
+ * (The iterator returned by BreakIterator.getWordInstance() is unique in that
+ * the break positions it returns don't represent both the start and end of the
+ * thing being iterated over.  That is, a sentence-break iterator returns breaks
+ * that each represent the end of one sentence and the beginning of the next.
+ * With the word-break iterator, the characters between two boundaries might be a
+ * word, or they might be the punctuation or whitespace between two words.  The
+ * above code uses a simple heuristic to determine which boundary is the beginning
+ * of a word: If the characters between this boundary and the next boundary
+ * include at least one letter (this can be an alphabetical letter, a CJK ideograph,
+ * a Hangul syllable, a Kana character, etc.), then the text between this boundary
+ * and the next is a word; otherwise, it's the material between words.)
+ * </blockquote>
+ *
+ * @see CharacterIterator
+ *
+ */
+
+public abstract class BreakIterator implements Cloneable
+{
+    /**
+     * Default constructor.  There is no state that is carried by this abstract
+     * base class.
+     */
+    protected BreakIterator()
+    {
+    }
+
+    /**
+     * Clone method.  Creates another BreakIterator with the same behavior and
+     * current state as this one.
+     * @return The clone.
+     */
+    public Object clone()
+    {
+        try {
+            return super.clone();
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * DONE is returned by previous() and next() after all valid
+     * boundaries have been returned.
+     */
+    public static final int DONE = -1;
+
+    /**
+     * Return the first boundary position.  This is always the beginning
+     * index of the text this iterator iterates over.  For example, if
+     * the iterator iterates over a whole string, this function will
+     * always return 0.  This function also updates the iteration position
+     * to point to the beginning of the text.
+     * @return The character offset of the beginning of the stretch of text
+     * being broken.
+     */
+    public abstract int first();
+
+    /**
+     * Return the last boundary position.  This is always the "past-the-end"
+     * index of the text this iterator iterates over.  For example, if the
+     * iterator iterates over a whole string (call it "text"), this function
+     * will always return text.length().  This function also updated the
+     * iteration position to point to the end of the text.
+     * @return The character offset of the end of the stretch of text
+     * being broken.
+     */
+    public abstract int last();
+
+    /**
+     * Advances the specified number of steps forward in the text (a negative
+     * number, therefore, advances backwards).  If this causes the iterator
+     * to advance off either end of the text, this function returns DONE;
+     * otherwise, this function returns the position of the appropriate
+     * boundary.  Calling this function is equivalent to calling next() or
+     * previous() n times.
+     * @param n The number of boundaries to advance over (if positive, moves
+     * forward; if negative, moves backwards).
+     * @return The position of the boundary n boundaries from the current
+     * iteration position, or DONE if moving n boundaries causes the iterator
+     * to advance off either end of the text.
+     */
+    public abstract int next(int n);
+
+    /**
+     * Advances the iterator forward one boundary.  The current iteration
+     * position is updated to point to the next boundary position after the
+     * current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by last(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the first boundary position following the
+     * iteration position.
+     */
+    public abstract int next();
+
+    /**
+     * Advances the iterator backward one boundary.  The current iteration
+     * position is updated to point to the last boundary position before
+     * the current position, and this is also the value that is returned.  If
+     * the current position is equal to the value returned by first(), or to
+     * DONE, this function returns DONE and sets the current position to
+     * DONE.
+     * @return The position of the last boundary position preceding the
+     * iteration position.
+     */
+    public abstract int previous();
+
+    /**
+     * Sets the iterator's current iteration position to be the first
+     * boundary position following the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * first boundary after the specified position.)  If the specified
+     * position is the past-the-end position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the first boundary position following
+     * "offset" (whether or not "offset" itself is a boundary position),
+     * or DONE if "offset" is the past-the-end offset.
+     */
+    public abstract int following(int offset);
+
+    /**
+     * Sets the iterator's current iteration position to be the last
+     * boundary position preceding the specified position.  (Whether the
+     * specified position is itself a boundary position or not doesn't
+     * matter-- this function always moves the iteration position to the
+     * last boundary before the specified position.)  If the specified
+     * position is the starting position, returns DONE.
+     * @param offset The character position to start searching from.
+     * @return The position of the last boundary position preceding
+     * "offset" (whether of not "offset" itself is a boundary position),
+     * or DONE if "offset" is the starting offset of the iterator.
+     */
+    public int preceding(int offset) {
+        // NOTE:  This implementation is here solely because we can't add new
+        // abstract methods to an existing class.  There is almost ALWAYS a
+        // better, faster way to do this.
+        int pos = following(offset);
+        while (pos >= offset && pos != DONE)
+            pos = previous();
+        return pos;
+    }
+
+    /**
+     * Return true if the specfied position is a boundary position.  If the
+     * function returns true, the current iteration position is set to the
+     * specified position; if the function returns false, the current
+     * iteration position is set as though following() had been called.
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     */
+    public boolean isBoundary(int offset) {
+        // Again, this is the default implementation, which is provided solely because
+        // we couldn't add a new abstract method to an existing class.  The real
+        // implementations will usually need to do a little more work.
+        if (offset == 0) {
+            return true;
+        }
+        else
+            return following(offset - 1) == offset;
+    }
+
+    /**
+     * Return the iterator's current position.
+     * @return The iterator's current position.
+     */
+    public abstract int current();
+
+    /**
+     * Returns a CharacterIterator over the text being analyzed.
+     * For at least some subclasses of BreakIterator, this is a reference
+     * to the <b>actual iterator being used</b> by the BreakIterator,
+     * and therefore, this function's return value should be treated as
+     * <tt>const</tt>.  No guarantees are made about the current position
+     * of this iterator when it is returned.  If you need to move that
+     * position to examine the text, clone this function's return value first.
+     * @return A CharacterIterator over the text being analyzed.
+     */
+    public abstract CharacterIterator getText();
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The new
+     * piece of text is passed in as a String, and the current
+     * iteration position is reset to the beginning of the string.
+     * (The old text is dropped.)
+     * @param newText A String containing the text to analyze with
+     * this BreakIterator.
+     */
+    public void setText(String newText)
+    {
+        setText(new StringCharacterIterator(newText));
+    }
+
+    /**
+     * Sets the iterator to analyze a new piece of text.  The
+     * BreakIterator is passed a CharacterIterator through which
+     * it will access the text itself.  The current iteration
+     * position is reset to the CharacterIterator's start index.
+     * (The old iterator is dropped.)
+     * @param newText A CharacterIterator referring to the text
+     * to analyze with this BreakIterator (the iterator's current
+     * position is ignored, but its other state is significant).
+     */
+    public abstract void setText(CharacterIterator newText);
+
+    private static final int CHARACTER_INDEX = 0;                   //ibm.597
+    private static final int WORD_INDEX = 1;                        //ibm.597
+    private static final int LINE_INDEX = 2;                        //ibm.597
+    private static final int SENTENCE_INDEX = 3;                    //ibm.597
+    private static final SoftReference[] iterCache = new SoftReference[4];  //ibm.597
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * This function assumes that the text being analyzed is in the default
+     * locale's language.
+     * @return An instance of BreakIterator that locates word boundaries.
+     */
+    public static BreakIterator getWordInstance()
+    {
+        return getWordInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates word boundaries.
+     * @param where A locale specifying the language of the text to be
+     * analyzed.
+     * @return An instance of BreakIterator that locates word boundaries.
+     */
+    public static BreakIterator getWordInstance(Locale where)
+    {
+        return getBreakInstance(where,                              //ibm.597
+                                WORD_INDEX,                         //ibm.597
+                                "WordBreakRules",                   //ibm.597
+                                "WordBreakDictionary");             //ibm.597
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.  This function assumes the text being broken
+     * is in the default locale's language.
+     * @returns A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     */
+    public static BreakIterator getLineInstance()
+    {
+        return getLineInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates legal line-
+     * wrapping positions.
+     * @param where A Locale specifying the language of the text being broken.
+     * @return A new instance of BreakIterator that locates legal
+     * line-wrapping positions.
+     */
+    public static BreakIterator getLineInstance(Locale where)
+    {
+        return getBreakInstance(where,                              //ibm.597
+                                LINE_INDEX,                         //ibm.597
+                                "LineBreakRules",                   //ibm.597
+                                "LineBreakDictionary");             //ibm.597
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.  This function assumes that the text being analyzed is
+     * in the default locale's language.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     */
+    public static BreakIterator getCharacterInstance()
+    {
+        return getCharacterInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates logical-character
+     * boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates logical-character
+     * boundaries.
+     */
+    public static BreakIterator getCharacterInstance(Locale where)
+    {
+        return getBreakInstance(where,                              //ibm.597
+                                CHARACTER_INDEX,                    //ibm.597
+                                "CharacterBreakRules",              //ibm.597
+                                "CharacterBreakDictionary");        //ibm.597
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * This function assumes the text being analyzed is in the default locale's
+     * language.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     */
+    public static BreakIterator getSentenceInstance()
+    {
+        return getSentenceInstance(Locale.getDefault());
+    }
+
+    /**
+     * Returns a new instance of BreakIterator that locates sentence boundaries.
+     * @param where A Locale specifying the language of the text being analyzed.
+     * @return A new instance of BreakIterator that locates sentence boundaries.
+     */
+    public static BreakIterator getSentenceInstance(Locale where)
+    {
+        return getBreakInstance(where,                              //ibm.597
+                                SENTENCE_INDEX,                     //ibm.597
+                                "SentenceBreakRules",               //ibm.597
+                                "SentenceBreakDictionary");         //ibm.597
+    }                                                               //ibm.597
+
+    private static BreakIterator getBreakInstance(Locale where,     //ibm.597
+                                                  int type,         //ibm.597
+                                                  String rulesName, //ibm.597
+                                                  String dictionaryName) {  //ibm.597
+
+        if (iterCache[type] != null) {                              //ibm.597
+            BreakIteratorCache cache = (BreakIteratorCache) iterCache[type].get();  //ibm.597
+            if (cache != null) {                                    //ibm.597
+                if (cache.getLocale().equals(where)) {              //ibm.597
+                    return cache.createBreakInstance();             //ibm.597
+                }                                                   //ibm.597
+            }                                                       //ibm.597
+        }                                                           //ibm.597
+
+        BreakIterator result = createBreakInstance(where,           //ibm.597
+                                                   type,            //ibm.597
+                                                   rulesName,       //ibm.597
+                                                   dictionaryName); //ibm.597
+        BreakIteratorCache cache = new BreakIteratorCache(where, result);   //ibm.597
+        iterCache[type] = new SoftReference(cache);                 //ibm.597
+        return result;                                              //ibm.597
+    }                                                               //ibm.597
+
+    private static BreakIterator createBreakInstance(Locale where,  //ibm.597
+                                                     int type,      //ibm.597
+                                                     String rulesName,  //ibm.597
+                                                     String dictionaryName) {   //ibm.597
+
+//		System.out.println("rulesName: "+rulesName);
+//		System.out.println("dictionaryName: "+dictionaryName);
+        ResourceBundle bundle = ResourceBundle.getBundle(           //ibm.597
+                        "com.ibm.text.resources.BreakIteratorRules", where);   //ibm.597
+        String[] classNames = bundle.getStringArray("BreakIteratorClasses");    //ibm.597
+
+        String rules = bundle.getString(rulesName);                 //ibm.597
+        
+        if (classNames[type].equals("RuleBasedBreakIterator")) {    //ibm.597
+            return new RuleBasedBreakIterator(rules);               //ibm.597
+        }                                                           //ibm.597
+        else if (classNames[type].equals("DictionaryBasedBreakIterator")) { //ibm.597
+            try {                                                   //ibm.597
+				// System.out.println(dictionaryName);
+                Object t = bundle.getObject(dictionaryName);   //ibm.597
+				// System.out.println(t);
+                URL url = (URL)t;   //ibm.597
+                InputStream dictionary = url.openStream();          //ibm.597
+                return new DictionaryBasedBreakIterator(rules, dictionary); //ibm.597
+            }                                                       //ibm.597
+            catch(IOException e) {                                  //ibm.597
+            }                                                       //ibm.597
+            catch(MissingResourceException e) {                     //ibm.597
+            }                                                       //ibm.597
+            return new RuleBasedBreakIterator(rules);               //ibm.597
+        }                                                           //ibm.597
+        else                                                        //ibm.597
+            throw new IllegalArgumentException("Invalid break iterator class \"" +  //ibm.597
+                            classNames[type] + "\"");               //ibm.597
+    }
+
+    /**
+     * Returns a list of locales for which BreakIterators can be used.
+     * @return An array of Locales.  All of the locales in the array can
+     * be used when creating a BreakIterator.
+     */
+    public static synchronized Locale[] getAvailableLocales()
+    {
+        //FIX ME - this is a known bug.  It should return
+        //all locales.
+        return LocaleData.getAvailableLocales("NumberPatterns");
+    }
+
+    private static final class BreakIteratorCache {                 //ibm.597
+
+        private BreakIterator iter;                                 //ibm.597
+        private Locale where;                                       //ibm.597
+
+        BreakIteratorCache(Locale where, BreakIterator iter) {      //ibm.597
+            this.where = where;                                     //ibm.597
+            this.iter = (BreakIterator) iter.clone();               //ibm.597
+        }                                                           //ibm.597
+
+        Locale getLocale() {                                        //ibm.597
+            return where;                                           //ibm.597
+        }                                                           //ibm.597
+
+        BreakIterator createBreakInstance() {                       //ibm.597
+            return (BreakIterator) iter.clone();                    //ibm.597
+        }                                                           //ibm.597
+    }                                                               //ibm.597
+}
diff --git a/src/com/ibm/text/CharSet.java b/src/com/ibm/text/CharSet.java
new file mode 100755
index 0000000..047da03
--- /dev/null
+++ b/src/com/ibm/text/CharSet.java
@@ -0,0 +1,975 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/CharSet.java,v $ 
+ * $Date: 2000/03/10 04:07:18 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.util.Hashtable;
+
+/**
+ * An object representing a set of characters.  (This is a "set" in the
+ * mathematical sense: an unduplicated list of characters on which set
+ * operations such as union and intersection can be performed.)  The
+ * set information is stored in compressed, optimized form: The object
+ * contains a String with an even number of characters.  Each pair of
+ * characters represents a range of characters contained in the set
+ * (a pair of the same character represents a single character).  The
+ * characters are sorted in increasing order.
+ */
+public class CharSet implements Cloneable {
+    /**
+     * The structure containing the set information.  The characters
+     * in this string are organized into pairs, each pair representing
+     * a range of characters contained in the set
+     */
+    private String chars;
+
+    //==========================================================================
+    // parseString() and associated routines
+    //==========================================================================
+    /**
+     * A cache which is used to speed up parseString() whenever it is
+     * used to parse a description that has been parsed before
+     */
+    private static Hashtable expressionCache = null;
+
+    /**
+     * Builds a CharSet based on a textual description.  For the syntax of
+     * the description, see the documentation of RuleBasedBreakIterator.
+     * @see com.ibm.text.RuleBasedBreakIterator
+     */
+    public static CharSet parseString(String s) {
+        CharSet result = null;
+
+        // if "s" is in the expression cache, pull the result out
+        // of the expresison cache
+        if (expressionCache != null) {
+            result = (CharSet)expressionCache.get(s);
+        }
+
+        // otherwise, use doParseString() to actually parse the string,
+        // and then add a corresponding entry to the expression cache
+        if (result == null) {
+            result = doParseString(s);
+            if (expressionCache == null) {
+                expressionCache = new Hashtable();
+            }
+            expressionCache.put(s, result);
+        }
+        result = (CharSet)(result.clone());
+        return result;
+    }
+
+    /**
+     * This function is used by parseString() to actually parse the string
+     */
+    private static CharSet doParseString(String s) {
+        CharSet result = new CharSet();
+        int p = 0;
+
+        boolean haveDash = false;
+        boolean haveTilde = false;
+        boolean wIsReal = false;
+        char w = '\u0000';
+
+        // for each character in the description...
+        while (p < s.length()) {
+            char c = s.charAt(p);
+
+            // if it's an opening bracket...
+            if (c == '[') {
+                // flush the single-character cache
+                if (wIsReal) {
+                    result.internalUnion(new CharSet(w));
+                }
+
+                // locate the matching closing bracket
+                int bracketLevel = 1;
+                int q = p + 1;
+                while (bracketLevel != 0) {
+                    if (s.charAt(q) == '[') {
+                        ++bracketLevel;
+                    }
+                    else if (s.charAt(q) == ']') {
+                        --bracketLevel;
+                    }
+                    ++q;
+                }
+                --q;
+
+                // call parseString() recursively to parse the text inside
+                // the brackets, then either add or subtract the result from
+                // our running result depending on whether or not the []
+                // expresison was preceded by a ^
+                if (!haveTilde) {
+                    result.internalUnion(CharSet.parseString(s.substring(p + 1, q)));
+                }
+                else {
+                    result.internalDifference(CharSet.parseString(s.substring(p + 1, q)));
+                }
+                haveTilde = false;
+                haveDash = false;
+                wIsReal = false;
+                p = q + 1;
+            }
+
+            // if the character is a colon...
+            else if (c == ':') {
+                // flush the single-character cache
+                if (wIsReal) {
+                    result.internalUnion(new CharSet(w));
+                }
+
+                // locate the matching colon (and throw an error if there
+                // isn't one)
+                int q = s.indexOf(':', p + 1);
+                if (q == -1) {
+                    throw new IllegalArgumentException("Parse error at position " + p + " in " + s);
+                }
+
+                // use charSetForCategory() to parse the text in the colons,
+                // and either add or substract the result from our running
+                // result depending on whether the :: expression was
+                // preceded by a ^
+                if (!haveTilde) {
+                    result.internalUnion(charSetForCategory(s.substring(p + 1, q)));
+                }
+                else {
+                    result.internalDifference(charSetForCategory(s.substring(p + 1, q)));
+                }
+
+                // reset everything and advance to the next character
+                haveTilde = false;
+                haveDash = false;
+                wIsReal = false;
+                p = q + 1;
+            }
+
+            // if the character is a dash, set an appropriate flag
+            else if (c == '-') {
+                if (wIsReal) {
+                    haveDash = true;
+                }
+                ++p;
+            }
+
+            // if the character is a caret, flush the single-character
+            // cache and set an appropriate flag.  If the set is empty
+            // (i.e., if the expression begins with ^), invert the set
+            // (i.e., set it to include everything).  The idea here is
+            // that a set that includes nothing but ^ expressions
+            // means "everything but these things".
+            else if (c == '^') {
+                if (wIsReal) {
+                    result.internalUnion(new CharSet(w));
+                    wIsReal = false;
+                }
+                haveTilde = true;
+                ++p;
+                if (result.empty()) {
+                    result.internalComplement();
+                }
+            }
+
+            // throw an exception on an illegal character
+            else if (c >= ' ' && c < '\u007f' && !Character.isLetter(c)
+                     && !Character.isDigit(c) && c != '\\') {
+                throw new IllegalArgumentException("Parse error at position " + p + " in " + s);
+            }
+
+            // otherwise, we end up here...
+            else {
+                // on a backslash, advance to the next character
+                if (c == '\\') {
+                    ++p;
+                }
+
+                // if the preceding character was a dash, this character
+                // defines the end of a range.  Add or subtract that range
+                // from the running result depending on whether or not it
+                // was preceded by a ^
+                if (haveDash) {
+                    if (s.charAt(p) < w) {
+                        throw new IllegalArgumentException("U+" + Integer.toHexString(s.charAt(p))
+                            + " is less than U+" + Integer.toHexString(w) + ".  Dash expressions "
+                            + "can't have their endpoints in reverse order.");
+                    }
+
+                    if (!haveTilde) {
+                        result.internalUnion(new CharSet(w, s.charAt(p++)));
+                    }
+                    else {
+                        result.internalDifference(new CharSet(w, s.charAt(p++)));
+                    }
+                    haveDash = false;
+                    haveTilde = false;
+                    wIsReal = false;
+                }
+
+                // if the preceding character was a caret, remove this character
+                // from the running result
+                else if (haveTilde) {
+                    result.internalDifference(new CharSet(s.charAt(p++)));
+                    haveTilde = false;
+                    wIsReal = false;
+                }
+
+                // otherwise, flush the single-character cache and then
+                // put this character into the cache
+                else if (wIsReal) {
+                    result.internalUnion(new CharSet(w));
+                    w = s.charAt(p++);
+                    wIsReal = true;
+                }
+                else {
+                    w = s.charAt(p++);
+                    wIsReal = true;
+                }
+            }
+        }
+
+        // finally, flush the single-character cache one last time
+        if (wIsReal) {
+            result.internalUnion(new CharSet(w));
+        }
+
+        return result;
+    }
+
+    /**
+     * Creates a CharSet containing all the characters in a particular
+     * Unicode category.  The text is either a two-character code from
+     * the Unicode database or a single character that begins one or more
+     * two-character codes.
+     */
+    private static CharSet charSetForCategory(String category) {
+        // throw an exception if we have anything other than one or two
+        // characters inside the colons
+        if (category.length() == 0 || category.length() >= 3) {
+            throw new IllegalArgumentException("Invalid character category: " + category);
+        }
+
+        // if we have two characters, search the category map for that code
+        // and either construct and return a CharSet from the data in the
+        // category map or throw an exception
+        if (category.length() == 2) {
+            for (int i = 0; i < categoryMap.length; i++) {
+                if (categoryMap[i][0].equals(category)) {
+                    return new CharSet(categoryMap[i][1]);
+                }
+            }
+            throw new IllegalArgumentException("Invalid character category: " + category);
+        }
+
+        // if we have one character, search the category map for codes beginning
+        // with that letter, and union together all of the matching sets that
+        // we find (or throw an exception if there are no matches)
+        else if (category.length() == 1) {
+            CharSet result = new CharSet();
+            for (int i = 0; i < categoryMap.length; i++) {
+                if (categoryMap[i][0].startsWith(category)) {
+                    result = result.union(new CharSet(categoryMap[i][1]));
+                }
+            }
+            if (result.empty()) {
+                throw new IllegalArgumentException("Invalid character category: " + category);
+            }
+            else {
+                return result;
+            }
+        }
+        return new CharSet(); // should never get here, but to make the compiler happy...
+    }
+
+    /**
+     * Returns a copy of CharSet's expression cache and sets CharSet's
+     * expression cache to empty.
+     */
+    public static Hashtable releaseExpressionCache() {
+        Hashtable result = expressionCache;
+        expressionCache = null;
+        return result;
+    }
+
+    //==========================================================================
+    // CharSet manipulation
+    //==========================================================================
+    /**
+     * Creates an empty CharSet.
+     */
+    public CharSet() {
+        chars = "";
+    }
+
+    /**
+     * Creates a CharSet containing a single character.
+     * @param c The character to put into the CharSet
+     */
+    public CharSet(char c) {
+        StringBuffer temp = new StringBuffer();
+        temp.append(c);
+        temp.append(c);
+        chars = temp.toString();
+    }
+
+    /**
+     * Creates a CharSet containing a range of characters.
+     * @param lo The lowest-numbered character to include in the range
+     * @param hi The highest-numbered character to include in the range
+     */
+    public CharSet(char lo, char hi) {
+        StringBuffer temp = new StringBuffer();
+        if (lo <= hi) {
+            temp.append(lo);
+            temp.append(hi);
+        }
+        else {
+            temp.append(hi);
+            temp.append(lo);
+        }
+        chars = temp.toString();
+    }
+
+    /**
+     * Creates a CharSet, initializing it from the internal storage
+     * of another CharSet (this function performs no error checking
+     * on "chars", so if it's malformed, undefined behavior will result)
+     */
+    private CharSet(String chars) {
+        this.chars = chars;
+    }
+
+    /**
+     * Returns a CharSet representing the union of two CharSets.
+     */
+    public CharSet union(CharSet that) {
+        return new CharSet(doUnion(that.chars).toString());
+    }
+
+    /**
+     * Adds the characters in "that" to this CharSet
+     */
+    private void internalUnion(CharSet that) {
+        chars = doUnion(that.chars).toString();
+    }
+
+    /**
+     * The actual implementation of the union functions
+     */
+    private StringBuffer doUnion(String c2) {
+        StringBuffer result = new StringBuffer();
+
+        int i = 0;
+        int j = 0;
+
+        // consider all the characters in both strings
+        while (i < chars.length() && j < c2.length()) {
+            char ub;
+
+            // the first character in the result is the lower of the
+            // starting characters of the two strings, and "ub" gets
+            // set to the upper bound of that range
+            if (chars.charAt(i) < c2.charAt(j)) {
+                result.append(chars.charAt(i));
+                ub = chars.charAt(++i);
+            }
+            else {
+                result.append(c2.charAt(j));
+                ub = c2.charAt(++j);
+            }
+
+            // for as long as one of our two pointers is pointing to a range's
+            // end point, or i is pointing to a character that is less than
+            // "ub" plus one (the "plus one" stitches touching ranges together)...
+            while (i % 2 == 1 ||
+                   j % 2 == 1 ||
+                   (i < chars.length() && chars.charAt(i) <= ub + 1)) {
+
+                // advance i to the first character that is greater than
+                // "ub" plus one
+                while (i < chars.length() && chars.charAt(i) <= ub + 1) {
+                    ++i;
+                }
+
+                // if i points to the endpoint of a range, update "ub"
+                // to that character, or if i points to the start of
+                // a range and the endpoint of the preceding range is
+                // greater than "ub", update "up" to _that_ character
+                if (i % 2 == 1) {
+                    ub = chars.charAt(i);
+                }
+                else if (i > 0 && chars.charAt(i - 1) > ub) {
+                    ub = chars.charAt(i - 1);
+                }
+
+                // now advance j to the first character that is greater
+                // that "ub" plus one
+                while (j < c2.length() && c2.charAt(j) <= ub + 1) {
+                    ++j;
+                }
+
+                // if j points to the endpoint of a range, update "ub"
+                // to that character, or if j points to the start of
+                // a range and the endpoint of the preceding range is
+                // greater than "ub", update "up" to _that_ character
+                if (j % 2 == 1) {
+                    ub = c2.charAt(j);
+                }
+                else if (j > 0 && c2.charAt(j - 1) > ub) {
+                    ub = c2.charAt(j - 1);
+                }
+            }
+            // when we finally fall out of this loop, we will have stitched
+            // together a series of ranges that overlap or touch, i and j
+            // will both point to starting points of ranges, and "ub" will
+            // be the endpoint of the range we're working on.  Write "ub"
+            // to the result
+            result.append(ub);
+
+        // loop back around to create the next range in the result
+        }
+
+        // we fall out to here when we've exhausted all the characters in
+        // one of the operands.  We can append all of the remaining characters
+        // in the other operand without doing any extra work.
+        if (i < chars.length()) {
+            result.append(chars.substring(i));
+        }
+        if (j < c2.length()) {
+            result.append(c2.substring(j));
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns the intersection of two CharSets.
+     */
+    public CharSet intersection(CharSet that) {
+        return new CharSet(doIntersection(that.chars).toString());
+    }
+
+    /**
+     * Removes from this CharSet any characters that aren't also in "that"
+     */
+    private void internalIntersection(CharSet that) {
+        chars = doIntersection(that.chars).toString();
+    }
+
+    /**
+     * The internal implementation of the two intersection functions
+     */
+    private StringBuffer doIntersection(String c2) {
+        StringBuffer result = new StringBuffer();
+
+        int i = 0;
+        int j = 0;
+        int oldI;
+        int oldJ;
+
+        // iterate until we've exhausted one of the operands
+        while (i < chars.length() && j < c2.length()) {
+
+            // advance j until it points to a character that is larger than
+            // the one i points to.  If this is the beginning of a one-
+            // character range, advance j to point to the end
+            if (i < chars.length() && i % 2 == 0) {
+                while (j < c2.length() && c2.charAt(j) < chars.charAt(i)) {
+                    ++j;
+                }
+                if (j < c2.length() && j % 2 == 0 && c2.charAt(j) == chars.charAt(i)) {
+                    ++j;
+                }
+            }
+
+            // if j points to the endpoint of a range, save the current
+            // value of i, then advance i until it reaches a character
+            // which is larger than the character pointed at
+            // by j.  All of the characters we've advanced over (except
+            // the one currently pointed to by i) are added to the result
+            oldI = i;
+            while (j % 2 == 1 && i < chars.length() && chars.charAt(i) <= c2.charAt(j)) {
+                ++i;
+            }
+            result.append(chars.substring(oldI, i));
+
+            // if i points to the endpoint of a range, save the current
+            // value of j, then advance j until it reaches a character
+            // which is larger than the character pointed at
+            // by i.  All of the characters we've advanced over (except
+            // the one currently pointed to by i) are added to the result
+            oldJ = j;
+            while (i % 2 == 1 && j < c2.length() && c2.charAt(j) <= chars.charAt(i)) {
+                ++j;
+            }
+            result.append(c2.substring(oldJ, j));
+
+            // advance i until it points to a character larger than j
+            // If it points at the beginning of a one-character range,
+            // advance it to the end of that range
+            if (j < c2.length() && j % 2 == 0) {
+                while (i < chars.length() && chars.charAt(i) < c2.charAt(j)) {
+                    ++i;
+                }
+                if (i < chars.length() && i % 2 == 0 && c2.charAt(j) == chars.charAt(i)) {
+                    ++i;
+                }
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns a CharSet containing all the characters in "this" that
+     * aren't also in "that"
+     */
+    public CharSet difference(CharSet that) {
+        return new CharSet(doIntersection(that.doComplement().toString()).toString());
+    }
+
+    /**
+     * Removes from "this" all the characters that are also in "that"
+     */
+    private void internalDifference(CharSet that) {
+        chars = doIntersection(that.doComplement().toString()).toString();
+    }
+
+    /**
+     * Returns a CharSet containing all the characters which are not
+     * in "this"
+     */
+    public CharSet complement() {
+        return new CharSet(doComplement().toString());
+    }
+
+    /**
+     * Complements "this".  All the characters it contains are removed,
+     * and all the characters it doesn't contain are added.
+     */
+    private void internalComplement() {
+        chars = doComplement().toString();
+    }
+
+    /**
+     * The internal implementation function for the complement routines
+     */
+    private StringBuffer doComplement() {
+        // the complement of an empty CharSet is one containing everything
+        if (empty()) {
+            return new StringBuffer("\u0000\uffff");
+        }
+
+        StringBuffer result = new StringBuffer();
+
+        int i = 0;
+
+        // the result begins with \u0000 unless the original CharSet does
+        if (chars.charAt(0) != '\u0000') {
+            result.append('\u0000');
+        }
+
+        // walk through the characters in this CharSet.  Append a pair of
+        // characters the first of which is one less than the first
+        // character we see and the second of which is one plus the second
+        // character we see (don't write the first character if it's \u0000,
+        // and don't write the second character if it's \uffff.
+        while (i < chars.length()) {
+            if (chars.charAt(i) != '\u0000') {
+                result.append((char)(chars.charAt(i) - 1));
+            }
+            if (chars.charAt(i + 1) != '\uffff') {
+                result.append((char)(chars.charAt(i + 1) + 1));
+            }
+            i += 2;
+        }
+
+        // add \uffff to the end of the result, unless it was in
+        // the original set
+        if (chars.charAt(chars.length() - 1) != '\uffff') {
+            result.append('\uffff');
+        }
+
+        return result;
+    }
+
+    /**
+     * Returns true if this CharSet contains the specified character
+     * @param c The character we're testing for set membership
+     */
+    public boolean contains(char c) {
+        // search for the first range endpoint that is greater than or
+        // equal to c
+        int i = 1;
+        while (i < chars.length() && chars.charAt(i) < c) {
+            i += 2;
+        }
+
+        // if we've walked off the end, we don't contain c
+        if (i == chars.length()) {
+            return false;
+        }
+
+        // otherwise, we contain c if the beginning of the range is less
+        // than or equal to c
+        return chars.charAt(i - 1) <= c;
+    }
+
+    /**
+     * Returns true if "that" is another instance of CharSet containing
+     * the exact same characters as this one
+     */
+    public boolean equals(Object that) {
+        return (that instanceof CharSet) && chars.equals(((CharSet)that).chars);
+    }
+
+    /**
+     * Creates a new CharSet that is equal to this one
+     */
+    public Object clone() {
+        return new CharSet(chars);
+    }
+
+    /**
+     * Returns true if this CharSet contains no characters
+     */
+    public boolean empty() {
+        return chars.length() == 0;
+    }
+
+    /**
+     * Returns a textual representation of this CharSet.  If the result
+     * of calling this function is passed to CharSet.parseString(), it
+     * will produce another CharSet that is equal to this one.
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // the result begins with an opening bracket
+        result.append('[');
+
+        // iterate through the ranges in the CharSet
+        for (int i = 0; i < chars.length(); i += 2) {
+            // for a range with the same beginning and ending point,
+            // output that character
+            if (chars.charAt(i) == chars.charAt(i + 1)) {
+                result.append(chars.charAt(i));
+            }
+
+            // otherwise, output the start and end points of the range
+            // separated by a dash
+            else {
+                result.append(chars.charAt(i) + "-" + chars.charAt(i + 1));
+            }
+        }
+
+        // the result ends with a closing bracket
+        result.append(']');
+        return result.toString();
+    }
+
+    /**
+     * Returns a String representing the contents of this CharSet
+     * in the same form in which they're stored internally: as pairs
+     * of characters representing the start and end points of ranges
+     */
+    public String getRanges() {
+        return chars;
+    }
+
+    /**
+     * Returns an Enumeration that will return the ranges of characters
+     * contained in this CharSet one at a time
+     */
+    public Enumeration getChars() {
+        return new Enumeration(this);
+    }
+
+    //==========================================================================
+    // CharSet.Enumeration
+    //==========================================================================
+
+    /**
+     * An Enumeration that can be used to extract the character ranges
+     * from a CharSet one at a time
+     */
+    public class Enumeration implements java.util.Enumeration {
+        /**
+         * Initializes a CharSet.Enumeration
+         */
+        Enumeration(CharSet cs) {
+            this.chars = cs.chars;
+            p = 0;
+        }
+
+        /**
+         * Returns true if the enumeration hasn't yet returned
+         * all the ranges in the CharSet
+         */
+        public boolean hasMoreElements() {
+            return p < chars.length();
+        }
+
+        /**
+         * Returns the next range in the CarSet
+         */
+        public Object nextElement() {
+            char[] result = new char[2];
+            result[0] = chars.charAt(p);
+            result[1] = chars.charAt(p + 1);
+            p += 2;
+
+            return result;
+        }
+
+        int p;
+        String chars;
+    }
+
+    //==========================================================================
+    // tables for charSetForCategory()
+    //==========================================================================
+
+    /**
+     * Table used with charSetFromCategory.  This is an array of pairs
+     * of Strings.  The first column of Strings is Unicode character category
+     * codes as defined in the Unicode database.  The second column is the
+     * internal storage for a CharSet containing the characters in that
+     * category.
+     */
+    private static final String[][] categoryMap = {
+        { "Ll", "az\u00AA\u00AA\u00B5\u00B5\u00BA\u00BA\u00DF\u00F6\u00F8\u00FF\u0101\u0101"
+          + "\u0103\u0103\u0105\u0105\u0107\u0107\u0109\u0109\u010B\u010B\u010D\u010D"
+          + "\u010F\u010F\u0111\u0111\u0113\u0113\u0115\u0115\u0117\u0117\u0119\u0119"
+          + "\u011B\u011B\u011D\u011D\u011F\u011F\u0121\u0121\u0123\u0123\u0125\u0125"
+          + "\u0127\u0127\u0129\u0129\u012B\u012B\u012D\u012D\u012F\u012F\u0131\u0131"
+          + "\u0133\u0133\u0135\u0135\u0137\u0138\u013A\u013A\u013C\u013C\u013E\u013E"
+          + "\u0140\u0140\u0142\u0142\u0144\u0144\u0146\u0146\u0148\u0149\u014B\u014B"
+          + "\u014D\u014D\u014F\u014F\u0151\u0151\u0153\u0153\u0155\u0155\u0157\u0157"
+          + "\u0159\u0159\u015B\u015B\u015D\u015D\u015F\u015F\u0161\u0161\u0163\u0163"
+          + "\u0165\u0165\u0167\u0167\u0169\u0169\u016B\u016B\u016D\u016D\u016F\u016F"
+          + "\u0171\u0171\u0173\u0173\u0175\u0175\u0177\u0177\u017A\u017A\u017C\u017C"
+          + "\u017E\u0180\u0183\u0183\u0185\u0185\u0188\u0188\u018C\u018D\u0192\u0192"
+          + "\u0195\u0195\u0199\u019B\u019E\u019E\u01A1\u01A1\u01A3\u01A3\u01A5\u01A5"
+          + "\u01A8\u01A8\u01AB\u01AB\u01AD\u01AD\u01B0\u01B0\u01B4\u01B4\u01B6\u01B6"
+          + "\u01B9\u01BA\u01BD\u01BD\u01C6\u01C6\u01C9\u01C9\u01CC\u01CC\u01CE\u01CE"
+          + "\u01D0\u01D0\u01D2\u01D2\u01D4\u01D4\u01D6\u01D6\u01D8\u01D8\u01DA\u01DA"
+          + "\u01DC\u01DD\u01DF\u01DF\u01E1\u01E1\u01E3\u01E3\u01E5\u01E5\u01E7\u01E7"
+          + "\u01E9\u01E9\u01EB\u01EB\u01ED\u01ED\u01EF\u01F0\u01F3\u01F3\u01F5\u01F5"
+          + "\u01FB\u01FB\u01FD\u01FD\u01FF\u01FF\u0201\u0201\u0203\u0203\u0205\u0205"
+          + "\u0207\u0207\u0209\u0209\u020B\u020B\u020D\u020D\u020F\u020F\u0211\u0211"
+          + "\u0213\u0213\u0215\u0215\u0217\u0217\u0250\u02A8\u0390\u0390\u03AC\u03CE"
+          + "\u03D0\u03D1\u03D5\u03D6\u03E3\u03E3\u03E5\u03E5\u03E7\u03E7\u03E9\u03E9"
+          + "\u03EB\u03EB\u03ED\u03ED\u03EF\u03F2\u0430\u044F\u0451\u045C\u045E\u045F"
+          + "\u0461\u0461\u0463\u0463\u0465\u0465\u0467\u0467\u0469\u0469\u046B\u046B"
+          + "\u046D\u046D\u046F\u046F\u0471\u0471\u0473\u0473\u0475\u0475\u0477\u0477"
+          + "\u0479\u0479\u047B\u047B\u047D\u047D\u047F\u047F\u0481\u0481\u0491\u0491"
+          + "\u0493\u0493\u0495\u0495\u0497\u0497\u0499\u0499\u049B\u049B\u049D\u049D"
+          + "\u049F\u049F\u04A1\u04A1\u04A3\u04A3\u04A5\u04A5\u04A7\u04A7\u04A9\u04A9"
+          + "\u04AB\u04AB\u04AD\u04AD\u04AF\u04AF\u04B1\u04B1\u04B3\u04B3\u04B5\u04B5"
+          + "\u04B7\u04B7\u04B9\u04B9\u04BB\u04BB\u04BD\u04BD\u04BF\u04BF\u04C2\u04C2"
+          + "\u04C4\u04C4\u04C8\u04C8\u04CC\u04CC\u04D1\u04D1\u04D3\u04D3\u04D5\u04D5"
+          + "\u04D7\u04D7\u04D9\u04D9\u04DB\u04DB\u04DD\u04DD\u04DF\u04DF\u04E1\u04E1"
+          + "\u04E3\u04E3\u04E5\u04E5\u04E7\u04E7\u04E9\u04E9\u04EB\u04EB\u04EF\u04EF"
+          + "\u04F1\u04F1\u04F3\u04F3\u04F5\u04F5\u04F9\u04F9\u0561\u0587\u10D0\u10F6"
+          + "\u1E01\u1E01\u1E03\u1E03\u1E05\u1E05\u1E07\u1E07\u1E09\u1E09\u1E0B\u1E0B"
+          + "\u1E0D\u1E0D\u1E0F\u1E0F\u1E11\u1E11\u1E13\u1E13\u1E15\u1E15\u1E17\u1E17"
+          + "\u1E19\u1E19\u1E1B\u1E1B\u1E1D\u1E1D\u1E1F\u1E1F\u1E21\u1E21\u1E23\u1E23"
+          + "\u1E25\u1E25\u1E27\u1E27\u1E29\u1E29\u1E2B\u1E2B\u1E2D\u1E2D\u1E2F\u1E2F"
+          + "\u1E31\u1E31\u1E33\u1E33\u1E35\u1E35\u1E37\u1E37\u1E39\u1E39\u1E3B\u1E3B"
+          + "\u1E3D\u1E3D\u1E3F\u1E3F\u1E41\u1E41\u1E43\u1E43\u1E45\u1E45\u1E47\u1E47"
+          + "\u1E49\u1E49\u1E4B\u1E4B\u1E4D\u1E4D\u1E4F\u1E4F\u1E51\u1E51\u1E53\u1E53"
+          + "\u1E55\u1E55\u1E57\u1E57\u1E59\u1E59\u1E5B\u1E5B\u1E5D\u1E5D\u1E5F\u1E5F"
+          + "\u1E61\u1E61\u1E63\u1E63\u1E65\u1E65\u1E67\u1E67\u1E69\u1E69\u1E6B\u1E6B"
+          + "\u1E6D\u1E6D\u1E6F\u1E6F\u1E71\u1E71\u1E73\u1E73\u1E75\u1E75\u1E77\u1E77"
+          + "\u1E79\u1E79\u1E7B\u1E7B\u1E7D\u1E7D\u1E7F\u1E7F\u1E81\u1E81\u1E83\u1E83"
+          + "\u1E85\u1E85\u1E87\u1E87\u1E89\u1E89\u1E8B\u1E8B\u1E8D\u1E8D\u1E8F\u1E8F"
+          + "\u1E91\u1E91\u1E93\u1E93\u1E95\u1E9B\u1EA1\u1EA1\u1EA3\u1EA3\u1EA5\u1EA5"
+          + "\u1EA7\u1EA7\u1EA9\u1EA9\u1EAB\u1EAB\u1EAD\u1EAD\u1EAF\u1EAF\u1EB1\u1EB1"
+          + "\u1EB3\u1EB3\u1EB5\u1EB5\u1EB7\u1EB7\u1EB9\u1EB9\u1EBB\u1EBB\u1EBD\u1EBD"
+          + "\u1EBF\u1EBF\u1EC1\u1EC1\u1EC3\u1EC3\u1EC5\u1EC5\u1EC7\u1EC7\u1EC9\u1EC9"
+          + "\u1ECB\u1ECB\u1ECD\u1ECD\u1ECF\u1ECF\u1ED1\u1ED1\u1ED3\u1ED3\u1ED5\u1ED5"
+          + "\u1ED7\u1ED7\u1ED9\u1ED9\u1EDB\u1EDB\u1EDD\u1EDD\u1EDF\u1EDF\u1EE1\u1EE1"
+          + "\u1EE3\u1EE3\u1EE5\u1EE5\u1EE7\u1EE7\u1EE9\u1EE9\u1EEB\u1EEB\u1EED\u1EED"
+          + "\u1EEF\u1EEF\u1EF1\u1EF1\u1EF3\u1EF3\u1EF5\u1EF5\u1EF7\u1EF7\u1EF9\u1EF9"
+          + "\u1F00\u1F07\u1F10\u1F15\u1F20\u1F27\u1F30\u1F37\u1F40\u1F45\u1F50\u1F57"
+          + "\u1F60\u1F67\u1F70\u1F7D\u1F80\u1F87\u1F90\u1F97\u1FA0\u1FA7\u1FB0\u1FB4"
+          + "\u1FB6\u1FB7\u1FC2\u1FC4\u1FC6\u1FC7\u1FD0\u1FD3\u1FD6\u1FD7\u1FE0\u1FE7"
+          + "\u1FF2\u1FF4\u1FF6\u1FF7\u207F\u207F\u210A\u210A\u210E\u210F\u2113\u2113"
+          + "\u212E\u212F\u2134\u2134\uFB00\uFB06\uFB13\uFB17\uFF41\uFF5A" },
+        { "Lu", "AZ\u00C0\u00D6\u00D8\u00DE\u0100\u0100\u0102\u0102\u0104\u0104\u0106\u0106"
+          + "\u0108\u0108\u010A\u010A\u010C\u010C\u010E\u010E\u0110\u0110\u0112\u0112"
+          + "\u0114\u0114\u0116\u0116\u0118\u0118\u011A\u011A\u011C\u011C\u011E\u011E"
+          + "\u0120\u0120\u0122\u0122\u0124\u0124\u0126\u0126\u0128\u0128\u012A\u012A"
+          + "\u012C\u012C\u012E\u012E\u0130\u0130\u0132\u0132\u0134\u0134\u0136\u0136"
+          + "\u0139\u0139\u013B\u013B\u013D\u013D\u013F\u013F\u0141\u0141\u0143\u0143"
+          + "\u0145\u0145\u0147\u0147\u014A\u014A\u014C\u014C\u014E\u014E\u0150\u0150"
+          + "\u0152\u0152\u0154\u0154\u0156\u0156\u0158\u0158\u015A\u015A\u015C\u015C"
+          + "\u015E\u015E\u0160\u0160\u0162\u0162\u0164\u0164\u0166\u0166\u0168\u0168"
+          + "\u016A\u016A\u016C\u016C\u016E\u016E\u0170\u0170\u0172\u0172\u0174\u0174"
+          + "\u0176\u0176\u0178\u0179\u017B\u017B\u017D\u017D\u0181\u0182\u0184\u0184"
+          + "\u0186\u0187\u0189\u018B\u018E\u0191\u0193\u0194\u0196\u0198\u019C\u019D"
+          + "\u019F\u01A0\u01A2\u01A2\u01A4\u01A4\u01A6\u01A7\u01A9\u01A9\u01AC\u01AC"
+          + "\u01AE\u01AF\u01B1\u01B3\u01B5\u01B5\u01B7\u01B8\u01BC\u01BC\u01C4\u01C4"
+          + "\u01C7\u01C7\u01CA\u01CA\u01CD\u01CD\u01CF\u01CF\u01D1\u01D1\u01D3\u01D3"
+          + "\u01D5\u01D5\u01D7\u01D7\u01D9\u01D9\u01DB\u01DB\u01DE\u01DE\u01E0\u01E0"
+          + "\u01E2\u01E2\u01E4\u01E4\u01E6\u01E6\u01E8\u01E8\u01EA\u01EA\u01EC\u01EC"
+          + "\u01EE\u01EE\u01F1\u01F1\u01F4\u01F4\u01FA\u01FA\u01FC\u01FC\u01FE\u01FE"
+          + "\u0200\u0200\u0202\u0202\u0204\u0204\u0206\u0206\u0208\u0208\u020A\u020A"
+          + "\u020C\u020C\u020E\u020E\u0210\u0210\u0212\u0212\u0214\u0214\u0216\u0216"
+          + "\u0386\u0386\u0388\u038A\u038C\u038C\u038E\u038F\u0391\u03A1\u03A3\u03AB"
+          + "\u03D2\u03D4\u03DA\u03DA\u03DC\u03DC\u03DE\u03DE\u03E0\u03E0\u03E2\u03E2"
+          + "\u03E4\u03E4\u03E6\u03E6\u03E8\u03E8\u03EA\u03EA\u03EC\u03EC\u03EE\u03EE"
+          + "\u0401\u040C\u040E\u042F\u0460\u0460\u0462\u0462\u0464\u0464\u0466\u0466"
+          + "\u0468\u0468\u046A\u046A\u046C\u046C\u046E\u046E\u0470\u0470\u0472\u0472"
+          + "\u0474\u0474\u0476\u0476\u0478\u0478\u047A\u047A\u047C\u047C\u047E\u047E"
+          + "\u0480\u0480\u0490\u0490\u0492\u0492\u0494\u0494\u0496\u0496\u0498\u0498"
+          + "\u049A\u049A\u049C\u049C\u049E\u049E\u04A0\u04A0\u04A2\u04A2\u04A4\u04A4"
+          + "\u04A6\u04A6\u04A8\u04A8\u04AA\u04AA\u04AC\u04AC\u04AE\u04AE\u04B0\u04B0"
+          + "\u04B2\u04B2\u04B4\u04B4\u04B6\u04B6\u04B8\u04B8\u04BA\u04BA\u04BC\u04BC"
+          + "\u04BE\u04BE\u04C1\u04C1\u04C3\u04C3\u04C7\u04C7\u04CB\u04CB\u04D0\u04D0"
+          + "\u04D2\u04D2\u04D4\u04D4\u04D6\u04D6\u04D8\u04D8\u04DA\u04DA\u04DC\u04DC"
+          + "\u04DE\u04DE\u04E0\u04E0\u04E2\u04E2\u04E4\u04E4\u04E6\u04E6\u04E8\u04E8"
+          + "\u04EA\u04EA\u04EE\u04EE\u04F0\u04F0\u04F2\u04F2\u04F4\u04F4\u04F8\u04F8"
+          + "\u0531\u0556\u10A0\u10C5\u1E00\u1E00\u1E02\u1E02\u1E04\u1E04\u1E06\u1E06"
+          + "\u1E08\u1E08\u1E0A\u1E0A\u1E0C\u1E0C\u1E0E\u1E0E\u1E10\u1E10\u1E12\u1E12"
+          + "\u1E14\u1E14\u1E16\u1E16\u1E18\u1E18\u1E1A\u1E1A\u1E1C\u1E1C\u1E1E\u1E1E"
+          + "\u1E20\u1E20\u1E22\u1E22\u1E24\u1E24\u1E26\u1E26\u1E28\u1E28\u1E2A\u1E2A"
+          + "\u1E2C\u1E2C\u1E2E\u1E2E\u1E30\u1E30\u1E32\u1E32\u1E34\u1E34\u1E36\u1E36"
+          + "\u1E38\u1E38\u1E3A\u1E3A\u1E3C\u1E3C\u1E3E\u1E3E\u1E40\u1E40\u1E42\u1E42"
+          + "\u1E44\u1E44\u1E46\u1E46\u1E48\u1E48\u1E4A\u1E4A\u1E4C\u1E4C\u1E4E\u1E4E"
+          + "\u1E50\u1E50\u1E52\u1E52\u1E54\u1E54\u1E56\u1E56\u1E58\u1E58\u1E5A\u1E5A"
+          + "\u1E5C\u1E5C\u1E5E\u1E5E\u1E60\u1E60\u1E62\u1E62\u1E64\u1E64\u1E66\u1E66"
+          + "\u1E68\u1E68\u1E6A\u1E6A\u1E6C\u1E6C\u1E6E\u1E6E\u1E70\u1E70\u1E72\u1E72"
+          + "\u1E74\u1E74\u1E76\u1E76\u1E78\u1E78\u1E7A\u1E7A\u1E7C\u1E7C\u1E7E\u1E7E"
+          + "\u1E80\u1E80\u1E82\u1E82\u1E84\u1E84\u1E86\u1E86\u1E88\u1E88\u1E8A\u1E8A"
+          + "\u1E8C\u1E8C\u1E8E\u1E8E\u1E90\u1E90\u1E92\u1E92\u1E94\u1E94\u1EA0\u1EA0"
+          + "\u1EA2\u1EA2\u1EA4\u1EA4\u1EA6\u1EA6\u1EA8\u1EA8\u1EAA\u1EAA\u1EAC\u1EAC"
+          + "\u1EAE\u1EAE\u1EB0\u1EB0\u1EB2\u1EB2\u1EB4\u1EB4\u1EB6\u1EB6\u1EB8\u1EB8"
+          + "\u1EBA\u1EBA\u1EBC\u1EBC\u1EBE\u1EBE\u1EC0\u1EC0\u1EC2\u1EC2\u1EC4\u1EC4"
+          + "\u1EC6\u1EC6\u1EC8\u1EC8\u1ECA\u1ECA\u1ECC\u1ECC\u1ECE\u1ECE\u1ED0\u1ED0"
+          + "\u1ED2\u1ED2\u1ED4\u1ED4\u1ED6\u1ED6\u1ED8\u1ED8\u1EDA\u1EDA\u1EDC\u1EDC"
+          + "\u1EDE\u1EDE\u1EE0\u1EE0\u1EE2\u1EE2\u1EE4\u1EE4\u1EE6\u1EE6\u1EE8\u1EE8"
+          + "\u1EEA\u1EEA\u1EEC\u1EEC\u1EEE\u1EEE\u1EF0\u1EF0\u1EF2\u1EF2\u1EF4\u1EF4"
+          + "\u1EF6\u1EF6\u1EF8\u1EF8\u1F08\u1F0F\u1F18\u1F1D\u1F28\u1F2F\u1F38\u1F3F"
+          + "\u1F48\u1F4D\u1F59\u1F59\u1F5B\u1F5B\u1F5D\u1F5D\u1F5F\u1F5F\u1F68\u1F6F"
+          + "\u1F88\u1F8F\u1F98\u1F9F\u1FA8\u1FAF\u1FB8\u1FBC\u1FBE\u1FBE\u1FC8\u1FCC"
+          + "\u1FD8\u1FDB\u1FE8\u1FEC\u1FF8\u1FFC\u2102\u2102\u2107\u2107\u210B\u210D"
+          + "\u2110\u2112\u2115\u2115\u2118\u211D\u2124\u2124\u2126\u2126\u2128\u2128"
+          + "\u212A\u212D\u2130\u2131\u2133\u2133\uFF21\uFF3A" },
+        { "Lt", "\u01C5\u01C5\u01C8\u01C8\u01CB\u01CB\u01F2\u01F2" },
+        { "Lo", "\u01AA\u01AA\u01BB\u01BB\u01BE\u01C3\u03F3\u03F3\u04C0\u04C0\u05D0\u05EA"
+          + "\u05F0\u05F2\u0621\u063A\u0641\u064A\u0671\u06B7\u06BA\u06BE\u06C0\u06CE"
+          + "\u06D0\u06D3\u06D5\u06D5\u0905\u0939\u093D\u093D\u0958\u0961\u0985\u098C"
+          + "\u098F\u0990\u0993\u09A8\u09AA\u09B0\u09B2\u09B2\u09B6\u09B9\u09DC\u09DD"
+          + "\u09DF\u09E1\u09F0\u09F1\u0A05\u0A0A\u0A0F\u0A10\u0A13\u0A28\u0A2A\u0A30"
+          + "\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59\u0A5C\u0A5E\u0A5E\u0A72\u0A74"
+          + "\u0A85\u0A8B\u0A8D\u0A8D\u0A8F\u0A91\u0A93\u0AA8\u0AAA\u0AB0\u0AB2\u0AB3"
+          + "\u0AB5\u0AB9\u0ABD\u0ABD\u0AE0\u0AE0\u0B05\u0B0C\u0B0F\u0B10\u0B13\u0B28"
+          + "\u0B2A\u0B30\u0B32\u0B33\u0B36\u0B39\u0B3D\u0B3D\u0B5C\u0B5D\u0B5F\u0B61"
+          + "\u0B85\u0B8A\u0B8E\u0B90\u0B92\u0B95\u0B99\u0B9A\u0B9C\u0B9C\u0B9E\u0B9F"
+          + "\u0BA3\u0BA4\u0BA8\u0BAA\u0BAE\u0BB5\u0BB7\u0BB9\u0C05\u0C0C\u0C0E\u0C10"
+          + "\u0C12\u0C28\u0C2A\u0C33\u0C35\u0C39\u0C60\u0C61\u0C85\u0C8C\u0C8E\u0C90"
+          + "\u0C92\u0CA8\u0CAA\u0CB3\u0CB5\u0CB9\u0CDE\u0CDE\u0CE0\u0CE1\u0D05\u0D0C"
+          + "\u0D0E\u0D10\u0D12\u0D28\u0D2A\u0D39\u0D60\u0D61\u0E01\u0E2E\u0E30\u0E30"
+          + "\u0E32\u0E33\u0E40\u0E45\u0E81\u0E82\u0E84\u0E84\u0E87\u0E88\u0E8A\u0E8A"
+          + "\u0E8D\u0E8D\u0E94\u0E97\u0E99\u0E9F\u0EA1\u0EA3\u0EA5\u0EA5\u0EA7\u0EA7"
+          + "\u0EAA\u0EAB\u0EAD\u0EAE\u0EB0\u0EB0\u0EB2\u0EB3\u0EBD\u0EBD\u0EC0\u0EC4"
+          + "\u0EDC\u0EDD\u0F40\u0F47\u0F49\u0F69\u1100\u1159\u115F\u11A2\u11A8\u11F9"
+          + "\u2135\u2138\u3041\u3094\u30A1\u30FA\u3105\u312C\u3131\u318E\u4E00\u9FA5"
+          + "\uAC00\uD7A3\uF900\uFA2D\uFB1F\uFB28\uFB2A\uFB36\uFB38\uFB3C\uFB3E\uFB3E"
+          + "\uFB40\uFB41\uFB43\uFB44\uFB46\uFBB1\uFBD3\uFD3D\uFD50\uFD8F\uFD92\uFDC7"
+          + "\uFDF0\uFDFB\uFE70\uFE72\uFE74\uFE74\uFE76\uFEFC\uFF66\uFF6F\uFF71\uFF9D"
+          + "\uFFA0\uFFBE\uFFC2\uFFC7\uFFCA\uFFCF\uFFD2\uFFD7\uFFDA\uFFDC" },
+        { "Lm", "\u02B0\u02B8\u02BB\u02C1\u02D0\u02D1\u02E0\u02E4\u037A\u037A\u0559\u0559"
+          + "\u0640\u0640\u06E5\u06E6\u0E46\u0E46\u0EC6\u0EC6\u3005\u3005\u3031\u3035"
+          + "\u309B\u309E\u30FC\u30FE\uFF70\uFF70\uFF9E\uFF9F" },
+        { "Nd", "09\u0660\u0669\u06F0\u06F9\u0966\u096F\u09E6\u09EF\u0A66\u0A6F\u0AE6\u0AEF"
+          + "\u0B66\u0B6F\u0BE7\u0BEF\u0C66\u0C6F\u0CE6\u0CEF\u0D66\u0D6F\u0E50\u0E59"
+          + "\u0ED0\u0ED9\u0F20\u0F29\uFF10\uFF19" },
+        { "Nl", "\u2160\u2182\u3007\u3007\u3021\u3029" },
+        { "No", "\u00B2\u00B3\u00B9\u00B9\u00BC\u00BE\u09F4\u09F9\u0BF0\u0BF2\u0F2A\u0F33"
+          + "\u2070\u2070\u2074\u2079\u2080\u2089\u2153\u215F\u2460\u249B\u24EA\u24EA"
+          + "\u2776\u2793\u3192\u3195\u3220\u3229\u3280\u3289" },
+        { "Ps", "(([[{{\u00AB\u00AB\u0F3A\u0F3A\u0F3C\u0F3C\u2018\u2018\u201A"
+          + "\u201C\u201E\u201F\u2039\u2039\u2045\u2045\u207D\u207D\u208D\u208D\u2329"
+          + "\u2329\u3008\u3008\u300A\u300A\u300C\u300C\u300E\u300E\u3010\u3010\u3014"
+          + "\u3014\u3016\u3016\u3018\u3018\u301A\u301A\u301D\u301D\u301F\u301F\uFD3E"
+          + "\uFD3E\uFE35\uFE35\uFE37\uFE37\uFE39\uFE39\uFE3B\uFE3B\uFE3D\uFE3D\uFE3F"
+          + "\uFE3F\uFE41\uFE41\uFE43\uFE43\uFE59\uFE59\uFE5B\uFE5B\uFE5D\uFE5D\uFF08"
+          + "\uFF08\uFF3B\uFF3B\uFF5B\uFF5B\uFF62\uFF62" },
+        { "Pe", "))]]}}\u00BB\u00BB\u0F3B\u0F3B\u0F3D\u0F3D\u2019\u2019\u201D\u201D\u203A"
+          + "\u203A\u2046\u2046\u207E\u207E\u208E\u208E\u232A\u232A\u3009\u3009\u300B"
+          + "\u300B\u300D\u300D\u300F\u300F\u3011\u3011\u3015\u3015\u3017\u3017\u3019"
+          + "\u3019\u301B\u301B\u301E\u301E\uFD3F\uFD3F\uFE36\uFE36\uFE38\uFE38\uFE3A"
+          + "\uFE3A\uFE3C\uFE3C\uFE3E\uFE3E\uFE40\uFE40\uFE42\uFE42\uFE44\uFE44\uFE5A"
+          + "\uFE5A\uFE5C\uFE5C\uFE5E\uFE5E\uFF09\uFF09\uFF3D\uFF3D\uFF5D\uFF5D\uFF63"
+          + "\uFF63" },
+        { "Pd", "--\u00AD\u00AD\u2010\u2015\u301C\u301C\u3030\u3030\uFE31\uFE32\uFE58\uFE58"
+          + "\uFE63\uFE63\uFF0D\uFF0D" },
+        { "Pc", "__\u203F\u2040\uFE33\uFE34\uFE4D\uFE4F\uFF3F\uFF3F" },
+        { "Po", "!#%'**,,./:;?@\\\\\u00A1\u00A1\u00B7\u00B7\u00BF\u00BF\u0374\u0375\u037E"
+          + "\u037E\u0387\u0387\u055A\u055F\u0589\u0589\u05BE\u05BE\u05C0\u05C0\u05C3"
+          + "\u05C3\u05F3\u05F4\u060C\u060C\u061B\u061B\u061F\u061F\u066A\u066D\u06D4"
+          + "\u06D4\u0964\u0965\u0970\u0970\u0E2F\u0E2F\u0E5A\u0E5B\u0EAF\u0EAF\u0F04"
+          + "\u0F12\u0F85\u0F85\u10FB\u10FB\u2016\u2017\u2020\u2027\u2030\u2038\u203B"
+          + "\u203E\u2041\u2043\u3001\u3003\u3006\u3006\u30FB\u30FB\uFE30\uFE30\uFE49"
+          + "\uFE4C\uFE50\uFE52\uFE54\uFE57\uFE5F\uFE61\uFE68\uFE68\uFE6A\uFE6B\uFF01"
+          + "\uFF03\uFF05\uFF07\uFF0A\uFF0A\uFF0C\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F"
+          + "\uFF20\uFF3C\uFF3C\uFF61\uFF61\uFF64\uFF65" },
+        { "Sc", "$$\u00A2\u00A5\u09F2\u09F3\u0E3F\u0E3F\u20A0\u20AB\uFE69\uFE69\uFF04\uFF04"
+          + "\uFFE0\uFFE1\uFFE5\uFFE6" },
+        { "Sm", "++<>||~~\u00AC\u00AC\u00B1\u00B1\u00D7\u00D7\u00F7\u00F7\u2044\u2044\u207A"
+          + "\u207C\u208A\u208C\u2190\u2194\u21D2\u21D2\u21D4\u21D4\u2200\u22F1\u2308"
+          + "\u230B\u2320\u2321\uFB29\uFB29\uFE62\uFE62\uFE64\uFE66\uFF0B\uFF0B\uFF1C"
+          + "\uFF1E\uFF5C\uFF5C\uFF5E\uFF5E\uFFE2\uFFE2\uFFE8\uFFEC" },
+        { "So", "\u00A6\u00A7\u00A9\u00A9\u00AE\u00AE\u00B0\u00B0\u00B6\u00B6\u0482\u0482"
+          + "\u06E9\u06E9\u0950\u0950\u09FA\u09FA\u0AD0\u0AD0\u0B70\u0B70\u0E4F\u0E4F"
+          + "\u0F00\u0F03\u0F13\u0F17\u0F1A\u0F1F\u0F34\u0F34\u0F36\u0F36\u0F38\u0F38"
+          + "\u2100\u2101\u2103\u2106\u2108\u2109\u2114\u2114\u2116\u2117\u211E\u2123"
+          + "\u2125\u2125\u2127\u2127\u2129\u2129\u2132\u2132\u2195\u21D1\u21D3\u21D3"
+          + "\u21D5\u21EA\u2300\u2300\u2302\u2307\u230C\u231F\u2322\u2328\u232B\u237A"
+          + "\u2400\u2424\u2440\u244A\u249C\u24E9\u2500\u2595\u25A0\u25EF\u2600\u2613"
+          + "\u261A\u266F\u2701\u2704\u2706\u2709\u270C\u2727\u2729\u274B\u274D\u274D"
+          + "\u274F\u2752\u2756\u2756\u2758\u275E\u2761\u2767\u2794\u2794\u2798\u27AF"
+          + "\u27B1\u27BE\u3004\u3004\u3012\u3013\u3020\u3020\u3036\u3037\u303F\u303F"
+          + "\u3190\u3191\u3196\u319F\u3200\u321C\u322A\u3243\u3260\u327B\u327F\u327F"
+          + "\u328A\u32B0\u32C0\u32CB\u32D0\u32FE\u3300\u3376\u337B\u33DD\u33E0\u33FE"
+          + "\uFFE4\uFFE4\uFFED\uFFEE\uFFFD\uFFFD" },
+        { "Mn", "\u0300\u0345\u0360\u0361\u0483\u0486\u0591\u05A1\u05A3\u05B9\u05BB\u05BD"
+          + "\u05BF\u05BF\u05C1\u05C2\u05C4\u05C4\u064B\u0652\u0670\u0670\u06D6\u06DC"
+          + "\u06DF\u06E4\u06E7\u06E8\u06EA\u06ED\u0901\u0902\u093C\u093C\u0941\u0948"
+          + "\u094D\u094D\u0951\u0954\u0962\u0963\u0981\u0981\u09BC\u09BC\u09C1\u09C4"
+          + "\u09CD\u09CD\u09E2\u09E3\u0A02\u0A02\u0A3C\u0A3C\u0A41\u0A42\u0A47\u0A48"
+          + "\u0A4B\u0A4D\u0A70\u0A71\u0A81\u0A82\u0ABC\u0ABC\u0AC1\u0AC5\u0AC7\u0AC8"
+          + "\u0ACD\u0ACD\u0B01\u0B01\u0B3C\u0B3C\u0B3F\u0B3F\u0B41\u0B43\u0B4D\u0B4D"
+          + "\u0B56\u0B56\u0B82\u0B82\u0BC0\u0BC0\u0BCD\u0BCD\u0C3E\u0C40\u0C46\u0C48"
+          + "\u0C4A\u0C4D\u0C55\u0C56\u0CBF\u0CBF\u0CC6\u0CC6\u0CCC\u0CCD\u0D41\u0D43"
+          + "\u0D4D\u0D4D\u0E31\u0E31\u0E34\u0E3A\u0E47\u0E4E\u0EB1\u0EB1\u0EB4\u0EB9"
+          + "\u0EBB\u0EBC\u0EC8\u0ECD\u0F18\u0F19\u0F35\u0F35\u0F37\u0F37\u0F39\u0F39"
+          + "\u0F71\u0F7E\u0F80\u0F84\u0F86\u0F8B\u0F90\u0F95\u0F97\u0F97\u0F99\u0FAD"
+          + "\u0FB1\u0FB7\u0FB9\u0FB9\u20D0\u20DC\u20E1\u20E1\u302A\u302F\u3099\u309A"
+          + "\uFB1E\uFB1E\uFE20\uFE23" },
+        { "Mc", "\u0903\u0903\u093E\u0940\u0949\u094C\u0982\u0983\u09BE\u09C0\u09C7\u09C8"
+          + "\u09CB\u09CC\u09D7\u09D7\u0A3E\u0A40\u0A83\u0A83\u0ABE\u0AC0\u0AC9\u0AC9"
+          + "\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B3E\u0B40\u0B40\u0B47\u0B48\u0B4B\u0B4C"
+          + "\u0B57\u0B57\u0B83\u0B83\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6\u0BC8\u0BCA\u0BCC"
+          + "\u0BD7\u0BD7\u0C01\u0C03\u0C41\u0C44\u0C82\u0C83\u0CBE\u0CBE\u0CC0\u0CC4"
+          + "\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E\u0D40\u0D46\u0D48"
+          + "\u0D4A\u0D4C\u0D57\u0D57\u0F3E\u0F3F\u0F7F\u0F7F" },
+        { "Me", "\u06DD\u06DE\u20DD\u20E0" },
+        { "Zl", "\u2028\u2028" },
+        { "Zp", "\u2029\u2029" },
+        { "Zs", "\u0020\u0020\u00A0\u00A0\u2000\u200B\u3000\u3000" },
+        { "Cc", "\u0000\u001F\u007F\u009F" },
+        { "Cf", "\u200C\u200F\u202A\u202E\u206A\u206F\uFEFF\uFEFF" }
+    };
+}
diff --git a/src/com/ibm/text/ComposeData.java b/src/com/ibm/text/ComposeData.java
new file mode 100755
index 0000000..baaa6d7
--- /dev/null
+++ b/src/com/ibm/text/ComposeData.java
@@ -0,0 +1,1447 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/ComposeData.java,v $ 
+ * $Date: 2000/03/10 04:07:18 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+import com.ibm.util.*;
+// This class is MACHINE GENERATED.  Run NormalizerBuilder to regenerate.
+
+
+class ComposeData {
+    static final short BASE_COUNT = 773;
+    static final short COMBINING_COUNT = 61;
+    static final int MAX_COMPAT = 4341;
+    static final int MAX_CANON = 5124;
+    static final char MAX_COMPOSED = 0xfb1d;
+    static final int MAX_INDEX = 8899;
+    static final int INITIAL_JAMO_INDEX = 8900;
+    static final int MEDIAL_JAMO_INDEX = 8901;
+    static final int MAX_BASES = 1024;
+    static final int MAX_COMBINE = 64;
+    static final int TYPE_MASK = 0x7;
+    static final int INDEX_SHIFT = 3;
+    static final int IGNORE = 0;
+    static final int BASE = 1;
+    static final int EXPLODING_BASE = 2;
+    static final int COMBINING = 3;
+    static final int INITIAL_JAMO = 4;
+    static final int MEDIAL_JAMO = 5;
+    static final int FINAL_JAMO = 6;
+    static final int HANGUL = 7;
+
+    static final CompactCharArray lookup = new CompactCharArray(
+        "\000\u0800\000 @`\000\u0080\u00A0\u00C0\u00E0\u0100\u0120\u0140\000\u0160"+
+        "\u0180\u01A0\u01C0\u01E0\000\000\u0200\u0220\u0240\u0260\u0280\u02A0\u02C0"+
+        "\u02E0\u0300\u0320\u0340\u0360\u0380\u03A0\u03C0\u03E0\u0400\000\u0420"+
+        "\u0440\uA5A5\004\000\u0460\u0480\u04A0\000\000\u04C0\u04E0\u0500\000\000"+
+        "\u0520\u0540\000\u0560\u0580\uA5A5\016\000\u05A0\u05C0\000\000\u05E0\u0600"+
+        "\000\u0620\u0640\u0660\000\000\u0680\u0660\000\000\u06A0\u06C0\000\u06E0"+
+        "\u0700\u0720\000\000\000\u0740\000\000\u0760\u0780\000\000\u07A0\u07C0"+
+        "\000\000\000\u07E0\000\000\u0800\000\000\000\u0820\u0840\000\u0860\u0880"+
+        "\u08A0\u08C0\u08E0\u0900\u0920\000\000\u0940\uA5A5\006\000\u0960\u0960"+
+        "\u0960\u0980\u09A0\u09C0\u09E0\u0A00\uA5A5.\000\u0A20\uA5A51\000\u0A40"+
+        "\u0A60\u0A80\u0AA0\u0AC0\u0AE0\u0B00\u0B20\u0B40\u0B60\u0B80\u0BA0\u0BC0"+
+        "\u0BE0\u0C00\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\u0D00\u0D20\u0D40"+
+        "\u0D60\u0D80\u0DA0\u0DC0\000\u0DE0\000\u0E00\u0E20\u0E40\u0E60\u0E80\u0EA0"+
+        "\000\000\000\u0EC0\uA5A5\011\000\u0EE0\u0F00\u0F20\u0F40\u0F60\uA5A5L"+
+        "\000\u0F80\000\000\u0FA0\u0FC0\u0FE0\u1000\u1020\u1040\u1060\u1080\000"+
+        "\u10A0\u10C0\u10E0\u1100\u1120\u1140\u1160\u1180\000\u11A0\u11C0\u11E0"+
+        "\u1200\000\000\000\u1220\u1240\u1260\u1280\u12A0\u12C0\u12E0\u1300\u1320"+
+        "\u1340\u1360\u1380\u13A0\u13C0\u13E0\u1400\uA5A5\u03C0\000\uA5A5\u015D"+
+        "\u1420\u1440\uA5A5\u010A\000\u1460\u1480\u14A0\u14C0\u14E0\u1500\u1520"+
+        "\u1540\u1560\u1580\uA5A5\006\000\u15A0\u15C0\u15E0\u1600\u1620\u1640\u1660"+
+        "\u1680\u16A0\u16C0\u16E0\u1700\u1720\u1740\u1760\u1780\u17A0\u17C0\u17E0"+
+        "\u1800\u1820\u1840\u1860\u1880\000\u18A0\u18C0\u18E0\u1900\u1920\u1940"+
+        "\u1960\u1980\u19A0\u19C0\u19E0\u1A00\u1A20\u1A40\u1A60"
+        ,
+        "\000\u1A80\uA5A5<\000\021\031)\000\0009IQaiqy\u0081\u0089\u0091\u0099"+
+        "\u00A1\u00A9\u00B1\u00B9\u00C1\000\u00C9\u00D1\u00D9\u00E1\u00E9\u00F1"+
+        "\u00F9\u0101\u0109\uA5A5\006\000\u0111\u0119\u0121\u0129\u0131\u0139\u0141"+
+        "\u0149\u0151\u0159\u0161\u0169\u0171\u0179\u0181\u0189\000\u0191\u0199"+
+        "\u01A1\u01A9\u01B1\u01B9\u01C1\u01C9\u01D1\uA5A5\005\000p\uA5A5\007\000"+
+        "\012\000\u0080\uA5A5\004\000\u0090\000\000\u00A8\u00B8\u00C8\u00E0\000"+
+        "\000\u00F0\u0108\u0118\000\u0128\u0148\u0168\000\u01D9\u01E1\u01E9\u01F1"+
+        "\u01F9\u0201\u0209\u0211\u0219\u0221\u0229\u0231\u0239\u0241\u0249\u0251"+
+        "\000\u0259\u0261\u0269\u0271\u0279\u0281\000\u0289\u0291\u0299\u02A1\u02A9"+
+        "\u02B1\000\000\u02B9\u02C1\u02C9\u02D1\u02D9\u02E1\u02E9\u02F1\u02F9\u0301"+
+        "\u0309\u0311\u0319\u0321\u0329\u0331\000\u0339\u0341\u0349\u0351\u0359"+
+        "\u0361\000\u0369\u0371\u0379\u0381\u0389\u0391\000\u0399\u03A1\u03A9\u03B1"+
+        "\u03B9\000\000\u03C1\u03C9\u03D1\u03D9\u03E1\u03E9\u03F1\u03F9\u0401\u0409"+
+        "\000\000\u0411\u0419\u0421\u0429\u0431\u0439\000\000\u0441\u0449\u0451"+
+        "\u0459\u0461\u0469\u0471\u0479\000\000\u0481\u0489\000\000\u0491\u0499"+
+        "\u04A1\u04A9\u04B1\u04B9\000\000\u04C1\000\u0188\u01A0\uA5A5\005\000\u04C9"+
+        "\u04D1\000\000\u04D9\u04E1\u01B8\u01D0\000\000\u04E9\u04F1\000\000\u04F9"+
+        "\u0501\u01E8\000\000\u0509\u0511\u0519\u0521\u0529\u0531\000\000\u0539"+
+        "\u0541\000\000\u0549\u0551\u0559\u0561\u0569\u0571\000\000\u0579\u0581"+
+        "\000\000\u0589\u0591\000\000\u0599\u05A1\u05A9\u05B1\u05B9\u05C1\u05C9"+
+        "\u05D1\u05D9\u05E1\000\000\u05E9\u05F1\u05F9\u0601\u0609\u0611\u0619\u0621"+
+        "\u0629\u0631\u0639\042\u0641\u0649\uA5A5\015\000\u0651\u0659\uA5A5\006"+
+        "\000\u0661\uA5A5\014\000\u0200\u0220\u0240\u0260\u0278\u0290\u02A8\u02C0"+
+        "\u02D8\u0669\u0671\u0679\u0681\u0689\u0691\u0699\u06A1\u06A9\u06B1\u06B9"+
+        "\u06C1\u06C9\u06D1\u06D9\u06E1\000\u06E9\u06F1\u06F9\u0701\uA5A5\004\000"+
+        "\u0709\u0711\u0719\u0721\u0729\u0731\uA5A5\005\000\u02F0\u0308\u0320\u0739"+
+        "\u0741\000\000\u0749\u0751\u0759\u0761\uA5A5\004\000\u0769\u0771\u0779"+
+        "\u0781\u0789\u0791\u0799\u07A1\u07A9\u07B1\u07B9\u07C1\u07C9\u07D1\u07D9"+
+        "\u07E1\u07E9\u07F1\u07F9\u0801\u0809\u0811\u0819\u0821\u0829\u0831\u0839"+
+        "\u0841\000\000\u0849\u0851\uA5A5\006\000\u0859\u0861\u0869\u0871\u0879"+
+        "\u0881\u0889\u0891\u0899\u08A1\u08A9\u08B1\u08B9\u08C1\uA5A5\036\000\u08C9"+
+        "\uA5A5\035\000\u0338\u0348\u01A8\u0358\u0368\u0378\u0388\u0398\u03A8\uA5A5"+
+        "\037\000\u03B8\u03D0\u03E8\u0400\u0418\u0430\000\000\u0448\u0458 \u0468"+
+        "\u0478\uA5A5\033\000\013\023\033#+\0033;CKS[c\003\003k\003s\003{\u0083"+
+        "\000\uA5A5\004\003\000\u008B\uA5A5\007\003\u0093\u009B\u00A3\u00AB\u00B3"+
+        "\u00BB\uA5A5\004\003\u00C3\u00CB\003\u00D3\u00DB\uA5A5\006\003\u00E3\uA5A5"+
+        "\007\003\u87B8\u87C8\u00EB\u87D8\u87E8\u00F3\uA5A5\011\003\uA5A5%\000"+
+        "\u8800\uA5A5\005\000\u0488\000\000\000\u8810\uA5A5\005\000\u00C8\u04A0"+
+        "\000\u8820\uA5A5\011\000\u08D1\000\000\000\u08D9\000\u08E1\000\u08E9\uA5A5"+
+        "\005\000\u08F1\000\u08F9\000\000\000\u0901\000\000\000\u0909\000\000\u0911"+
+        "\000\u0919\000\000\u0921\000\000\000\u0929\000\u0931\000\u0939\uA5A5\005"+
+        "\000\u0941\000\u0949\000\000\000\u0951\000\000\000\u0959\u0961\u0969\000"+
+        "\000\u0971\000\u04C0\u04D02\u04E0\u04F8\u0510\u0520\uA5A5\031\000\u0530"+
+        "\u0540\u0550\uA5A5\023\000\u0979\uA5A5\011\000\u0981\000\000\u0989\000"+
+        "\u0991\u0999\u09A1\u09A9\000\u09B1\000\000\000\u09B9\uA5A5\004\000\u09C1"+
+        "\000\000\000\u09C9\000\000\000\u09D1\000\u09D9\000\000\u09E1\000\000\u09E9"+
+        "\000\u09F1\u09F9\u0A01\u0A09\000\u0A11\000\000\000\u0A19\uA5A5\004\000"+
+        "\u0A21\000\000\000\u0A29\000\000\000\u0A31\000\u0A39\uA5A5\010\000\u0A41"+
+        "\uA5A5\035\000\u0A49\u0A51\uA5A5\015\000\uA5A5\004\003\uA5A51\000\u0A59"+
+        "\u0A61\uA5A5\016\000\u0A69\u0A71\uA5A5\035\000\u0560\uA5A5\011\000\uA5A5"+
+        "\011\003\000\uA5A5\007\003\000\uA5A5\012\003\000\000\003\uA5A5\004\000"+
+        "\u00FB\uA5A5\017\000\003\uA5A5\024\000\u0A79\uA5A5\010\000\u0A81\u0A89"+
+        "\000\000\000\u0A91\uA5A5 \000\u0A99\000\u0AA1\uA5A5\010\000\u0103\u010B"+
+        "\u0113\uA5A5\037\000\u0578\u0590\u05A8\u05C0\uA5A5\010\000\u0AA9\uA5A5"+
+        "\020\000\u0AB1\000\000\u0AB9\uA5A5\007\003\000\000\uA5A5\006\003\000\000"+
+        "\003\003\000\uA5A5\004\003\uA5A5\042\000\uA5A5\033\003\uA5A5\035\000\u0AC1"+
+        "\uA5A5\007\000\u0AC9\000\000\u0AD1\uA5A5\010\000\u011B\uA5A5\020\000\003"+
+        "\000\000\000\uA5A5\004\003\000\000\000\u8830\u8848\u8860\u8878\u8890\u88A8"+
+        "\u88C0\u88D8\000\u0AD9\u0AE1\uA5A5\014\000\u0AE9\uA5A5\014\000\u0123\000"+
+        "\u012B\uA5A5\010\000\u0AF1\uA5A5\005\000\003\uA5A5\011\000\u0133\uA5A5"+
+        "\036\000\u0AF9\u0B01\uA5A5\004\000\u0B09\uA5A5\016\000\u0B11\uA5A5\006"+
+        "\000\u0B19\uA5A5\005\000\u0B21\000\000\000\u013B\uA5A5\020\000\003\uA5A5"+
+        ".\000\003\uA5A5\004\000\u0B29\u0B31\uA5A5\031\000\u0143\000\u014B\uA5A5"+
+        "\010\000\u0B39\uA5A5\005\000\003\uA5A5\010\000\u0153\u015B\uA5A5\032\000"+
+        "\u0B41\uA5A5+\000\u0163\uA5A5\007\000\u0B49\u0B51\uA5A5\005\000\003\uA5A5"+
+        "\011\000\u016B\uA5A5\016\000\u0B59\uA5A5\006\000\003\uA5A5\010\000\u0173"+
+        "\uA5A5(\000\u0B61\000\000\u017B\000\000\000\u0B69\000\000\000\u0B71\000"+
+        "\000\003\uA5A5\007\000\u0183\u018B\uA5A5'\000\u0193\uA5A5\007\000\u0B79"+
+        "\u0B81\uA5A5\005\000\003\uA5A5\011\000\u019B\uA5A5\022\000\u01A3\uA5A5"+
+        "\004\000\u01AB\uA5A5\011\000\u0B89\u0B91\000\u0B99\000\000\u01B3\uA5A5"+
+        "\023\000\u05D8\uA5A5\006\000\003\uA5A5\030\000\u05F0\uA5A5(\000\u0608"+
+        "\u0620\uA5A5\016\000\u0638\uA5A5\013\000\003\003\uA5A5\033\000\003\000"+
+        "\003\000\003\uA5A5\006\000\u0BA1\000\u0BA9\uA5A5\011\000\u0BB1\uA5A5\004"+
+        "\000\u0BB9\uA5A5\004\000\u0BC1\uA5A5\004\000\u0BC9\uA5A5\026\000\003\u88F0"+
+        "\000\u8908\000\u0648\000\u0668\uA5A5\004\003\000\000\u01BB\u8920\003\003"+
+        "\003\000\003\003\uA5A5\010\000\u0BD1\000\u0BD9\uA5A5\011\000\u0BE1\uA5A5"+
+        "\004\000\u0BE9\uA5A5\004\000\u0BF1\uA5A5\004\000\u0BF9\uA5A5\006\000\u0C01"+
+        "\u0C09\000\u01C3\000\u01CB\uA5A5\016\000\003\uA5A5\036\000\u0C11\uA5A5"+
+        "\010\000\u01D3\uA5A5\010\000\003\000\003\uA5A5\006\000\uA5A5 \004\000"+
+        "\uA5A5E\005\000\uA5A5S\006\uA5A5\030\000\003\uA5A5\015\000\u0C19\u0C21"+
+        "\u0C29\u0C31\uA5A5\006\000\u0C39\u0C41\u0C49\u0C51\u0C59\u0C61\000\000"+
+        "\u0C69\u0C71\u0C79\u0C81\u0C89\u0C91\u0C99\u0CA1\u0CA9\u0CB1\uA5A5\004"+
+        "\000\u0CB9\u0CC1\u0CC9\u0CD1\u0CD9\u0CE1\u0CE9\u0CF1\000\000\u0CF9\u0D01"+
+        "\u0D09\u0D11\u0D19\u0D21\u0D29\u0D31\u0D39\u0D41\u0D49\u0D51\u0D59\u0D61"+
+        "\u0D69\u0D71\u0D79\u0D81\u0D89\u0D91\u0D99\u0DA1\u0DA9\u0DB1\000\000\u0DB9"+
+        "\u0DC1\u0DC9\u0DD1\u0DD9\u0DE1\u0DE9\u0DF1\u0DF9\u0E01\u0E09\u0E11\u0E19"+
+        "\u0E21\u0E29\u0E31\uA5A5\004\000\u0E39\u0E41\u0E49\u0E51\u0E59\u0E61\u0E69"+
+        "\u0E71\u0E79\u0E81\u0E89\u0E91\u0E99\u0EA1\u0EA9\u0EB1\u0EB9\u0EC1\u0EC9"+
+        "\u0ED1\u0ED9\u0EE1\u0EE9\u0EF1\u0EF9\u0F01\u0F09\u0F11\u0F19\u0F21\u0F29"+
+        "\u0F31\u0F39\u0F41\u0F49\u0F51\u0F59\u0F61\000\000\u0F69\u0F71\u0F79\u0F81"+
+        "\u0F89\u0F91\u0F99\u0FA1\uA5A5\006\000\u0FA9\u0FB1\u0FB9\u0FC1\uA5A5\004"+
+        "\000\u0FC9\u0FD1\u0FD9\u0FE1\u0688\u06A0\uA5A5\004\000\u0FE9\u0FF1\u0FF9"+
+        "\u1001\u1009\u1011\u1019\u1021\u1029\u1031\u1039\u1041\u1049\u1051\u1059"+
+        "\u1061\u1069\u1071\u1079\u1081\u1089\u1091\u1099\u10A1\u10A9\u10B1\u10B9"+
+        "\u10C1\u10C9\u10D1\u10D9\u10E1\u10E9\u10F1\u10F9\u1101\u1109\u1111\u1119"+
+        "\u1121\u1129\u1131\u1139\u1141\u1149\u1151\u1159\u1161\u1169\u1171\u1179"+
+        "\u1181\u1189\u1191\u1199\u11A1\u11A9\u11B1\u11B9\u11C1\u11C9\u11D1\u11D9"+
+        "\u11E1\u11E9\u11F1\u11F9\u1201\u1209\u1211\u1219\u1221\u1229\u1231\u1239"+
+        "\u1241\u1249\u1251\u1259\u1261\u1269\u1271\u1279\u1281\000\000\u1289\u1291"+
+        "\u1299\u12A1\uA5A5\006\000\u12A9\u12B1\u12B9\u12C1\u12C9\u12D1\u12D9\u12E1"+
+        "\u12E9\u12F1\u12F9\u1301\u1309\u1311\u1319\u1321\u1329\u1331\uA5A5\006"+
+        "\000\u1339\u1341\uA5A5\006\000\u1349\u1351\u1359\u1361\u1369\u1371\u1379"+
+        "\u1381\u1389\u1391\u1399\u13A1\u13A9\u13B1\u13B9\u13C1\u13C9\u13D1\uA5A5"+
+        "\006\000\u13D9\u13E1\uA5A5\006\000\u13E9\u13F1\uA5A5\006\000\u13F9\u1401"+
+        "\uA5A5\006\000\u1409\u1411\uA5A5\007\000\u1419\uA5A5\006\000\u1421\u1429"+
+        "\u1431\u1439\u1441\u1449\u1451\u1459\u1461\u1469\u1471\u1479\u1481\u1489"+
+        "\u1491\u1499\u14A1\u8938\000\u8950\u14A9\u8968\000\u8980\000\u8998\000"+
+        "\u89B0\u14B1\u89C8\000\000\u14B9\u14C1\uA5A5\006\000\u14C9\u14D1\uA5A5"+
+        "\006\000\u14D9\u14E1\uA5A5\006\000\u14E9\u14F1\uA5A5\006\000\u14F9\u1501"+
+        "\uA5A5\006\000\u1509\u1511\uA5A5\011\000\u1519\000\000\u1521\uA5A5\004"+
+        "\000\u89E0\u1529@\u89F8B\u06B8\u06D0\000\u1531\000\000\u1539\000\000\u8A08"+
+        "\000\u8A20\u1541\u06F0\u0710\u0730\000\000\000\u8A38\uA5A5\007\000\u8A58"+
+        "\000\u0750\u0770\u0790\000\000\000\u8A70\uA5A5\007\000\u8A90\000\u07B0"+
+        "\u04A0\u8AA8\000\000\000\u1549\000\000\u1551\000\000\u8AB8\000\u8AD0\u1559"+
+        "\u00C8Z\000\uA5A5\013p\uA5A5\006\000\u07D0\uA5A5\005\000\u07E0\uA5A5\014"+
+        "\000\u07F8\u0808\u0820\uA5A5\010\000p\000\000\000\u0840\u0858\000\u0878"+
+        "\u0890\uA5A5\004\000\u08B0\000\u08C8\uA5A5\011\000\u08E0\u08F8\uA5A5&"+
+        "\000\u0910\000\000\000\u0138\u0920\u0930\u0940\u0950\u0960\u0970\u0980"+
+        "\u0990\u09A0\u09B0\u01F0\u0910\u0108\u00A8\u00B8\u0138\u0920\u0930\u0940"+
+        "\u0950\u0960\u0970\u0980\u0990\u09A0\u09B0\uA5A5\031\000\u09C0\uA5A5'"+
+        "\000\uA5A5\015\003\uA5A5\004\000\003\uA5A5\036\000\u09D8\u09F8\u0A18\u0A28"+
+        "\000\u0A40\u0A60\u0A80\000\u0A90\u0AA8\u0AB8\u0AB8\u0AB8\u0338\u0AC8\u0AD8"+
+        "\u0AD8\u0AE8\u0458\000\u0AF8\u0B08\000\000\u0B20\u0B30\u0B40\u0B40\u0B40"+
+        "\000\000\u0B50\u0B68\u0B88\000\u02F8\000\u8AE8\000\u02F8\000\u8AF8\u8B08"+
+        "\u0BA0\u0A18\000\u0BB0\u0BC0\u0A98\000\u0B58\u0118\u0BD0\u0BE0\u0BF0\u0C00"+
+        "\u0C10\uA5A5\031\000\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\u0D00\u0D20"+
+        "\u0D40\u0D60\u0D80\u0DA0\u0AD8\u0DB8\u0DD0\u0DF0\u0DF8\u0E08\u0E20\u0E40"+
+        "\u0E68\u0E70\u0E80\u0E98\u0AE8\u0A18\u0EB8\u0B58\u0C10\u0EC8\u0EE0\u0F00"+
+        "\u0F08\u0F18\u0F30\u0F50\u0F78\u0468\u0F90\u0FA8\u0458\u09E8\u0FC8\u0FD8"+
+        "\uA5A5\020\000\u1561\000\u1569\000\u1571\uA5A5\033\000\u1579\000\u1581"+
+        "\000\u1589\uA5A5\016\000\u1591\uA5A5\004\000\u1599\000\000\u15A1\uA5A5"+
+        "\027\000\u15A9\000\u15B1\uA5A5\006\000\u0FE8\u1000\000\u1020\u1038\uA5A5"+
+        "\013\000\u15B9\uA5A5\006\000\u15C1\000\u15C9\000\000\u15D1\uA5A5\004\000"+
+        "\u15D9\uA5A5\023\000\u15E1\000\000\u15E9\u15F1\uA5A5\014\000\u15F9\u1601"+
+        "\000\000\u1609\u1611\000\000\u1619\u1621\u1629\u1631\uA5A5\004\000\u1639"+
+        "\u1641\000\000\u1649\u1651\uA5A5\011\000\u1659\u1661\uA5A5\017\000\u1669"+
+        "\uA5A5\005\000\u1671\u1679\000\u1681\uA5A5\006\000\u1689\u1691\u1699\u16A1"+
+        "\uA5A5\023\000\u8B20\u8B30\uA5A5\025\000\u0108\u00A8\u00B8\u0138\u0920"+
+        "\u0930\u0940\u0950\u0960\u1058\u1070\u1088\u10A0\u10B8\u10D0\u10E8\u1100"+
+        "\u1118\u1130\u1148\u1160\u1180\u11A0\u11C0\u11E0\u1200\u1220\u1240\u1260"+
+        "\u1280\u12A8\u12D0\u12F8\u1320\u1348\u1370\u1398\u13C0\u13E8\u1410\u1438"+
+        "\u1450\u1468\u1480\u1498\u14B0\u14C8\u14E0\u14F8\u1510\u1530\u1550\u1570"+
+        "\u1590\u15B0\u15D0\u15F0\u1610\u1630\u1650\u1670\u1690\u16B0\u16D0\u16F0"+
+        "\u1710\u1730\u1750\u1770\u1790\u17B0\u17D0\u17F0\u1810\u1830\u1850\u1870"+
+        "\u1890\u18B0\u18D0\u18F0\u1910\u1930\u1950\u1970\u1990\u19B0\u0BA0\u0A18"+
+        "\u0EB8\u0BC0\u0A98\u19C0\u0AB8\u0AD8\u0190\u19D0\u0AE8\u0B58\u0AF8\u19E0"+
+        "\u0B20\u0B30\u0B40\u19F0\u1A00\u1A10\u0DF8\u1A20\u0E70\u1A30\u02F8\u0080"+
+        "\u1A40\u09E8\u0FC8\u0BB0\u1A50\u0AA8\u0338\u0C10\u01A8\u1A60\u0458\u0FD8"+
+        "\u01F0\u0118\u1A70\u1A80\u0358 \u1A90\u0A70\u0F08\u0398\u0468\u03A8\u0310"+
+        "\u0910\uA5A54\000\u1AA0\uA5A5\023\000\u1AB0\uA5A5\014\000\u1AC0\u1AD0"+
+        "\u1AE0\u1AF0\u1B00\u1B10\u1B20\u1B30\u1B40\u1B50\u1B60\u1B70\u1B80\u1B90"+
+        "\u1BA0\u1BB0\u1BC0\u1BD0\u1BE0\u1BF0\u1C00\u1C10\u1C20\u1C30\u1C40\u1C50"+
+        "\u1C60\u1C70\u1C80\u1C90\u1CA0\u1CB0\u1CC0\u1CD0\u1CE0\u1CF0\u1D00\u1D10"+
+        "\u1D20\u1D30\u1D40\u1D50\u1D60\u1D70\u1D80\u1D90\u1DA0\u1DB0\u1DC0\u1DD0"+
+        "\u1DE0\u1DF0\u1E00\u1E10\u1E20\u1E30\u1E40\u1E50\u1E60\u1E70\u1E80\u1E90"+
+        "\u1EA0\u1EB0\u1EC0\u1ED0\u1EE0\u1EF0\u1F00\u1F10\u1F20\u1F30\u1F40\u1F50"+
+        "\u1F60\u1F70\u1F80\u1F90\u1FA0\u1FB0\u1FC0\u1FD0\u1FE0\u1FF0\u2000\u2010"+
+        "\u2020\u2030\u2040\u2050\u2060\u2070\u2080\u2090\u20A0\u20B0\u20C0\u20D0"+
+        "\u20E0\u20F0\u2100\u2110\u2120\u2130\u2140\u2150\u2160\u2170\u2180\u2190"+
+        "\u21A0\u21B0\u21C0\u21D0\u21E0\u21F0\u2200\u2210\u2220\u2230\u2240\u2250"+
+        "\u2260\u2270\u2280\u2290\u22A0\u22B0\u22C0\u22D0\u22E0\u22F0\u2300\u2310"+
+        "\u2320\u2330\u2340\u2350\u2360\u2370\u2380\u2390\u23A0\u23B0\u23C0\u23D0"+
+        "\u23E0\u23F0\u2400\u2410\u2420\u2430\u2440\u2450\u2460\u2470\u2480\u2490"+
+        "\u24A0\u24B0\u24C0\u24D0\u24E0\u24F0\u2500\u2510\u2520\u2530\u2540\u2550"+
+        "\u2560\u2570\u2580\u2590\u25A0\u25B0\u25C0\u25D0\u25E0\u25F0\u2600\u2610"+
+        "\u2620\u2630\u2640\u2650\u2660\u2670\u2680\u2690\u26A0\u26B0\u26C0\u26D0"+
+        "\u26E0\u26F0\u2700\u2710\u2720\u2730\u2740\u2750\u2760\u2770\u2780\u2790"+
+        "\u27A0\u27B0\u27C0\u27D0\u27E0\u27F0\u2800\u2810\uA5A5\012\000p\uA5A5"+
+        "5\000\u2820\000\u1C30\u2830\u2840\uA5A5\013\000\u16A9\uA5A5\004\000\u16B1"+
+        "\000\u16B9\000\u16C1\000\u16C9\000\u16D1\000\u16D9\000\u16E1\000\u16E9"+
+        "\000\u16F1\000\u16F9\000\u1701\000\u1709\000\000\u1711\000\u1719\000\u1721"+
+        "\uA5A5\006\000\u1729\000\000\u1731\000\000\u1739\000\000\u1741\000\000"+
+        "\u1749\uA5A5\035\000\u01DB\u01E3\u2850\u2868\u1751\uA5A5\010\000\u1759"+
+        "\uA5A5\004\000\u1761\000\u1769\000\u1771\000\u1779\000\u1781\000\u1789"+
+        "\000\u1791\000\u1799\000\u17A1\000\u17A9\000\u17B1\000\u17B9\000\000\u17C1"+
+        "\000\u17C9\000\u17D1\uA5A5\006\000\u17D9\000\000\u17E1\000\000\u17E9\000"+
+        "\000\u17F1\000\000\u17F9\uA5A5\023\000\u1801\u1809\u1811\u1819\uA5A5\012"+
+        "\000\u1821\uA5A5\023\000\u2880\u2890\u28A0\u28B0\u28C0\u28D0\u28E0\u28F0"+
+        "\u2900\u2910\u2920\u2930\u2940\u2950\u2960\u2970\u2980\u2990\u29A0\u29B0"+
+        "\u29C0\u29D0\u29E0\u29F0\u2A00\u2A10\u2A20\u2A30\u2A40\u2A50\u2A60\u2A70"+
+        "\u2A80\u2A90\u2AA0\u2AB0\u2AC0\u2AD0\u2AE0\u2AF0\u2B00\u2B10\u2B20\u2B30"+
+        "\u2B40\u2B50\u2B60\u2B70\u2B80\u2B90\u2BA0\u2BB0\u2BC0\u2BD0\u2BE0\u2BF0"+
+        "\u2C00\u2C10\u2C20\u2C30\u2C40\u2C50\u2C60\u2C70\u2C80\u2C90\u2CA0\u2CB0"+
+        "\u2CC0\u2CD0\u2CE0\u2CF0\u2D00\u2D10\u2D20\u2D30\u2D40\u2D50\u2D60\u2D70"+
+        "\u2D80\u2D90\u2DA0\u2DB0\u2DC0\u2DD0\u2DE0\u2DF0\u2E00\u2E10\u2E20\u2E30"+
+        "\u2E40\u2E50\000\000\000\u1AC0\u1B20\u2E60\u2E70\u2E80\u2E90\u2EA0\u2EB0"+
+        "\u1B00\u2EC0\u2ED0\u2EE0\u2EF0\u1B40\u2F00\u2F20\u2F40\u2F60\u2F80\u2FA0"+
+        "\u2FC0\u2FE0\u3000\u3020\u3040\u3060\u3080\u30A0\u30C0\u30E8\u3110\u3138"+
+        "\u3160\u3188\u31B0\u31D8\u3200\u3228\u3250\u3278\u32A0\u32C8\u32F0\000"+
+        "\000\000\u3318\u3338\u3358\u3378\u3398\u33B8\u33D8\u33F8\u3418\u3438\u3458"+
+        "\u3478\u3498\u34B8\u34D8\u34F8\u3518\u3538\u3558\u3578\u3598\u35B8\u35D8"+
+        "\u35F8\u3618\u3638\u3658\u3678\u3698\u36B8\u36D8\u36F8\u3718\u3738\u3758"+
+        "\u3778\uA5A5\034\000\u2880\u28B0\u28E0\u2900\u2980\u2990\u29C0\u29E0\u29F0"+
+        "\u2A10\u2A20\u2A30\u2A40\u2A50\u3798\u37B0\u37C8\u37E0\u37F8\u3810\u3828"+
+        "\u3840\u3858\u3870\u3888\u38A0\u38B8\u38D0\uA5A5\004\000\u1AC0\u1B20\u2E60"+
+        "\u2E70\u38E8\u38F8\u3908\u1B70\u3918\u1C30\u1F50\u2010\u2000\u1F60\u2520"+
+        "\u1CB0\u1F30\u3928\u3938\u3948\u3958\u3968\u3978\u3988\u3998\u39A8\u39B8"+
+        "\u1D10\u39C8\u39D8\u39E8\u39F8\u3A08\u3A18\u3A28\u3A38\u2E80\u2E90\u2EA0"+
+        "\u3A48\u3A58\u3A68\u3A78\u3A88\u3A98\u3AA8\u3AB8\u3AC8\u3AD8\uA5A5\017"+
+        "\000\u3AE8\u3B00\u3B18\u3B30\u3B48\u3B60\u3B78\u3B90\u3BA8\u3BC0\u3BE0"+
+        "\u3C00\uA5A5\004\000\u3C20\u3C30\u3C40\u3C50\u3C60\u3C70\u3C80\u3C90\u3CA0"+
+        "\u3CB0\u3CC0\u3CD0\u3CE0\u3CF0\u3D00\u3D10\u3D20\u3D30\u3D40\u3D50\u3D60"+
+        "\u3D70\u3D80\u3D90\u3DA0\u3DB0\u3DC0\u3DD0\u3DE0\u3DF0\u3E00\u3E10\u3E20"+
+        "\u3E30\u3E40\u3E50\u3E60\u3E70\u3E80\u3E90\u3EA0\u3EB0\u3EC0\u3ED0\u3EE0"+
+        "\u3EF0\u3F00\000\u3F10\u3F40\u3F68\u3F98\u3FB8\u3FE8\u4008\u4028\u4060"+
+        "\u4088\u40A8\u40C8\u40E8\u4110\u4138\u4160\u4188\u41B0\u41D8\u4200\u4238"+
+        "\u4250\u4288\u42C0\u4260\u42F0\u4328\u4360\u4388\u43A8\u43C8\u43F0\u4418"+
+        "\u4448\u4478\u4498\u44B8\u44E0\u4500\u4310\u4520\u4538\u4558\u4578\u45B0"+
+        "\u45D8\u4608\u4640\u4668\u4688\u46A8\u46E0\u4708\u4740\u4760\u4790\u47B0"+
+        "\u47D8\u47F8\u4820\u4850\u4878\u48A8\u48D0\u48E8\u4918\u4938\u4958\u4980"+
+        "\u49A0\u49C0\u49E0\u4A10\u4A38\u4A50\u4A88\u4AA8\u4298\u4AD8\u4B00\u4B20"+
+        "\u4B40\u4B68\u4B80\u4BA8\u4BD8\u4BF0\u42D0\u4C28\u4C40\u4C58\u4C70\u4C88"+
+        "\u4CA0\u4CB8\u4CD0\u4CE8\u4D00\u4D18\u4D38\u4D58\u4D78\u4D98\u4DB8\u4DD8"+
+        "\u4DF8\u4E18\u4E38\u4E58\u4E78\u4E98\u4EB8\u4ED8\u4EF8\u4F18\u4F30\u4F48"+
+        "\u4F68\u4F80\uA5A5\004\000\u4F98\u4FB0\u4FC8\u4FE0\u4FF8\u5020\u5038\u5050"+
+        "\u5068\u5080\u5098\u50B0\u50C8\u50E0\u5100\u5128\u5140\u5158\u5170\u5188"+
+        "\u51A0\u51B8\u51D0\u51F0\u5210\u5230\u5250\u5268\u5280\u5298\u52B0\u52C8"+
+        "\u52E0\u52F8\u5310\u5328\u5340\u5360\u5348\u5380\u53A0\u53C0\u53A8\u53E0"+
+        "\u5400\u5420\u4F00\u5448\u5468\u5488\u54A8\u54C8\u54F8\u5530\u5548\u5560"+
+        "\u5578\u5590\u55A8\u55C0\u55D8\u55F0\u5608\u5620\u5638\u5650\u5668\u5680"+
+        "\u5698\u56B0\u56C8\u56E0\u5708\u5720\u5738\u5750\u5778\u5798\u57B0\u57C8"+
+        "\u57E0\u57F8\u5810\u5828\u5840\u5858\u5870\u5888\u58A8\u58C0\u58D8\u58F8"+
+        "\u5918\u5930\u5958\u5978\u5990\u59A8\u59C0\000\000\u59D8\u59F0\u5A08\u5A20"+
+        "\u5A38\u5A50\u5A68\u5A80\u5A98\u5AB0\u5AD0\u5AF0\u5B10\u5B30\u5B50\u5B70"+
+        "\u5B90\u5BB0\u5BD0\u5BF0\u5C10\u5C30\u5C50\u5C70\u5C90\u5CB0\u5CD0\u5CF0"+
+        "\u5D10\u5D30\u5D50\000\uA5A5%\007\uA5A5\033\000\u8B40\u8B50\u8B60\u8B70"+
+        "\u8B80\u8B90\u8BA0\u8BB0\u8BC0\u8BD0\u8BE0\u8BF0\u8C00\u8C10\u8C20\u8C30"+
+        "\u8C40\u8C50\u8C60\u8C70\u8C80\u8C90\u8CA0\u8CB0\u8CC0\u8CD0\u8CE0\u8CF0"+
+        "\u8D00\u8D10\u8D20\u8D30\u8D40\u8D50\u8D60\u8D70\u8D80\u8D90\u8DA0\u8DB0"+
+        "\u8DC0\u8DD0\u8DE0\u8DF0\u8E00\u8E10\u8E20\u8E30\u8E40\u8E50\u8E60\u8E70"+
+        "\u8E80\u8E90\u8EA0\u8EB0\u8EC0\u8ED0\u8EE0\u8EF0\u8F00\u8F10\u8F20\u8F30"+
+        "\u8F40\u8F50\u8F60\u8F70\u8F80\u8F90\u8FA0\u8FB0\u8FC0\u8FD0\u8FE0\u8FF0"+
+        "\u9000\u9010\u9020\u9030\u9040\u9050\u9060\u9070\u9080\u9090\u90A0\u90B0"+
+        "\u90C0\u90D0\u90E0\u90F0\u8C80\u9100\u9110\u9120\u9130\u9140\u9150\u9160"+
+        "\u9170\u9180\u9190\u91A0\u91B0\u91C0\u91D0\u91E0\u91F0\u9200\u9210\u9220"+
+        "\u9230\u9240\u9250\u9260\u9270\u9280\u9290\u92A0\u92B0\u92C0\u92D0\u92E0"+
+        "\u92F0\u9300\u9310\u9320\u9330\u9340\u9350\u9360\u9370\u9380\u9390\u93A0"+
+        "\u93B0\u93C0\u93D0\u93E0\u93F0\u9400\u9410\u9420\u9430\u9440\u9450\u9460"+
+        "\u9470\u9480\u9490\u94A0\u94B0\u94C0\u94D0\u94E0\u94F0\u9500\u9510\u9520"+
+        "\u9530\u9220\u9540\u9550\u9560\u9570\u9580\u9590\u95A0\u95B0\u9120\u95C0"+
+        "\u95D0\u95E0\u95F0\u9600\u9610\u9620\u9630\u9640\u9650\u9660\u9670\u9680"+
+        "\u9690\u96A0\u96B0\u96C0\u96D0\u96E0\u96F0\u8C80\u9700\u9710\u9720\u9730"+
+        "\u9740\u9750\u9760\u9770\u9780\u9790\u97A0\u97B0\u97C0\u97D0\u97E0\u97F0"+
+        "\u9800\u9810\u9820\u9830\u9840\u9850\u9860\u9870\u9880\u9890\u98A0\u9140"+
+        "\u98B0\u98C0\u98D0\u98E0\u98F0\u9900\u9910\u9920\u9930\u9940\u9950\u9960"+
+        "\u9970\u9980\u9990\u99A0\u99B0\u99C0\u99D0\u99E0\u99F0\u9A00\u9A10\u9A20"+
+        "\u9A30\u9A40\u9A50\u9A60\u9A70\u9A80\u9A90\u9AA0\u9AB0\u9AC0\u9AD0\u9AE0"+
+        "\u9AF0\u9B00\u9B10\u9B20\u9B30\u9B40\u9B50\u9B60\u9B70\u9B80\u9B90\u9BA0"+
+        "\u9BB0\u9BC0\000\000\u9BD0\000\u9BE0\000\000\u9BF0\u9C00\u9C10\u9C20\u9C30"+
+        "\u9C40\u9C50\u9C60\u9C70\u9C80\000\u9C90\000\u9CA0\000\000\u9CB0\u9CC0"+
+        "\000\000\000\u9CD0\u9CE0\u9CF0\u9D00\uA5A5\022\000\u5D70\u5D88\u5DA0\u5DB8"+
+        "\u5DD8\u5DF8\u5DF8\uA5A5\014\000\u5E10\u5E28\u5E40\u5E58\u5E70\uA5A5\007"+
+        "\000\u9D10\u5E88\u0BD0\u0C00\u5E98\u5EA8\u5EB8\u5EC8\u5ED8\u5EE8\u0970"+
+        "\u9D28\u9D40\u9D58\u9D78\u9D98\u9DB0\u9DC8\u9DE0\u9DF8\u9E10\u9E28\u9E40"+
+        "\u9E58\000\u9E70\u9E88\u9EA0\u9EB8\u9ED0\000\u9EE8\000\u9F00\u9F18\000"+
+        "\u9F30\u9F48\000\u9F60\u9F78\u9F90\u9FA8\u9FC0\u9FD8\u9FF0\uA008\uA020"+
+        "\u5EF8\u5F10\u5F10\uA5A5\004\u5F20\uA5A5\004\u5F30\uA5A5\004\u5F40\uA5A5"+
+        "\004\u5F50\uA5A5\004\u5F60\uA5A5\004\u5F70\uA5A5\004\u5F80\uA5A5\004\u5F90"+
+        "\uA5A5\004\u5FA0\uA5A5\004\u5FB0\uA5A5\004\u5FC0\uA5A5\004\u5FD0\u5FE0"+
+        "\u5FE0\u5FF0\u5FF0\u6000\u6000\u6010\u6010\u6020\u6020\u6030\u6030\uA5A5"+
+        "\004\u6040\uA5A5\004\u6050\uA5A5\004\u6060\uA5A5\004\u6070\u6080\u6080"+
+        "\uA5A5\004\u6090\u60A0\u60A0\uA5A5\004\u60B8\uA5A5\004\u60C8\u60D8\u60D8"+
+        "\u60E8\u60E8\uA5A5!\000\uA5A5\004\u6100\u6110\u6110\u6120\u6120\u6130"+
+        "\u6130\u05A8\u6140\u6140\u6150\u6150\u6160\u6160\uA5A5\004\u6170\u6180"+
+        "\u6180\u6190\u6190\u61B0\u61B0\u61D0\u61D0\u61F0\u61F0\u6210\u6210\u6230"+
+        "\u6230\u6250\u6250\u6250\u6270\u6270\u6270\uA5A5\004\u6290\u62A0\u62C0"+
+        "\u62E0\u6270\u6300\u6320\u6338\u6350\u6368\u6380\u6398\u63B0\u63C8\u63E0"+
+        "\u63F8\u6410\u6428\u6440\u6458\u6470\u6488\u64A0\u64B8\u64D0\u64E8\u6500"+
+        "\u6518\u6530\u6548\u6560\u6578\u6590\u65A8\u65C0\u65D8\u65F0\u6608\u6620"+
+        "\u6638\u6650\u6668\u6680\u6698\u66B0\u66C8\u66E0\u66F8\u6710\u6728\u6740"+
+        "\u6758\u6770\u6788\u67A0\u67B8\u67D0\u67E8\u6800\u6818\u6830\u6848\u6860"+
+        "\u6878\u6890\u68A8\u68C0\u68D8\u68F0\u6908\u6920\u6938\u6950\u6968\u6980"+
+        "\u6998\u69B0\u69C8\u69E0\u69F8\u6A10\u6A28\u6A40\u6A58\u6A70\u6A88\u6AA0"+
+        "\u6AB8\u6AD0\u6AE8\u6B00\u6B18\u6B30\u6B48\u6B60\u6B78\u6B98\u6BB8\u6BD8"+
+        "\u6BF8\u6C18\u6C38\u6C58\u62E0\u6C78\u6270\u6300\u6C98\u6CB0\u6368\u6CC8"+
+        "\u6380\u6398\u6CE0\u6CF8\u63F8\u6D10\u6410\u6428\u6D28\u6D40\u6458\u6D58"+
+        "\u6470\u6488\u6740\u6758\u67A0\u67B8\u67D0\u6830\u6848\u6860\u6878\u68D8"+
+        "\u68F0\u6908\u6D70\u6968\u6D88\u6DA0\u69F8\u6DB8\u6A10\u6A28\u6B60\u6DD0"+
+        "\u6DE8\u6AE8\u6E00\u6B00\u6B18\u62A0\u62C0\u6E18\u62E0\u6E38\u6320\u6338"+
+        "\u6350\u6368\u6E58\u63B0\u63C8\u63E0\u63F8\u6E70\u6458\u64A0\u64B8\u64D0"+
+        "\u64E8\u6500\u6530\u6548\u6560\u6578\u6590\u65A8\u6E88\u65C0\u65D8\u65F0"+
+        "\u6608\u6620\u6638\u6668\u6680\u6698\u66B0\u66C8\u66E0\u66F8\u6710\u6728"+
+        "\u6770\u6788\u67E8\u6800\u6818\u6830\u6848\u6890\u68A8\u68C0\u68D8\u6EA0"+
+        "\u6920\u6938\u6950\u6968\u69B0\u69C8\u69E0\u69F8\u6EB8\u6A40\u6A58\u6ED0"+
+        "\u6AA0\u6AB8\u6AD0\u6AE8\u6EE8\u62E0\u6E38\u6368\u6E58\u63F8\u6E70\u6458"+
+        "\u6F00\u6590\u6F18\u6F30\u6F48\u6830\u6848\u68D8\u69F8\u6EB8\u6AE8\u6EE8"+
+        "\u6F60\u6F80\u6FA0\u6FC0\u6FD8\u6FF0\u7008\u7020\u7038\u7050\u7068\u7080"+
+        "\u7098\u70B0\u70C8\u70E0\u70F8\u7110\u7128\u7140\u7158\u7170\u7188\u71A0"+
+        "\u71B8\u71D0\u6F30\u71E8\u7200\u7218\u7230\u6FC0\u6FD8\u6FF0\u7008\u7020"+
+        "\u7038\u7050\u7068\u7080\u7098\u70B0\u70C8\u70E0\u70F8\u7110\u7128\u7140"+
+        "\u7158\u7170\u7188\u71A0\u71B8\u71D0\u6F30\u71E8\u7200\u7218\u7230\u71A0"+
+        "\u71B8\u71D0\u6F30\u6F18\u6F48\u6650\u6548\u6560\u6578\u71A0\u71B8\u71D0"+
+        "\u6650\u6668\u7248\u7248\uA5A5\022\000\u7260\u7280\u7280\u72A0\u72C0\u72E0"+
+        "\u7300\u7320\u7340\u7340\u7360\u7380\u73A0\u73C0\u73E0\u7400\u7400\u7420"+
+        "\u7440\u7440\u7460\u7460\u7480\u74A0\u74A0\u74C0\u74E0\u74E0\u7500\u7500"+
+        "\u7520\u7540\u7540\u7560\u7560\u7580\u75A0\u75C0\u75E0\u75E0\u7600\u7620"+
+        "\u7640\u7660\u7680\u7680\u76A0\u76C0\u76E0\u7700\u7720\u7740\u7740\u7760"+
+        "\u7760\u7780\u7780\u77A0\u77C0\u77E0\u7800\u7820\u7840\u7860\000\000\u7880"+
+        "\u78A0\u78C0\u78E0\u7900\u7920\u7920\u7940\u7960\u7980\u79A0\u79A0\u79C0"+
+        "\u79E0\u7A00\u7A20\u7A40\u7A60\u7A80\u7AA0\u7AC0\u7AE0\u7B00\u7B20\u7B40"+
+        "\u7B60\u7B80\u7BA0\u7BC0\u7BE0\u7C00\u7C20\u7C40\u7C60\u76A0\u76E0\u7C80"+
+        "\u7CA0\u7CC0\u7CE0\u7D00\u7D20\u7D00\u7CC0\u7D40\u7D60\u7D80\u7DA0\u7DC0"+
+        "\u7D20\u75C0\u7480\u7DE0\u7E00\uA5A5(\000\u7E20\u7E40\u7E60\u7E88\u7EB0"+
+        "\u7ED8\u7F00\u7F28\u7F50\u7F78\u7F98\u8030\uA5A5\004\000\uA5A5\004\003"+
+        "\uA5A5\014\000\u0808\u8078\u8088\u8098\u8098\u09A0\u09B0\u80A8\u80B8\u80C8"+
+        "\u80D8\u80E8\u80F8\u8108\u8118\u8128\u8138\u8148\u8158\u8168\u8178\uA5A5"+
+        "\004\000\uA5A5\004\u08C8\u8098\u8098\u8098\u8188\u8198\u07F8\000\u81A8"+
+        "\u81B8\u0900\u08B8\u8078\u09A0\u09B0\u80A8\u80B8\u80C8\u80D8\u81C8\u81D8"+
+        "\u81E8\u0970\u81F8\u8208\u8218\u0990\000\u8228\u8238\u8248\u8258\uA5A5"+
+        "\004\000\u8268\u8280\u8298\000\u82B0\000\u82C8\u82E0\u82F8\u8310\u8328"+
+        "\u8340\u8358\u8370\u8388\u83A0\u83B8\u83C8\u83C8\u83E0\u83E0\u83F8\u83F8"+
+        "\u8410\u8410\uA5A5\004\u8428\u61A0\u61A0\uA5A5\004\u8440\u8450\u8450\uA5A5"+
+        "\004\u8460\uA5A5\004\u8470\uA5A5\004\u62B0\uA5A5\004\u62D0\uA5A5\004\u6358"+
+        "\u7EC8\u7EC8\u8480\u8480\u6C48\u6C48\u6C68\u6C68\uA5A5\004\u8490\uA5A5"+
+        "\004\u84A0\uA5A5\004\u84B0\uA5A5\004\u84C0\uA5A5\004\u84D0\uA5A5\004\u84E0"+
+        "\uA5A5\004\u84F0\uA5A5\004\u8500\uA5A5\004\u8510\uA5A5\004\u8520\uA5A5"+
+        "\004\u8530\uA5A5\004\u6838\uA5A5\004\u62F0\uA5A5\004\u6C88\uA5A5\004\u6E48"+
+        "\u61E0\u61E0\u6180\u6180\uA5A5\004\u6310\u8540\u8540\u8560\u8560\u8580"+
+        "\u8580\u85A0\u85A0\uA5A5\004\000\u08B8\u85B8\u81C8\u8238\u8248\u81D8\u85C8"+
+        "\u09A0\u09B0\u81E8\u0970\u8188\u81F8\u07F8\u85D8\u0910\u0108\u00A8\u00B8"+
+        "\u0138\u0920\u0930\u0940\u0950\u0960\u81B8\u81A8\u8208\u0990\u8218\u0900"+
+        "\u8258\u19B0\u0BA0\u0A18\u0EB8\u0BC0\u0A98\u19C0\u0AB8\u0AD8\u0190\u19D0"+
+        "\u0AE8\u0B58\u0AF8\u19E0\u0B20\u0B30\u0B40\u19F0\u1A00\u1A10\u0DF8\u1A20"+
+        "\u0E70\u1A30\u02F8\u85E8\u8228\u85F8\u8608\u8098\u8618\u0080\u1A40\u09E8"+
+        "\u0FC8\u0BB0\u1A50\u0AA8\u0338\u0C10\u01A8\u1A60\u0458\u0FD8\u01F0\u0118"+
+        "\u1A70\u1A80\u0358 \u1A90\u0A70\u0F08\u0398\u0468\u03A8\u0310\u80A8\u8628"+
+        "\u80B8\u8638\000\000\u8648\u8148\u8158\u8198\u8658\u3F00\u3F58\u8668\u8678"+
+        "\u8688\u8698\u86A8\u86B8\u86C8\u86D8\u4078\u3C20\u3C30\u3C40\u3C50\u3C60"+
+        "\u3C70\u3C80\u3C90\u3CA0\u3CB0\u3CC0\u3CD0\u3CE0\u3CF0\u3D00\u3D10\u3D20"+
+        "\u3D30\u3D40\u3D50\u3D60\u3D70\u3D80\u3D90\u3DA0\u3DB0\u3DC0\u3DD0\u3DE0"+
+        "\u3DF0\u3E00\u3E10\u3E20\u3E30\u3E40\u3E50\u3E60\u3E70\u3E80\u3E90\u3EA0"+
+        "\u3EB0\u3EC0\u3ED0\u4018\u2858\u2870\u2BB0\u2880\u2890\u28A0\u28B0\u28C0"+
+        "\u28D0\u28E0\u28F0\u2900\u2910\u2920\u2930\u2940\u2950\u2960\u2970\u2980"+
+        "\u2990\u29A0\u29B0\u29C0\u29D0\u29E0\u29F0\u2A00\u2A10\u2A20\u2A30\u2A40"+
+        "\u2A50\000\000\000\u2A60\u2A70\u2A80\u2A90\u2AA0\u2AB0\000\000\u2AC0\u2AD0"+
+        "\u2AE0\u2AF0\u2B00\u2B10\000\000\u2B20\u2B30\u2B40\u2B50\u2B60\u2B70\000"+
+        "\000\u2B80\u2B90\u2BA0\000\000\000\u86E8\u86F8\u8708\u0090\u8718\u8728"+
+        "\u8738\000\u8748\u8758\u8768\u8778\u8788\u8798\u87A8\uA5A5\021\000"
+        );
+
+    static final CompactCharArray actions = new CompactCharArray(
+        "\000\u0800\uA5A5 \000 @`\u0080\u00A0\u00C0\u00E0\000\u0100\u0120\u0140"+
+        "\uA5A5\007\000\u0160\u0180\u01A0\u01C0\uA5A5\012\000\u01E0\u0200\u0220"+
+        "\u0240\u0260\u0280\u02A0\000\u02C0\u02E0\u0300\uA5A5\007\000\u0320\u0340"+
+        "\u0360\u0380\uA5A5\012\000\u03A0\u03C0\uA5A5\015\000\u03E0\u0400\u0420"+
+        "\uA5A5\016\000\u0440\u0460\u0480\u04A0\000\000\u04C0\uA5A5\031\000\u04E0"+
+        "\u0500\u0520\u0540\000\000\000\u0560\u0580\u05A0\u05C0\000\000\u05E0\u0600"+
+        "\uA5A5\006\000\u0620\uA5A5\012\000\u0640\u0660\uA5A5\006\000\u0680\u06A0"+
+        "\u06C0\uA5A5\004\000\u06E0\uA5A5\005\000\u0700\uA5A5\012\000\u0720\u0740"+
+        "\000\000\000\u0760\uA5A5\010\000\u0780\uA5A5\021\000\u07A0\u07C0\u07E0"+
+        "\u0800\000\u0820\000\000\u0840\u0860\u0880\uA5A5\025\000\u08A0\u08C0\u08E0"+
+        "\u0900\000\000\u0920\uA5A5\031\000\u0940\u0960\uA5A5\036\000\u0980\u09A0"+
+        "\uA5A5\007\000\u09C0\u09E0\uA5A5\025\000\u0A00\u0A20\u0A40\u0A60\000\000"+
+        "\u0A80\000\u0AA0\uA5A5\027\000\u0AC0\u0AE0\uA5A5\010\000\u0B00\uA5A5\025"+
+        "\000\u0B20\u0B40\uA5A5&\000\u0B60\u0B80\uA5A5\013\000\u0BA0\uA5A5\022"+
+        "\000\u0BC0\u0BE0\uA5A5\013\000\u0C00\uA5A5\012\000\u0C20\u0C40\u0C60\u0C80"+
+        "\000\u0CA0\u0CC0\u0CE0\u0D00\uA5A5\004\000\u0D20\u0D40\u0D60\000\u0D80"+
+        "\u0DA0\uA5A5\015\000\u0DC0\u0DE0\u0E00\u0E20\u0E40\u0E60\u0E80\u0EA0\u0EC0"+
+        "\000\000\000\u0EE0\u0F00\u0F20\u0F40\u0F60\u0F80\u0FA0\uA5A5\015\000\u0FC0"+
+        "\u0FE0\u1000\u1020\000\u1040\u1060\000\u1080\uA5A5\006\000\u10A0\000\000"+
+        "\u10C0\uA5A5\015\000\u10E0\u1100\u1120\u1140\000\000\u1160\u1180\u11A0"+
+        "\uA5A5\006\000\u11C0\u11E0\uA5A5\017\000\u1200\u1220\000\000\000\u1240"+
+        "\uA5A5\010\000\u1260\u1280\uA5A5\020\000\u12A0\u12C0\u12E0\u1300\u1320"+
+        "\u1340\000\u1360\u1380\000\000\000\u13A0\u13C0\u13E0\u1400\u1420\u1440"+
+        "\uA5A5\016\000\u1460\u1480\u14A0\u14C0\u14E0\u1500\u1520\u1540\u1560\000"+
+        "\000\000\u1580\u15A0\u15C0\u15E0\u1600\u1620\u1640\uA5A5\015\000\u1660"+
+        "\u1680\u16A0\u16C0\u16E0\u1700\u1720\u1740\u1760\000\000\000\u1780\u17A0"+
+        "\u17C0\u17E0\u1800\u1820\u1840\uA5A5\015\000\u1860\u1880\000\000\u18A0"+
+        "\000\000\000\u18C0\000\000\000\u18E0\uA5A5\023\000\u1900\u1920\u1940\u1960"+
+        "\u1980\u19A0\u19C0\u19E0\u1A00\000\000\000\u1A20\u1A40\000\u1A60\u1A80"+
+        "\u1AA0\u1AC0\uA5A5\015\000\u1AE0\u1B00\u1B20\u1B40\u1B60\u1B80\u1BA0\u1BC0"+
+        "\u1BE0\000\000\000\u1C00\u1C20\u1C40\u1C60\uA5A5\020\000\u1C80\uA5A5\024"+
+        "\000\u1CA0\u1CC0\uA5A5\011\000\u1CE0\uA5A5\010\000\u1D00\uA5A5\010\000"+
+        "\u1D20\u1D40\u1D60\u1D80\uA5A5\022\000\u1DA0\u1DC0\uA5A5\010\000\u1DE0"+
+        "\u1E00\u1E20\u1E40\uA5A5\024\000\u1E60\uA5A5\037\000\u1E80\uA5A5\037\000"+
+        "\u1EA0\uA5A5\037\000\u1EC0\uA5A5\037\000\u1EE0\uA5A5\037\000\u1F00\uA5A5"+
+        "\037\000\u1F20\uA5A5\037\000\u1F40\uA5A5\037\000\u1F60\u1F80\uA5A5\037"+
+        "\000\u1FA0\uA5A5\037\000\u1FC0\uA5A5\037\000\u1FE0\uA5A5\037\000\u2000"+
+        "\uA5A5\037\000\u2020\uA5A5\037\000\u2040\uA5A5\037\000\u2060\uA5A5\037"+
+        "\000\u2080\uA5A5\037\000\u20A0\uA5A5\037\000\u20C0\uA5A5\037\000\u20E0"+
+        "\uA5A5\037\000\u2100\uA5A5\037\000\u2120\uA5A5\037\000\u2140\uA5A5\037"+
+        "\000\u2160\uA5A5 \000\u2180\uA5A5\036\000\u21A0\uA5A5\037\000\u21C0\uA5A5"+
+        " \000\u21E0\uA5A5)\000\u2200\u2220\u2240\uA5A5\036\000\u2260\uA5A5h\000"
+        ,
+        "\000\u2280\uA5A5!\000\u1FED\uA5A5\005\000\u00C0\u1FCD\000\000\u1FDD\000"+
+        "\u00C8\000\000\000\u00CC\uA5A5\004\000\u01F8\u00D2\uA5A5\004\000\u00D9"+
+        "\000\u1E80\000\u1EF2\000\u00E0\000\000\000\u00E8\000\000\000\u00EC\uA5A5"+
+        "\004\000\u01F9\u00F2\uA5A5\004\000\u00F9\000\u1E81\000\u1EF3\000\000\000"+
+        "\u1EA6\uA5A5\007\000\u1EC0\uA5A5\010\000\u1ED2\uA5A5\006\000\u01DB\000"+
+        "\000\000\u1EA7\uA5A5\007\000\u1EC1\uA5A5\010\000\u1ED3\uA5A5\006\000\u01DC"+
+        "\uA5A5\004\000\u1EB0\u1EB1\uA5A5\012\000\u1E14\u1E15\uA5A5\035\000\u1E50"+
+        "\u1E51\uA5A5%\000\u1EDC\u1EDD\u1EEA\u1EEB\uA5A5.\000\u1FBA\u1FC8\u1FCA"+
+        "\u1FDA\u1FF8\000\u1FEA\u1FFA\000\000\u1F70\u1F72\u1F74\u1F76\u1F78\000"+
+        "\u1F7A\u1F7C\u1FD2\u1FE2\uA5A5\004\000\u0400\000\000\u040D\uA5A5\010\000"+
+        "\u0450\000\000\u045D\uA5A53\000\u1F02\u1F03\uA5A5\006\000\u1F0A\u1F0B"+
+        "\uA5A5\006\000\u1F12\u1F13\u1F1A\u1F1B\u1F22\u1F23\uA5A5\006\000\u1F2A"+
+        "\u1F2B\uA5A5\006\000\u1F32\u1F33\u1F3A\u1F3B\u1F42\u1F43\u1F4A\u1F4B\u1F52"+
+        "\u1F53\u1F5B\u1F62\u1F63\uA5A5\006\000\u1F6A\u1F6B\uA5A5\011\000\u1F82"+
+        "\u1F83\u1F8A\u1F8B\u1F92\u1F93\u1F9A\u1F9B\u1FA2\u1FA3\u1FAA\u1FAB\u1FB2"+
+        "\000\uFB90\u1FC2\000\uFEE1\u1FF2\000\uFF47\uA5A5\025\000\u0385\uA5A5\004"+
+        "\000\u03D3\u00C1\u1FCE\000\u0106\u1FDE\000\u00C9\000\u01F4\000\u00CD\000"+
+        "\u1E30\u0139\u1E3E\u0143\u00D3\u1E54\u0154\u015A\000\u00DA\000\u1E82\000"+
+        "\u00DD\u0179\u00E1\000\u0107\000\u00E9\000\u01F5\000\u00ED\000\u1E31\u013A"+
+        "\u1E3F\u0144\u00F3\u1E55\u0155\u015B\000\u00FA\000\u1E83\000\u00FD\u017A"+
+        "\000\000\u1EA4\000\000\u01FA\u01FC\u1E08\000\000\u1EBE\uA5A5\004\000\u1E2E"+
+        "\000\000\000\u1ED0\u1E4C\000\u01FE\000\000\000\u01D7\000\000\000\u1EA5"+
+        "\000\000\u01FB\u01FD\u1E09\000\000\u1EBF\uA5A5\004\000\u1E2F\000\000\000"+
+        "\u1ED1\u1E4D\000\u01FF\000\000\000\u01D8\uA5A5\004\000\u1EAE\u1EAF\uA5A5"+
+        "\012\000\u1E16\u1E17\uA5A5\035\000\u1E52\u1E53\uA5A5\020\000\u1E78\u1E79"+
+        "\uA5A5\023\000\u1EDA\u1EDB\u1EE8\u1EE9\uA5A5.\000\u0386\u0388\u0389\u038A"+
+        "\u038C\000\u038E\u038F\000\000\u03AC\u03AD\u03AE\u03AF\u03CC\000\u03CD"+
+        "\u03CE\u0390\u03B0\000\000\000\u0403\uA5A5\004\000\u040C\uA5A5\006\000"+
+        "\u0453\uA5A5\004\000\u045C\uA5A52\000\u1F04\u1F05\uA5A5\006\000\u1F0C"+
+        "\u1F0D\uA5A5\006\000\u1F14\u1F15\u1F1C\u1F1D\u1F24\u1F25\uA5A5\006\000"+
+        "\u1F2C\u1F2D\uA5A5\006\000\u1F34\u1F35\u1F3C\u1F3D\u1F44\u1F45\u1F4C\u1F4D"+
+        "\u1F54\u1F55\u1F5D\u1F64\u1F65\uA5A5\006\000\u1F6C\u1F6D\uA5A5\011\000"+
+        "\u1F84\u1F85\u1F8C\u1F8D\u1F94\u1F95\u1F9C\u1F9D\u1FA4\u1FA5\u1FAC\u1FAD"+
+        "\u1FB4\000\uFB8E\u1FC4\000\uFEE0\u1FF4\000\uFF45\uA5A5\033\000\u00C2\000"+
+        "\000\u0108\000\000\u00CA\000\u011C\u0124\u00CE\u0134\uA5A5\004\000\u00D4"+
+        "\000\000\u015C\000\u00DB\000\u0174\000\u0176\u1E90\u00E2\000\u0109\000"+
+        "\u00EA\000\u011D\u0125\u00EE\u0135\uA5A5\004\000\u00F4\000\000\u015D\000"+
+        "\u00FB\000\u0175\000\u0177\u1E91\uA5A5\042\000\u1EAC\u1EAD\uA5A5\026\000"+
+        "\u1EC6\u1EC7\uA5A5\022\000\u1ED8\u1ED9\uA5A5\034\000\u00C3\uA5A5\005\000"+
+        "\u1EBC\000\000\000\u0128\uA5A5\004\000\u00D1\u00D5\uA5A5\004\000\u0168"+
+        "\u1E7C\000\000\u1EF8\000\u00E3\000\000\000\u1EBD\000\000\000\u0129\uA5A5"+
+        "\004\000\u00F1\u00F5\uA5A5\004\000\u0169\u1E7D\000\000\u1EF9\000\000\000"+
+        "\u1EAA\uA5A5\007\000\u1EC4\uA5A5\010\000\u1ED6\uA5A5\012\000\u1EAB\uA5A5"+
+        "\007\000\u1EC5\uA5A5\010\000\u1ED7\uA5A5\013\000\u1EB4\u1EB5\uA5A5\020"+
+        "\000\u1EE0\u1EE1\u1EEE\u1EEF\uA5A5\033\000\u0100\uA5A5\005\000\u0112\000"+
+        "\u1E20\000\u012A\uA5A5\005\000\u014C\uA5A5\004\000\u016A\000\000\000\u0232"+
+        "\000\u0101\000\000\000\u0113\000\u1E21\000\u012B\uA5A5\005\000\u014D\uA5A5"+
+        "\004\000\u016B\000\000\000\u0233\uA5A5\005\000\u01DE\000\u01E2\uA5A5\015"+
+        "\000\u022C\u022A\uA5A5\004\000\u01D5\uA5A5\005\000\u01DF\000\u01E3\uA5A5"+
+        "\015\000\u022D\u022B\uA5A5\004\000\u01D6\uA5A5\023\000\u01EC\u01ED\uA5A5"+
+        "$\000\u01E0\u01E1\uA5A5\006\000\u0230\u0231\uA5A5\005\000\u1FB9\000\000"+
+        "\u1FD9\000\000\u1FE9\000\000\000\u1FB1\000\000\u1FD1\000\000\u1FE1\uA5A5"+
+        "\012\000\u04E2\000\000\u04EE\uA5A5\010\000\u04E3\000\000\u04EF\uA5A5&"+
+        "\000\u1E38\u1E39\uA5A5\034\000\u1E5C\u1E5D\uA5A5\030\000\uFC52\000\uFB8C"+
+        "\uA5A5!\000\u0102\uA5A5\005\000\u0114\000\u011E\000\u012C\uA5A5\005\000"+
+        "\u014E\uA5A5\004\000\u016C\uA5A5\005\000\u0103\000\000\000\u0115\000\u011F"+
+        "\000\u012D\uA5A5\005\000\u014F\uA5A5\004\000\u016D\uA5A5\027\000\u1E1C"+
+        "\u1E1D\uA5A5\013\000\u1FB8\000\000\u1FD8\000\000\u1FE8\000\000\000\u1FB0"+
+        "\000\000\u1FD0\000\000\u1FE0\uA5A5\005\000\u04D0\000\u04D6\u04C1\000\u0419"+
+        "\000\000\u040E\000\000\000\u04D1\000\u04D7\u04C2\000\u0439\000\000\u045E"+
+        "\uA5A58\000\u1EB6\u1EB7\uA5A5\004\000\uFC4F\000\uFB8A\uA5A5\036\000\u1E9B"+
+        "\000\000\u0226\000\u1E02\u010A\000\u1E0A\u0116\u1E1E\u0120\u1E22\u0130"+
+        "\000\000\000\u1E40\u1E44\u022E\u1E56\u1E58\u1E60\u1E6A\000\000\u1E86\u1E8A"+
+        "\u1E8E\u017B\u0227\u1E03\u010B\u1E0B\u0117\u1E1F\u0121\u1E23\uA5A5\004"+
+        "\000\u1E41\u1E45\u022F\u1E57\u1E59\u1E61\u1E6B\000\000\u1E87\u1E8B\u1E8F"+
+        "\u017C\uA5A5\020\000\u1E64\u1E65\000\000\u1E66\u1E67\uA5A5 \000\u1E68"+
+        "\u1E69\uA5A5\023\000\u03D4\u00C4\uA5A5\005\000\u00CB\000\000\u1E26\u00CF"+
+        "\uA5A5\005\000\u00D6\uA5A5\004\000\u00DC\000\u1E84\u1E8C\u0178\000\u00E4"+
+        "\000\000\000\u00EB\000\000\u1E27\u00EF\uA5A5\005\000\u00F6\000\000\000"+
+        "\u1E97\u00FC\000\u1E85\u1E8D\u00FF\uA5A5\025\000\u1E4E\uA5A5\033\000\u1E4F"+
+        "\uA5A5)\000\u1E7A\u1E7B\uA5A5&\000\u03AA\000\000\u03AB\uA5A5\006\000\u03CA"+
+        "\000\000\u03CB\uA5A5\004\000\u0407\u04D2\000\u0401\u04DC\u04DE\u04E4\000"+
+        "\u04E6\u04F0\u04F4\u04F8\u04EC\u04D3\000\u0451\u04DD\u04DF\u04E5\000\u04E7"+
+        "\u04F1\u04F5\u04F9\u04ED\u0457\000\000\u04DA\u04DB\u04EA\u04EB\uA5A5\030"+
+        "\000\u1EA2\uA5A5\005\000\u1EBA\000\000\000\u1EC8\uA5A5\005\000\u1ECE\uA5A5"+
+        "\004\000\u1EE6\000\000\000\u1EF6\000\u1EA3\000\000\000\u1EBB\000\000\000"+
+        "\u1EC9\uA5A5\005\000\u1ECF\uA5A5\004\000\u1EE7\000\000\000\u1EF7\000\000"+
+        "\000\u1EA8\uA5A5\007\000\u1EC2\uA5A5\010\000\u1ED4\uA5A5\012\000\u1EA9"+
+        "\uA5A5\007\000\u1EC3\uA5A5\010\000\u1ED5\uA5A5\013\000\u1EB2\u1EB3\uA5A5"+
+        "\020\000\u1EDE\u1EDF\u1EEC\u1EED\uA5A5\033\000\u00C5\uA5A5\024\000\u016E"+
+        "\uA5A5\005\000\u00E5\uA5A5\022\000\u016F\000\u1E98\000\u1E99\uA5A5\035"+
+        "\000\u0150\uA5A5\004\000\u0170\uA5A5\023\000\u0151\uA5A5\004\000\u0171"+
+        "\uA5A5\042\000\u04F2\uA5A5\013\000\u04F3\uA5A5\042\000\u01CD\000\000\u010C"+
+        "\000\u010E\u011A\000\u01E6\u021E\u01CF\000\u01E8\u013D\000\u0147\u01D1"+
+        "\000\u0158\u0160\u0164\u01D3\uA5A5\004\000\u017D\u01CE\000\u010D\u010F"+
+        "\u011B\000\u01E7\u021F\u01D0\u01F0\u01E9\u013E\000\u0148\u01D2\000\u0159"+
+        "\u0161\u0165\u01D4\uA5A5\004\000\u017E\uA5A5\032\000\u01D9\uA5A5\033\000"+
+        "\u01DA\uA5A5\032\000\u01EE\uA5A5,\000\u01EF\uA5A5\015\000\u0200\uA5A5"+
+        "\005\000\u0204\000\000\000\u0208\uA5A5\005\000\u020C\000\u0210\000\000"+
+        "\u0214\uA5A5\005\000\u0201\000\000\000\u0205\000\000\000\u0209\uA5A5\005"+
+        "\000\u020D\000\u0211\000\000\u0215\uA5A5\023\000\u0476\u0477\uA5A5\034"+
+        "\000\u0202\uA5A5\005\000\u0206\000\000\000\u020A\uA5A5\005\000\u020E\000"+
+        "\u0212\000\000\u0216\uA5A5\005\000\u0203\000\000\000\u0207\000\000\000"+
+        "\u020B\uA5A5\005\000\u020F\000\u0213\000\000\u0217\uA5A5$\000\u1F08\u1F18"+
+        "\u1F28\u1F38\u1F48\000\000\u1F68\000\000\u1F00\u1F10\u1F20\u1F30\u1F40"+
+        "\u1FE4\u1F50\u1F60\uA5A5\027\000\u1F80\000\u1F88\u1F90\000\u1F98\u1FA0"+
+        "\000\u1FA8\uA5A5.\000\u1F09\u1F19\u1F29\u1F39\u1F49\u1FEC\u1F59\u1F69"+
+        "\000\000\u1F01\u1F11\u1F21\u1F31\u1F41\u1FE5\u1F51\u1F61\uA5A5\027\000"+
+        "\u1F81\000\u1F89\u1F91\000\u1F99\u1FA1\000\u1FA9\uA5A5+\000\u01A0\uA5A5"+
+        "\004\000\u01AF\uA5A5\023\000\u01A1\uA5A5\004\000\u01B0\uA5A5\026\000\u1EDC"+
+        "\u1EDA\uFD36\u1EE0\uFD08\000\u1EEA\u1EE8\uFC9E\uFC7F\uA5A5\022\000\u1EDD"+
+        "\u1EDB\uFF2B\u1EE1\uFEF9\000\u1EEB\u1EE9\uFE9B\uFE83\uA5A5\017\000\uFBEB"+
+        "\uFBD4\uFBC4\uFBAD\uFB97\uFB81\uA5A5\014\000\u1EEE\u1EEF\uFE11\uFDF3\uFDD6"+
+        "\uFDBA\uFDA2\uFD8A\uFD6C\uFD51\uA5A5\024\000\uFE4E\uFE33\uFE18\uFDFA\uFDDE"+
+        "\uFDC1\uFDA7\uFD8E\uFD71\uFD56\uFD38\uFD21\uA5A5\034\000\uFD9E\uFD85\uFD68"+
+        "\uFD4C\uA5A5\004\000\uFCE5\uFCD1\uFCB4\uFC95\uA5A5\012\000\uFF9E\uFF8B"+
+        "\uFF77\uFF64\uFF4F\uFF39\uFF23\uFF0B\uA5A5(\000\uFB79\uFB66\uFB58\uFB44"+
+        "\uFB2E\uFB1E\uFF9C\uFF8A\uA5A5\032\000\uFCC5\uFCA5\uFC85\uFC6D\uFC5E\uFC47"+
+        "\uFC34\uFC1F\uFC06\uFBED\uA5A5\036\000\u1EE2\u1EE3\u1EDE\u1EDF\uFDCE\uFDB2"+
+        "\uFD98\uFD7D\uFD60\uFD45\uFD2B\uFD12\uFD00\uFCF0\uA5A5\012\000\u1EF0\u1EF1"+
+        "\u1EEC\u1EED\uA5A5\042\000\u1EA0\000\u1E04\000\000\u1E0C\u1EB8\000\000"+
+        "\u1E24\u1ECA\000\u1E32\u1E36\u1E42\u1E46\u1ECC\000\u1E5A\u1E62\u1E6C\u1EE4"+
+        "\u1E7E\u1E88\000\u1EF4\u1E92\u1EA1\u1E05\000\u1E0D\u1EB9\000\000\u1E25"+
+        "\u1ECB\000\u1E33\u1E37\u1E43\u1E47\u1ECD\000\u1E5B\u1E63\u1E6D\u1EE5\u1E7F"+
+        "\u1E89\000\u1EF5\u1E93\uFF11\uFEFC\u1EAC\uFED2\uFEBD\uFEAC\000\000\uFE6D"+
+        "\uFE5B\u1EC6\uFE2D\uFE0E\uFDF0\uFDD3\uFDB7\uFD86\uFD69\uFD4D\u1ED8\uFD19"+
+        "\uFD05\000\uFCD3\uFCB6\uFC97\uFC7B\uFC67\uFC2A\uFC12\u1EAD\uFBE0\uFBCE"+
+        "\uFBBB\000\000\uFB7A\uFB67\u1EC7\uFB45\uFB2F\uFB20\uFF9F\uFF8C\uFF65\uFF50"+
+        "\uFF3A\u1ED9\uFF0C\uFEF5\000\uFEB6\uFEA7\uFE95\uFE7C\uFE66\uFE3D\uFE22"+
+        "\uFE03\u1EB6\u1EB7\uA5A5\010\000\uFCC7\uFCA7\uFC60\uFC49\uFC36\uFC20\uFC08"+
+        "\uFBF0\uFBB2\uFB9B\uA5A5\006\000\uFF82\uFF71\uFF30\uFF19\uFF03\uFEEE\uFED8"+
+        "\uFEC3\uFE8B\uFDA4\uFD8C\uFD35\uFD1F\uFCBC\uFC9C\uFC56\uFC40\uFBE3\uFBD0"+
+        "\uFBC0\uFBA7\uFB92\uFB7D\uFB47\uFB31\uFF8E\uFF79\uFF6A\uFF54\uFF40\uFF2A"+
+        "\uFEE6\uFECF\uFE9A\uFE82\uFE46\uFE29\uFE0B\uFDEE\uFDD1\uFDB5\uFD9B\uFD80"+
+        "\uFD64\uFD49\uFD03\uFCF2\uFCE2\uFCCE\uFCB0\uFC91\uFC77\uFC64\uFC4D\uFC39"+
+        "\uFC25\u1EE2\u1EE3\u1EF0\u1EF1\000\uFE9E\uFE88\uFE6F\uFE5C\uFE4A\uFE2E"+
+        "\uFE10\uFDF2\uFDD5\uFDB9\uFDA0\uFD88\uFD6B\uFD50\uFD32\uFD1B\uFCF6\uFCE7"+
+        "\uFCD5\uFCB8\000\000\uFC13\uFBFA\uA5A5\004\000\uFF66\uFF51\uFF3D\uFF26"+
+        "\uFEB8\uFEA9\uFE97\uFE7E\uFE69\uFE56\uFE41\uFE26\uFE07\uFDEA\uFDCC\uFDB0"+
+        "\uFD96\uFD7B\uFD5E\uFD42\uFD28\uFD0F\uFCFE\uFCEE\uFCDF\uFCCA\uFCAB\uFC8B"+
+        "\uA5A5\004\000\uFBF1\uFBD7\uFB52\uFB3C\000\000\uFF97\uFF84\uFF72\uFF5C"+
+        "\uFF46\uFF32\uFF1C\uFF05\uFEEF\uFEDA\uA5A5\014\000\uFD4F\uFD31\uFC98\uFC7C"+
+        "\uA5A5\006\000\uFBBC\uFBA2\uFB8D\uFB7B\uA5A5\006\000\uFF3C\uFF25\000\000"+
+        "\uFEDF\uFECA\uA5A5\004\000\uFE3E\uFE23\uFE05\uFDE8\uA5A5\014\000\uFCA9"+
+        "\uFC89\uFC71\uFC61\uFC21\uFC09\uA5A5\006\000\uFB6F\uFB5F\uFB50\uFB3A\uFB27"+
+        "\uFFA7\uFF96\uFF83\uFF1A\uFF04\uA5A5\006\000\u1E68\u1E69\000\000\uFE16"+
+        "\uFDF8\uFDDB\uFDBE\000\000\uFD6F\uFD54\uA5A5\014\000\uFC2E\uFC18\uFBFF"+
+        "\uFBE5\uFBD1\uFBC1\uFB7E\uFB68\uFB59\uFB48\uFB32\uFB21\uFFA0\uFF8F\uFEFA"+
+        "\uFEE7\uFED0\uFEBB\000\uFE48\uFE2B\uFE0C\000\000\uFD16\uFD04\uFCF3\uFCE3"+
+        "\uFCCF\uFCB1\uFC92\uFC78\uFC65\uFC4E\000\000\uFC0E\uFBF6\uFBDC\uFBCB\uFBB8"+
+        "\uFBA0\uFB89\uFB77\uA5A5\004\000\uFB1D\uFF9B\uFF89\uFF76\uFF61\uFF4C\uFF36"+
+        "\uFF20\uFF09\uFEF3\uFEDD\uFEC8\000\000\uFE90\uFE77\uA5A5\004\000\uFDFD"+
+        "\uFDE1\uFDC4\uFDA9\uFD90\uFD73\uFD58\uFD3B\uFD23\uFD0B\000\000\uFCDB\uFCC2"+
+        "\uFCA3\uFC83\uFC6C\uFC5D\uFC46\uFC33\uA5A5\004\000\uFBC5\uFBAE\uFB98\uFB82"+
+        "\uFB6B\uFB5C\uFB4B\uFB35\uFB24\uFFA4\000\000\uFF6E\uFF56\uFF14\uFEFF\uFEEB"+
+        "\uFED5\uA5A5'\000\u1E72\uA5A5\030\000\u1E73\uA5A5\034\000\uFCD2\uFCB5"+
+        "\uFC96\uFC7A\uA5A5\030\000\uFEB5\uFEA6\uFE94\uFE7B\uA5A5!\000\uFE44\uFE27"+
+        "\uFE09\uFDEC\uFDCF\uFDB3\uFD9A\uFD7F\uFD62\uFD47\uA5A5\026\000\uFE0F\uFDF1"+
+        "\uFDD4\uFDB8\uFD9F\uFD87\uFD6A\uFD4E\uFD30\uFD1A\uA5A5\004\000\uFCDE\uFCC8"+
+        "\uFCA8\uFC88\uA5A5\042\000\uFC2D\uFC17\uFBFE\uFBE4\uA5A5\030\000\uFBC3"+
+        "\uFBAB\uA5A5\042\000\u1E00\uA5A5\032\000\u1E01\uA5A5\030\000\uFF10\uFEFB"+
+        "\uFEE8\uFED1\uFEBC\uFEAB\uA5A5\026\000\uFC28\uFC10\uFBF8\uFBDF\uFBCD\uFBBA"+
+        "\uA5A5\027\000\uFE1F\uFE01\uFDE5\uFDC8\uA5A5\025\000\uFE9D\uFE85\uA5A5"+
+        "\016\000\uFCF5\uFCE6\uFCD4\uFCB7\uA5A5\012\000\uFF3B\uFF24\uFEB7\uFEA8"+
+        "\uFE96\uFE7D\uA5A5\032\000\uFB4F\uFB39\uA5A52\000\uFD14\uFD01\uFCF1\uFCE1"+
+        "\uFCCC\uFCAE\uFC8F\uFC75\uFC63\uFC4C\000\000\uFC0B\uFBF3\uFBD9\uFBC9\uFBB5"+
+        "\uFB9E\uFB87\uFB73\uA5A5'\000\u0218\u021A\uA5A5\027\000\u0219\u021B\uA5A5"+
+        "\026\000\uFF68\uFF53\uFF3F\uFF28\uFEE3\uFECC\uFE99\uFE80\uA5A5\034\000"+
+        "\uFE71\uFE5E\000\000\uFE13\uFDF5\uFDD8\uFDBC\000\000\uFD6E\uFD53\uA5A5"+
+        "\037\000\uFE43\uA5A5\017\000\u00C7\000\u1E10\u0228\000\u0122\u1E28\000"+
+        "\000\u0136\u013B\000\u0145\000\000\u0156\u015E\u0162\uA5A5\010\000\u00E7"+
+        "\u1E11\u0229\000\u0123\u1E29\000\000\u0137\u013C\000\u0146\000\000\u0157"+
+        "\u015F\u0163\uA5A5\016\000\uFE6B\uFE59\uFE47\uFE2A\uA5A5\004\000\uFD82"+
+        "\uA5A5\023\000\uFB76\uFB64\uFB56\uFB42\uA5A5\004\000\uFF60\uA5A5\020\000"+
+        "\u1E08\u1E09\uFD3A\uFD22\uFD0A\uFCFB\uFCEB\uFCDA\uFCC1\uFCA2\uFC5C\uFC45"+
+        "\u1E1C\u1E1D\uFC04\uFBEA\uFBAC\uFB96\uFB80\uFB6C\uFB5D\uFB4C\uFB36\uFB25"+
+        "\uFF7E\uFF6D\uA5A5\007\000\uFDA1\uFD89\uFD33\uFD1C\uFCBA\uFC9A\uFC54\uFC3E"+
+        "\uA5A5\006\000\uFB46\uFB30\uFF8D\uFF78\uFF67\uFF52\uFF3E\uFF27\uFEE2\uFECB"+
+        "\uFE98\uFE7F\uA5A5\016\000\uFC3C\uFC29\uFC11\uFBF9\000\000\uFB1F\uFF9D"+
+        "\uFF63\uFF4E\uA5A5\006\000\uFE64\uFE52\uFE3B\uFE20\uA5A5\010\000\uFD25"+
+        "\uFD0D\uFCFD\uFCED\uA5A5\004\000\uFC6E\uFC5F\uFC48\uFC35\uFBEE\uFBD6\uA5A5"+
+        "\034\000\uFC94\uFC79\uFC66\uFC51\uFC3B\uFC26\uFBDD\uFBCC\uFBB9\uFBA1\uFB8B"+
+        "\uFB78\uFB65\uFB57\uFB43\uFB2D\uFF62\uFF4D\uFF38\uFF22\uFF0A\uFEF4\uFEDE"+
+        "\uFEC9\uFE93\uFE7A\uA5A5\004\000\uFE00\uFDE4\uFDC7\uFDAC\uFD93\uFD76\uFD5B"+
+        "\uFD3E\uFD24\uFD0C\uFCFC\uFCEC\uFCDD\uFCC4\uA5A5\004\000\uFC1E\uFC05\uFBEC"+
+        "\uFBD5\uFBC6\uFBAF\uFB99\uFB83\uA5A5\010\000\uFF16\uFF01\uFEEC\uFED6\uFEC0"+
+        "\uFEAD\uFE9F\uFE89\uFE70\uFE5D\uFE4B\uFE2F\uFE12\uFDF4\uFDD7\uFDBB\uFDA3"+
+        "\uFD8B\uFD6D\uFD52\uFD34\uFD1D\uFD06\uFCF7\uFCE8\uFCD6\uA5A5\030\000\uFE57"+
+        "\uFE42\uA5A5\032\000\uFB3E\uFB29\uFFA9\uFF99\uFF86\uFF74\uFF5F\uFF4A\uFF34"+
+        "\uFF1E\uFF07\uFEF1\uFEDC\uFEC6\uFEB1\uFEA3\uA5A5\042\000\u0104\uA5A5\005"+
+        "\000\u0118\000\000\000\u012E\uA5A5\005\000\u01EA\uA5A5\004\000\u0172\uA5A5"+
+        "\005\000\u0105\000\000\000\u0119\000\000\000\u012F\uA5A5\005\000\u01EB"+
+        "\uA5A5\004\000\u0173\uA5A5\005\000\uFF0F\uFEF8\uFEE5\uFECE\uFEBA\uFEAA"+
+        "\000\000\uFE6A\uFE58\uFE45\uFE28\uFE0A\uFDED\uFDD0\uFDB4\000\uFD63\uFD48"+
+        "\uFD2D\uFD15\uFD02\000\uFCCD\uFCAF\uFC90\uFC76\000\uFC24\uFC0D\uFBF5\uFBDB"+
+        "\uFBCA\uFBB6\000\000\uFB74\uFB62\uFB54\uFB40\uFB2B\uFFAA\uFF9A\uFF88\000"+
+        "\uFF4B\uFF35\uFF1F\uFF08\uFEF2\000\uFEB3\uFEA4\uFE8F\uFE76\000\000\uFE1B"+
+        "\uFDFC\uFDE0\uFDC3\uA5A5\012\000\uFC5B\uFC44\uFC32\uFC1D\uFC03\uFBE9\uFBAA"+
+        "\uFB95\uA5A5\010\000\uFF2D\uFF13\uFEFE\uFEEA\uFED4\uFEBF\uFE87\uA5A5\010"+
+        "\000\u01EC\u01ED\uFBBE\uFBA4\uFB8F\uFB7C\uA5A5\014\000\uFE40\uFE25\uFE06"+
+        "\uFDE9\uFDCB\uFDAF\uFD95\uFD7A\uFD5D\uFD41\uA5A5\013\000\uFDDC\uFDBF\uFC69"+
+        "\uFC58\000\uFE9C\uFE84\uFE6C\uFE5A\uFE49\uFE2C\uFE0D\uFDEF\uFDD2\uFDB6"+
+        "\uFD9D\uFD84\uFD66\uFD4A\uFD2F\uFD18\uFCF4\uFCE4\uFCD0\uFCB3\uA5A5\012"+
+        "\000\uFF37\uFF21\uFEB4\uFEA5\uFE92\uFE79\uFE63\uFE51\uFE39\uFE1E\uFDFF"+
+        "\uFDE3\uFDC6\uFDAB\uFD92\uFD75\uFD5A\uFD3D\uA5A5\004\000\uFCDC\uFCC3\uFCA4"+
+        "\uFC84\uA5A5\006\000\uFB4D\uFB37\000\000\uFF93\uFF7F\uFF6F\uFF57\uFF42"+
+        "\uFF2E\uFF15\uFF00\uA5A5\014\000\uFD81\uFD65\uA5A5\012\000\uFBB7\uFB9F"+
+        "\uFB88\uFB75\uFB63\uFB55\uFB41\uFB2C\uA5A5\012\000\uFE62\uFE50\uFE37\uFE1C"+
+        "\uA5A5\032\000\uFB6A\uFB5B\uFB4A\uFB34\uFB23\uFFA3\uFF92\uFF7D\uA5A5\032"+
+        "\000\uFCB9\uFC99\uFC7D\uFC68\uFC53\uFC3D\uFC2B\uFC14\uFBFB\uFBE1\uA5A5"+
+        "\022\000\uFD43\uFD29\uFD10\uFCFF\uFCEF\uFCE0\uFCCB\uFCAC\uFC8D\uFC74\uFC62"+
+        "\uFC4A\uFC37\uFC22\uFC0A\uFBF2\uFBD8\uFBC8\uFBB4\uFB9D\uFB86\uFB72\uFB61"+
+        "\uFB53\uFB3D\uFB28\uFFA8\uFF98\uFF85\uFF73\uFF5D\uFF48\uFF33\uFF1D\uFF06"+
+        "\uFEF0\uFEDB\uFEC5\uFEB0\uFEA2\uFE8D\uFE74\uFE60\uFE4D\uFE32\uFE17\uFDF9"+
+        "\uFDDD\uFDC0\uFDA6\uFD8D\uFD70\uFD55\uFD37\uFD20\uFD09\uFCFA\uFCEA\uFCD8"+
+        "\uFCBF\uFCA0\uFC80\uFC6A\uFC59\uFC42\uFC30\uFC1B\uFC02\uFBE8\uFBD3\uFBC2"+
+        "\uFBA9\uFB94\uFB7F\uFB69\uFB5A\uFB49\uFB33\uFB22\uFFA1\uFF90\uFF7B\uA5A5"+
+        "\035\000\u1E12\u1E18\uA5A5\006\000\u1E3C\000\u1E4A\uA5A5\004\000\u1E70"+
+        "\u1E76\uA5A5\010\000\u1E13\u1E19\uA5A5\006\000\u1E3D\000\u1E4B\uA5A5\004"+
+        "\000\u1E71\u1E77\uA5A5\015\000\uFE68\uFE55\uFE3F\uFE24\uA5A5\004\000\uFD79"+
+        "\uA5A5\006\000\uFCC9\uFCAA\uFC8A\uFC72\uA5A5\011\000\uFB70\uFB60\uFB51"+
+        "\uFB3B\uA5A5\004\000\uFF5B\uA5A5\006\000\uFEAF\uFEA1\uFE8C\uFE73\uA5A5"+
+        "\016\000\uFCBE\uFC9F\uFC57\uFC41\uFC2F\uFC19\uFC00\uFBE6\uFBA8\uFB93\uA5A5"+
+        "\017\000\uFD9C\uFD83\uFD2E\uFD17\uFCB2\uFC93\uFC50\uFC3A\uA5A5\020\000"+
+        "\uFE91\uFE78\uFE38\uFE1D\uFDFE\uFDE2\uFDC5\uFDAA\uFD91\uFD74\uFD59\uFD3C"+
+        "\uA5A5\026\000\uFE08\uFDEB\uFDCD\uFDB1\uFD97\uFD7C\uFD5F\uFD44\uFD2A\uFD11"+
+        "\uA5A5\014\000\uFF5E\uFF49\uA5A5\006\000\uFE61\uFE4F\uFE34\uFE19\uA5A5"+
+        "\014\000\uFCD9\uFCC0\uFCA1\uFC81\uA5A5\042\000\uFC8C\uFC73\uA5A5\006\000"+
+        "\uFBB3\uFB9C\uFB85\uFB71\uA5A5$\000\uFC1A\uFC01\uA5A5 \000\uFD67\uFD4B"+
+        "\uA5A5\014\000\uFC27\uFC0F\uFBF7\uFBDE\uA5A5\017\000\uFE3A\uA5A5\034\000"+
+        "\uFFA5\uFF94\uFF80\uFF70\uFF59\uFF43\uFF2F\uFF17\uFF02\uFEED\uFED7\uFEC1"+
+        "\uA5A5 \000\uFBBF\uFBA5\uA5A5+\000\u1E2A\uA5A5\030\000\u1E2B\uA5A5&\000"+
+        "\uFF7A\uFF6B\uA5A5\027\000\uFBE7\uFBD2\uA5A5.\000\uFF31\uFF1B\000\000"+
+        "\uFED9\uFEC4\uA5A5\016\000\u1E1A\000\000\000\u1E2C\uA5A5\012\000\u1E74"+
+        "\uA5A5\011\000\u1E1B\000\000\000\u1E2D\uA5A5\012\000\u1E75\uA5A5\015\000"+
+        "\uFE65\uFE53\uFE3C\uFE21\uFE02\uFDE6\uFDC9\uFDAD\uA5A5\007\000\uFCC6\uFCA6"+
+        "\uFC87\uFC70\uA5A5\011\000\uFB6D\uFB5E\uFB4E\uFB38\uFB26\uFFA6\uFF95\uFF81"+
+        "\uA5A5\007\000\uFEAE\uFEA0\uFE8A\uFE72\uA5A5\020\000\uFC55\uFC3F\uFC2C"+
+        "\uFC16\uFBFD\uFBE2\uFBA6\uFB91\uA5A5\010\000\uFF29\uFF0E\uFEF7\uFEE4\uFECD"+
+        "\uFEB9\uFE81\uA5A5\032\000\uFE36\uFE1A\uFDFB\uFDDF\uFDC2\uFDA8\uFD8F\uFD72"+
+        "\uFD57\uFD39\uA5A5\022\000\uFE67\uFE54\000\000\uFE04\uFDE7\uFDCA\uFDAE"+
+        "\uFD94\uFD78\uFD5C\uFD40\uFD27\uFD0E\uA5A5\024\000\uFE5F\uFE4C\uFE31\uFE15"+
+        "\uFDF7\uFDDA\uFDBD\uFDA5\uA5A5\010\000\uFCD7\uFCBD\uFC9D\uFC7E\uA5A5*"+
+        "\000\uFBB1\uFB9A\uFB84\uFB6E\uA5A5\020\000\uFE30\uFE14\uA5A5\042\000\uFC23"+
+        "\uFC0C\uFBF4\uFBDA\uA5A5,\000\uFFA2\uFF91\uFF7C\uFF6C\uFF55\uFF41\uFF2C"+
+        "\uFF12\uFEFD\uFEE9\uFED3\uFEBE\000\000\uFE86\uFE6E\uA5A5\034\000\uFBBD"+
+        "\uFBA3\uA5A5$\000\u1E06\000\000\u1E0E\uA5A5\006\000\u1E34\u1E3A\000\u1E48"+
+        "\000\000\u1E5E\000\u1E6E\uA5A5\005\000\u1E94\000\u1E07\000\u1E0F\000\000"+
+        "\000\u1E96\000\000\u1E35\u1E3B\000\u1E49\000\000\u1E5F\000\u1E6F\uA5A5"+
+        "\005\000\u1E95\uA5A5\020\000\uFD77\uA5A5\033\000\uFF58\uA5A5\030\000\uFCBB"+
+        "\uFC9B\uA5A5\017\000\uFF69\uA5A5\007\000\uFD99\uFD7E\uFD2C\uFD13\uFCAD"+
+        "\uFC8E\uFC4B\uFC38\uA5A5\006\000\uFB3F\uFB2A\uFF87\uFF75\uA5A5\006\000"+
+        "\uFE8E\uFE75\uA5A5\017\000\uFC82\uFC6B\uFC5A\uFC43\uFC31\uFC1C\uA5A5\033"+
+        "\000\uFC07\uFBEF\uA5A5\004\000\uFF5A\uFF44\uA5A5\022\000\uFD1E\uFD07\uFCF9"+
+        "\uFCE9\uA5A5\011\000\uFBCF\uA5A5\032\000\uFD3F\uFD26\uFC86\uFC6F\uA5A5"+
+        "\021\000\uFF18\000\000\000\uFEC2\uA5A5\006\000\uFDF6\uFDD9\uA5A5\020\000"+
+        "\uFC15\uFBFC\uA5A5\016\000\uFF0D\uFEF6\uA5A5\020\000\uFD61\uFD46\uA5A5"+
+        "\034\000\uFEC7\uFEB2\000\uFE35\uA5A5\007\000\u226E\u2260\000\u226F\uA5A5"+
+        "&\000\u219A\u219B\u21AE\u21CD\u21CF\u21CE\u2204\u2209\u220C\u2224\u2226"+
+        "\u2241\u2244\u2247\u2249\u226D\u2262\u2270\u2271\u2274\u2275\u2278\u2279"+
+        "\u2280\u2281\u22E0\u22E1\u2284\u2285\u2288\u2289\u22E2\u22E3\u22AC\u22AD"+
+        "\u22AE\u22AF\u22EA\u22EB\u22EC\u22ED\uA5A5\014\000\u1FC1\uA5A5\006\000"+
+        "\u1FCF\000\000\u1FDF\uA5A5\030\000\u1FB6\000\u1FC6\u1FD6\000\000\u1FE6"+
+        "\u1FF6\u1FD7\u1FE7\uA5A5'\000\u1F06\u1F07\uA5A5\006\000\u1F0E\u1F0F\uA5A5"+
+        "\012\000\u1F26\u1F27\uA5A5\006\000\u1F2E\u1F2F\uA5A5\006\000\u1F36\u1F37"+
+        "\u1F3E\u1F3F\uA5A5\004\000\u1F56\u1F57\u1F5F\u1F66\u1F67\uA5A5\006\000"+
+        "\u1F6E\u1F6F\uA5A5\011\000\u1F86\u1F87\u1F8E\u1F8F\u1F96\u1F97\u1F9E\u1F9F"+
+        "\u1FA6\u1FA7\u1FAE\u1FAF\u1FB7\000\000\u1FC7\000\000\u1FF7\uA5A50\000"+
+        "\u1FBC\000\u1FCC\uA5A5\004\000\u1FFC\u1FB4\u1FC4\u1FB3\000\u1FC3\uA5A5"+
+        "\004\000\u1FF3\000\000\u1FF4\uA5A5&\000\u1F80\u1F81\u1F82\u1F83\u1F84"+
+        "\u1F85\u1F86\u1F87\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\uA5A5"+
+        "\004\000\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1F98\u1F99\u1F9A"+
+        "\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\uA5A5\013\000\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4"+
+        "\u1FA5\u1FA6\u1FA7\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB2"+
+        "\u1FC2\u1FF2\uA5A5\015\000\u1FB7\000\000\u1FC7\000\000\u1FF7\uA5A5$\000"+
+        "\uFB1D\uA5A5\042\000\u0622\uA5A5\037\000\u0623\u0624\u0626\u06C2\u06D3"+
+        "\u06C0\uA5A5\030\000\uFBC7\uFBB0\u0625\uA5A5%\000\u0929\u0931\u0934\uA5A5"+
+        " \000\u09DC\u09DD\u09DF\uA5A5 \000\u09CB\uA5A5\037\000\u09CC\uA5A5 \000"+
+        "\u0A59\u0A5A\u0A5B\u0A5E\u0A33\u0A36\uA5A5 \000\u0B5C\u0B5D\uA5A5 \000"+
+        "\u0B4B\uA5A5\037\000\u0B48\uA5A5\037\000\u0B4C\uA5A5!\000\u0BCA\u0BCB"+
+        "\uA5A5\035\000\u0B94\u0BCC\uA5A5!\000\u0C48\uA5A5!\000\u0CCA\uA5A5\036"+
+        "\000\u0CC0\u0CC7\u0CCB\uA5A5\036\000\u0CC8\uA5A5!\000\u0D4A\u0D4B\uA5A5"+
+        "\036\000\u0D4C\uA5A5!\000\u0DDA\000\u0DDD\uA5A5\035\000\u0DDC\uA5A5\037"+
+        "\000\u0DDE\uFCF8\uA5A5\015\000\u0F76\u0F78\uA5A52\000\u0F69\uA5A5\005"+
+        "\000\u0FB9\uA5A5\032\000\u0F43\u0F4D\u0F52\u0F57\u0F5C\000\u0F93\u0F9D"+
+        "\u0FA2\u0FA7\u0FAC\000\000\u1026\uA5A52\000\u3094\u304C\u304E\u3050\u3052"+
+        "\u3054\u3056\u3058\u305A\u305C\u305E\u3060\u3062\u3065\u3067\u3069\u3070"+
+        "\u3073\u3076\u3079\u307C\u309E\u30F4\u30AC\u30AE\u30B0\u30B2\u30B4\u30B6"+
+        "\u30B8\u30BA\u30BC\u30BE\u30C0\u30C2\u30C5\u30C7\u30C9\u30D0\u30D3\u30D6"+
+        "\u30D9\u30DC\u30F7\u30F8\u30F9\u30FA\u30FE\uA5A5 \000\u3071\u3074\u3077"+
+        "\u307A\u307D\uA5A5\021\000\u30D1\u30D4\u30D7\u30DA\u30DD"
+        );
+
+    static final char[] actionIndex = Utility.RLEStringToCharArray(
+        "\000\u048E\u1407\u140A\u140E\u1411\u1414\u1417\u141B\u141E\u1421\u1424"+
+        "\u1427\u142B\u142E\u1431\u1434\u1437\u143A\u143D\u1441\u1444\u1447\u144A"+
+        "\u144D\u1451\u1455\u1458\u145B\u145E\u1461\u1464\u1468\u146B\u146E\u1471"+
+        "\u1474\u1477\u147A\u147D\u1480\u1483\u1486\u1489\u148C\u148F\u1492\u1496"+
+        "\u149A\u149D\u14A0\u14A3\u14A6\u14A9\u14AD\u14B0\u14B3\u14B7\u14BA\u14BD"+
+        "\u14C0\u14C3\u14C6\u14C9\u14CD\u14D1\u14D4\u14D7\u14DA\u14DE\u14E1\u14E5"+
+        "\u14E8\u14EB\u14EE\u14F1\u14F4\u14F7\u14FA\u14FE\u1502\u1505\u1508\u150B"+
+        "\u150F\u1513\u1516\u151A\u151E\u1522\u1525\u1529\u152C\u152F\u1533\u1536"+
+        "\u1539\u153D\u1540\u1543\u1546\u154A\u154D\u1550\u1553\u1556\u155A\u155E"+
+        "\u1562\u1566\u156A\u156D\u1570\u1574\u1577\u157B\u157E\u1581\u1584\u1587"+
+        "\u158A\u158D\u1591\u1594\u1597\u159A\u159D\u15A0\u15A4\u15A7\u15AB\u15AF"+
+        "\u15B3\u15B7\u15BA\u15BE\u15C2\u15C5\u15C8\u15CB\u15CE\u15D1\u15D4\u15D7"+
+        "\u15DA\u15DD\u15E0\u15E3\u15E6\u15E9\u15EC\u15F0\u15F3\u15F7\u15FB\u15FF"+
+        "\u1602\u1606\u1609\u160D\u1610\u1613\u1617\u161A\u161D\u1620\u1623\u1626"+
+        "\u1629\u162C\u162F\u1632\u1635\u1638\u163C\u1640\u1643\u1646\u1649\u164C"+
+        "\u164F\u1652\u1655\u1658\u165B\u165E\u1661\u1664\u1667\u166A\u166E\u1672"+
+        "\u1676\u1679\u167C\u167F\u1683\u1686\u1689\u168D\u1690\u1693\u1697\u169B"+
+        "\u169E\u16A1\u16A4\u16A7\u16AA\u16AD\u16B0\u16B4\u16B7\u16BA\u16BD\u16C0"+
+        "\u16C4\u16C8\u16CC\u16CF\u16D2\u16D6\u16D9\u16DC\u16DF\u16E3\u16E6\u16E9"+
+        "\u16ED\u16F1\u16F4\u16F7\u16FB\u16FE\u1701\u1704\u1708\u170B\u170E\u1711"+
+        "\u1715\u1719\u171D\u1720\u1723\u1727\u172A\u172D\u1730\u1733\u1737\u173A"+
+        "\u173D\u1741\u1745\u1748\u174B\u174F\u1752\u1755\u1758\u175B\u175E\u1761"+
+        "\u1765\u1769\u176C\u176F\u1772\u1776\u1779\u177C\u177F\u1783\u1786\u178A"+
+        "\u178E\u1791\u1795\u1798\u179B\u179E\u17A1\u17A4\u17A7\u17AB\u17AE\u17B1"+
+        "\u17B4\u17B7\u17BA\u17BD\u17C0\u17C3\u17C6\u17C9\u17CD\u17D0\u17D3\u17D6"+
+        "\u17D9\u17DC\u17DF\u17E2\u17E6\u17E9\u17ED\u17F0\u17F3\u17F6\u17F9\u17FC"+
+        "\u17FF\u1802\u1805\u1808\u180B\u180E\u1811\u1815\u1818\u181B\u181E\u1821"+
+        "\u1824\u1827\u182A\u182D\u1831\u1835\u1838\u183B\u183E\u1841\u1844\u1847"+
+        "\u184B\u184E\u1851\u1854\u1857\u185A\u185D\u1860\u1863\u1866\u186A\u186E"+
+        "\u1871\u1874\u1877\u187A\u187D\u1880\u1883\u1886\u1889\u188C\u1890\u1893"+
+        "\u1896\u1899\u189C\u189F\u18A2\u18A5\u18A8\u18AB\u18AE\u18B1\u18B4\u18B8"+
+        "\u18BB\u18BF\u18C2\u18C5\u18C8\u18CB\u18CE\u18D1\u18D4\u18D7\u18DA\u18DD"+
+        "\u18E0\u18E3\u18E6\u18E9\u18EC\u18EF\u18F3\u18F6\u18F9\u18FC\u18FF\u1902"+
+        "\u1905\u1908\u190B\u190E\u1911\u1914\u1918\u191B\u191F\u1922\u1925\u1928"+
+        "\u192B\u192F\u1932\u1935\u1938\u193C\u1940\u1943\u1946\u1949\u194C\u194F"+
+        "\u1952\u1956\u1959\u195C\u195F\u1962\u1965\u1968\u196B\u196E\u1971\u1974"+
+        "\u1977\u197B\u197F\u1982\u1985\u1988\u198C\u198F\u1992\u1995\u1999\u199D"+
+        "\u19A0\u19A3\u19A7\u19AA\u19AD\u19B0\u19B3\u19B6\u19B9\u19BC\u19C0\u19C4"+
+        "\u19C7\u19CA\u19CE\u19D1\u19D5\u19D9\u19DC\u19DF\u19E3\u19E6\u19E9\u19EC"+
+        "\u19EF\u19F3\u19F6\u19FA\u19FD\u1A00\u1A04\u1A08\u1A0C\u1A0F\u1A12\u1A15"+
+        "\u1A19\u1A1C\u1A1F\u1A22\u1A25\u1A28\u1A2B\u1A2E\u1A31\u1A34\u1A37\u1A3A"+
+        "\u1A3D\u1A40\u1A43\u1A47\u1A4A\u1A4D\u1A51\u1A54\u1A58\u1A5B\u1A5E\u1A62"+
+        "\u1A66\u1A69\u1A6C\u1A6F\u1A72\u1A75\u1A79\u1A7C\u1A80\u1A84\u1A87\u1A8A"+
+        "\u1A8D\u1A90\u1A94\u1A98\u1A9B\u1A9E\u1AA2\u1AA5\u1AA8\u1AAC\u1AAF\u1AB2"+
+        "\u1AB6\u1ABA\u1ABD\u1AC0\u1AC3\u1AC7\u1ACB\u1ACE\u1AD2\u1AD5\u1AD8\u1ADB"+
+        "\u1ADE\u1AE2\u1AE6\u1AE9\u1AEC\u1AEF\u1AF2\u1AF5\u1AF8\u1AFB\u1AFF\u1B02"+
+        "\u1B05\u1B08\u1B0C\u1B10\u1B13\u1B16\u1B19\u1B1C\u1B20\u1B23\u1B26\u1B29"+
+        "\u1B2D\u1B30\u1B34\u1B37\u1B3A\u1B3D\u1B40\u1B44\u1B48\u1B4B\u1B4E\u1B51"+
+        "\u1B54\u1B57\u1B5B\u1B5E\u1B61\u1B65\u1B69\u1B6C\u1B6F\u1B72\u1B75\u1B78"+
+        "\u1B7C\u1B7F\u1B82\u1B85\u1B89\u1B8D\u1B90\u1B93\u1B96\u1B99\u1B9D\u1BA1"+
+        "\u1BA4\u1BA7\u1BAA\u1BAD\u1BB0\u1BB3\u1BB7\u1BBA\u1BBD\u1BC0\u1BC4\u1BC8"+
+        "\u1BCB\u1BCE\u1BD1\u1BD4\u1BD7\u1BDA\u1BDE\u1BE1\u1BE4\u1BE8\u1BEC\u1BEF"+
+        "\u1BF2\u1BF6\u1BF9\u1BFD\u1C01\u1C04\u1C07\u1C0A\u1C0D\u1C10\u1C14\u1C17"+
+        "\u1C1A\u1C1E\u1C22\u1C25\u1C28\u1C2B\u1C2E\u1C32\u1C35\u1C39\u1C3D\u1C40"+
+        "\u1C43\u1C47\u1C4A\u1C4D\u1C51\u1C55\u1C58\u1C5B\u1C5E\u1C61\u1C64\u1C67"+
+        "\u1C6B\u1C6E\u1C71\u1C75\u1C79\u1C7C\u1C7F\u1C82\u1C86\u1C89\u1C8D\u1C91"+
+        "\u1C94\u1C98\u1C9C\u1C9F\u1CA3\u1CA6\u1CAA\u1CAE\u1CB1\u1CB4\u1CB7\u1CBA"+
+        "\u1CBD\u1CC0\u1CC3\u1CC6\u1CCA\u1CCD\u1CD0\u1CD4\u1CD8\u1CDB\u1CDE\u1CE1"+
+        "\u1CE5\u1CE8\u1CEC\u1CF0\u1CF3\u1CF7\u1CFB\u1CFE\u1D01\u1D05\u1D08\u1D0B"+
+        "\u1D0F\u1D12\u1D15\u1D18\u1D1B\u1D1E\u1D21\u1D24\u1D27\u1D2A\u1D2D\u1D30"+
+        "\u1D33\u1D36\u1D39\u1D3C\u1D3F\u1D42\u1D45\u1D48\u1D4B\u1D4E\u1D52\u1D56"+
+        "\u1D59\u1D5C\u1D60\u1D63\u1D66\u1D69\u1D6C\u1D6F\u1D72\u1D75\u1D78\u1D7B"+
+        "\u1D7E\u1D81\u1D84\u1D87\u1D8A\u1D8D\u1D90\u1D93\u1D96\u1D99\u1D9C\u1D9F"+
+        "\u1DA2\u1DA5\u1DA8\u1DAB\u1DAF\u1DB3\u1DB7\u1DBA\u1DBE\u1DC1\u1DC4\u1DC7"+
+        "\u1DCA\u1DCD\u1DD1\u1DD4\u1DD7\u1DDA\u1DDD\u1DE0\u1DE3\u1DE7\u1DEA\u1DED"+
+        "\u1DF0\u1DF3\u1DF6\u1DF9\u1DFC\u1DFF\u1E02\u1E05\u1E08\u1E0B\u1E0F\u1E12"+
+        "\u1E15\u1E18\u1E1B\u1E1E\u1E21\u1E25\u1E28\u1E2B\u1E2E\u1E31\u1E34\u1E37"+
+        "\u1E3B\u1E3E\u1E41\u1E44\u1E47\u1E4A\u1E4D\u1E50\u1E53\u1E56\u1E59\u1E5C"+
+        "\u1E5F\u1E62\u1E65\u1E68\u1E6B\u1E6E\u1E71\u1E74\u1E77\u1E7A\u1E7D\u1E80"+
+        "\u1E83\u1E86\u1E89\u1E8C\u1E8F\u1E92\u1E95\u1E98\u1E9B\u1E9E\u1EA1\u1EA4"+
+        "\u1EA7\u1EAA\u1EAD\u1EB0\u1EB3\u1EB6\u1EB9\u1EBC\u1EBF\u1EC2\u1EC5\u1EC8"+
+        "\u1ECB\u1ECE\u1ED1\u1ED4\u1ED7\u1EDA\u1EDD\u1EE0\u1EE3\u1EE6\u1EE9\u1EEC"+
+        "\u1EEF\u1EF2\u1EF5\u1EF8\u1EFB\u1EFE\u1F01\u1F04\u1F07\u1F0A\u1F0D\u1F10"+
+        "\u1F13\u1F16\u1F19\u1F1C\u1F1F\u1F22\u1F25\u1F28\u1F2B\u1F2E\u1F31\u1F34"+
+        "\u1F37\u1F3A\u1F3D\u1F40\u1F43\u1F46\u1F49\u1F4C\u1F4F\u1F52\u1F55\u1F58"+
+        "\u1F5B\u1F5E\u1F61\u1F64\u1F68\u1F6C\u1F6F\u1F72\u1F75\u1F78\u1F7B\u1F7E"+
+        "\u1F81\u1F84\u1F87\u1F8B\u1F8E\u1F91\u1F95\u1F99\u1F9C\u1F9F\u1FA2\u1FA5"+
+        "\u1FA8\u1FAB\u1FAE\u1FB1\u1FB4\u1FB7\u1FBA\u1FBD\u1FC1\u1FC4\u1FC8\u1FCC"+
+        "\u1FCF\u1FD2\u1FD5\u1FD9\u1FDD\u1FE0\u1FE3\u1FE6\u1FE9\u1FEC\u1FEF\u1FF2"+
+        "\u1FF5\u1FF8\u1FFB\u1FFE\u2001\u2005\u2008\u200B\u200E\u2012\u2015\u2018"+
+        "\u201B\u201F\u2023\u2026\u2029\u202C\u202F\u2032\u2035\u2038\u203B\u203E"+
+        "\u2041\u2044\u2047\u204B\u204E\u2051\u2054\u2058\u205B\u205E\u2062\u2066"+
+        "\u2069\u206C\u206F\u2072\u2075\u2078\u207B\u207E\u2081\u2084\u2087\u208B"+
+        "\u208E\u2091\u2095\u2098\u209C\u209F\u20A2\u20A6\u20AA\u20AE\u20B1\u20B4"+
+        "\u20B7\u20BB\u20BE\u20C1\u20C4\u20C7\u20CA\u20CD\u20D1\u20D4\u20D7\u20DB"+
+        "\u20DE\u20E2\u20E5\u20E8\u20EB\u20EE\u20F2\u20F6\u20FA\u20FD\u2100\u2104"+
+        "\u2107\u210B\u210F\u2112\u2116\u2119\u211C\u211F\u2122\u2125\u2129\u212C"+
+        "\u212F\u2133\u2136\u2139\u213C\u2140\u2144\u2147\u214A\u214E\u2151\u2154"+
+        "\u2157\u215B\u215E\u2162\u2165\u2168\u216B\u216F\u2172\u2176\u2179\u217C"+
+        "\u217F\u2182\u2186\u2189\u218D\u2190\u2193\u2196\u2199\u219C\u219F\u21A2"+
+        "\u21A5\u21A8\u21AB\u21AF\u21B2\u21B6\u21B9\u21BD\u21C0\u21C3\u21C7\u21CB"+
+        "\u21CE\u21D2\u21D5\u21D8\u21DB\u21DE\u21E1\u21E4\u21E7\u21EA\u21ED\u21F0"+
+        "\u21F3\u21F6\u21F9\u21FC\u21FF\u2203\u2206\u2209\u220D\u2210\u2213\u2216"+
+        "\u2219\u221C\u221F\u2222\u2225\u2229\u222C\u222F\u2232\u2236\u2239\u223C"+
+        "\u223F\u2243\u2247\u224A\u224D\u2250\u2253\u2256\u225A\u225E\u2261\u2264"+
+        "\u2267\u226A\u226E\u2271\u2274\u2278\u227B\u227E\u2282\u2286\u2289\u228C"+
+        "\u228F\u2292\u2296\u2299\u229D\u22A0\u22A3\u22A7\u22AA\u22AD\u22B0\u22B3"+
+        "\u22B6\u22BA\u22BD\u22C0"
+    );
+
+    static final String replace = 
+        "  \u0308\000s\000\u03A5\000 \u0313\000 \u0314\000 \000a\000 \u0304\000"+
+        "2\0003\000 \u0301\000\u03BC\000 \u0327\0001\000o\0001\u20444\0001\u2044"+
+        "2\0003\u20444\000IJ\000ij\000L\u00B7\000l\u00B7\000\u02BCn\000DZ\u030C"+
+        "\000Dz\u030C\000dz\u030C\000LJ\000Lj\000lj\000NJ\000Nj\000nj\000DZ\000"+
+        "Dz\000dz\000h\000\u0266\000r\000\u0279\000\u027B\000\u0281\000w\000y\000"+
+        " \u0306\000 \u0307\000 \u030A\000 \u0328\000 \u0303\000 \u030B\000\u0263"+
+        "\000l\000x\000\u0295\000 \u0345\000 \u0308\u0301\000\u03B2\000\u03B8\000"+
+        "\u03A5\u0301\000\u03A5\u0308\000\u03C6\000\u03C0\000\u03BA\000\u03C1\000"+
+        "\u03C2\000\u0565\u0582\000\u0627\u0674\000\u0648\u0674\000\u06C7\u0674"+
+        "\000\u064A\u0674\000\u0E4D\u0E32\000\u0ECD\u0EB2\000\u0EAB\u0E99\000\u0EAB"+
+        "\u0EA1\000\u0F0B\000\u0FB2\u0F71\u0F80\000\u0FB3\u0F71\u0F80\000a\u02BE"+
+        "\000s\u0307\000 \u0342\000 \u0308\u0342\000 \u0313\u0300\000 \u0313\u0301"+
+        "\000 \u0313\u0342\000 \u0314\u0300\000 \u0314\u0301\000 \u0314\u0342\000"+
+        " \u0308\u0300\000\u2010\000 \u0333\000.\000..\000...\000\u2032\u2032\000"+
+        "\u2032\u2032\u2032\000\u2035\u2035\000\u2035\u2035\u2035\000!!\000 \u0305"+
+        "\000?!\000!?\0000\0005\0006\0007\0008\0009\000+\000\u2212\000=\000(\000"+
+        ")\000Rs\000a/c\000a/s\000C\000\u00B0C\000c/o\000c/u\000\u0190\000\u00B0"+
+        "F\000g\000H\000\u0127\000I\000L\000N\000No\000P\000Q\000R\000SM\000TE"+
+        "L\000TM\000B\000e\000E\000\u05D0\000\u05D1\000\u05D2\000\u05D3\000i\000"+
+        "1\u20443\0002\u20443\0001\u20445\0002\u20445\0003\u20445\0004\u20445\000"+
+        "1\u20446\0005\u20446\0001\u20448\0003\u20448\0005\u20448\0007\u20448\000"+
+        "1\u2044\000II\000III\000IV\000VI\000VII\000VIII\000IX\000XI\000XII\000"+
+        "D\000ii\000iii\000iv\000vi\000vii\000viii\000ix\000xi\000xii\000d\000"+
+        "m\000\u222B\u222B\000\u222B\u222B\u222B\000\u222E\u222E\000\u222E\u222E"+
+        "\u222E\00010\00011\00012\00013\00014\00015\00016\00017\00018\00019\000"+
+        "20\000(1)\000(2)\000(3)\000(4)\000(5)\000(6)\000(7)\000(8)\000(9)\000"+
+        "(10)\000(11)\000(12)\000(13)\000(14)\000(15)\000(16)\000(17)\000(18)\000"+
+        "(19)\000(20)\0001.\0002.\0003.\0004.\0005.\0006.\0007.\0008.\0009.\000"+
+        "10.\00011.\00012.\00013.\00014.\00015.\00016.\00017.\00018.\00019.\000"+
+        "20.\000(a)\000(b)\000(c)\000(d)\000(e)\000(f)\000(g)\000(h)\000(i)\000"+
+        "(j)\000(k)\000(l)\000(m)\000(n)\000(o)\000(p)\000(q)\000(r)\000(s)\000"+
+        "(t)\000(u)\000(v)\000(w)\000(x)\000(y)\000(z)\000A\000G\000K\000O\000"+
+        "S\000T\000U\000W\000Y\000b\000f\000k\000p\000q\000t\000\u6BCD\000\u9F9F"+
+        "\000\u4E00\000\u4E28\000\u4E36\000\u4E3F\000\u4E59\000\u4E85\000\u4E8C"+
+        "\000\u4EA0\000\u4EBA\000\u513F\000\u5165\000\u516B\000\u5182\000\u5196"+
+        "\000\u51AB\000\u51E0\000\u51F5\000\u5200\000\u529B\000\u52F9\000\u5315"+
+        "\000\u531A\000\u5338\000\u5341\000\u535C\000\u5369\000\u5382\000\u53B6"+
+        "\000\u53C8\000\u53E3\000\u56D7\000\u571F\000\u58EB\000\u5902\000\u590A"+
+        "\000\u5915\000\u5927\000\u5973\000\u5B50\000\u5B80\000\u5BF8\000\u5C0F"+
+        "\000\u5C22\000\u5C38\000\u5C6E\000\u5C71\000\u5DDB\000\u5DE5\000\u5DF1"+
+        "\000\u5DFE\000\u5E72\000\u5E7A\000\u5E7F\000\u5EF4\000\u5EFE\000\u5F0B"+
+        "\000\u5F13\000\u5F50\000\u5F61\000\u5F73\000\u5FC3\000\u6208\000\u6236"+
+        "\000\u624B\000\u652F\000\u6534\000\u6587\000\u6597\000\u65A4\000\u65B9"+
+        "\000\u65E0\000\u65E5\000\u66F0\000\u6708\000\u6728\000\u6B20\000\u6B62"+
+        "\000\u6B79\000\u6BB3\000\u6BCB\000\u6BD4\000\u6BDB\000\u6C0F\000\u6C14"+
+        "\000\u6C34\000\u706B\000\u722A\000\u7236\000\u723B\000\u723F\000\u7247"+
+        "\000\u7259\000\u725B\000\u72AC\000\u7384\000\u7389\000\u74DC\000\u74E6"+
+        "\000\u7518\000\u751F\000\u7528\000\u7530\000\u758B\000\u7592\000\u7676"+
+        "\000\u767D\000\u76AE\000\u76BF\000\u76EE\000\u77DB\000\u77E2\000\u77F3"+
+        "\000\u793A\000\u79B8\000\u79BE\000\u7A74\000\u7ACB\000\u7AF9\000\u7C73"+
+        "\000\u7CF8\000\u7F36\000\u7F51\000\u7F8A\000\u7FBD\000\u8001\000\u800C"+
+        "\000\u8012\000\u8033\000\u807F\000\u8089\000\u81E3\000\u81EA\000\u81F3"+
+        "\000\u81FC\000\u820C\000\u821B\000\u821F\000\u826E\000\u8272\000\u8278"+
+        "\000\u864D\000\u866B\000\u8840\000\u884C\000\u8863\000\u897E\000\u898B"+
+        "\000\u89D2\000\u8A00\000\u8C37\000\u8C46\000\u8C55\000\u8C78\000\u8C9D"+
+        "\000\u8D64\000\u8D70\000\u8DB3\000\u8EAB\000\u8ECA\000\u8F9B\000\u8FB0"+
+        "\000\u8FB5\000\u9091\000\u9149\000\u91C6\000\u91CC\000\u91D1\000\u9577"+
+        "\000\u9580\000\u961C\000\u96B6\000\u96B9\000\u96E8\000\u9751\000\u975E"+
+        "\000\u9762\000\u9769\000\u97CB\000\u97ED\000\u97F3\000\u9801\000\u98A8"+
+        "\000\u98DB\000\u98DF\000\u9996\000\u9999\000\u99AC\000\u9AA8\000\u9AD8"+
+        "\000\u9ADF\000\u9B25\000\u9B2F\000\u9B32\000\u9B3C\000\u9B5A\000\u9CE5"+
+        "\000\u9E75\000\u9E7F\000\u9EA5\000\u9EBB\000\u9EC3\000\u9ECD\000\u9ED1"+
+        "\000\u9EF9\000\u9EFD\000\u9F0E\000\u9F13\000\u9F20\000\u9F3B\000\u9F4A"+
+        "\000\u9F52\000\u9F8D\000\u9F9C\000\u9FA0\000\u3012\000\u5344\000\u5345"+
+        "\000 \u3099\000 \u309A\000\u1100\000\u1101\000\u11AA\000\u1102\000\u11AC"+
+        "\000\u11AD\000\u1103\000\u1104\000\u1105\000\u11B0\000\u11B1\000\u11B2"+
+        "\000\u11B3\000\u11B4\000\u11B5\000\u111A\000\u1106\000\u1107\000\u1108"+
+        "\000\u1121\000\u1109\000\u110A\000\u110B\000\u110C\000\u110D\000\u110E"+
+        "\000\u110F\000\u1110\000\u1111\000\u1112\000\u1161\000\u1162\000\u1163"+
+        "\000\u1164\000\u1165\000\u1166\000\u1167\000\u1168\000\u1169\000\u116A"+
+        "\000\u116B\000\u116C\000\u116D\000\u116E\000\u116F\000\u1170\000\u1171"+
+        "\000\u1172\000\u1173\000\u1174\000\u1175\000\u1160\000\u1114\000\u1115"+
+        "\000\u11C7\000\u11C8\000\u11CC\000\u11CE\000\u11D3\000\u11D7\000\u11D9"+
+        "\000\u111C\000\u11DD\000\u11DF\000\u111D\000\u111E\000\u1120\000\u1122"+
+        "\000\u1123\000\u1127\000\u1129\000\u112B\000\u112C\000\u112D\000\u112E"+
+        "\000\u112F\000\u1132\000\u1136\000\u1140\000\u1147\000\u114C\000\u11F1"+
+        "\000\u11F2\000\u1157\000\u1158\000\u1159\000\u1184\000\u1185\000\u1188"+
+        "\000\u1191\000\u1192\000\u1194\000\u119E\000\u11A1\000\u4E09\000\u56DB"+
+        "\000\u4E0A\000\u4E2D\000\u4E0B\000\u7532\000\u4E19\000\u4E01\000\u5929"+
+        "\000\u5730\000(\u1100)\000(\u1102)\000(\u1103)\000(\u1105)\000(\u1106"+
+        ")\000(\u1107)\000(\u1109)\000(\u110B)\000(\u110C)\000(\u110E)\000(\u110F"+
+        ")\000(\u1110)\000(\u1111)\000(\u1112)\000(\u1100\u1161)\000(\u1102\u1161"+
+        ")\000(\u1103\u1161)\000(\u1105\u1161)\000(\u1106\u1161)\000(\u1107\u1161"+
+        ")\000(\u1109\u1161)\000(\u110B\u1161)\000(\u110C\u1161)\000(\u110E\u1161"+
+        ")\000(\u110F\u1161)\000(\u1110\u1161)\000(\u1111\u1161)\000(\u1112\u1161"+
+        ")\000(\u110C\u116E)\000(\u4E00)\000(\u4E8C)\000(\u4E09)\000(\u56DB)\000"+
+        "(\u4E94)\000(\u516D)\000(\u4E03)\000(\u516B)\000(\u4E5D)\000(\u5341)\000"+
+        "(\u6708)\000(\u706B)\000(\u6C34)\000(\u6728)\000(\u91D1)\000(\u571F)\000"+
+        "(\u65E5)\000(\u682A)\000(\u6709)\000(\u793E)\000(\u540D)\000(\u7279)\000"+
+        "(\u8CA1)\000(\u795D)\000(\u52B4)\000(\u4EE3)\000(\u547C)\000(\u5B66)\000"+
+        "(\u76E3)\000(\u4F01)\000(\u8CC7)\000(\u5354)\000(\u796D)\000(\u4F11)\000"+
+        "(\u81EA)\000(\u81F3)\000\u1100\u1161\000\u1102\u1161\000\u1103\u1161\000"+
+        "\u1105\u1161\000\u1106\u1161\000\u1107\u1161\000\u1109\u1161\000\u110B"+
+        "\u1161\000\u110C\u1161\000\u110E\u1161\000\u110F\u1161\000\u1110\u1161"+
+        "\000\u1111\u1161\000\u1112\u1161\000\u4E94\000\u516D\000\u4E03\000\u4E5D"+
+        "\000\u682A\000\u6709\000\u793E\000\u540D\000\u7279\000\u8CA1\000\u795D"+
+        "\000\u52B4\000\u79D8\000\u7537\000\u9069\000\u512A\000\u5370\000\u6CE8"+
+        "\000\u9805\000\u4F11\000\u5199\000\u6B63\000\u5DE6\000\u53F3\000\u533B"+
+        "\000\u5B97\000\u5B66\000\u76E3\000\u4F01\000\u8CC7\000\u5354\000\u591C"+
+        "\0001\u6708\0002\u6708\0003\u6708\0004\u6708\0005\u6708\0006\u6708\000"+
+        "7\u6708\0008\u6708\0009\u6708\00010\u6708\00011\u6708\00012\u6708\000"+
+        "\u30A2\000\u30A4\000\u30A6\000\u30A8\000\u30AA\000\u30AB\000\u30AD\000"+
+        "\u30AF\000\u30B1\000\u30B3\000\u30B5\000\u30B7\000\u30B9\000\u30BB\000"+
+        "\u30BD\000\u30BF\000\u30C1\000\u30C4\000\u30C6\000\u30C8\000\u30CA\000"+
+        "\u30CB\000\u30CC\000\u30CD\000\u30CE\000\u30CF\000\u30D2\000\u30D5\000"+
+        "\u30D8\000\u30DB\000\u30DE\000\u30DF\000\u30E0\000\u30E1\000\u30E2\000"+
+        "\u30E4\000\u30E6\000\u30E8\000\u30E9\000\u30EA\000\u30EB\000\u30EC\000"+
+        "\u30ED\000\u30EF\000\u30F0\000\u30F1\000\u30F2\000\u30A2\u30CF\u309A\u30FC"+
+        "\u30C8\000\u30A2\u30EB\u30D5\u30A1\000\u30A2\u30F3\u30D8\u309A\u30A2\000"+
+        "\u30A2\u30FC\u30EB\000\u30A4\u30CB\u30F3\u30AF\u3099\000\u30A4\u30F3\u30C1"+
+        "\000\u30A6\u30A9\u30F3\000\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\000\u30A8"+
+        "\u30FC\u30AB\u30FC\000\u30AA\u30F3\u30B9\000\u30AA\u30FC\u30E0\000\u30AB"+
+        "\u30A4\u30EA\000\u30AB\u30E9\u30C3\u30C8\000\u30AB\u30ED\u30EA\u30FC\000"+
+        "\u30AB\u3099\u30ED\u30F3\000\u30AB\u3099\u30F3\u30DE\000\u30AD\u3099\u30AB"+
+        "\u3099\000\u30AD\u3099\u30CB\u30FC\000\u30AD\u30E5\u30EA\u30FC\000\u30AD"+
+        "\u3099\u30EB\u30BF\u3099\u30FC\000\u30AD\u30ED\000\u30AD\u30ED\u30AF\u3099"+
+        "\u30E9\u30E0\000\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB\000\u30AD\u30ED\u30EF"+
+        "\u30C3\u30C8\000\u30AF\u3099\u30E9\u30E0\u30C8\u30F3\000\u30AF\u30EB\u30BB"+
+        "\u3099\u30A4\u30ED\000\u30AF\u30ED\u30FC\u30CD\000\u30B1\u30FC\u30B9\000"+
+        "\u30B3\u30EB\u30CA\000\u30B3\u30FC\u30DB\u309A\000\u30B5\u30A4\u30AF\u30EB"+
+        "\000\u30B5\u30F3\u30C1\u30FC\u30E0\000\u30B7\u30EA\u30F3\u30AF\u3099\000"+
+        "\u30BB\u30F3\u30C1\000\u30BB\u30F3\u30C8\000\u30BF\u3099\u30FC\u30B9\000"+
+        "\u30C6\u3099\u30B7\000\u30C8\u3099\u30EB\000\u30CA\u30CE\000\u30CE\u30C3"+
+        "\u30C8\000\u30CF\u30A4\u30C4\000\u30CF\u309A\u30FC\u30BB\u30F3\u30C8\000"+
+        "\u30CF\u309A\u30FC\u30C4\000\u30CF\u3099\u30FC\u30EC\u30EB\000\u30D2\u309A"+
+        "\u30A2\u30B9\u30C8\u30EB\000\u30D2\u309A\u30AF\u30EB\000\u30D2\u309A\u30B3"+
+        "\000\u30D2\u3099\u30EB\000\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\000\u30D5"+
+        "\u30A3\u30FC\u30C8\000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB\000\u30D5\u30E9"+
+        "\u30F3\000\u30D8\u30AF\u30BF\u30FC\u30EB\000\u30D8\u309A\u30BD\000\u30D8"+
+        "\u309A\u30CB\u30D2\000\u30D8\u30EB\u30C4\000\u30D8\u309A\u30F3\u30B9\000"+
+        "\u30D8\u309A\u30FC\u30B7\u3099\000\u30D8\u3099\u30FC\u30BF\000\u30DB\u309A"+
+        "\u30A4\u30F3\u30C8\000\u30DB\u3099\u30EB\u30C8\000\u30DB\u30F3\000\u30DB"+
+        "\u309A\u30F3\u30C8\u3099\000\u30DB\u30FC\u30EB\000\u30DB\u30FC\u30F3\000"+
+        "\u30DE\u30A4\u30AF\u30ED\000\u30DE\u30A4\u30EB\000\u30DE\u30C3\u30CF\000"+
+        "\u30DE\u30EB\u30AF\000\u30DE\u30F3\u30B7\u30E7\u30F3\000\u30DF\u30AF\u30ED"+
+        "\u30F3\000\u30DF\u30EA\000\u30DF\u30EA\u30CF\u3099\u30FC\u30EB\000\u30E1"+
+        "\u30AB\u3099\000\u30E1\u30AB\u3099\u30C8\u30F3\000\u30E4\u30FC\u30C8\u3099"+
+        "\000\u30E4\u30FC\u30EB\000\u30E6\u30A2\u30F3\000\u30EA\u30C3\u30C8\u30EB"+
+        "\000\u30EA\u30E9\000\u30EB\u30D2\u309A\u30FC\000\u30EB\u30FC\u30D5\u3099"+
+        "\u30EB\000\u30EC\u30E0\000\u30EC\u30F3\u30C8\u30B1\u3099\u30F3\0000\u70B9"+
+        "\0001\u70B9\0002\u70B9\0003\u70B9\0004\u70B9\0005\u70B9\0006\u70B9\000"+
+        "7\u70B9\0008\u70B9\0009\u70B9\00010\u70B9\00011\u70B9\00012\u70B9\000"+
+        "13\u70B9\00014\u70B9\00015\u70B9\00016\u70B9\00017\u70B9\00018\u70B9\000"+
+        "19\u70B9\00020\u70B9\00021\u70B9\00022\u70B9\00023\u70B9\00024\u70B9\000"+
+        "hPa\000da\000AU\000bar\000oV\000pc\000\u5E73\u6210\000\u662D\u548C\000"+
+        "\u5927\u6B63\000\u660E\u6CBB\000\u682A\u5F0F\u4F1A\u793E\000pA\000nA\000"+
+        "\u03BCA\000mA\000kA\000KB\000MB\000GB\000cal\000kcal\000pF\000nF\000\u03BC"+
+        "F\000\u03BCg\000mg\000kg\000Hz\000kHz\000MHz\000GHz\000THz\000\u03BCl"+
+        "\000ml\000dl\000kl\000fm\000nm\000\u03BCm\000mm\000cm\000km\000mm2\000"+
+        "cm2\000km2\000mm3\000cm3\000km3\000m\u2215s\000m\u2215s2\000kPa\000MP"+
+        "a\000GPa\000rad\000rad\u2215s\000rad\u2215s2\000ps\000ns\000\u03BCs\000"+
+        "ms\000pV\000nV\000\u03BCV\000mV\000kV\000MV\000pW\000nW\000\u03BCW\000"+
+        "mW\000kW\000MW\000k\u03A9\000M\u03A9\000a.m.\000Bq\000cc\000cd\000C\u2215"+
+        "kg\000Co.\000dB\000Gy\000ha\000HP\000in\000KK\000KM\000kt\000lm\000ln"+
+        "\000log\000lx\000mb\000mil\000mol\000PH\000p.m.\000PPM\000PR\000sr\000"+
+        "Sv\000Wb\0001\u65E5\0002\u65E5\0003\u65E5\0004\u65E5\0005\u65E5\0006\u65E5"+
+        "\0007\u65E5\0008\u65E5\0009\u65E5\00010\u65E5\00011\u65E5\00012\u65E5"+
+        "\00013\u65E5\00014\u65E5\00015\u65E5\00016\u65E5\00017\u65E5\00018\u65E5"+
+        "\00019\u65E5\00020\u65E5\00021\u65E5\00022\u65E5\00023\u65E5\00024\u65E5"+
+        "\00025\u65E5\00026\u65E5\00027\u65E5\00028\u65E5\00029\u65E5\00030\u65E5"+
+        "\00031\u65E5\000ff\000fi\000fl\000ffi\000ffl\000st\000\u0574\u0576\000"+
+        "\u0574\u0565\000\u0574\u056B\000\u057E\u0576\000\u0574\u056D\000\u05E2"+
+        "\000\u05D4\000\u05DB\000\u05DC\000\u05DD\000\u05E8\000\u05EA\000\u05D0"+
+        "\u05DC\000\u0671\000\u067B\000\u067E\000\u0680\000\u067A\000\u067F\000"+
+        "\u0679\000\u06A4\000\u06A6\000\u0684\000\u0683\000\u0686\000\u0687\000"+
+        "\u068D\000\u068C\000\u068E\000\u0688\000\u0698\000\u0691\000\u06A9\000"+
+        "\u06AF\000\u06B3\000\u06B1\000\u06BA\000\u06BB\000\u06D5\u0654\000\u06C1"+
+        "\000\u06BE\000\u06D2\000\u06D2\u0654\000\u06AD\000\u06C7\000\u06C6\000"+
+        "\u06C8\000\u06CB\000\u06C5\000\u06C9\000\u06D0\000\u0649\000\u064A\u0654"+
+        "\u0627\000\u064A\u0654\u06D5\000\u064A\u0654\u0648\000\u064A\u0654\u06C7"+
+        "\000\u064A\u0654\u06C6\000\u064A\u0654\u06C8\000\u064A\u0654\u06D0\000"+
+        "\u064A\u0654\u0649\000\u06CC\000\u064A\u0654\u062C\000\u064A\u0654\u062D"+
+        "\000\u064A\u0654\u0645\000\u064A\u0654\u064A\000\u0628\u062C\000\u0628"+
+        "\u062D\000\u0628\u062E\000\u0628\u0645\000\u0628\u0649\000\u0628\u064A"+
+        "\000\u062A\u062C\000\u062A\u062D\000\u062A\u062E\000\u062A\u0645\000\u062A"+
+        "\u0649\000\u062A\u064A\000\u062B\u062C\000\u062B\u0645\000\u062B\u0649"+
+        "\000\u062B\u064A\000\u062C\u062D\000\u062C\u0645\000\u062D\u062C\000\u062D"+
+        "\u0645\000\u062E\u062C\000\u062E\u062D\000\u062E\u0645\000\u0633\u062C"+
+        "\000\u0633\u062D\000\u0633\u062E\000\u0633\u0645\000\u0635\u062D\000\u0635"+
+        "\u0645\000\u0636\u062C\000\u0636\u062D\000\u0636\u062E\000\u0636\u0645"+
+        "\000\u0637\u062D\000\u0637\u0645\000\u0638\u0645\000\u0639\u062C\000\u0639"+
+        "\u0645\000\u063A\u062C\000\u063A\u0645\000\u0641\u062C\000\u0641\u062D"+
+        "\000\u0641\u062E\000\u0641\u0645\000\u0641\u0649\000\u0641\u064A\000\u0642"+
+        "\u062D\000\u0642\u0645\000\u0642\u0649\000\u0642\u064A\000\u0643\u0627"+
+        "\000\u0643\u062C\000\u0643\u062D\000\u0643\u062E\000\u0643\u0644\000\u0643"+
+        "\u0645\000\u0643\u0649\000\u0643\u064A\000\u0644\u062C\000\u0644\u062D"+
+        "\000\u0644\u062E\000\u0644\u0645\000\u0644\u0649\000\u0644\u064A\000\u0645"+
+        "\u062C\000\u0645\u062D\000\u0645\u062E\000\u0645\u0645\000\u0645\u0649"+
+        "\000\u0645\u064A\000\u0646\u062C\000\u0646\u062D\000\u0646\u062E\000\u0646"+
+        "\u0645\000\u0646\u0649\000\u0646\u064A\000\u0647\u062C\000\u0647\u0645"+
+        "\000\u0647\u0649\000\u0647\u064A\000\u064A\u062C\000\u064A\u062D\000\u064A"+
+        "\u062E\000\u064A\u0645\000\u064A\u0649\000\u064A\u064A\000\u0630\u0670"+
+        "\000\u0631\u0670\000\u0649\u0670\000 \u064C\u0651\000 \u064D\u0651\000"+
+        " \u064E\u0651\000 \u064F\u0651\000 \u0650\u0651\000 \u0651\u0670\000\u064A"+
+        "\u0654\u0631\000\u064A\u0654\u0632\000\u064A\u0654\u0646\000\u0628\u0631"+
+        "\000\u0628\u0632\000\u0628\u0646\000\u062A\u0631\000\u062A\u0632\000\u062A"+
+        "\u0646\000\u062B\u0631\000\u062B\u0632\000\u062B\u0646\000\u0645\u0627"+
+        "\000\u0646\u0631\000\u0646\u0632\000\u0646\u0646\000\u064A\u0631\000\u064A"+
+        "\u0632\000\u064A\u0646\000\u064A\u0654\u062E\000\u064A\u0654\u0647\000"+
+        "\u0628\u0647\000\u062A\u0647\000\u0635\u062E\000\u0644\u0647\000\u0646"+
+        "\u0647\000\u0647\u0670\000\u064A\u0647\000\u062B\u0647\000\u0633\u0647"+
+        "\000\u0634\u0645\000\u0634\u0647\000\u0640\u064E\u0651\000\u0640\u064F"+
+        "\u0651\000\u0640\u0650\u0651\000\u0637\u0649\000\u0637\u064A\000\u0639"+
+        "\u0649\000\u0639\u064A\000\u063A\u0649\000\u063A\u064A\000\u0633\u0649"+
+        "\000\u0633\u064A\000\u0634\u0649\000\u0634\u064A\000\u062D\u0649\000\u062D"+
+        "\u064A\000\u062C\u0649\000\u062C\u064A\000\u062E\u0649\000\u062E\u064A"+
+        "\000\u0635\u0649\000\u0635\u064A\000\u0636\u0649\000\u0636\u064A\000\u0634"+
+        "\u062C\000\u0634\u062D\000\u0634\u062E\000\u0634\u0631\000\u0633\u0631"+
+        "\000\u0635\u0631\000\u0636\u0631\000\u0627\u064B\000\u062A\u062C\u0645"+
+        "\000\u062A\u062D\u062C\000\u062A\u062D\u0645\000\u062A\u062E\u0645\000"+
+        "\u062A\u0645\u062C\000\u062A\u0645\u062D\000\u062A\u0645\u062E\000\u062C"+
+        "\u0645\u062D\000\u062D\u0645\u064A\000\u062D\u0645\u0649\000\u0633\u062D"+
+        "\u062C\000\u0633\u062C\u062D\000\u0633\u062C\u0649\000\u0633\u0645\u062D"+
+        "\000\u0633\u0645\u062C\000\u0633\u0645\u0645\000\u0635\u062D\u062D\000"+
+        "\u0635\u0645\u0645\000\u0634\u062D\u0645\000\u0634\u062C\u064A\000\u0634"+
+        "\u0645\u062E\000\u0634\u0645\u0645\000\u0636\u062D\u0649\000\u0636\u062E"+
+        "\u0645\000\u0637\u0645\u062D\000\u0637\u0645\u0645\000\u0637\u0645\u064A"+
+        "\000\u0639\u062C\u0645\000\u0639\u0645\u0645\000\u0639\u0645\u0649\000"+
+        "\u063A\u0645\u0645\000\u063A\u0645\u064A\000\u063A\u0645\u0649\000\u0641"+
+        "\u062E\u0645\000\u0642\u0645\u062D\000\u0642\u0645\u0645\000\u0644\u062D"+
+        "\u0645\000\u0644\u062D\u064A\000\u0644\u062D\u0649\000\u0644\u062C\u062C"+
+        "\000\u0644\u062E\u0645\000\u0644\u0645\u062D\000\u0645\u062D\u062C\000"+
+        "\u0645\u062D\u0645\000\u0645\u062D\u064A\000\u0645\u062C\u062D\000\u0645"+
+        "\u062C\u0645\000\u0645\u062E\u062C\000\u0645\u062E\u0645\000\u0645\u062C"+
+        "\u062E\000\u0647\u0645\u062C\000\u0647\u0645\u0645\000\u0646\u062D\u0645"+
+        "\000\u0646\u062D\u0649\000\u0646\u062C\u0645\000\u0646\u062C\u0649\000"+
+        "\u0646\u0645\u064A\000\u0646\u0645\u0649\000\u064A\u0645\u0645\000\u0628"+
+        "\u062E\u064A\000\u062A\u062C\u064A\000\u062A\u062C\u0649\000\u062A\u062E"+
+        "\u064A\000\u062A\u062E\u0649\000\u062A\u0645\u064A\000\u062A\u0645\u0649"+
+        "\000\u062C\u0645\u064A\000\u062C\u062D\u0649\000\u062C\u0645\u0649\000"+
+        "\u0633\u062E\u0649\000\u0635\u062D\u064A\000\u0634\u062D\u064A\000\u0636"+
+        "\u062D\u064A\000\u0644\u062C\u064A\000\u0644\u0645\u064A\000\u064A\u062D"+
+        "\u064A\000\u064A\u062C\u064A\000\u064A\u0645\u064A\000\u0645\u0645\u064A"+
+        "\000\u0642\u0645\u064A\000\u0646\u062D\u064A\000\u0639\u0645\u064A\000"+
+        "\u0643\u0645\u064A\000\u0646\u062C\u062D\000\u0645\u062E\u064A\000\u0644"+
+        "\u062C\u0645\000\u0643\u0645\u0645\000\u062C\u062D\u064A\000\u062D\u062C"+
+        "\u064A\000\u0645\u062C\u064A\000\u0641\u0645\u064A\000\u0628\u062D\u064A"+
+        "\000\u0633\u062E\u064A\000\u0646\u062C\u064A\000\u0635\u0644\u06D2\000"+
+        "\u0642\u0644\u06D2\000\u0627\u0644\u0644\u0647\000\u0627\u0643\u0628\u0631"+
+        "\000\u0645\u062D\u0645\u062F\000\u0635\u0644\u0639\u0645\000\u0631\u0633"+
+        "\u0648\u0644\000\u0639\u0644\u064A\u0647\000\u0648\u0633\u0644\u0645\000"+
+        "\u0635\u0644\u0649\000\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639"+
+        "\u0644\u064A\u0647 \u0648\u0633\u0644\u0645\000\u062C\u0644 \u062C\u0644"+
+        "\u0627\u0644\u0647\000\u2014\000\u2013\000_\000{\000}\000\u3014\000\u3015"+
+        "\000\u3010\000\u3011\000\u300A\000\u300B\000\u3008\000\u3009\000\u300C"+
+        "\000\u300D\000\u300E\000\u300F\000,\000\u3001\000;\000:\000#\000&\000"+
+        "*\000-\000<\000>\000\134\000$\000%\000@\000 \u064B\000\u0640\u064B\000"+
+        " \u064C\000 \u064D\000 \u064E\000\u0640\u064E\000 \u064F\000\u0640\u064F"+
+        "\000 \u0650\000\u0640\u0650\000 \u0651\000\u0640\u0651\000 \u0652\000"+
+        "\u0640\u0652\000\u0621\000\u0627\u0653\000\u0627\u0654\000\u0648\u0654"+
+        "\000\u0627\u0655\000\u064A\u0654\000\u0628\000\u0629\000\u062A\000\u062B"+
+        "\000\u0630\000\u0633\000\u0634\000\u0635\000\u0636\000\u0637\000\u0638"+
+        "\000\u0639\000\u063A\000\u0641\000\u0642\000\u0643\000\u0644\u0627\u0653"+
+        "\000\u0644\u0627\u0654\000\u0644\u0627\u0655\000\u0644\u0627\000\042\000"+
+        "'\000/\000[\000]\000^\000`\000|\000~\000\u3002\000\u30FB\000\u30A3\000"+
+        "\u30A5\000\u30A7\000\u30A9\000\u30E3\000\u30E5\000\u30E7\000\u30C3\000"+
+        "\u00A2\000\u00A3\000\u00AC\000\u00A6\000\u00A5\000\u20A9\000\u2502\000"+
+        "\u2190\000\u2191\000\u2192\000\u2193\000\u25A0\000\u25CB\000\u0300\000"+
+        "\u0301\000\u0313\000\u0308\u0301\000\u02B9\000;\000\u00B7\000\u0915\u093C"+
+        "\000\u0916\u093C\000\u0917\u093C\000\u091C\u093C\000\u0921\u093C\000\u0922"+
+        "\u093C\000\u092B\u093C\000\u092F\u093C\000\u0F71\u0F72\000\u0F71\u0F74"+
+        "\000\u0F71\u0F80\000\u03B1\u0301\000\u03B5\u0301\000\u03B7\u0301\000\u03B9"+
+        "\u0301\000\u03BF\u0301\000\u03C5\u0301\000\u03C9\u0301\000\u0391\u0301"+
+        "\000\u03B9\000\u0395\u0301\000\u0397\u0301\000\u03B9\u0308\u0301\000\u0399"+
+        "\u0301\000\u03C5\u0308\u0301\000\u03A5\u0301\000`\000\u039F\u0301\000"+
+        "\u03A9\u0301\000\u03A9\000K\000A\u030A\000\u3008\000\u3009\000\u8C48\000"+
+        "\u66F4\000\u8ECA\000\u8CC8\000\u6ED1\000\u4E32\000\u53E5\000\u9F9C\000"+
+        "\u9F9C\000\u5951\000\u91D1\000\u5587\000\u5948\000\u61F6\000\u7669\000"+
+        "\u7F85\000\u863F\000\u87BA\000\u88F8\000\u908F\000\u6A02\000\u6D1B\000"+
+        "\u70D9\000\u73DE\000\u843D\000\u916A\000\u99F1\000\u4E82\000\u5375\000"+
+        "\u6B04\000\u721B\000\u862D\000\u9E1E\000\u5D50\000\u6FEB\000\u85CD\000"+
+        "\u8964\000\u62C9\000\u81D8\000\u881F\000\u5ECA\000\u6717\000\u6D6A\000"+
+        "\u72FC\000\u90CE\000\u4F86\000\u51B7\000\u52DE\000\u64C4\000\u6AD3\000"+
+        "\u7210\000\u76E7\000\u8001\000\u8606\000\u865C\000\u8DEF\000\u9732\000"+
+        "\u9B6F\000\u9DFA\000\u788C\000\u797F\000\u7DA0\000\u83C9\000\u9304\000"+
+        "\u9E7F\000\u8AD6\000\u58DF\000\u5F04\000\u7C60\000\u807E\000\u7262\000"+
+        "\u78CA\000\u8CC2\000\u96F7\000\u58D8\000\u5C62\000\u6A13\000\u6DDA\000"+
+        "\u6F0F\000\u7D2F\000\u7E37\000\u96FB\000\u52D2\000\u808B\000\u51DC\000"+
+        "\u51CC\000\u7A1C\000\u7DBE\000\u83F1\000\u9675\000\u8B80\000\u62CF\000"+
+        "\u8AFE\000\u4E39\000\u5BE7\000\u6012\000\u7387\000\u7570\000\u5317\000"+
+        "\u78FB\000\u4FBF\000\u5FA9\000\u4E0D\000\u6CCC\000\u6578\000\u7D22\000"+
+        "\u53C3\000\u585E\000\u7701\000\u8449\000\u8AAA\000\u6BBA\000\u8FB0\000"+
+        "\u6C88\000\u62FE\000\u82E5\000\u63A0\000\u7565\000\u4EAE\000\u5169\000"+
+        "\u51C9\000\u6881\000\u7CE7\000\u826F\000\u8AD2\000\u91CF\000\u52F5\000"+
+        "\u5442\000\u5973\000\u5EEC\000\u65C5\000\u6FFE\000\u792A\000\u95AD\000"+
+        "\u9A6A\000\u9E97\000\u9ECE\000\u529B\000\u66C6\000\u6B77\000\u8F62\000"+
+        "\u5E74\000\u6190\000\u6200\000\u649A\000\u6F23\000\u7149\000\u7489\000"+
+        "\u79CA\000\u7DF4\000\u806F\000\u8F26\000\u84EE\000\u9023\000\u934A\000"+
+        "\u5217\000\u52A3\000\u54BD\000\u70C8\000\u88C2\000\u5EC9\000\u5FF5\000"+
+        "\u637B\000\u6BAE\000\u7C3E\000\u7375\000\u4EE4\000\u56F9\000\u5DBA\000"+
+        "\u601C\000\u73B2\000\u7469\000\u7F9A\000\u8046\000\u9234\000\u96F6\000"+
+        "\u9748\000\u9818\000\u4F8B\000\u79AE\000\u91B4\000\u96B8\000\u60E1\000"+
+        "\u4E86\000\u50DA\000\u5BEE\000\u5C3F\000\u6599\000\u71CE\000\u7642\000"+
+        "\u84FC\000\u907C\000\u9F8D\000\u6688\000\u962E\000\u5289\000\u677B\000"+
+        "\u67F3\000\u6D41\000\u6E9C\000\u7409\000\u7559\000\u786B\000\u7D10\000"+
+        "\u985E\000\u516D\000\u622E\000\u9678\000\u502B\000\u5D19\000\u6DEA\000"+
+        "\u8F2A\000\u5F8B\000\u6144\000\u6817\000\u9686\000\u5229\000\u540F\000"+
+        "\u5C65\000\u6613\000\u674E\000\u68A8\000\u6CE5\000\u7406\000\u75E2\000"+
+        "\u7F79\000\u88CF\000\u88E1\000\u91CC\000\u96E2\000\u533F\000\u6EBA\000"+
+        "\u541D\000\u71D0\000\u7498\000\u85FA\000\u96A3\000\u9C57\000\u9E9F\000"+
+        "\u6797\000\u6DCB\000\u81E8\000\u7ACB\000\u7B20\000\u7C92\000\u72C0\000"+
+        "\u7099\000\u8B58\000\u4EC0\000\u8336\000\u523A\000\u5207\000\u5EA6\000"+
+        "\u62D3\000\u7CD6\000\u5B85\000\u6D1E\000\u66B4\000\u8F3B\000\u884C\000"+
+        "\u964D\000\u898B\000\u5ED3\000\u5140\000\u55C0\000\u585A\000\u6674\000"+
+        "\u51DE\000\u732A\000\u76CA\000\u793C\000\u795E\000\u7965\000\u798F\000"+
+        "\u9756\000\u7CBE\000\u7FBD\000\u8612\000\u8AF8\000\u9038\000\u90FD\000"+
+        "\u98EF\000\u98FC\000\u9928\000\u9DB4\000\u05F2\u05B7\000\u05E9\u05C1\000"+
+        "\u05E9\u05C2\000\u05E9\u05BC\u05C1\000\u05E9\u05BC\u05C2\000\u05D0\u05B7"+
+        "\000\u05D0\u05B8\000\u05D0\u05BC\000\u05D1\u05BC\000\u05D2\u05BC\000\u05D3"+
+        "\u05BC\000\u05D4\u05BC\000\u05D5\u05BC\000\u05D6\u05BC\000\u05D8\u05BC"+
+        "\000\u05D9\u05BC\000\u05DA\u05BC\000\u05DB\u05BC\000\u05DC\u05BC\000\u05DE"+
+        "\u05BC\000\u05E0\u05BC\000\u05E1\u05BC\000\u05E3\u05BC\000\u05E4\u05BC"+
+        "\000\u05E6\u05BC\000\u05E7\u05BC\000\u05E8\u05BC\000\u05E9\u05BC\000\u05EA"+
+        "\u05BC\000\u05D5\u05B9\000\u05D1\u05BF\000\u05DB\u05BF\000\u05E4\u05BF"+
+        "\000\u1EB8\u0309\000\u01A1\u0304\u0300\000\u0122\u0301\000\u1ECB\u0301"+
+        "\000\u1E89\u0308\000\u0172\u031B\u0303\000\u01EC\u0300\000\u1EF0\u0303"+
+        "\000\u0123\u0307\000\u1E2D\u0300\000\u1ECC\u0304\u0300\000\u0119\u0323"+
+        "\000\u0229\u0323\000\u1E5F\u0301\000\u012F\u0300\000\u0119\u0330\000\u0229"+
+        "\u0330\000\u01A0\u0304\u0300\000\u1ECB\u0300\000\u0157\u0301\000\u1E5B"+
+        "\u0301\000\u1E88\u0308\000\u0173\u031B\u0309\000\u01EB\u0303\u0308\000"+
+        "\u1EF1\u0309\000\u0122\u0307\000\u0105\u0307\000\u1E1B\u0308\000\u1E01"+
+        "\u0307\000\u1ECD\u0303\u0308\000\u1E19\u0308\000\u1EA1\u0307\000\u0118"+
+        "\u0323\000\u0228\u0323\000\u1E5E\u0301\000\u0119\u0308\000\u0118\u0330"+
+        "\000\u0229\u0308\000\u0228\u0330\000\u1EE1\u0308\000\u1EB9\u0308\000\u0156"+
+        "\u0301\000\u1E5A\u0301\000\u1E89\u0301\000\u0172\u031B\u0309\000\u01EA"+
+        "\u0303\u0308\000\u1EF0\u0309\000\u0123\u0306\000\u0104\u0307\000\u1E1B"+
+        "\u0302\000\u1E00\u0307\000\u1ECC\u0303\u0308\000\u1E19\u0302\000\u1EA0"+
+        "\u0307\000\u0105\u0323\u0306\000\u0119\u0302\000\u0119\u032D\000\u0229"+
+        "\u0302\000\u0229\u032D\000\u1EE0\u0308\000\u1E88\u0301\000\u0173\u031B"+
+        "\u0300\000\u01EB\u0303\u0301\000\u1EF1\u0300\000\u0122\u0306\000\u1E1B"+
+        "\u0301\000\u1ECD\u0303\u0301\000\u1E19\u0301\000\u0104\u0323\u0306\000"+
+        "\u0119\u0301\000\u0118\u032D\000\u0229\u0301\000\u0228\u032D\000\u1EE1"+
+        "\u0301\000\u1EB9\u0301\000\u1E89\u0300\000\u0172\u031B\u0300\000\u01EA"+
+        "\u0303\u0301\000\u1EF0\u0300\000\u0123\u0302\000\u1E1B\u0300\000\u1E1B"+
+        "\u0304\u0301\000\u1ECC\u0303\u0301\000\u1E19\u0300\000\u1E19\u0304\u0301"+
+        "\000\u0105\u0306\u0303\000\u1E01\u0306\u0303\000\u0119\u0300\000\u0119"+
+        "\u0304\u0301\000\u0229\u0300\000\u1EB7\u0303\000\u0229\u0304\u0301\000"+
+        "\u1EE0\u0301\000\u1EB9\u0300\000\u1EB9\u0304\u0301\000\u01EB\u030B\000"+
+        "\u1ECD\u030B\000\u1E88\u0300\000\u0173\u031B\u0301\000\u0122\u0302\000"+
+        "\u01A1\u030B\000\u1EF1\u0301\000\u0146\u032D\000\u1E1A\u0304\u0301\000"+
+        "\u1E18\u0304\u0301\000\u0104\u0306\u0303\000\u1E00\u0306\u0303\000\u0118"+
+        "\u0304\u0301\000\u1EB6\u0303\000\u1FB8\u0345\000\u0228\u0304\u0301\000"+
+        "\u1FB9\u0345\000\u1EB8\u0304\u0301\000\u0386\u0345\000\u01EA\u030B\000"+
+        "\u1FBA\u0345\000\u1E1B\u030C\000\u1ECC\u030B\000\u1E19\u030C\000\u0172"+
+        "\u031B\u0301\000\u0119\u030C\000\u0229\u030C\000\u01A0\u030B\000\u1EF0"+
+        "\u0301\000\u0145\u032D\000\u1E1B\u0304\u0300\000\u1EB9\u030C\000\u1E19"+
+        "\u0304\u0300\000\u0105\u0306\u0309\000\u1E01\u0306\u0309\000\u0119\u0304"+
+        "\u0300\000\u1EB7\u0309\000\u0229\u0304\u0300\000\u1EB9\u0304\u0300\000"+
+        "\u1E75\u0309\000\u01EB\u0306\000\u1E77\u0309\000\u1E1A\u030C\000\u1ECD"+
+        "\u0306\000\u1E18\u030C\000\u0173\u0309\000\u0118\u030C\000\u1E73\u0309"+
+        "\000\u0228\u030C\000\u01A1\u0306\000\u1EE5\u0309\000\u0146\u0331\000\u0625"+
+        "\u0654\000\u1E1A\u0304\u0300\000\u1EB8\u030C\000\u1E18\u0304\u0300\000"+
+        "\u0104\u0306\u0309\000\u1E00\u0306\u0309\000\u0105\u030A\000\u0118\u0304"+
+        "\u0300\000\u1EB6\u0309\000\u0228\u0304\u0300\000\u1E01\u030A\000\u1EA1"+
+        "\u030A\000\u1EB8\u0304\u0300\000\u1E74\u0309\000\u01EA\u0306\000\u1E76"+
+        "\u0309\000\u1ECC\u0306\000\u1E7F\u0303\000\u0172\u0309\000\u1E72\u0309"+
+        "\000\u01A0\u0306\000\u1EE4\u0309\000\u0145\u0331\000\u0625\u0653\000\u0105"+
+        "\u0306\u0300\000\u1E01\u0306\u0300\000\u0105\u0308\000\u1EB7\u0300\000"+
+        "\u1E11\u032D\000\u1E01\u0308\000\u1EA1\u0308\000\u1E96\u030C\000\u1ECD"+
+        "\u0304\000\u1E7E\u0303\000\u1E2B\u030C\000\u0173\u0323\000\u01A1\u0304"+
+        "\000\u0146\u0323\000\u1E29\u030C\000\u1E25\u030C\000\u0104\u0306\u0300"+
+        "\000\u1E00\u0306\u0300\000\u1E75\u0304\u0308\000\u0105\u0303\000\u1EB6"+
+        "\u0300\000\u1E10\u032D\000\u1E77\u0304\u0308\000\u1E01\u0303\000\u1EA1"+
+        "\u0303\000\u0173\u0304\u0308\000\u1E1B\u0307\000\u1ECC\u0304\000\u1E73"+
+        "\u0304\u0308\000\u1EE5\u0304\u0308\000\u1E19\u0307\000\u1E2A\u030C\000"+
+        "\u0172\u0323\000\u0119\u0307\000\u0229\u0307\000\u01A0\u0304\000\u0145"+
+        "\u0323\000\u01B0\u0304\u0308\000\u1E28\u030C\000\u1E35\u030C\000\u1EB9"+
+        "\u0307\000\u1E24\u030C\000\u0105\u0306\u0301\000\u1E01\u0306\u0301\000"+
+        "\u1E74\u0304\u0308\000\u0105\u0302\000\u1EB7\u0301\000\u1E76\u0304\u0308"+
+        "\000\u1E01\u0302\000\u0137\u030C\000\u1E33\u030C\000\u0172\u0304\u0308"+
+        "\000\u1E49\u0307\000\u1E1A\u0307\000\u1E72\u0304\u0308\000\u1EE4\u0304"+
+        "\u0308\000\u1E18\u0307\000\u1E4B\u0307\000\u01EB\u031B\u0323\000\u0118"+
+        "\u0307\000\u0228\u0307\000\u0146\u0307\000\u01AF\u0304\u0308\000\u1E34"+
+        "\u030C\000\u1EB8\u0307\000\u1E47\u0307\000\u0104\u0306\u0301\000\u1E00"+
+        "\u0306\u0301\000\u1E75\u0303\u0301\000\u0105\u0301\000\u1EB6\u0301\000"+
+        "\u1E77\u0303\u0301\000\u1E01\u0301\000\u0136\u030C\000\u1EA1\u0301\000"+
+        "\u1E32\u030C\000\u0173\u0303\u0301\000\u1E48\u0307\000\u1E1B\u0306\000"+
+        "\u1E73\u0303\u0301\000\u1EE5\u0303\u0301\000\u1E19\u0306\000\u1E4A\u0307"+
+        "\000\u01EA\u031B\u0323\000\u1E95\u030C\000\u0119\u0306\000\u0145\u0307"+
+        "\000\u1EEF\u0301\000\u1EB9\u0306\000\u1E46\u0307\000\u0105\u0323\u0302"+
+        "\000\u1E74\u0303\u0301\000\u0105\u0300\000\u1E93\u030C\000\u1E11\u0331"+
+        "\000\u1E76\u0303\u0301\000\u1E01\u0300\000\u0123\u030C\000\u1EA1\u0300"+
+        "\000\u0172\u0303\u0301\000\u1E1A\u0306\000\u1E72\u0303\u0301\000\u1EE4"+
+        "\u0303\u0301\000\u1E18\u0306\000\u01EB\u031B\u0303\000\u1E94\u030C\000"+
+        "\u0118\u0306\000\u1EE3\u0303\000\u1EEE\u0301\000\u0163\u0326\000\u1EB8"+
+        "\u0306\000\u0104\u0323\u0302\000\u1E49\u030C\000\u1E92\u030C\000\u1E4B"+
+        "\u030C\000\u1E10\u0331\000\u0122\u030C\000\u0173\u032D\000\u0146\u030C"+
+        "\000\u1E1B\u0304\000\u1E47\u030C\000\u1E19\u0304\000\u01EA\u031B\u0303"+
+        "\000\u1E95\u0307\000\u0119\u0304\000\u0229\u0304\000\u1EE2\u0303\000\u01B0"+
+        "\u032D\000\u0162\u0326\000\u1EB9\u0304\000\u0105\u0302\u0303\000\u1E48"+
+        "\u030C\000\u1E01\u0302\u0303\000\u1E93\u0307\000\u1EAD\u0303\000\u1FB0"+
+        "\u0345\000\u1E4A\u030C\000\u1E11\u0323\000\u1FB1\u0345\000\u0172\u032D"+
+        "\000\u0145\u030C\000\u1E1A\u0304\000\u1E46\u030C\000\u1E18\u0304\000\u0173"+
+        "\u031B\000\u01EB\u031B\u0309\000\u1E94\u0307\000\u0118\u0304\000\u0228"+
+        "\u0304\000\u1EE3\u0309\000\u01AF\u032D\000\u015F\u0326\000\u1EB8\u0304"+
+        "\000\u1E43\u0307\000\u0104\u0302\u0303\000\u1E00\u0302\u0303\000\u1E92"+
+        "\u0307\000\u1EAC\u0303\000\u1E10\u0323\000\u1EF4\u0301\000\u0173\u0330"+
+        "\000\u0172\u031B\000\u01EA\u031B\u0309\000\u1E95\u0301\000\u1EE2\u0309"+
+        "\000\u01B0\u0330\000\u015E\u0326\000\u1E0F\u0307\000\u1E74\u0308\000\u1E42"+
+        "\u0307\000\u1E76\u0308\000\u1E13\u0307\000\u0105\u0302\u0309\000\u1E01"+
+        "\u0302\u0309\000\u0172\u0308\000\u1E93\u0301\000\u1EAD\u0309\000\u1E11"+
+        "\u0307\000\u1E72\u0308\000\u1EE4\u0308\000\u1E0D\u0307\000\u0172\u0330"+
+        "\000\u1E75\u0311\000\u01AF\u0308\000\u01EB\u031B\u0300\000\u1E77\u0311"+
+        "\000\u1E94\u0301\000\u1EE3\u0300\000\u0173\u0311\000\u01AF\u0330\000\u1E0E"+
+        "\u0307\000\u1E74\u0302\000\u1E73\u0311\000\u1E43\u0301\000\u1E76\u0302"+
+        "\000\u1EE5\u0311\000\u1E12\u0307\000\u0104\u0302\u0309\000\u1E49\u0301"+
+        "\000\u1E00\u0302\u0309\000\u0172\u0302\000\u1E92\u0301\000\u1EAC\u0309"+
+        "\000\u1E4B\u0301\000\u1E10\u0307\000\u01B0\u0311\000\u1E72\u0302\000\u1EE4"+
+        "\u0302\000\u1E0C\u0307\000\u0173\u0324\000\u0146\u0301\000\u1E0F\u030C"+
+        "\000\u1E47\u0301\000\u1E74\u0311\000\u01AF\u0302\000\u1E13\u030C\000\u01EA"+
+        "\u031B\u0300\000\u1E76\u0311\000\u1E11\u030C\000\u1EE2\u0300\000\u0172"+
+        "\u0311\000\u01B0\u0324\000\u1E74\u0301\000\u1E0D\u030C\000\u1E72\u0311"+
+        "\000\u1E42\u0301\000\u1E76\u0301\000\u1EE4\u0311\000\u0105\u0302\u0300"+
+        "\000\u1E48\u0301\000\u1E01\u0302\u0300\000\u0172\u0301\000\u1EF4\u0308"+
+        "\000\u1EAD\u0300\000\u1E4A\u0301\000\u0105\u0307\u0304\000\u01AF\u0311"+
+        "\000\u1E72\u0301\000\u1EE4\u0301\000\u1E01\u0307\u0304\000\u1EA1\u0307"+
+        "\u0304\000\u0172\u0324\000\u0145\u0301\000\u1E0E\u030C\000\u1E46\u0301"+
+        "\000\u1E75\u030F\000\u1E12\u030C\000\u01EB\u031B\u0301\000\u1E77\u030F"+
+        "\000\u1E10\u030C\000\u1EE3\u0301\000\u0173\u030F\000\u013C\u032D\000\u01AF"+
+        "\u0324\000\u1E74\u0300\000\u1E0C\u030C\000\u1E73\u030F\000\u1E76\u0300"+
+        "\000\u1EE5\u030F\000\u0104\u0302\u0300\000\u1E00\u0302\u0300\000\u0172"+
+        "\u0300\000\u1EF5\u0302\000\u1EAC\u0300\000\u0104\u0307\u0304\000\u01B0"+
+        "\u030F\000\u1E72\u0300\000\u1EE4\u0300\000\u1E00\u0307\u0304\000\u1EA0"+
+        "\u0307\u0304\000\u0163\u032D\000\u1E74\u030F\000\u01EA\u031B\u0301\000"+
+        "\u1E76\u030F\000\u00E7\u030C\000\u1EE2\u0301\000\u0172\u030F\000\u013B"+
+        "\u032D\000\u1E72\u030F\000\u1EE4\u030F\000\u0105\u0302\u0301\000\u1E01"+
+        "\u0302\u0301\000\u1EF4\u0302\000\u1EAD\u0301\000\u0105\u0308\u0304\000"+
+        "\u01AF\u030F\000\u1E01\u0308\u0304\000\u1EA1\u0308\u0304\000\u0162\u032D"+
+        "\000\u1E5F\u0311\000\u01EB\u0323\u0302\000\u00C7\u030C\000\u013C\u0331"+
+        "\000\u0157\u0311\000\u1E5B\u0311\000\u0104\u0302\u0301\000\u1EE3\u0302"+
+        "\000\u1E00\u0302\u0301\000\u1E89\u0302\000\u1EAC\u0301\000\u0104\u0308"+
+        "\u0304\000\u1E00\u0308\u0304\000\u1EA0\u0308\u0304\000\u0163\u0331\000"+
+        "\u0DDE\u0DCA\000\u1E5E\u0311\000\u01EA\u0323\u0302\000\u00E7\u0307\000"+
+        "\u013B\u0331\000\u0156\u0311\000\u1E5A\u0311\000\u0105\u0309\000\u1EE2"+
+        "\u0302\000\u1E01\u0309\000\u01EA\u0308\000\u1E88\u0302\000\u1EA1\u0309"+
+        "\000\u1ECC\u0308\000\u0162\u0331\000\u1E5F\u030F\000\u01A0\u0308\000\u01EB"+
+        "\u0302\u0303\000\u00C7\u0307\000\u1ED9\u0303\000\u013C\u0323\u0304\000"+
+        "\u0157\u030F\000\u1E75\u0308\u0300\000\u1E5B\u030F\000\u0104\u0309\000"+
+        "\u1E77\u0308\u0300\000\u01A1\u0302\u0303\000\u1E3B\u030C\000\u1E00\u0309"+
+        "\000\u01EA\u0303\000\u1EA0\u0309\000\u1E3D\u030C\000\u0173\u0308\u0300"+
+        "\000\u1ECC\u0303\000\u1E73\u0308\u0300\000\u1EE5\u0308\u0300\000\u013C"+
+        "\u030C\000\u0163\u0323\000\u1E5E\u030F\000\u1E37\u030C\000\u01EA\u0302"+
+        "\u0303\000\u01B0\u0308\u0300\000\u00E7\u0302\000\u1ED8\u0303\000\u013B"+
+        "\u0323\u0304\000\u0156\u030F\000\u1E07\u0307\000\u1E74\u0308\u0300\000"+
+        "\u1E5A\u030F\000\u0105\u0323\000\u1E76\u0308\u0300\000\u01A0\u0302\u0303"+
+        "\000\u1E3A\u030C\000\u01EA\u0302\000\u1E3C\u030C\000\u0172\u0308\u0300"+
+        "\000\u1E72\u0308\u0300\000\u1E05\u0307\000\u1EE4\u0308\u0300\000\u013B"+
+        "\u030C\000\u0162\u0323\000\u1E36\u030C\000\u01A0\u0302\000\u01EB\u0302"+
+        "\u0309\000\u01AF\u0308\u0300\000\u1E75\u030B\000\u00C7\u0302\000\u1ED9"+
+        "\u0309\000\u1E77\u030B\000\u01EB\u0311\000\u013C\u0323\000\u1E06\u0307"+
+        "\000\u1E75\u0308\u030C\000\u0173\u030B\000\u1ECD\u0311\000\u0104\u0323"+
+        "\000\u1E77\u0308\u030C\000\u01A1\u0302\u0309\000\u1E6F\u0307\000\u1E73"+
+        "\u030B\000\u01EA\u0301\000\u1EE5\u030B\000\u0173\u0308\u030C\000\u1E71"+
+        "\u0307\000\u01A1\u0311\000\u1ECC\u0301\000\u1E73\u0308\u030C\000\u1E04"+
+        "\u0307\000\u1EE5\u0308\u030C\000\u01B0\u030B\000\u0163\u0307\000\u021B"+
+        "\u0307\000\u1E6D\u0307\000\u01EA\u0302\u0309\000\u01B0\u0308\u030C\000"+
+        "\u1E74\u030B\000\u1ED8\u0309\000\u1E76\u030B\000\u01EA\u0311\000\u013B"+
+        "\u0323\000\u1E74\u0308\u030C\000\u0172\u030B\000\u1ECC\u0311\000\u1E76"+
+        "\u0308\u030C\000\u01A0\u0302\u0309\000\u1E6E\u0307\000\u1E72\u030B\000"+
+        "\u01EA\u0300\000\u1EE4\u030B\000\u0105\u0325\000\u0172\u0308\u030C\000"+
+        "\u1E70\u0307\000\u01A0\u0311\000\u1ECC\u0300\000\u1E72\u0308\u030C\000"+
+        "\u1EE4\u0308\u030C\000\u01AF\u030B\000\u0162\u0307\000\u021A\u0307\000"+
+        "\u1E6C\u0307\000\u01EB\u0302\u0300\000\u01AF\u0308\u030C\000\u1E75\u030A"+
+        "\000\u1ED9\u0300\000\u1E77\u030A\000\u01EB\u030F\000\u0137\u0331\000\u1E48"+
+        "\u0303\000\u1E75\u0308\u0301\000\u1E4A\u0303\000\u0173\u030A\000\u1ECD"+
+        "\u030F\000\u1E77\u0308\u0301\000\u01A1\u0302\u0300\000\u1E3B\u0301\000"+
+        "\u1E73\u030A\000\u1EE5\u030A\000\u0104\u0325\000\u0145\u0303\000\u1E3D"+
+        "\u0301\000\u0173\u0308\u0301\000\u01A1\u030F\000\u1E46\u0303\000\u1E73"+
+        "\u0308\u0301\000\u1EE5\u0308\u0301\000\u013C\u0301\000\u01B0\u030A\000"+
+        "\u015F\u0323\u0307\000\u1E37\u0301\000\u01EA\u0302\u0300\000\u01B0\u0308"+
+        "\u0301\000\u1E74\u030A\000\u1ED8\u0300\000\u1E76\u030A\000\u01EA\u030F"+
+        "\000\u0136\u0331\000\u1E74\u0308\u0301\000\u0172\u030A\000\u1ECC\u030F"+
+        "\000\u1E76\u0308\u0301\000\u01A0\u0302\u0300\000\u1E3A\u0301\000\u1E72"+
+        "\u030A\000\u1EE4\u030A\000\u1E3C\u0301\000\u0172\u0308\u0301\000\u01A0"+
+        "\u030F\000\u1E72\u0308\u0301\000\u1EE4\u0308\u0301\000\u013B\u0301\000"+
+        "\u01AF\u030A\000\u015E\u0323\u0307\000\u1E36\u0301\000\u1E2D\u0311\000"+
+        "\u01EB\u0302\u0301\000\u01AF\u0308\u0301\000\u1E75\u0306\000\u1ED9\u0301"+
+        "\000\u1E77\u0306\000\u012F\u0311\000\u0137\u0323\000\u1E2C\u0308\000\u1E75"+
+        "\u0308\u0304\000\u0173\u0306\000\u1ECB\u0311\000\u1E77\u0308\u0304\000"+
+        "\u01A1\u0302\u0301\000\u1E73\u0306\000\u012E\u0308\000\u1EE5\u0306\000"+
+        "\u0173\u0308\u0304\000\u1ECA\u0308\000\u1E73\u0308\u0304\000\u1EE5\u0308"+
+        "\u0304\000\u01B0\u0306\000\u015F\u030C\u0307\000\u0219\u030C\u0307\000"+
+        "\u1E2C\u0311\000\u1E63\u030C\u0307\000\u01EB\u031B\000\u01EA\u0302\u0301"+
+        "\000\u01B0\u0308\u0304\000\u1E74\u0306\000\u0105\u0306\000\u1ED8\u0301"+
+        "\000\u1E76\u0306\000\u012E\u0311\000\u0136\u0323\000\u1E01\u0306\000\u1E2C"+
+        "\u0302\000\u1E74\u0308\u0304\000\u0172\u0306\000\u1ECA\u0311\000\u1E76"+
+        "\u0308\u0304\000\u01A0\u0302\u0301\000\u1E72\u0306\000\u012E\u0302\000"+
+        "\u1EE4\u0306\000\u0172\u0308\u0304\000\u1ECA\u0302\000\u1E72\u0308\u0304"+
+        "\000\u1EE4\u0308\u0304\000\u01AF\u0306\000\u015E\u030C\u0307\000\u0218"+
+        "\u030C\u0307\000\u1E35\u0301\000\u1E2D\u030F\000\u1E62\u030C\u0307\000"+
+        "\u01EA\u031B\000\u01EB\u0309\000\u01AF\u0308\u0304\000\u1E75\u0304\000"+
+        "\u0104\u0306\000\u1ECD\u0309\000\u1E77\u0304\000\u012F\u030F\000\u0137"+
+        "\u0301\000\u1E00\u0306\000\u1E2C\u0301\000\u1E75\u030C\000\u1E33\u0301"+
+        "\000\u0173\u0304\000\u1ECB\u030F\000\u1E77\u030C\000\u1E73\u0304\000\u012E"+
+        "\u0301\000\u1EE5\u0304\000\u0173\u030C\000\u1ECA\u0301\000\u1E73\u030C"+
+        "\000\u1EE5\u030C\000\u01B0\u0304\000\u015F\u0301\u0307\000\u0219\u0301"+
+        "\u0307\000\u1E34\u0301\000\u1E2C\u030F\000\u1E63\u0301\u0307\000\u01EA"+
+        "\u0309\000\u01B0\u030C\000\u1E74\u0304\000\u0105\u0304\000\u1ECC\u0309"+
+        "\000\u1E76\u0304\000\u012E\u030F\000\u0136\u0301\000\u1E01\u0304\000\u1E2C"+
+        "\u0300\000\u1EA1\u0304\000\u1E74\u030C\000\u1E32\u0301\000\u0172\u0304"+
+        "\000\u1ECA\u030F\000\u1E76\u030C\000\u1E72\u0304\000\u012E\u0300\000\u1EE4"+
+        "\u0304\000\u1EF5\u030A\000\u0172\u030C\000\u1ECA\u0300\000\u1E72\u030C"+
+        "\000\u1EE4\u030C\000\u01AF\u0304\000\u015E\u0301\u0307\000\u0218\u0301"+
+        "\u0307\000\u1E2D\u0308\u0301\000\u1E1B\u0311\000\u1E62\u0301\u0307\000"+
+        "\u01EB\u0323\000\u01AF\u030C\000\u1E19\u0311\000\u1E75\u0303\000\u0104"+
+        "\u0304\000\u012F\u0308\u0301\000\u1E77\u0303\000\u0119\u0311\000\u1E00"+
+        "\u0304\000\u0229\u0311\000\u1E1A\u0308\000\u1EA0\u0304\000\u1ECB\u0308"+
+        "\u0301\000\u1E18\u0308\000\u0173\u0303\000\u1EB9\u0311\000\u1E73\u0303"+
+        "\000\u0118\u0308\000\u1EE5\u0303\000\u0228\u0308\000\u1E89\u030A\000\u01EB"+
+        "\u030C\000\u1EB8\u0308\000\u1ECD\u030C\000\u015F\u0323\000\u1E2C\u0308"+
+        "\u0301\000\u1E1A\u0311\000\u01EA\u0323\000\u01A1\u030C\000\u1E18\u0311"+
+        "\000\u1E6F\u0308\000\u1E74\u0303\000\u012E\u0308\u0301\000\u1E76\u0303"+
+        "\000\u0118\u0311\000\u1E71\u0308\000\u0228\u0311\000\u1E1A\u0302\000\u1EF5"+
+        "\u0308\000\u1ECA\u0308\u0301\000\u1E18\u0302\000\u0172\u0303\000\u1EB8"+
+        "\u0311\000\u0163\u0308\000\u021B\u0308\000\u1E72\u0303\000\u0118\u0302"+
+        "\000\u1EE4\u0303\000\u0228\u0302\000\u1E6D\u0308\000\u01EA\u030C\000\u1ECC"+
+        "\u030C\000\u015E\u0323\000\u1E1B\u030F\000\u012F\u0323\000\u01A0\u030C"+
+        "\000\u1E19\u030F\000\u012F\u0330\000\u0119\u030F\000\u0229\u030F\000\u1E1A"+
+        "\u0301\000\u1E2D\u030C\000\u1E18\u0301\000\u1EB9\u030F\000\u1E29\u0331"+
+        "\000\u0118\u0301\000\u0228\u0301\000\u012F\u030C\000\u1EB8\u0301\000\u1ECB"+
+        "\u030C\000\u015F\u0307\000\u0219\u0307\000\u1E1A\u030F\000\u012E\u0323"+
+        "\000\u1E18\u030F\000\u012E\u0330\000\u0118\u030F\000\u0228\u030F\000\u1E1A"+
+        "\u0300\000\u1EF5\u0301\000\u1E2C\u030C\000\u1E18\u0300\000\u1EB8\u030F"+
+        "\000\u0118\u0300\000\u0228\u0300\000\u012E\u030C\000\u1EB8\u0300\000\u1E2D"+
+        "\u0309\000\u1ECA\u030C\000\u015E\u0307\000\u0218\u0307\000\u1E75\u0308"+
+        "\000\u1E77\u0308\000\u012F\u0309\000\u1E6F\u030C\000\u0173\u0308\000\u1ECB"+
+        "\u0309\000\u1E71\u030C\000\u0105\u0311\000\u1E29\u032E\000\u1E73\u0308"+
+        "\000\u1EE5\u0308\000\u1E01\u0311\000\u1EA1\u0311\000\u0163\u030C\000\u021B"+
+        "\u030C\000\u1E2C\u0307\000\u1E6D\u030C\000\u01B0\u0308\000\u0105\u030C"+
+        "\000\u1E01\u030C\000\u1E2C\u0309\000\u012E\u0307\000\u1EA1\u030C\000\u0157"+
+        "\u0331\000\u1E75\u0302\000\u1ECA\u0307\000\u1E77\u0302\000\u012E\u0309"+
+        "\000\u1E6E\u030C\000\u0173\u0302\000\u1ECA\u0309\000\u1E70\u030C\000\u0104"+
+        "\u0311\000\u1E28\u032E\000\u1E73\u0302\000\u1EE5\u0302\000\u1E00\u0311"+
+        "\000\u1EA0\u0311\000\u0162\u030C\000\u021A\u030C\000\u1E6C\u030C\000\u01B0"+
+        "\u0302\000\u0104\u030C\000\u1E00\u030C\000\u1EA0\u030C\000\u0156\u0331"+
+        "\000\u1E75\u0301\000\u1E77\u0301\000\u0119\u0323\u0302\000\u0229\u0323"+
+        "\u0302\000\u0173\u0301\000\u0105\u030F\000\u1E73\u0301\000\u1EE5\u0301"+
+        "\000\u1E01\u030F\000\u1EA1\u030F\000\u0104\u030A\000\u1E00\u030A\000\u1EA0"+
+        "\u030A\000\u0157\u0323\u0304\000\u1E75\u0300\000\u1E77\u0300\000\u0118"+
+        "\u0323\u0302\000\u0228\u0323\u0302\000\u1E95\u0302\000\u0173\u0300\000"+
+        "\u0104\u030F\000\u1E73\u0300\000\u1EE5\u0300\000\u1E00\u030F\000\u1EA0"+
+        "\u030F\000\u1E2D\u0306\000\u0104\u0308\000\u1E93\u0302\000\u1E00\u0308"+
+        "\000\u1EA0\u0308\000\u1E1B\u0302\u0303\000\u012F\u0306\000\u0156\u0323"+
+        "\u0304\000\u1E19\u0302\u0303\000\u1E96\u0308\000\u1ECB\u0306\000\u1E2B"+
+        "\u0308\000\u0119\u0302\u0303\000\u0229\u0302\u0303\000\u1E94\u0302\000"+
+        "\u1EC7\u0303\000\u1E29\u0308\000\u1E25\u0308\000\u015F\u030C\000\u0219"+
+        "\u030C\000\u1E2C\u0306\000\u0104\u0303\000\u1E63\u030C\000\u1E92\u0302"+
+        "\000\u1E00\u0303\000\u1EA0\u0303\000\u1E1A\u0302\u0303\000\u012E\u0306"+
+        "\000\u1EF5\u0303\000\u0157\u0323\000\u1E18\u0302\u0303\000\u1ECA\u0306"+
+        "\000\u1E2A\u0308\000\u1EF5\u0304\000\u0118\u0302\u0303\000\u0228\u0302"+
+        "\u0303\000\u1EC6\u0303\000\u1E28\u0308\000\u1E24\u0308\000\u0389\u0345"+
+        "\000\u1FCA\u0345\000\u015E\u030C\000\u0218\u030C\000\u1E2D\u0304\000\u0104"+
+        "\u0302\000\u1E62\u030C\000\u1EF5\u0307\000\u1E00\u0302\000\u1E1B\u0302"+
+        "\u0309\000\u012F\u0304\000\u1EF4\u0303\000\u0156\u0323\000\u1E19\u0302"+
+        "\u0309\000\u1ECB\u0304\000\u1EF4\u0304\000\u0119\u0302\u0309\000\u0229"+
+        "\u0302\u0309\000\u01EB\u0308\000\u1EC7\u0309\000\u1E29\u0323\000\u1ECD"+
+        "\u0308\000\u1E5F\u0307\000\u1E2C\u0304\000\u0104\u0301\000\u01A1\u0308"+
+        "\000\u1EF4\u0307\000\u1E00\u0301\000\u1EA0\u0301\000\u1E1A\u0302\u0309"+
+        "\000\u012E\u0304\000\u1EF5\u0309\000\u01EB\u0307\u0304\000\u0157\u0307"+
+        "\000\u1E18\u0302\u0309\000\u1ECA\u0304\000\u1E5B\u0307\000\u1ECD\u0307"+
+        "\u0304\000\u0118\u0302\u0309\000\u0228\u0302\u0309\000\u01EB\u0303\000"+
+        "\u1EC6\u0309\000\u1E28\u0323\000\u01A1\u0307\u0304\000\u1ECD\u0303\000"+
+        "\u1E5E\u0307\000\u1E2D\u0303\000\u0104\u0300\000\u1E00\u0300\000\u1EA0"+
+        "\u0300\000\u1E1B\u0302\u0300\000\u012F\u0303\000\u1EF4\u0309\000\u01EA"+
+        "\u0307\u0304\000\u0156\u0307\000\u1E19\u0302\u0300\000\u1E96\u0307\000"+
+        "\u1ECB\u0303\000\u1E5A\u0307\000\u1E2B\u0307\000\u1ECC\u0307\u0304\000"+
+        "\u0119\u0302\u0300\000\u0229\u0302\u0300\000\u01EB\u0302\000\u1EC7\u0300"+
+        "\000\u0105\u030A\u0301\000\u1E29\u0307\000\u01A0\u0307\u0304\000\u1E01"+
+        "\u030A\u0301\000\u1E25\u0307\000\u1EA1\u030A\u0301\000\u015F\u0302\000"+
+        "\u0219\u0302\000\u1E2C\u0303\000\u1E63\u0302\000\u01A1\u0302\000\u1E1A"+
+        "\u0302\u0300\000\u012E\u0303\000\u01EB\u0307\000\u1E18\u0302\u0300\000"+
+        "\u1ECA\u0303\000\u1E2A\u0307\000\u1ECD\u0307\000\u0118\u0302\u0300\000"+
+        "\u0228\u0302\u0300\000\u01EB\u0301\000\u1EC6\u0300\000\u0104\u030A\u0301"+
+        "\000\u1E28\u0307\000\u01A1\u0307\000\u1ECD\u0301\000\u1E00\u030A\u0301"+
+        "\000\u1E24\u0307\000\u1EA0\u030A\u0301\000\u015E\u0302\000\u0218\u0302"+
+        "\000\u1E62\u0302\000\u1E1B\u0302\u0301\000\u01EA\u0307\000\u1E19\u0302"+
+        "\u0301\000\u1E49\u0300\000\u038F\u0345\000\u1ECC\u0307\000\u1FFA\u0345"+
+        "\000\u0119\u0302\u0301\000\u1E4B\u0300\000\u0229\u0302\u0301\000\u01EB"+
+        "\u0300\000\u1EC7\u0301\000\u0123\u0304\000\u0146\u0300\000\u01A0\u0307"+
+        "\000\u1ECD\u0300\000\u1E47\u0300\000\u015F\u0301\000\u0219\u0301\000\u1E63"+
+        "\u0301\000\u1E1A\u0302\u0301\000\u1EF5\u0300\000\u01EB\u0303\u0304\000"+
+        "\u1E49\u0303\000\u1E18\u0302\u0301\000\u1E48\u0300\000\u1E4B\u0303\000"+
+        "\u1ECD\u0303\u0304\000\u0118\u0302\u0301\000\u1E4A\u0300\000\u0228\u0302"+
+        "\u0301\000\u0146\u0303\000\u1EC6\u0301\000\u0122\u0304\000\u0145\u0300"+
+        "\000\u1EE1\u0304\000\u1E47\u0303\000\u1E46\u0300\000\u015E\u0301\000\u0218"+
+        "\u0301\000\u1E96\u0302\000\u1E62\u0301\000\u1E2B\u0302\000\u1E1B\u0303"+
+        "\000\u1E29\u0302\000\u1EF4\u0300\000\u01EA\u0303\u0304\000\u1E19\u0303"+
+        "\000\u1E25\u0302\000\u1ECC\u0303\u0304\000\u0119\u0303\000\u0229\u0303"+
+        "\000\u1E5F\u030C\000\u1EB9\u0303\000\u1EE0\u0304\000\u0157\u030C\000\u1E5B"+
+        "\u030C\000\u1E2A\u0302\000\u0173\u031B\u0323\000\u1E1A\u0303\000\u01ED"+
+        "\u0301\000\u1E28\u0302\000\u01EB\u0308\u0304\000\u1E18\u0303\000\u1E2D"+
+        "\u0308\000\u1E24\u0302\000\u1ECD\u0304\u0301\000\u1ECD\u0308\u0304\000"+
+        "\u0118\u0303\000\u0228\u0303\000\u1E5E\u030C\000\u012F\u0308\000\u1EB8"+
+        "\u0303\000\u01A1\u0304\u0301\000\u01A1\u0308\u0304\000\u1ECB\u0308\000"+
+        "\u0156\u030C\000\u1E5A\u030C\000\u1E89\u0307\000\u0172\u031B\u0323\000"+
+        "\u1E1B\u0309\000\u01EC\u0301\000\u01EA\u0308\u0304\000\u1E19\u0309\000"+
+        "\u1E2D\u0302\000\u1ECC\u0304\u0301\000\u1ECC\u0308\u0304\000\u0119\u0309"+
+        "\000\u0229\u0309\000\u012F\u0302\000\u1EB9\u0309\000\u01A0\u0304\u0301"+
+        "\000\u0123\u0301\000\u01A0\u0308\u0304\000\u1ECB\u0302\000\u1E88\u0307"+
+        "\000\u0173\u031B\u0303\000\u1E1A\u0309\000\u01ED\u0300\000\u1EF1\u0303"+
+        "\000\u1E18\u0309\000\u1E2D\u0301\000\u1ECD\u0304\u0300\000\u0118\u0309"+
+        "\000\u0228\u0309\000\u012F\u0301\000"
+    ;
+
+    static final int[] typeMask = Utility.RLEStringToIntArray(
+        "\000\u00EA\000\uA5A5\000\021\000\u0800\000\u0200\000\uA5A5\000\004\000"+
+        "\u0400\000\u0100\000\u0100\000\uA5A5\000\004\000\u0400\000\002\000\u0800"+
+        "\000\u1000\000 \000\u0800\000\u0800\000\u0400\000\004\000\004\000\001"+
+        "\000\001\000\004\000\004\000\uA5A5\000\005\000\001\000@\000\uA5A5\000"+
+        "\005\000\001\000\020\000\001\000\001\000\u0080\000\001\000\001\000\001"+
+        "\000\010\000\010\000\uA5A5\000\u00AD\000\000"
+    );
+}
diff --git a/src/com/ibm/text/ComposedCharIter.java b/src/com/ibm/text/ComposedCharIter.java
new file mode 100755
index 0000000..9370fde
--- /dev/null
+++ b/src/com/ibm/text/ComposedCharIter.java
@@ -0,0 +1,167 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/ComposedCharIter.java,v $ 
+ * $Date: 2000/03/10 04:07:19 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+/**
+ * <tt>ComposedCharIter</tt> is an iterator class that returns all
+ * of the precomposed characters defined in the Unicode standard, along
+ * with their decomposed forms.  This is often useful when building
+ * data tables (<i>e.g.</i> collation tables) which need to treat composed
+ * and decomposed characters equivalently.
+ * <p>
+ * For example, imagine that you have built a collation table with ordering
+ * rules for the {@link Normalizer#DECOMP canonically decomposed} forms of all
+ * characters used in a particular language.  When you process input text using
+ * this table, the text must first be decomposed so that it matches the form
+ * used in the table.  This can impose a performance penalty that may be
+ * unacceptable in some situations.
+ * <p>
+ * You can avoid this problem by ensuring that the collation table contains
+ * rules for both the decomposed <i>and</i> composed versions of each character.
+ * To do so, use a <tt>ComposedCharIter</tt> to iterate through all of the
+ * composed characters in Unicode.  If the decomposition for that character
+ * consists solely of characters that are listed in your ruleset, you can
+ * add a new rule for the composed character that makes it equivalent to
+ * its decomposition sequence.
+ * <p>
+ * Note that <tt>ComposedCharIter</tt> iterates over a <em>static</em> table
+ * of the composed characters in Unicode.  If you want to iterate over the
+ * composed characters in a particular string, use {@link Normalizer} instead.
+ * <p>
+ * When constructing a <tt>ComposedCharIter</tt> there is one
+ * optional feature that you can enable or disable:
+ * <ul>
+ *   <li>{@link Normalizer#IGNORE_HANGUL} - Do not iterate over the Hangul
+ *          characters and their corresponding Jamo decompositions.
+ *          This option is off by default (<i>i.e.</i> Hangul processing is enabled)
+ *          since the Unicode standard specifies that Hangul to Jamo 
+ *          is a canonical decomposition.
+ * </ul>
+ * <p>
+ * <tt>ComposedCharIter</tt> is currently based on version 2.1.8 of the
+ * <a href="http://www.unicode.org" target="unicode">Unicode Standard</a>.
+ * It will be updated as later versions of Unicode are released.
+ */
+public final class ComposedCharIter {
+    
+    /**
+     * Constant that indicates the iteration has completed.
+     * {@link #next} returns this value when there are no more composed characters
+     * over which to iterate.
+     */
+    public static final char DONE = Normalizer.DONE;
+    
+    /**
+     * Construct a new <tt>ComposedCharIter</tt>.  The iterator will return
+     * all Unicode characters with canonical decompositions, including Korean
+     * Hangul characters.
+     */
+    public ComposedCharIter() {
+        minDecomp = DecompData.MAX_COMPAT;
+        hangul = false;
+    }
+    
+    
+    /**
+     * Constructs a non-default <tt>ComposedCharIter</tt> with optional behavior.
+     * <p>
+     * @param compat    <tt>false</tt> for canonical decompositions only;
+     *                  <tt>true</tt> for both canonical and compatibility
+     *                  decompositions.
+     *
+     * @param options   Optional decomposition features.  Currently, the only
+     *                  supported option is {@link Normalizer#IGNORE_HANGUL}, which
+     *                  causes this <tt>ComposedCharIter</tt> not to iterate
+     *                  over the Hangul characters and their corresponding
+     *                  Jamo decompositions.
+     */
+    public ComposedCharIter(boolean compat, int options) {
+        // Compatibility explosions have lower indices; skip them if necessary
+        minDecomp = compat ? 0 : DecompData.MAX_COMPAT;
+        
+        hangul = (options & Normalizer.IGNORE_HANGUL) == 0;
+    }
+    
+    /**
+     * Determines whether there any precomposed Unicode characters not yet returned
+     * by {@link #next}.
+     */
+    public boolean hasNext() {
+        if (nextChar == DONE)  {
+            findNextChar();
+        }
+        return nextChar != DONE;
+    }
+    
+    /**
+     * Returns the next precomposed Unicode character.
+     * Repeated calls to <tt>next</tt> return all of the precomposed characters defined
+     * by Unicode, in ascending order.  After all precomposed characters have
+     * been returned, {@link #hasNext} will return <tt>false</tt> and further calls
+     * to <tt>next</tt> will return {@link #DONE}.
+     */
+    public char next() {
+        if (nextChar == DONE)  {
+            findNextChar();
+        }
+        curChar = nextChar;
+        nextChar = DONE;
+        return curChar;
+    }
+    
+    /**
+     * Returns the Unicode decomposition of the current character.
+     * This method returns the decomposition of the precomposed character most
+     * recently returned by {@link #next}.  The resulting decomposition is
+     * affected by the settings of the options passed to the constructor.
+     */
+    public String decomposition() {
+        StringBuffer result = new StringBuffer();
+        
+        int pos = (char)(DecompData.offsets.elementAt(curChar) & DecompData.DECOMP_MASK);
+        
+        if (pos > minDecomp) {
+            Normalizer.doAppend(DecompData.contents, pos, result);
+            
+            
+        } else if (hangul && curChar >= HANGUL_BASE && curChar < HANGUL_LIMIT) {
+            Normalizer.hangulToJamo(curChar, result, minDecomp);
+        } else {
+            result.append(curChar);
+        }
+        return result.toString();
+    }
+    
+    private void findNextChar() {
+        if (curChar != DONE) {
+            char ch = curChar;
+            while (++ch < 0xFFFF) {
+                int offset = DecompData.offsets.elementAt(ch) & DecompData.DECOMP_MASK;
+                if (offset > minDecomp
+                    || (hangul && ch >= HANGUL_BASE && ch < HANGUL_LIMIT) ) {
+                    nextChar = ch;
+                    break;
+                }
+            }
+        }
+    }
+    
+    private final int minDecomp;
+    private final boolean hangul;
+    
+    private char curChar = 0;
+    private char nextChar = Normalizer.DONE;
+    
+    private static final char HANGUL_BASE = Normalizer.HANGUL_BASE;
+    private static final char HANGUL_LIMIT = Normalizer.HANGUL_LIMIT;
+};
diff --git a/src/com/ibm/text/CompoundTransliterator.java b/src/com/ibm/text/CompoundTransliterator.java
new file mode 100755
index 0000000..c40003c
--- /dev/null
+++ b/src/com/ibm/text/CompoundTransliterator.java
@@ -0,0 +1,341 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/CompoundTransliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:19 $ 
+ * $Revision: 1.8 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+import com.ibm.util.Utility;
+import java.util.Enumeration;
+import java.util.Vector;
+
+/**
+ * A transliterator that is composed of two or more other
+ * transliterator objects linked together.  For example, if one
+ * transliterator transliterates from script A to script B, and
+ * another transliterates from script B to script C, the two may be
+ * combined to form a new transliterator from A to C.
+ *
+ * <p>Composed transliterators may not behave as expected.  For
+ * example, inverses may not combine to form the identity
+ * transliterator.  See the class documentation for {@link
+ * Transliterator} for details.
+ *
+ * <p>If a non-<tt>null</tt> <tt>UnicodeFilter</tt> is applied to a
+ * <tt>CompoundTransliterator</tt>, it has the effect of being
+ * logically <b>and</b>ed with the filter of each transliterator in
+ * the chain.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: CompoundTransliterator.java,v $ $Revision: 1.8 $ $Date: 2000/03/10 04:07:19 $
+ */
+public class CompoundTransliterator extends Transliterator {
+
+    private static final boolean DEBUG = false;
+
+    private Transliterator[] trans;
+
+    /**
+     * Array of original filters associated with transliterators.
+     */
+    private UnicodeFilter[] filters = null;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    public CompoundTransliterator(Transliterator[] transliterators,
+                                  UnicodeFilter filter) {
+        super(joinIDs(transliterators), null); // don't set filter here!
+        trans = new Transliterator[transliterators.length];
+        System.arraycopy(transliterators, 0, trans, 0, trans.length);
+        computeMaximumContextLength();
+        if (filter != null) {
+            setFilter(filter);
+        }
+    }
+
+    /**
+     * Constructs a new compound transliterator given an array of
+     * transliterators.  The array of transliterators may be of any
+     * length, including zero or one, however, useful compound
+     * transliterators have at least two components.
+     * @param transliterators array of <code>Transliterator</code>
+     * objects
+     */
+    public CompoundTransliterator(Transliterator[] transliterators) {
+        this(transliterators, null);
+    }
+    
+    /**
+     * Splits an ID of the form "ID;ID;..." into a compound using each
+     * of the IDs. 
+     * @param ID of above form
+     * @param forward if false, does the list in reverse order, and
+     * takes the inverse of each ID.
+     */
+    public CompoundTransliterator(String ID, int direction,
+                                  UnicodeFilter filter) {
+        // changed MED
+        // Later, add "rule1[filter];rule2...
+        super(ID, null); // don't set filter here!
+        String[] list = split(ID, ';');
+        trans = new Transliterator[list.length];
+        for (int i = 0; i < list.length; ++i) {
+            trans[i] = getInstance(list[direction==FORWARD ? i : (list.length-1-i)],
+                                   direction);
+        }
+        computeMaximumContextLength();
+        if (filter != null) {
+            setFilter(filter);
+        }
+    }
+    
+    public CompoundTransliterator(String ID, int direction) {
+        this(ID, direction, null);
+    }
+    
+    public CompoundTransliterator(String ID) {
+        this(ID, FORWARD, null);
+    }
+
+    /**
+     * Return the IDs of the given list of transliterators, concatenated
+     * with ';' delimiting them.  Equivalent to the perlish expression
+     * join(';', map($_.getID(), transliterators).
+     */
+    private static String joinIDs(Transliterator[] transliterators) {
+        StringBuffer id = new StringBuffer();
+        for (int i=0; i<transliterators.length; ++i) {
+            if (i > 0) {
+                id.append(';');
+            }
+            id.append(transliterators[i].getID());
+        }
+        return id.toString();
+    }
+
+    /**
+     * Splits a string, as in JavaScript
+     */
+    private static String[] split(String s, char divider) {
+        // changed MED
+
+	    // see how many there are
+	    int count = 1;
+	    for (int i = 0; i < s.length(); ++i) {
+	        if (s.charAt(i) == divider) ++count;
+	    }
+	    
+	    // make an array with them
+	    String[] result = new String[count];
+	    int last = 0;
+	    int current = 0;
+	    int i;
+	    for (i = 0; i < s.length(); ++i) {
+	        if (s.charAt(i) == divider) {
+	            result[current++] = s.substring(last,i);
+	            last = i+1;
+	        }
+	    }
+	    result[current++] = s.substring(last,i);
+	    return result;
+	}
+    
+
+    /**
+     * Returns the number of transliterators in this chain.
+     * @return number of transliterators in this chain.
+     */
+    public int getCount() {
+        return trans.length;
+    }
+
+    /**
+     * Returns the transliterator at the given index in this chain.
+     * @param index index into chain, from 0 to <code>getCount() - 1</code>
+     * @return transliterator at the given index
+     */
+    public Transliterator getTransliterator(int index) {
+        return trans[index];
+    }
+
+    /**
+     * Override Transliterator.  Modify the transliterators that make up
+     * this compound transliterator so their filters are the logical AND
+     * of this transliterator's filter and their own.  Original filters
+     * are kept in the filters array.
+     */
+    public void setFilter(UnicodeFilter f) {
+        /**
+         * If there is a filter F for the compound transliterator as a
+         * whole, then we need to modify every non-null filter f in
+         * the chain to be f' = F & f.
+         *
+         * If anyone else is using the transliterators in the chain
+         * outside of this context, they will get unexpected results.
+         */
+        if (f == null) {
+            // Restore original filters
+            if (filters != null) {
+                for (int i=0; i<filters.length; ++i) {
+                    trans[i].setFilter(filters[i]);
+                }
+            }
+        } else {
+            if (filters == null) {
+                filters = new UnicodeFilter[trans.length];
+                for (int i=0; i<filters.length; ++i) {
+                    filters[i] = trans[i].getFilter();
+                }
+            }
+            for (int i=0; i<filters.length; ++i) {
+                trans[i].setFilter(UnicodeFilterLogic.and(f, filters[i]));
+            }
+        }
+        super.setFilter(f);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* Call each transliterator with the same start value and
+         * initial cursor index, but with the limit index as modified
+         * by preceding transliterators.  The cursor index must be
+         * reset for each transliterator to give each a chance to
+         * transliterate the text.  The initial cursor index is known
+         * to still point to the same place after each transliterator
+         * is called because each transliterator will not change the
+         * text between start and the initial value of cursor.
+         *
+         * IMPORTANT: After the first transliterator, each subsequent
+         * transliterator only gets to transliterate text committed by
+         * preceding transliterators; that is, the cursor (output
+         * value) of transliterator i becomes the limit (input value)
+         * of transliterator i+1.  Finally, the overall limit is fixed
+         * up before we return.
+         *
+         * Assumptions we make here:
+         * (1) start <= cursor <= limit    ;cursor valid on entry
+         * (2) cursor <= cursor' <= limit' ;cursor doesn't move back
+         * (3) cursor <= limit'            ;text before cursor unchanged
+         * - cursor' is the value of cursor after calling handleKT
+         * - limit' is the value of limit after calling handleKT
+         */
+
+        /**
+         * Example: 3 transliterators.  This example illustrates the
+         * mechanics we need to implement.  S, C, and L are the start,
+         * cursor, and limit.  gl is the globalLimit.
+         *
+         * 1. h-u, changes hex to Unicode
+         *
+         *    4  7  a  d  0      4  7  a
+         *    abc/u0061/u    =>  abca/u    
+         *    S  C       L       S   C L   gl=f->a
+         *
+         * 2. upup, changes "x" to "XX"
+         *
+         *    4  7  a       4  7  a
+         *    abca/u    =>  abcAA/u    
+         *    S  CL         S    C   
+         *                       L    gl=a->b
+         * 3. u-h, changes Unicode to hex
+         *
+         *    4  7  a        4  7  a  d  0  3
+         *    abcAA/u    =>  abc/u0041/u0041/u    
+         *    S  C L         S              C
+         *                                  L   gl=b->15
+         * 4. return
+         *
+         *    4  7  a  d  0  3
+         *    abc/u0041/u0041/u    
+         *    S C L
+         */
+        int cursor = index.cursor;
+        int limit = index.limit;
+        int globalLimit = limit;
+        /* globalLimit is the overall limit.  We keep track of this
+         * since we overwrite index.limit with the previous
+         * index.cursor.  After each transliteration, we update
+         * globalLimit for insertions or deletions that have happened.
+         */
+
+        for (int i=0; i<trans.length; ++i) {
+            index.cursor = cursor; // Reset cursor
+            index.limit = limit;
+
+            if (DEBUG) {
+                System.out.print(Utility.escape(i + ": \"" +
+                    substring(text, index.start, index.cursor) + '|' +
+                    substring(text, index.cursor, index.limit) +
+                    "\" -> \""));
+            }
+
+            trans[i].handleTransliterate(text, index, incremental);
+
+            if (DEBUG) {
+                System.out.println(Utility.escape(
+                    substring(text, index.start, index.cursor) + '|' +
+                    substring(text, index.cursor, index.limit) +
+                    '"'));
+            }
+
+            // Adjust overall limit for insertions/deletions
+            globalLimit += index.limit - limit;
+            limit = index.cursor; // Move limit to end of committed text
+        }
+        // Cursor is good where it is -- where the last
+        // transliterator left it.  Limit needs to be put back
+        // where it was, modulo adjustments for deletions/insertions.
+        index.limit = globalLimit;
+    }
+
+    /**
+     * Compute and set the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.
+     */
+    private void computeMaximumContextLength() {
+        int max = 0;
+        for (int i=0; i<trans.length; ++i) {
+            int len = trans[i].getMaximumContextLength();
+            if (len > max) {
+                max = len;
+            }
+        }
+        setMaximumContextLength(max);
+    }
+
+    /**
+     * DEBUG
+     * Returns a substring of a Replaceable.
+     */
+    private static final String substring(Replaceable str, int start, int limit) {
+        StringBuffer buf = new StringBuffer();
+        while (start < limit) {
+            buf.append(str.charAt(start++));
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/text/DateFormatSymbols.java b/src/com/ibm/text/DateFormatSymbols.java
new file mode 100755
index 0000000..902c435
--- /dev/null
+++ b/src/com/ibm/text/DateFormatSymbols.java
@@ -0,0 +1,566 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/DateFormatSymbols.java,v $ 
+ * $Date: 2000/03/10 04:07:19 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.io.Serializable;
+import java.lang.ref.SoftReference;
+import java.util.Hashtable;
+import java.util.Vector;
+import java.util.Enumeration;
+import com.ibm.util.Utility;
+
+/**
+ * <code>DateFormatSymbols</code> is a public class for encapsulating
+ * localizable date-time formatting data, such as the names of the
+ * months, the names of the days of the week, and the time zone data.
+ * <code>DateFormat</code> and <code>SimpleDateFormat</code> both use
+ * <code>DateFormatSymbols</code> to encapsulate this information.
+ *
+ * <p>
+ * Typically you shouldn't use <code>DateFormatSymbols</code> directly.
+ * Rather, you are encouraged to create a date-time formatter with the
+ * <code>DateFormat</code> class's factory methods: <code>getTimeInstance</code>,
+ * <code>getDateInstance</code>, or <code>getDateTimeInstance</code>.
+ * These methods automatically create a <code>DateFormatSymbols</code> for
+ * the formatter so that you don't have to. After the
+ * formatter is created, you may modify its format pattern using the
+ * <code>setPattern</code> method. For more information about
+ * creating formatters using <code>DateFormat</code>'s factory methods,
+ * see {@link DateFormat}.
+ *
+ * <p>
+ * If you decide to create a date-time formatter with a specific
+ * format pattern for a specific locale, you can do so with:
+ * <blockquote>
+ * <pre>
+ * new SimpleDateFormat(aPattern, new DateFormatSymbols(aLocale)).
+ * </pre>
+ * </blockquote>
+ *
+ * <p>
+ * <code>DateFormatSymbols</code> objects are clonable. When you obtain
+ * a <code>DateFormatSymbols</code> object, feel free to modify the
+ * date-time formatting data. For instance, you can replace the localized
+ * date-time format pattern characters with the ones that you feel easy
+ * to remember. Or you can change the representative cities
+ * to your favorite ones.
+ *
+ * <p>
+ * New <code>DateFormatSymbols</code> subclasses may be added to support
+ * <code>SimpleDateFormat</code> for date-time formatting for additional locales.
+
+ * @see          DateFormat
+ * @see          SimpleDateFormat
+ * @see          java.util.SimpleTimeZone
+ * @version      1.31 09/21/99
+ * @author       Chen-Lieh Huang
+ */
+public class DateFormatSymbols implements Serializable, Cloneable {
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the default locale.
+     *
+     * @exception  java.util.MissingResourceException
+     *             if the resources for the default locale cannot be
+     *             found or cannot be loaded.
+     */
+    public DateFormatSymbols()
+    {
+        initializeData(Locale.getDefault());
+    }
+
+    /**
+     * Construct a DateFormatSymbols object by loading format data from
+     * resources for the given locale.
+     *
+     * @exception  java.util.MissingResourceException
+     *             if the resources for the specified locale cannot be
+     *             found or cannot be loaded.
+     */
+    public DateFormatSymbols(Locale locale)
+    {
+        initializeData(locale);
+    }
+
+    /**
+     * Era strings. For example: "AD" and "BC".  An array of 2 strings,
+     * indexed by <code>Calendar.BC</code> and <code>Calendar.AD</code>.
+     * @serial
+     */
+    String eras[] = null;
+
+    /**
+     * Month strings. For example: "January", "February", etc.  An array
+     * of 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+     * @serial
+     */
+    String months[] = null;
+
+    /**
+     * Short month strings. For example: "Jan", "Feb", etc.  An array of
+     * 13 strings (some calendars have 13 months), indexed by
+     * <code>Calendar.JANUARY</code>, <code>Calendar.FEBRUARY</code>, etc.
+
+     * @serial
+     */
+    String shortMonths[] = null;
+
+    /**
+     * Weekday strings. For example: "Sunday", "Monday", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>weekdays[0]</code> is ignored.
+     * @serial
+     */
+    String weekdays[] = null;
+
+    /**
+     * Short weekday strings. For example: "Sun", "Mon", etc.  An array
+     * of 8 strings, indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     * The element <code>shortWeekdays[0]</code> is ignored.
+     * @serial
+     */
+    String shortWeekdays[] = null;
+
+    /**
+     * AM and PM strings. For example: "AM" and "PM".  An array of
+     * 2 strings, indexed by <code>Calendar.AM</code> and
+     * <code>Calendar.PM</code>.
+     * @serial
+     */
+    String ampms[] = null;
+
+    /**
+     * Localized names of time zones in this locale.  This is a
+     * two-dimensional array of strings of size <em>n</em> by <em>m</em>,
+     * where <em>m</em> is at least 5.  Each of the <em>n</em> rows is an
+     * entry containing the localized names for a single <code>TimeZone</code>.
+     * Each such row contains (with <code>i</code> ranging from
+     * 0..<em>n</em>-1):
+     * <ul>
+     * <li><code>zoneStrings[i][0]</code> - time zone ID</li>
+     * <li><code>zoneStrings[i][1]</code> - long name of zone in standard
+     * time</li>
+     * <li><code>zoneStrings[i][2]</code> - short name of zone in
+     * standard time</li>
+     * <li><code>zoneStrings[i][3]</code> - long name of zone in daylight
+     * savings time</li>
+     * <li><code>zoneStrings[i][4]</code> - short name of zone in daylight
+     * savings time</li>
+     * </ul>
+     * The zone ID is <em>not</em> localized; it corresponds to the ID
+     * value associated with a system time zone object.  All other entries
+     * are localized names.  If a zone does not implement daylight savings
+     * time, the daylight savings time names are ignored.
+     * @see java.text.resources.DateFormatZoneData
+     * @see java.util.TimeZone
+     * @serial
+     */
+    String zoneStrings[][] = null;
+
+    /**
+     * Unlocalized date-time pattern characters. For example: 'y', 'd', etc.
+     * All locales use the same these unlocalized pattern characters.
+     */
+    static final String  patternChars = "GyMdkHmsSEDFwWahKz";
+
+    /**
+     * Localized date-time pattern characters. For example, a locale may
+     * wish to use 'u' rather than 'y' to represent years in its date format
+     * pattern strings.
+     * This string must be exactly 18 characters long, with the index of
+     * the characters described by <code>DateFormat.ERA_FIELD</code>,
+     * <code>DateFormat.YEAR_FIELD</code>, etc.  Thus, if the string were
+     * "Xz...", then localized patterns would use 'X' for era and 'z' for year.
+     * @serial
+     */
+    String  localPatternChars = null;
+
+    /* use serialVersionUID from JDK 1.1.4 for interoperability */
+    static final long serialVersionUID = -5987973545549424702L;
+
+    /**
+     * Gets era strings. For example: "AD" and "BC".
+     * @return the era strings.
+     */
+    public String[] getEras() {
+        return duplicate(eras);
+    }
+
+    /**
+     * Sets era strings. For example: "AD" and "BC".
+     * @param newEras the new era strings.
+     */
+    public void setEras(String[] newEras) {
+        eras = duplicate(newEras);
+    }
+
+    /**
+     * Gets month strings. For example: "January", "February", etc.
+     * @return the month strings.
+     */
+    public String[] getMonths() {
+        return duplicate(months);
+    }
+
+    /**
+     * Sets month strings. For example: "January", "February", etc.
+     * @param newMonths the new month strings.
+     */
+    public void setMonths(String[] newMonths) {
+        months = duplicate(newMonths);
+    }
+
+    /**
+     * Gets short month strings. For example: "Jan", "Feb", etc.
+     * @return the short month strings.
+     */
+    public String[] getShortMonths() {
+        return duplicate(shortMonths);
+    }
+
+    /**
+     * Sets short month strings. For example: "Jan", "Feb", etc.
+     * @param newShortMonths the new short month strings.
+     */
+    public void setShortMonths(String[] newShortMonths) {
+        shortMonths = duplicate(newShortMonths);
+    }
+
+    /**
+     * Gets weekday strings. For example: "Sunday", "Monday", etc.
+     * @return the weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     */
+    public String[] getWeekdays() {
+        return duplicate(weekdays);
+    }
+
+    /**
+     * Sets weekday strings. For example: "Sunday", "Monday", etc.
+     * @param newWeekdays the new weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     */
+    public void setWeekdays(String[] newWeekdays) {
+        weekdays = duplicate(newWeekdays);
+    }
+
+    /**
+     * Gets short weekday strings. For example: "Sun", "Mon", etc.
+     * @return the short weekday strings. Use <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc. to index the result array.
+     */
+    public String[] getShortWeekdays() {
+        return duplicate(shortWeekdays);
+    }
+
+    /**
+     * Sets short weekday strings. For example: "Sun", "Mon", etc.
+     * @param newShortWeekdays the new short weekday strings. The array should
+     * be indexed by <code>Calendar.SUNDAY</code>,
+     * <code>Calendar.MONDAY</code>, etc.
+     */
+    public void setShortWeekdays(String[] newShortWeekdays) {
+        shortWeekdays = duplicate(newShortWeekdays);
+    }
+
+    /**
+     * Gets ampm strings. For example: "AM" and "PM".
+     * @return the weekday strings.
+     */
+    public String[] getAmPmStrings() {
+        return duplicate(ampms);
+    }
+
+    /**
+     * Sets ampm strings. For example: "AM" and "PM".
+     * @param newAmpms the new ampm strings.
+     */
+    public void setAmPmStrings(String[] newAmpms) {
+        ampms = duplicate(newAmpms);
+    }
+
+    /**
+     * Gets timezone strings.
+     * @return the timezone strings.
+     */
+    public String[][] getZoneStrings() {
+        String[][] aCopy = new String[zoneStrings.length][];
+        for (int i = 0; i < zoneStrings.length; ++i)
+            aCopy[i] = duplicate(zoneStrings[i]);
+        return aCopy;
+    }
+
+    /**
+     * Sets timezone strings.
+     * @param newZoneStrings the new timezone strings.
+     */
+    public void setZoneStrings(String[][] newZoneStrings) {
+        String[][] aCopy = new String[newZoneStrings.length][];
+        for (int i = 0; i < newZoneStrings.length; ++i)
+            aCopy[i] = duplicate(newZoneStrings[i]);
+        zoneStrings = aCopy;
+    }
+
+    /**
+     * Gets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @return the localized date-time pattern characters.
+     */
+    public String getLocalPatternChars() {
+        return new String(localPatternChars);
+    }
+
+    /**
+     * Sets localized date-time pattern characters. For example: 'u', 't', etc.
+     * @param newLocalPatternChars the new localized date-time
+     * pattern characters.
+     */
+    public void setLocalPatternChars(String newLocalPatternChars) {
+        localPatternChars = new String(newLocalPatternChars);
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try
+        {
+            DateFormatSymbols other = (DateFormatSymbols)super.clone();
+            copyMembers(this, other);
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Override hashCode.
+     * Generates a hash code for the DateFormatSymbols object.
+     */
+    public int hashCode() {
+        int hashcode = 0;
+        for (int index = 0; index < this.zoneStrings[0].length; ++index)
+            hashcode ^= this.zoneStrings[0][index].hashCode();
+        return hashcode;
+    }
+
+    /**
+     * Override equals
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) return true;
+        if (obj == null || getClass() != obj.getClass()) return false;
+        DateFormatSymbols that = (DateFormatSymbols) obj;
+        return (Utility.arrayEquals(eras, that.eras)
+                && Utility.arrayEquals(months, that.months)
+                && Utility.arrayEquals(shortMonths, that.shortMonths)
+                && Utility.arrayEquals(weekdays, that.weekdays)
+                && Utility.arrayEquals(shortWeekdays, that.shortWeekdays)
+                && Utility.arrayEquals(ampms, that.ampms)
+                && Utility.arrayEquals(zoneStrings, that.zoneStrings)
+                && Utility.arrayEquals(localPatternChars,
+                                       that.localPatternChars));
+    }
+
+    // =======================privates===============================
+
+    /**
+     * Useful constant for defining timezone offsets.
+     */
+    static final int millisPerHour = 60*60*1000;
+
+    /**
+     * Cache to hold the LocaleElements and DateFormatZoneData ResourceBundles
+     * of a Locale.
+     */
+    private static Hashtable cachedLocaleData = new Hashtable(3);
+
+    /**
+     * cache to hold time zone localized strings. Keyed by Locale
+     */
+    private static Hashtable cachedZoneData = new Hashtable();
+
+    /* Utility methods for fetching resource bundles */
+    private ResourceBundle getLocaleElements(Locale desiredLocale) {
+    return ResourceBundle.getBundle("java.text.resources.LocaleElements",
+                    desiredLocale);
+    }
+
+    private ResourceBundle getZoneData(Locale desiredLocale) {
+    return ResourceBundle.getBundle("java.text.resources.DateFormatZoneData",
+                    desiredLocale);
+    }
+
+    /**
+     * Look up resource data for the desiredLocale in the cache; update the
+     * cache if necessary.
+     */
+    private ResourceBundle[] cacheLookup(Locale desiredLocale) {
+	ResourceBundle[] rbs = new ResourceBundle[2];
+	SoftReference[] data
+	    = (SoftReference[])cachedLocaleData.get(desiredLocale);
+	if (data == null) {
+	    rbs[0] = getLocaleElements(desiredLocale);
+	    rbs[1] = getZoneData(desiredLocale);
+	    data = new SoftReference[] { new SoftReference(rbs[0]),
+					     new SoftReference(rbs[1]) };
+	    cachedLocaleData.put(desiredLocale, data);
+	} else {
+	    ResourceBundle r;
+	    if ((r = (ResourceBundle)data[0].get()) == null) {
+		r = getLocaleElements(desiredLocale);
+		data[0] = new SoftReference(r);
+	    }
+	    rbs[0] = r;
+	    if ((r = (ResourceBundle)data[1].get()) == null) {
+		r = getZoneData(desiredLocale);
+		data[1] = new SoftReference(r);
+	    }
+	    rbs[1] = r;
+	}
+	return rbs;
+    }
+
+    /**
+     * Load time zone localized strings. Enumerate all keys (except
+     * "localPatternChars" and "zoneStrings").
+     */
+    private String[][] loadZoneStrings(Locale desiredLocale,
+				       ResourceBundle rsrc)
+    {
+	String[][] zones;
+	SoftReference data = (SoftReference)cachedZoneData.get(desiredLocale);
+	if (data == null || ((zones = (String[][])data.get()) == null)) {
+	    Vector vec = new Vector();
+	    Enumeration keys = rsrc.getKeys();
+	    while(keys.hasMoreElements()) {
+		String key = (String)keys.nextElement();
+		if (!key.equals("localPatternChars") &&
+		    !key.equals("zoneStrings")) {
+		    vec.add(rsrc.getObject(key));
+		}
+	    }
+	    zones = new String[vec.size()][];
+	    vec.toArray(zones);
+	    data = new SoftReference(zones);
+	    cachedZoneData.put(desiredLocale, data);
+	}
+	return zones;
+    }
+
+    private void initializeData(Locale desiredLocale)
+    {
+	int i;
+	ResourceBundle[] rbs = cacheLookup(desiredLocale);
+	ResourceBundle resource = rbs[0];
+	ResourceBundle zoneResource = rbs[1];
+
+	// FIXME: cache only ResourceBundle. Hence every time, will do
+	// getObject(). This won't be necessary if the Resource itself
+	// is cached.
+	eras = (String[])resource.getObject("Eras");
+        months = resource.getStringArray("MonthNames");
+        shortMonths = resource.getStringArray("MonthAbbreviations");
+        String[] lWeekdays = resource.getStringArray("DayNames");
+        weekdays = new String[8];
+        weekdays[0] = "";  // 1-based
+        for (i=0; i<lWeekdays.length; i++)
+            weekdays[i+1] = lWeekdays[i];
+        String[] sWeekdays = resource.getStringArray("DayAbbreviations");
+        shortWeekdays = new String[8];
+        shortWeekdays[0] = "";  // 1-based
+        for (i=0; i<sWeekdays.length; i++)
+            shortWeekdays[i+1] = sWeekdays[i];
+        ampms = resource.getStringArray("AmPmMarkers");
+	zoneStrings = (String[][])loadZoneStrings(desiredLocale,
+						  zoneResource);
+        localPatternChars
+            = (String) zoneResource.getObject("localPatternChars");
+    }
+
+    /**
+     * Package private: used by SimpleDateFormat
+     * Gets the index for the given time zone ID to obtain the timezone
+     * strings for formatting. The time zone ID is just for programmatic
+     * lookup. NOT LOCALIZED!!!
+     * @param ID the given time zone ID.
+     * @return the index of the given time zone ID.  Returns -1 if
+     * the given time zone ID can't be located in the DateFormatSymbols object.
+     * @see java.util.SimpleTimeZone
+     */
+    final int getZoneIndex (String ID)
+    {
+        for (int index=0; index<zoneStrings.length; index++)
+        {
+            if (ID.equalsIgnoreCase(zoneStrings[index][0])) return index;
+        }
+
+        return -1;
+    }
+
+    /**
+     * Clones an array of Strings.
+     * @param srcArray the source array to be cloned.
+     * @param count the number of elements in the given source array.
+     * @return a cloned array.
+     */
+    private final String[] duplicate(String[] srcArray)
+    {
+        String[] dstArray = new String[srcArray.length];
+        System.arraycopy(srcArray, 0, dstArray, 0, srcArray.length);
+        return dstArray;
+    }
+
+    /**
+     * Clones all the data members from the source DateFormatSymbols to
+     * the target DateFormatSymbols. This is only for subclasses.
+     * @param src the source DateFormatSymbols.
+     * @param dst the target DateFormatSymbols.
+     */
+    private final void copyMembers(DateFormatSymbols src, DateFormatSymbols dst)
+    {
+        dst.eras = duplicate(src.eras);
+        dst.months = duplicate(src.months);
+        dst.shortMonths = duplicate(src.shortMonths);
+        dst.weekdays = duplicate(src.weekdays);
+        dst.shortWeekdays = duplicate(src.shortWeekdays);
+        dst.ampms = duplicate(src.ampms);
+        for (int i = 0; i < dst.zoneStrings.length; ++i)
+            dst.zoneStrings[i] = duplicate(src.zoneStrings[i]);
+        dst.localPatternChars = new String (src.localPatternChars);
+    }
+
+    /**
+     * Compares the equality of the two arrays of String.
+     * @param current this String array.
+     * @param other that String array.
+     */
+    private final boolean equals(String[] current, String[] other)
+    {
+        int count = current.length;
+
+        for (int i = 0; i < count; ++i)
+            if (!current[i].equals(other[i]))
+                return false;
+        return true;
+    }
+
+}
diff --git a/src/com/ibm/text/DecimalFormat.java b/src/com/ibm/text/DecimalFormat.java
new file mode 100755
index 0000000..a6a791b
--- /dev/null
+++ b/src/com/ibm/text/DecimalFormat.java
@@ -0,0 +1,2771 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/DecimalFormat.java,v $ 
+ * $Date: 2000/03/10 04:07:19 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.text.Format;
+import java.text.ParsePosition;
+import java.text.FieldPosition;
+import java.math.BigInteger;
+import java.util.ResourceBundle;
+import java.util.Locale;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.Hashtable;
+
+/**
+ * <code>DecimalFormat</code> is a concrete subclass of
+ * <code>NumberFormat</code> that formats decimal numbers. It has a variety of
+ * features designed to make it possible to parse and format numbers in any
+ * locale, including support for Western, Arabic, or Indic digits.  It also
+ * supports different flavors of numbers, including integers (123), fixed-point
+ * numbers (123.4), scientific notation (1.23E4), percentages (12%), and
+ * currency amounts ($123).  All of these flavors can be easily localized.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormat</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong> or
+ * <strong><font face=helvetica color=red>CHANGED</font></strong>.</strong>
+ *
+ * <p>To obtain a <code>NumberFormat</code> for a specific locale (including the
+ * default locale) call one of <code>NumberFormat</code>'s factory methods such
+ * as <code>getInstance()</code>. Do not call the <code>DecimalFormat</code>
+ * constructors directly, unless you know what you are doing, since the
+ * <code>NumberFormat</code> factory methods may return subclasses other than
+ * <code>DecimalFormat</code>. If you need to customize the format object, do
+ * something like this:
+ *
+ * <blockquote><pre>
+ * NumberFormat f = NumberFormat.getInstance(loc);
+ * if (f instanceof DecimalFormat) {
+ *     ((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
+ * }
+ * </pre></blockquote>
+ *
+ * <p>A <code>DecimalFormat</code> comprises a <em>pattern</em> and a set of
+ * <em>symbols</em>.  The pattern may be set directly using
+ * <code>applyPattern()</code>, or indirectly using the API methods.  The
+ * symbols are stored in a <code>DecimalFormatSymbols</code> object.  When using
+ * the <code>NumberFormat</code> factory methods, the pattern and symbols are
+ * read from localized <code>ResourceBundle</code>s in the package
+ * <code>java.text.resource</code>.
+ *
+ * <p><strong>Example</strong>
+ *
+ * <blockquote><pre>
+ * <strong>// Print out a number using the localized number, currency,
+ * // and percent format for each locale</strong>
+ * Locale[] locales = NumberFormat.getAvailableLocales();
+ * double myNumber = -1234.56;
+ * NumberFormat form;
+ * for (int j=0; j<3; ++j) {
+ *     System.out.println("FORMAT");
+ *     for (int i = 0; i < locales.length; ++i) {
+ *         if (locales[i].getCountry().length() == 0) {
+ *            // Skip language-only locales
+ *            continue;
+ *         }
+ *         System.out.print(locales[i].getDisplayName());
+ *         switch (j) {
+ *         case 0:
+ *             form = NumberFormat.getInstance(locales[i]); break;
+ *         case 1:
+ *             form = NumberFormat.getCurrencyInstance(locales[i]); break;
+ *         default:
+ *             form = NumberFormat.getPercentInstance(locales[i]); break;
+ *         }
+ *         try {
+ *             // Assume form is a DecimalFormat
+ *             System.out.print(": " + ((DecimalFormat) form).toPattern()
+ *                              + " -> " + form.format(myNumber));
+ *         } catch (IllegalArgumentException e) {}
+ *         try {
+ *             System.out.println(" -> " + form.parse(form.format(myNumber)));
+ *         } catch (ParseException e) {}
+ *     }
+ * }
+ * </pre></blockquote>
+ *
+ * <p><strong>Notes</strong>
+ *
+ * <p>A <code>DecimalFormat</code> pattern contains a postive and negative
+ * subpattern, for example, "#,##0.00;(#,##0.00)".  Each subpattern has a
+ * prefix, numeric part, and suffix.  If there is no explicit negative
+ * subpattern, the localized minus sign, typically '-', is prefixed to the
+ * positive form. That is, "0.00" alone is equivalent to "0.00;-0.00".  If there
+ * is an explicit negative subpattern, it serves only to specify the negative
+ * prefix and suffix; the number of digits, minimal digits, and other
+ * characteristics are all the same as the positive pattern. That means that
+ * "#,##0.0#;(#)" has precisely the same result as "#,##0.0#;(#,##0.0#)".
+ *
+ * <p>The prefixes, suffixes, and various symbols used for infinity, digits,
+ * thousands separators, decimal separators, etc. may be set to arbitrary
+ * values, and they will appear properly during formatting.  However, care must
+ * be taken that the symbols and strings do not conflict, or parsing will be
+ * unreliable.  For example, either the positive and negative prefixes or the
+ * suffixes must be distinct for <code>DecimalFormat.parse()</code> to be able
+ * to distinguish positive from negative values.  Another example is that the
+ * decimal separator and thousands separator should be distinct characters, or
+ * parsing will be impossible.
+ *
+ * <p>The grouping separator is commonly used for thousands, but in some
+ * countries it separates ten-thousands. The grouping size is a constant number
+ * of digits between the grouping characters, such as 3 for 100,000,000 or 4 for
+ * 1,0000,0000.  If you supply a pattern with multiple grouping characters, the
+ * interval between the last one and the end of the integer is the one that is
+ * used. So "#,##,###,####" == "######,####" == "##,####,####".
+ *
+ * <p><code>DecimalFormat</code> parses all Unicode characters that represent
+ * decimal digits, as defined by <code>Character.digit()</code>.  In addition,
+ * <code>DecimalFormat</code> also recognizes as digits the ten consecutive
+ * characters starting with the localized zero digit defined in the
+ * <code>DecimalFormatSymbols</code> object.  During formatting, the
+ * <code>DecimalFormatSymbols</code>-based digits are output.
+ *
+ * <p>Illegal patterns, such as "#.#.#" or "#.###,###", will cause
+ * <code>DecimalFormat</code> to throw an <code>IllegalArgumentException</code>
+ * with a message that describes the problem.
+ *
+ * <p>If <code>DecimalFormat.parse(String, ParsePosition)</code> fails to parse
+ * a string, it returns <code>null</code> and leaves the parse position
+ * unchanged.  The convenience method <code>DecimalFormat.parse(String)</code>
+ * indicates parse failure by throwing a <code>ParseException</code>.
+ *
+ * <p><strong>Special Cases</strong>
+ *
+ * <p><code>NaN</code> is formatted as a single character, typically
+ * <code>&#92;uFFFD</code>.  This character is determined by the
+ * <code>DecimalFormatSymbols</code> object.  This is the only value for which
+ * the prefixes and suffixes are not used.
+ *
+ * <p>Infinity is formatted as a single character, typically
+ * <code>&#92;u221E</code>, with the positive or negative prefixes and suffixes
+ * applied.  The infinity character is determined by the
+ * <code>DecimalFormatSymbols</code> object.
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Scientific Notation</strong>
+ *
+ * <p>Numbers in scientific notation are expressed as the product of a mantissa
+ * and a power of ten, for example, 1234 can be expressed as 1.234 x 10^3.  The
+ * mantissa is often in the range 1.0 <= x < 10.0, but it need not be.
+ * <code>DecimalFormat</code> can be instructed to format and parse scientific
+ * notation through the API or via a pattern.  In a pattern, the exponent
+ * character immediately followed by one or more digit characters indicates
+ * scientific notation.  Example: "0.###E0" formats the number 1234 as
+ * "1.234E3".
+ *
+ * <ul>
+ * <li>The number of digit characters after the exponent character gives the
+ * minimum exponent digit count.  There is no maximum.  Negative exponents are
+ * formatted using the localized minus sign, <em>not</em> the prefix and suffix
+ * from the pattern.  This allows patterns such as "0.###E0 m/s".  To prefix
+ * positive exponents with a localized plus sign, specify '+' between the
+ * exponent and the digits: "0.###E+0" will produce formats "1E+1", "1E+0",
+ * "1E-1", etc.  (In localized patterns, use the localized plus sign rather than
+ * '+'.)
+ *
+ * <li>The minimum number of integer digits is achieved by adjusting the
+ * exponent.  Example: 0.00123 formatted with "00.###E0" yields "12.3E-4".  This
+ * only happens if there is no maximum number of integer digits.  If there is a
+ * maximum, then the minimum number of integer digits is fixed at one.
+ *
+ * <li>The maximum number of integer digits, if present, specifies the exponent
+ * grouping.  The most common use of this is to generate <em>engineering
+ * notation</em>, in which the exponent is a multiple of three, e.g.,
+ * "##0.###E0".  The number 12345 is formatted using "##0.####E0" as "12.345E3".
+ *
+ * <li>The number of significant digits is the sum of the <em>minimum
+ * integer</em> and <em>maximum fraction</em> digits, and is unaffected by the
+ * maximum integer digits.  If this sum is zero, then all significant digits are
+ * shown.  The number of significant digits limits the total number of integer
+ * and fraction digits that will be shown in the mantissa; it does not affect
+ * parsing.  For example, 12345 formatted with "##0.##E0" is "12.3E3".
+ *
+ * <li>Exponential patterns may not contain grouping separators.
+ * </ul>
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Padding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports padding the result of
+ * <code>format()</code> to a specific width.  Padding may be specified either
+ * through the API or through the pattern syntax.  In a pattern the pad escape
+ * character, followed by a single pad character, causes padding to be parsed
+ * and formatted.  The pad escape character is '*' in unlocalized patterns, and
+ * can be localized using <code>DecimalFormatSymbols.setPadEscape()</code>.  For
+ * example, <code>"$*x#,##0.00"</code> formats 123 to <code>"$xx123.00"</code>,
+ * and 1234 to <code>"$1,234.00"</code>.
+ *
+ * <ul>
+ * <li>When padding is in effect, the width of the positive subpattern,
+ * including prefix and suffix, determines the format width.  For example, in
+ * the pattern <code>"* #0 o''clock"</code>, the format width is 10.
+ *
+ * <li>Some parameters which usually do not matter have meaning when padding is
+ * used, because the pattern width is significant with padding.  In the pattern
+ * "^ ##,##,#,##0.##", the format width is 14.  The initial characters "##,##,"
+ * do not affect the grouping size or maximum integer digits, but they do affect
+ * the format width.
+ *
+ * <li>Padding may be inserted at one of four locations: before the prefix,
+ * after the prefix, before the suffix, or after the suffix.  If padding is
+ * specified in any other location, <code>DecimalFormat.applyPattern()</code>
+ * throws an <code>IllegalArgumentException</code>.  If there is no prefix,
+ * before the prefix and after the prefix are equivalent, likewise for the
+ * suffix.
+ *
+ * <li>The pad character may not be a quote.
+ * </ul>
+ *
+ * <p>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * <strong>Rounding</strong>
+ *
+ * <p><code>DecimalFormat</code> supports rounding to a specific increment.  For
+ * example, 1230 rounded to the nearest 50 is 1250.  1.234 rounded to the
+ * nearest 0.65 is 1.3.  The rounding increment may be specified through the API
+ * or in a pattern.  To specify a rounding increment in a pattern, include the
+ * increment in the pattern itself.  "#,#50" specifies a rounding increment of
+ * 50.  "#,##0.05" specifies a rounding increment of 0.05.
+ *
+ * <ul>
+ * <li>Rounding only affects the string produced by formatting.  It does
+ * not affect parsing or change any numerical values.
+ *
+ * <li>A <em>rounding mode</em> determines how values are rounded; see the
+ * <code>java.math.BigDecimal</code> documentation for a description of the
+ * modes.  Rounding increments specified in patterns use the default mode,
+ * <code>ROUND_HALF_EVEN</code>.
+ *
+ * <li>Some locales use rounding in their currency formats to reflect the
+ * smallest currency denomination.
+ *
+ * <li>In a pattern, digits '1' through '9' specify rounding, but otherwise
+ * behave identically to digit '0'.
+ * </ul>
+ *
+ * <p><strong>Pattern Syntax</strong>
+ * <pre>
+ * pattern    := subpattern{';' subpattern}
+ * subpattern := {prefix}number{suffix}
+ * number     := integer{'.' fraction}{exponent}
+ * prefix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * suffix     := '&#92;u0000'..'&#92;uFFFD' - specialCharacters
+ * integer    := '#'* '0'* '0'
+ * fraction   := '0'* '#'*
+ * exponent   := 'E' {'+'} '0'* '0'
+ * padSpec    := '*' padChar
+ * padChar    := '&#92;u0000'..'&#92;uFFFD' - quote
+ * &#32;
+ * Notation:
+ *   X*       0 or more instances of X
+ *   { X }    0 or 1 instances of X
+ *   X..Y     any character from X up to Y, inclusive
+ *   S - T    characters in S, except those in T
+ * </pre>
+ * The first subpattern is for positive numbers. The second (optional)
+ * subpattern is for negative numbers.
+ * 
+ * <p>Not indicated in the BNF syntax above:
+ * <ul><li>The grouping separator ',' can occur inside the integer portion between the
+ * most significant digit and the least significant digit.
+ *
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * The pad specifier <code>padSpec</code> may appear before the prefix,
+ * after the prefix, before the suffix, after the suffix, or not at all.
+ *
+ * <li>
+ * <strong><font face=helvetica color=red>NEW</font></strong>
+ * In place of '0', the digits '1' through '9' may be used to
+ * indicate a rounding increment.
+ * </ul>
+ *
+ * <p><strong>Special Pattern Characters</strong>
+ *
+ * <p>Here are the special characters used in the pattern, with notes on their
+ * usage.  Special characters must be quoted, unless noted otherwise, if they
+ * are to appear in the prefix or suffix.  This does not apply to those listed
+ * with location "prefix or suffix."  Such characters should only be quoted in
+ * order to remove their special meaning.
+ *
+ * <p><table border=1>
+ * <tr><th>Symbol<th>Location<th>Meaning</tr>
+ * <tr><td>0-9<td>Number<td>Digit.
+ *                  <strong><font face=helvetica color=red>NEW</font></strong>
+ *                  '1' through '9' indicate rounding</tr>
+ * <tr><td>#<td>Number<td>Digit, zero shows as absent</tr>
+ * <tr><td>.<td>Number<td>Decimal separator or monetary decimal separator</tr>
+ * <tr><td>,<td>Number<td>Grouping separator</tr>
+ * <tr><td>E<td>Number
+ *          <td>Separates mantissa and exponent in scientific notation.
+ *              <em>Need not be quoted in prefix or suffix.</em></tr>
+ * <tr><td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         +<td>Exponent
+ *          <td>Prefix positive exponents with localized plus sign.
+ *              <em>Need not be quoted in prefix or suffix.</em></tr>
+ * <tr><td>;<td>Subpattern boundary
+ *          <td>Separates positive and negative subpatterns</tr>
+ * <tr><td>%<td>Prefix or suffix<td>Multiply by 100 and show as percentage</tr>
+ * <tr><td>&#92;u2030<td>Prefix or suffix
+ *                   <td>Multiply by 1000 and show as per mille</tr>
+ * <tr><td>&#92;u00A4<td>Prefix or suffix
+ *                   <td>Currency sign, replaced by currency symbol.  If
+ *                   doubled, replaced by international currency symbol.
+ *                   If present in a pattern, the monetary decimal separator
+ *                   is used instead of the decimal separator.</tr>
+ * <tr><td>'<td>Prefix or suffix
+ *          <td>Used to quote special characters in a prefix or suffix,
+ *              for example, <code>"'#'#"</code> formats 123 to
+ *              <code>"#123"</code>.  To create a single quote
+ *              itself, use two in a row: <code>"# o''clock"</code>.</tr>
+ * <tr><td><strong><font face=helvetica color=red>NEW</font></strong>
+ *         *<td>Prefix or suffix boundary
+ *          <td>Pad escape, precedes pad character</tr>
+ * </table>
+ * </pre>
+ *
+ *
+ * @see          java.text.Format
+ * @see          java.text.NumberFormat
+ * @see          java.text.ChoiceFormat
+ * @version      1.48 09/21/98
+ * @author       Mark Davis
+ * @author       Alan Liu
+ * */
+public class DecimalFormat extends NumberFormat {
+
+    /**
+     * Create a DecimalFormat using the default pattern and symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @see java.text.NumberFormat#getInstance
+     * @see java.text.NumberFormat#getNumberInstance
+     * @see java.text.NumberFormat#getCurrencyInstance
+     * @see java.text.NumberFormat#getPercentInstance
+     */
+    public DecimalFormat() {
+        // [NEW]
+        Locale def = Locale.getDefault();
+        String pattern = getPattern(def, 0);
+        // Always applyPattern after the symbols are set
+        this.symbols = new DecimalFormatSymbols(def);
+        applyPattern(pattern, false);
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and the symbols
+     * for the default locale. This is a convenient way to obtain a
+     * DecimalFormat when internationalization is not the main concern.
+     * <p>
+     * To obtain standard formats for a given locale, use the factory methods
+     * on NumberFormat such as getNumberInstance. These factories will
+     * return the most appropriate sub-class of NumberFormat for a given
+     * locale.
+     * @param pattern A non-localized pattern string.
+     * @exception IllegalArgumentException if the given pattern is invalid.
+     * @see java.text.NumberFormat#getInstance
+     * @see java.text.NumberFormat#getNumberInstance
+     * @see java.text.NumberFormat#getCurrencyInstance
+     * @see java.text.NumberFormat#getPercentInstance
+     */
+    public DecimalFormat(String pattern) {
+    // Always applyPattern after the symbols are set
+        this.symbols = new DecimalFormatSymbols( Locale.getDefault() );
+        applyPattern( pattern, false );
+    }
+
+
+    /**
+     * Create a DecimalFormat from the given pattern and symbols.
+     * Use this constructor when you need to completely customize the
+     * behavior of the format.
+     * <p>
+     * To obtain standard formats for a given
+     * locale, use the factory methods on NumberFormat such as
+     * getInstance or getCurrencyInstance. If you need only minor adjustments
+     * to a standard format, you can modify the format returned by
+     * a NumberFormat factory method.
+     * @param pattern a non-localized pattern string
+     * @param symbols the set of symbols to be used
+     * @exception IllegalArgumentException if the given pattern is invalid
+     * @see java.text.NumberFormat#getInstance
+     * @see java.text.NumberFormat#getNumberInstance
+     * @see java.text.NumberFormat#getCurrencyInstance
+     * @see java.text.NumberFormat#getPercentInstance
+     * @see java.text.DecimalFormatSymbols
+     */
+    public DecimalFormat (String pattern, DecimalFormatSymbols symbols) {
+        // Always applyPattern after the symbols are set
+        this.symbols = (DecimalFormatSymbols)symbols.clone();
+        applyPattern( pattern, false );
+    }
+
+
+    // Overrides
+    public StringBuffer format(double number, StringBuffer result,
+                               FieldPosition fieldPosition)
+    {
+        //FP:fieldPosition.setBeginIndex(0);
+        //FP:fieldPosition.setEndIndex(0);
+
+        if (Double.isNaN(number))
+        {
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            result.append(symbols.getNaN());
+
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setEndIndex(result.length());
+
+            addPadding(result, false, false /*ignored*/);
+            return result;
+        }
+
+        /* Detecting whether a double is negative is easy with the exception of
+         * the value -0.0.  This is a double which has a zero mantissa (and
+         * exponent), but a negative sign bit.  It is semantically distinct from
+         * a zero with a positive sign bit, and this distinction is important
+         * to certain kinds of computations.  However, it's a little tricky to
+         * detect, since (-0.0 == 0.0) and !(-0.0 < 0.0).  How then, you may
+         * ask, does it behave distinctly from +0.0?  Well, 1/(-0.0) ==
+         * -Infinity.  Proper detection of -0.0 is needed to deal with the
+         * issues raised by bugs 4106658, 4106667, and 4147706.  Liu 7/6/98.
+         */
+        boolean isNegative = (number < 0.0) || (number == 0.0 && 1/number < 0.0);
+        if (isNegative) number = -number;
+
+        // Do this BEFORE checking to see if value is infinite!
+        if (multiplier != 1) number *= multiplier;
+
+        // Apply rounding after multiplier
+        if (roundingDouble > 0.0) {
+            number = roundingDouble
+                * round(number / roundingDouble, roundingMode, isNegative);
+        }
+
+        if (Double.isInfinite(number))
+        {
+            result.append(isNegative ? negativePrefix : positivePrefix);
+
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            result.append(symbols.getInfinity());
+
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:eydfieldPosition.setEndIndex(result.length());
+
+            result.append(isNegative ? negativeSuffix : positiveSuffix);
+
+            addPadding(result, true, isNegative);
+            return result;
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                      getMinimumIntegerDigits() + getMaximumFractionDigits() :
+                      getMaximumFractionDigits(),
+                      !useExponentialNotation);
+
+            return subformat(result, fieldPosition, isNegative, false);
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Round a double value to the nearest integer according to the
+     * given mode.
+     * @param a the absolute value of the number to be rounded
+     * @param mode a BigDecimal rounding mode
+     * @param isNegative true if the number to be rounded is negative
+     * @return the absolute value of the rounded result
+     */
+    private static double round(double a, int mode, boolean isNegative) {
+        switch (mode) {
+        case java.math.BigDecimal.ROUND_CEILING:
+            return isNegative ? Math.floor(a) : Math.ceil(a);
+        case java.math.BigDecimal.ROUND_FLOOR:
+            return isNegative ? Math.ceil(a) : Math.floor(a);
+        case java.math.BigDecimal.ROUND_DOWN:
+            return Math.floor(a);
+        case java.math.BigDecimal.ROUND_UP:
+            return Math.ceil(a);
+        case java.math.BigDecimal.ROUND_HALF_EVEN:
+            // We should be able to just return Math.rint(a), but this
+            // doesn't work in some VMs.
+            {
+                double f = Math.floor(a);
+                if ((a - f) != 0.5) {
+                    return Math.rint(a);
+                }
+                f /= 2.0;
+                return f == Math.floor(f) ? Math.floor(a) : (Math.floor(a) + 1.0);
+            }
+        case java.math.BigDecimal.ROUND_HALF_DOWN:
+            return ((a - Math.floor(a)) <= 0.5) ? Math.floor(a) : Math.ceil(a);
+        case java.math.BigDecimal.ROUND_HALF_UP:
+            return ((a - Math.floor(a)) < 0.5) ? Math.floor(a) : Math.ceil(a);
+        case java.math.BigDecimal.ROUND_UNNECESSARY:
+            if (a != Math.floor(a)) {
+                throw new ArithmeticException("Rounding necessary");
+            }
+            return a;
+        default:
+            throw new IllegalArgumentException("Invalid rounding mode: " + mode);
+        }
+    }
+
+    public StringBuffer format(long number, StringBuffer result,
+                               FieldPosition fieldPosition)
+    {
+        //FP:fieldPosition.setBeginIndex(0);
+        //FP:fieldPosition.setEndIndex(0);
+
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        // [NEW]
+        if (roundingIncrement != null) {
+            return format(java.math.BigDecimal.valueOf(number), result, fieldPosition);
+        }
+
+        boolean isNegative = (number < 0);
+        if (isNegative) number = -number;
+
+        // In general, long values always represent real finite numbers, so
+        // we don't have to check for +/- Infinity or NaN.  However, there
+        // is one case we have to be careful of:  The multiplier can push
+        // a number near MIN_VALUE or MAX_VALUE outside the legal range.  We
+        // check for this before multiplying, and if it happens we use BigInteger
+        // instead.
+        // [NEW]
+        if (multiplier != 1) {
+            boolean tooBig = false;
+            if (number < 0) { // This can only happen if number == Long.MIN_VALUE
+                long cutoff = Long.MIN_VALUE / multiplier;
+                tooBig = (number < cutoff);
+            } else {
+                long cutoff = Long.MAX_VALUE / multiplier;
+                tooBig = (number > cutoff);
+            }
+            if (tooBig) {
+                return format(BigInteger.valueOf(isNegative ? -number : number),
+                              result, fieldPosition);
+            }
+        }
+
+        number *= multiplier;
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                          getMinimumIntegerDigits() + getMaximumFractionDigits() : 0);
+
+            return subformat(result, fieldPosition, isNegative, true);
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigInteger number.
+     */
+    public StringBuffer format(BigInteger number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        // If we are to do rounding, we need to move into the BigDecimal
+        // domain in order to do divide/multiply correctly.
+        if (roundingIncrement != null) {
+            return format(new java.math.BigDecimal(number), result, fieldPosition);
+        }
+
+        if (multiplier != 1) {
+            number = number.multiply(BigInteger.valueOf(multiplier));
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                          getMinimumIntegerDigits() + getMaximumFractionDigits() : 0);
+
+            return subformat(result, fieldPosition, number.signum() < 0, false);
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal number.
+     */
+    public StringBuffer format(java.math.BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        if (multiplier != 1) {
+            number = number.multiply(java.math.BigDecimal.valueOf(multiplier));
+        }
+
+        if (roundingIncrement != null) {
+            number = number.divide(roundingIncrement, 0, roundingMode)
+                    .multiply(roundingIncrement);
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                      getMinimumIntegerDigits() + getMaximumFractionDigits() :
+                      getMaximumFractionDigits(),
+                      !useExponentialNotation);
+            return subformat(result, fieldPosition, number.signum() < 0, false);
+        }        
+    }
+
+    //This has been removed pending addition of com.ibm.math package to ICU4J
+    /*
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal number.
+     *
+    public StringBuffer format(com.ibm.math.BigDecimal number, StringBuffer result,
+                               FieldPosition fieldPosition) {
+        /* This method is just a copy of the corresponding java.math.BigDecimal
+         * method for now.  It isn't very efficient since it must create a
+         * conversion object to do math on the rounding increment.  In the
+         * future we may try to clean this up, or even better, limit our support
+         * to just one flavor of BigDecimal.
+         *
+        if (multiplier != 1) {
+            number = number.multiply(com.ibm.math.BigDecimal.valueOf(multiplier));
+        }
+
+        if (roundingIncrement != null) {
+            com.ibm.math.BigDecimal ri = new com.ibm.math.BigDecimal(roundingIncrement);
+            number = number.divide(ri, 0, roundingMode)
+                    .multiply(ri);
+        }
+
+        // At this point we are guaranteed a nonnegative finite
+        // number.
+        synchronized(digitList) {
+            digitList.set(number, useExponentialNotation ?
+                      getMinimumIntegerDigits() + getMaximumFractionDigits() :
+                      getMaximumFractionDigits(),
+                      !useExponentialNotation);
+            return subformat(result, fieldPosition, number.signum() < 0, false);
+        }        
+    }
+    */
+
+    /**
+     * Complete the formatting of a finite number.  On entry, the digitList must
+     * be filled in with the correct digits.
+     */
+    private StringBuffer subformat(StringBuffer result, FieldPosition fieldPosition,
+                   boolean isNegative, boolean isInteger)
+    {
+        // NOTE: This isn't required anymore because DigitList takes care of this.
+        //
+        //  // The negative of the exponent represents the number of leading
+        //  // zeros between the decimal and the first non-zero digit, for
+        //  // a value < 0.1 (e.g., for 0.00123, -fExponent == 2).  If this
+        //  // is more than the maximum fraction digits, then we have an underflow
+        //  // for the printed representation.  We recognize this here and set
+        //  // the DigitList representation to zero in this situation.
+        //
+        //  if (-digitList.decimalAt >= getMaximumFractionDigits())
+        //  {
+        //      digitList.count = 0;
+        //  }
+
+        int i;
+        char zero = symbols.getZeroDigit();
+        int zeroDelta = zero - '0'; // '0' is the DigitList representation of zero
+        char grouping = symbols.getGroupingSeparator();
+        char decimal = isCurrencyFormat ?
+            symbols.getMonetaryDecimalSeparator() :
+            symbols.getDecimalSeparator();
+        int maxIntDig = getMaximumIntegerDigits();
+        int minIntDig = getMinimumIntegerDigits();
+
+        /* Per bug 4147706, DecimalFormat must respect the sign of numbers which
+         * format as zero.  This allows sensible computations and preserves
+         * relations such as signum(1/x) = signum(x), where x is +Infinity or
+         * -Infinity.  Prior to this fix, we always formatted zero values as if
+         * they were positive.  Liu 7/6/98.
+         */
+        if (digitList.isZero())
+        {
+            digitList.decimalAt = 0; // Normalize
+        }
+
+        result.append(isNegative ? negativePrefix : positivePrefix);
+
+        if (useExponentialNotation)
+        {
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:{
+                //FP:fieldPosition.setBeginIndex(result.length());
+                //FP:fieldPosition.setEndIndex(-1);
+            //FP:}
+            //FP:else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            //FP:{
+                //FP:fieldPosition.setBeginIndex(-1);
+            //FP:}
+
+            // Minimum integer digits are handled in exponential format by
+            // adjusting the exponent.  For example, 0.01234 with 3 minimum
+            // integer digits is "123.4E-4".
+
+            // Maximum integer digits are interpreted as indicating the
+            // repeating range.  This is useful for engineering notation, in
+            // which the exponent is restricted to a multiple of 3.  For
+            // example, 0.01234 with 3 maximum integer digits is "12.34e-3".
+            // If maximum integer digits are defined and are larger than
+            // minimum integer digits, then minimum integer digits are
+            // ignored.
+
+            int exponent = digitList.decimalAt;
+            if (maxIntDig > 1 && maxIntDig != minIntDig) {
+                // A exponent increment is defined; adjust to it.
+                exponent = (exponent > 0) ? (exponent - 1) / maxIntDig
+                                          : (exponent / maxIntDig) - 1;
+                exponent *= maxIntDig;
+            } else {
+                // No exponent increment is defined; use minimum integer digits.
+                // If none is specified, as in "#E0", generate 1 integer digit.
+                exponent -= (minIntDig > 0 || getMinimumFractionDigits() > 0)
+                    ? minIntDig : 1;
+            }
+
+            // We now output a minimum number of digits, and more if there
+            // are more digits, up to the maximum number of digits.  We
+            // place the decimal point after the "integer" digits, which
+            // are the first (decimalAt - exponent) digits.
+            int minimumDigits = minIntDig
+                                + getMinimumFractionDigits();
+            // The number of integer digits is handled specially if the number
+            // is zero, since then there may be no digits.
+            int integerDigits = digitList.isZero() ? minIntDig :
+                digitList.decimalAt - exponent;
+            int totalDigits = digitList.count;
+            if (minimumDigits > totalDigits) totalDigits = minimumDigits;
+            if (integerDigits > totalDigits) totalDigits = integerDigits;
+
+            for (i=0; i<totalDigits; ++i)
+            {
+                if (i == integerDigits)
+                {
+                    // Record field information for caller.
+                    //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+                    //FP:fieldPosition.setEndIndex(result.length());
+
+                    result.append(decimal);
+
+                    // Record field information for caller.
+                    //FP:if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+                    //FP:fieldPosition.setBeginIndex(result.length());
+                }
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) :
+                          zero);
+            }
+
+            // Record field information
+            if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            {
+                //FP:if (fieldPosition.getEndIndex() < 0)
+                //FP:fieldPosition.setEndIndex(result.length());
+            }
+            else if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            {
+                //FP:if (fieldPosition.getBeginIndex() < 0)
+                //FP:fieldPosition.setBeginIndex(result.length());
+                //FP:fieldPosition.setEndIndex(result.length());
+            }
+
+            // The exponent is output using the pattern-specified minimum
+            // exponent digits.  There is no maximum limit to the exponent
+            // digits, since truncating the exponent would result in an
+            // unacceptable inaccuracy.
+            result.append(symbols.getExponentSeparator());
+
+            // For zero values, we force the exponent to zero.  We
+            // must do this here, and not earlier, because the value
+            // is used to determine integer digit count above.
+            if (digitList.isZero()) exponent = 0;
+
+            boolean negativeExponent = exponent < 0;
+            if (negativeExponent) {
+                exponent = -exponent;
+                result.append(symbols.getMinusSign());
+            } else if (exponentSignAlwaysShown) {
+                result.append(symbols.getPlusSign());
+            }
+            digitList.set(exponent);
+            for (i=digitList.decimalAt; i<minExponentDigits; ++i) result.append(zero);
+            for (i=0; i<digitList.decimalAt; ++i)
+            {
+                result.append((i < digitList.count) ?
+                          (char)(digitList.digits[i] + zeroDelta) : zero);
+            }
+        }
+        else
+        {
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            // Output the integer portion.  Here 'count' is the total
+            // number of integer digits we will display, including both
+            // leading zeros required to satisfy getMinimumIntegerDigits,
+            // and actual digits present in the number.
+            int count = minIntDig;
+            int digitIndex = 0; // Index into digitList.fDigits[]
+            if (digitList.decimalAt > 0 && count < digitList.decimalAt)
+                count = digitList.decimalAt;
+
+            // Handle the case where getMaximumIntegerDigits() is smaller
+            // than the real number of integer digits.  If this is so, we
+            // output the least significant max integer digits.  For example,
+            // the value 1997 printed with 2 max integer digits is just "97".
+
+            if (count > maxIntDig)
+            {
+                count = maxIntDig;
+                digitIndex = digitList.decimalAt - count;
+            }
+
+            int sizeBeforeIntegerPart = result.length();
+            for (i=count-1; i>=0; --i)
+            {
+                if (i < digitList.decimalAt && digitIndex < digitList.count)
+                {
+                    // Output a real digit
+                    result.append((char)(digitList.digits[digitIndex++] + zeroDelta));
+                }
+                else
+                {
+                    // Output a leading zero
+                    result.append(zero);
+                }
+
+                // Output grouping separator if necessary.  Don't output a
+                // grouping separator if i==0 though; that's at the end of
+                // the integer part.
+                if (isGroupingUsed() && i>0 && (groupingSize != 0) && (i % groupingSize == 0))
+                {
+                    result.append(grouping);
+                }
+            }
+
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.INTEGER_FIELD)
+            //FP:fieldPosition.setEndIndex(result.length());
+
+            // Determine whether or not there are any printable fractional
+            // digits.  If we've used up the digits we know there aren't.
+            boolean fractionPresent = (getMinimumFractionDigits() > 0) ||
+            (!isInteger && digitIndex < digitList.count);
+
+            // If there is no fraction present, and we haven't printed any
+            // integer digits, then print a zero.  Otherwise we won't print
+            // _any_ digits, and we won't be able to parse this string.
+            if (!fractionPresent && result.length() == sizeBeforeIntegerPart)
+                result.append(zero);
+
+            // Output the decimal separator if we always do so.
+            if (decimalSeparatorAlwaysShown || fractionPresent)
+                result.append(decimal);
+
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            //FP:fieldPosition.setBeginIndex(result.length());
+
+            for (i=0; i < getMaximumFractionDigits(); ++i)
+            {
+                // Here is where we escape from the loop.  We escape if we've output
+                // the maximum fraction digits (specified in the for expression above).
+                // We also stop when we've output the minimum digits and either:
+                // we have an integer, so there is no fractional stuff to display,
+                // or we're out of significant digits.
+                if (i >= getMinimumFractionDigits() &&
+                    (isInteger || digitIndex >= digitList.count))
+                    break;
+
+                // Output leading fractional zeros.  These are zeros that come after
+                // the decimal but before any significant digits.  These are only
+                // output if abs(number being formatted) < 1.0.
+                if (-1-i > (digitList.decimalAt-1))
+                {
+                    result.append(zero);
+                    continue;
+                }
+
+                // Output a digit, if we have any precision left, or a
+                // zero if we don't.  We don't want to output noise digits.
+                if (!isInteger && digitIndex < digitList.count)
+                {
+                    result.append((char)(digitList.digits[digitIndex++] + zeroDelta));
+                }
+                else
+                {
+                    result.append(zero);
+                }
+            }
+
+            // Record field information for caller.
+            //FP:if (fieldPosition.getField() == NumberFormat.FRACTION_FIELD)
+            //FP:fieldPosition.setEndIndex(result.length());
+        }
+
+        result.append(isNegative ? negativeSuffix : positiveSuffix);
+
+        // [NEW]
+        addPadding(result, true, isNegative);
+        return result;
+    }
+
+    // [NEW]
+    private final void addPadding(StringBuffer result, boolean hasAffixes,
+                                  boolean isNegative) {
+        if (formatWidth > 0) {
+            int len = formatWidth - result.length();
+            if (len > 0) {
+                char[] padding = new char[len];
+                for (int i=0; i<len; ++i) {
+                    padding[i] = pad;
+                }
+                switch (padPosition) {
+                case PAD_AFTER_PREFIX:
+                    if (hasAffixes) {
+                        result.insert(isNegative ? negativePrefix.length()
+                                      : positivePrefix.length(),
+                                      padding);
+                        break;
+                    } // else fall through to next case
+                case PAD_BEFORE_PREFIX:
+                    result.insert(0, padding);
+                    break;
+                case PAD_BEFORE_SUFFIX:
+                    if (hasAffixes) {
+                        result.insert(result.length() -
+                                      (isNegative ? negativeSuffix.length()
+                                       : positiveSuffix.length()),
+                                      padding);
+                        break;
+                    } // else fall through to next case
+                case PAD_AFTER_SUFFIX:
+                    result.append(padding);
+                    break;
+                }
+            }
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Parse the given string, returning a <code>Number</code> object to
+     * represent the parsed value.  <code>Double</code> objects are returned to
+     * represent non-integral values which cannot be stored in a
+     * <code>BigDecimal</code>.  These are <code>NaN</code>, infinity,
+     * -infinity, and -0.0.  All other values are returned as <code>Long</code>,
+     * <code>BigInteger</code>, or <code>BigDecimal</code> values, in that order
+     * of preference.  If the parse fails, null is returned.
+     * @param text the string to be parsed
+     * @param parsePosition defines the position where parsing is to begin,
+     * and upon return, the position where parsing left off.  If the position
+     * has not changed upon return, then parsing failed.
+     * @return a <code>Number</code> object with the parsed value or
+     * <code>null</code> if the parse failed
+     */
+    public Number parse(String text, ParsePosition parsePosition)
+    {
+        // Skip padding characters, if any
+        int backup;
+        int i = backup = parsePosition.getIndex();
+        if (formatWidth > 0) {
+            while (i < text.length() && text.charAt(i) == pad) {
+                ++i;
+            }
+            parsePosition.setIndex(i);
+        }
+
+        // Handle NaN as a special case
+        if (text.regionMatches(parsePosition.getIndex(), symbols.getNaN(),
+                               0, symbols.getNaN().length())) {
+            parsePosition.setIndex(parsePosition.getIndex()
+                                   + symbols.getNaN().length());
+            return new Double(Double.NaN);
+        }
+
+        boolean[] status = new boolean[STATUS_LENGTH];
+        if (!subparse(text, parsePosition, digitList, false, status)) {
+            parsePosition.setIndex(backup);
+            return null;
+        } else if (formatWidth < 0) {
+            i = parsePosition.getIndex();
+            while (i < text.length() && text.charAt(i) == pad) {
+                ++i;
+            }
+            parsePosition.setIndex(i);
+        }
+
+        // Handle infinity
+        if (status[STATUS_INFINITE]) {
+            return new Double(status[STATUS_POSITIVE]
+                              ? Double.POSITIVE_INFINITY
+                              : Double.NEGATIVE_INFINITY);
+        }
+
+        // Handle -0.0
+        if (!status[STATUS_POSITIVE] && digitList.isZero()) {
+            return new Double(-0.0);
+        }
+
+        // Do as much of the multiplier conversion as possible without
+        // losing accuracy.
+        int mult = multiplier; // Don't modify this.multiplier
+        while (mult % 10 == 0) {
+            --digitList.decimalAt;
+            mult /= 10;
+        }
+
+        // Handle integral values
+        if (mult == 1 && digitList.isIntegral()) {
+            BigInteger n = digitList.getBigInteger(status[STATUS_POSITIVE]);
+            return (n.bitLength() < 64)
+                ? (Number) new Long(n.longValue()) 
+                : (Number) n;
+        }
+
+        // Handle non-integral values
+        java.math.BigDecimal n = digitList.getBigDecimal(status[STATUS_POSITIVE]);
+        if (mult != 1) {
+            n = n.divide(java.math.BigDecimal.valueOf(mult),
+                         java.math.BigDecimal.ROUND_HALF_EVEN);
+        }
+        return n;
+    }
+
+    private static final int STATUS_INFINITE = 0;
+    private static final int STATUS_POSITIVE = 1;
+    private static final int STATUS_LENGTH   = 2;
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Parse the given text into a number.  The text is parsed beginning at
+     * parsePosition, until an unparseable character is seen.
+     * @param text The string to parse.
+     * @param parsePosition The position at which to being parsing.  Upon
+     * return, the first unparseable character.
+     * @param digits The DigitList to set to the parsed value.
+     * @param isExponent If true, parse an exponent.  This means no
+     * infinite values and integer only.
+     * @param status Upon return contains boolean status flags indicating
+     * whether the value was infinite and whether it was positive.
+     */
+    private final boolean subparse(String text, ParsePosition parsePosition,
+                   DigitList digits, boolean isExponent,
+                   boolean status[])
+    {
+        int position = parsePosition.getIndex();
+        int oldStart = parsePosition.getIndex();
+        int backup;
+
+        // check for positivePrefix; take longest
+        boolean gotPositive = text.regionMatches(position,positivePrefix,0,
+                                                 positivePrefix.length());
+        boolean gotNegative = text.regionMatches(position,negativePrefix,0,
+                                                 negativePrefix.length());
+        if (gotPositive && gotNegative) {
+            if (positivePrefix.length() > negativePrefix.length())
+                gotNegative = false;
+            else if (positivePrefix.length() < negativePrefix.length())
+                gotPositive = false;
+        }
+        if (gotPositive) {
+            position += positivePrefix.length();
+        } else if (gotNegative) {
+            position += negativePrefix.length();
+        } else {
+            //PP:parsePosition.errorIndex = position;
+            return false;
+        }
+        // process digits or Inf, find decimal position
+        status[STATUS_INFINITE] = false;
+        if (!isExponent && text.regionMatches(position,symbols.getInfinity(),0,
+                          symbols.getInfinity().length()))
+        {
+            position += symbols.getInfinity().length();
+            status[STATUS_INFINITE] = true;
+        } else {
+            // We now have a string of digits, possibly with grouping symbols,
+            // and decimal points.  We want to process these into a DigitList.
+            // We don't want to put a bunch of leading zeros into the DigitList
+            // though, so we keep track of the location of the decimal point,
+            // put only significant digits into the DigitList, and adjust the
+            // exponent as needed.
+
+            digits.decimalAt = digits.count = 0;
+            char zero = symbols.getZeroDigit();
+            char decimal = isCurrencyFormat ?
+            symbols.getMonetaryDecimalSeparator() : symbols.getDecimalSeparator();
+            char grouping = symbols.getGroupingSeparator();
+            String exponentSep = symbols.getExponentSeparator();
+            boolean sawDecimal = false;
+            boolean sawExponent = false;
+            boolean sawDigit = false;
+            int exponent = 0; // Set to the exponent value, if any
+            int digit = 0;
+
+            // We have to track digitCount ourselves, because digits.count will
+            // pin when the maximum allowable digits is reached.
+            int digitCount = 0;
+
+            backup = -1;
+            for (; position < text.length(); ++position)
+            {
+                char ch = text.charAt(position);
+
+                /* We recognize all digit ranges, not only the Latin digit range
+                 * '0'..'9'.  We do so by using the Character.digit() method,
+                 * which converts a valid Unicode digit to the range 0..9.
+                 *
+                 * The character 'ch' may be a digit.  If so, place its value
+                 * from 0 to 9 in 'digit'.  First try using the locale digit,
+                 * which may or MAY NOT be a standard Unicode digit range.  If
+                 * this fails, try using the standard Unicode digit ranges by
+                 * calling Character.digit().  If this also fails, digit will
+                 * have a value outside the range 0..9.
+                 */
+                digit = ch - zero;
+                if (digit < 0 || digit > 9) digit = Character.digit(ch, 10);
+
+                if (digit == 0)
+                {
+                    // Cancel out backup setting (see grouping handler below)
+                    backup = -1; // Do this BEFORE continue statement below!!!
+                    sawDigit = true;
+
+                    // Handle leading zeros
+                    if (digits.count == 0)
+                    {
+                        // Ignore leading zeros in integer part of number.
+                        if (!sawDecimal) continue;
+
+                        // If we have seen the decimal, but no significant digits yet,
+                        // then we account for leading zeros by decrementing the
+                        // digits.decimalAt into negative values.
+                        --digits.decimalAt;
+                    }
+                    else
+                    {
+                        ++digitCount;
+                        digits.append((char)(digit + '0'));
+                    }
+                }
+                else if (digit > 0 && digit <= 9) // [sic] digit==0 handled above
+                {
+                    sawDigit = true;
+                    ++digitCount;
+                    digits.append((char)(digit + '0'));
+
+                    // Cancel out backup setting (see grouping handler below)
+                    backup = -1;
+                }
+                else if (!isExponent && ch == decimal)
+                {
+                    // If we're only parsing integers, or if we ALREADY saw the
+                    // decimal, then don't parse this one.
+                    if (isParseIntegerOnly() || sawDecimal) break;
+                    digits.decimalAt = digitCount; // Not digits.count!
+                    sawDecimal = true;
+                }
+                else if (!isExponent && ch == grouping && isGroupingUsed())
+                {
+                    if (sawDecimal) {
+                        break;
+                    }
+                    // Ignore grouping characters, if we are using them, but require
+                    // that they be followed by a digit.  Otherwise we backup and
+                    // reprocess them.
+                    backup = position;
+                }
+                else if (!isExponent && !sawExponent &&
+                         text.regionMatches(position, exponentSep,
+                                            0, exponentSep.length()))
+                {
+                    // Parse sign, if present
+                    boolean negExp = false;
+                    int pos = position + exponentSep.length();
+                    if (pos < text.length()) {
+                        ch = text.charAt(pos);
+                        if (ch == symbols.getPlusSign()) {
+                            ++pos;
+                        } else if (ch == symbols.getMinusSign()) {
+                            ++pos;
+                            negExp = true;
+                        }
+                    }
+
+                    DigitList exponentDigits = new DigitList();
+                    exponentDigits.count = 0;
+                    while (pos < text.length()) {
+                        digit = text.charAt(pos) - zero;
+                        if (digit < 0 || digit > 9) {
+                            digit = Character.digit(ch, 10);
+                        }
+                        if (digit >= 0 && digit <= 9) {
+                            exponentDigits.append((char)(digit + '0'));
+                            ++pos;
+                        } else {
+                            break;
+                        }
+                    }
+                    
+                    if (exponentDigits.count > 0) {
+                        exponentDigits.decimalAt = exponentDigits.count;
+                        exponent = (int) exponentDigits.getLong();
+                        if (negExp) {
+                            exponent = -exponent;
+                        }
+                        position = pos; // Advance past the exponent
+                        sawExponent = true;
+                    }
+
+                    break; // Whether we fail or succeed, we exit this loop
+                }
+                else break;
+            }
+
+            if (backup != -1) position = backup;
+
+            // If there was no decimal point we have an integer
+            if (!sawDecimal) digits.decimalAt = digitCount; // Not digits.count!
+
+            // Adjust for exponent, if any
+            digits.decimalAt += exponent;
+
+            // If none of the text string was recognized.  For example, parse
+            // "x" with pattern "#0.00" (return index and error index both 0)
+            // parse "$" with pattern "$#0.00". (return index 0 and error index
+            // 1).
+            if (!sawDigit && digitCount == 0) {
+                parsePosition.setIndex(oldStart);
+                //PP:parsePosition.errorIndex = oldStart;
+                return false;
+            }
+        }
+
+        // check for positiveSuffix
+        if (gotPositive)
+            gotPositive = text.regionMatches(position,positiveSuffix,0,
+                                             positiveSuffix.length());
+        if (gotNegative)
+            gotNegative = text.regionMatches(position,negativeSuffix,0,
+                                             negativeSuffix.length());
+
+        // if both match, take longest
+        if (gotPositive && gotNegative) {
+            if (positiveSuffix.length() > negativeSuffix.length())
+                gotNegative = false;
+            else if (positiveSuffix.length() < negativeSuffix.length())
+                gotPositive = false;
+        }
+
+        // fail if neither or both
+        if (gotPositive == gotNegative) {
+            //PP:parsePosition.errorIndex = position;
+            return false;
+        }
+
+        parsePosition.setIndex(position +
+            (gotPositive ? positiveSuffix.length() : negativeSuffix.length())); // mark success!
+
+        status[STATUS_POSITIVE] = gotPositive;
+        if (parsePosition.getIndex() == oldStart) {
+            //PP:parsePosition.errorIndex = position;
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Returns the decimal format symbols, which is generally not changed
+     * by the programmer or user.
+     * @return desired DecimalFormatSymbols
+     * @see java.text.DecimalFormatSymbols
+     */
+    public DecimalFormatSymbols getDecimalFormatSymbols() {
+        try {
+            // don't allow multiple references
+            return (DecimalFormatSymbols) symbols.clone();
+        } catch (Exception foo) {
+            return null; // should never happen
+        }
+    }
+
+
+    /**
+     * Sets the decimal format symbols, which is generally not changed
+     * by the programmer or user.
+     * @param newSymbols desired DecimalFormatSymbols
+     * @see java.text.DecimalFormatSymbols
+     */
+    public void setDecimalFormatSymbols(DecimalFormatSymbols newSymbols) {
+        try {
+            // don't allow multiple references
+            symbols = (DecimalFormatSymbols) newSymbols.clone();
+        } catch (Exception foo) {
+            // should never happen
+        }
+    }
+
+    /**
+     * Get the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     */
+    public String getPositivePrefix () {
+        return positivePrefix;
+    }
+
+    /**
+     * Set the positive prefix.
+     * <P>Examples: +123, $123, sFr123
+     */
+    public void setPositivePrefix (String newValue) {
+        positivePrefix = newValue;
+    }
+
+    /**
+     * Get the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     */
+    public String getNegativePrefix () {
+        return negativePrefix;
+    }
+
+    /**
+     * Set the negative prefix.
+     * <P>Examples: -123, ($123) (with negative suffix), sFr-123
+     */
+    public void setNegativePrefix (String newValue) {
+        negativePrefix = newValue;
+    }
+
+    /**
+     * Get the positive suffix.
+     * <P>Example: 123%
+     */
+    public String getPositiveSuffix () {
+        return positiveSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Example: 123%
+     */
+    public void setPositiveSuffix (String newValue) {
+        positiveSuffix = newValue;
+    }
+
+    /**
+     * Get the negative suffix.
+     * <P>Examples: -123%, ($123) (with positive suffixes)
+     */
+    public String getNegativeSuffix () {
+        return negativeSuffix;
+    }
+
+    /**
+     * Set the positive suffix.
+     * <P>Examples: 123%
+     */
+    public void setNegativeSuffix (String newValue) {
+        negativeSuffix = newValue;
+    }
+
+    /**
+     * Get the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     */
+    public int getMultiplier () {
+        return multiplier;
+    }
+
+    /**
+     * Set the multiplier for use in percent, permill, etc.
+     * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
+     * (For Arabic, use arabic percent symbol).
+     * For a permill, set the suffixes to have "\u2031" and the multiplier to be 1000.
+     * <P>Examples: with 100, 1.23 -> "123", and "123" -> 1.23
+     */
+    public void setMultiplier (int newValue) {
+        if (newValue <= 0) {
+            throw new IllegalArgumentException("Bad multiplier: " + newValue);
+        }
+        multiplier = newValue;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the rounding increment.
+     * @return A positive rounding increment, or <code>null</code> if rounding
+     * is not in effect.
+     * @see #setRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     */
+    public java.math.BigDecimal getRoundingIncrement() {
+        return roundingIncrement;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or <code>null</code> or
+     * <code>BigDecimal(0.0)</code> to disable rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     */
+    public void setRoundingIncrement(java.math.BigDecimal newValue) {
+        int i = newValue == null
+                ? 0 : newValue.compareTo(java.math.BigDecimal.valueOf(0));
+        if (i < 0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        if (i == 0) {
+            roundingIncrement = null;
+            roundingDouble = 0.0;
+        } else {
+            roundingIncrement = newValue;
+            roundingDouble = newValue.doubleValue();
+        }
+    }
+    
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the rounding increment.  This method also controls whether
+     * rounding is enabled.
+     * @param newValue A positive rounding increment, or 0.0 to disable
+     * rounding.
+     * @exception IllegalArgumentException if <code>newValue</code> is < 0.0
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see #setRoundingMode
+     */
+    public void setRoundingIncrement(double newValue) {
+        if (newValue < 0.0) {
+            throw new IllegalArgumentException("Illegal rounding increment");
+        }
+        roundingDouble = newValue;
+        roundingIncrement = (newValue > 0.0)
+            ? new java.math.BigDecimal(String.valueOf(newValue)) : null;
+    }
+    
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the rounding mode.
+     * @return A rounding mode, between <code>BigDecimal.ROUND_UP</code>
+     * and <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #setRoundingMode
+     * @see java.math.BigDecimal
+     */
+    public int getRoundingMode() {
+        return roundingMode;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the rounding mode.  This has no effect unless the rounding
+     * increment is greater than zero.
+     * @param roundingMode A rounding mode, between
+     * <code>BigDecimal.ROUND_UP</code> and
+     * <code>BigDecimal.ROUND_UNNECESSARY</code>.
+     * @exception IllegalArgumentException if <code>roundingMode</code>
+     * is unrecognized.
+     * @see #setRoundingIncrement
+     * @see #getRoundingIncrement
+     * @see #getRoundingMode
+     * @see java.math.BigDecimal
+     */
+    public void setRoundingMode(int roundingMode) {
+        if (roundingMode < java.math.BigDecimal.ROUND_UP
+            || roundingMode > java.math.BigDecimal.ROUND_UNNECESSARY) {
+            throw new IllegalArgumentException("Invalid rounding mode: "
+                                               + roundingMode);
+        }
+        this.roundingMode = roundingMode;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the width to which the output of <code>format()</code> is padded.
+     * @return the format width, or zero if no padding is in effect
+     * @see #setFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public int getFormatWidth() {
+        return formatWidth;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the width to which the output of <code>format()</code> is padded.
+     * This method also controls whether padding is enabled.
+     * @param width the width to which to pad the result of
+     * <code>format()</code>, or zero to disable padding
+     * @exception IllegalArgumentException if <code>width</code> is < 0
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public void setFormatWidth(int width) {
+        if (width < 0) {
+            throw new IllegalArgumentException("Illegal format width");
+        }
+        formatWidth = width;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the character used to pad to the format width.  The default is ' '.
+     * @return the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public char getPadCharacter() {
+        return pad;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the character used to pad to the format width.  This has no effect
+     * unless padding is enabled.
+     * @param padChar the pad character
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #setPadPosition
+     */
+    public void setPadCharacter(char padChar) {
+        pad = padChar;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Get the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.
+     * @return the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #setPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public int getPadPosition() {
+        return padPosition;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the position at which padding will take place.  This is the location
+     * at which padding will be inserted if the result of <code>format()</code>
+     * is shorter than the format width.  This has no effect unless padding is
+     * enabled.
+     * @param padPos the pad position, one of <code>PAD_BEFORE_PREFIX</code>,
+     * <code>PAD_AFTER_PREFIX</code>, <code>PAD_BEFORE_SUFFIX</code>, or
+     * <code>PAD_AFTER_SUFFIX</code>.
+     * @exception IllegalArgumentException if the pad position in
+     * unrecognized
+     * @see #setFormatWidth
+     * @see #getFormatWidth
+     * @see #setPadCharacter
+     * @see #getPadCharacter
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public void setPadPosition(int padPos) {
+        if (padPos < PAD_BEFORE_PREFIX || padPos > PAD_AFTER_SUFFIX) {
+            throw new IllegalArgumentException("Illegal pad position");
+        }
+        padPosition = padPos;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return whether or not scientific notation is used.
+     * @return true if this object formats and parses scientific notation
+     * @see #setScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public boolean isScientificNotation() {
+        return useExponentialNotation;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set whether or not scientific notation is used.
+     * @param useScientific true if this object formats and parses scientific
+     * notation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public void setScientificNotation(boolean useScientific) {
+        useExponentialNotation = useScientific;
+        if (useExponentialNotation && minExponentDigits < 1) {
+            minExponentDigits = 1;
+        }
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the minimum exponent digits that will be shown.
+     * @return the minimum exponent digits that will be shown
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public byte getMinimumExponentDigits() {
+        return minExponentDigits;
+    }
+    
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the minimum exponent digits that will be shown.  This has no
+     * effect unless scientific notation is in use.
+     * @param minExpDig a value >= 1 indicating the fewest exponent digits
+     * that will be shown
+     * @exception IllegalArgumentException if <code>minExpDig</code> < 1
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     * @see #setExponentSignAlwaysShown
+     */
+    public void setMinimumExponentDigits(byte minExpDig) {
+        if (minExpDig < 1) {
+            throw new IllegalArgumentException("Exponent digits must be >= 1");
+        }
+        minExponentDigits = minExpDig;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return whether the exponent sign is always shown.
+     * @return true if the exponent is always prefixed with either the
+     * localized minus sign or the localized plus sign, false if only negative
+     * exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #setExponentSignAlwaysShown
+     */
+    public boolean isExponentSignAlwaysShown() {
+        return exponentSignAlwaysShown;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set whether the exponent sign is always shown.  This has no effect
+     * unless scientific notation is in use.
+     * @param expSignAlways true if the exponent is always prefixed with either
+     * the localized minus sign or the localized plus sign, false if only
+     * negative exponents are prefixed with the localized minus sign.
+     * @see #setScientificNotation
+     * @see #isScientificNotation
+     * @see #setMinimumExponentDigits
+     * @see #getMinimumExponentDigits
+     * @see #isExponentSignAlwaysShown
+     */
+    public void setExponentSignAlwaysShown(boolean expSignAlways) {
+        exponentSignAlwaysShown = expSignAlways;
+    }
+
+    /**
+     * Return the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #setGroupingSize
+     * @see java.text.NumberFormat#isGroupingUsed
+     * @see java.text.DecimalFormatSymbols#getGroupingSeparator
+     */
+    public int getGroupingSize () {
+        return groupingSize;
+    }
+
+    /**
+     * Set the grouping size. Grouping size is the number of digits between
+     * grouping separators in the integer portion of a number.  For example,
+     * in the number "123,456.78", the grouping size is 3.
+     * @see #getGroupingSize
+     * @see java.text.NumberFormat#setGroupingUsed
+     * @see java.text.DecimalFormatSymbols#setGroupingSeparator
+     */
+    public void setGroupingSize (int newValue) {
+        groupingSize = (byte)newValue;
+    }
+
+    /**
+     * Allows you to get the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     */
+    public boolean isDecimalSeparatorAlwaysShown() {
+        return decimalSeparatorAlwaysShown;
+    }
+
+    /**
+     * Allows you to set the behavior of the decimal separator with integers.
+     * (The decimal separator will always appear with decimals.)
+     * <P>Example: Decimal ON: 12345 -> 12345.; OFF: 12345 -> 12345
+     */
+    public void setDecimalSeparatorAlwaysShown(boolean newValue) {
+        decimalSeparatorAlwaysShown = newValue;
+    }
+
+    /**
+     * Standard override; no change in semantics.
+     */
+    public Object clone() {
+        try {
+            DecimalFormat other = (DecimalFormat) super.clone();
+            other.symbols = (DecimalFormatSymbols) symbols.clone();
+            return other;
+        } catch (Exception e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Overrides equals
+     */
+    public boolean equals(Object obj)
+    {
+        if (obj == null) return false;
+        if (!super.equals(obj)) return false; // super does class check
+        DecimalFormat other = (DecimalFormat) obj;
+        return (positivePrefix.equals(other.positivePrefix)
+            && positiveSuffix.equals(other.positiveSuffix)
+            && negativePrefix.equals(other.negativePrefix)
+            && negativeSuffix.equals(other.negativeSuffix)
+            && multiplier == other.multiplier
+            && groupingSize == other.groupingSize
+            && decimalSeparatorAlwaysShown == other.decimalSeparatorAlwaysShown
+            && useExponentialNotation == other.useExponentialNotation
+            && (!useExponentialNotation ||
+                minExponentDigits == other.minExponentDigits)
+            && symbols.equals(other.symbols));
+    }
+
+    /**
+     * Overrides hashCode
+     */
+    public int hashCode() {
+        return super.hashCode() * 37 + positivePrefix.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Synthesizes a pattern string that represents the current state
+     * of this Format object.
+     * @see #applyPattern
+     */
+    public String toPattern() {
+        return toPattern( false );
+    }
+
+    /**
+     * Synthesizes a localized pattern string that represents the current
+     * state of this Format object.
+     * @see #applyPattern
+     */
+    public String toLocalizedPattern() {
+        return toPattern( true );
+    }
+
+    /**
+     * Append an affix to the given StringBuffer, using quotes if
+     * there are special characters.  Single quotes themselves must be
+     * escaped in either case.
+     */
+    private void appendAffix(StringBuffer buffer, String affix, boolean localized) {
+        boolean needQuote;
+        if (localized) {
+            needQuote = affix.indexOf(symbols.getZeroDigit()) >= 0
+                || affix.indexOf(symbols.getGroupingSeparator()) >= 0
+                || affix.indexOf(symbols.getDecimalSeparator()) >= 0
+                || affix.indexOf(symbols.getPercent()) >= 0
+                || affix.indexOf(symbols.getPerMill()) >= 0
+                || affix.indexOf(symbols.getDigit()) >= 0
+                || affix.indexOf(symbols.getPatternSeparator()) >= 0
+                || affix.indexOf(symbols.getExponentSeparator()) >= 0;
+        }
+        else {
+            needQuote = affix.indexOf(PATTERN_ZERO_DIGIT) >= 0
+                || affix.indexOf(PATTERN_GROUPING_SEPARATOR) >= 0
+                || affix.indexOf(PATTERN_DECIMAL_SEPARATOR) >= 0
+                || affix.indexOf(PATTERN_PERCENT) >= 0
+                || affix.indexOf(PATTERN_PER_MILLE) >= 0
+                || affix.indexOf(PATTERN_DIGIT) >= 0
+                || affix.indexOf(PATTERN_SEPARATOR) >= 0
+                || affix.indexOf(PATTERN_EXPONENT) >= 0;
+        }
+        if (needQuote) buffer.append('\'');
+        if (affix.indexOf('\'') < 0) buffer.append(affix);
+        else {
+            for (int j=0; j<affix.length(); ++j) {
+                char c = affix.charAt(j);
+                buffer.append(c);
+                if (c == '\'') buffer.append(c);
+            }
+        }
+        if (needQuote) buffer.append('\'');
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of generating a pattern.
+     */
+    private String toPattern(boolean localized) {
+        StringBuffer result = new StringBuffer();
+        char zero = localized ? symbols.getZeroDigit() : PATTERN_ZERO_DIGIT;
+        char digit = localized ? symbols.getDigit() : PATTERN_DIGIT;
+        char group = localized ? symbols.getGroupingSeparator()
+                               : PATTERN_GROUPING_SEPARATOR;
+        int i;
+        int roundingDecimalPos = 0; // Pos of decimal in roundingDigits
+        String roundingDigits = null;
+        int padPos = (formatWidth > 0) ? padPosition : -1;
+        String padSpec = (formatWidth > 0)
+            ? new StringBuffer(2).
+                append(localized ? symbols.getPadEscape() : PATTERN_PAD_ESCAPE).
+                append(pad).toString()
+            : null;
+        if (roundingIncrement != null) {
+            i = roundingIncrement.scale();
+            roundingDigits = roundingIncrement.movePointRight(i).toString();
+            roundingDecimalPos = roundingDigits.length() - i;
+        }
+        for (int part=0; part<2; ++part) {
+            int partStart = result.length();
+            if (padPos == PAD_BEFORE_PREFIX) {
+                result.append(padSpec);
+            }
+            appendAffix(result,
+                        (part==0 ? positivePrefix : negativePrefix),
+                        localized);
+            if (padPos == PAD_AFTER_PREFIX) {
+                result.append(padSpec);
+            }
+            int sub0Start = result.length();
+            int maxIntDig = useExponentialNotation ? getMaximumIntegerDigits() :
+                (Math.max(Math.max(groupingSize, getMinimumIntegerDigits()),
+                          roundingDecimalPos) + 1);
+            for (i = maxIntDig; i > 0; --i) {
+                if (isGroupingUsed() && groupingSize != 0
+                    && i % groupingSize == 0
+                    && i < maxIntDig
+                    && !useExponentialNotation) {
+                    result.append(group);
+                }
+                if (roundingDigits != null) {
+                    int pos = roundingDecimalPos - i;
+                    if (pos >= 0 && pos < roundingDigits.length()) {
+                        result.append((char) (roundingDigits.charAt(pos) - '0' + zero));
+                        continue;
+                    }
+                }
+                result.append(i<=getMinimumIntegerDigits() ? zero : digit);
+            }
+            if (getMaximumFractionDigits() > 0 || decimalSeparatorAlwaysShown) {
+                result.append(localized ? symbols.getDecimalSeparator() :
+                              PATTERN_DECIMAL_SEPARATOR);
+            }
+            int pos = roundingDecimalPos;
+            for (i = 0; i < getMaximumFractionDigits(); ++i) {
+                if (roundingDigits != null &&
+                    pos < roundingDigits.length()) {
+                    result.append(pos < 0 ? zero :
+                                  (char) (roundingDigits.charAt(pos) - '0' + zero));
+                    ++pos;
+                    continue;
+                }
+                result.append(i<getMinimumFractionDigits() ? zero : digit);
+            }
+            if (useExponentialNotation) {
+                result.append(localized ? symbols.getExponentSeparator() :
+                              PATTERN_EXPONENT);
+                if (exponentSignAlwaysShown) {
+                    result.append(localized ? symbols.getPlusSign() :
+                                  PATTERN_PLUS_SIGN);
+                }
+                for (i=0; i<minExponentDigits; ++i) {
+                    result.append(zero);
+                }
+            }
+            if (padSpec != null && !useExponentialNotation) {
+                int add = formatWidth - result.length() + sub0Start
+                    - ((part == 0)
+                       ? positivePrefix.length() + positiveSuffix.length()
+                       : negativePrefix.length() + negativeSuffix.length());
+                while (add > 0) {
+                    result.insert(sub0Start, digit);
+                    --add;
+                    if (isGroupingUsed() && groupingSize != 0
+                        && ++maxIntDig % groupingSize == 0
+                        && add > 1) {
+                        result.insert(sub0Start, group);
+                        --add;
+                    }
+                }
+            }
+            if (padPos == PAD_BEFORE_SUFFIX) {
+                result.append(padSpec);
+            }
+            if (part == 0) {
+                appendAffix(result, positiveSuffix, localized);
+                if (padPos == PAD_AFTER_SUFFIX) {
+                    result.append(padSpec);
+                }
+                if (negativeSuffix.equals(positiveSuffix) &&
+                    negativePrefix.equals(symbols.getMinusSign() + positivePrefix)) {
+                    part = 2;
+                } else {
+                    result.append(localized ? symbols.getPatternSeparator() :
+                                  PATTERN_SEPARATOR);
+                }
+            } else {
+                appendAffix(result, negativeSuffix, localized);
+                if (padPos == PAD_AFTER_SUFFIX) {
+                    result.append(padSpec);
+                }
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     */
+    public void applyPattern( String pattern ) {
+        applyPattern( pattern, false );
+    }
+
+    /**
+     * Apply the given pattern to this Format object.  The pattern
+     * is assumed to be in a localized notation. A pattern is a
+     * short-hand specification for the various formatting properties.
+     * These properties can also be changed individually through the
+     * various setter methods.
+     * <p>
+     * There is no limit to integer digits are set
+     * by this routine, since that is the typical end-user desire;
+     * use setMaximumInteger if you want to set a real value.
+     * For negative numbers, use a second pattern, separated by a semicolon
+     * <P>Example "#,#00.0#" -> 1,234.56
+     * <P>This means a minimum of 2 integer digits, 1 fraction digit, and
+     * a maximum of 2 fraction digits.
+     * <p>Example: "#,#00.0#;(#,#00.0#)" for negatives in parantheses.
+     * <p>In negative patterns, the minimum and maximum counts are ignored;
+     * these are presumed to be set in the positive pattern.
+     */
+    public void applyLocalizedPattern( String pattern ) {
+        applyPattern( pattern, true );
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Does the real work of applying a pattern.
+     */
+    private void applyPattern(String pattern, boolean localized) {
+        char zeroDigit         = PATTERN_ZERO_DIGIT;
+        char groupingSeparator = PATTERN_GROUPING_SEPARATOR;
+        char decimalSeparator  = PATTERN_DECIMAL_SEPARATOR;
+        char percent           = PATTERN_PERCENT;
+        char perMill           = PATTERN_PER_MILLE;
+        char digit             = PATTERN_DIGIT;
+        char separator         = PATTERN_SEPARATOR;
+        String exponent        = PATTERN_EXPONENT;
+        char plus              = PATTERN_PLUS_SIGN;
+        char padEscape         = PATTERN_PAD_ESCAPE;
+        if (localized) {
+            zeroDigit         = symbols.getZeroDigit();
+            groupingSeparator = symbols.getGroupingSeparator();
+            decimalSeparator  = symbols.getDecimalSeparator();
+            percent           = symbols.getPercent();
+            perMill           = symbols.getPerMill();
+            digit             = symbols.getDigit();
+            separator         = symbols.getPatternSeparator();
+            exponent          = symbols.getExponentSeparator();
+            plus              = symbols.getPlusSign();
+            padEscape         = symbols.getPadEscape();
+        }
+        char nineDigit = (char) (zeroDigit + 9);
+
+        boolean gotNegative = false;
+
+        int pos = 0;
+        // Part 0 is the positive pattern.  Part 1, if present, is the negative
+        // pattern.
+        for (int part=0; part<2 && pos<pattern.length(); ++part) {
+            // The subpart ranges from 0 to 4: 0=pattern proper, 1=prefix,
+            // 2=suffix, 3=prefix in quote, 4=suffix in quote.  Subpart 0 is
+            // between the prefix and suffix, and consists of pattern
+            // characters.  In the prefix and suffix, percent, permille, and
+            // currency symbols are recognized and translated.
+            int subpart = 1, sub0Start = 0, sub0Limit = 0, sub2Limit = 0;
+
+            // It's important that we don't change any fields of this object
+            // prematurely.  We set the following variables for the multiplier,
+            // grouping, etc., and then only change the actual object fields if
+            // everything parses correctly.  This also lets us register
+            // the data from part 0 and ignore the part 1, except for the
+            // prefix and suffix.
+            StringBuffer prefix = new StringBuffer();
+            StringBuffer suffix = new StringBuffer();
+            int decimalPos = -1;
+            int multiplier = 1;
+            int digitLeftCount = 0, zeroDigitCount = 0, digitRightCount = 0;
+            byte groupingCount = -1;
+            int padPos = -1;
+            char padChar = 0;
+            int incrementPos = -1;
+            long incrementVal = 0;
+            byte expDigits = -1;
+            boolean expSignAlways = false;
+            boolean isCurrency = false;
+
+            // The affix is either the prefix or the suffix.
+            StringBuffer affix = prefix;
+
+            int start = pos;
+
+        PARTLOOP:
+            for (; pos < pattern.length(); ++pos) {
+                char ch = pattern.charAt(pos);
+                switch (subpart) {
+                case 0: // Pattern proper subpart (between prefix & suffix)
+                    // Process the digits, decimal, and grouping characters.  We
+                    // record five pieces of information.  We expect the digits
+                    // to occur in the pattern ####00.00####, and we record the
+                    // number of left digits, zero (central) digits, and right
+                    // digits.  The position of the last grouping character is
+                    // recorded (should be somewhere within the first two blocks
+                    // of characters), as is the position of the decimal point,
+                    // if any (should be in the zero digits).  If there is no
+                    // decimal point, then there should be no right digits.
+                    if (ch == digit) {
+                        if (zeroDigitCount > 0) {
+                            ++digitRightCount;
+                        } else {
+                            ++digitLeftCount;
+                        }
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                    } else if (ch >= zeroDigit && ch <= nineDigit) {
+                        if (digitRightCount > 0) {
+                            throw new IllegalArgumentException(
+                                   "Unexpected '0' in pattern \"" +
+                                   pattern + '"');
+                        }
+                        ++zeroDigitCount;
+                        if (groupingCount >= 0 && decimalPos < 0) {
+                            ++groupingCount;
+                        }
+                        if (ch != zeroDigit) {
+                            int p = digitLeftCount + zeroDigitCount
+                                + digitRightCount;
+                            if (incrementPos >= 0) {
+                                while (incrementPos < p) {
+                                    incrementVal *= 10;
+                                    ++incrementPos;
+                                }
+                            } else {
+                                incrementPos = p;
+                            }
+                            incrementVal += ch - zeroDigit;
+                        }
+                    } else if (ch == groupingSeparator) {
+                        if (decimalPos >= 0) {
+                            throw new IllegalArgumentException(
+                                    "Grouping separator after decimal in pattern \"" +
+                                    pattern + '"');
+                        }
+                        groupingCount = 0;
+                    } else if (ch == decimalSeparator) {
+                        if (decimalPos >= 0) {
+                            throw new IllegalArgumentException(
+                                    "Multiple decimal separators in pattern \"" +
+                                    pattern + '"');
+                        }
+                        // Intentionally incorporate the digitRightCount,
+                        // even though it is illegal for this to be > 0
+                        // at this point.  We check pattern syntax below.
+                        decimalPos = digitLeftCount + zeroDigitCount + digitRightCount;
+                    } else {
+                        if (pattern.regionMatches(pos, exponent, 0, exponent.length())) {
+                            if (expDigits >= 0) {
+                                throw new IllegalArgumentException(
+                                        "Multiple exponential " +
+                                        "symbols in pattern \"" +
+                                        pattern + '"');
+                            }
+                            if (groupingCount >= 0) {
+                                throw new IllegalArgumentException(
+                                        "Grouping separator in exponential " +
+                                        "pattern \"" +
+                                        pattern + '"');
+                            }
+                            // Check for positive prefix
+                            if ((pos+1) < pattern.length()
+                                && pattern.charAt(pos+1) == plus) {
+                                expSignAlways = true;
+                                ++pos;
+                            }
+                            // Use lookahead to parse out the exponential part of the
+                            // pattern, then jump into suffix subpart.
+                            expDigits = 0;
+                            while (++pos < pattern.length() &&
+                                   pattern.charAt(pos) == zeroDigit) {
+                                ++expDigits;
+                            }
+                            
+                            if ((digitLeftCount + zeroDigitCount) < 1 ||
+                                expDigits < 1) {
+                                throw new IllegalArgumentException(
+                                        "Malformed exponential " +
+                                        "pattern \"" + pattern + '"');
+                            }
+                        }
+                        // Transition to suffix subpart
+                        subpart = 2; // suffix subpart
+                        affix = suffix;
+                        sub0Limit = pos--;
+                        continue;
+                    }
+                    break;
+                case 1: // Prefix subpart
+                case 2: // Suffix subpart
+                    // Process the prefix / suffix characters
+                    // Process unquoted characters seen in prefix or suffix
+                    // subpart.
+                    if (ch == digit ||
+                        ch == groupingSeparator ||
+                        ch == decimalSeparator ||
+                        (ch >= zeroDigit && ch <= nineDigit)) {
+                        // Any of these characters implicitly begins the
+                        // next subpart if we are in the prefix
+                        if (subpart == 1) { // prefix subpart
+                            subpart = 0; // pattern proper subpart
+                            sub0Start = pos--; // Reprocess this character
+                            continue;
+                        }
+                        // Fall through to append(ch)
+                    } else if (ch == CURRENCY_SIGN) {
+                        // Use lookahead to determine if the currency sign is
+                        // doubled or not.
+                        boolean doubled = (pos + 1) < pattern.length() &&
+                            pattern.charAt(pos + 1) == CURRENCY_SIGN;
+                        affix.append(doubled ?
+                                     symbols.getInternationalCurrencySymbol() :
+                                     symbols.getCurrencySymbol());
+                        if (doubled) ++pos; // Skip over the doubled character
+                        isCurrency = true;
+                        continue;
+                    } else if (ch == QUOTE) {
+                        // A quote outside quotes indicates either the opening
+                        // quote or two quotes, which is a quote literal.  That is,
+                        // we have the first quote in 'do' or o''clock.
+                        if ((pos+1) < pattern.length() &&
+                            pattern.charAt(pos+1) == QUOTE) {
+                            ++pos;
+                            // Fall through to append(ch)
+                        } else {
+                            subpart += 2; // open quote
+                            continue;
+                        }
+                    } else if (ch == separator) {
+                        // Don't allow separators in the prefix, and don't allow
+                        // separators in the second pattern (part == 1).
+                        if (subpart == 1 || part == 1) {
+                            throw new IllegalArgumentException(
+                                    "Unquoted special character '" +
+                                    ch + "' in pattern \"" +
+                                    pattern + '"');
+                        }
+                        sub2Limit = pos++;
+                        break PARTLOOP; // Go to next part
+                    } else if (ch == percent || ch == perMill) {
+                        // Next handle characters which are appended directly.
+                        if (multiplier != 1) {
+                            throw new IllegalArgumentException(
+                                    "Too many percent/permille characters "
+                                    + "in pattern \"" + pattern + '"');
+                        }
+                        if (ch == percent) {
+                            multiplier = 100;
+                            ch = symbols.getPercent();
+                        } else {
+                            multiplier = 1000;
+                            ch = symbols.getPerMill();
+                        }
+                        // Fall through to append(ch)
+                    } else if (ch == padEscape) {
+                        if (padPos >= 0) {
+                            throw new IllegalArgumentException(
+                                    "Multiple pad specifiers");
+                        }
+                        if ((pos+1) == pattern.length()) {
+                            throw new IllegalArgumentException(
+                                    "Invalid pad specifier");
+                        }
+                        padPos = pos++; // Advance past pad char
+                        padChar = pattern.charAt(pos);
+                        continue;
+                    }
+                    // Unquoted, non-special characters fall through to here, as
+                    // well as other code which needs to append something to the
+                    // affix.
+                    affix.append(ch);
+                    break;
+                case 3: // Prefix subpart, in quote
+                case 4: // Suffix subpart, in quote
+                    // A quote within quotes indicates either the closing
+                    // quote or two quotes, which is a quote literal.  That is,
+                    // we have the second quote in 'do' or 'don''t'.
+                    if (ch == QUOTE) {
+                        if ((pos+1) < pattern.length() &&
+                            pattern.charAt(pos+1) == QUOTE) {
+                            ++pos; 
+                            // Fall through to append(ch)
+                        } else {
+                            subpart -= 2; // close quote
+                            continue;
+                        }
+                    }
+                    affix.append(ch);
+                    break;                    
+                }
+            }
+
+            if (sub0Limit == 0) {
+                sub0Limit = pattern.length();
+            }
+
+            if (sub2Limit == 0) {
+                sub2Limit = pattern.length();
+            }
+
+            /* Handle patterns with no '0' pattern character.  These patterns
+             * are legal, but must be recodified to make sense.  "##.###" ->
+             * "#0.###".  ".###" -> ".0##".
+             *
+             * We allow patterns of the form "####" to produce a zeroDigitCount
+             * of zero (got that?); although this seems like it might make it
+             * possible for format() to produce empty strings, format() checks
+             * for this condition and outputs a zero digit in this situation.
+             * Having a zeroDigitCount of zero yields a minimum integer digits
+             * of zero, which allows proper round-trip patterns.  We don't want
+             * "#" to become "#0" when toPattern() is called (even though that's
+             * what it really is, semantically).
+             */
+            if (zeroDigitCount == 0 && digitLeftCount > 0 && decimalPos >= 0) {
+                // Handle "###.###" and "###." and ".###"
+                int n = decimalPos;
+                if (n == 0) ++n; // Handle ".###"
+                digitRightCount = digitLeftCount - n;
+                digitLeftCount = n - 1;
+                zeroDigitCount = 1;
+            }
+
+            // Do syntax checking on the digits, decimal points, and quotes.
+            if ((decimalPos < 0 && digitRightCount > 0) ||
+                (decimalPos >= 0 &&
+                 (decimalPos < digitLeftCount ||
+                  decimalPos > (digitLeftCount + zeroDigitCount))) ||
+                groupingCount == 0 ||
+                subpart > 2) { // subpart > 2 == unmatched quote
+                throw new IllegalArgumentException("Malformed pattern \"" +
+                                                   pattern + '"');
+            }
+
+            // Make sure pad is at legal position before or after affix.
+            if (padPos >= 0) {
+                if (padPos == start) {
+                    padPos = PAD_BEFORE_PREFIX;
+                } else if (padPos+2 == sub0Start) {
+                    padPos = PAD_AFTER_PREFIX;
+                } else if (padPos == sub0Limit) {
+                    padPos = PAD_BEFORE_SUFFIX;
+                } else if (padPos+2 == sub2Limit) {
+                    padPos = PAD_AFTER_SUFFIX;
+                } else {
+                    throw new IllegalArgumentException("Illegal pad position");
+                }
+            }
+
+            if (part == 0) {
+                // Set negative affixes temporarily to match the positive
+                // affixes.  Fix this up later after processing both parts.
+                this.positivePrefix = this.negativePrefix = prefix.toString();
+                this.positiveSuffix = this.negativeSuffix = suffix.toString();
+                useExponentialNotation = (expDigits >= 0);
+                if (useExponentialNotation) {
+                    minExponentDigits = expDigits;
+                    exponentSignAlwaysShown = expSignAlways;
+                }
+                isCurrencyFormat = isCurrency;
+                int digitTotalCount = digitLeftCount + zeroDigitCount + digitRightCount;
+                // The effectiveDecimalPos is the position the decimal is at or
+                // would be at if there is no decimal.  Note that if
+                // decimalPos<0, then digitTotalCount == digitLeftCount +
+                // zeroDigitCount.
+                int effectiveDecimalPos = decimalPos >= 0 ? decimalPos : digitTotalCount;
+                setMinimumIntegerDigits(effectiveDecimalPos - digitLeftCount);
+                setMaximumIntegerDigits(useExponentialNotation
+                        ? digitLeftCount + getMinimumIntegerDigits()
+                        : Integer.MAX_VALUE);
+                setMaximumFractionDigits(decimalPos >= 0
+                        ? (digitTotalCount - decimalPos) : 0);
+                setMinimumFractionDigits(decimalPos >= 0
+                        ? (digitLeftCount + zeroDigitCount - decimalPos) : 0);
+                setGroupingUsed(groupingCount > 0);
+                this.groupingSize = (groupingCount > 0) ? groupingCount : 0;
+                this.multiplier = multiplier;
+                setDecimalSeparatorAlwaysShown(decimalPos == 0
+                        || decimalPos == digitTotalCount);
+                if (padPos >= 0) {
+                    padPosition = padPos;
+                    formatWidth = prefix.length() + suffix.length() +
+                        sub0Limit - sub0Start;
+                    pad = padChar;
+                } else {
+                    formatWidth = 0;
+                }
+                if (incrementVal != 0) {
+                    // BigDecimal scale cannot be negative (even though
+                    // this makes perfect sense), so we need to handle this.
+                    int scale = incrementPos - effectiveDecimalPos;
+                    roundingIncrement =
+                        java.math.BigDecimal.valueOf(incrementVal, scale > 0 ? scale : 0);
+                    if (scale < 0) {
+                        roundingIncrement =
+                            roundingIncrement.movePointRight(-scale);
+                    }
+                    roundingDouble = roundingIncrement.doubleValue();
+                    roundingMode = java.math.BigDecimal.ROUND_HALF_EVEN;
+                } else {
+                    setRoundingIncrement(null);
+                }
+            } else {
+                this.negativePrefix = prefix.toString();
+                this.negativeSuffix = suffix.toString();
+                gotNegative = true;
+            }
+        }
+
+        // If there was no negative pattern, or if the negative pattern is
+        // identical to the positive pattern, then prepend the minus sign to the
+        // positive pattern to form the negative pattern.
+        if (!gotNegative ||
+            (negativePrefix.equals(positivePrefix)
+             && negativeSuffix.equals(positiveSuffix))) {
+            negativeSuffix = positiveSuffix;
+            negativePrefix = symbols.getMinusSign() + positivePrefix;
+        }
+    }
+
+    /**
+     * First, read the default serializable fields from the stream.  Then
+     * if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1, initialize <code>useExponentialNotation</code>
+     * to false, since it was not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        if (serialVersionOnStream < 2) {
+            exponentSignAlwaysShown = false;
+            roundingDouble = 0.0;
+            roundingIncrement = null;
+            roundingMode = java.math.BigDecimal.ROUND_HALF_EVEN;
+            formatWidth = 0;
+            pad = ' ';
+            padPosition = PAD_BEFORE_PREFIX;
+            if (serialVersionOnStream < 1) {
+                // Didn't have exponential fields
+                useExponentialNotation = false;
+            }
+        }
+        serialVersionOnStream = currentSerialVersion;
+        digitList = new DigitList();
+    }
+
+    //----------------------------------------------------------------------
+    // INSTANCE VARIABLES
+    //----------------------------------------------------------------------
+
+    private transient DigitList digitList = new DigitList();
+
+    /**
+     * The symbol used as a prefix when formatting positive numbers, e.g. "+".
+     *
+     * @serial
+     * @see #getPositivePrefix
+     */
+    private String  positivePrefix = "";
+
+    /**
+     * The symbol used as a suffix when formatting positive numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getPositiveSuffix
+     */
+    private String  positiveSuffix = "";
+
+    /**
+     * The symbol used as a prefix when formatting negative numbers, e.g. "-".
+     *
+     * @serial
+     * @see #getNegativePrefix
+     */
+    private String  negativePrefix = "-";
+
+    /**
+     * The symbol used as a suffix when formatting negative numbers.
+     * This is often an empty string.
+     *
+     * @serial
+     * @see #getNegativeSuffix
+     */
+    private String  negativeSuffix = "";
+
+    /**
+     * The multiplier for use in percent, permill, etc.
+     *
+     * @serial
+     * @see #getMultiplier
+     */
+    private int     multiplier = 1;
+    
+    /**
+     * The number of digits between grouping separators in the integer
+     * portion of a number.  Must be greater than 0 if
+     * <code>NumberFormat.groupingUsed</code> is true.
+     *
+     * @serial
+     * @see #getGroupingSize
+     * @see java.text.NumberFormat#isGroupingUsed
+     */
+    private byte    groupingSize = 3;  // invariant, > 0 if useThousands
+    
+    /**
+     * If true, forces the decimal separator to always appear in a formatted
+     * number, even if the fractional part of the number is zero.
+     *
+     * @serial
+     * @see #isDecimalSeparatorAlwaysShown
+     */
+    private boolean decimalSeparatorAlwaysShown = false;
+    
+    /**
+     * True if this object represents a currency format.  This determines
+     * whether the monetary decimal separator is used instead of the normal one.
+     */
+    private transient boolean isCurrencyFormat = false;
+    
+    /**
+     * The <code>DecimalFormatSymbols</code> object used by this format.
+     * It contains the symbols used to format numbers, e.g. the grouping separator,
+     * decimal separator, and so on.
+     *
+     * @serial
+     * @see #setDecimalFormatSymbols
+     * @see java.text.DecimalFormatSymbols
+     */
+    private DecimalFormatSymbols symbols = null; // LIU new DecimalFormatSymbols();
+
+    /**
+     * True to force the use of exponential (i.e. scientific) notation when formatting
+     * numbers.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     * @since JDK 1.2
+     */
+    private boolean useExponentialNotation;  // Newly persistent in JDK 1.2
+
+    /**
+     * The minimum number of digits used to display the exponent when a number is
+     * formatted in exponential notation.  This field is ignored if
+     * <code>useExponentialNotation</code> is not true.
+     * <p>
+     * Note that the JDK 1.2 public API provides no way to set this field,
+     * even though it is supported by the implementation and the stream format.
+     * The intent is that this will be added to the API in the future.
+     *
+     * @serial
+     * @since JDK 1.2
+     */
+    private byte    minExponentDigits;       // Newly persistent in JDK 1.2
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * If true, the exponent is always prefixed with either the plus
+     * sign or the minus sign.  Otherwise, only negative exponents are
+     * prefixed with the minus sign.  This has no effect unless
+     * <code>useExponentialNotation</code> is true.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private boolean exponentSignAlwaysShown = false;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The value to which numbers are rounded during formatting.  For example,
+     * if the rounding increment is 0.05, then 13.371 would be formatted as
+     * 13.350, assuming 3 fraction digits.  Has the value <code>null</code> if
+     * rounding is not in effect, or a positive value if rounding is in effect.
+     * Default value <code>null</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private java.math.BigDecimal roundingIncrement = null;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The rounding increment as a double.  If this value is <= 0, then no
+     * rounding is done.  This value is
+     * <code>roundingIncrement.doubleValue()</code>.  Default value 0.0.
+     */
+    private transient double roundingDouble = 0.0;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The rounding mode.  This value controls any rounding operations which
+     * occur when applying a rounding increment or when reducing the number of
+     * fraction digits to satisfy a maximum fraction digits limit.  The value
+     * may assume any of the <code>BigDecimal</code> rounding mode values.
+     * Default value <code>BigDecimal.ROUND_HALF_EVEN</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int roundingMode = java.math.BigDecimal.ROUND_HALF_EVEN;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The padded format width, or zero if there is no padding.  Must
+     * be >= 0.  Default value zero.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int formatWidth = 0;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to pad the result of format to
+     * <code>formatWidth</code>, if padding is in effect.  Default value ' '.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private char pad = ' ';
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The position in the string at which the <code>pad</code> character
+     * will be inserted, if padding is in effect.  Must have a value from
+     * <code>PAD_BEFORE_PREFIX</code> to <code>PAD_AFTER_SUFFIX</code>.
+     * Default value <code>PAD_BEFORE_PREFIX</code>.
+     * @serial
+     * @since AlphaWorks NumberFormat
+     */
+    private int padPosition = PAD_BEFORE_PREFIX;
+
+    //----------------------------------------------------------------------
+
+    static final int currentSerialVersion = 2;
+
+    /**
+     * The internal serial version which says which version was written
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (default): versions before JDK 1.2
+     * <li><b>1</b>: version from JDK 1.2 and later, which includes the two new fields
+     *      <code>useExponentialNotation</code> and <code>minExponentDigits</code>.
+     * <li><b>2</b>: version on AlphaWorks, which adds roundingMode, formatWidth,
+     *      pad, padPosition, exponentSignAlwaysShown, roundingIncrement.
+     * </ul>
+     * @since JDK 1.2
+     * @serial */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    //----------------------------------------------------------------------
+    // CONSTANTS
+    //----------------------------------------------------------------------
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public static final int PAD_BEFORE_PREFIX = 0;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the prefix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public static final int PAD_AFTER_PREFIX  = 1;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted before
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_AFTER_SUFFIX
+     */
+    public static final int PAD_BEFORE_SUFFIX = 2;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Constant for <code>getPadPosition()</code> and
+     * <code>setPadPosition()</code> specifying pad characters inserted after
+     * the suffix.
+     * @see #setPadPosition
+     * @see #getPadPosition
+     * @see #PAD_BEFORE_PREFIX
+     * @see #PAD_AFTER_PREFIX
+     * @see #PAD_BEFORE_SUFFIX
+     */
+    public static final int PAD_AFTER_SUFFIX  = 3;
+
+    // Constants for characters used in programmatic (unlocalized) patterns.
+    private static final char       PATTERN_ZERO_DIGIT         = '0';
+    private static final char       PATTERN_GROUPING_SEPARATOR = ',';
+    private static final char       PATTERN_DECIMAL_SEPARATOR  = '.';
+    private static final char       PATTERN_PER_MILLE          = '\u2030';
+    private static final char       PATTERN_PERCENT            = '%';
+    private static final char       PATTERN_DIGIT              = '#';
+    private static final char       PATTERN_SEPARATOR          = ';';
+            static final String     PATTERN_EXPONENT           = "E"; // [NEW]
+            static final char       PATTERN_PAD_ESCAPE         = '*'; // [NEW]
+            static final char       PATTERN_PLUS_SIGN          = '+'; // [NEW]
+    // Pad escape is package private to allow access by DecimalFormatSymbols.
+    // Also plus sign.  Also exponent.
+
+    /**
+     * The CURRENCY_SIGN is the standard Unicode symbol for currency.  It
+     * is used in patterns and substitued with either the currency symbol,
+     * or if it is doubled, with the international currency symbol.  If the
+     * CURRENCY_SIGN is seen in a pattern, then the decimal separator is
+     * replaced with the monetary decimal separator.
+     *
+     * The CURRENCY_SIGN is not localized.
+     */
+    private static final char       CURRENCY_SIGN = '\u00A4';
+
+    private static final char       QUOTE = '\'';
+
+    // Proclaim JDK 1.1 serial compatibility.
+    static final long serialVersionUID = 864413376551465018L;
+
+    /**
+     * Cache to hold the NumberPattern of a Locale.
+     * [NEW] No longer needed -- share the NumberFormat cache
+     */
+    // private static Hashtable cachedLocaleData = new Hashtable(3);
+}
+
+//eof
diff --git a/src/com/ibm/text/DecimalFormatSymbols.java b/src/com/ibm/text/DecimalFormatSymbols.java
new file mode 100755
index 0000000..6761b204
--- /dev/null
+++ b/src/com/ibm/text/DecimalFormatSymbols.java
@@ -0,0 +1,619 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/DecimalFormatSymbols.java,v $ 
+ * $Date: 2000/03/10 04:07:19 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
+import java.util.ResourceBundle;
+import java.util.Locale;
+import java.util.Hashtable;
+
+/**
+ * This class represents the set of symbols (such as the decimal separator, the
+ * grouping separator, and so on) needed by <code>DecimalFormat</code> to format
+ * numbers. <code>DecimalFormat</code> creates for itself an instance of
+ * <code>DecimalFormatSymbols</code> from its locale data.  If you need to
+ * change any of these symbols, you can get the
+ * <code>DecimalFormatSymbols</code> object from your <code>DecimalFormat</code>
+ * and modify it.
+ *
+ * <p><strong>This is an enhanced version of <code>DecimalFormatSymbols</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong>.</strong>
+ *
+ * @see          java.util.Locale
+ * @see          DecimalFormat
+ * @version      1.12 29 Jan 1997
+ * @author       Mark Davis
+ * @author       Alan Liu
+ */
+
+final public class DecimalFormatSymbols implements Cloneable, Serializable {
+
+    /**
+     * Create a DecimalFormatSymbols object for the default locale.
+     */
+    public DecimalFormatSymbols() {
+        initialize( Locale.getDefault() );
+    }
+
+    /**
+     * Create a DecimalFormatSymbols object for the given locale.
+     */
+    public DecimalFormatSymbols( Locale locale ) {
+        initialize( locale );
+    }
+
+    /**
+     * character used for zero. Different for Arabic, etc.
+     */
+    public char getZeroDigit() {
+        return zeroDigit;
+    }
+
+    public void setZeroDigit(char zeroDigit) {
+        this.zeroDigit = zeroDigit;
+    }
+
+    /**
+     * character used for thousands separator. Different for French, etc.
+     */
+    public char getGroupingSeparator() {
+        return groupingSeparator;
+    }
+
+    public void setGroupingSeparator(char groupingSeparator) {
+        this.groupingSeparator = groupingSeparator;
+    }
+
+    /**
+     * character used for decimal sign. Different for French, etc.
+     */
+    public char getDecimalSeparator() {
+        return decimalSeparator;
+    }
+
+    public void setDecimalSeparator(char decimalSeparator) {
+        this.decimalSeparator = decimalSeparator;
+    }
+
+    /**
+     * character used for mille percent sign. Different for Arabic, etc.
+     */
+    public char getPerMill() {
+        return perMill;
+    }
+
+    public void setPerMill(char perMill) {
+        this.perMill = perMill;
+    }
+
+    /**
+     * character used for percent sign. Different for Arabic, etc.
+     */
+    public char getPercent() {
+        return percent;
+    }
+
+    public void setPercent(char percent) {
+        this.percent = percent;
+    }
+
+    /**
+     * character used for a digit in a pattern.
+     */
+    public char getDigit() {
+        return digit;
+    }
+
+    public void setDigit(char digit) {
+        this.digit = digit;
+    }
+
+    /**
+     * character used to separate positive and negative subpatterns
+     * in a pattern.
+     */
+    public char getPatternSeparator() {
+        return patternSeparator;
+    }
+
+    public void setPatternSeparator(char patternSeparator) {
+        this.patternSeparator = patternSeparator;
+    }
+
+    /**
+     * character used to represent infinity. Almost always left
+     * unchanged.
+     */
+
+    public String getInfinity() {
+        return infinity;
+    }
+
+    public void setInfinity(String infinity) {
+        this.infinity = infinity;
+    }
+
+    /**
+     * character used to represent NaN. Almost always left
+     * unchanged.
+     */
+    public String getNaN() {
+        return NaN;
+    }
+
+    public void setNaN(String NaN) {
+        this.NaN = NaN;
+    }
+
+    /**
+     * character used to represent minus sign. If no explicit
+     * negative format is specified, one is formed by prefixing
+     * minusSign to the positive format.
+     */
+    public char getMinusSign() {
+        return minusSign;
+    }
+
+    public void setMinusSign(char minusSign) {
+        this.minusSign = minusSign;
+    }
+
+    /**
+     * Return the string denoting the local currency.
+     */
+    public String getCurrencySymbol()
+    {
+        return currencySymbol;
+    }
+
+    /**
+     * Set the string denoting the local currency.
+     */
+    public void setCurrencySymbol(String currency)
+    {
+        currencySymbol = currency;
+    }
+
+    /**
+     * Return the international string denoting the local currency.
+     */
+    public String getInternationalCurrencySymbol()
+    {
+        return intlCurrencySymbol;
+    }
+
+    /**
+     * Set the international string denoting the local currency.
+     */
+    public void setInternationalCurrencySymbol(String currency)
+    {
+        intlCurrencySymbol = currency;
+    }
+
+    /**
+     * Return the monetary decimal separator.
+     */
+    public char getMonetaryDecimalSeparator()
+    {
+        return monetarySeparator;
+    }
+
+    /**
+     * Set the monetary decimal separator.
+     */
+    public void setMonetaryDecimalSeparator(char sep)
+    {
+        monetarySeparator = sep;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @return the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #setExponentSeparator
+     */
+    public String getExponentSeparator()
+    {
+        return exponentSeparator;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * @param exp the localized exponent symbol, used in localized patterns
+     * and formatted strings
+     * @see #getExponentSeparator
+     */
+    public void setExponentSeparator(String exp)
+    {
+        exponentSeparator = exp;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the localized plus sign.
+     * @return the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #setPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     */
+    public char getPlusSign() {
+        return plusSign;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the localized plus sign.
+     * @param plus the plus sign, used in localized patterns and formatted
+     * strings
+     * @see #getPlusSign
+     * @see #setMinusSign
+     * @see #getMinusSign
+     */
+    public void setPlusSign(char plus) {
+        plusSign = plus;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Return the character used to pad numbers out to a specified width.  This
+     * is not the pad character itself; rather, it is the special pattern
+     * character <em>preceding</em> the pad character.  In the pattern
+     * "*_#,##0", '*' is the pad escape, and '_' is the pad character.
+     * @return the character 
+     * @see #setPadEscape
+     * @see DecimalFormat#getFormatWidth
+     * @see DecimalFormat#getPadPosition
+     * @see DecimalFormat#getPadCharacter
+     */
+    public char getPadEscape() {
+        return padEscape;
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Set the character used to pad numbers out to a specified width.  This is
+     * not the pad character itself; rather, it is the special pattern character
+     * <em>preceding</em> the pad character.  In the pattern "*_#,##0", '*' is
+     * the pad escape, and '_' is the pad character.
+     * @see #getPadEscape
+     * @see DecimalFormat#setFormatWidth
+     * @see DecimalFormat#setPadPosition
+     * @see DecimalFormat#setPadCharacter
+     */
+    public void setPadEscape(char c) {
+        padEscape = c;
+    }
+
+    /**
+     * Standard override.
+     */
+    public Object clone() {
+        try {
+            return (DecimalFormatSymbols)super.clone();
+            // other fields are bit-copied
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Override equals
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj) return true;
+        if (getClass() != obj.getClass()) return false;
+        DecimalFormatSymbols other = (DecimalFormatSymbols) obj;
+        return (zeroDigit == other.zeroDigit &&
+        groupingSeparator == other.groupingSeparator &&
+        decimalSeparator == other.decimalSeparator &&
+        percent == other.percent &&
+        perMill == other.perMill &&
+        digit == other.digit &&
+        minusSign == other.minusSign &&
+        patternSeparator == other.patternSeparator &&
+        infinity.equals(other.infinity) &&
+        NaN.equals(other.NaN) &&
+        currencySymbol.equals(other.currencySymbol) &&
+        intlCurrencySymbol.equals(other.intlCurrencySymbol) &&
+        padEscape == other.padEscape && // [NEW]
+        plusSign == other.plusSign && // [NEW]
+        exponentSeparator.equals(other.exponentSeparator) && // [NEW]
+        monetarySeparator == other.monetarySeparator);
+    }
+
+    /**
+     * Override hashCode
+     */
+    public int hashCode() {
+            int result = zeroDigit;
+            result = result * 37 + groupingSeparator;
+            result = result * 37 + decimalSeparator;
+            return result;
+    }
+
+    /**
+     * Initializes the symbols from the LocaleElements resource bundle.
+     * Note: The organization of LocaleElements badly needs to be
+     * cleaned up.
+     */
+    private void initialize( Locale locale ) {
+        /* try the cache first */
+        String[][] data = (String[][]) cachedLocaleData.get(locale);
+        String[] numberElements;
+        String[] currencyElements;
+        if (data == null) {  /* cache miss */
+            data = new String[2][];
+            ResourceBundle rb = ResourceBundle.getBundle
+                (NumberFormat.RESOURCE_BASE, locale); // [NEW] Temporary
+            data[0] = rb.getStringArray("NumberElements");
+            data[1] = rb.getStringArray("CurrencyElements");
+            /* update cache */
+            cachedLocaleData.put(locale, data);
+        }
+        numberElements = data[0];
+        currencyElements = data[1];
+
+        decimalSeparator = numberElements[0].charAt(0);
+        groupingSeparator = numberElements[1].charAt(0);
+        // [NEW] Temporary hack to support old JDK 1.1 resources
+        patternSeparator = numberElements[2].length() > 0 ?
+            numberElements[2].charAt(0) : ';';
+        // patternSeparator = numberElements[2].charAt(0);
+        percent = numberElements[3].charAt(0);
+        zeroDigit = numberElements[4].charAt(0); //different for Arabic,etc.
+        digit = numberElements[5].charAt(0);
+        minusSign = numberElements[6].charAt(0);
+        
+        // [NEW] Temporary hack to support JDK versions before 1.1.6 (?)
+        exponentSeparator = numberElements.length >= 9 ?
+            numberElements[7] : DecimalFormat.PATTERN_EXPONENT;
+        perMill = numberElements.length >= 9 ?
+            numberElements[8].charAt(0) : '\u2030';
+        infinity  = numberElements.length >= 10 ?
+            numberElements[9] : "\u221e";
+        NaN = numberElements.length >= 11 ?
+            numberElements[10] : "\ufffd";
+        
+        // [NEW] Temporarily hard code; retrieve from resource later
+        plusSign  = DecimalFormat.PATTERN_PLUS_SIGN;
+        padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+
+        currencySymbol = currencyElements[0];
+        intlCurrencySymbol = currencyElements[1];
+
+        // if the resource data specified the empty string as the monetary decimal
+        // separator, that means we should just use the regular separator as the
+        // monetary separator
+        if (currencyElements[2].length() == 0)
+            monetarySeparator = decimalSeparator;
+        else
+            monetarySeparator = currencyElements[2].charAt(0);
+    }
+
+    /**
+     * Read the default serializable fields, then if <code>serialVersionOnStream</code>
+     * is less than 1, initialize <code>monetarySeparator</code> to be
+     * the same as <code>decimalSeparator</code> and <code>exponential</code>
+     * to be 'E'.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     *
+     * @since JDK 1.1.6
+     */
+    private void readObject(ObjectInputStream stream)
+        throws IOException, ClassNotFoundException {
+        stream.defaultReadObject();
+        if (serialVersionOnStream < 1) {
+            // Didn't have monetarySeparator or exponential field;
+            // use defaults.
+            monetarySeparator = decimalSeparator;
+            exponential = 'E';
+        }
+        if (serialVersionOnStream < 2) { // [NEW]
+            padEscape = DecimalFormat.PATTERN_PAD_ESCAPE;
+            plusSign = DecimalFormat.PATTERN_PLUS_SIGN;
+            exponentSeparator = String.valueOf(exponential);
+            // Although we read the exponential field on stream to create the
+            // exponentSeparator, we don't do the reverse, since scientific
+            // notation isn't supported by the old classes, even though the
+            // symbol is there.
+        }
+        serialVersionOnStream = currentSerialVersion;
+    }
+
+    /**
+     * Character used for zero.
+     *
+     * @serial
+     * @see #getZeroDigit
+     */
+    private  char    zeroDigit;
+
+    /**
+     * Character used for thousands separator.
+     *
+     * @serial
+     * @see #getGroupingSeparator
+     */
+    private  char    groupingSeparator;
+
+    /**
+     * Character used for decimal sign.
+     *
+     * @serial
+     * @see #getDecimalSeparator
+     */
+    private  char    decimalSeparator;
+
+    /**
+     * Character used for mille percent sign.
+     *
+     * @serial
+     * @see #getPerMill
+     */
+    private  char    perMill;
+
+    /**
+     * Character used for percent sign.
+     * @serial
+     * @see #getPercent
+     */
+    private  char    percent;
+
+    /**
+     * Character used for a digit in a pattern.
+     *
+     * @serial
+     * @see #getDigit
+     */
+    private  char    digit;
+
+    /**
+     * Character used to separate positive and negative subpatterns
+     * in a pattern.
+     *
+     * @serial
+     * @see #getPatternSeparator
+     */
+    private  char    patternSeparator;
+
+    /**
+     * Character used to represent infinity.
+     * @serial
+     * @see #getInfinity
+     */
+    private  String  infinity;
+
+    /**
+     * Character used to represent NaN.
+     * @serial
+     * @see #getNaN
+     */
+    private  String  NaN;
+
+    /**
+     * Character used to represent minus sign.
+     * @serial
+     * @see #getMinusSign
+     */
+    private  char    minusSign;
+
+    /**
+     * String denoting the local currency, e.g. "$".
+     * @serial
+     * @see #getCurrencySymbol
+     */
+    private  String  currencySymbol;
+
+    /**
+     * International string denoting the local currency, e.g. "USD".
+     * @serial
+     * @see #getInternationalCurrencySymbol
+     */
+    private  String  intlCurrencySymbol;
+
+    /**
+     * The decimal separator used when formatting currency values.
+     * @serial
+     * @since JDK 1.1.6
+     * @see #getMonetaryDecimalSeparator
+     */
+    private  char    monetarySeparator; // Field new in JDK 1.1.6
+
+    /**
+     * The character used to distinguish the exponent in a number formatted
+     * in exponential notation, e.g. 'E' for a number such as "1.23E45".
+     * <p>
+     * Note that this field has been superseded by <code>exponentSeparator</code>.
+     * It is retained for backward compatibility.
+     *
+     * @serial
+     * @since JDK 1.1.6
+     */
+    private  char    exponential;       // Field new in JDK 1.1.6
+
+    /**
+     * The string used to separate the mantissa from the exponent.
+     * Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
+     * <p>
+     * Note that this supersedes the <code>exponential</code> field.
+     *
+     * @serial
+     * @since AlphaWorks
+     */
+    private String exponentSeparator;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a padding character in a format,
+     * e.g., '*' in a pattern such as "$*_#,##0.00".
+     * @serial
+     * @since AlphaWorks
+     */
+    private char padEscape;
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * The character used to indicate a plus sign.
+     * @serial
+     * @since AlphaWorks
+     */
+    private char plusSign;
+
+    // Proclaim JDK 1.1 FCS compatibility
+    static final long serialVersionUID = 5772796243397350300L;
+
+    // The internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.5
+    // - 1 for version from JDK 1.1.6, which includes two new fields:
+    //     monetarySeparator and exponential.
+    // - 2 for version from AlphaWorks, which includes 3 new fields:
+    //     padEscape, exponentSeparator, and plusSign.
+    private static final int currentSerialVersion = 2;
+    
+    /**
+     * Describes the version of <code>DecimalFormatSymbols</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): versions prior to JDK 1.1.6.
+     *
+     * <li><b>1</b>: Versions written by JDK 1.1.6 or later, which includes
+     *      two new fields: <code>monetarySeparator</code> and <code>exponential</code>.
+     * <li><b>2</b>: Version for AlphaWorks.  Adds padEscape, exponentSeparator,
+     *      and plusSign.
+     * </ul>
+     * When streaming out a <code>DecimalFormatSymbols</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     * @since JDK 1.1.6
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * cache to hold the NumberElements and the CurrencyElements
+     * of a Locale.
+     */
+    private static final Hashtable cachedLocaleData = new Hashtable(3);
+}
diff --git a/src/com/ibm/text/DecompData.java b/src/com/ibm/text/DecompData.java
new file mode 100755
index 0000000..e75a6b0
--- /dev/null
+++ b/src/com/ibm/text/DecompData.java
@@ -0,0 +1,747 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/DecompData.java,v $ 
+ * $Date: 2000/03/10 04:07:20 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+import com.ibm.util.*;
+// This class is MACHINE GENERATED.  Run NormalizerBuilder to regenerate.
+
+
+class DecompData {
+    static final int MAX_CANONICAL = 21754;
+    static final int MAX_COMPAT = 11177;
+    static final int DECOMP_MASK = 32767;
+    static final int DECOMP_RECURSE = 32768;
+    static final short BASE = 0;
+
+    static final CompactCharArray offsets = new CompactCharArray(
+        "\000\u0800\uA5A5\005\000 @`\u0080\u00A0\u00C0\u00E0\000\u0100\u0120\u0140"+
+        "\u0160\u0180\000\000\000\u01A0\u01C0\u01E0\000\000\u0200\u0220\u0240\u0260"+
+        "\u0280\u02A0\u02C0\u02E0\u0300\u0320\000\000\u0340\u0360\uA5A5\004\000"+
+        "\u0380\uA5A5\004\000\u03A0\000\u03C0\000\000\u03E0\uA5A5\022\000\u0400"+
+        "\u0420\000\000\000\u0440\000\000\u0460\u0480\uA5A5\007\000\u04A0\000\u04C0"+
+        "\000\u04E0\000\000\000\u0500\000\000\000\u0520\000\000\000\u0540\000\000"+
+        "\000\u0560\000\000\u0580\000\000\000\u05A0\u05C0\000\u05E0\000\u0600\u0620"+
+        "\u0640\u0660\000\000\000\u0680\uA5A5n\000\u06A0\u06C0\u06E0\u0700\u0720"+
+        "\u0740\u0760\u0780\u07A0\u07C0\u07E0\u0800\u0820\u0840\u0860\u0880\u08A0"+
+        "\u08C0\u08E0\u0900\u0920\u0940\000\000\u0960\u0980\u09A0\u09C0\u09E0\u0A00"+
+        "\u0A20\000\u0A40\u0A60\u0A80\u0AA0\u0AC0\u0AE0\000\u0B00\000\u0B20\uA5A5"+
+        "\011\000\u0B40\u0B60\u0B80\u0BA0\u0BC0\uA5A5L\000\u0BE0\000\000\u0C00"+
+        "\u0C20\u0C40\u0C60\u0C80\u0CA0\u0CC0\u0CE0\000\u0D00\u0D20\u0D40\u0D60"+
+        "\u0D80\u0DA0\u0DC0\u0DE0\000\u0E00\u0E20\u0E40\u0E60\000\000\000\u0E80"+
+        "\u0EA0\u0EC0\u0EE0\u0F00\u0F20\u0F40\u0F60\u0F80\u0FA0\u0FC0\u0FE0\u1000"+
+        "\u1020\u1040\u1060\uA5A5\u0628\000\u1080\u10A0\u10C0\u10E0\u1100\u1120"+
+        "\u1140\u1160\u1180\u11A0\uA5A5\006\000\u11C0\u11E0\u1200\u1220\u1240\u1260"+
+        "\u1280\u12A0\u12C0\u12E0\u1300\u1320\u1340\u1360\u1380\u13A0\u13C0\u13E0"+
+        "\u1400\u1420\u1440\u1460\u1480\u14A0\000\u14C0\u14E0\u1500\u1520\u1540"+
+        "\u1560\u1580\u15A0\u15C0\u15E0\u1600\u1620\u1640\u1660\u1680"
+        ,
+        "\000\u16A0\uA5A5 \000\005\uA5A5\007\000\012\000\021\uA5A5\004\000\026"+
+        "\000\000\035!&-\000\00029=\000CO[\000\u2BAE\u2BB6\u2BBE\u2BC6\u2BCE\u2BD6"+
+        "\000\u2BDE\u2BE6\u2BEE\u2BF6\u2BFE\u2C06\u2C0E\u2C16\u2C1E\000\u2C26\u2C2E"+
+        "\u2C36\u2C3E\u2C46\u2C4E\000\000\u2C56\u2C5E\u2C66\u2C6E\u2C76\000\000"+
+        "\u2C7E\u2C86\u2C8E\u2C96\u2C9E\u2CA6\000\u2CAE\u2CB6\u2CBE\u2CC6\u2CCE"+
+        "\u2CD6\u2CDE\u2CE6\u2CEE\000\u2CF6\u2CFE\u2D06\u2D0E\u2D16\u2D1E\000\000"+
+        "\u2D26\u2D2E\u2D36\u2D3E\u2D46\000\u2D4E\u2D56\u2D5E\u2D66\u2D6E\u2D76"+
+        "\u2D7E\u2D86\u2D8E\u2D96\u2D9E\u2DA6\u2DAE\u2DB6\u2DBE\u2DC6\u2DCE\000"+
+        "\000\u2DD6\u2DDE\u2DE6\u2DEE\u2DF6\u2DFE\u2E06\u2E0E\u2E16\u2E1E\u2E26"+
+        "\u2E2E\u2E36\u2E3E\u2E46\u2E4E\u2E56\u2E5E\u2E66\u2E6E\000\000\u2E76\u2E7E"+
+        "\u2E86\u2E8E\u2E96\u2E9E\u2EA6\u2EAE\u2EB6\000fn\u2EBE\u2EC6\u2ECE\u2ED6"+
+        "\000\u2EDE\u2EE6\u2EEE\u2EF6\u2EFE\u2F06v~\000\000\u2F0E\u2F16\u2F1E\u2F26"+
+        "\u2F2E\u2F36\u0086\000\000\u2F3E\u2F46\u2F4E\u2F56\u2F5E\u2F66\000\000"+
+        "\u2F6E\u2F76\u2F7E\u2F86\u2F8E\u2F96\u2F9E\u2FA6\u2FAE\u2FB6\u2FBE\u2FC6"+
+        "\u2FCE\u2FD6\u2FDE\u2FE6\u2FEE\u2FF6\000\000\u2FFE\u3006\u300E\u3016\u301E"+
+        "\u3026\u302E\u3036\u303E\u3046\u304E\u3056\u305E\u3066\u306E\u3076\u307E"+
+        "\u3086\u308E\u3096\u309E\u30A6\u30AE\u008D\u30B6\u30BE\uA5A5\015\000\u30C6"+
+        "\u30CE\uA5A5\023\000\u0093\u009F\u00AB\u00B6\u00BE\u00C6\u00CE\u00D6\u00DE"+
+        "\u30D6\u30DE\u30E6\u30EE\u30F6\u30FE\u3106\u310E\u3117\u3123\u312F\u313B"+
+        "\u3147\u3153\u315F\u316B\000\u3177\u3183\u318F\u319B\u31A6\u31AE\000\000"+
+        "\u31B6\u31BE\u31C6\u31CE\u31D6\u31DE\u31E7\u31F3\u31FE\u3206\u320E\u0092"+
+        "\u009E\u00AA\u3216\u321E\000\000\u3226\u322E\u3237\u3243\u324E\u3256\u325E"+
+        "\u3266\u326E\u3276\u327E\u3286\u328E\u3296\u329E\u32A6\u32AE\u32B6\u32BE"+
+        "\u32C6\u32CE\u32D6\u32DE\u32E6\u32EE\u32F6\u32FE\u3306\u330E\u3316\u331E"+
+        "\u3326\u332E\u3336\u333E\u3346\000\000\u334E\u3356\uA5A5\006\000\u335E"+
+        "\u3366\u336E\u3376\u337F\u338B\u3397\u33A3\u33AE\u33B6\u33BF\u33CB\u33D6"+
+        "\u33DE\uA5A5\034\000\u00E5\u00E9q\u00ED\u00F1\u00F5\u00F9\u00FD\u0101"+
+        "\uA5A5\037\000\u0106\u010E\u0116\u011E\u0126\u012E\000\000\u0135}\u008D"+
+        "\u0139\u013D\uA5A5\033\000\u33E5\u33E9\000\u33ED\u33F2\uA5A5/\000\u33F9"+
+        "\uA5A5\005\000\u0142\000\000\000\u33FD\uA5A5\005\000&\uB402\u340A\u3411"+
+        "\u3416\u341E\u3426\000\u342E\000\u3436\u343E\u3447\uA5A5\031\000\u3452"+
+        "\u345A\u3462\u346A\u3472\u347A\u3483\uA5A5\031\000\u348E\u3496\u349E\u34A6"+
+        "\u34AE\000\u0149\u014D\u0151\uB4B6\uB4BE\u0155\u0159\uA5A5\031\000\u015D"+
+        "\u0161\u0165\uA5A5\015\000\u34C6\u34CE\000\u34D6\000\000\000\u34DE\uA5A5"+
+        "\004\000\u34E6\u34EE\u34F6\uA5A5\012\000\u34FE\uA5A5\037\000\u3506\uA5A5"+
+        "\026\000\u350E\u3516\000\u351E\000\000\000\u3526\uA5A5\004\000\u352E\u3536"+
+        "\u353E\uA5A5\027\000\u3546\u354E\uA5A5\011\000\u3556\u355E\uA5A5\015\000"+
+        "\u3566\u356E\u3576\u357E\000\000\u3586\u358E\000\000\u3596\u359E\u35A6"+
+        "\u35AE\u35B6\u35BE\000\000\u35C6\u35CE\u35D6\u35DE\u35E6\u35EE\000\000"+
+        "\u35F6\u35FE\u3606\u360E\u3616\u361E\u3626\u362E\u3636\u363E\u3646\u364E"+
+        "\000\000\u3656\u365E\uA5A5\015\000\u016A\uA5A5\032\000\u3666\u366E\u3676"+
+        "\u367E\u3686\uA5A5.\000\u0172\u017A\u0182\u018A\uA5A5\007\000\u368E\000"+
+        "\u3696\uA5A5\020\000\u369E\uA5A5\025\000\u36A6\uA5A5\007\000\u36AE\000"+
+        "\000\u36B6\uA5A5#\000\u36BE\u36C6\u36CE\u36D6\u36DE\u36E6\u36EE\u36F6"+
+        "\uA5A5\013\000\u36FE\u3706\uA5A5\017\000\u370E\u3716\000\u371E\uA5A5\023"+
+        "\000\u3726\000\000\u372E\uA5A5\042\000\u3736\u373E\u3746\000\000\u374E"+
+        "\uA5A5\011\000\u3756\000\000\u375E\u3766\uA5A5\017\000\u376E\u3776\uA5A5"+
+        "\026\000\u377E\uA5A5\025\000\u3786\u378E\u3796\uA5A5\033\000\u379E\uA5A5"+
+        "\027\000\u37A6\uA5A5\006\000\u37AE\u37B6\000\u37BE\u37C7\uA5A5\036\000"+
+        "\u37D2\u37DA\u37E2\uA5A5-\000\u37EA\000\u37F2\u37FB\u3806\uA5A5\024\000"+
+        "\u0192\uA5A5\037\000\u019A\uA5A5(\000\u01A2\u01AA\uA5A5\016\000\u01B1"+
+        "\uA5A5\026\000\u380E\uA5A5\011\000\u3816\uA5A5\004\000\u381E\uA5A5\004"+
+        "\000\u3826\uA5A5\004\000\u382E\uA5A5\014\000\u3836\uA5A5\011\000\u383E"+
+        "\000\u3846\u384E\u01B7\u3856\u01C3\uA5A5\007\000\u385E\uA5A5\021\000\u3866"+
+        "\uA5A5\011\000\u386E\uA5A5\004\000\u3876\uA5A5\004\000\u387E\uA5A5\004"+
+        "\000\u3886\uA5A5\014\000\u388E\uA5A5\014\000\u3896\uA5A5\031\000\u389E"+
+        "\u38A6\u38AE\u38B6\u38BE\u38C6\u38CE\u38D6\u38DF\u38EB\u38F6\u38FE\u3906"+
+        "\u390E\u3916\u391E\u3926\u392E\u3936\u393E\u3947\u3953\u395F\u396B\u3976"+
+        "\u397E\u3986\u398E\u3997\u39A3\u39AE\u39B6\u39BE\u39C6\u39CE\u39D6\u39DE"+
+        "\u39E6\u39EE\u39F6\u39FE\u3A06\u3A0E\u3A16\u3A1E\u3A26\u3A2F\u3A3B\u3A46"+
+        "\u3A4E\u3A56\u3A5E\u3A66\u3A6E\u3A76\u3A7E\u3A87\u3A93\u3A9E\u3AA6\u3AAE"+
+        "\u3AB6\u3ABE\u3AC6\u3ACE\u3AD6\u3ADE\u3AE6\u3AEE\u3AF6\u3AFE\u3B06\u3B0E"+
+        "\u3B16\u3B1E\u3B26\u3B2F\u3B3B\u3B47\u3B53\u3B5F\u3B6B\u3B77\u3B83\u3B8E"+
+        "\u3B96\u3B9E\u3BA6\u3BAE\u3BB6\u3BBE\u3BC6\u3BCF\u3BDB\u3BE6\u3BEE\u3BF6"+
+        "\u3BFE\u3C06\u3C0E\u3C17\u3C23\u3C2F\u3C3B\u3C47\u3C53\u3C5E\u3C66\u3C6E"+
+        "\u3C76\u3C7E\u3C86\u3C8E\u3C96\u3C9E\u3CA6\u3CAE\u3CB6\u3CBE\u3CC6\u3CCF"+
+        "\u3CDB\u3CE7\u3CF3\u3CFE\u3D06\u3D0E\u3D16\u3D1E\u3D26\u3D2E\u3D36\u3D3E"+
+        "\u3D46\u3D4E\u3D56\u3D5E\u3D66\u3D6E\u3D76\u3D7E\u3D86\u3D8E\u3D96\u3D9E"+
+        "\u3DA6\u3DAE\u3DB6\u3DBE\u3DC6\u3DCE\u3DD6\u3DDE\u3DE6\u01CE\uBDEE\uA5A5"+
+        "\004\000\u3DF6\u3DFE\u3E06\u3E0E\u3E17\u3E23\u3E2F\u3E3B\u3E47\u3E53\u3E5F"+
+        "\u3E6B\u3E77\u3E83\u3E8F\u3E9B\u3EA7\u3EB3\u3EBF\u3ECB\u3ED7\u3EE3\u3EEF"+
+        "\u3EFB\u3F06\u3F0E\u3F16\u3F1E\u3F26\u3F2E\u3F37\u3F43\u3F4F\u3F5B\u3F67"+
+        "\u3F73\u3F7F\u3F8B\u3F97\u3FA3\u3FAE\u3FB6\u3FBE\u3FC6\u3FCE\u3FD6\u3FDE"+
+        "\u3FE6\u3FEF\u3FFB\u4007\u4013\u401F\u402B\u4037\u4043\u404F\u405B\u4067"+
+        "\u4073\u407F\u408B\u4097\u40A3\u40AF\u40BB\u40C7\u40D3\u40DE\u40E6\u40EE"+
+        "\u40F6\u40FF\u410B\u4117\u4123\u412F\u413B\u4147\u4153\u415F\u416B\u4176"+
+        "\u417E\u4186\u418E\u4196\u419E\u41A6\u41AE\uA5A5\006\000\u41B6\u41BE\u41C7"+
+        "\u41D3\u41DF\u41EB\u41F7\u4203\u420E\u4216\u421F\u422B\u4237\u4243\u424F"+
+        "\u425B\u4266\u426E\u4277\u4283\u428F\u429B\000\000\u42A6\u42AE\u42B7\u42C3"+
+        "\u42CF\u42DB\000\000\u42E6\u42EE\u42F7\u4303\u430F\u431B\u4327\u4333\u433E"+
+        "\u4346\u434F\u435B\u4367\u4373\u437F\u438B\u4396\u439E\u43A7\u43B3\u43BF"+
+        "\u43CB\u43D7\u43E3\u43EE\u43F6\u43FF\u440B\u4417\u4423\u442F\u443B\u4446"+
+        "\u444E\u4457\u4463\u446F\u447B\000\000\u4486\u448E\u4497\u44A3\u44AF\u44BB"+
+        "\000\000\u44C6\u44CE\u44D7\u44E3\u44EF\u44FB\u4507\u4513\000\u451E\000"+
+        "\u4527\000\u4533\000\u453F\u454A\u4552\u455B\u4567\u4573\u457F\u458B\u4597"+
+        "\u45A2\u45AA\u45B3\u45BF\u45CB\u45D7\u45E3\u45EF\u45FA\u4602\u460A\u4612"+
+        "\u461A\u4622\u462A\u4632\u463A\u4642\u464A\u4652\u465A\u4662\000\000\u466B"+
+        "\u4677\u4680\u4694\u46A8\u46BC\u46D0\u46E4\u46FB\u4707\u4710\u4724\u4738"+
+        "\u474C\u4760\u4774\u478B\u4797\u47A0\u47B4\u47C8\u47DC\u47F0\u4804\u481B"+
+        "\u4827\u4830\u4844\u4858\u486C\u4880\u4894\u48AB\u48B7\u48C0\u48D4\u48E8"+
+        "\u48FC\u4910\u4924\u493B\u4947\u4950\u4964\u4978\u498C\u49A0\u49B4\u49CA"+
+        "\u49D2\u49DB\u49E6\u49EF\000\u49FA\u4A03\u4A0E\u4A16\u4A1E\u4A26\u4A2E"+
+        "\u01D6\u4A35\u01D6\u01DE\uCA3A\u4A43\u4A4E\u4A57\000\u4A62\u4A6B\u4A76"+
+        "\u4A7E\u4A86\u4A8E\u4A96\uCA9E\uCAA6\uCAAE\u4AB6\u4ABE\u4AC7\u4AD3\000"+
+        "\000\u4ADE\u4AE7\u4AF2\u4AFA\u4B02\u4B0A\000\uCB12\uCB1A\uCB22\u4B2A\u4B32"+
+        "\u4B3B\u4B47\u4B52\u4B5A\u4B62\u4B6B\u4B76\u4B7E\u4B86\u4B8E\u4B96\uCB9E"+
+        "\uCBA6\u4BAD\000\000\u4BB3\u4BBE\u4BC7\000\u4BD2\u4BDB\u4BE6\u4BEE\u4BF6"+
+        "\u4BFE\u4C06\uCC0D\u01E6\000\uCC11\uCC15\uA5A5\011\005\uA5A5\006\000\u01ED"+
+        "\uA5A5\005\000\u01F2\uA5A5\014\000\u01F9\u01FE\u01FB\uA5A5\010\000\005"+
+        "\000\000\000\u0206\u020F\000\u021A\u0223\uA5A5\004\000\u022E\000\u0236"+
+        "\uA5A5\011\000\u023E\u0246\uA5A5&\000\u024D\000\000\000I\u0251\u0255\u0259"+
+        "\u025D\u0261\u0265\u0269\u026D\u0271\u0275\u0089\u024D9\035!I\u0251\u0255"+
+        "\u0259\u025D\u0261\u0265\u0269\u026D\u0271\u0275\uA5A5\031\000\u027A\uA5A5"+
+        "\027\000\u0283\u028F\u0299\u029E\000\u02A7\u02B3\u02BD\000\u02C2\u02C9"+
+        "\u02CD\u02CD\u02CD\u00E5\u02D1eeu}\000\u00CD\u02D6\000\000\u02DD\u02E1"+
+        "\u0279\u0279\u0279\000\000\u02E6\u02EF\u02FA\000\u0095\000\u4C19\000\u0095"+
+        "\000\u4C1D\u4C22\u0301\u0299\000\u0305\u02F1\u02C5\000\u02E9=\u0309\u030D"+
+        "\u0311\u0315m\uA5A5\031\000\u031B\u0327\u0333\u033F\u034B\u0357\u0363"+
+        "\u036F\u037B\u0387\u0393\u039FBe\u03AA\u03B3\u03BE\u03C1\u03C6\u03CF\u03D8"+
+        "\u03EE\u03F1\u03F6\u03FFu\u0299\u0091\u02E9m\u040A\u0413\u041E\u0421\u0426"+
+        "\u042F\u0438\u044E\u0139\u0456\u045F}\u0289\u00A9\u0469\uA5A5\032\000"+
+        "\u4C2A\u4C32\uA5A5\022\000\u4C3A\uA5A5\036\000\u4C42\u4C4A\u4C52\uA5A5"+
+        "\024\000\u4C5A\uA5A5\004\000\u4C62\000\000\u4C6A\uA5A5\027\000\u4C72\000"+
+        "\u4C7A\uA5A5\005\000\u046E\u0477\000\u0482\u048B\uA5A5\020\000\u4C82\000"+
+        "\000\u4C8A\000\000\u4C92\000\u4C9A\uA5A5\026\000\u4CA2\000\u4CAA\uA5A5"+
+        "\012\000\u4CB2\u4CBA\u4CC2\u4CCA\u4CD2\000\000\u4CDA\u4CE2\000\000\u4CEA"+
+        "\u4CF2\uA5A5\006\000\u4CFA\u4D02\000\000\u4D0A\u4D12\000\000\u4D1A\u4D22"+
+        "\uA5A5\042\000\u4D2A\u4D32\u4D3A\u4D42\uA5A5\020\000\u4D4A\u4D52\u4D5A"+
+        "\u4D62\uA5A5\006\000\u4D6A\u4D72\u4D7A\u4D82\uA5A5\033\000\u4D89\u4D8D"+
+        "\uA5A5\025\0009\035!I\u0251\u0255\u0259\u025D\u0261\u0496\u049E\u04A6"+
+        "\u04AE\u04B6\u04BE\u04C6\u04CE\u04D6\u04DE\u04E6\u04EF\u04FB\u0507\u0513"+
+        "\u051F\u052B\u0537\u0543\u054F\u0558\u056C\u0580\u0594\u05A8\u05BC\u05D0"+
+        "\u05E4\u05F8\u060C\u0620\u0636\u063E\u0646\u064E\u0656\u065E\u0666\u066E"+
+        "\u0676\u067F\u068B\u0697\u06A3\u06AF\u06BB\u06C7\u06D3\u06DF\u06EB\u06F7"+
+        "\u0703\u070F\u071B\u0727\u0733\u073F\u074B\u0757\u0763\u076F\u077B\u0787"+
+        "\u0793\u079F\u07AB\u07B7\u07C3\u07CF\u07DB\u07E7\u07F3\u07FF\u080B\u0817"+
+        "\u0823\u082F\u0839\u0301\u0299\u0091\u02F1\u02C5\u083D\u02CDei\u0841u"+
+        "\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED\u0849\u03C1\u084D\u03F1"+
+        "\u0851\u0095\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469"+
+        "\u0089=\u07B9\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1"+
+        "\u024D\uA5A54\000\u0855\uA5A5\023\000\u0859\uA5A5\014\000\u085D\u0861"+
+        "\u0865\u0869\u086D\u0871\u0875\u0879\u087D\u0881\u0885\u0889\u088D\u0891"+
+        "\u0895\u0899\u089D\u08A1\u08A5\u08A9\u08AD\u08B1\u08B5\u08B9\u08BD\u08C1"+
+        "\u08C5\u08C9\u08CD\u08D1\u08D5\u08D9\u08DD\u08E1\u08E5\u08E9\u08ED\u08F1"+
+        "\u08F5\u08F9\u08FD\u0901\u0905\u0909\u090D\u0911\u0915\u0919\u091D\u0921"+
+        "\u0925\u0929\u092D\u0931\u0935\u0939\u093D\u0941\u0945\u0949\u094D\u0951"+
+        "\u0955\u0959\u095D\u0961\u0965\u0969\u096D\u0971\u0975\u0979\u097D\u0981"+
+        "\u0985\u0989\u098D\u0991\u0995\u0999\u099D\u09A1\u09A5\u09A9\u09AD\u09B1"+
+        "\u09B5\u09B9\u09BD\u09C1\u09C5\u09C9\u09CD\u09D1\u09D5\u09D9\u09DD\u09E1"+
+        "\u09E5\u09E9\u09ED\u09F1\u09F5\u09F9\u09FD\u0A01\u0A05\u0A09\u0A0D\u0A11"+
+        "\u0A15\u0A19\u0A1D\u0A21\u0A25\u0A29\u0A2D\u0A31\u0A35\u0A39\u0A3D\u0A41"+
+        "\u0A45\u0A49\u0A4D\u0A51\u0A55\u0A59\u0A5D\u0A61\u0A65\u0A69\u0A6D\u0A71"+
+        "\u0A75\u0A79\u0A7D\u0A81\u0A85\u0A89\u0A8D\u0A91\u0A95\u0A99\u0A9D\u0AA1"+
+        "\u0AA5\u0AA9\u0AAD\u0AB1\u0AB5\u0AB9\u0ABD\u0AC1\u0AC5\u0AC9\u0ACD\u0AD1"+
+        "\u0AD5\u0AD9\u0ADD\u0AE1\u0AE5\u0AE9\u0AED\u0AF1\u0AF5\u0AF9\u0AFD\u0B01"+
+        "\u0B05\u0B09\u0B0D\u0B11\u0B15\u0B19\u0B1D\u0B21\u0B25\u0B29\u0B2D\u0B31"+
+        "\u0B35\u0B39\u0B3D\u0B41\u0B45\u0B49\u0B4D\u0B51\u0B55\u0B59\u0B5D\u0B61"+
+        "\u0B65\u0B69\u0B6D\u0B71\u0B75\u0B79\u0B7D\u0B81\u0B85\u0B89\u0B8D\u0B91"+
+        "\u0B95\u0B99\u0B9D\u0BA1\u0BA5\u0BA9\u0BAD\u0BB1\uA5A5\012\000\005\uA5A5"+
+        "5\000\u0BB5\000\u08B9\u0BB9\u0BBD\uA5A5\021\000\u4D92\000\u4D9A\000\u4DA2"+
+        "\000\u4DAA\000\u4DB2\000\u4DBA\000\u4DC2\000\u4DCA\000\u4DD2\000\u4DDA"+
+        "\000\u4DE2\000\u4DEA\000\000\u4DF2\000\u4DFA\000\u4E02\uA5A5\006\000\u4E0A"+
+        "\u4E12\000\u4E1A\u4E22\000\u4E2A\u4E32\000\u4E3A\u4E42\000\u4E4A\u4E52"+
+        "\uA5A5\026\000\u4E5A\uA5A5\006\000\u0BC2\u0BCA\000\u4E62\uA5A5\015\000"+
+        "\u4E6A\000\u4E72\000\u4E7A\000\u4E82\000\u4E8A\000\u4E92\000\u4E9A\000"+
+        "\u4EA2\000\u4EAA\000\u4EB2\000\u4EBA\000\u4EC2\000\000\u4ECA\000\u4ED2"+
+        "\000\u4EDA\uA5A5\006\000\u4EE2\u4EEA\000\u4EF2\u4EFA\000\u4F02\u4F0A\000"+
+        "\u4F12\u4F1A\000\u4F22\u4F2A\uA5A5\026\000\u4F32\000\000\u4F3A\u4F42\u4F4A"+
+        "\u4F52\000\000\000\u4F5A\uA5A5\022\000\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1\u0BE5"+
+        "\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11\u0C15"+
+        "\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41\u0C45"+
+        "\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\u0C61\u0C65\u0C69\u0C6D\u0C71\u0C75"+
+        "\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\u0C91\u0C95\u0C99\u0C9D\u0CA1\u0CA5"+
+        "\u0CA9\u0CAD\u0CB1\u0CB5\u0CB9\u0CBD\u0CC1\u0CC5\u0CC9\u0CCD\u0CD1\u0CD5"+
+        "\u0CD9\u0CDD\u0CE1\u0CE5\u0CE9\u0CED\u0CF1\u0CF5\u0CF9\u0CFD\u0D01\u0D05"+
+        "\u0D09\u0D0D\u0D11\u0D15\u0D19\u0D1D\u0D21\u0D25\u0D29\u0D2D\u0D31\u0D35"+
+        "\u0D39\u0D3D\u0D41\u0D45\000\000\000\u085D\u0875\u0D49\u0D4D\u0D51\u0D55"+
+        "\u0D59\u0D5D\u086D\u0D61\u0D65\u0D69\u0D6D\u087D\u0D73\u0D7F\u0D8B\u0D97"+
+        "\u0DA3\u0DAF\u0DBB\u0DC7\u0DD3\u0DDF\u0DEB\u0DF7\u0E03\u0E0F\u0E18\u0E2C"+
+        "\u0E40\u0E54\u0E68\u0E7C\u0E90\u0EA4\u0EB8\u0ECC\u0EE0\u0EF4\u0F08\u0F1C"+
+        "\u0F30\000\000\000\u0F47\u0F53\u0F5F\u0F6B\u0F77\u0F83\u0F8F\u0F9B\u0FA7"+
+        "\u0FB3\u0FBF\u0FCB\u0FD7\u0FE3\u0FEF\u0FFB\u1007\u1013\u101F\u102B\u1037"+
+        "\u1043\u104F\u105B\u1067\u1073\u107F\u108B\u1097\u10A3\u10AF\u10BB\u10C7"+
+        "\u10D3\u10DF\u10EB\uA5A5\034\000\u0BD1\u0BDD\u0BE9\u0BF1\u0C11\u0C15\u0C21"+
+        "\u0C29\u0C2D\u0C35\u0C39\u0C3D\u0C41\u0C45\u0E1E\u0E32\u0E46\u0E5A\u0E6E"+
+        "\u0E82\u0E96\u0EAA\u0EBE\u0ED2\u0EE6\u0EFA\u0F0E\u0C46\uA5A5\004\000\u085D"+
+        "\u0875\u0D49\u0D4D\u0F79\u0F85\u0F91\u0889\u0FA9\u08B9\u0981\u09B1\u09AD"+
+        "\u0985\u0AF5\u08D9\u0979\u1015\u1021\u102D\u1039\u1045\u1051\u105D\u1069"+
+        "\u10F5\u10F9\u08F1\u10FD\u1101\u1105\u1109\u110D\u10D5\u1111\u1115\u0D51"+
+        "\u0D55\u0D59\u1119\u111D\u1121\u1125\u108D\u1099\u10A5\u10B1\u10BD\u1129"+
+        "\uA5A5\017\000\u112E\u1136\u113E\u1146\u114E\u1156\u115E\u1166\u116E\u1177"+
+        "\u1183\u118F\uA5A5\004\000\u1199\u119D\u11A1\u11A5\u11A9\u11AD\u11B1\u11B5"+
+        "\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9\u11DD\u11E1\u11E5"+
+        "\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209\u120D\u1211\u1215"+
+        "\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239\u123D\u1241\u1245"+
+        "\u1249\u124D\u1251\000\u1254\u126C\u1280\u129B\u12A4\u12BF\u12CB\u12D4"+
+        "\u12F0\u1307\u1313\u131F\u1328\u133C\u1350\u1364\u1378\u138C\u13A0\u13B4"+
+        "\u13D2\u13D8\u13F4\u1410\u13E0\u1428\u1444\u1460\u1477\u1483\u148C\u14A0"+
+        "\u14B4\u14CC\u14E7\u14F3\u14FC\u1513\u151F\u143A\u152A\u1533\u153F\u1548"+
+        "\u1564\u1578\u1590\u15AC\u15C3\u15CF\u15D8\u15F4\u1608\u1627\u1630\u164B"+
+        "\u1654\u166B\u1674\u1688\u16A0\u16B4\u16CC\u16E2\u16E8\u1703\u170F\u1718"+
+        "\u172F\u173B\u1747\u1750\u1768\u177E\u1784\u17A3\u17AC\u13FC\u17C4\u17DB"+
+        "\u17E7\u17F0\u1806\u180C\u1820\u183A\u1840\u141B\u185E\u1866\u186E\u1876"+
+        "\u187E\u1886\u188E\u1896\u189E\u18A6\u18AF\u18BB\u18C7\u18D3\u18DF\u18EB"+
+        "\u18F7\u1903\u190F\u191B\u1927\u1933\u193F\u194B\u1957\u1963\u196E\u1976"+
+        "\u197F\u198A\u1992\uA5A5\004\000\u199A\u19A2\u19AA\u19B2\u19B8\u19CE\u19D6"+
+        "\u19DE\u19E6\u19EE\u19F6\u02FE\u19FE\u1A07\u1A10\u1A26\u1A2E\u1A36\u1A3E"+
+        "\u1A46\u1A4E\u1A56\u1A5F\u1A6B\u1A77\u1A83\u1A8E\u1A96\u1A9E\u1AA6\u1AAE"+
+        "\u1AB6\u1ABE\u1AC6\u1ACE\u1AD6\u1ADF\u1AEB\u1AE2\u1AF7\u1B03\u1B0F\u1B06"+
+        "\u1B1B\u1B27\u1B30\u1966\u1B47\u1B53\u1B5F\u1B6B\u1B74\u1B8C\u1BAA\u008A"+
+        "\u1BB2\u1BBA\u1BC2\u1BCA\u1BD2\u1BDA\u1BE2\u1BEA\u1BF2\u1BFA\u1C02\u1C0A"+
+        "\u1C12\u1C1A\u1C22\u1C2A\u1C30\u1C46\u1C4E\u1C56\u1C5C\u1C73\u1C7E\u1C86"+
+        "\u1C8E\u1C96\u1C9E\u1CA6\u1CAE\u1CB6\u1A92\u1CBE\u1CC7\u1CD2\u1CDA\u1CE3"+
+        "\u1CEF\u1CFA\u1D00\u1D17\u1D22\u1D2A\u1D32\u1D3A\000\000\u1D42\u1D4A\u1D52"+
+        "\u1D5A\u1D62\u1D6A\u1D72\u1D7A\u1D82\u1D8B\u1D97\u1DA3\u1DAF\u1DBB\u1DC7"+
+        "\u1DD3\u1DDF\u1DEB\u1DF7\u1E03\u1E0F\u1E1B\u1E27\u1E33\u1E3F\u1E4B\u1E57"+
+        "\u1E63\u1E6F\u1E7B\u1E87\000\u4F61\u4F65\u4F69\u4F6D\u4F71\u4F75\u4F79"+
+        "\u4F7D\u4F81\u4F85\u4F89\u4F8D\u4F91\u4F95\u4F99\u4F9D\u4FA1\u4FA5\u4FA9"+
+        "\u4FAD\u4FB1\u4FB5\u4FB9\u4FBD\u4FC1\u4FC5\u4FC9\u4FCD\u4FD1\u4FD5\u4FD9"+
+        "\u4FDD\u4FE1\u4FE5\u4FE9\u4FED\u4FF1\u4FF5\u4FF9\u4FFD\u5001\u5005\u5009"+
+        "\u500D\u5011\u5015\u5019\u501D\u5021\u5025\u5029\u502D\u5031\u5035\u5039"+
+        "\u503D\u5041\u5045\u5049\u504D\u5051\u5055\u5059\u505D\u5061\u5065\u5069"+
+        "\u506D\u5071\u5075\u5079\u507D\u5081\u5085\u5089\u508D\u5091\u5095\u5099"+
+        "\u509D\u50A1\u50A5\u50A9\u50AD\u50B1\u50B5\u50B9\u50BD\u50C1\u50C5\u50C9"+
+        "\u50CD\u50D1\u50D5\u50D9\u50DD\u50E1\u50E5\u50E9\u50ED\u50F1\u50F5\u50F9"+
+        "\u50FD\u5101\u5105\u5109\u510D\u5111\u5115\u5119\u511D\u5121\u5125\u5129"+
+        "\u512D\u5131\u5135\u5139\u513D\u5141\u5145\u5149\u514D\u5151\u5155\u5159"+
+        "\u515D\u5161\u5165\u5169\u516D\u5171\u5175\u5179\u517D\u5181\u5185\u5189"+
+        "\u518D\u5191\u5195\u5199\u519D\u51A1\u51A5\u51A9\u51AD\u51B1\u51B5\u51B9"+
+        "\u51BD\u51C1\u51C5\u51C9\u51CD\u51D1\u51D5\u51D9\u51DD\u51E1\u51E5\u51E9"+
+        "\u51ED\u51F1\u51F5\u51F9\u51FD\u5201\u5205\u5209\u520D\u5211\u5215\u5219"+
+        "\u521D\u5221\u5225\u5229\u522D\u5231\u5235\u5239\u523D\u5241\u5245\u5249"+
+        "\u524D\u5251\u5255\u5259\u525D\u5261\u5265\u5269\u526D\u5271\u5275\u5279"+
+        "\u527D\u5281\u5285\u5289\u528D\u5291\u5295\u5299\u529D\u52A1\u52A5\u52A9"+
+        "\u52AD\u52B1\u52B5\u52B9\u52BD\u52C1\u52C5\u52C9\u52CD\u52D1\u52D5\u52D9"+
+        "\u52DD\u52E1\u52E5\u52E9\u52ED\u52F1\u52F5\u52F9\u52FD\u5301\u5305\u5309"+
+        "\u530D\u5311\u5315\u5319\u531D\u5321\u5325\u5329\u532D\u5331\u5335\u5339"+
+        "\u533D\u5341\u5345\u5349\u534D\u5351\u5355\u5359\u535D\u5361\u5365\u5369"+
+        "\u536D\u5371\u5375\u5379\u537D\u5381\u5385\u5389\u538D\u5391\u5395\000"+
+        "\000\u5399\000\u539D\000\000\u53A1\u53A5\u53A9\u53AD\u53B1\u53B5\u53B9"+
+        "\u53BD\u53C1\u53C5\000\u53C9\000\u53CD\000\000\u53D1\u53D5\000\000\000"+
+        "\u53D9\u53DD\u53E1\u53E5\uA5A5\022\000\u1E92\u1E9A\u1EA2\u1E97\u1EAB\u1EB6"+
+        "\u1EB6\uA5A5\014\000\u1EBE\u1EC6\u1ECE\u1ED6\u1EDE\uA5A5\005\000\u53EA"+
+        "\000\u53F2\u1EE5\u0309\u0315\u1EE9\u1EED\u1EF1\u1EF5\u1EF9\u1EFD\u0265"+
+        "\u53FA\u5402\u540B\u5417\u5422\u542A\u5432\u543A\u5442\u544A\u5452\u545A"+
+        "\u5462\000\u546A\u5472\u547A\u5482\u548A\000\u5492\000\u549A\u54A2\000"+
+        "\u54AA\u54B2\000\u54BA\u54C2\u54CA\u54D2\u54DA\u54E2\u54EA\u54F2\u54FA"+
+        "\u1F02\u1F09\u1F09\uA5A5\004\u1F0D\uA5A5\004\u1F11\uA5A5\004\u1F15\uA5A5"+
+        "\004\u1F19\uA5A5\004\u1F1D\uA5A5\004\u1F21\uA5A5\004\u1F25\uA5A5\004\u1F29"+
+        "\uA5A5\004\u1F2D\uA5A5\004\u1F31\uA5A5\004\u1F35\uA5A5\004\u1F39\u1F3D"+
+        "\u1F3D\u1F41\u1F41\u1F45\u1F45\u1F49\u1F49\u1F4D\u1F4D\u1F51\u1F51\uA5A5"+
+        "\004\u1F55\uA5A5\004\u1F59\uA5A5\004\u1F5D\uA5A5\004\u1F61\u1F65\u1F65"+
+        "\uA5A5\004\u1F69\u1F6E\u1F6E\uA5A5\004\u1F75\uA5A5\004\u1F79\u1F7D\u1F7D"+
+        "\u1F82\u1F82\uA5A5!\000\uA5A5\004\u1F89\u0181\u0181\u1F8D\u1F8D\u1F91"+
+        "\u1F91\u0182\u1F95\u1F95\u1F99\u1F99\u1F9D\u1F9D\uA5A5\004\u1FA1\u1FA5"+
+        "\u1FA5\u1FAB\u1FAB\u1FB7\u1FB7\u1FC3\u1FC3\u1FCF\u1FCF\u1FDB\u1FDB\u1FE7"+
+        "\u1FE7\u1FF3\u1FF3\u1FF3\u1FFF\u1FFF\u1FFF\uA5A5\004\u2009\u200F\u201B"+
+        "\u2027\u1FFF\u2033\u203E\u2046\u204E\u2056\u205E\u2066\u206E\u2076\u207E"+
+        "\u2086\u208E\u2096\u209E\u20A6\u20AE\u20B6\u20BE\u20C6\u20C2\u20CE\u20D6"+
+        "\u20DE\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u2116\u211E\u2126\u212E\u2136"+
+        "\u213E\u2146\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E\u2196"+
+        "\u219E\u21A6\u21AE\u21B6\u21BE\u21C6\u21CE\u21D6\u21DE\u21E6\u21EE\u21F6"+
+        "\u21FE\u2206\u220E\u2216\u221E\u2226\u222E\u2236\u20CA\u20D2\u223E\u2246"+
+        "\u202E\u224E\u2256\u225E\u2266\u226E\u2276\u227E\u2286\u228E\u2296\u20BA"+
+        "\u229E\u22A6\u2232\u22AE\u229A\u22B6\u22BE\u22C6\u22CF\u22DB\u22E7\u22F3"+
+        "\u22FF\u230B\u2317\u2323\u2027\u232F\u1FFF\u2033\u233A\u2342\u2056\u234A"+
+        "\u205E\u2066\u2352\u235A\u2086\u2362\u208E\u2096\u236A\u2372\u20A6\u237A"+
+        "\u20AE\u20B6\u2196\u219E\u21B6\u21BE\u21C6\u21E6\u21EE\u21F6\u21FE\u221E"+
+        "\u2226\u222E\u2382\u223E\u238A\u2392\u2266\u239A\u226E\u2276\u22C6\u23A2"+
+        "\u23AA\u2232\u23B2\u22AE\u229A\u200F\u201B\u23BB\u2027\u23C7\u203E\u2046"+
+        "\u204E\u2056\u23D2\u206E\u2076\u207E\u2086\u23DA\u20A6\u20BE\u20C6\u20C2"+
+        "\u20CE\u20D6\u20E6\u20EE\u20F6\u20FE\u2106\u210E\u23E2\u2116\u211E\u2126"+
+        "\u212E\u2136\u213E\u214E\u2156\u215E\u2166\u216E\u2176\u217E\u2186\u218E"+
+        "\u21A6\u21AE\u21CE\u21D6\u21DE\u21E6\u21EE\u2206\u220E\u2216\u221E\u23EA"+
+        "\u2236\u20CA\u20D2\u223E\u224E\u2256\u225E\u2266\u23F2\u227E\u2286\u23FA"+
+        "\u20BA\u229E\u22A6\u2232\u227A\u2027\u23C7\u2056\u23D2\u2086\u23DA\u20A6"+
+        "\u2402\u2106\u240A\u2412\u241A\u21E6\u21EE\u221E\u2266\u23F2\u2232\u227A"+
+        "\u2423\u242F\u243B\u2446\u244E\u2456\u245E\u2466\u246E\u2476\u247E\u2486"+
+        "\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE\u24B6\u24BE\u24C6\u24CE"+
+        "\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u2446\u244E\u2456\u245E\u2466"+
+        "\u246E\u2476\u247E\u2486\u248E\u2496\u2022\u249E\u2016\u24A6\u22AA\u24AE"+
+        "\u24B6\u24BE\u24C6\u24CE\u24D6\u24DE\u2412\u24E6\u24EE\u24F6\u24FE\u24CE"+
+        "\u24D6\u24DE\u2412\u240A\u241A\u2146\u20EE\u20F6\u20FE\u24CE\u24D6\u24DE"+
+        "\u2146\u214E\u2506\u2506\uA5A5\022\000\u250F\u251B\u251B\u2527\u2533\u253F"+
+        "\u254B\u2557\u20C7\u20C7\u2563\u256F\u257B\u2587\u2593\u259F\u259F\u25AB"+
+        "\u25B7\u25B7\u25C3\u25C3\u25CF\u25DB\u25DB\u25E7\u25F3\u25F3\u25FF\u25FF"+
+        "\u260B\u2617\u2617\u2623\u2623\u262F\u263B\u2647\u2653\u2653\u265F\u266B"+
+        "\u2677\u2683\u268F\u268F\u269B\u26A7\u26B3\u26BF\u26CB\u26D7\u26D7\u26E3"+
+        "\u26E3\u26EF\u26EF\u26FB\u20CB\u2707\u2713\u2237\u20D3\u271F\000\000\u272B"+
+        "\u2737\u2743\u274F\u275B\u2767\u2767\u2773\u277F\u278B\u2797\u2797\u27A3"+
+        "\u27AF\u27BB\u27C7\u27D3\u27DF\u27EB\u27F7\u2803\u280F\u281B\u2827\u2833"+
+        "\u283F\u284B\u2857\u229F\u2863\u286F\u287B\u2887\u2893\u269B\u26B3\u289F"+
+        "\u28AB\u28B7\u28C3\u28CF\u28DB\u28CF\u28B7\u28E7\u28F3\u28FF\u290B\u2917"+
+        "\u28DB\u2647\u25CF\u2923\u292F\uA5A5(\000\u293B\u2947\u2950\u2964\u2978"+
+        "\u298C\u29A0\u29B4\u29C8\u29DF\u29E8\u2A34\uA5A5\024\000\u01FA\u2A59\u2A5D"+
+        "\u2A61\u2A61\u0271\u0275\u2A65\u2A69\u2A6D\u2A71\u2A75\u2A79\u2A7D\u2A81"+
+        "\u2A85\u2A89\u2A8D\u2A91\u2A95\u2A99\uA5A5\004\000\uA5A5\004\u0236\u2A61"+
+        "\u2A61\u2A61\u2A9D\u2AA1\u01F9\000\u2AA5\u2AA9\u023D\u022D\u2A59\u0271"+
+        "\u0275\u2A65\u2A69\u2A6D\u2A71\u2AAD\u2AB1\u2AB5\u0265\u2AB9\u2ABD\u2AC1"+
+        "\u026D\000\u2AC5\u2AC9\u2ACD\u2AD1\uA5A5\004\000\u2AD6\u2ADE\u22CE\000"+
+        "\u22DA\000\u22E6\u2422\u22F2\u242E\u22FE\u243A\u230A\u2AE6\u2AEE\u2AF6"+
+        "\u2AFD\u2B02\u2B02\u2B0A\u2B0A\u2B12\u2B12\u2B1A\u2B1A\uA5A5\004\u1FAA"+
+        "\u0171\u0171\uA5A5\004\u203D\u2B21\u2B21\uA5A5\004\u206D\uA5A5\004\u209D"+
+        "\uA5A5\004\u2015\uA5A5\004\u2021\uA5A5\004\u2051\u2985\u2985\u22B5\u22B5"+
+        "\u22BD\u22BD\u2329\u2329\uA5A5\004\u20ED\uA5A5\004\u2411\uA5A5\004\u210D"+
+        "\uA5A5\004\u211D\uA5A5\004\u213D\uA5A5\004\u214D\uA5A5\004\u2155\uA5A5"+
+        "\004\u2165\uA5A5\004\u2175\uA5A5\004\u21A5\uA5A5\004\u21C5\uA5A5\004\u21E9"+
+        "\uA5A5\004\u202D\uA5A5\004\u224D\uA5A5\004\u227D\u0179\u0179\u1FA5\u1FA5"+
+        "\uA5A5\004\u0189\u2B27\u2B27\u2B33\u2B33\u2B3F\u2B3F\u2A46\u2A46\uA5A5"+
+        "\004\000\u022D\u2B49\u2AAD\u2AC9\u2ACD\u2AB1\u2B4D\u0271\u0275\u2AB5\u0265"+
+        "\u2A9D\u2AB9\u01F9\u0285\u024D9\035!I\u0251\u0255\u0259\u025D\u0261\u2AA9"+
+        "\u2AA5\u2ABD\u026D\u2AC1\u023D\u2AD1\u0839\u0301\u0299\u0091\u02F1\u02C5"+
+        "\u083D\u02CDei\u0841u\u02E9\u00CD\u0845\u02DD\u02E1\u0279\u02E5\u02ED"+
+        "\u0849\u03C1\u084D\u03F1\u0851\u0095\u2B51\u2AC5\u2B55\u2B59\u2A61\u2B5D"+
+        "\021\u0711\u0289\u00A9\u0305\u0741\u02C9\u00E5mq\u077D}\u0469\u0089=\u07B9"+
+        "\u07C5\u00ED\u008D\u07E9\u02B9\u0421\u00FD\u0139\u0101\u00A1\u2A65\u2B61"+
+        "\u2A69\u2B65\000\000\u2B69\u2A8D\u2A91\u2AA1\u2B6D\u1251\u1279\u15F9\u2B71"+
+        "\u1619\u12CD\u2B75\u13A5\u175D\u1331\u1261\u1199\u119D\u11A1\u11A5\u11A9"+
+        "\u11AD\u11B1\u11B5\u11B9\u11BD\u11C1\u11C5\u11C9\u11CD\u11D1\u11D5\u11D9"+
+        "\u11DD\u11E1\u11E5\u11E9\u11ED\u11F1\u11F5\u11F9\u11FD\u1201\u1205\u1209"+
+        "\u120D\u1211\u1215\u1219\u121D\u1221\u1225\u1229\u122D\u1231\u1235\u1239"+
+        "\u123D\u1241\u1245\u1285\u0BC5\u0BCD\u0C9D\u0BD1\u0BD5\u0BD9\u0BDD\u0BE1"+
+        "\u0BE5\u0BE9\u0BED\u0BF1\u0BF5\u0BF9\u0BFD\u0C01\u0C05\u0C09\u0C0D\u0C11"+
+        "\u0C15\u0C19\u0C1D\u0C21\u0C25\u0C29\u0C2D\u0C31\u0C35\u0C39\u0C3D\u0C41"+
+        "\u0C45\000\000\000\u0C49\u0C4D\u0C51\u0C55\u0C59\u0C5D\000\000\u0C61\u0C65"+
+        "\u0C69\u0C6D\u0C71\u0C75\000\000\u0C79\u0C7D\u0C81\u0C85\u0C89\u0C8D\000"+
+        "\000\u0C91\u0C95\u0C99\000\000\000\u2B79\u2B7D\u2B81\026\u2B85\u2B89\u2B8D"+
+        "\000\u2B91\u2B95\u2B99\u2B9D\u2BA1\u2BA5\u2BA9\uA5A5\021\000"
+        );
+
+    static final String contents = 
+        "\uFFFF  \u0308a \u030423 \u0301\u03BC \u03271o1\u204441\u204423\u2044"+
+        "4IJijL\u00B7l\u00B7\u02BCnsDZ\u030CDz\u030Cdz\u030CLJLjljNJNjnjh\u0266"+
+        "r\u0279\u027B\u0281wy \u0306 \u0307 \u030A \u0328 \u0303 \u030B\u0263"+
+        "x\u0295 \u0345\u03B2\u03B8\u03A5\u03C6\u03C0\u03BA\u03C1\u03C2\u0565\u0582"+
+        "\u0627\u0674\u0648\u0674\u06C7\u0674\u064A\u0674\u0E4D\u0E32\u0ECD\u0EB2"+
+        "\u0EAB\u0E99\u0EAB\u0EA1\u0F0B\u0FB2\u0F71\u0F80\u0FB3\u0F71\u0F80a\u02BE"+
+        " \u0313 \u0342 \u0314\u2010 \u0333...\u2032\u2032\u2032\u2032\u2032\u2035"+
+        "\u2035\u2035\u2035\u2035!! \u0305?!!?056789+\u2212=()Rsa/ca/sC\u00B0C"+
+        "c/oc/u\u0190\u00B0FgH\u0127NoPQSMTELTMBe\u05D0\u05D1\u05D2\u05D31\u2044"+
+        "32\u204431\u204452\u204453\u204454\u204451\u204465\u204461\u204483\u2044"+
+        "85\u204487\u20448IIIIIIVVIVIIVIII\000IXXIXIIiiiiiivviviiviii\000ixxix"+
+        "iim\u222B\u222B\u222B\u222B\u222B\u222E\u222E\u222E\u222E\u222E101112"+
+        "1314151617181920(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)\000(11)\000(12)\000(1"+
+        "3)\000(14)\000(15)\000(16)\000(17)\000(18)\000(19)\000(20)\0001.2.3.4"+
+        ".5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.(a)(b)(c)(d)(e)(f)(g)(h)("+
+        "i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)AGKOUWY\u6BCD\u9F9F"+
+        "\u4E00\u4E28\u4E36\u4E3F\u4E59\u4E85\u4E8C\u4EA0\u4EBA\u513F\u5165\u516B"+
+        "\u5182\u5196\u51AB\u51E0\u51F5\u5200\u529B\u52F9\u5315\u531A\u5338\u5341"+
+        "\u535C\u5369\u5382\u53B6\u53C8\u53E3\u56D7\u571F\u58EB\u5902\u590A\u5915"+
+        "\u5927\u5973\u5B50\u5B80\u5BF8\u5C0F\u5C22\u5C38\u5C6E\u5C71\u5DDB\u5DE5"+
+        "\u5DF1\u5DFE\u5E72\u5E7A\u5E7F\u5EF4\u5EFE\u5F0B\u5F13\u5F50\u5F61\u5F73"+
+        "\u5FC3\u6208\u6236\u624B\u652F\u6534\u6587\u6597\u65A4\u65B9\u65E0\u65E5"+
+        "\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BB3\u6BCB\u6BD4\u6BDB\u6C0F\u6C14"+
+        "\u6C34\u706B\u722A\u7236\u723B\u723F\u7247\u7259\u725B\u72AC\u7384\u7389"+
+        "\u74DC\u74E6\u7518\u751F\u7528\u7530\u758B\u7592\u7676\u767D\u76AE\u76BF"+
+        "\u76EE\u77DB\u77E2\u77F3\u793A\u79B8\u79BE\u7A74\u7ACB\u7AF9\u7C73\u7CF8"+
+        "\u7F36\u7F51\u7F8A\u7FBD\u8001\u800C\u8012\u8033\u807F\u8089\u81E3\u81EA"+
+        "\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u8278\u864D\u866B\u8840\u884C"+
+        "\u8863\u897E\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C78\u8C9D\u8D64\u8D70"+
+        "\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FB5\u9091\u9149\u91C6\u91CC\u91D1\u9577"+
+        "\u9580\u961C\u96B6\u96B9\u96E8\u9751\u975E\u9762\u9769\u97CB\u97ED\u97F3"+
+        "\u9801\u98A8\u98DB\u98DF\u9996\u9999\u99AC\u9AA8\u9AD8\u9ADF\u9B25\u9B2F"+
+        "\u9B32\u9B3C\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u9EC3\u9ECD\u9ED1\u9EF9"+
+        "\u9EFD\u9F0E\u9F13\u9F20\u9F3B\u9F4A\u9F52\u9F8D\u9F9C\u9FA0\u3012\u5344"+
+        "\u5345 \u3099 \u309A\u1100\u1101\u11AA\u1102\u11AC\u11AD\u1103\u1104\u1105"+
+        "\u11B0\u11B1\u11B2\u11B3\u11B4\u11B5\u111A\u1106\u1107\u1108\u1121\u1109"+
+        "\u110A\u110B\u110C\u110D\u110E\u110F\u1110\u1111\u1112\u1161\u1162\u1163"+
+        "\u1164\u1165\u1166\u1167\u1168\u1169\u116A\u116B\u116C\u116D\u116E\u116F"+
+        "\u1170\u1171\u1172\u1173\u1174\u1175\u1160\u1114\u1115\u11C7\u11C8\u11CC"+
+        "\u11CE\u11D3\u11D7\u11D9\u111C\u11DD\u11DF\u111D\u111E\u1120\u1122\u1123"+
+        "\u1127\u1129\u112B\u112C\u112D\u112E\u112F\u1132\u1136\u1140\u1147\u114C"+
+        "\u11F1\u11F2\u1157\u1158\u1159\u1184\u1185\u1188\u1191\u1192\u1194\u119E"+
+        "\u11A1\u4E09\u56DB\u4E0A\u4E2D\u4E0B\u7532\u4E19\u4E01\u5929\u5730(\u1100"+
+        ")(\u1102)(\u1103)(\u1105)(\u1106)(\u1107)(\u1109)(\u110B)(\u110C)(\u110E"+
+        ")(\u110F)(\u1110)(\u1111)(\u1112)(\u1100\u1161)\000(\u1102\u1161)\000"+
+        "(\u1103\u1161)\000(\u1105\u1161)\000(\u1106\u1161)\000(\u1107\u1161)\000"+
+        "(\u1109\u1161)\000(\u110B\u1161)\000(\u110C\u1161)\000(\u110E\u1161)\000"+
+        "(\u110F\u1161)\000(\u1110\u1161)\000(\u1111\u1161)\000(\u1112\u1161)\000"+
+        "(\u110C\u116E)\000(\u4E00)(\u4E8C)(\u4E09)(\u56DB)(\u4E94)(\u516D)(\u4E03"+
+        ")(\u516B)(\u4E5D)(\u5341)(\u6708)(\u706B)(\u6C34)(\u6728)(\u91D1)(\u571F"+
+        ")(\u65E5)(\u682A)(\u6709)(\u793E)(\u540D)(\u7279)(\u8CA1)(\u795D)(\u52B4"+
+        ")(\u4EE3)(\u547C)(\u5B66)(\u76E3)(\u4F01)(\u8CC7)(\u5354)(\u796D)(\u4F11"+
+        ")(\u81EA)(\u81F3)\u79D8\u7537\u9069\u512A\u5370\u6CE8\u9805\u5199\u6B63"+
+        "\u5DE6\u53F3\u533B\u5B97\u591C1\u67082\u67083\u67084\u67085\u67086\u6708"+
+        "7\u67088\u67089\u670810\u670811\u670812\u6708\u30A2\u30A4\u30A6\u30A8"+
+        "\u30AA\u30AB\u30AD\u30AF\u30B1\u30B3\u30B5\u30B7\u30B9\u30BB\u30BD\u30BF"+
+        "\u30C1\u30C4\u30C6\u30C8\u30CA\u30CB\u30CC\u30CD\u30CE\u30CF\u30D2\u30D5"+
+        "\u30D8\u30DB\u30DE\u30DF\u30E0\u30E1\u30E2\u30E4\u30E6\u30E8\u30E9\u30EA"+
+        "\u30EB\u30EC\u30ED\u30EF\u30F0\u30F1\u30F2\u30A2\u30CF\u309A\u30FC\u30C8"+
+        "\000\u30A2\u30EB\u30D5\u30A1\000\u30A2\u30F3\u30D8\u309A\u30A2\000\u30A2"+
+        "\u30FC\u30EB\u30A4\u30CB\u30F3\u30AF\u3099\000\u30A4\u30F3\u30C1\u30A6"+
+        "\u30A9\u30F3\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\000\u30A8\u30FC\u30AB"+
+        "\u30FC\000\u30AA\u30F3\u30B9\u30AA\u30FC\u30E0\u30AB\u30A4\u30EA\u30AB"+
+        "\u30E9\u30C3\u30C8\000\u30AB\u30ED\u30EA\u30FC\000\u30AB\u3099\u30ED\u30F3"+
+        "\000\u30AB\u3099\u30F3\u30DE\000\u30AD\u3099\u30AB\u3099\000\u30AD\u3099"+
+        "\u30CB\u30FC\000\u30AD\u30E5\u30EA\u30FC\000\u30AD\u3099\u30EB\u30BF\u3099"+
+        "\u30FC\000\u30AD\u30ED\u30AD\u30ED\u30AF\u3099\u30E9\u30E0\000\u30AD\u30ED"+
+        "\u30E1\u30FC\u30C8\u30EB\000\u30AD\u30ED\u30EF\u30C3\u30C8\000\u30AF\u3099"+
+        "\u30E9\u30E0\u30C8\u30F3\000\u30AF\u30EB\u30BB\u3099\u30A4\u30ED\000\u30AF"+
+        "\u30ED\u30FC\u30CD\000\u30B1\u30FC\u30B9\u30B3\u30EB\u30CA\u30B3\u30FC"+
+        "\u30DB\u309A\000\u30B5\u30A4\u30AF\u30EB\000\u30B5\u30F3\u30C1\u30FC\u30E0"+
+        "\000\u30B7\u30EA\u30F3\u30AF\u3099\000\u30BB\u30F3\u30C1\u30BB\u30F3\u30C8"+
+        "\u30BF\u3099\u30FC\u30B9\000\u30C6\u3099\u30B7\u30C8\u3099\u30EB\u30CA"+
+        "\u30CE\u30CE\u30C3\u30C8\u30CF\u30A4\u30C4\u30CF\u309A\u30FC\u30BB\u30F3"+
+        "\u30C8\000\u30CF\u309A\u30FC\u30C4\000\u30CF\u3099\u30FC\u30EC\u30EB\000"+
+        "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB\000\u30D2\u309A\u30AF\u30EB\000\u30D2"+
+        "\u309A\u30B3\u30D2\u3099\u30EB\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\000"+
+        "\u30D5\u30A3\u30FC\u30C8\000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB\000\u30D5"+
+        "\u30E9\u30F3\u30D8\u30AF\u30BF\u30FC\u30EB\000\u30D8\u309A\u30BD\u30D8"+
+        "\u309A\u30CB\u30D2\000\u30D8\u30EB\u30C4\u30D8\u309A\u30F3\u30B9\000\u30D8"+
+        "\u309A\u30FC\u30B7\u3099\000\u30D8\u3099\u30FC\u30BF\000\u30DB\u309A\u30A4"+
+        "\u30F3\u30C8\000\u30DB\u3099\u30EB\u30C8\000\u30DB\u30F3\u30DB\u309A\u30F3"+
+        "\u30C8\u3099\000\u30DB\u30FC\u30EB\u30DB\u30FC\u30F3\u30DE\u30A4\u30AF"+
+        "\u30ED\000\u30DE\u30A4\u30EB\u30DE\u30C3\u30CF\u30DE\u30EB\u30AF\u30DE"+
+        "\u30F3\u30B7\u30E7\u30F3\000\u30DF\u30AF\u30ED\u30F3\000\u30DF\u30EA\u30DF"+
+        "\u30EA\u30CF\u3099\u30FC\u30EB\000\u30E1\u30AB\u3099\u30E1\u30AB\u3099"+
+        "\u30C8\u30F3\000\u30E4\u30FC\u30C8\u3099\000\u30E4\u30FC\u30EB\u30E6\u30A2"+
+        "\u30F3\u30EA\u30C3\u30C8\u30EB\000\u30EA\u30E9\u30EB\u30D2\u309A\u30FC"+
+        "\000\u30EB\u30FC\u30D5\u3099\u30EB\000\u30EC\u30E0\u30EC\u30F3\u30C8\u30B1"+
+        "\u3099\u30F3\0000\u70B91\u70B92\u70B93\u70B94\u70B95\u70B96\u70B97\u70B9"+
+        "8\u70B99\u70B910\u70B911\u70B912\u70B913\u70B914\u70B915\u70B916\u70B9"+
+        "17\u70B918\u70B919\u70B920\u70B921\u70B922\u70B923\u70B924\u70B9hPada"+
+        "AUbaroVpc\u5E73\u6210\u662D\u548C\u5927\u6B63\u660E\u6CBB\u682A\u5F0F"+
+        "\u4F1A\u793E\000pAnA\u03BCAmAkAKBGBcalkcal\000pFnF\u03BCF\u03BCgmgkgH"+
+        "zkHzMHzGHzTHz\u03BClmldlklfmnm\u03BCmmmcmkmmm2cm2km2mm3cm3km3m\u2215s"+
+        "m\u2215s2\000kPaMPaGParadrad\u2215s\000rad\u2215s2\000ps\u03BCsmspVnV"+
+        "\u03BCVmVkVMVpWnW\u03BCWmWkWMWk\u03A9M\u03A9a.m.\000BqcccdC\u2215kg\000"+
+        "Co.dBGyhaHPinKKKMktlnloglxmbmilmolPHp.m.\000PPMPRsrSvWb1\u65E52\u65E5"+
+        "3\u65E54\u65E55\u65E56\u65E57\u65E58\u65E59\u65E510\u65E511\u65E512\u65E5"+
+        "13\u65E514\u65E515\u65E516\u65E517\u65E518\u65E519\u65E520\u65E521\u65E5"+
+        "22\u65E523\u65E524\u65E525\u65E526\u65E527\u65E528\u65E529\u65E530\u65E5"+
+        "31\u65E5fffiflfflst\u0574\u0576\u0574\u0565\u0574\u056B\u057E\u0576\u0574"+
+        "\u056D\u05E2\u05D4\u05DB\u05DC\u05DD\u05E8\u05EA\u05D0\u05DC\u0671\u067B"+
+        "\u067E\u0680\u067A\u067F\u0679\u06A4\u06A6\u0684\u0683\u0686\u0687\u068D"+
+        "\u068C\u068E\u0688\u0698\u0691\u06A9\u06AF\u06B3\u06B1\u06BA\u06BB\u06D5"+
+        "\u0654\u06C1\u06BE\u06D2\u06D2\u0654\u06AD\u06C6\u06C8\u06CB\u06C5\u06C9"+
+        "\u06D0\u0649\u064A\u0654\u0627\u064A\u0654\u06D5\u064A\u0654\u0648\u064A"+
+        "\u0654\u06C7\u064A\u0654\u06C6\u064A\u0654\u06C8\u064A\u0654\u06D0\u064A"+
+        "\u0654\u0649\u06CC\u064A\u0654\u062C\u064A\u0654\u062D\u064A\u0654\u0645"+
+        "\u064A\u0654\u064A\u0628\u062C\u0628\u062D\u0628\u062E\u0628\u0645\u0628"+
+        "\u0649\u0628\u064A\u062A\u062C\u062A\u062D\u062A\u062E\u062A\u0645\u062A"+
+        "\u0649\u062A\u064A\u062B\u062C\u062B\u0645\u062B\u0649\u062B\u064A\u062C"+
+        "\u062D\u062C\u0645\u062D\u0645\u062E\u062C\u062E\u062D\u062E\u0645\u0633"+
+        "\u062C\u0633\u062D\u0633\u062E\u0633\u0645\u0635\u062D\u0635\u0645\u0636"+
+        "\u062C\u0636\u062D\u0636\u062E\u0636\u0645\u0637\u062D\u0637\u0645\u0638"+
+        "\u0645\u0639\u062C\u0639\u0645\u063A\u062C\u063A\u0645\u0641\u062C\u0641"+
+        "\u062D\u0641\u062E\u0641\u0645\u0641\u0649\u0641\u064A\u0642\u062D\u0642"+
+        "\u0645\u0642\u0649\u0642\u064A\u0643\u0627\u0643\u062C\u0643\u062D\u0643"+
+        "\u062E\u0643\u0644\u0643\u0645\u0643\u0649\u0643\u064A\u0644\u062C\u0644"+
+        "\u062D\u0644\u062E\u0644\u0645\u0644\u0649\u0644\u064A\u0645\u062C\u0645"+
+        "\u0645\u0645\u0649\u0646\u062C\u0646\u062D\u0646\u062E\u0646\u0645\u0646"+
+        "\u0649\u0646\u064A\u0647\u062C\u0647\u0645\u0647\u0649\u0647\u064A\u064A"+
+        "\u062D\u064A\u062E\u064A\u0649\u0630\u0670\u0631\u0670\u0649\u0670 \u064C"+
+        "\u0651 \u064D\u0651 \u064E\u0651 \u064F\u0651 \u0650\u0651 \u0651\u0670"+
+        "\u064A\u0654\u0631\u064A\u0654\u0632\u064A\u0654\u0646\u0628\u0631\u0628"+
+        "\u0632\u0628\u0646\u062A\u0631\u062A\u0632\u062A\u0646\u062B\u0631\u062B"+
+        "\u0632\u062B\u0646\u0645\u0627\u0646\u0631\u0646\u0632\u0646\u0646\u064A"+
+        "\u0631\u064A\u0632\u064A\u0646\u064A\u0654\u062E\u064A\u0654\u0647\u0628"+
+        "\u0647\u062A\u0647\u0635\u062E\u0644\u0647\u0646\u0647\u0647\u0670\u062B"+
+        "\u0647\u0633\u0647\u0634\u0645\u0634\u0647\u0640\u064E\u0651\u0640\u064F"+
+        "\u0651\u0640\u0650\u0651\u0637\u0649\u0637\u064A\u0639\u0649\u0639\u064A"+
+        "\u063A\u0649\u063A\u064A\u0633\u0649\u0633\u064A\u0634\u0649\u0634\u064A"+
+        "\u062D\u0649\u062C\u0649\u062E\u0649\u0635\u0649\u0635\u064A\u0636\u0649"+
+        "\u0636\u064A\u0634\u062C\u0634\u062D\u0634\u062E\u0634\u0631\u0633\u0631"+
+        "\u0635\u0631\u0636\u0631\u0627\u064B\u062A\u062C\u0645\u062A\u062D\u062C"+
+        "\u062A\u062D\u0645\u062A\u062E\u0645\u062A\u0645\u062C\u062A\u0645\u062D"+
+        "\u062A\u0645\u062E\u062D\u0645\u064A\u062D\u0645\u0649\u0633\u062D\u062C"+
+        "\u0633\u062C\u062D\u0633\u062C\u0649\u0633\u0645\u062D\u0633\u0645\u062C"+
+        "\u0633\u0645\u0645\u0635\u062D\u062D\u0635\u0645\u0645\u0634\u062D\u0645"+
+        "\u0634\u062C\u064A\u0634\u0645\u062E\u0634\u0645\u0645\u0636\u062D\u0649"+
+        "\u0636\u062E\u0645\u0637\u0645\u062D\u0637\u0645\u0645\u0637\u0645\u064A"+
+        "\u0639\u062C\u0645\u0639\u0645\u0645\u0639\u0645\u0649\u063A\u0645\u0645"+
+        "\u063A\u0645\u064A\u063A\u0645\u0649\u0641\u062E\u0645\u0642\u0645\u062D"+
+        "\u0642\u0645\u0645\u0644\u062D\u0645\u0644\u062D\u064A\u0644\u062D\u0649"+
+        "\u0644\u062C\u062C\u0644\u062E\u0645\u0644\u0645\u062D\u0645\u062D\u062C"+
+        "\u0645\u062D\u064A\u0645\u062C\u062D\u0645\u062E\u0645\u0645\u062C\u062E"+
+        "\u0647\u0645\u062C\u0647\u0645\u0645\u0646\u062D\u0645\u0646\u062D\u0649"+
+        "\u0646\u062C\u0645\u0646\u062C\u0649\u0646\u0645\u064A\u0646\u0645\u0649"+
+        "\u064A\u0645\u0645\u0628\u062E\u064A\u062A\u062C\u064A\u062A\u062C\u0649"+
+        "\u062A\u062E\u064A\u062A\u062E\u0649\u062A\u0645\u064A\u062A\u0645\u0649"+
+        "\u062C\u0645\u064A\u062C\u062D\u0649\u062C\u0645\u0649\u0633\u062E\u0649"+
+        "\u0635\u062D\u064A\u0634\u062D\u064A\u0636\u062D\u064A\u0644\u062C\u064A"+
+        "\u0644\u0645\u064A\u064A\u062C\u064A\u064A\u0645\u064A\u0645\u0645\u064A"+
+        "\u0642\u0645\u064A\u0646\u062D\u064A\u0639\u0645\u064A\u0643\u0645\u064A"+
+        "\u0646\u062C\u062D\u0645\u062E\u064A\u0644\u062C\u0645\u0643\u0645\u0645"+
+        "\u062C\u062D\u064A\u062D\u062C\u064A\u0645\u062C\u064A\u0641\u0645\u064A"+
+        "\u0628\u062D\u064A\u0633\u062E\u064A\u0646\u062C\u064A\u0635\u0644\u06D2"+
+        "\u0642\u0644\u06D2\u0627\u0644\u0644\u0647\000\u0627\u0643\u0628\u0631"+
+        "\000\u0645\u062D\u0645\u062F\000\u0635\u0644\u0639\u0645\000\u0631\u0633"+
+        "\u0648\u0644\000\u0639\u0644\u064A\u0647\000\u0648\u0633\u0644\u0645\000"+
+        "\u0635\u0644\u0649\u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644"+
+        "\u064A\u0647 \u0648\u0633\u0644\u0645\000\u062C\u0644 \u062C\u0644\u0627"+
+        "\u0644\u0647\000\u2014\u2013_{}\u3014\u3015\u3010\u3011\u300A\u300B\u3008"+
+        "\u3009\u300C\u300D\u300E\u300F,\u3001;:#&*-<>\134$%@ \u064B\u0640\u064B"+
+        "\u0640\u0651 \u0652\u0640\u0652\u0621\u0627\u0653\u0627\u0654\u0648\u0654"+
+        "\u0627\u0655\u0629\u0644\u0627\u0653\u0644\u0627\u0654\u0644\u0627\u0655"+
+        "\042'[]^`|~\u3002\u30FB\u30A5\u30E3\u00A2\u00A3\u00AC\u00A6\u00A5\u20A9"+
+        "\u2502\u2190\u2191\u2192\u2193\u25A0\u25CBA\u0300A\u0301A\u0302A\u0303"+
+        "A\u0308A\u030AC\u0327E\u0300E\u0301E\u0302E\u0308I\u0300I\u0301I\u0302"+
+        "I\u0308N\u0303O\u0300O\u0301O\u0302O\u0303O\u0308U\u0300U\u0301U\u0302"+
+        "U\u0308Y\u0301a\u0300a\u0301a\u0302a\u0303a\u0308a\u030Ac\u0327e\u0300"+
+        "e\u0301e\u0302e\u0308i\u0300i\u0301i\u0302i\u0308n\u0303o\u0300o\u0301"+
+        "o\u0302o\u0303o\u0308u\u0300u\u0301u\u0302u\u0308y\u0301y\u0308A\u0304"+
+        "a\u0304A\u0306a\u0306A\u0328a\u0328C\u0301c\u0301C\u0302c\u0302C\u0307"+
+        "c\u0307C\u030Cc\u030CD\u030Cd\u030CE\u0304e\u0304E\u0306e\u0306E\u0307"+
+        "e\u0307E\u0328e\u0328E\u030Ce\u030CG\u0302g\u0302G\u0306g\u0306G\u0307"+
+        "g\u0307G\u0327g\u0327H\u0302h\u0302I\u0303i\u0303I\u0304i\u0304I\u0306"+
+        "i\u0306I\u0328i\u0328I\u0307J\u0302j\u0302K\u0327k\u0327L\u0301l\u0301"+
+        "L\u0327l\u0327L\u030Cl\u030CN\u0301n\u0301N\u0327n\u0327N\u030Cn\u030C"+
+        "O\u0304o\u0304O\u0306o\u0306O\u030Bo\u030BR\u0301r\u0301R\u0327r\u0327"+
+        "R\u030Cr\u030CS\u0301s\u0301S\u0302s\u0302S\u0327s\u0327S\u030Cs\u030C"+
+        "T\u0327t\u0327T\u030Ct\u030CU\u0303u\u0303U\u0304u\u0304U\u0306u\u0306"+
+        "U\u030Au\u030AU\u030Bu\u030BU\u0328u\u0328W\u0302w\u0302Y\u0302y\u0302"+
+        "Y\u0308Z\u0301z\u0301Z\u0307z\u0307Z\u030Cz\u030CO\u031Bo\u031BU\u031B"+
+        "u\u031BA\u030Ca\u030CI\u030Ci\u030CO\u030Co\u030CU\u030Cu\u030CU\u0308"+
+        "\u0304u\u0308\u0304U\u0308\u0301u\u0308\u0301U\u0308\u030Cu\u0308\u030C"+
+        "U\u0308\u0300u\u0308\u0300A\u0308\u0304a\u0308\u0304A\u0307\u0304a\u0307"+
+        "\u0304\u00C6\u0304\u00E6\u0304G\u030Cg\u030CK\u030Ck\u030CO\u0328o\u0328"+
+        "O\u0328\u0304o\u0328\u0304\u01B7\u030C\u0292\u030Cj\u030CG\u0301g\u0301"+
+        "N\u0300n\u0300A\u030A\u0301a\u030A\u0301\u00C6\u0301\u00E6\u0301\u00D8"+
+        "\u0301\u00F8\u0301A\u030Fa\u030FA\u0311a\u0311E\u030Fe\u030FE\u0311e\u0311"+
+        "I\u030Fi\u030FI\u0311i\u0311O\u030Fo\u030FO\u0311o\u0311R\u030Fr\u030F"+
+        "R\u0311r\u0311U\u030Fu\u030FU\u0311u\u0311S\u0326s\u0326T\u0326t\u0326"+
+        "H\u030Ch\u030CA\u0307a\u0307E\u0327e\u0327O\u0308\u0304o\u0308\u0304O"+
+        "\u0303\u0304o\u0303\u0304O\u0307o\u0307O\u0307\u0304o\u0307\u0304Y\u0304"+
+        "y\u0304\u0300\u0301\u0313\u0308\u0301\u02B9;\u00A8\u0301\u0391\u0301\u00B7"+
+        "\u0395\u0301\u0397\u0301\u0399\u0301\u039F\u0301\u03A5\u0301\u03A9\u0301"+
+        "\u03B9\u0308\u0301\u0399\u0308\u03A5\u0308\u03B1\u0301\u03B5\u0301\u03B7"+
+        "\u0301\u03B9\u0301\u03C5\u0308\u0301\u03B9\u0308\u03C5\u0308\u03BF\u0301"+
+        "\u03C5\u0301\u03C9\u0301\u03D2\u0301\u03D2\u0308\u0415\u0300\u0415\u0308"+
+        "\u0413\u0301\u0406\u0308\u041A\u0301\u0418\u0300\u0423\u0306\u0418\u0306"+
+        "\u0438\u0306\u0435\u0300\u0435\u0308\u0433\u0301\u0456\u0308\u043A\u0301"+
+        "\u0438\u0300\u0443\u0306\u0474\u030F\u0475\u030F\u0416\u0306\u0436\u0306"+
+        "\u0410\u0306\u0430\u0306\u0410\u0308\u0430\u0308\u0415\u0306\u0435\u0306"+
+        "\u04D8\u0308\u04D9\u0308\u0416\u0308\u0436\u0308\u0417\u0308\u0437\u0308"+
+        "\u0418\u0304\u0438\u0304\u0418\u0308\u0438\u0308\u041E\u0308\u043E\u0308"+
+        "\u04E8\u0308\u04E9\u0308\u042D\u0308\u044D\u0308\u0423\u0304\u0443\u0304"+
+        "\u0423\u0308\u0443\u0308\u0423\u030B\u0443\u030B\u0427\u0308\u0447\u0308"+
+        "\u042B\u0308\u044B\u0308\u0627\u0653\u0627\u0654\u0648\u0654\u0627\u0655"+
+        "\u064A\u0654\u06D5\u0654\u06C1\u0654\u06D2\u0654\u0928\u093C\u0930\u093C"+
+        "\u0933\u093C\u0915\u093C\u0916\u093C\u0917\u093C\u091C\u093C\u0921\u093C"+
+        "\u0922\u093C\u092B\u093C\u092F\u093C\u09C7\u09BE\u09C7\u09D7\u09A1\u09BC"+
+        "\u09A2\u09BC\u09AF\u09BC\u0A32\u0A3C\u0A38\u0A3C\u0A16\u0A3C\u0A17\u0A3C"+
+        "\u0A1C\u0A3C\u0A2B\u0A3C\u0B47\u0B56\u0B47\u0B3E\u0B47\u0B57\u0B21\u0B3C"+
+        "\u0B22\u0B3C\u0B92\u0BD7\u0BC6\u0BBE\u0BC7\u0BBE\u0BC6\u0BD7\u0C46\u0C56"+
+        "\u0CBF\u0CD5\u0CC6\u0CD5\u0CC6\u0CD6\u0CC6\u0CC2\u0CC6\u0CC2\u0CD5\u0D46"+
+        "\u0D3E\u0D47\u0D3E\u0D46\u0D57\u0DD9\u0DCA\u0DD9\u0DCF\u0DD9\u0DCF\u0DCA"+
+        "\u0DD9\u0DDF\u0F42\u0FB7\u0F4C\u0FB7\u0F51\u0FB7\u0F56\u0FB7\u0F5B\u0FB7"+
+        "\u0F40\u0FB5\u0F71\u0F72\u0F71\u0F74\u0FB2\u0F80\u0FB3\u0F80\u0F71\u0F80"+
+        "\u0F92\u0FB7\u0F9C\u0FB7\u0FA1\u0FB7\u0FA6\u0FB7\u0FAB\u0FB7\u0F90\u0FB5"+
+        "\u1025\u102EA\u0325a\u0325B\u0307b\u0307B\u0323b\u0323B\u0331b\u0331C"+
+        "\u0327\u0301c\u0327\u0301D\u0307d\u0307D\u0323d\u0323D\u0331d\u0331D\u0327"+
+        "d\u0327D\u032Dd\u032DE\u0304\u0300e\u0304\u0300E\u0304\u0301e\u0304\u0301"+
+        "E\u032De\u032DE\u0330e\u0330E\u0327\u0306e\u0327\u0306F\u0307f\u0307G"+
+        "\u0304g\u0304H\u0307h\u0307H\u0323h\u0323H\u0308h\u0308H\u0327h\u0327"+
+        "H\u032Eh\u032EI\u0330i\u0330I\u0308\u0301i\u0308\u0301K\u0301k\u0301K"+
+        "\u0323k\u0323K\u0331k\u0331L\u0323l\u0323L\u0323\u0304l\u0323\u0304L\u0331"+
+        "l\u0331L\u032Dl\u032DM\u0301m\u0301M\u0307m\u0307M\u0323m\u0323N\u0307"+
+        "n\u0307N\u0323n\u0323N\u0331n\u0331N\u032Dn\u032DO\u0303\u0301o\u0303"+
+        "\u0301O\u0303\u0308o\u0303\u0308O\u0304\u0300o\u0304\u0300O\u0304\u0301"+
+        "o\u0304\u0301P\u0301p\u0301P\u0307p\u0307R\u0307r\u0307R\u0323r\u0323"+
+        "R\u0323\u0304r\u0323\u0304R\u0331r\u0331S\u0307s\u0307S\u0323s\u0323S"+
+        "\u0301\u0307s\u0301\u0307S\u030C\u0307s\u030C\u0307S\u0323\u0307s\u0323"+
+        "\u0307T\u0307t\u0307T\u0323t\u0323T\u0331t\u0331T\u032Dt\u032DU\u0324"+
+        "u\u0324U\u0330u\u0330U\u032Du\u032DU\u0303\u0301u\u0303\u0301U\u0304\u0308"+
+        "u\u0304\u0308V\u0303v\u0303V\u0323v\u0323W\u0300w\u0300W\u0301w\u0301"+
+        "W\u0308w\u0308W\u0307w\u0307W\u0323w\u0323X\u0307x\u0307X\u0308x\u0308"+
+        "Y\u0307y\u0307Z\u0302z\u0302Z\u0323z\u0323Z\u0331z\u0331h\u0331t\u0308"+
+        "w\u030Ay\u030A\u017F\u0307A\u0323a\u0323A\u0309a\u0309A\u0302\u0301a\u0302"+
+        "\u0301A\u0302\u0300a\u0302\u0300A\u0302\u0309a\u0302\u0309A\u0302\u0303"+
+        "a\u0302\u0303A\u0323\u0302a\u0323\u0302A\u0306\u0301a\u0306\u0301A\u0306"+
+        "\u0300a\u0306\u0300A\u0306\u0309a\u0306\u0309A\u0306\u0303a\u0306\u0303"+
+        "A\u0323\u0306a\u0323\u0306E\u0323e\u0323E\u0309e\u0309E\u0303e\u0303E"+
+        "\u0302\u0301e\u0302\u0301E\u0302\u0300e\u0302\u0300E\u0302\u0309e\u0302"+
+        "\u0309E\u0302\u0303e\u0302\u0303E\u0323\u0302e\u0323\u0302I\u0309i\u0309"+
+        "I\u0323i\u0323O\u0323o\u0323O\u0309o\u0309O\u0302\u0301o\u0302\u0301O"+
+        "\u0302\u0300o\u0302\u0300O\u0302\u0309o\u0302\u0309O\u0302\u0303o\u0302"+
+        "\u0303O\u0323\u0302o\u0323\u0302O\u031B\u0301o\u031B\u0301O\u031B\u0300"+
+        "o\u031B\u0300O\u031B\u0309o\u031B\u0309O\u031B\u0303o\u031B\u0303O\u031B"+
+        "\u0323o\u031B\u0323U\u0323u\u0323U\u0309u\u0309U\u031B\u0301u\u031B\u0301"+
+        "U\u031B\u0300u\u031B\u0300U\u031B\u0309u\u031B\u0309U\u031B\u0303u\u031B"+
+        "\u0303U\u031B\u0323u\u031B\u0323Y\u0300y\u0300Y\u0323y\u0323Y\u0309y\u0309"+
+        "Y\u0303y\u0303\u03B1\u0313\u03B1\u0314\u03B1\u0313\u0300\u03B1\u0314\u0300"+
+        "\u03B1\u0313\u0301\u03B1\u0314\u0301\u03B1\u0313\u0342\u03B1\u0314\u0342"+
+        "\u0391\u0313\u0391\u0314\u0391\u0313\u0300\u0391\u0314\u0300\u0391\u0313"+
+        "\u0301\u0391\u0314\u0301\u0391\u0313\u0342\u0391\u0314\u0342\u03B5\u0313"+
+        "\u03B5\u0314\u03B5\u0313\u0300\u03B5\u0314\u0300\u03B5\u0313\u0301\u03B5"+
+        "\u0314\u0301\u0395\u0313\u0395\u0314\u0395\u0313\u0300\u0395\u0314\u0300"+
+        "\u0395\u0313\u0301\u0395\u0314\u0301\u03B7\u0313\u03B7\u0314\u03B7\u0313"+
+        "\u0300\u03B7\u0314\u0300\u03B7\u0313\u0301\u03B7\u0314\u0301\u03B7\u0313"+
+        "\u0342\u03B7\u0314\u0342\u0397\u0313\u0397\u0314\u0397\u0313\u0300\u0397"+
+        "\u0314\u0300\u0397\u0313\u0301\u0397\u0314\u0301\u0397\u0313\u0342\u0397"+
+        "\u0314\u0342\u03B9\u0313\u03B9\u0314\u03B9\u0313\u0300\u03B9\u0314\u0300"+
+        "\u03B9\u0313\u0301\u03B9\u0314\u0301\u03B9\u0313\u0342\u03B9\u0314\u0342"+
+        "\u0399\u0313\u0399\u0314\u0399\u0313\u0300\u0399\u0314\u0300\u0399\u0313"+
+        "\u0301\u0399\u0314\u0301\u0399\u0313\u0342\u0399\u0314\u0342\u03BF\u0313"+
+        "\u03BF\u0314\u03BF\u0313\u0300\u03BF\u0314\u0300\u03BF\u0313\u0301\u03BF"+
+        "\u0314\u0301\u039F\u0313\u039F\u0314\u039F\u0313\u0300\u039F\u0314\u0300"+
+        "\u039F\u0313\u0301\u039F\u0314\u0301\u03C5\u0313\u03C5\u0314\u03C5\u0313"+
+        "\u0300\u03C5\u0314\u0300\u03C5\u0313\u0301\u03C5\u0314\u0301\u03C5\u0313"+
+        "\u0342\u03C5\u0314\u0342\u03A5\u0314\u03A5\u0314\u0300\u03A5\u0314\u0301"+
+        "\u03A5\u0314\u0342\u03C9\u0313\u03C9\u0314\u03C9\u0313\u0300\u03C9\u0314"+
+        "\u0300\u03C9\u0313\u0301\u03C9\u0314\u0301\u03C9\u0313\u0342\u03C9\u0314"+
+        "\u0342\u03A9\u0313\u03A9\u0314\u03A9\u0313\u0300\u03A9\u0314\u0300\u03A9"+
+        "\u0313\u0301\u03A9\u0314\u0301\u03A9\u0313\u0342\u03A9\u0314\u0342\u03B1"+
+        "\u0300\u03B1\u0301\u03B5\u0300\u03B5\u0301\u03B7\u0300\u03B7\u0301\u03B9"+
+        "\u0300\u03B9\u0301\u03BF\u0300\u03BF\u0301\u03C5\u0300\u03C5\u0301\u03C9"+
+        "\u0300\u03C9\u0301\u03B1\u0313\u0345\u03B1\u0314\u0345\u03B1\u0313\u0300"+
+        "\u0345\000\u03B1\u0314\u0300\u0345\000\u03B1\u0313\u0301\u0345\000\u03B1"+
+        "\u0314\u0301\u0345\000\u03B1\u0313\u0342\u0345\000\u03B1\u0314\u0342\u0345"+
+        "\000\u0391\u0313\u0345\u0391\u0314\u0345\u0391\u0313\u0300\u0345\000\u0391"+
+        "\u0314\u0300\u0345\000\u0391\u0313\u0301\u0345\000\u0391\u0314\u0301\u0345"+
+        "\000\u0391\u0313\u0342\u0345\000\u0391\u0314\u0342\u0345\000\u03B7\u0313"+
+        "\u0345\u03B7\u0314\u0345\u03B7\u0313\u0300\u0345\000\u03B7\u0314\u0300"+
+        "\u0345\000\u03B7\u0313\u0301\u0345\000\u03B7\u0314\u0301\u0345\000\u03B7"+
+        "\u0313\u0342\u0345\000\u03B7\u0314\u0342\u0345\000\u0397\u0313\u0345\u0397"+
+        "\u0314\u0345\u0397\u0313\u0300\u0345\000\u0397\u0314\u0300\u0345\000\u0397"+
+        "\u0313\u0301\u0345\000\u0397\u0314\u0301\u0345\000\u0397\u0313\u0342\u0345"+
+        "\000\u0397\u0314\u0342\u0345\000\u03C9\u0313\u0345\u03C9\u0314\u0345\u03C9"+
+        "\u0313\u0300\u0345\000\u03C9\u0314\u0300\u0345\000\u03C9\u0313\u0301\u0345"+
+        "\000\u03C9\u0314\u0301\u0345\000\u03C9\u0313\u0342\u0345\000\u03C9\u0314"+
+        "\u0342\u0345\000\u03A9\u0313\u0345\u03A9\u0314\u0345\u03A9\u0313\u0300"+
+        "\u0345\000\u03A9\u0314\u0300\u0345\000\u03A9\u0313\u0301\u0345\000\u03A9"+
+        "\u0314\u0301\u0345\000\u03A9\u0313\u0342\u0345\000\u03A9\u0314\u0342\u0345"+
+        "\000\u03B1\u0306\u03B1\u0304\u03B1\u0300\u0345\u03B1\u0345\u03B1\u0301"+
+        "\u0345\u03B1\u0342\u03B1\u0342\u0345\u0391\u0306\u0391\u0304\u0391\u0300"+
+        "\u0391\u0301\u0391\u0345\u03B9\u00A8\u0342\u03B7\u0300\u0345\u03B7\u0345"+
+        "\u03B7\u0301\u0345\u03B7\u0342\u03B7\u0342\u0345\u0395\u0300\u0395\u0301"+
+        "\u0397\u0300\u0397\u0301\u0397\u0345\u1FBF\u0300\u1FBF\u0301\u1FBF\u0342"+
+        "\u03B9\u0306\u03B9\u0304\u03B9\u0308\u0300\u03B9\u0308\u0301\u03B9\u0342"+
+        "\u03B9\u0308\u0342\u0399\u0306\u0399\u0304\u0399\u0300\u0399\u0301\u1FFE"+
+        "\u0300\u1FFE\u0301\u1FFE\u0342\u03C5\u0306\u03C5\u0304\u03C5\u0308\u0300"+
+        "\u03C5\u0308\u0301\u03C1\u0313\u03C1\u0314\u03C5\u0342\u03C5\u0308\u0342"+
+        "\u03A5\u0306\u03A5\u0304\u03A5\u0300\u03A5\u0301\u03A1\u0314\u00A8\u0300"+
+        "\u00A8\u0301`\u03C9\u0300\u0345\u03C9\u0345\u03C9\u0301\u0345\u03C9\u0342"+
+        "\u03C9\u0342\u0345\u039F\u0300\u039F\u0301\u03A9\u0300\u03A9\u0301\u03A9"+
+        "\u0345\u00B4\u2002\u2003\u03A9KA\u030A\u2190\u0338\u2192\u0338\u2194\u0338"+
+        "\u21D0\u0338\u21D4\u0338\u21D2\u0338\u2203\u0338\u2208\u0338\u220B\u0338"+
+        "\u2223\u0338\u2225\u0338\u223C\u0338\u2243\u0338\u2245\u0338\u2248\u0338"+
+        "=\u0338\u2261\u0338\u224D\u0338<\u0338>\u0338\u2264\u0338\u2265\u0338"+
+        "\u2272\u0338\u2273\u0338\u2276\u0338\u2277\u0338\u227A\u0338\u227B\u0338"+
+        "\u2282\u0338\u2283\u0338\u2286\u0338\u2287\u0338\u22A2\u0338\u22A8\u0338"+
+        "\u22A9\u0338\u22AB\u0338\u227C\u0338\u227D\u0338\u2291\u0338\u2292\u0338"+
+        "\u22B2\u0338\u22B3\u0338\u22B4\u0338\u22B5\u0338\u3008\u3009\u304B\u3099"+
+        "\u304D\u3099\u304F\u3099\u3051\u3099\u3053\u3099\u3055\u3099\u3057\u3099"+
+        "\u3059\u3099\u305B\u3099\u305D\u3099\u305F\u3099\u3061\u3099\u3064\u3099"+
+        "\u3066\u3099\u3068\u3099\u306F\u3099\u306F\u309A\u3072\u3099\u3072\u309A"+
+        "\u3075\u3099\u3075\u309A\u3078\u3099\u3078\u309A\u307B\u3099\u307B\u309A"+
+        "\u3046\u3099\u309D\u3099\u30AB\u3099\u30AD\u3099\u30AF\u3099\u30B1\u3099"+
+        "\u30B3\u3099\u30B5\u3099\u30B7\u3099\u30B9\u3099\u30BB\u3099\u30BD\u3099"+
+        "\u30BF\u3099\u30C1\u3099\u30C4\u3099\u30C6\u3099\u30C8\u3099\u30CF\u3099"+
+        "\u30CF\u309A\u30D2\u3099\u30D2\u309A\u30D5\u3099\u30D5\u309A\u30D8\u3099"+
+        "\u30D8\u309A\u30DB\u3099\u30DB\u309A\u30A6\u3099\u30EF\u3099\u30F0\u3099"+
+        "\u30F1\u3099\u30F2\u3099\u30FD\u3099\u8C48\u66F4\u8ECA\u8CC8\u6ED1\u4E32"+
+        "\u53E5\u9F9C\u9F9C\u5951\u91D1\u5587\u5948\u61F6\u7669\u7F85\u863F\u87BA"+
+        "\u88F8\u908F\u6A02\u6D1B\u70D9\u73DE\u843D\u916A\u99F1\u4E82\u5375\u6B04"+
+        "\u721B\u862D\u9E1E\u5D50\u6FEB\u85CD\u8964\u62C9\u81D8\u881F\u5ECA\u6717"+
+        "\u6D6A\u72FC\u90CE\u4F86\u51B7\u52DE\u64C4\u6AD3\u7210\u76E7\u8001\u8606"+
+        "\u865C\u8DEF\u9732\u9B6F\u9DFA\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u8AD6"+
+        "\u58DF\u5F04\u7C60\u807E\u7262\u78CA\u8CC2\u96F7\u58D8\u5C62\u6A13\u6DDA"+
+        "\u6F0F\u7D2F\u7E37\u96FB\u52D2\u808B\u51DC\u51CC\u7A1C\u7DBE\u83F1\u9675"+
+        "\u8B80\u62CF\u6A02\u8AFE\u4E39\u5BE7\u6012\u7387\u7570\u5317\u78FB\u4FBF"+
+        "\u5FA9\u4E0D\u6CCC\u6578\u7D22\u53C3\u585E\u7701\u8449\u8AAA\u6BBA\u8FB0"+
+        "\u6C88\u62FE\u82E5\u63A0\u7565\u4EAE\u5169\u51C9\u6881\u7CE7\u826F\u8AD2"+
+        "\u91CF\u52F5\u5442\u5973\u5EEC\u65C5\u6FFE\u792A\u95AD\u9A6A\u9E97\u9ECE"+
+        "\u529B\u66C6\u6B77\u8F62\u5E74\u6190\u6200\u649A\u6F23\u7149\u7489\u79CA"+
+        "\u7DF4\u806F\u8F26\u84EE\u9023\u934A\u5217\u52A3\u54BD\u70C8\u88C2\u8AAA"+
+        "\u5EC9\u5FF5\u637B\u6BAE\u7C3E\u7375\u4EE4\u56F9\u5BE7\u5DBA\u601C\u73B2"+
+        "\u7469\u7F9A\u8046\u9234\u96F6\u9748\u9818\u4F8B\u79AE\u91B4\u96B8\u60E1"+
+        "\u4E86\u50DA\u5BEE\u5C3F\u6599\u6A02\u71CE\u7642\u84FC\u907C\u9F8D\u6688"+
+        "\u962E\u5289\u677B\u67F3\u6D41\u6E9C\u7409\u7559\u786B\u7D10\u985E\u516D"+
+        "\u622E\u9678\u502B\u5D19\u6DEA\u8F2A\u5F8B\u6144\u6817\u7387\u9686\u5229"+
+        "\u540F\u5C65\u6613\u674E\u68A8\u6CE5\u7406\u75E2\u7F79\u88CF\u88E1\u91CC"+
+        "\u96E2\u533F\u6EBA\u541D\u71D0\u7498\u85FA\u96A3\u9C57\u9E9F\u6797\u6DCB"+
+        "\u81E8\u7ACB\u7B20\u7C92\u72C0\u7099\u8B58\u4EC0\u8336\u523A\u5207\u5EA6"+
+        "\u62D3\u7CD6\u5B85\u6D1E\u66B4\u8F3B\u884C\u964D\u898B\u5ED3\u5140\u55C0"+
+        "\u585A\u6674\u51DE\u732A\u76CA\u793C\u795E\u7965\u798F\u9756\u7CBE\u7FBD"+
+        "\u8612\u8AF8\u9038\u90FD\u98EF\u98FC\u9928\u9DB4\u05D9\u05B4\u05F2\u05B7"+
+        "\u05E9\u05C1\u05E9\u05C2\u05E9\u05BC\u05C1\u05E9\u05BC\u05C2\u05D0\u05B7"+
+        "\u05D0\u05B8\u05D0\u05BC\u05D1\u05BC\u05D2\u05BC\u05D3\u05BC\u05D4\u05BC"+
+        "\u05D5\u05BC\u05D6\u05BC\u05D8\u05BC\u05D9\u05BC\u05DA\u05BC\u05DB\u05BC"+
+        "\u05DC\u05BC\u05DE\u05BC\u05E0\u05BC\u05E1\u05BC\u05E3\u05BC\u05E4\u05BC"+
+        "\u05E6\u05BC\u05E7\u05BC\u05E8\u05BC\u05E9\u05BC\u05EA\u05BC\u05D5\u05B9"+
+        "\u05D1\u05BF\u05DB\u05BF\u05E4\u05BF"
+    ;
+
+    static final CompactByteArray canonClass = new CompactByteArray(
+        "\000\u0200\uA5A5\006\000\u0080\000\000\u0100\000\u0180\u0200\u0280\u0300"+
+        "\000\000\000\u0380\uA5A5\004\u0400\u0480\u0500\u0480\u0480\u0580\u0600"+
+        "\u0680\u0700\u0780\u0800\uA5A5\016\000\u0880\000\u0900\uA5A5\017\000\u0980"+
+        "\uA5A5\036\000\u0A00\u0A80\uA5A5\u0194\000\u0B00\uA5A5\005\000\u0B80\000"+
+        "\000\000"
+        ,
+        "\000\u0C00\uA580\u00A5\u15E6\uE8A5\u04DC\uE8D8\uA505\uDCCA\uCAA5\u04DC"+
+        "\uCACA\uA50B\uDCA5\u0501\uA504\uDCA5\u08E6\uF0E6\uDCDC\uDCE6\uE6E6\uDCDC"+
+        "\uA511\u00EA\uEAE9\uA520\u00A5\u04E6\uA58A\u00DC\uA504\uE6DC\uE6E6\uE6DE"+
+        "\uDCA5\u06E6\u00A5\u05DC\uE6E6\uDCE6\uE6DE\uE4E6\u0A0B\u0C0D\u0E0F\u1011"+
+        "\u1213\024\u1516\027\030\u1900\uE6A5\u8600\u1B1C\u1D1E\u1F20\u2122\uE6E6"+
+        "\uDCA5\u1A00\u23A5\u6500\uA507\uE600\u00A5\u04E6\uDCE6\000\uE6E6\u00DC"+
+        "\uE6E6\uDCA5\u2300\u24A5\u1E00\uE6DC\uE6E6\uDCE6\uE6DC\uDCDC\uE6DC\uDCE6"+
+        "\uDCE6\uE6E6\uDCE6\uDCE6\uDCE6\uDCE6\uE6A5\u7100\u07A5\u1000\u0900\000"+
+        "\uE6DC\uE6E6\uA567\007\uA510\011\uA57F\011\uA57F\011\uA507T\u5BA5\u7300"+
+        "\u09A5\u6D00\u6767\u09A5\u0D00\uA504\u6BA5\u6C00\u7676\uA50E\u00A5\u047A"+
+        "\uA54C\u00DC\uDCA5\u1B00\uDC00\uDC00\uD8A5\u3700\u8182\u0084\uA505\u00A5"+
+        "\u0482\000\u8200\uE6E6\u0900\uE6E6\uA53E\u00DC\uA570\007\011\uA598\011"+
+        "\uA556\u00E4\uA5A6\u00E6\uE601\u01A5\u04E6\u0101\u01E6\uE6A5\u0400\uE6A5"+
+        "\u4800\uDAE4\uE8DE\uE0E0\uA569\010\u08A5\u8300\u1AA5\u8100\uA504\uE6A5"+
+        "\u5C00"
+        );
+}
diff --git a/src/com/ibm/text/DictionaryBasedBreakIterator.java b/src/com/ibm/text/DictionaryBasedBreakIterator.java
new file mode 100755
index 0000000..11b7d2a
--- /dev/null
+++ b/src/com/ibm/text/DictionaryBasedBreakIterator.java
@@ -0,0 +1,566 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/DictionaryBasedBreakIterator.java,v $ 
+ * $Date: 2000/03/10 04:07:20 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+import java.util.Vector;
+import java.util.Stack;
+import java.util.Hashtable;
+import java.text.CharacterIterator;
+import java.io.InputStream;
+import java.io.IOException;
+
+import java.io.*;
+
+/**
+ * A subclass of RuleBasedBreakIterator that adds the ability to use a dictionary
+ * to further subdivide ranges of text beyond what is possible using just the
+ * state-table-based algorithm.  This is necessary, for example, to handle
+ * word and line breaking in Thai, which doesn't use spaces between words.  The
+ * state-table-based algorithm used by RuleBasedBreakIterator is used to divide
+ * up text as far as possible, and then contiguous ranges of letters are
+ * repeatedly compared against a list of known words (i.e., the dictionary)
+ * to divide them up into words.
+ *
+ * DictionaryBasedBreakIterator uses the same rule language as RuleBasedBreakIterator,
+ * but adds one more special substitution name: $dictionary.  This substitution
+ * name is used to identify characters in words in the dictionary.  The idea is that
+ * if the iterator passes over a chunk of text that includes two or more characters
+ * in a row that are included in {$dictionary}, it goes back through that range and
+ * derives additional break positions (if possible) using the dictionary.
+ *
+ * DictionaryBasedBreakIterator is also constructed with the filename of a dictionary
+ * file.  It uses Class.getResource() to locate the dictionary file.  The
+ * dictionary file is in a serialized binary format.  We have a very primitive (and
+ * slow) BuildDictionaryFile utility for creating dictionary files, but aren't
+ * currently making it public.  Contact us for help.
+ */
+public class DictionaryBasedBreakIterator extends RuleBasedBreakIterator {
+
+    /**
+     * a list of known words that is used to divide up contiguous ranges of letters,
+     * stored in a compressed, indexed, format that offers fast access
+     */
+    private BreakDictionary dictionary;
+
+    /**
+     * a list of flags indicating which character categories are contained in
+     * the dictionary file (this is used to determine which ranges of characters
+     * to apply the dictionary to)
+     */
+    private boolean[] categoryFlags;
+
+    /**
+     * a temporary hiding place for the number of dictionary characters in the
+     * last range passed over by next()
+     */
+    private int dictionaryCharCount;
+
+    /**
+     * when a range of characters is divided up using the dictionary, the break
+     * positions that are discovered are stored here, preventing us from having
+     * to use either the dictionary or the state table again until the iterator
+     * leaves this range of text
+     */
+    private int[] cachedBreakPositions;
+
+    /**
+     * if cachedBreakPositions is not null, this indicates which item in the
+     * cache the current iteration position refers to
+     */
+    private int positionInCache;
+
+    /**
+     * Constructs a DictionaryBasedBreakIterator.
+     * @param description Same as the description parameter on RuleBasedBreakIterator,
+     * except for the special meaning of "<dictionary>".  This parameter is just
+     * passed through to RuleBasedBreakIterator's constructor.
+     * @param dictionaryFilename The filename of the dictionary file to use
+     */
+    public DictionaryBasedBreakIterator(String description,
+                                        InputStream dictionaryStream) throws IOException {
+        super(description);
+        dictionary = new BreakDictionary(dictionaryStream);
+    }
+
+    /**
+     * Returns a Builder that is customized to build a DictionaryBasedBreakIterator.
+     * This is the same as RuleBasedBreakIterator.Builder, except for the extra code
+     * to handle the <dictionary> tag.
+     */
+    protected RuleBasedBreakIterator.Builder makeBuilder() {
+        return new Builder();
+    }
+
+public void writeTablesToFile(FileOutputStream file, boolean littleEndian) throws IOException {
+super.writeTablesToFile(file, littleEndian);
+
+DataOutputStream out = new DataOutputStream(file);
+
+// --- write index to fields (there's only one entry, but this allows subclassing of this class)
+writeSwappedInt((short)8, out, littleEndian);
+writeSwappedInt((short)(categoryFlags.length + 3 & 0x0f), out, littleEndian);
+
+for (int i = 0; i < categoryFlags.length; i++)
+    out.writeBoolean(categoryFlags[i]);
+switch (categoryFlags.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+}
+    
+    public void setText(CharacterIterator newText) {
+        super.setText(newText);
+        cachedBreakPositions = null;
+        dictionaryCharCount = 0;
+        positionInCache = 0;
+    }
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     */
+    public int first() {
+        cachedBreakPositions = null;
+        dictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.first();
+    }
+
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     */
+    public int last() {
+        cachedBreakPositions = null;
+        dictionaryCharCount = 0;
+        positionInCache = 0;
+        return super.last();
+    }
+
+    /**
+     * Advances the iterator one step backwards.
+     * @return The position of the last boundary position before the
+     * current iteration position
+     */
+    public int previous() {
+        CharacterIterator text = getText();
+
+        // if we have cached break positions and we're still in the range
+        // covered by them, just move one step backward in the cache
+        if (cachedBreakPositions != null && positionInCache > 0) {
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+
+        // otherwise, dump the cache and use the inherited previous() method to move
+        // backward.  This may fill up the cache with new break positions, in which
+        // case we have to mark our position in the cache
+        else {
+            cachedBreakPositions = null;
+            int result = super.previous();
+            if (cachedBreakPositions != null)
+                positionInCache = cachedBreakPositions.length - 2;
+            return result;
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the last boundary position
+     * before the specified position.
+     * @param offset The position to begin searching from
+     * @return The position of the last boundary before "offset"
+     */
+    public int preceding(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or "offset" is outside the
+        // range covered by the cache, we can just call the inherited routine
+        // (which will eventually call other routines in this class that may
+        // refresh the cache)
+        if (cachedBreakPositions == null || offset <= cachedBreakPositions[0] ||
+                offset > cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.preceding(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the cache,
+        // then all we have to do is search the cache for the last break position
+        // before "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset > cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            --positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+
+    /**
+     * Sets the current iteration position to the first boundary position after
+     * the specified position.
+     * @param offset The position to begin searching forward from
+     * @return The position of the first boundary after "offset"
+     */
+    public int following(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+
+        // if we have no cached break positions, or if "offset" is outside the
+        // range covered by the cache, then dump the cache and call our
+        // inherited following() method.  This will call other methods in this
+        // class that may refresh the cache.
+        if (cachedBreakPositions == null || offset < cachedBreakPositions[0] ||
+                offset >= cachedBreakPositions[cachedBreakPositions.length - 1]) {
+            cachedBreakPositions = null;
+            return super.following(offset);
+        }
+
+        // on the other hand, if "offset" is within the range covered by the
+        // cache, then just search the cache for the first break position
+        // after "offset"
+        else {
+            positionInCache = 0;
+            while (positionInCache < cachedBreakPositions.length
+                   && offset >= cachedBreakPositions[positionInCache])
+                ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return text.getIndex();
+        }
+    }
+
+    /**
+     * This is the implementation function for next().
+     */
+    protected int handleNext() {
+        CharacterIterator text = getText();
+
+        // if there are no cached break positions, or if we've just moved
+        // off the end of the range covered by the cache, we have to dump
+        // and possibly regenerate the cache
+        if (cachedBreakPositions == null || positionInCache == cachedBreakPositions.length - 1) {
+
+            // start by using the inherited handleNext() to find a tentative return
+            // value.   dictionaryCharCount tells us how many dictionary characters
+            // we passed over on our way to the tentative return value
+            int startPos = text.getIndex();
+            dictionaryCharCount = 0;
+            int result = super.handleNext();
+
+            // if we passed over more than one dictionary character, then we use
+            // divideUpDictionaryRange() to regenerate the cached break positions
+            // for the new range
+            if (dictionaryCharCount > 1 && result - startPos > 1) {
+                divideUpDictionaryRange(startPos, result);
+            }
+
+            // otherwise, the value we got back from the inherited fuction
+            // is our return value, and we can dump the cache
+            else {
+                cachedBreakPositions = null;
+                return result;
+            }
+        }
+
+        // if the cache of break positions has been regenerated (or existed all
+        // along), then just advance to the next break position in the cache
+        // and return it
+        if (cachedBreakPositions != null) {
+            ++positionInCache;
+            text.setIndex(cachedBreakPositions[positionInCache]);
+            return cachedBreakPositions[positionInCache];
+        }
+        return -9999;   // SHOULD NEVER GET HERE!
+    }
+
+    /**
+     * Looks up a character category for a character.
+     */
+    protected int lookupCategory(char c) {
+        // this override of lookupCategory() exists only to keep track of whether we've
+        // passed over any dictionary characters.  It calls the inherited lookupCategory()
+        // to do the real work, and then checks whether its return value is one of the
+        // categories represented in the dictionary.  If it is, bump the dictionary-
+        // character count.
+        int result = super.lookupCategory(c);
+        if (result != RuleBasedBreakIterator.IGNORE && categoryFlags[result]) {
+            ++dictionaryCharCount;
+        }
+        return result;
+    }
+
+    /**
+     * This is the function that actually implements the dictionary-based
+     * algorithm.  Given the endpoints of a range of text, it uses the
+     * dictionary to determine the positions of any boundaries in this
+     * range.  It stores all the boundary positions it discovers in
+     * cachedBreakPositions so that we only have to do this work once
+     * for each time we enter the range.
+     */
+    private void divideUpDictionaryRange(int startPos, int endPos) {
+        CharacterIterator text = getText();
+
+        // the range we're dividing may begin or end with non-dictionary characters
+        // (i.e., for line breaking, we may have leading or trailing punctuation
+        // that needs to be kept with the word).  Seek from the beginning of the
+        // range to the first dictionary character
+        text.setIndex(startPos);
+        char c = text.current();
+        int category = lookupCategory(c);
+        while (category == IGNORE || !categoryFlags[category]) {
+            c = text.next();
+            category = lookupCategory(c);
+        }
+//System.out.println("\nDividing up range from " + (text.getIndex() + 1) + " to " + endPos);
+
+        // initialize.  We maintain two stacks: currentBreakPositions contains
+        // the list of break positions that will be returned if we successfully
+        // finish traversing the whole range now.  possibleBreakPositions lists
+        // all other possible word ends we've passed along the way.  (Whenever
+        // we reach an error [a sequence of characters that can't begin any word
+        // in the dictionary], we back up, possibly delete some breaks from
+        // currentBreakPositions, move a break from possibleBreakPositions
+        // to currentBreakPositions, and start over from there.  This process
+        // continues in this way until we either successfully make it all the way
+        // across the range, or exhaust all of our combinations of break
+        // positions.)
+        Stack currentBreakPositions = new Stack();
+        Stack possibleBreakPositions = new Stack();
+        Vector wrongBreakPositions = new Vector();
+
+        // the dictionary is implemented as a trie, which is treated as a state
+        // machine.  -1 represents the end of a legal word.  Every word in the
+        // dictionary is represented by a path from the root node to -1.  A path
+        // that ends in state 0 is an illegal combination of characters.
+        int state = 0;
+
+        // these two variables are used for error handling.  We keep track of the
+        // farthest we've gotten through the range being divided, and the combination
+        // of breaks that got us that far.  If we use up all possible break
+        // combinations, the text contains an error or a word that's not in the
+        // dictionary.  In this case, we "bless" the break positions that got us the
+        // farthest as real break positions, and then start over from scratch with
+        // the character where the error occurred.
+        int farthestEndPoint = text.getIndex();
+        Stack bestBreakPositions = null;
+
+        // initialize (we always exit the loop with a break statement)
+        c = text.current();
+        while (true) {
+//System.out.print("c = " + Integer.toString(c, 16) + ", pos = " + text.getIndex());
+
+            // if we can transition to state "-1" from our current state, we're
+            // on the last character of a legal word.  Push that position onto
+            // the possible-break-positions stack
+            if (dictionary.at(state, 0) == -1) {
+                possibleBreakPositions.push(new Integer(text.getIndex()));
+            }
+
+            // look up the new state to transition to in the dictionary
+            state = dictionary.at(state, c);
+//System.out.print(", state = " + state);
+
+            // if the character we're sitting on causes us to transition to
+            // the "end of word" state, then it was a non-dictionary character
+            // and we've successfully traversed the whole range.  Drop out
+            // of the loop.
+            if (state == -1) {
+                currentBreakPositions.push(new Integer(text.getIndex()));
+                break;
+            }
+
+            // if the character we're sitting on causes us to transition to
+            // the error state, or if we've gone off the end of the range
+            // without transitioning to the "end of word" state, we've hit
+            // an error...
+            else if (state == 0 || text.getIndex() >= endPos) {
+
+                // if this is the farthest we've gotten, take note of it in
+                // case there's an error in the text
+                if (text.getIndex() > farthestEndPoint) {
+                    farthestEndPoint = text.getIndex();
+                    bestBreakPositions = (Stack)(currentBreakPositions.clone());
+                }
+
+                // wrongBreakPositions is a list of all break positions we've tried starting
+                // that didn't allow us to traverse all the way through the text.  Every time
+                // we pop a break position off of currentBreakPositions, we put it into
+                // wrongBreakPositions to avoid trying it again later.  If we make it to this
+                // spot, we're either going to back up to a break in possibleBreakPositions
+                // and try starting over from there, or we've exhausted all possible break
+                // positions and are going to do the fallback procedure.  This loop prevents
+                // us from messing with anything in possibleBreakPositions that didn't work as
+                // a starting point the last time we tried it (this is to prevent a bunch of
+                // repetitive checks from slowing down some extreme cases)
+                Integer newStartingSpot = null;
+                while (!possibleBreakPositions.isEmpty() && wrongBreakPositions.contains(
+                            possibleBreakPositions.peek())) {
+                    possibleBreakPositions.pop();
+                }
+                
+                // if we've used up all possible break-position combinations, there's
+                // an error or an unknown word in the text.  In this case, we start
+                // over, treating the farthest character we've reached as the beginning
+                // of the range, and "blessing" the break positions that got us that
+                // far as real break positions
+                if (possibleBreakPositions.isEmpty()) {
+                    if (bestBreakPositions != null) {
+                        currentBreakPositions = bestBreakPositions;
+                        if (farthestEndPoint < endPos) {
+                            text.setIndex(farthestEndPoint + 1);
+                        }
+                        else {
+                            break;
+                        }
+                    }
+                    else {
+                        if ((currentBreakPositions.size() == 0
+                                || ((Integer)(currentBreakPositions.peek())).intValue() != text.getIndex())
+                                && text.getIndex() != startPos) {
+                            currentBreakPositions.push(new Integer(text.getIndex()));
+                        }
+                        text.next();
+                        currentBreakPositions.push(new Integer(text.getIndex()));
+                    }
+                }
+
+                // if we still have more break positions we can try, then promote the
+                // last break in possibleBreakPositions into currentBreakPositions,
+                // and get rid of all entries in currentBreakPositions that come after
+                // it.  Then back up to that position and start over from there (i.e.,
+                // treat that position as the beginning of a new word)
+                else {
+                    Integer temp = (Integer)possibleBreakPositions.pop();
+                    Object temp2 = null;
+                    while (!currentBreakPositions.isEmpty() && temp.intValue() <
+                           ((Integer)currentBreakPositions.peek()).intValue()) {
+                        temp2 = currentBreakPositions.pop();
+                        wrongBreakPositions.addElement(temp2);
+                    }
+                    currentBreakPositions.push(temp);
+                    text.setIndex(((Integer)currentBreakPositions.peek()).intValue());
+                }
+
+                // re-sync "c" for the next go-round, and drop out of the loop if
+                // we've made it off the end of the range
+                c = text.current();
+                if (text.getIndex() >= endPos) {
+                    break;
+                }
+            }
+
+            // if we didn't hit any exceptional conditions on this last iteration,
+            // just advance to the next character and loop
+            else {
+                c = text.next();
+            }
+//System.out.print(", possibleBreakPositions = { "); for (int i = 0; i < possibleBreakPositions.size(); i++) System.out.print(possibleBreakPositions.elementAt(i) + " "); System.out.print("}");
+//System.out.print(", currentBreakPositions = { "); for (int i = 0; i < currentBreakPositions.size(); i++) System.out.print(currentBreakPositions.elementAt(i) + " "); System.out.println("}");
+        }
+
+        // dump the last break position in the list, and replace it with the actual
+        // end of the range (which may be the same character, or may be further on
+        // because the range actually ended with non-dictionary characters we want to
+        // keep with the word)
+        if (!currentBreakPositions.isEmpty()) {
+            currentBreakPositions.pop();
+        }
+        currentBreakPositions.push(new Integer(endPos));
+
+        // create a regular array to hold the break positions and copy
+        // the break positions from the stack to the array (in addition,
+        // our starting position goes into this array as a break position).
+        // This array becomes the cache of break positions used by next()
+        // and previous(), so this is where we actually refresh the cache.
+        cachedBreakPositions = new int[currentBreakPositions.size() + 1];
+        cachedBreakPositions[0] = startPos;
+
+        for (int i = 0; i < currentBreakPositions.size(); i++) {
+            cachedBreakPositions[i + 1] = ((Integer)currentBreakPositions.elementAt(i)).intValue();
+        }
+        positionInCache = 0;
+    }
+
+    /**
+     * The Builder class for DictionaryBasedBreakIterator inherits almost all of
+     * its functionality from the Builder class for RuleBasedBreakIterator, but
+     * extends it with extra logic to handle the "<dictionary>" token
+     */
+    protected class Builder extends RuleBasedBreakIterator.Builder {
+
+        /**
+         * A UnicodeSet that contains all the characters represented in the dictionary
+         */
+        private UnicodeSet dictionaryChars = new UnicodeSet();
+        private String dictionaryExpression = "";
+
+        /**
+         * No special initialization
+         */
+        public Builder() {
+        }
+
+        /**
+         * We override handleSpecialSubstitution() to add logic to handle
+         * the $dictionary tag.  If we see a substitution named "$dictionary",
+         * parse the substitution expression and store the result in
+         * dictionaryChars.
+         */
+        protected void handleSpecialSubstitution(String replace, String replaceWith,
+                                                 int startPos, String description) {
+            super.handleSpecialSubstitution(replace, replaceWith, startPos, description);
+
+            if (replace.equals("$dictionary")) {
+                if (replaceWith.charAt(0) == '(') {
+                    error("Dictionary group can't be enclosed in (", startPos, description);
+                }
+                dictionaryExpression = replaceWith;
+                dictionaryChars = new UnicodeSet(replaceWith, false);
+            }
+        }
+
+        /**
+         * The other half of the logic to handle the dictionary characters happens here.
+         * After the inherited builder has derived the real character categories, we
+         * set up the categoryFlags array in the iterator.  This array contains "true"
+         * for every character category that includes a dictionary character.
+         */
+        protected void buildCharCategories(Vector tempRuleList) {
+            super.buildCharCategories(tempRuleList);
+
+            categoryFlags = new boolean[categories.size()];
+            for (int i = 0; i < categories.size(); i++) {
+                UnicodeSet cs = (UnicodeSet)categories.elementAt(i);
+                if (dictionaryChars.containsAll(cs)) {
+                    categoryFlags[i] = true;
+                }
+            }
+        }
+
+        // This function is actually called by RuleBasedBreakIterator.buildCharCategories(),
+        // which is called by the function above.  This gives us a way to create a separate
+        // character category for the dictionary characters even when RuleBasedBreakIterator
+        // isn't making a distinction
+        protected void mungeExpressionList(Hashtable expressions) {
+            expressions.put(dictionaryExpression, dictionaryChars);
+        }
+    }
+}
diff --git a/src/com/ibm/text/DigitList.java b/src/com/ibm/text/DigitList.java
new file mode 100755
index 0000000..f1b0ffc
--- /dev/null
+++ b/src/com/ibm/text/DigitList.java
@@ -0,0 +1,710 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/DigitList.java,v $ 
+ * $Date: 2000/03/10 04:07:20 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.math.BigInteger;
+
+/**
+ * <code>DigitList</code> handles the transcoding between numeric values and
+ * strings of characters.  It only represents non-negative numbers.  The
+ * division of labor between <code>DigitList</code> and
+ * <code>DecimalFormat</code> is that <code>DigitList</code> handles the radix
+ * 10 representation issues and numeric conversion, including rounding;
+ * <code>DecimalFormat</code> handles the locale-specific issues such as
+ * positive and negative representation, digit grouping, decimal point,
+ * currency, and so on.
+ *
+ * <p>A <code>DigitList</code> is a representation of a finite numeric value.
+ * <code>DigitList</code> objects do not represent <code>NaN</code> or infinite
+ * values.  A <code>DigitList</code> value can be converted to a
+ * <code>BigDecimal</code> without loss of precision.  Conversion to other
+ * numeric formats may involve loss of precision, depending on the specific
+ * value.
+ *
+ * <p>The <code>DigitList</code> representation consists of a string of
+ * characters, which are the digits radix 10, from '0' to '9'.  It also has a
+ * base 10 exponent associated with it.  The value represented by a
+ * <code>DigitList</code> object can be computed by mulitplying the fraction
+ * <em>f</em>, where 0 <= <em>f</em> < 1, derived by placing all the digits of
+ * the list to the right of the decimal point, by 10^exponent.
+ *
+ * @see java.util.Locale
+ * @see java.text.Format
+ * @see java.text.NumberFormat
+ * @see java.text.DecimalFormat
+ * @see java.text.ChoiceFormat
+ * @see java.text.MessageFormat
+ * @version      1.18 08/12/98
+ * @author       Mark Davis, Alan Liu
+ * */
+final class DigitList implements Cloneable {
+    /**
+     * The maximum number of significant digits in an IEEE 754 double, that
+     * is, in a Java double.  This must not be increased, or garbage digits
+     * will be generated, and should not be decreased, or accuracy will be lost.
+     */
+    public static final int MAX_LONG_DIGITS = 19; // == Long.toString(Long.MAX_VALUE).length()
+    public static final int DBL_DIG = 17;
+
+    /**
+     * These data members are intentionally public and can be set directly.
+     *
+     * The value represented is given by placing the decimal point before
+     * digits[decimalAt].  If decimalAt is < 0, then leading zeros between
+     * the decimal point and the first nonzero digit are implied.  If decimalAt
+     * is > count, then trailing zeros between the digits[count-1] and the
+     * decimal point are implied.
+     *
+     * Equivalently, the represented value is given by f * 10^decimalAt.  Here
+     * f is a value 0.1 <= f < 1 arrived at by placing the digits in Digits to
+     * the right of the decimal.
+     *
+     * DigitList is normalized, so if it is non-zero, figits[0] is non-zero.  We
+     * don't allow denormalized numbers because our exponent is effectively of
+     * unlimited magnitude.  The count value contains the number of significant
+     * digits present in digits[].
+     *
+     * Zero is represented by any DigitList with count == 0 or with each digits[i]
+     * for all i <= count == '0'.
+     */
+    public int decimalAt = 0;
+    public int count = 0;
+    public byte[] digits = new byte[MAX_LONG_DIGITS];
+
+    private void ensureCapacity(int digitCapacity, int digitsToCopy) {
+        if (digitCapacity > digits.length) {
+            byte[] newDigits = new byte[digitCapacity * 2];
+            System.arraycopy(digits, 0, newDigits, 0, digitsToCopy);
+            digits = newDigits;
+        }
+    }
+
+    /**
+     * Return true if the represented number is zero.
+     */
+    boolean isZero()
+    {
+        for (int i=0; i<count; ++i) if (digits[i] != '0') return false;
+        return true;
+    }
+
+    /**
+     * Clears out the digits.
+     * Use before appending them.
+     * Typically, you set a series of digits with append, then at the point
+     * you hit the decimal point, you set myDigitList.decimalAt = myDigitList.count;
+     * then go on appending digits.
+     */
+    public void clear () {
+        decimalAt = 0;
+        count = 0;
+    }
+    /**
+     * Appends digits to the list.
+     */
+    public void append (int digit) {
+        ensureCapacity(count+1, count);
+        digits[count++] = (byte) digit;
+    }
+    /**
+     * Utility routine to get the value of the digit list
+     * If (count == 0) this throws a NumberFormatException, which
+     * mimics Long.parseLong().
+     */
+    public final double getDouble() {
+        if (count == 0) return 0.0;
+        StringBuffer temp = new StringBuffer(count);
+        temp.append('.');
+        for (int i = 0; i < count; ++i) temp.append((char)(digits[i]));
+        temp.append('E');
+        temp.append(Integer.toString(decimalAt));
+        return Double.valueOf(temp.toString()).doubleValue();
+        // long value = Long.parseLong(temp.toString());
+        // return (value * Math.pow(10, decimalAt - count));
+    }
+
+    /**
+     * Utility routine to get the value of the digit list.
+     * If (count == 0) this returns 0, unlike Long.parseLong().
+     */
+    public final long getLong() {
+        // for now, simple implementation; later, do proper IEEE native stuff
+
+        if (count == 0) return 0;
+
+        // We have to check for this, because this is the one NEGATIVE value
+        // we represent.  If we tried to just pass the digits off to parseLong,
+        // we'd get a parse failure.
+        if (isLongMIN_VALUE()) return Long.MIN_VALUE;
+
+        StringBuffer temp = new StringBuffer(count);
+        for (int i = 0; i < decimalAt; ++i)
+        {
+            temp.append((i < count) ? (char)(digits[i]) : '0');
+        }
+        return Long.parseLong(temp.toString());
+    }
+
+    /**
+     * Return a <code>BigInteger</code> representing the value stored in this
+     * <code>DigitList</code>.  This method assumes that this object contains
+     * an integral value; if not, it will return an incorrect value.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigInteger</code>
+     */
+    public BigInteger getBigInteger(boolean isPositive) {
+        if (isZero()) return BigInteger.valueOf(0);
+        StringBuffer stringRep = new StringBuffer(count);
+        if (!isPositive) {
+            stringRep.append('-');
+        }
+        for (int i=0; i<count; ++i) {
+            stringRep.append((char) digits[i]);
+        }
+        int d = decimalAt;
+        while (d-- > count) {
+            stringRep.append('0');
+        }
+        return new BigInteger(stringRep.toString());
+    }
+
+    /**
+     * Return a <code>BigDecimal</code> representing the value stored in this
+     * <code>DigitList</code>.
+     * [bnf]
+     * @param isPositive determines the sign of the returned result
+     * @return the value of this object as a <code>BigDecimal</code>
+     */
+    public java.math.BigDecimal getBigDecimal(boolean isPositive) {
+        if (isZero()) return java.math.BigDecimal.valueOf(0);
+        StringBuffer stringRep = new StringBuffer(count+1);
+        if (!isPositive) {
+            stringRep.append('-');
+        }
+        int d = decimalAt;
+        if (d < 0) {
+            stringRep.append('.');
+            while (d < 0) {
+                stringRep.append('0');
+                ++d;
+            }
+            d = -1;
+        }
+        for (int i=0; i<count; ++i) {
+            if (d == i) {
+                stringRep.append('.');
+            }
+            stringRep.append((char) digits[i]);
+        }
+        while (d-- > count) {
+            stringRep.append('0');
+        }
+        return new java.math.BigDecimal(stringRep.toString());
+    }
+
+    /**
+     * Return whether or not this objects represented value is an integer.
+     * [bnf]
+     * @return true if the represented value of this object is an integer
+     */
+    boolean isIntegral() {
+        // Trim trailing zeros.  This does not change the represented value.
+        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+        return count == 0 || decimalAt >= count;
+    }
+
+    /**
+     * Return true if the number represented by this object can fit into
+     * a long.
+     */
+    boolean fitsIntoLong(boolean isPositive)
+    {
+        // Figure out if the result will fit in a long.  We have to
+        // first look for nonzero digits after the decimal point;
+        // then check the size.  If the digit count is 18 or less, then
+        // the value can definitely be represented as a long.  If it is 19
+        // then it may be too large.
+
+        // Trim trailing zeros.  This does not change the represented value.
+        while (count > 0 && digits[count - 1] == (byte)'0') --count;
+
+        if (count == 0) {
+            // Positive zero fits into a long, but negative zero can only
+            // be represented as a double. - bug 4162852
+            return isPositive;
+        }
+
+        if (decimalAt < count || decimalAt > MAX_LONG_DIGITS) return false;
+
+        if (decimalAt < MAX_LONG_DIGITS) return true;
+
+        // At this point we have decimalAt == count, and count == MAX_LONG_DIGITS.
+        // The number will overflow if it is larger than 9223372036854775807
+        // or smaller than -9223372036854775808.
+        for (int i=0; i<count; ++i)
+        {
+            byte dig = digits[i], max = LONG_MIN_REP[i];
+            if (dig > max) return false;
+            if (dig < max) return true;
+        }
+
+        // At this point the first count digits match.  If decimalAt is less
+        // than count, then the remaining digits are zero, and we return true.
+        if (count < decimalAt) return true;
+
+        // Now we have a representation of Long.MIN_VALUE, without the leading
+        // negative sign.  If this represents a positive value, then it does
+        // not fit; otherwise it fits.
+        return !isPositive;
+    }
+
+    /**
+     * Set the digit list to a representation of the given double value.
+     * This method supports fixed-point notation.
+     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+     * or a value <= 0.
+     * @param maximumFractionDigits The most fractional digits which should
+     * be converted.
+     */
+    public final void set(double source, int maximumFractionDigits)
+    {
+        set(source, maximumFractionDigits, true);
+    }
+
+    /**
+     * Set the digit list to a representation of the given double value.
+     * This method supports both fixed-point and exponential notation.
+     * @param source Value to be converted; must not be Inf, -Inf, Nan,
+     * or a value <= 0.
+     * @param maximumDigits The most fractional or total digits which should
+     * be converted.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    final void set(double source, int maximumDigits, boolean fixedPoint)
+    {
+        if (source == 0) source = 0;
+        // Generate a representation of the form DDDDD, DDDDD.DDDDD, or
+        // DDDDDE+/-DDDDD.
+        String rep = Double.toString(source);
+
+        decimalAt = -1;
+        count = 0;
+        int exponent = 0;
+        // Number of zeros between decimal point and first non-zero digit after
+        // decimal point, for numbers < 1.
+        int leadingZerosAfterDecimal = 0;
+        boolean nonZeroDigitSeen = false;
+        for (int i=0; i < rep.length(); ++i)
+        {
+            char c = rep.charAt(i);
+            if (c == '.')
+            {
+                decimalAt = count;
+            }
+            else if (c == 'e' || c == 'E')
+            {
+                exponent = Integer.valueOf(rep.substring(i+1)).intValue();
+                break;
+            }
+            else if (count < MAX_LONG_DIGITS)
+            {
+                if (!nonZeroDigitSeen)
+                {
+                    nonZeroDigitSeen = (c != '0');
+                    if (!nonZeroDigitSeen && decimalAt != -1) ++leadingZerosAfterDecimal;
+                }
+
+                if (nonZeroDigitSeen) digits[count++] = (byte)c;
+            }
+        }
+        if (decimalAt == -1) decimalAt = count;
+        decimalAt += exponent - leadingZerosAfterDecimal;
+
+        if (fixedPoint) {
+            // The negative of the exponent represents the number of leading
+            // zeros between the decimal and the first non-zero digit, for
+            // a value < 0.1 (e.g., for 0.00123, -decimalAt == 2).  If this
+            // is more than the maximum fraction digits, then we have an underflow
+            // for the printed representation.
+            if (-decimalAt > maximumDigits) {
+                count = 0;
+                return;
+            } else if (-decimalAt == maximumDigits) {
+                if (shouldRoundUp(0)) {
+                    count = 1;
+                    ++decimalAt;
+                    digits[0] = (byte)'1';
+                } else {
+                    count = 0;
+                }
+                return;
+            }
+            // else fall through
+        }
+
+        // Eliminate trailing zeros.
+        while (count > 1 && digits[count - 1] == '0')
+            --count;
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits);
+    }
+
+    /**
+     * Return true if truncating the representation to the given number
+     * of digits will result in an increment to the last digit.  This
+     * method implements half-even rounding, the default rounding mode.
+     * [bnf]
+     * @param maximumDigits the number of digits to keep, from 0 to
+     * <code>count-1</code>.  If 0, then all digits are rounded away, and
+     * this method returns true if a one should be generated (e.g., formatting
+     * 0.09 with "#.#").
+     * @return true if digit <code>maximumDigits-1</code> should be
+     * incremented
+     */
+    private boolean shouldRoundUp(int maximumDigits) {
+        boolean increment = false;
+        // Implement IEEE half-even rounding
+        if (digits[maximumDigits] > '5') {
+            return true;
+        } else if (digits[maximumDigits] == '5' ) {
+            for (int i=maximumDigits+1; i<count; ++i) {
+                if (digits[i] != '0') {
+                    return true;
+                }
+            }
+            return maximumDigits == 0 || (digits[maximumDigits-1] % 2 != 0);
+        }
+        return false;
+    }
+
+    /**
+     * Round the representation to the given number of digits.
+     * @param maximumDigits The maximum number of digits to be shown.
+     * Upon return, count will be less than or equal to maximumDigits.
+     */
+    public final void round(int maximumDigits) {        
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        // [bnf] rewritten to fix 4179818
+        if (maximumDigits > 0 && maximumDigits < count) {
+            if (shouldRoundUp(maximumDigits)) {
+                // Rounding up involved incrementing digits from LSD to MSD.
+                // In most cases this is simple, but in a worst case situation
+                // (9999..99) we have to adjust the decimalAt value.
+                for (;;)
+                {
+                    --maximumDigits;
+                    if (maximumDigits < 0)
+                    {
+                        // We have all 9's, so we increment to a single digit
+                        // of one and adjust the exponent.
+                        digits[0] = (byte) '1';
+                        ++decimalAt;
+                        maximumDigits = 0; // Adjust the count
+                        break;
+                    }
+
+                    ++digits[maximumDigits];
+                    if (digits[maximumDigits] <= '9') break;
+                    // digits[maximumDigits] = '0'; // Unnecessary since we'll truncate this
+                }
+                ++maximumDigits; // Increment for use as count
+            }
+            count = maximumDigits;
+        }
+    }
+
+    /**
+     * Utility routine to set the value of the digit list from a long
+     */
+    public final void set(long source)
+    {
+        set(source, 0);
+    }
+
+    /**
+     * Set the digit list to a representation of the given long value.
+     * @param source Value to be converted; must be >= 0 or ==
+     * Long.MIN_VALUE.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(long source, int maximumDigits)
+    {
+        // This method does not expect a negative number. However,
+        // "source" can be a Long.MIN_VALUE (-9223372036854775808),
+        // if the number being formatted is a Long.MIN_VALUE.  In that
+        // case, it will be formatted as -Long.MIN_VALUE, a number
+        // which is outside the legal range of a long, but which can
+        // be represented by DigitList.
+        // [NEW] Faster implementation
+        if (source <= 0) {
+            if (source == Long.MIN_VALUE) {
+                decimalAt = count = MAX_LONG_DIGITS;
+                System.arraycopy(LONG_MIN_REP, 0, digits, 0, count);
+            } else {
+                count = 0;
+                decimalAt = 0;
+            }
+        } else {
+            int left = MAX_LONG_DIGITS;
+            int right;
+            while (source > 0) {
+                digits[--left] = (byte) (((long) '0') + (source % 10));
+                source /= 10;
+            }
+            decimalAt = MAX_LONG_DIGITS-left;
+            // Don't copy trailing zeros
+            // we are guaranteed that there is at least one non-zero digit,
+            // so we don't have to check lower bounds
+            for (right = MAX_LONG_DIGITS - 1; digits[right] == (byte) '0'; --right) {}
+            count = right - left + 1;
+            System.arraycopy(digits, left, digits, 0, count);
+        }        
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Set the digit list to a representation of the given BigInteger value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     */
+    public final void set(BigInteger source, int maximumDigits) {
+        String stringDigits = source.toString();
+
+        count = decimalAt = stringDigits.length();
+
+        // Don't copy trailing zeros
+        while (count > 1 && stringDigits.charAt(count - 1) == '0') --count;
+
+        int offset = 0;
+        if (stringDigits.charAt(0) == '-') {
+            ++offset;
+            --count;
+            --decimalAt;
+        }
+
+        ensureCapacity(count, 0);
+        for (int i = 0; i < count; ++i) {
+            digits[i] = (byte) stringDigits.charAt(i + offset);
+        }
+
+        if (maximumDigits > 0) round(maximumDigits);
+    }
+
+    /**
+     * Internal method that sets this digit list to represent the
+     * given value.  The value is given as a String of the format
+     * returned by BigDecimal.
+     * @param stringDigits value to be represented with the following
+     * syntax, expressed as a regular expression: -?\d*.?\d*
+     * Must not be an empty string.
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    private void setBigDecimalDigits(String stringDigits,
+                                           int maximumDigits, boolean fixedPoint) {
+        // Find the first non-zero digit, the decimal, and the last non-zero digit.
+        int first=-1, last=stringDigits.length()-1, decimal=-1;
+        for (int i=0; (first<0 || decimal<0) && i<=last; ++i) {
+            char c = stringDigits.charAt(i);
+            if (c == '.') {
+                decimal = i;
+            } else if (first < 0 && (c >= '1' && c <= '9')) {
+                first = i;
+            }
+        }
+
+        if (first < 0) {
+            clear();
+            return;
+        }
+
+        // At this point we know there is at least one non-zero digit, so the
+        // following loop is safe.
+        for (;;) {
+            char c = stringDigits.charAt(last);
+            if (c != '0' && c != '.') {
+                break;
+            }
+            --last;
+        }
+
+        if (decimal < 0) {
+            decimal = stringDigits.length();
+        }
+
+        count = last - first;
+        if (decimal < first || decimal > last) {
+            ++count;
+        }
+        decimalAt = decimal - first;
+        if (decimalAt < 0) {
+            ++decimalAt;
+        }
+
+        ensureCapacity(count, 0);
+        for (int i = 0; i < count; ++i) {
+            digits[i] = (byte) stringDigits.charAt(first++);
+            if (first == decimal) {
+                ++first;
+            }
+        }
+
+        // Eliminate digits beyond maximum digits to be displayed.
+        // Round up if appropriate.
+        round(fixedPoint ? (maximumDigits + decimalAt) : maximumDigits);
+    }
+
+    /**
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     */
+    public final void set(java.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+
+    //This has been removed pending addition of com.ibm.math package to ICU4J
+    /*
+     * Set the digit list to a representation of the given BigDecimal value.
+     * [bnf]
+     * @param source Value to be converted
+     * @param maximumDigits The most digits which should be converted.
+     * If maximumDigits is lower than the number of significant digits
+     * in source, the representation will be rounded.  Ignored if <= 0.
+     * @param fixedPoint If true, then maximumDigits is the maximum
+     * fractional digits to be converted.  If false, total digits.
+     *
+    public final void set(com.ibm.math.BigDecimal source,
+                          int maximumDigits, boolean fixedPoint) {
+        setBigDecimalDigits(source.toString(), maximumDigits, fixedPoint);
+    }
+    */
+
+    /**
+     * equality test between two digit lists.
+     */
+    public boolean equals(Object obj) {
+        if (this == obj)                      // quick check
+            return true;
+        if (!(obj instanceof DigitList))         // (1) same object?
+            return false;
+        DigitList other = (DigitList) obj;
+        if (count != other.count ||
+        decimalAt != other.decimalAt)
+            return false;
+        for (int i = 0; i < count; i++)
+            if (digits[i] != other.digits[i])
+                return false;
+        return true;
+    }
+
+    /**
+     * Generates the hash code for the digit list.
+     */
+    public int hashCode() {
+        int hashcode = decimalAt;
+
+        for (int i = 0; i < count; i++)
+            hashcode = hashcode * 37 + digits[i];
+
+        return hashcode;
+    }
+
+    /**
+     * Returns true if this DigitList represents Long.MIN_VALUE;
+     * false, otherwise.  This is required so that getLong() works.
+     */
+    private boolean isLongMIN_VALUE()
+    {
+        if (decimalAt != count || count != MAX_LONG_DIGITS)
+            return false;
+
+            for (int i = 0; i < count; ++i)
+        {
+            if (digits[i] != LONG_MIN_REP[i]) return false;
+        }
+
+        return true;
+    }
+
+    private static byte[] LONG_MIN_REP;
+
+    static
+    {
+        // Store the representation of LONG_MIN without the leading '-'
+        String s = Long.toString(Long.MIN_VALUE);
+        LONG_MIN_REP = new byte[MAX_LONG_DIGITS];
+        for (int i=0; i < MAX_LONG_DIGITS; ++i)
+        {
+            LONG_MIN_REP[i] = (byte)s.charAt(i + 1);
+        }
+    }
+
+    /**
+     * Return the floor of the log base 10 of a given double.
+     * This method compensates for inaccuracies which arise naturally when
+     * computing logs, and always give the correct value.  The parameter
+     * must be positive and finite.
+     */
+    private static final int log10(double d)
+    {
+        // The reason this routine is needed is that simply taking the
+        // log and dividing by log10 yields a result which may be off
+        // by 1 due to rounding errors.  For example, the naive log10
+        // of 1.0e300 taken this way is 299, rather than 300.
+        double log10 = Math.log(d) / LOG10;
+        int ilog10 = (int)Math.floor(log10);
+        // Positive logs could be too small, e.g. 0.99 instead of 1.0
+        if (log10 > 0 && d >= Math.pow(10, ilog10 + 1))
+        {
+            ++ilog10;
+        }
+        // Negative logs could be too big, e.g. -0.99 instead of -1.0
+        else if (log10 < 0 && d < Math.pow(10, ilog10))
+        {
+            --ilog10;
+        }
+        return ilog10;
+    }
+
+    private static final double LOG10 = Math.log(10.0);
+
+    public String toString()
+    {
+        if (isZero()) return "0";
+        StringBuffer buf = new StringBuffer("0.");
+        for (int i=0; i<count; ++i) buf.append((char)digits[i]);
+        buf.append("x10^");
+        buf.append(decimalAt);
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/text/HangulJamoTransliterator.java b/src/com/ibm/text/HangulJamoTransliterator.java
new file mode 100755
index 0000000..371145b
--- /dev/null
+++ b/src/com/ibm/text/HangulJamoTransliterator.java
@@ -0,0 +1,86 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/HangulJamoTransliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:20 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+import java.util.*;
+
+/**
+ * A transliterator that converts Hangul to Jamo
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Mark Davis
+ * @version $RCSfile: HangulJamoTransliterator.java,v $ $Revision: 1.4 $ $Date: 2000/03/10 04:07:20 $
+ */
+public class HangulJamoTransliterator extends Transliterator {
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Package accessible ID for this transliterator.
+     */
+    static String _ID = "Hangul-Jamo";
+
+    /**
+     * Constructs a transliterator.
+     */
+    public HangulJamoTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        int cursor = offsets.cursor;
+        int limit = offsets.limit;
+
+        StringBuffer replacement = new StringBuffer();
+        while (cursor < limit) {
+            char c = filteredCharAt(text, cursor);
+            if (decomposeHangul(c, replacement)) {
+                text.replace(cursor, cursor+1, replacement.toString());
+                cursor += replacement.length(); // skip over replacement
+                limit += replacement.length() - 1; // fix up limit
+            } else {
+                ++cursor;
+            }
+        }
+
+        offsets.limit = limit;
+        offsets.cursor = cursor;
+    }
+
+
+    static final int 
+        SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
+        LCount = 19, VCount = 21, TCount = 28,
+        NCount = VCount * TCount,   // 588
+        SCount = LCount * NCount;   // 11172
+    
+    public static boolean decomposeHangul(char s, StringBuffer result) {
+        int SIndex = s - SBase;
+        if (0 > SIndex || SIndex >= SCount) {
+            return false;
+        }
+        int L = LBase + SIndex / NCount;
+        int V = VBase + (SIndex % NCount) / TCount;
+        int T = TBase + SIndex % TCount;
+        result.setLength(0);
+        result.append((char)L);
+        result.append((char)V);
+        if (T != TBase) result.append((char)T);
+        return true;
+    }
+    
+}
diff --git a/src/com/ibm/text/HexToUnicodeTransliterator.java b/src/com/ibm/text/HexToUnicodeTransliterator.java
new file mode 100755
index 0000000..05e5ef5
--- /dev/null
+++ b/src/com/ibm/text/HexToUnicodeTransliterator.java
@@ -0,0 +1,109 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/HexToUnicodeTransliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:20 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+import java.util.*;
+
+/**
+ * A transliterator that converts from hexadecimal Unicode
+ * escape sequences to the characters they represent.  For example, "U+0040"
+ * and '\u0040'.  It recognizes the
+ * prefixes "U+", "u+", "&#92;U", and "&#92;u".  Hex values may be
+ * upper- or lowercase.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: HexToUnicodeTransliterator.java,v $ $Revision: 1.4 $ $Date: 2000/03/10 04:07:20 $
+ */
+public class HexToUnicodeTransliterator extends Transliterator {
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Package accessible ID for this transliterator.
+     */
+    static String _ID = "Hex-Unicode";
+
+    /**
+     * Constructs a transliterator.
+     */
+    public HexToUnicodeTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        /**
+         * Performs transliteration changing Unicode hexadecimal
+         * escapes to characters.  For example, "U+0040" -> '@'.  A fixed
+         * set of prefixes is recognized: "&#92;u", "&#92;U", "u+", "U+". 
+         */
+        int cursor = offsets.cursor;
+        int limit = offsets.limit;
+
+        int maxCursor = limit - 6;
+    loop:
+        while (cursor <= maxCursor) {
+            char c = filteredCharAt(text, cursor + 5);
+            int digit0 = Character.digit(c, 16);
+            if (digit0 < 0) {
+                if (c == '\\') {
+                    cursor += 5;
+                } else if (c == 'U' || c == 'u' || c == '+') {
+                    cursor += 4;
+                } else {
+                    cursor += 6;
+                }
+                continue;
+            }
+
+            int u = digit0;
+
+            for (int i=4; i>=2; --i) {
+                c = filteredCharAt(text, cursor + i);
+                int digit = Character.digit(c, 16);
+                if (digit < 0) {
+                    if (c == 'U' || c == 'u' || c == '+') {
+                        cursor += i-1;
+                    } else {
+                        cursor += 6;
+                    }
+                    continue loop;
+                }
+                u |= digit << (4 * (5-i));
+            }
+
+            c = filteredCharAt(text, cursor);
+            char d = filteredCharAt(text, cursor + 1);
+            if (((c == 'U' || c == 'u') && d == '+')
+                || (c == '\\' && (d == 'U' || d == 'u'))) {
+                
+                // At this point, we have a match; replace cursor..cursor+5
+                // with u.
+                text.replace(cursor, cursor+6, String.valueOf((char) u));
+                limit -= 5;
+                maxCursor -= 5;
+
+                ++cursor;
+            } else {
+                cursor += 6;
+            }
+        }
+
+        offsets.limit = limit;
+        offsets.cursor = cursor;
+    }
+}
diff --git a/src/com/ibm/text/JamoHangulTransliterator.java b/src/com/ibm/text/JamoHangulTransliterator.java
new file mode 100755
index 0000000..d73abd5
--- /dev/null
+++ b/src/com/ibm/text/JamoHangulTransliterator.java
@@ -0,0 +1,134 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/JamoHangulTransliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:20 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+import java.util.*;
+
+/**
+ * A transliterator that converts Jamo to Hangul
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Mark Davis
+ */
+public class JamoHangulTransliterator extends Transliterator {
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Package accessible ID for this transliterator.
+     */
+    static String _ID = "Jamo-Hangul";
+
+    /**
+     * Constructs a transliterator.
+     */
+    public JamoHangulTransliterator() {
+        super(_ID, null);
+        setMaximumContextLength(3);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        /**
+         * Performs transliteration changing Jamo to Hangul 
+         */
+        int cursor = offsets.cursor;
+        int limit = offsets.limit;
+        if (cursor >= limit) return;
+        
+        int count[] = new int[1];
+
+        char last = filteredCharAt(text, cursor++);
+        while (cursor <= limit) {
+            char next = 0xFFFF; // go over end of string, just in case
+            if (cursor < limit) next = filteredCharAt(text, cursor);
+            char replacement = composeHangul(last, next, count);
+            if (replacement != last) {
+                text.replace(cursor-1, cursor-1 + count[0], String.valueOf(replacement));
+                limit = limit - count[0] + 1; // fix up limit 2 => -1, 1 => 0
+                last = replacement;
+                if (next == 0xFFFF) break;
+                // don't change cursor, so we revisit char
+            } else {
+                ++cursor;
+                last = next;
+            }
+        }
+        
+        offsets.limit = limit + 1;
+        offsets.cursor = cursor;
+    }
+    
+
+    static final int 
+        SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7,
+        LCount = 19, VCount = 21, TCount = 28,
+        NCount = VCount * TCount,   // 588
+        SCount = LCount * NCount,   // 11172
+        LLimit = 0x1200;
+   
+   /**
+    * Return composed character (if it is a modern jamo)
+    * last otherwise.
+    * If there is a replacement, returns count[0] = 2 if ch was used, 1 otherwise
+    */
+   public static char composeHangul(char last, char ch, int[] count) {
+      count[0] = 2; // default is replace 2 chars
+      // check to see if two current characters are L and V
+      int LIndex = last - LBase;
+      if (0 <= LIndex && LIndex < LCount) {
+          int VIndex = ch - VBase;
+          if (0 <= VIndex && VIndex < VCount) {
+              // make syllable of form LV
+              return (char)(SBase + (LIndex * VCount + VIndex) * TCount);
+          } else {
+            // it is isolated, so fix!
+            count[0] = 1; // not using ch
+            return (char)(SBase + (LIndex * VCount) * TCount);
+          }
+      }
+      
+      // if neither case was true, see if we have an isolated Jamo we need to fix
+      if (LBase <= last && last < LLimit) {
+        // need to fix: it is either medial or final!
+        int VIndex = last - VBase;
+        if (0 <= VIndex && VIndex < VCount) {
+            LIndex = 0x110B - LBase; // use empty consonant
+            // make syllable of form LV
+            count[0] = 1; // not using ch
+            return (char)(SBase + (LIndex * VCount + VIndex) * TCount);
+        }
+        // ok, see if final. Use null consonant + a + final
+        int TIndex = last - TBase;
+        if (0 <= TIndex && TIndex <= TCount) {  // need to fix!
+            count[0] = 1; // not using ch
+            return (char)(0xC544 + TIndex);
+        }
+      }
+ 
+      // check to see if two current characters are LV and T
+      int SIndex = last - SBase;
+      if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0) {
+          int TIndex = ch - TBase;
+          if (0 <= TIndex && TIndex <= TCount) {
+              // make syllable of form LVT
+              return (char)(last + TIndex);
+          }
+      }
+      
+      return last;
+    }    
+}
diff --git a/src/com/ibm/text/NFRule.java b/src/com/ibm/text/NFRule.java
new file mode 100755
index 0000000..94579de
--- /dev/null
+++ b/src/com/ibm/text/NFRule.java
@@ -0,0 +1,1320 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/NFRule.java,v $ 
+ * $Date: 2000/03/10 04:07:21 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.text.*;
+
+/**
+ * A class represnting a single rule in a RuleBasedNumberFormat.  A rule
+ * inserts its text into the result string and then passes control to its
+ * substitutions, which do the same thing.
+ * $RCSfile: NFRule.java,v $ $Revision: 1.2 $ $Date: 2000/03/10 04:07:21 $
+ */
+final class NFRule {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /**
+     * Special base value used to identify a negative-number rule
+     */
+    public static final int NEGATIVE_NUMBER_RULE = -1;
+
+    /**
+     * Special base value used to identify an improper fraction (x.x) rule
+     */
+    public static final int IMPROPER_FRACTION_RULE = -2;
+
+    /**
+     * Special base value used to identify a proper fraction (0.x) rule
+     */
+    public static final int PROPER_FRACTION_RULE = -3;
+
+    /**
+     * Special base value used to identify a master rule
+     */
+    public static final int MASTER_RULE = -4;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule's base value
+     */
+    private long baseValue;
+
+    /**
+     * The rule's radix (the radix to the power of the exponent equals
+     * the rule's divisor)
+     */
+    private short radix = 10;
+
+    /**
+     * The rule's exponent (the radx rased to the power of the exponsnt
+     * equals the rule's divisor)
+     */
+    private short exponent = 0;
+
+    /**
+     * The rule's rule text.  When formatting a number, the rule's text
+     * is inserted into the result string, and then the text from any
+     * substitutions is inserted into the result string
+     */
+    private String ruleText = null;
+
+    /**
+     * The rule's first substitution (the one with the lower offset
+     * into the rule text)
+     */
+    private NFSubstitution sub1 = null;
+
+    /**
+     * The rule's second substitution (the one with the higher offset
+     * into the rule text)
+     */
+    private NFSubstitution sub2 = null;
+
+    /**
+     * The RuleBasedNumberFormat that owns this rule
+     */
+    private RuleBasedNumberFormat formatter = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates one or more rules based on the description passed in.
+     * @param description The description of the rule(s).
+     * @param owner The rule set containing the new rule(s).
+     * @param predecessor The rule that precedes the new one(s) in "owner"'s
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns the
+     * rule set that owns the new rule(s)
+     * @return An instance of NFRule, or an array of NFRules
+     */
+    public static Object makeRules(String                description,
+                                   NFRuleSet             owner,
+                                   NFRule                predecessor,
+                                   RuleBasedNumberFormat ownersOwner) {
+        // we know we're making at least one rule, so go ahead and
+        // new it up and initialize its basevalue and divisor
+        // (this also strips the rule descriptor, if any, off the
+        // descripton string)
+        NFRule rule1 = new NFRule(ownersOwner);
+        description = rule1.parseRuleDescriptor(description);
+
+        // check the description to see whether there's text enclosed
+        // in brackets
+        int brack1 = description.indexOf("[");
+        int brack2 = description.indexOf("]");
+
+        // if the description doesn't contain a matched pair of brackets,
+        // or if it's of a type that doesn't recognize bracketed text,
+        // then leave the description alone, initialize the rule's
+        // rule text and substitutions, and return that rule
+        if (brack1 == -1 || brack2 == -1 || brack1 > brack2
+                            || rule1.getBaseValue() == PROPER_FRACTION_RULE
+                            || rule1.getBaseValue() == NEGATIVE_NUMBER_RULE) {
+            rule1.ruleText = description;
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+            return rule1;
+        } else {
+            // if the description does contain a matched pair of brackets,
+            // then it's really shorthand for two rules (with one exception)
+            NFRule rule2 = null;
+            StringBuffer sbuf = new StringBuffer();
+
+            // we'll actually only split the rule into two rules if its
+            // base value is an even multiple of its divisor (or it's one
+            // of the special rules)
+            if ((rule1.baseValue > 0
+                    && rule1.baseValue % (Math.pow(rule1.radix, rule1.exponent)) == 0)
+                    || rule1.baseValue == IMPROPER_FRACTION_RULE
+                    || rule1.baseValue == MASTER_RULE) {
+
+                // if it passes that test, new up the second rule.  If the
+                // rule set both rules will belong to is a fraction rule
+                // set, they both have the same base value; otherwise,
+                // increment the original rule's base value ("rule1" actually
+                // goes SECOND in the rule set's rule list)
+                rule2 = new NFRule(ownersOwner);
+                if (rule1.baseValue >= 0) {
+                    rule2.baseValue = rule1.baseValue;
+                    if (!owner.isFractionSet()) {
+                        ++rule1.baseValue;
+                    }
+                }
+
+                // if the description began with "x.x" and contains bracketed
+                // text, it describes both the improper fraction rule and
+                // the proper fraction rule
+                else if (rule1.baseValue == IMPROPER_FRACTION_RULE) {
+                    rule2.baseValue = PROPER_FRACTION_RULE;
+                }
+
+                // if the description began with "x.0" and contains bracketed
+                // text, it describes both the master rule and the
+                // improper fraction rule
+                else if (rule1.baseValue == MASTER_RULE) {
+                    rule2.baseValue = rule1.baseValue;
+                    rule1.baseValue = IMPROPER_FRACTION_RULE;
+                }
+
+                // both rules have the same radix and exponent (i.e., the
+                // same divisor)
+                rule2.radix = rule1.radix;
+                rule2.exponent = rule1.exponent;
+
+                // rule2's rule text omits the stuff in brackets: initalize
+                // its rule text and substitutions accordingly
+                sbuf.append(description.substring(0, brack1));
+                if (brack2 + 1 < description.length()) {
+                    sbuf.append(description.substring(brack2 + 1));
+                }
+                rule2.ruleText = sbuf.toString();
+                rule2.extractSubstitutions(owner, predecessor, ownersOwner);
+            }
+
+            // rule1's text includes the text in the brackets but omits
+            // the brackets themselves: initialize _its_ rule text and
+            // substitutions accordingly
+            sbuf.setLength(0);
+            sbuf.append(description.substring(0, brack1));
+            sbuf.append(description.substring(brack1 + 1, brack2));
+            if (brack2 + 1 < description.length()) {
+                sbuf.append(description.substring(brack2 + 1));
+            }
+            rule1.ruleText = sbuf.toString();
+            rule1.extractSubstitutions(owner, predecessor, ownersOwner);
+
+            // if we only have one rule, return it; if we have two, return
+            // a two-element array containing them (notice that rule2 goes
+            // BEFORE rule1 in the list: in all cases, rule2 OMITS the
+            // material in the brackets and rule1 INCLUDES the material
+            // in the brackets)
+            if (rule2 == null) {
+                return rule1;
+            } else {
+                return new NFRule[] { rule2, rule1 };
+            }
+        }
+    }
+
+    /**
+     * Nominal constructor for NFRule.  Most of the work of constructing
+     * an NFRule is actually performed by makeRules().
+     */
+    public NFRule(RuleBasedNumberFormat formatter) {
+        this.formatter = formatter;
+    }
+
+    /**
+     * This function parses the rule's rule descriptor (i.e., the base
+     * value and/or other tokens that precede the rule's rule text
+     * in the description) and sets the rule's base value, radix, and
+     * exponent according to the descriptor.  (If the description doesn't
+     * include a rule descriptor, then this function sets everything to
+     * default values and the rule set sets the rule's real base value).
+     * @param description The rule's description
+     * @return If "description" included a rule descriptor, this is
+     * "description" with the descriptor and any trailing whitespace
+     * stripped off.  Otherwise; it's "descriptor" unchangd.
+     */
+    private String parseRuleDescriptor(String description) {
+        String descriptor;
+
+        // the description consists of a rule descriptor and a rule body,
+        // separated by a colon.  The rule descriptor is optional.  If
+        // it's omitted, just set the base value to 0.
+        int p = description.indexOf(":");
+        if (p == -1) {
+            setBaseValue(0);
+        } else {
+            // copy the descriptor out into its own string and strip it,
+            // along with any trailing whitespace, out of the original
+            // description
+            descriptor = description.substring(0, p);
+            ++p;
+            while (p < description.length() && Character.isWhitespace(description.charAt(p)))
+                ++p;
+            description = description.substring(p);
+
+            // check first to see if the rule descriptor matches the token
+            // for one of the special rules.  If it does, set the base
+            // value to the correct identfier value
+            if (descriptor.equals("-x")) {
+                setBaseValue(NEGATIVE_NUMBER_RULE);
+            }
+            else if (descriptor.equals("x.x")) {
+                setBaseValue(IMPROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("0.x")) {
+                setBaseValue(PROPER_FRACTION_RULE);
+            }
+            else if (descriptor.equals("x.0")) {
+                setBaseValue(MASTER_RULE);
+            }
+
+            // if the rule descriptor begins with a digit, it's a descriptor
+            // for a normal rule
+            else if (descriptor.charAt(0) >= '0' && descriptor.charAt(0) <= '9') {
+                StringBuffer tempValue = new StringBuffer();
+                p = 0;
+                char c = ' ';
+
+                // begin parsing the descriptor: copy digits
+                // into "tempValue", skip periods, commas, and spaces,
+                // stop on a slash or > sign (or at the end of the string),
+                // and throw an exception on any other character
+                while (p < descriptor.length()) {
+                    c = descriptor.charAt(p);
+                    if (c >= '0' && c <= '9') {
+                        tempValue.append(c);
+                    }
+                    else if (c == '/' || c == '>') {
+                        break;
+                    }
+                    else if (Character.isWhitespace(c) || c == ',' || c == '.') {
+                    }
+                    else {
+                        throw new IllegalArgumentException("Illegal character in rule descriptor");
+                    }
+                    ++p;
+                }
+
+                // tempValue now contains a string representation of the
+                // rule's base value with the punctuation stripped out.
+                // Set the rule's base value accordingly
+                setBaseValue(Long.parseLong(tempValue.toString()));
+
+                // if we stopped the previous loop on a slash, we're
+                // now parsing the rule's radix.  Again, accumulate digits
+                // in tempValue, skip punctuation, stop on a > mark, and
+                // throw an exception on anything else
+                if (c == '/') {
+                    tempValue.setLength(0);
+                    ++p;
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c >= '0' && c <= '9') {
+                            tempValue.append(c);
+                        }
+                        else if (c == '>') {
+                            break;
+                        }
+                        else if (Character.isWhitespace(c) || c == ',' || c == '.') {
+                        }
+                        else {
+                            throw new IllegalArgumentException("Illegal character is rule descriptor");
+                        }
+                        ++p;
+                    }
+
+                    // tempValue now contain's the rule's radix.  Set it
+                    // accordingly, and recalculate the rule's exponent
+                    radix = Short.parseShort(tempValue.toString());
+                    if (radix == 0) {
+                        throw new IllegalArgumentException("Rule can't have radix of 0");
+                    }
+                    exponent = expectedExponent();
+                }
+
+                // if we stopped the previous loop on a > sign, then continue
+                // for as long as we still see > signs.  For each one,
+                // decrement the exponent (unless the exponent is already 0).
+                // If we see another character before reaching the end of
+                // the descriptor, that's also a syntax error.
+                if (c == '>') {
+                    while (p < descriptor.length()) {
+                        c = descriptor.charAt(p);
+                        if (c == '>' && exponent > 0) {
+                            --exponent;
+                        } else {
+                            throw new IllegalArgumentException("Illegal character in rule descriptor");
+                        }
+                        ++p;
+                    }
+                }
+            }
+        }
+
+        // finally, if the rule body begins with an apostrophe, strip it off
+        // (this is generally used to put whitespace at the beginning of
+        // a rule's rule text)
+        if (description.length() > 0 && description.charAt(0) == '\'') {
+            description = description.substring(1);
+        }
+
+        // return the description with all the stuff we've just waded through
+        // stripped off the front.  It now contains just the rule body.
+        return description;
+    }
+
+    /**
+     * Searches the rule's rule text for the substitution tokens,
+     * creates the substitutions, and removes the substitution tokens
+     * from the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preseding this one in "owners" rule list
+     * @param ownersOwner The RuleBasedFormat that owns this rule
+     */
+    private void extractSubstitutions(NFRuleSet             owner,
+                                      NFRule                predecessor,
+                                      RuleBasedNumberFormat ownersOwner) {
+        sub1 = extractSubstitution(owner, predecessor, ownersOwner);
+        sub2 = extractSubstitution(owner, predecessor, ownersOwner);
+    }
+
+    /**
+     * Searches the rule's rule text for the first substitution token,
+     * creates a substitution based on it, and removes the token from
+     * the rule's rule text.
+     * @param owner The rule set containing this rule
+     * @param predecessor The rule preceding this one in the rule set's
+     * rule list
+     * @param ownersOwner The RuleBasedNumberFormat that owns this rule
+     * @return The newly-created substitution.  This is never null; if
+     * the rule text doesn't contain any substitution tokens, this will
+     * be a NullSubstitution.
+     */
+    private NFSubstitution extractSubstitution(NFRuleSet             owner,
+                                               NFRule                predecessor,
+                                               RuleBasedNumberFormat ownersOwner) {
+        NFSubstitution result = null;
+        int subStart;
+        int subEnd;
+
+        // search the rule's rule text for the first two characters of
+        // a substitution token
+        subStart = indexOfAny(new String[] { "<<", "<%", "<#", "<0",
+                                             ">>", ">%", ">#", ">0",
+                                             "=%", "=#", "=0" } );
+
+        // if we didn't find one, create a null substitution positioned
+        // at the end of the rule text
+        if (subStart == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                            owner, ownersOwner, "");
+        }
+
+        // special-case the ">>>" token, since searching for the > at the
+        // end will actually find the > in the middle
+        if (ruleText.substring(subStart).startsWith(">>>")) {
+            subEnd = subStart + 2;
+
+        // otherwise the substitution token ends with the same character
+        // it began with
+        } else {
+            subEnd = ruleText.indexOf(ruleText.charAt(subStart), subStart + 1);
+        }
+
+        // if we don't find the end of the token (i.e., if we're on a single,
+        // unmatched token character), create a null substitution positioned
+        // at the end of the rule
+        if (subEnd == -1) {
+            return NFSubstitution.makeSubstitution(ruleText.length(), this, predecessor,
+                            owner, ownersOwner, "");
+        }
+
+        // if we get here, we have a real substitution token (or at least
+        // some text bounded by substitution token characters).  Use
+        // makeSubstitution() to create the right kind of substitution
+        result = NFSubstitution.makeSubstitution(subStart, this, predecessor, owner,
+                        ownersOwner, ruleText.substring(subStart, subEnd + 1));
+
+        // remove the substitution from the rule text
+        ruleText = ruleText.substring(0, subStart) + ruleText.substring(subEnd + 1);
+        return result;
+    }
+
+    /**
+     * Sets the rule's base value, and causes the radix and exponent
+     * to be recalculated.  This is used during construction when we
+     * don't know the rule's base value until after it's been
+     * constructed.  It should be used at any other time.
+     * @param The new base value for the rule.
+     */
+    public final void setBaseValue(long newBaseValue) {
+        // set the base value
+        baseValue = newBaseValue;
+
+        // if this isn't a special rule, recalculate the radix and exponent
+        // (the radix always defaults to 10; if it's supposed to be something
+        // else, it's cleaned up by the caller and the exponent is
+        // recalculated again-- the only function that does this is
+        // NFRule.parseRuleDescriptor() )
+        if (baseValue >= 1) {
+            radix = 10;
+            exponent = expectedExponent();
+
+            // this function gets called on a fully-constructed rule whose
+            // description didn't specify a base value.  This means it
+            // has substitutions, and some substitutions hold on to copies
+            // of the rule's divisor.  Fix their copies of the divisor.
+            if (sub1 != null) {
+                sub1.setDivisor(radix, exponent);
+            }
+            if (sub2 != null) {
+                sub2.setDivisor(radix, exponent);
+            }
+
+        // if this is a special rule, its radix and exponent are basically
+        // ignored.  Set them to "safe" default values
+        } else {
+            radix = 10;
+            exponent = 0;
+        }
+    }
+
+    /**
+     * This calculates the rule's exponent based on its radix and base
+     * value.  This will be the highest power the radix can be raised to
+     * and still produce a result less than or equal to the base value.
+     */
+    private short expectedExponent() {
+        // since the log of 0, or the log base 0 of something, causes an
+        // error, declare the exponent in these cases to be 0 (we also
+        // deal with the special-rule identifiers here)
+        if (radix == 0 || baseValue < 1) {
+            return 0;
+        }
+
+        // we get rounding error in some cases-- for example, log 1000 / log 10
+        // gives us 1.9999999996 instead of 2.  The extra logic here is to take
+        // that into account
+        short tempResult = (short)(Math.log(baseValue) / Math.log(radix));
+        if (Math.pow(radix, tempResult + 1) <= baseValue) {
+            return (short)(tempResult + 1);
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Searches the rule's rule text for any of the specified strings.
+     * @param strings An array of strings to search the rule's rule
+     * text for
+     * @return The index of the first match in the rule's rule text
+     * (i.e., the first substring in the rule's rule text that matches
+     * _any_ of the strings in "strings").  If none of the strings in
+     * "strings" is found in the rule's rule text, returns -1.
+     */
+    private int indexOfAny(String[] strings) {
+        int pos;
+        int result = -1;
+        for (int i = 0; i < strings.length; i++) {
+            pos = ruleText.indexOf(strings[i]);
+            if (pos != -1 && (result == -1 || pos < result)) {
+                result = pos;
+            }
+        }
+        return result;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two rules for equality.
+     * @param that The rule to compare this one against
+     * @return True is the two rules are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (that instanceof NFRule) {
+            NFRule that2 = (NFRule)that;
+
+            return baseValue == that2.baseValue
+                   && radix == that2.radix
+                   && exponent == that2.exponent
+                   && ruleText.equals(that2.ruleText)
+                   && sub1.equals(that2.sub1)
+                   && sub2.equals(that2.sub2);
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Returns a textual representation of the rule.  This won't
+     * necessarily be the same as the description that this rule
+     * was created with, but it will produce the same result.
+     * @return A textual description of the rule
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // start with the rule descriptor.  Special-case the special rules
+        if (baseValue == NEGATIVE_NUMBER_RULE) {
+            result.append("-x: ");
+        }
+        else if (baseValue == IMPROPER_FRACTION_RULE) {
+            result.append("x.x: ");
+        }
+        else if (baseValue == PROPER_FRACTION_RULE) {
+            result.append("0.x: ");
+        }
+        else if (baseValue == MASTER_RULE) {
+            result.append("x.0: ");
+        }
+
+        // for a normal rule, write out its base value, and if the radix is
+        // something other than 10, write out the radix (with the preceding
+        // slash, of course).  Then calculate the expected exponent and if
+        // if isn't the same as the actual exponent, write an appropriate
+        // number of > signs.  Finally, terminate the whole thing with
+        // a colon.
+        else {
+            result.append(String.valueOf(baseValue));
+            if (radix != 10) {
+                result.append('/');
+                result.append(String.valueOf(radix));
+            }
+            int numCarets = expectedExponent() - exponent;
+            for (int i = 0; i < numCarets; i++)
+                result.append('>');
+            result.append(": ");
+        }
+
+        // if the rule text begins with a space, write an apostrophe
+        // (whitespace after the rule descriptor is ignored; the
+        // apostrophe is used to make the whitespace significant)
+        if (ruleText.startsWith(" ") && (sub1 == null || sub1.getPos() != 0)) {
+            result.append("\'");
+        }
+
+        // now, write the rule's rule text, inserting appropriate
+        // substitution tokens in the appropriate places
+        StringBuffer ruleTextCopy = new StringBuffer(ruleText);
+        ruleTextCopy.insert(sub2.getPos(), sub2.toString());
+        ruleTextCopy.insert(sub1.getPos(), sub1.toString());
+        result.append(ruleTextCopy);
+
+        // and finally, top the whole thing off with a semicolon and
+        // return the result
+        result.append(';');
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the rule's base value
+     * @return The rule's base value
+     */
+    public final long getBaseValue() {
+        return baseValue;
+    }
+
+    /**
+     * Returns the rule's divisor (the value that cotrols the behavior
+     * of its substitutions)
+     * @return The rule's divisor
+     */
+    public double getDivisor() {
+        return Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(long number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto (notice we do the
+        // substitutions in reverse order so that the offsets don't get
+        // messed up)
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Formats the number, and inserts the resulting text into
+     * toInsertInto.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the resultant text should
+     * be inserted
+     * @param pos The position in toInsertInto where the resultant text
+     * should be inserted
+     */
+    public void doFormat(double number, StringBuffer toInsertInto, int pos) {
+        // first, insert the rule's rule text into toInsertInto at the
+        // specified position, then insert the results of the substitutions
+        // into the right places in toInsertInto
+        // [again, we have two copies of this routine that do the same thing
+        // so that we don't sacrifice precision in a long by casting it
+        // to a double]
+        toInsertInto.insert(pos, ruleText);
+        sub2.doSubstitution(number, toInsertInto, pos);
+        sub1.doSubstitution(number, toInsertInto, pos);
+    }
+
+    /**
+     * Used by the owning rule set to determine whether to invoke the
+     * rollback rule (i.e., whether this rule or the one that precedes
+     * it in the rule set's list should be used to format the number)
+     * @param The number being formatted
+     * @return True if the rule set should use the rule that precedes
+     * this one in its list; false if it should use this rule
+     */
+    public boolean shouldRollBack(double number) {
+        // we roll back if the rule contains a modulus substitution,
+        // the number being formatted is an even multiple of the rule's
+        // divisor, and the rule's base value is NOT an even multiple
+        // of its divisor
+        // In other words, if the original description had
+        //    100: << hundred[ >>];
+        // that expands into
+        //    100: << hundred;
+        //    101: << hundred >>;
+        // internally.  But when we're formatting 200, if we use the rule
+        // at 101, which would normally apply, we get "two hundred zero".
+        // To prevent this, we roll back and use the rule at 100 instead.
+        // This is the logic that makes this happen: the rule at 101 has
+        // a modulus substitution, its base value isn't an even multiple
+        // of 100, and the value we're trying to format _is_ an even
+        // multiple of 100.  This is called the "rollback rule."
+        if ((sub1.isModulusSubstitution()) || (sub2.isModulusSubstitution())) {
+            return (number % Math.pow(radix, exponent)) == 0
+                            && (baseValue % Math.pow(radix, exponent)) != 0;
+        }
+        return false;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Attempts to parse the string with this rule.
+     * @param text The string being parsed
+     * @param parsePosition On entry, the value is ignored and assumed to
+     * be 0. On exit, this has been updated with the position of the first
+     * character not consumed by matching the text against this rule
+     * (if this rule doesn't match the text at all, the parse position
+     * if left unchanged (presumably at 0) and the function returns
+     * new Long(0)).
+     * @param isFractionRule True if this rule is contained within a
+     * fraction rule set.  This is only used if the rule has no
+     * substitutions.
+     * @return If this rule matched the text, this is the rule's base value
+     * combined appropriately with the results of parsing the substitutions.
+     * If nothing matched, this is new Long(0) and the parse position is
+     * left unchanged.  The result will be an instance of Long if the
+     * result is an integer and Double otherwise.  The result is never null.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, boolean isFractionRule,
+                        double upperBound) {
+
+        // internally we operate on a copy of the string being parsed
+        // (because we're going to change it) and use our own ParsePosition
+        ParsePosition pp = new ParsePosition(0);
+        String workText = new String(text);
+
+        // check to see whether the text before the first substitution
+        // matches the text at the beginning of the string being
+        // parsed.  If it does, strip that off the front of workText;
+        // otherwise, dump out with a mismatch
+        workText = stripPrefix(workText, ruleText.substring(0, sub1.getPos()), pp);
+        int prefixLength = text.length() - workText.length();
+
+        if (pp.getIndex() == 0 && sub1.getPos() != 0) {
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                parsePosition.setErrorIndex(pp.getErrorIndex());
+            return new Long(0);
+        }
+
+        // this is the fun part.  The basic guts of the rule-matching
+        // logic is matchToDelimiter(), which is called twice.  The first
+        // time it searches the input string for the rule text BETWEEN
+        // the substitutions and tries to match the intervening text
+        // in the input string with the first substitution.  If that
+        // succeeds, it then calls it again, this time to look for the
+        // rule text after the second substitution and to match the
+        // intervening input text against the second substitution.
+        //
+        // For example, say we have a rule that looks like this:
+        //    first << middle >> last;
+        // and input text that looks like this:
+        //    first one middle two last
+        // First we use stripPrefix() to match "first " in both places and
+        // strip it off the front, leaving
+        //    one middle two last
+        // Then we use matchToDelimiter() to match " middle " and try to
+        // match "one" against a substitution.  If it's successful, we now
+        // have
+        //    two last
+        // We use matchToDelimiter() a second time to match " last" and
+        // try to match "two" against a substitution.  If "two" matches
+        // the substitution, we have a successful parse.
+        //
+        // Since it's possible in many cases to find multiple instances
+        // of each of these pieces of rule text in the input string,
+        // we need to try all the possible combinations of these
+        // locations.  This prevents us from prematurely declaring a mismatch,
+        // and makes sure we match as much input text as we can.
+        int highWaterMark = 0;
+        double result = 0;
+        int start = 0;
+        double tempBaseValue = Math.max(0, baseValue);
+
+        do {
+            // our partial parse result starts out as this rule's base
+            // value.  If it finds a successful match, matchToDelimiter()
+            // will compose this in some way with what it gets back from
+            // the substitution, giving us a new partial parse result
+            pp.setIndex(0);
+            double partialResult = matchToDelimiter(workText, start, tempBaseValue,
+                            ruleText.substring(sub1.getPos(), sub2.getPos()), pp, sub1,
+                            upperBound).doubleValue();
+
+            // if we got a successful match (or were trying to match a
+            // null substitution), pp is now pointing at the first unmatched
+            // character.  Take note of that, and try matchToDelimiter()
+            // on the input text again
+            if (pp.getIndex() != 0 || sub1.isNullSubstitution()) {
+                start = pp.getIndex();
+
+                String workText2 = workText.substring(pp.getIndex());
+                ParsePosition pp2 = new ParsePosition(0);
+
+                // the second matchToDelimiter() will compose our previous
+                // partial result with whatever it gets back from its
+                // substitution if there's a successful match, giving us
+                // a real result
+                partialResult = matchToDelimiter(workText2, 0, partialResult,
+                                ruleText.substring(sub2.getPos()), pp2, sub2,
+                                upperBound).doubleValue();
+
+                // if we got a successful match on this second
+                // matchToDelimiter() call, update the high-water mark
+                // and result (if necessary)
+                if (pp2.getIndex() != 0 || sub2.isNullSubstitution()) {
+                    if (prefixLength + pp.getIndex() + pp2.getIndex() > highWaterMark) {
+                        highWaterMark = prefixLength + pp.getIndex() + pp2.getIndex();
+                        result = partialResult;
+                    }
+                }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                    else {
+//                        int temp = pp2.getErrorIndex() + sub1.getPos() + pp.getIndex();
+//                        if (temp> parsePosition.getErrorIndex()) {
+//                            parsePosition.setErrorIndex(temp);
+//                        }
+//                    }
+            }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                else {
+//                    int temp = sub1.getPos() + pp.getErrorIndex();
+//                    if (temp > parsePosition.getErrorIndex()) {
+//                        parsePosition.setErrorIndex(temp);
+//                    }
+//                }
+        // keep trying to match things until the outer matchToDelimiter()
+        // call fails to make a match (each time, it picks up where it
+        // left off the previous time)
+        } while (sub1.getPos() != sub2.getPos() && pp.getIndex() > 0 && pp.getIndex()
+                            < workText.length() && pp.getIndex() != start);
+
+        // update the caller's ParsePosition with our high-water mark
+        // (i.e., it now points at the first character this function
+        // didn't match-- the ParsePosition is therefore unchanged if
+        // we didn't match anything)
+        parsePosition.setIndex(highWaterMark);
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//        if (highWaterMark > 0) {
+//            parsePosition.setErrorIndex(0);
+//        }
+
+        // this is a hack for one unusual condition: Normally, whether this
+        // rule belong to a fraction rule set or not is handled by its
+        // substitutions.  But if that rule HAS NO substitutions, then
+        // we have to account for it here.  By definition, if the matching
+        // rule in a fraction rule set has no substitutions, its numerator
+        // is 1, and so the result is the reciprocal of its base value.
+        if (isFractionRule && highWaterMark > 0 && sub1.isNullSubstitution()) {
+            result = 1 / result;
+        }
+
+        // return the result as a Long if possible, or as a Double
+        if (result == (long)result) {
+            return new Long((long)result);
+        } else {
+            return new Double(result);
+        }
+    }
+
+    /**
+     * This function is used by parse() to match the text being parsed
+     * against a possible prefix string.  This function
+     * matches characters from the beginning of the string being parsed
+     * to characters from the prospective prefix.  If they match, pp is
+     * updated to the first character not matched, and the result is
+     * the unparsed part of the string.  If they don't match, the whole
+     * string is returned, and pp is left unchanged.
+     * @param text The string being parsed
+     * @param prefix The text to match against
+     * @param pp On entry, ignored and assumed to be 0.  On exit, points
+     * to the first unmatched character (assuming the whole prefix matched),
+     * or is unchanged (if the whole prefix didn't match).
+     * @return If things match, this is the unparsed part of "text";
+     * if they didn't match, this is "text".
+     */
+    private String stripPrefix(String text, String prefix, ParsePosition pp) {
+        // if the prefix text is empty, dump out without doing anything
+        if (prefix.length() == 0) {
+            return text;
+        } else {
+            // otherwise, use prefixLength() to match the beginning of
+            // "text" against "prefix".  This function returns the
+            // number of characters from "text" that matched (or 0 if
+            // we didn't match the whole prefix)
+            int pfl = prefixLength(text, prefix);
+            if (pfl != 0) {
+                // if we got a successful match, update the parse position
+                // and strip the prefix off of "text"
+                pp.setIndex(pp.getIndex() + pfl);
+                return text.substring(pfl);
+
+            // if we didn't get a successful match, leave everything alone
+            } else {
+                return text;
+            }
+        }
+    }
+
+    /**
+     * Used by parse() to match a substitution and any following text.
+     * "text" is searched for instances of "delimiter".  For each instance
+     * of delimiter, the intervening text is tested to see whether it
+     * matches the substitution.  The longest match wins.
+     * @param text The string being parsed
+     * @param startPos The position in "text" where we should start looking
+     * for "delimiter".
+     * @param baseValue A partial parse result (often the rule's base value),
+     * which is combined with the result from matching the substitution
+     * @param delimiter The string to search "text" for.
+     * @param pp Ignored and presumed to be 0 on entry.  If there's a match,
+     * on exit this will point to the first unmatched character.
+     * @param sub If we find "delimiter" in "text", this substitution is used
+     * to match the text between the beginning of the string and the
+     * position of "delimiter."  (If "delimiter" is the empty string, then
+     * this function just matches against this substitution and updates
+     * everything accordingly.)
+     * @param upperBound When matching the substitution, it will only
+     * consider rules with base values lower than this value.
+     * @return If there's a match, this is the result of composing
+     * baseValue with the result of matching the substitution.  Otherwise,
+     * this is new Long(0).  It's never null.  If the result is an integer,
+     * this will be an instance of Long; otherwise, it's an instance of
+     * Double.
+     */
+    private Number matchToDelimiter(String text, int startPos, double baseValue,
+                        String delimiter, ParsePosition pp, NFSubstitution sub, double upperBound) {
+        // if "delimiter" contains real (i.e., non-ignorable) text, search
+        // it for "delimiter" beginning at "start".  If that succeeds, then
+        // use "sub"'s doParse() method to match the text before the
+        // instance of "delimiter" we just found.
+        if (!allIgnorable(delimiter)) {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number tempResult;
+
+            // use findText() to search for "delimiter".  It returns a two-
+            // element array: element 0 is the position of the match, and
+            // element 1 is the number of characters that matched
+            // "delimiter".
+            int[] temp = findText(text, delimiter, startPos);
+            int dPos = temp[0];
+            int dLen = temp[1];
+
+            // if findText() succeeded, isolate the text preceding the
+            // match, and use "sub" to match that text
+            while (dPos >= 0) {
+                String subText = text.substring(0, dPos);
+                if (subText.length() > 0) {
+                    tempResult = sub.doParse(subText, tempPP, baseValue, upperBound,
+                                    formatter.lenientParseEnabled());
+
+                    // if the substitution could match all the text up to
+                    // where we found "delimiter", then this function has
+                    // a successful match.  Bump the caller's parse position
+                    // to point to the first character after the text
+                    // that matches "delimiter", and return the result
+                    // we got from parsing the substitution.
+                    if (tempPP.getIndex() == dPos) {
+                        pp.setIndex(dPos + dLen);
+                        return tempResult;
+                    }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//                    else {
+//                        if (tempPP.getErrorIndex() > 0) {
+//                            pp.setErrorIndex(tempPP.getErrorIndex());
+//                        } else {
+//                            pp.setErrorIndex(tempPP.getIndex());
+//                        }
+//                    }
+                }
+
+                // if we didn't match the substitution, search for another
+                // copy of "delimiter" in "text" and repeat the loop if
+                // we find it
+                tempPP.setIndex(0);
+                temp = findText(text, delimiter, dPos + dLen);
+                dPos = temp[0];
+                dLen = temp[1];
+            }
+            // if we make it here, this was an unsuccessful match, and we
+            // leave pp unchanged and return 0
+            pp.setIndex(0);
+            return new Long(0);
+
+        // if "delimiter" is empty, or consists only of ignorable characters
+        // (i.e., is semantically empty), thwe we obviously can't search
+        // for "delimiter".  Instead, just use "sub" to parse as much of
+        // "text" as possible.
+        } else {
+            ParsePosition tempPP = new ParsePosition(0);
+            Number result = new Long(0);
+            Number tempResult;
+
+            // try to match the whole string against the substitution
+            tempResult = sub.doParse(text, tempPP, baseValue, upperBound,
+                            formatter.lenientParseEnabled());
+            if (tempPP.getIndex() != 0 || sub.isNullSubstitution()) {
+                // if there's a successful match (or it's a null
+                // substitution), update pp to point to the first
+                // character we didn't match, and pass the result from
+                // sub.doParse() on through to the caller
+                pp.setIndex(tempPP.getIndex());
+                if (tempResult != null) {
+                    result = tempResult;
+                }
+            }
+// commented out because ParsePosition doesn't have error index in 1.1.x
+//            else {
+//                pp.setErrorIndex(tempPP.getErrorIndex());
+//            }
+
+            // and if we get to here, then nothing matched, so we return
+            // 0 and leave pp alone
+            return result;
+        }
+    }
+
+    /**
+     * Used by stripPrefix() to match characters.  If lenient parse mode
+     * is off, this just calls startsWith().  If lenient parse mode is on,
+     * this function uses CollationElementIterators to match characters in
+     * the strings (only primary-order differences are significant in
+     * determining whether there's a match).
+     * @param str The string being tested
+     * @param prefix The text we're hoping to see at the beginning
+     * of "str"
+     * @return If "prefix" is found at the beginning of "str", this
+     * is the number of characters in "str" that were matched (this
+     * isn't necessarily the same as the length of "prefix" when matching
+     * text with a collator).  If there's no match, this is 0.
+     */
+    private int prefixLength(String str, String prefix) {
+        // if we're looking for an empty prefix, it obviously matches
+        // zero characters.  Just go ahead and return 0.
+        if (prefix.length() == 0) {
+            return 0;
+        }
+
+        // go through all this grief if we're in lenient-parse mode
+        if (formatter.lenientParseEnabled()) {
+            // get the formatter's collator and use it to create two
+            // collation element iterators, one over the target string
+            // and another over the prefix (right now, we'll throw an
+            // exception if the collator we get back from the formatter
+            // isn't a RuleBasedCollator, because RuleBasedCollator defines
+            // the CollationElementIteratoer protocol.  Hopefully, this
+            // will change someday.)
+            RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            CollationElementIterator prefixIter = collator.getCollationElementIterator(prefix);
+
+            // match collation elements between the strings
+            int oStr = strIter.next();
+            int oPrefix = prefixIter.next();
+
+            while (oPrefix != CollationElementIterator.NULLORDER) {
+                // skip over ignorable characters in the target string
+                while (CollationElementIterator.primaryOrder(oStr) == 0 && oStr !=
+                                CollationElementIterator.NULLORDER) {
+                    oStr = strIter.next();
+                }
+
+                // akip over ignorable characters in the prefix
+                while (CollationElementIterator.primaryOrder(oPrefix) == 0 && oPrefix !=
+                                CollationElementIterator.NULLORDER) {
+                    oPrefix = prefixIter.next();
+                }
+
+                // if skipping over ignorables brought us to the end
+                // of the target string, we didn't match and return 0
+                if (oStr == CollationElementIterator.NULLORDER) {
+                    return 0;
+                }
+
+                // if skipping over ignorables brought to the end of
+                // the prefix, we DID match: drop out of the loop
+                else if (oPrefix == CollationElementIterator.NULLORDER) {
+                    break;
+                }
+
+                // match collation elements from the two strings
+                // (considering only primary differences).  If we
+                // get a mismatch, dump out and return 0
+                if (CollationElementIterator.primaryOrder(oStr) != CollationElementIterator.
+                                primaryOrder(oPrefix)) {
+                    return 0;
+
+                // otherwise, advance to the next character in each string
+                // and loop (we drop out of the loop when we exhaust
+                // collation elements in the prefix)
+                } else {
+                    oStr = strIter.next();
+                    oPrefix = prefixIter.next();
+                }
+            }
+
+            //----------------------------------------------------------------
+            // JDK 1.2-specific API call
+            // return strIter.getOffset();
+            //----------------------------------------------------------------
+            // JDK 1.1 HACK (take out for 1.2-specific code)
+
+            // if we make it to here, we have a successful match.  Now we
+            // have to find out HOW MANY characters from the target string
+            // matched the prefix (there isn't necessarily a one-to-one
+            // mapping between collation elements and characters).
+            // In JDK 1.2, there's a simple getOffset() call we can use.
+            // In JDK 1.1, on the other hand, we have to go through some
+            // ugly contortions.  First, use the collator to compare the
+            // same number of characters from the prefix and target string.
+            // If they're equal, we're done.
+            collator.setStrength(Collator.PRIMARY);
+            if (str.length() >= prefix.length()
+                    && collator.equals(str.substring(0, prefix.length()), prefix)) {
+                return prefix.length();
+            }
+
+            // if they're not equal, then we have to compare successively
+            // larger and larger substrings of the target string until we
+            // get to one that matches the prefix.  At that point, we know
+            // how many characters matched the prefix, and we can return.
+            int p = 1;
+            while (p <= str.length()) {
+                if (collator.equals(str.substring(0, p), prefix)) {
+                    return p;
+                } else {
+                    ++p;
+                }
+            }
+
+            // SHOULKD NEVER GET HERE!!!
+            return 0;
+            //----------------------------------------------------------------
+
+        // If lenient parsing is turned off, forget all that crap above.
+        // Just use String.startsWith() and be done with it.
+        } else {
+            if (str.startsWith(prefix)) {
+                return prefix.length();
+            } else {
+                return 0;
+            }
+        }
+    }
+
+    /**
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+    private int[] findText(String str, String key) {
+        return findText(str, key, 0);
+    }
+
+    /**
+     * Searches a string for another string.  If lenient parsing is off,
+     * this just calls indexOf().  If lenient parsing is on, this function
+     * uses CollationElementIterator to match characters, and only
+     * primary-order differences are significant in determining whether
+     * there's a match.
+     * @param str The string to search
+     * @param key The string to search "str" for
+     * @param startingAt The index into "str" where the search is to
+     * begin
+     * @return A two-element array of ints.  Element 0 is the position
+     * of the match, or -1 if there was no match.  Element 1 is the
+     * number of characters in "str" that matched (which isn't necessarily
+     * the same as the length of "key")
+     */
+    private int[] findText(String str, String key, int startingAt) {
+        // if lenient parsing is turned off, this is easy: just call
+        // String.indexOf() and we're done
+        if (!formatter.lenientParseEnabled()) {
+            return new int[] { str.indexOf(key, startingAt), key.length() };
+
+        // but if lenient parsing is turned ON, we've got some work
+        // ahead of us
+        } else {
+            //----------------------------------------------------------------
+            // JDK 1.1 HACK (take out of 1.2-specific code)
+
+            // in JDK 1.2, CollationElementIterator provides us with an
+            // API to map between character offsets and collation elements
+            // and we can do this by marching through the string comparing
+            // collation elements.  We can't do that in JDK 1.1.  Insted,
+            // we have to go through this horrible slow mess:
+            int p = startingAt;
+            int keyLen = 0;
+
+            // basically just isolate smaller and smaller substrings of
+            // the target string (each running to the end of the string,
+            // and with the first one running from startingAt to the end)
+            // and then use prefixLength() to see if the search key is at
+            // the beginning of each substring.  This is excruciatingly
+            // slow, but it will locate the key and tell use how long the
+            // matching text was.
+            while (p < str.length() && keyLen == 0) {
+                keyLen = prefixLength(str.substring(p), key);
+                if (keyLen != 0) {
+                    return new int[] { p, keyLen };
+                }
+                ++p;
+            }
+            // if we make it to here, we didn't find it.  Return -1 for the
+            // location.  The length should be ignored, but set it to 0,
+            // which should be "safe"
+            return new int[] { -1, 0 };
+
+            //----------------------------------------------------------------
+            // JDK 1.2 version of this routine
+            //RuleBasedCollator collator = (RuleBasedCollator)formatter.getCollator();
+            //
+            //CollationElementIterator strIter = collator.getCollationElementIterator(str);
+            //CollationElementIterator keyIter = collator.getCollationElementIterator(key);
+            //
+            //int keyStart = -1;
+            //
+            //str.setOffset(startingAt);
+            //
+            //int oStr = strIter.next();
+            //int oKey = keyIter.next();
+            //while (oKey != CollationElementIterator.NULLORDER) {
+            //    while (oStr != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oStr) == 0)
+            //        oStr = strIter.next();
+            //
+            //    while (oKey != CollationElementIterator.NULLORDER &&
+            //                CollationElementIterator.primaryOrder(oKey) == 0)
+            //        oKey = keyIter.next();
+            //
+            //    if (oStr == CollationElementIterator.NULLORDER) {
+            //        return new int[] { -1, 0 };
+            //    }
+            //
+            //    if (oKey == CollationElementIterator.NULLORDER) {
+            //        break;
+            //    }
+            //
+            //    if (CollationElementIterator.primaryOrder(oStr) ==
+            //            CollationElementIterator.primaryOrder(oKey)) {
+            //        keyStart = strIter.getOffset();
+            //        oStr = strIter.next();
+            //        oKey = keyIter.next();
+            //    } else {
+            //        if (keyStart != -1) {
+            //            keyStart = -1;
+            //            keyIter.reset();
+            //        } else {
+            //            oStr = strIter.next();
+            //        }
+            //    }
+            //}
+            //
+            //if (oKey == CollationElementIterator.NULLORDER) {
+            //    return new int[] { keyStart, strIter.getOffset() - keyStart };
+            //} else {
+            //    return new int[] { -1, 0 };
+            //}
+        }
+    }
+
+    /**
+     * Checks to see whether a string consists entirely of ignorable
+     * characters.
+     * @param str The string to test.
+     * @return true if the string is empty of consists entirely of
+     * characters that the number formatter's collator says are
+     * ignorable at the primary-order level.  false otherwise.
+     */
+    private boolean allIgnorable(String str) {
+        // if the string is empty, we can just return true
+        if (str.length() == 0) {
+            return true;
+        }
+
+        // if lenient parsing is turned on, walk through the string with
+        // a collation element iterator and make sure each collation
+        // element is 0 (ignorable) at the primary level
+        if (formatter.lenientParseEnabled()) {
+            RuleBasedCollator collator = (RuleBasedCollator)(formatter.getCollator());
+            CollationElementIterator iter = collator.getCollationElementIterator(str);
+
+            int o = iter.next();
+            while (o != CollationElementIterator.NULLORDER
+                   && CollationElementIterator.primaryOrder(o) == 0) {
+                o = iter.next();
+            }
+            return o == CollationElementIterator.NULLORDER;
+        // if lenient parsing is turned off, there is no such thing as
+        // an ignorable character: return true only if the string is empty
+        } else {
+            return false;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/text/NFRuleSet.java b/src/com/ibm/text/NFRuleSet.java
new file mode 100755
index 0000000..e461d5b
--- /dev/null
+++ b/src/com/ibm/text/NFRuleSet.java
@@ -0,0 +1,746 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/NFRuleSet.java,v $ 
+ * $Date: 2000/03/10 04:07:21 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.text.*;
+import java.util.Vector;
+
+/**
+ * A collection of rules used by a RuleBasedNumberFormat to format and
+ * parse numbers.  It is the responsibility of a RuleSet to select an
+ * appropriate rule for formatting a particular number and dispatch
+ * control to it, and to arbitrate between different rules when parsing
+ * a number.
+ * $RCSfile: NFRuleSet.java,v $ $Revision: 1.2 $ $Date: 2000/03/10 04:07:21 $
+ */
+final class NFRuleSet {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The rule set's name
+     */
+    private String name;
+
+    /**
+     * The rule set's regular rules
+     */
+    private NFRule[] rules;
+
+    /**
+     * The rule set's negative-number rule
+     */
+    private NFRule negativeNumberRule = null;
+
+    /**
+     * The rule set's fraction rules: element 0 is the proper fraction
+     * (0.x) rule, element 1 is the improper fraction (x.x) rule, and
+     * element 2 is the master (x.0) rule.
+     */
+    private NFRule[] fractionRules = new NFRule[3];
+
+    /**
+     * True if the rule set is a fraction rule set.  A fraction rule set
+     * is a rule set that is used to format the fractional part of a
+     * number.  It is called from a >> substitution in another rule set's
+     * fraction rule, and is only called upon to format values between
+     * 0 and 1.  A fraction rule set has different rule-selection
+     * behavior than a regular rule set.
+     */
+    private boolean isFractionRuleSet = false;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /*
+     * Constructs a rule set.
+     * @param descriptions An array of Strings representing rule set
+     * descriptions.  On exit, this rule set's entry in the array will
+     * have been stripped of its rule set name and any trailing whitespace.
+     * @param index The index into "descriptions" of the description
+     * for the rule to be constructed
+     */
+    public NFRuleSet(String[] descriptions, int index) throws IllegalArgumentException {
+        String description = descriptions[index];
+
+        // if the description begins with a rule set name (the rule set
+        // name can be omitted in formatter descriptions that consist
+        // of only one rule set), copy it out into our "name" member
+        // and delete it from the description
+        if (description.charAt(0) == '%') {
+            int pos = description.indexOf(':');
+            if (pos == -1) {
+                throw new IllegalArgumentException("Rule set name doesn't end in colon");
+            } else {
+                name = description.substring(0, pos);
+                while (pos < description.length() && Character.isWhitespace(description.
+                                charAt(++pos))) {
+                }
+                description = description.substring(pos);
+                descriptions[index] = description;
+            }
+
+        // if the description doesn't begin with a rule set name, its
+        // name is "%default"
+        } else {
+            name = "%default";
+        }
+
+        if (description.length() == 0) {
+            throw new IllegalArgumentException("Empty rule set description");
+        }
+
+        // all of the other members of NFRuleSet are initialized
+        // by parseRules()
+    }
+
+    /**
+     * Construct the subordinate data structures used by this object.
+     * This function is called by the RuleBasedNumberFormat constructor
+     * after all the rule sets have been created to actually parse
+     * the description and build rules from it.  Since any rule set
+     * can refer to any other rule set, we have to have created all of
+     * them before we can create anything else.
+     * @param description The textual description of this rule set
+     * @param owner The formatter that owns this rule set
+     */
+    public void parseRules(String                description,
+                           RuleBasedNumberFormat owner) {
+        // start by creating a Vector whose elements are Strings containing
+        // the descriptions of the rules (one rule per element).  The rules
+        // are separated by semicolons (there's no escape facility: ALL
+        // semicolons are rule delimiters)
+        Vector ruleDescriptions = new Vector();
+
+        int oldP = 0;
+        int p = description.indexOf(';');
+        while (oldP != -1) {
+            if (p != -1) {
+                ruleDescriptions.addElement(description.substring(oldP, p));
+                oldP = p + 1;
+            } else {
+                if (oldP < description.length()) {
+                    ruleDescriptions.addElement(description.substring(oldP));
+                }
+                oldP = p;
+            }
+            p = description.indexOf(';', p + 1);
+        }
+
+        // now go back through and build a vector of the rules themselves
+        // (the number of elements in the description list isn't necessarily
+        // the number of rules-- some descriptions may expend into two rules)
+        Vector tempRules = new Vector();
+
+        // we keep track of the rule before the one we're currently working
+        // on solely to support >>> substitutions
+        NFRule predecessor = null;
+        for (int i = 0; i < ruleDescriptions.size(); i++) {
+            // makeRules (a factory method on NFRule) will return either
+            // a single rule or an array of rules.  Either way, add them
+            // to our rule vector
+            Object temp = NFRule.makeRules((String)ruleDescriptions.elementAt(i),
+                            this, predecessor, owner);
+
+            if (temp instanceof NFRule) {
+                tempRules.addElement(temp);
+                predecessor = (NFRule)temp;
+            }
+            else if (temp instanceof NFRule[]) {
+                NFRule[] rulesToAdd = (NFRule[])temp;
+
+                for (int j = 0; j < rulesToAdd.length; j++) {
+                    tempRules.addElement(rulesToAdd[j]);
+                    predecessor = rulesToAdd[j];
+                }
+            }
+        }
+        // now we can bag the description list
+        ruleDescriptions = null;
+
+        // for rules that didn't specify a base value, their base values
+        // were initialized to 0.  Make another pass through the list and
+        // set all those rules' base values.  We also remove any special
+        // rules from the list and put them into their own member variables
+        long defaultBaseValue = 0;
+
+        // (this isn't a for loop because we might be deleting items from
+        // the vector-- we want to make sure we only increment i when
+        // we _didn't_ delete aything from the vector)
+        int i = 0;
+        while (i < tempRules.size()) {
+            NFRule rule = (NFRule)tempRules.elementAt(i);
+
+            switch ((int)rule.getBaseValue()) {
+                // if the rule's base value is 0, fill in a default
+                // base value (this will be 1 plus the preceding
+                // rule's base value for regular rule sets, and the
+                // same as the preceding rule's base value in fraction
+                // rule sets)
+                case 0:
+                    rule.setBaseValue(defaultBaseValue);
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+
+                // if it's the negative-number rule, copy it into its own
+                // data member and delete it from the list
+                case NFRule.NEGATIVE_NUMBER_RULE:
+                    negativeNumberRule = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the improper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.IMPROPER_FRACTION_RULE:
+                    fractionRules[0] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the proper fraction rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.PROPER_FRACTION_RULE:
+                    fractionRules[1] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's the master rule, copy it into the
+                // correct element of fractionRules
+                case NFRule.MASTER_RULE:
+                    fractionRules[2] = rule;
+                    tempRules.removeElementAt(i);
+                    break;
+
+                // if it's a regular rule that already knows its base value,
+                // check to make sure the rules are in order, and update
+                // the default base value for the next rule
+                default:
+                    if (rule.getBaseValue() < defaultBaseValue) {
+                        throw new IllegalArgumentException("Rules are not in order");
+                    }
+                    defaultBaseValue = rule.getBaseValue();
+                    if (!isFractionRuleSet) {
+                        ++defaultBaseValue;
+                    }
+                    ++i;
+                    break;
+            }
+        }
+
+        // finally, we can copy the rules from the vector into a
+        // fixed-length array
+        rules = new NFRule[tempRules.size()];
+        tempRules.copyInto((Object[])rules);
+    }
+
+    /**
+     * Flags this rule set as a fraction rule set.  This function is
+     * called during the construction process once we know this rule
+     * set is a fraction rule set.  We don't know a rule set is a
+     * fraction rule set until we see it used somewhere.  This function
+     * is not ad must not be called at any time other than during
+     * construction of a RuleBasedNumberFormat.
+     */
+    public void makeIntoFractionRuleSet() {
+        isFractionRuleSet = true;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two rule sets for equality.
+     * @param that The other rule set
+     * @return true if the two rule sets are functionally equivalent.
+     */
+    public boolean equals(Object that) {
+        // if different classes, they're not equal
+        if (!(that instanceof NFRuleSet)) {
+            return false;
+        } else {
+            // otherwise, compare the members one by one...
+            NFRuleSet that2 = (NFRuleSet)that;
+
+            if (!name.equals(that2.name)
+                || !negativeNumberRule.equals(that2.negativeNumberRule)
+                || !fractionRules[0].equals(that2.fractionRules[0])
+                || !fractionRules[1].equals(that2.fractionRules[1])
+                || !fractionRules[2].equals(that2.fractionRules[2])
+                || rules.length != that2.rules.length
+                || isFractionRuleSet != that2.isFractionRuleSet) {
+                return false;
+            }
+
+            // ...then compare the rule lists...
+            for (int i = 0; i < rules.length; i++) {
+                if (!rules[i].equals(that2.rules[i])) {
+                    return false;
+                }
+            }
+
+            // ...and if we make it here, tney're equal
+            return true;
+        }
+    }
+
+    /**
+     * Builds a textual representation of a rule set.
+     * @return A textual representation of a rule set.  This won't
+     * necessarily be the same description that the rule set was
+     * constructed with, but it will produce the same results.
+     */
+    public String toString() {
+        StringBuffer result = new StringBuffer();
+
+        // the rule set name goes first...
+        result.append(name + ":\n");
+
+        // followed by the regular rules...
+        for (int i = 0; i < rules.length; i++) {
+            result.append("    " + rules[i].toString() + "\n");
+        }
+
+        // followed by the special rules (if they exist)
+        if (negativeNumberRule != null) {
+            result.append("    " + negativeNumberRule.toString() + "\n");
+        }
+        if (fractionRules[0] != null) {
+            result.append("    " + fractionRules[0].toString() + "\n");
+        }
+        if (fractionRules[1] != null) {
+            result.append("    " + fractionRules[1].toString() + "\n");
+        }
+        if (fractionRules[2] != null) {
+            result.append("    " + fractionRules[2].toString() + "\n");
+        }
+
+        return result.toString();
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Says whether this rule set is a fraction rule set.
+     * @return true if this rule is a fraction rule set; false if it isn't
+     */
+    public boolean isFractionSet() {
+        return isFractionRuleSet;
+    }
+
+    /*
+     * Returns the rule set's name
+     * @return The rule set's name
+     */
+    public String getName() {
+        return name;
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Formats a long.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(long number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findNormalRule(number);
+
+        applicableRule.doFormat(number, toInsertInto, pos);
+    }
+
+    /**
+     * Formats a double.  Selects an appropriate rule and dispatches
+     * control to it.
+     * @param number The number being formatted
+     * @param toInsertInto The string where the result is to be placed
+     * @param pos The position in toInsertInto where the result of
+     * this operation is to be inserted
+     */
+    public void format(double number, StringBuffer toInsertInto, int pos) {
+        NFRule applicableRule = findRule(number);
+
+        applicableRule.doFormat(number, toInsertInto, pos);
+    }
+
+    /**
+     * Selects an apropriate rule for formatting the number.
+     * @param number The number being formatted.
+     * @return The rule that should be used to format it
+     */
+    private NFRule findRule(double number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative number rule
+        // (if there isn't a negative-number rule, we pretend it's a
+        // positive number)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // if the number isn't an integer, we use one f the fraction rules...
+        if (number != Math.floor(number)) {
+            // if the number is between 0 and 1, return the proper
+            // fraction rule
+            if (number < 1 && fractionRules[1] != null) {
+                return fractionRules[1];
+            }
+
+            // otherwise, return the improper fraction rule
+            else if (fractionRules[0] != null) {
+                return fractionRules[0];
+            }
+        }
+
+        // if there's a master rule, use it to format the number
+        if (fractionRules[2] != null) {
+            return fractionRules[2];
+
+        // and if we haven't yet returned a rule, use findNormalRule()
+        // to find the applicable rule
+        } else {
+            return findNormalRule((long)Math.round(number));
+        }
+    }
+
+    /**
+     * If the value passed to findRule() is a positive integer, findRule()
+     * uses this function to select the appropriate rule.  The result will
+     * generally be the rule with the highest base value less than or equal
+     * to the number.  There is one exception to this: If that rule has
+     * two substitutions and a base value that is not an even multiple of
+     * its divisor, and the number itself IS an even multiple of the rule's
+     * divisor, then the result will be the rule that preceded the original
+     * result in the rule list.  (This behavior is known as the "rollback
+     * rule", and is used to handle optional text: a rule with optional
+     * text is represented internally as two rules, and the rollback rule
+     * selects appropriate between them.  This avoids things like "two
+     * hundred zero".)
+     * @param number The number being formatted
+     * @return The rule to use to format this number
+     */
+    private NFRule findNormalRule(long number) {
+        // if this is a fraction rule set, use findFractionRuleSetRule()
+        // to find the rule (we should only go into this clause if the
+        // value is 0)
+        if (isFractionRuleSet) {
+            return findFractionRuleSetRule(number);
+        }
+
+        // if the number is negative, return the negative-number rule
+        // (if there isn't one, pretend the number is positive)
+        if (number < 0) {
+            if (negativeNumberRule != null) {
+                return negativeNumberRule;
+            } else {
+                number = -number;
+            }
+        }
+
+        // we have to repeat the preceding two checks, even though we
+        // do them in findRule(), because the version of format() that
+        // takes a long bypasses findRule() and goes straight to this
+        // function.  This function does skip the fraction rules since
+        // we know the value is an integer (it also skips the master
+        // rule, since it's considered a fraction rule.  Skipping the
+        // master rule in this function is also how we avoid infinite
+        // recursion)
+
+        // binary-search the rule list for the applicable rule
+        // (a rule is used for all values from its base value to
+        // the next rule's base value)
+        int lo = 0;
+        int hi = rules.length;
+        while (lo < hi) {
+            int mid = (lo + hi) / 2;
+            if (rules[mid].getBaseValue() == number) {
+                return rules[mid];
+            }
+            else if (rules[mid].getBaseValue() > number) {
+                hi = mid;
+            }
+            else {
+                lo = mid + 1;
+            }
+        }
+        NFRule result = rules[hi - 1];
+
+        // use shouldRollBack() to see whether we need to invoke the
+        // rollback rule (see shouldRollBack()'s documentation for
+        // an explanation of the rollback rule).  If we do, roll back
+        // one rule and return that one instead of the one we'd normally
+        // return
+        if (result.shouldRollBack(number)) {
+            result = rules[hi - 2];
+        }
+
+        return result;
+    }
+
+    /**
+     * If this rule is a fraction rule set, this function is used by
+     * findRule() to select the most appropriate rule for formatting
+     * the number.  Basically, the base value of each rule in the rule
+     * set is treated as the denominator of a fraction.  Whichever
+     * denominator can produce the fraction closest in value to the
+     * number passed in is the result.  If there's a tie, the earlier
+     * one in the list wins.  (If there are two rules in a row with the
+     * same base value, the first one is used when the numerator of the
+     * fraction would be 1, and the second rule is used the rest of the
+     * time.
+     * @param number The number being formatted (which will always be
+     * a number between 0 and 1)
+     * @return The rule to use to format this number
+     */
+    private NFRule findFractionRuleSetRule(double number) {
+        // the obvious way to do this (multiply the value being formatted
+        // by each rule's base value until you get an integral result)
+        // doesn't work because of rounding error.  This method is more
+        // accurate
+
+        // find the least common multiple of the rules' base values
+        // and multiply this by the number being formatted.  This is
+        // all the precision we need, and we can do all of the rest
+        // of the math using integer arithmetic
+        long leastCommonMultiple = rules[0].getBaseValue();
+        for (int i = 1; i < rules.length; i++) {
+            leastCommonMultiple = lcm(leastCommonMultiple, rules[i].getBaseValue());
+        }
+        long numerator = (long)(Math.round(number * leastCommonMultiple));
+
+        // for each rule, do the following...
+        long tempDifference;
+        long difference = Long.MAX_VALUE;
+        int winner = 0;
+        for (int i = 0; i < rules.length; i++) {
+            // "numerator" is the numerator of the fraction is the
+            // denominator is the LCD.  The numerator if the the rule's
+            // base value is the denomiator is "numerator" times the
+            // base value divided bythe LCD.  Here we check to see if
+            // that's an integer, and if not, how close it is to being
+            // an integer.
+            tempDifference = numerator * rules[i].getBaseValue() % leastCommonMultiple;
+
+            // normalize the result of the above calculation: we want
+            // the numerator's distance from the CLOSEST multiple
+            // of the LCD
+            if (leastCommonMultiple - tempDifference < tempDifference) {
+                tempDifference = leastCommonMultiple - tempDifference;
+            }
+
+            // if this is as close as we've come, keep track of how close
+            // that is, and the line number of the rule that did it.  If
+            // we've scored a direct hit, we don't have to look at any more
+            // rules
+            if (tempDifference < difference) {
+                difference = tempDifference;
+                winner = i;
+                if (difference == 0) {
+                    break;
+                }
+            }
+        }
+
+        // if we have two successive rules that both have the winning base
+        // value, then the first one (the one we found above) is used if
+        // the numerator of the fraction is 1 and the second one is used if
+        // the numerator of the fraction is anything else (this lets us
+        // do things like "one third"/"two thirds" without haveing to define
+        // a whole bunch of extra rule sets)
+        if (winner + 1 < rules.length
+                && rules[winner + 1].getBaseValue() == rules[winner].getBaseValue()) {
+            if (Math.round(number * rules[winner].getBaseValue()) < 1
+                    || Math.round(number * rules[winner].getBaseValue()) >= 2) {
+                ++winner;
+            }
+        }
+
+        // finally, return the winning rule
+        return rules[winner];
+    }
+
+    /**
+     * Calculates the least common multiple of x and y.
+     */
+    private static long lcm(long x, long y) {
+        // binary gcd algorithm from Knuth, "The Art of Computer Programming,"
+        // vol. 2, 1st ed., pp. 298-299
+        long x1 = x;
+        long y1 = y;
+
+        int p2 = 0;
+        while ((x1 & 1) == 0 && (y1 & 1) == 0) {
+            ++p2;
+            x1 >>= 1;
+            y1 >>= 1;
+        }
+
+        long t;
+        if ((x1 & 1) == 1) {
+            t = -y1;
+        } else {
+            t = x1;
+        }
+
+        while (t != 0) {
+            while ((t & 1) == 0) {
+                t >>= 1;
+            }
+            if (t > 0) {
+                x1 = t;
+            } else {
+                y1 = -t;
+            }
+            t = x1 - y1;
+        }
+        long gcd = x1 << p2;
+
+        // x * y == gcd(x, y) * lcm(x, y)
+        return x / gcd * y;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string.  Matches the string to be parsed against each
+     * of its rules (with a base value less than upperBound) and returns
+     * the value produced by the rule that matched the most charcters
+     * in the source string.
+     * @param text The string to parse
+     * @param parsePosition The initial position is ignored and assumed
+     * to be 0.  On exit, this object has been updated to point to the
+     * first character position this rule set didn't consume.
+     * @param upperBound Limits the rules that can be allowed to match.
+     * Only rules whose base values are strictly less than upperBound
+     * are considered.
+     * @return The numerical result of parsing this string.  This will
+     * be the matching rule's base value, composed appropriately with
+     * the results of matching any of its substitutions.  The object
+     * will be an instance of Long if it's an integral value; otherwise,
+     * it will be an instance of Double.  This function always returns
+     * a valid object: If nothing matched the input string at all,
+     * this function returns new Long(0), and the parse position is
+     * left unchanged.
+     */
+    public Number parse(String text, ParsePosition parsePosition, double upperBound) {
+        // try matching each rule in the rule set against the text being
+        // parsed.  Whichever one matches the most characters is the one
+        // that determines the value we return.
+
+        ParsePosition highWaterMark = new ParsePosition(0);
+        Number result = new Long(0);
+        Number tempResult = null;
+
+        // dump out if there's no text to parse
+        if (text.length() == 0) {
+            return result;
+        }
+
+        // start by trying the nehative number rule (if there is one)
+        if (negativeNumberRule != null) {
+            tempResult = negativeNumberRule.doParse(text, parsePosition, false, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // then try each of the fraction rules
+        for (int i = 0; i < 3; i++) {
+            if (fractionRules[i] != null) {
+                tempResult = fractionRules[i].doParse(text, parsePosition, false, upperBound);
+                if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                    result = tempResult;
+                    highWaterMark.setIndex(parsePosition.getIndex());
+                }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+                parsePosition.setIndex(0);
+            }
+        }
+
+        // finally, go through the regular rules one at a time.  We start
+        // at the end of the list because we want to try matching the most
+        // sigificant rule first (this helps ensure that we parse
+        // "five thousand three hundred six" as
+        // "(five thousand) (three hundred) (six)" rather than
+        // "((five thousand three) hundred) (six)").  Skip rules whose
+        // base values are higher than the upper bound (again, this helps
+        // limit ambiguity by making sure the rules that match a rule's
+        // are less significant than the rule containing the substitutions)/
+        for (int i = rules.length - 1; i >= 0 && highWaterMark.getIndex() < text.length(); i--) {
+            if (!isFractionRuleSet && rules[i].getBaseValue() >= upperBound) {
+                continue;
+            }
+
+            tempResult = rules[i].doParse(text, parsePosition, isFractionRuleSet, upperBound);
+            if (parsePosition.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(parsePosition.getIndex());
+            }
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//            if (parsePosition.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(parsePosition.getErrorIndex());
+//            }
+            parsePosition.setIndex(0);
+        }
+
+        // finally, update the parse postion we were passed to point to the
+        // first character we didn't use, and return the result that
+        // cporresponds to that string of characters
+        parsePosition.setIndex(highWaterMark.getIndex());
+// commented out because the error-index API on ParsePosition isn't there in 1.1.x
+//        if (parsePosition.getIndex() == 0) {
+//            parsePosition.setErrorIndex(highWaterMark.getErrorIndex());
+//        }
+
+        return result;
+    }
+}
diff --git a/src/com/ibm/text/NFSubstitution.java b/src/com/ibm/text/NFSubstitution.java
new file mode 100755
index 0000000..8698b96
--- /dev/null
+++ b/src/com/ibm/text/NFSubstitution.java
@@ -0,0 +1,1738 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/NFSubstitution.java,v $ 
+ * $Date: 2000/03/10 04:07:21 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.text.*;
+
+//===================================================================
+// NFSubstitution (abstract base class)
+//===================================================================
+
+/**
+ * An abstract class defining protocol for substitutions.  A substitution
+ * is a section of a rule that inserts text into the rule's rule text
+ * based on some part of the number being formatted.
+ * @author Richard Gillam
+ * @version $RCSfile: NFSubstitution.java,v $ $Revision: 1.3 $ $Date: 2000/03/10 04:07:21 $
+ */
+abstract class NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The substitution's position in the rule text of the rule that owns it
+     */
+    int pos;
+
+    /**
+     * The rule set this substitution uses to format its result, or null.
+     * (Either this or numberFormat has to be non-null.)
+     */
+    NFRuleSet ruleSet = null;
+
+    /**
+     * The DecimalFormat this substitution uses to format its result,
+     * or null.  (Either this or ruleSet has to be non-null.)
+     */
+    java.text.DecimalFormat numberFormat = null;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses the description, creates the right kind of substitution,
+     * and initializes it based on the description.
+     * @param pos The substitution's position in the rule text of the
+     * rule that owns it.
+     * @param rule The rule containing this substitution
+     * @param rulePredecessor The rule preceding the one that contains
+     * this substitution in the rule set's rule list (this is used
+     * only for >>> substitutions).
+     * @param ruleSet The rule set containing the rule containing this
+     * substitution
+     * @param formatter The RuleBasedNumberFormat that ultimately owns
+     * this substitution
+     * @param description The description to parse to build the substitution
+     * (this is just the substring of the rule's description containing
+     * the substitution token itself)
+     * @return A new substitution constructed according to the description
+     */
+    public static NFSubstitution makeSubstitution(int pos,
+                                                  NFRule rule,
+                                                  NFRule rulePredecessor,
+                                                  NFRuleSet ruleSet,
+                                                  RuleBasedNumberFormat formatter,
+                                                  String description) {
+        // if the description is empty, return a NummSubstitution
+        if (description.length() == 0) {
+            return new NullSubstitution(pos, ruleSet, formatter, description);
+        }
+
+        switch (description.charAt(0)) {
+            // if the description begins with '<'...
+            case '<':
+                // throw an exception if the rule is a negative number
+                // rule
+                if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                    throw new IllegalArgumentException("<< not allowed in negative-number rule");
+                }
+
+                // if the rule is a fraction rule, return an
+                // IntegralPartSubstitution
+                else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                    return new IntegralPartSubstitution(pos, ruleSet, formatter, description);
+                }
+
+                // if the rule set containing the rule is a fraction
+                // rule set, return a NumeratorSubstitution
+                else if (ruleSet.isFractionSet()) {
+                    return new NumeratorSubstitution(pos, rule.getBaseValue(),
+                                    formatter.getDefaultRuleSet(), formatter, description);
+                }
+
+                // otherwise, return a MultiplierSubstitution
+                else {
+                    return new MultiplierSubstitution(pos, rule.getDivisor(), ruleSet,
+                                    formatter, description);
+                }
+
+            // if the description begins with '>'...
+            case '>':
+                // if the rule is a negative-number rule, return
+                // an AbsoluteValueSubstitution
+                if (rule.getBaseValue() == NFRule.NEGATIVE_NUMBER_RULE) {
+                    return new AbsoluteValueSubstitution(pos, ruleSet, formatter, description);
+                }
+
+                // if the rule is a fraction rule, return a
+                // FractionalPartSubstitution
+                else if (rule.getBaseValue() == NFRule.IMPROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.PROPER_FRACTION_RULE
+                            || rule.getBaseValue() == NFRule.MASTER_RULE) {
+                    return new FractionalPartSubstitution(pos, ruleSet, formatter, description);
+                }
+
+                // if the rule set owning the rule is a fraction rule set,
+                // throw an exception
+                else if (ruleSet.isFractionSet()) {
+                    throw new IllegalArgumentException(">> not allowed in fraction rule set");
+                }
+
+                // otherwise, return a ModulusSubstitution
+                else {
+                    return new ModulusSubstitution(pos, rule.getDivisor(), rulePredecessor,
+                                    ruleSet, formatter, description);
+                }
+
+            // if the description begins with '=', always return a
+            // SameValueSubstitution
+            case '=':
+                return new SameValueSubstitution(pos, ruleSet, formatter, description);
+
+            // and if it's anything else, throw an exception
+            default:
+                throw new IllegalArgumentException("Illegal substitution character");
+        }
+    }
+
+    /**
+     * Base constructor for substitutions.  This constructor sets up the
+     * fields which are common to all substitutions.
+     * @param pos The substitution's position in the owning rule's rule
+     * text
+     * @param ruleSet The rule set that owns this substitution
+     * @param formatter The RuleBasedNumberFormat that owns this substitution
+     * @param description The substitution descriptor (i.e., the text
+     * inside the token characters)
+     */
+    NFSubstitution(int pos,
+                   NFRuleSet ruleSet,
+                   RuleBasedNumberFormat formatter,
+                   String description) {
+        // initialize the substitution's position in its parent rule
+        this.pos = pos;
+
+        // the description should begin and end with the same character.
+        // If it doesn't that's a syntax error.  Otherwise,
+        // makeSubstitution() was the only thing that needed to know
+        // about these characters, so strip them off
+        if (description.length() >= 2 && description.charAt(0) == description.charAt(
+                        description.length() - 1)) {
+            description = description.substring(1, description.length() - 1);
+        }
+        else if (description.length() != 0) {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+
+        // if the description was just two paired token characters
+        // (i.e., "<<" or ">>"), it uses the rule set it belongs to to
+        // format its result
+        if (description.length() == 0) {
+            this.ruleSet = ruleSet;
+        }
+
+        // if the description contains a rule set name, that's the rule
+        // set we use to format the result: get a reference to the
+        // names rule set
+        else if (description.charAt(0) == '%') {
+            this.ruleSet = formatter.findRuleSet(description);
+        }
+
+        // if the description begins with 0 or #, treat it as a
+        // DecimalFormat pattern, and initialize a DecimalFormat with
+        // that pattern (then set it to use the DecimalFormatSymbols
+        // belonging to our formatter)
+        else if (description.charAt(0) == '#' || description.charAt(0) == '0') {
+            this.numberFormat = new java.text.DecimalFormat(description);
+            this.numberFormat.setDecimalFormatSymbols(formatter.getDecimalFormatSymbols());
+        }
+
+        // if the description is ">>>", this substitution bypasses the
+        // usual rule-search process and always uses the rule that precedes
+        // it in its own rule set's rule list (this is used for place-value
+        // notations: formats where you want to see a particular part of
+        // a number even when it's 0)
+        else if (description.charAt(0) == '>') {
+            this.ruleSet = null;
+            this.numberFormat = null;
+        }
+
+        // and of the description is none of these things, it's a syntax error
+        else {
+            throw new IllegalArgumentException("Illegal substitution syntax");
+        }
+    }
+
+    /**
+     * Set's the substitution's divisor.  Used by NFRule.setBaseValue().
+     * A no-op for all substitutions except multiplier and modulus
+     * substitutions.
+     * @param radix The radix of the divisor
+     * @param exponent The exponent of the divisor
+     */
+    public void setDivisor(int radix, int exponent) {
+        // a no-op for all substitutions except multiplier and modulus substitutions
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Compares two substitutions for equality
+     * @param The substitution to compare this one to
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        // compare class and all of the fields all substitutions have
+        // in common
+        if (this.getClass() == that.getClass()) {
+            NFSubstitution that2 = (NFSubstitution)that;
+
+            return pos == that2.pos
+                   && ruleSet == that2.ruleSet
+                   && numberFormat.equals(that2.numberFormat);
+        } else {
+            return false;
+        }
+    }
+
+    /**
+     * Returns a textual description of the substitution
+     * @return A textual description of the substitution.  This might
+     * not be identical to the description it was created from, but
+     * it'll produce the same result.
+     */
+    public String toString() {
+        // use tokenChar() to get the character at the beginning and
+        // end of the substitutin token.  In between them will go
+        // either the name of the rule set it uses, or the pattern of
+        // the DecimalFormat it uses
+        if (ruleSet != null) {
+            return tokenChar() + ruleSet.getName() + tokenChar();
+        } else {
+            return tokenChar() + numberFormat.toPattern() + tokenChar();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param pos The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int pos) {
+        if (ruleSet != null) {
+           // perform a transformation on the number that is dependent
+           // on the type of substitution this is, then just call its
+           // rule set's format() method to format the result
+           long numberToFormat = transformNumber(number);
+
+            ruleSet.format(numberToFormat, toInsertInto, pos + this.pos);
+        } else {
+            // or perform the transformation on the number (preserving
+            // the result's fractional part if the formatter it set
+            // to show it), then use that formatter's format() method
+            // to format the result
+            double numberToFormat = transformNumber((double)number);
+            if (numberFormat.getMaximumFractionDigits() == 0) {
+                numberToFormat = Math.floor(numberToFormat);
+            }
+
+            toInsertInto.insert(pos + this.pos, numberFormat.format(numberToFormat));
+        }
+    }
+
+    /**
+     * Performs a mathematical operation on the number, formats it using
+     * either ruleSet or decimalFormat, and inserts the result into
+     * toInsertInto.
+     * @param number The number being formatted.
+     * @param toInsertInto The string we insert the result into
+     * @param pos The position in toInsertInto where the owning rule's
+     * rule text begins (this value is added to this substitution's
+     * position to determine exactly where to insert the new text)
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+        // perform a transformation on the number being formatted that
+        // is dependent on the type of substitution this is
+        double numberToFormat = transformNumber(number);
+
+        // if the result is an integer, from here on out we work in integer
+        // space (saving time and memory and preserving accuracy)
+        if (numberToFormat == Math.floor(numberToFormat) && ruleSet != null) {
+            ruleSet.format((long)numberToFormat, toInsertInto, pos + this.pos);
+
+        // if the result isn't an integer, then call either our rule set's
+        // format() method or our DecimalFormat's format() method to
+        // format the result
+        } else {
+            if (ruleSet != null) {
+                ruleSet.format(numberToFormat, toInsertInto, pos + this.pos);
+            } else {
+                toInsertInto.insert(pos + this.pos, numberFormat.format(numberToFormat));
+            }
+        }
+    }
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract long transformNumber(long number);
+
+    /**
+     * Subclasses override this function to perform some kind of
+     * mathematical operation on the number.  The result of this operation
+     * is formatted using the rule set or DecimalFormat that this
+     * substitution refers to, and the result is inserted into the result
+     * string.
+     * @param The number being formatted
+     * @return The result of performing the opreration on the number
+     */
+    public abstract double transformNumber(double number);
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Parses a string using the rule set or DecimalFormat belonging
+     * to this substitution.  If there's a match, a mathematical
+     * operation (the inverse of the one used in formatting) is
+     * performed on the result of the parse and the value passed in
+     * and returned as the result.  The parse position is updated to
+     * point to the first unmatched character in the string.
+     * @param text The string to parse
+     * @param parsePosition On entry, ignored, but assumed to be 0.
+     * On exit, this is updated to point to the first unmatched
+     * character (or 0 if the substitution didn't match)
+     * @param baseValue A partial parse result that should be
+     * combined with the result of this parse
+     * @param upperBound When searching the rule set for a rule
+     * matching the string passed in, only rules with base values
+     * lower than this are considered
+     * @param lenientParse If true and matching against rules fails,
+     * the substitution will also try matching the text against
+     * numerals using a default-costructed NumberFormat.  If false,
+     * no extra work is done.  (This value is false whenever the
+     * formatter isn't in lenient-parse mode, but is also false
+     * under some conditions even when the formatter _is_ in
+     * lenient-parse mode.)
+     * @return If there's a match, this is the result of composing
+     * baseValue with whatever was returned from matching the
+     * characters.  This will be either a Long or a Double.  If there's
+     * no match this is new Long(0) (not null), and parsePosition
+     * is left unchanged.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                    double upperBound, boolean lenientParse) {
+        Number tempResult;
+
+        // figure out the highest base value a rule can have and match
+        // the text being parsed (this varies according to the type of
+        // substitutions: multiplier, modulus, and numerator substitutions
+        // restrict the search to rules with base values lower than their
+        // own; same-value substitutions leave the upper bound wherever
+        // it was, and the others allow any rule to match
+        upperBound = calcUpperBound(upperBound);
+
+        // use our rule set to parse the text.  If that fails and
+        // lenient parsing is enabled (this is always false if the
+        // formatter's lenient-parsing mode is off, but it may also
+        // be false even when the formatter's lenient-parse mode is
+        // on), then also try parsing the text using a default-
+        // constructed NumberFormat
+        if (ruleSet != null) {
+            tempResult = ruleSet.parse(text, parsePosition, upperBound);
+            if (lenientParse && !ruleSet.isFractionSet() && parsePosition.getIndex() == 0) {
+                tempResult = java.text.NumberFormat.getInstance().parse(text, parsePosition);
+            }
+
+        // ...or use our DecimalFormat to parse the text
+        } else {
+            tempResult = numberFormat.parse(text, parsePosition);
+        }
+
+        // if the parse was successful, we've already advanced the caller's
+        // parse position (this is the one function that doesn't have one
+        // of its own).  Derive a parse result and return it as a Long,
+        // if possible, or a Double
+        if (parsePosition.getIndex() != 0) {
+            double result = tempResult.doubleValue();
+
+            // composeRuleValue() produces a full parse result from
+            // the partial parse result passed to this function from
+            // the caller (this is either the owning rule's base value
+            // or the partial result obtained from composing the
+            // owning rule's base value with its other substitution's
+            // parse result) and the partial parse result obtained by
+            // matching the substitution (which will be the same value
+            // the caller would get by parsing just this part of the
+            // text with RuleBasedNumberFormat.parse() ).  How the two
+            // values are used to derive the full parse result depends
+            // on the types of substitutions: For a regular rule, the
+            // ultimate result is its multiplier substitution's result
+            // times the rule's divisor (or the rule's base value) plus
+            // the modulus substitution's result (which will actually
+            // supersede part of the rule's base value).  For a negative-
+            // number rule, the result is the negative of its substitution's
+            // result.  For a fraction rule, it's the sum of its two
+            // substitution results.  For a rule in a fraction rule set,
+            // it's the numerator substitution's result divided by
+            // the rule's base value.  Results from same-value substitutions
+            // propagate back upard, and null substitutions don't affect
+            // the result.
+            result = composeRuleValue(result, baseValue);
+            if (result == (long)result) {
+                return new Long((long)result);
+            } else {
+                return new Double(result);
+            }
+
+        // if the parse was UNsuccessful, return 0
+        } else {
+            return tempResult;
+        }
+    }
+
+    /**
+     * Derives a new value from the two values passed in.  The two values
+     * are typically either the base values of two rules (the one containing
+     * the substitution and the one matching the substitution) or partial
+     * parse results derived in some other way.  The operation is generally
+     * the inverse of the operation performed by transformNumber().
+     * @param newRuleValue The value produced by matching this substitution
+     * @param oldRuleValue The value that was passed to the substitution
+     * by the rule that owns it
+     * @return A third value derived from the other two, representing a
+     * partial parse result
+     */
+    public abstract double composeRuleValue(double newRuleValue, double oldRuleValue);
+
+    /**
+     * Calculates an upper bound when searching for a rule that matches
+     * this substitution.  Rules with base values greater than or equal
+     * to upperBound are not considered.
+     * @param oldUpperBound The current upper-bound setting.  The new
+     * upper bound can't be any higher.
+     */
+    public abstract double calcUpperBound(double oldUpperBound);
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the substitution's position in the rule that owns it.
+     * @return The substitution's position in the rule that owns it.
+     */
+    public final int getPos() {
+        return pos;
+    }
+
+    /**
+     * Returns the character used in the textual representation of
+     * substitutions of this type.  Used by toString().
+     * @return This substitution's token character.
+     */
+    abstract char tokenChar();
+
+    /**
+     * Returns true if this is a null substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of NullSubstitution
+     */
+    public boolean isNullSubstitution() {
+        return false;
+    }
+
+    /**
+     * Returns true if this is a modulus substitution.  (We didn't do this
+     * with instanceof partially because it causes source files to
+     * proliferate and partially because we have to port this to C++.)
+     * @return true if this object is an instance of ModulusSubstitution
+     */
+    public boolean isModulusSubstitution() {
+        return false;
+    }
+}
+
+//===================================================================
+// SameValueSubstitution
+//===================================================================
+
+/**
+ * A substitution that passes the value passed to it through unchanged.
+ * Represented by == in rule descriptions.
+ */
+class SameValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a SameValueSubstution.  This function just uses the
+     * superclass constructor, but it performs a check that this
+     * substitution doesn't call the rule set that owns it, since that
+     * would lead to infinite recursion.
+     */
+    SameValueSubstitution(int pos,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, description);
+        if (description.equals("==")) {
+            throw new IllegalArgumentException("== is not a legal token");
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns "number" unchanged.
+     * @return "number"
+     */
+    public double transformNumber(double number) {
+        return number;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue and ignores oldRuleValue. (The value we got
+     * matching the substitution supersedes the value of the rule
+     * that owns the substitution.)
+     * @param newRuleValue The value resulting from matching the substituion
+     * @param oldRuleValue The value of the rule containing the
+     * substitution.
+     * @return newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue;
+    }
+
+    /**
+     * SameValueSubstitution doesn't change the upper bound.
+     * @param oldUpperBound The current upper bound.
+     * @return oldUpperBound
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return oldUpperBound;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a SameValueSubstitution is =.
+     * @return '='
+     */
+    char tokenChar() {
+        return '=';
+    }
+}
+
+//===================================================================
+// MultiplierSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the rule's
+ * divisor and formats the quotient.  Represented by &lt;&lt; in normal
+ * rules.
+ */
+class MultiplierSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule that owns this substitution.
+     */
+    double divisor;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a MultiplierSubstitution.  This uses the superclass
+     * constructor to initialize most members, but this substitution
+     * also maintains its own copy of its rule's divisor.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The owning rule's divisor
+     * @ruleSet The ruleSet this substitution uses to format its result
+     * @formatter The formatter that owns this substitution
+     * @description The description describing this substitution
+     */
+    MultiplierSubstitution(int pos,
+                           double divisor,
+                           NFRuleSet ruleSet,
+                           RuleBasedNumberFormat formatter,
+                           String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor affects the behavior of this
+        // substitution.  Rather than keeping a back-pointer to the
+        // rule, we keep a copy of the divisor
+        this.divisor = divisor;
+    }
+
+    /**
+     * Sets the substitution's divisor based on the values passed in.
+     * @param radix The radix of the divisor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the superclass's equals() function by comparing divisors.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equal
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            MultiplierSubstitution that2 = (MultiplierSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * @param number The number being formatted.
+     * @return "number" divided by the rule's divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number / divisor);
+    }
+
+    /**
+     * Divides the number by the rule's divisor and returns the quotient.
+     * This is an integral quotient if we're filling in the substitution
+     * using another rule set, but it's the full quotient (integral and
+     * fractional parts) if we're filling in the substitution using
+     * a DecimalFormat.  (This allows things such as "1.2 million".)
+     * @param number The number being formatted
+     * @return "number" divided by the rule's divisor
+     */
+    public double transformNumber(double number) {
+        if (ruleSet == null) {
+            return number / divisor;
+        } else {
+            return Math.floor(number / divisor);
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns newRuleValue times the divisor.  Ignores oldRuleValue.
+     * (The result of matching a << substitution supersedes the base
+     * value of the rule that contains it.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return newRuleValue * divisor
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue * divisor;
+    }
+
+    /**
+     * Sets the upper bound down to the rule's divisor.
+     * @param oldUpperBound Ignored.
+     * @return The rule's divisor.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a multiplier substitution is &lt;.
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// ModulusSubstitution
+//===================================================================
+
+/**
+ * A substitution that divides the number being formatted by the its rule's
+ * divisor and formats the remainder.  Represented by "&gt;&gt;" in a
+ * regular rule.
+ */
+class ModulusSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The divisor of the rule owning this substitution
+     */
+    double divisor;
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, the rule to use to format
+     * the substitution value.  Otherwise, null.
+     */
+    NFRule ruleToUse;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a ModulusSubstution.  In addition to the inherited
+     * members, a ModulusSubstitution keeps track of the divisor of the
+     * rule that owns it, and may also keep a reference to the rule
+     * that precedes the rule containing this substitution in the rule
+     * set's rule list.
+     * @param pos The substitution's position in its rule's rule text
+     * @param divisor The divisor of the rule that owns this substitution
+     * @param rulePredecessor The rule that precedes this substitution's
+     * rule in its rule set's rule list
+     * @param formatter The RuleBasedNumberFormat owning this substitution
+     * @param description The description for this substitution
+     */
+    ModulusSubstitution(int pos,
+                        double divisor,
+                        NFRule rulePredecessor,
+                        NFRuleSet ruleSet,
+                        RuleBasedNumberFormat formatter,
+                        String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // the owning rule's divisor controls the behavior of this
+        // substitution: rather than keeping a backpointer to the rule,
+        // we keep a copy of the divisor
+        this.divisor = divisor;
+
+        // the >>> token doesn't alter how this substituion calculates the
+        // values it uses for formatting and parsing, but it changes
+        // what's done with that value after it's obtained: >>> short-
+        // circuits the rule-search process and goes straight to the
+        // specified rule to format the substitution value
+        if (description.equals(">>>")) {
+            ruleToUse = rulePredecessor;
+        } else {
+            ruleToUse = null;
+        }
+    }
+
+    /**
+     * Makes the substitution's divisor conform to that of the rule
+     * that owns it.  Used when the divisor is determined after creation.
+     * @param radix The radix of the divsor.
+     * @param exponent The exponent of the divisor.
+     */
+    public void setDivisor(int radix, int exponent) {
+        divisor = Math.pow(radix, exponent);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Augments the inherited equals() function by comparing divisors and
+     * ruleToUse.
+     * @param that The other substitution
+     * @return true if the two substitutions are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            ModulusSubstitution that2 = (ModulusSubstitution)that;
+
+            return divisor == that2.divisor;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param pos The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int pos) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, pos);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            long numberToFormat = transformNumber(number);
+            ruleToUse.doFormat(numberToFormat, toInsertInto, pos + this.pos);
+        }
+    }
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, use ruleToUse to fill in
+     * the substitution.  Otherwise, just use the superclass function.
+     * @param number The number being formatted
+     * @toInsertInto The string to insert the result of this substitution
+     * into
+     * @param pos The position of the rule text in toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+        // if this isn't a >>> substitution, just use the inherited version
+        // of this function (which uses either a rule set or a DecimalFormat
+        // to format its substitution value)
+        if (ruleToUse == null) {
+            super.doSubstitution(number, toInsertInto, pos);
+
+        // a >>> substitution goes straight to a particular rule to
+        // format the substitution value
+        } else {
+            double numberToFormat = transformNumber(number);
+
+            ruleToUse.doFormat(numberToFormat, toInsertInto, pos + this.pos);
+        }
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public long transformNumber(long number) {
+        return (long)Math.floor(number % divisor);
+    }
+
+    /**
+     * Divides the number being formatted by the rule's divisor and
+     * returns the remainder.
+     * @param number The number being formatted
+     * @return "number" mod divisor
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number % divisor);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If this is a &gt;&gt;&gt; substitution, match only against ruleToUse.
+     * Otherwise, use the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, updated on exit to point to
+     * the first unmatched character.
+     * @param baseValue The partial parse result prior to calling this
+     * routine.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if this isn't a >>> substitution, we can just use the
+        // inherited parse() routine to do the parsing
+        if (ruleToUse == null) {
+            return super.doParse(text, parsePosition, baseValue, upperBound, lenientParse);
+
+        // but if it IS a >>> substitution, we have to do it here: we
+        // use the specific rule's doParse() method, and then we have to
+        // do some of the other work of NFRuleSet.parse()
+        } else {
+            Number tempResult = ruleToUse.doParse(text, parsePosition, false, upperBound);
+
+            if (parsePosition.getIndex() != 0) {
+                double result = tempResult.doubleValue();
+
+                result = composeRuleValue(result, baseValue);
+                if (result == (long)result) {
+                    return new Long((long)result);
+                } else {
+                    return new Double(result);
+                }
+            } else {
+                return tempResult;
+            }
+        }
+    }
+
+    /**
+     * Returns the highest multiple of the rule's divisor that its less
+     * than or equal to oldRuleValue, plus newRuleValue.  (The result
+     * is the sum of the result of parsing the substitution plus the
+     * base valueof the rule containing the substitution, but if the
+     * owning rule's base value isn't an even multiple of its divisor,
+     * we have to round it down to a multiple of the divisor, or we
+     * get unwanted digits in the result.)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The base value of the rule containing the
+     * substitution
+     * @return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return (oldRuleValue - (oldRuleValue % divisor)) + newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound down to the owning rule's divisor
+     * @param oldUpperBound Ignored
+     * @return The owning rule's dvisor
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return divisor;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true.  This _is_ a ModulusSubstitution.
+     * @return true
+     */
+    public boolean isModulusSubstitution() {
+        return true;
+    }
+
+    /**
+     * The token character of a ModulusSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// IntegralPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the number's integral part.  This is
+ * represented by &lt;&lt; in a fraction rule.
+ */
+class IntegralPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an IntegralPartSubstitution.  This just calls
+     * the superclass constructor.
+     */
+    IntegralPartSubstitution(int pos,
+                             NFRuleSet ruleSet,
+                             RuleBasedNumberFormat formatter,
+                             String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the number's integral part. (For a long, that's just the
+     * number unchanged.)
+     * @param number The number being formatted
+     * @return "number" unchanged
+     */
+    public long transformNumber(long number) {
+        return number;
+    }
+
+    /**
+     * Returns the number's integral part.
+     * @param number The integral part of the number being formatted
+     * @return floor(number)
+     */
+    public double transformNumber(double number) {
+        return Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the sum of the result of parsing the substitution and the
+     * owning rule's base value.  (The owning rule, at best, has an
+     * integral-part substitution and a fractional-part substitution,
+     * so we can safely just add them.)
+     * @param newRuleValue The result of matching the substitution
+     * @param oldRuleValue The partial result of the parse prior to
+     * calling this function
+     * @return oldRuleValue + newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * An IntegralPartSubstitution sets the upper bound back up so all
+     * potentially matching rules are considered.
+     * @param oldUpperBound Ignored
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * An IntegralPartSubstitution's token character is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// FractionalPartSubstitution
+//===================================================================
+
+/**
+ * A substitution that formats the fractional part of a number.  This is
+ * represented by &gt;&gt; in a fraction rule.
+ */
+class FractionalPartSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * true if this substitution should have the default "by digits"
+     * behavior, false otherwise
+     */
+    private boolean byDigits = false;
+
+    /**
+     * The largest number of digits after the decimal point that this
+     * object will show in "by digits" mode
+     */
+    private static final int MAXDECIMALDIGITS = 8;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a FractionalPartSubstitution.  This object keeps a flag
+     * telling whether it should format by digits or not.  In addition,
+     * it marks the rule set it calls (if any) as a fraction rule set.
+     */
+    FractionalPartSubstitution(int pos,
+                               NFRuleSet ruleSet,
+                               RuleBasedNumberFormat formatter,
+                               String description) {
+        super(pos, ruleSet, formatter, description);
+        if (description.equals(">>") || ruleSet == this.ruleSet) {
+            byDigits = true;
+        } else {
+            this.ruleSet.makeIntoFractionRuleSet();
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, fills in the substitution one decimal digit
+     * at a time using the rule set containing this substitution.
+     * Otherwise, uses the superclass function.
+     * @param number The number being formatted
+     * @param toInsertInto The string to insert the result of formatting
+     * the substitution into
+     * @param pos The position of the owning rule's rule text in
+     * toInsertInto
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+        // if we're not in "byDigits" mode, just use the inherited
+        // doSubstitution() routine
+        if (!byDigits) {
+            super.doSubstitution(number, toInsertInto, pos);
+
+        // if we're in "byDigits" mode, transform the value into an integer
+        // by moving the decimal point eight places to the right and
+        // pulling digits off the right one at a time, formatting each digit
+        // as an integer using this substitution's owning rule set
+        // (this is slower, but more accurate, than doing it from the
+        // other end)
+        } else {
+            int numberToFormat = (int)Math.round(transformNumber(number) * Math.pow(
+                            10, MAXDECIMALDIGITS));
+            // this flag keeps us from formatting trailing zeros.  It starts
+            // out false because we're pulling from the right, and switches
+            // to true the first time we encounter a non-zero digit
+            boolean doZeros = false;
+            for (int i = 0; i < MAXDECIMALDIGITS; i++) {
+                int digit = numberToFormat % 10;
+                if (digit != 0 || doZeros) {
+                    if (doZeros) {
+                        toInsertInto.insert(pos + this.pos, ' ');
+                    }
+                    doZeros = true;
+                    ruleSet.format(digit, toInsertInto, pos + this.pos);
+                }
+                numberToFormat /= 10;
+            }
+        }
+    }
+
+    /**
+     * Returns the fractional part of the number, which will always be
+     * zero if it's a long.
+     * @param number The number being formatted
+     * @return 0
+     */
+    public long transformNumber(long number) {
+        return 0;
+    }
+
+    /**
+     * Returns the fractional part of the number.
+     * @param number The number being formatted.
+     * @return number - floor(number)
+     */
+    public double transformNumber(double number) {
+        return number - Math.floor(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * If in "by digits" mode, parses the string as if it were a string
+     * of individual digits; otherwise, uses the superclass function.
+     * @param text The string to parse
+     * @param parsePosition Ignored on entry, but updated on exit to point
+     * to the first unmatched character
+     * @param baseValue The partial parse result prior to entering this
+     * function
+     * @param upperBound Only consider rules with base values lower than
+     * this when filling in the substitution
+     * @param lenientParse If true, try matching the text as numerals if
+     * matching as words doesn't work
+     * @return If the match was successful, the current partial parse
+     * result; otherwise new Long(0).  The result is either a Long or
+     * a Double.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // if we're not in byDigits mode, we can just use the inherited
+        // doParse()
+        if (!byDigits) {
+            return super.doParse(text, parsePosition, baseValue, 0, lenientParse);
+
+        // if we ARE in byDigits mode, parse the text one digit at a time
+        // using this substitution's owning rule set (we do this by setting
+        // upperBound to 10 when calling doParse() ) until we reach
+        // nonmatching text
+        } else {
+            String workText = new String(text);
+            ParsePosition workPos = new ParsePosition(1);
+            double result = 0;
+            int digit;
+            double p10 = 0.1;
+
+            while (workText.length() > 0 && workPos.getIndex() != 0) {
+                workPos.setIndex(0);
+                digit = ruleSet.parse(workText, workPos, 10).intValue();
+                if (lenientParse && workPos.getIndex() == 0) {
+                    digit = java.text.NumberFormat.getInstance().parse(workText, workPos).intValue();
+                }
+
+                if (workPos.getIndex() != 0) {
+                    result += digit * p10;
+                    p10 /= 10;
+                    parsePosition.setIndex(parsePosition.getIndex() + workPos.getIndex());
+                    workText = workText.substring(workPos.getIndex());
+                    while (workText.length() > 0 && workText.charAt(0) == ' ') {
+                        workText = workText.substring(1);
+                        parsePosition.setIndex(parsePosition.getIndex() + 1);
+                    }
+                }
+            }
+            result = composeRuleValue(result, baseValue);
+            return new Double(result);
+        }
+    }
+
+    /**
+     * Returns the sum of the two partial parse results.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return newRuleValue + oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue + oldRuleValue;
+    }
+
+    /**
+     * Not used.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;   // this value is ignored
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a FractionalPartSubstitution is &gt;.
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// AbsoluteValueSubstitution
+//===================================================================
+
+ /**
+  * A substitution that formats the absolute value of the number.
+  * This substition is represented by &gt;&gt; in a negative-number rule.
+  */
+class AbsoluteValueSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs an AbsoluteValueSubstitution.  This just uses the
+     * superclass constructor.
+     */
+    AbsoluteValueSubstitution(int pos,
+                              NFRuleSet ruleSet,
+                              RuleBasedNumberFormat formatter,
+                              String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public long transformNumber(long number) {
+        return Math.abs(number);
+    }
+
+    /**
+     * Returns the absolute value of the number.
+     * @param number The number being formatted.
+     * @return abs(number)
+     */
+    public double transformNumber(double number) {
+        return Math.abs(number);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the addtive inverse of the result of parsing the
+     * substitution (this supersedes the earlier partial result)
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The partial parse result prior to calling
+     * this function
+     * @return -newRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return -newRuleValue;
+    }
+
+    /**
+     * Sets the upper bound beck up to consider all rules
+     * @param oldUpperBound Ignored.
+     * @return Double.MAX_VALUE
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return Double.MAX_VALUE;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for an AbsoluteValueSubstitution is &gt;
+     * @return '&gt;'
+     */
+    char tokenChar() {
+        return '>';
+    }
+}
+
+//===================================================================
+// NumeratorSubstitution
+//===================================================================
+
+/**
+ * A substitution that multiplies the number being formatted (which is
+ * between 0 and 1) by the base value of the rule that owns it and
+ * formats the result.  It is represented by &lt;&lt; in the rules
+ * in a fraction rule set.
+ */
+class NumeratorSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The denominator of the fraction we're finding the numerator for.
+     * (The base value of the rule that owns this substitution.)
+     */
+    double denominator;
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NumberatorSubstitution.  In addition to the inherited
+     * fields, a NumeratorSubstitution keeps track of a denominator, which
+     * is merely the base value of the rule that owns it.
+     */
+    NumeratorSubstitution(int pos,
+                          double denominator,
+                          NFRuleSet ruleSet,
+                          RuleBasedNumberFormat formatter,
+                          String description) {
+        super(pos, ruleSet, formatter, description);
+
+        // this substitution's behavior depends on the rule's base value
+        // Rather than keeping a backpointer to the rule, we copy its
+        // base value here
+        this.denominator = denominator;
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Tests two NumeratorSubstitutions for equality
+     * @param that The other NumeratorSubstitution
+     * @return true if the two objects are functionally equivalent
+     */
+    public boolean equals(Object that) {
+        if (super.equals(that)) {
+            NumeratorSubstitution that2 = (NumeratorSubstitution)that;
+
+            return denominator == that2.denominator;
+        } else {
+            return false;
+        }
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public long transformNumber(long number) {
+        return Math.round(number * denominator);
+    }
+
+    /**
+     * Returns the number being formatted times the denominator.
+     * @param number The number being formatted
+     * @return number * denominator
+     */
+    public double transformNumber(double number) {
+        return Math.round(number * denominator);
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Dispatches to the inherited version of this function, but makes
+     * sure that lenientParse is off.
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        // we don't have to do anything special to do the parsing here,
+        // but we have to turn lenient parsing off-- if we leave it on,
+        // it SERIOUSLY messes up the algorithm
+        return super.doParse(text, parsePosition, baseValue, upperBound, false);
+    }
+
+    /**
+     * Divides the result of parsing the substitution by the partial
+     * parse result.
+     * @param newRuleValue The result of parsing the substitution
+     * @param oldRuleValue The owning rule's base value
+     * @return newRuleValue / oldRuleValue
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return newRuleValue / oldRuleValue;
+    }
+
+    /**
+     * Sets the uper bound down to this rule's base value
+     * @param oldUpperBound Ignored
+     * @return The base value of the rule owning this substitution
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return denominator;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessor
+    //-----------------------------------------------------------------------
+
+    /**
+     * The token character for a NumeratorSubstitution is &lt;
+     * @return '&lt;'
+     */
+    char tokenChar() {
+        return '<';
+    }
+}
+
+//===================================================================
+// NullSubstitution
+//===================================================================
+
+/**
+ * A substitution which does nothing.  This class exists just to simplify
+ * the logic in some other routines so that they don't have to worry
+ * about how many substitutions a rule has.
+ */
+class NullSubstitution extends NFSubstitution {
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    //-----------------------------------------------------------------------
+    // construction
+    //-----------------------------------------------------------------------
+
+    /**
+     * Constructs a NullSubstitution.  This just delegates to the superclass
+     * constructor, but the only value we really care about is the position.
+     */
+    NullSubstitution(int pos,
+                     NFRuleSet ruleSet,
+                     RuleBasedNumberFormat formatter,
+                     String description) {
+        super(pos, ruleSet, formatter, description);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Only checks for class equality
+     */
+    public boolean equals(Object that) {
+        return super.equals(that);
+    }
+
+    /**
+     * NullSubstitutions don't show up in the textual representation
+     * of a RuleBasedNumberFormat
+     */
+    public String toString() {
+        return "";
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting
+    //-----------------------------------------------------------------------
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(long number, StringBuffer toInsertInto, int pos) {
+    }
+
+    /**
+     * Does nothing.
+     */
+    public void doSubstitution(double number, StringBuffer toInsertInto, int pos) {
+    }
+
+    /**
+     * Never called.
+     */
+    public long transformNumber(long number) {
+        return 0;
+    }
+
+    /**
+     * Never called.
+     */
+    public double transformNumber(double number) {
+        return 0;
+    }
+
+    //-----------------------------------------------------------------------
+    // parsing
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns the partial parse result unchanged
+     */
+    public Number doParse(String text, ParsePosition parsePosition, double baseValue,
+                        double upperBound, boolean lenientParse) {
+        if (baseValue == (long)baseValue) {
+            return new Long((long)baseValue);
+        } else {
+            return new Double(baseValue);
+        }
+    }
+
+    /**
+     * Never called.
+     */
+    public double composeRuleValue(double newRuleValue, double oldRuleValue) {
+        return 0;
+    }
+
+    /**
+     * Never called.
+     */
+    public double calcUpperBound(double oldUpperBound) {
+        return 0;
+    }
+
+    //-----------------------------------------------------------------------
+    // simple accessors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns true (this _is_ a NillSubstitution).
+     * @return true
+     */
+    public boolean isNullSubstitution() {
+        return true;
+    }
+
+    /**
+     * Never called.
+     */
+    char tokenChar() {
+        return ' ';
+    }
+}
+
diff --git a/src/com/ibm/text/Normalizer.java b/src/com/ibm/text/Normalizer.java
new file mode 100755
index 0000000..a8f212b
--- /dev/null
+++ b/src/com/ibm/text/Normalizer.java
@@ -0,0 +1,1585 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/Normalizer.java,v $ 
+ * $Date: 2000/03/10 04:07:21 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.lang.Character;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import com.ibm.util.CompactByteArray;
+
+/**
+ * <tt>Normalizer</tt> transforms Unicode text into an equivalent composed or
+ * decomposed form, allowing for easier sorting and searching of text.
+ * <tt>Normalizer</tt> supports the standard normalization forms described in
+ * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+ * Unicode Technical Report #15</a>.
+ * <p>
+ * Characters with accents or other adornments can be encoded in
+ * several different ways in Unicode.  For example, take the character "Â"
+ * (A-acute).   In Unicode, this can be encoded as a single character (the
+ * "composed" form):
+ * <pre>
+ *      00C1    LATIN CAPITAL LETTER A WITH ACUTE</pre>
+ * or as two separate characters (the "decomposed" form):
+ * <pre>
+ *      0041    LATIN CAPITAL LETTER A
+ *      0301    COMBINING ACUTE ACCENT</pre>
+ * <p>
+ * To a user of your program, however, both of these sequences should be
+ * treated as the same "user-level" character "Â".  When you are searching or
+ * comparing text, you must ensure that these two sequences are treated
+ * equivalently.  In addition, you must handle characters with more than one
+ * accent.  Sometimes the order of a character's combining accents is
+ * significant, while in other cases accent sequences in different orders are
+ * really equivalent.
+ * <p>
+ * Similarly, the string "ffi" can be encoded as three separate letters:
+ * <pre>
+ *      0066    LATIN SMALL LETTER F
+ *      0066    LATIN SMALL LETTER F
+ *      0069    LATIN SMALL LETTER I</pre>
+ * or as the single character
+ * <pre>
+ *      FB03    LATIN SMALL LIGATURE FFI</pre>
+ * <p>
+ * The ffi ligature is not a distinct semantic character, and strictly speaking
+ * it shouldn't be in Unicode at all, but it was included for compatibility
+ * with existing character sets that already provided it.  The Unicode standard
+ * identifies such characters by giving them "compatibility" decompositions
+ * into the corresponding semantic characters.  When sorting and searching, you
+ * will often want to use these mappings.
+ * <p>
+ * <tt>Normalizer</tt> helps solve these problems by transforming text into the
+ * canonical composed and decomposed forms as shown in the first example above.
+ * In addition, you can have it perform compatibility decompositions so that
+ * you can treat compatibility characters the same as their equivalents.
+ * Finally, <tt>Normalizer</tt> rearranges accents into the proper canonical
+ * order, so that you do not have to worry about accent rearrangement on your
+ * own.
+ * <p>
+ * <tt>Normalizer</tt> adds one optional behavior, {@link #IGNORE_HANGUL},
+ * that differs from
+ * the standard Unicode Normalization Forms.  This option can be passed
+ * to the {@link #Normalizer constructors} and to the static
+ * {@link #compose compose} and {@link #decompose decompose} methods.  This
+ * option, and any that are added in the future, will be turned off by default.
+ * <p>
+ * There are three common usage models for <tt>Normalizer</tt>.  In the first,
+ * the static {@link #normalize normalize()} method is used to process an
+ * entire input string at once.  Second, you can create a <tt>Normalizer</tt>
+ * object and use it to iterate through the normalized form of a string by
+ * calling {@link #first} and {@link #next}.  Finally, you can use the
+ * {@link #setIndex setIndex()} and {@link #getIndex} methods to perform
+ * random-access iteration, which is very useful for searching.
+ * <p>
+ * <b>Note:</b> <tt>Normalizer</tt> objects behave like iterators and have
+ * methods such as <tt>setIndex</tt>, <tt>next</tt>, <tt>previous</tt>, etc.
+ * You should note that while the <tt>setIndex</tt> and <tt>getIndex</tt> refer
+ * to indices in the underlying <em>input</em> text being processed, the
+ * <tt>next</tt> and <tt>previous</tt> methods it iterate through characters
+ * in the normalized <em>output</em>.  This means that there is not
+ * necessarily a one-to-one correspondence between characters returned
+ * by <tt>next</tt> and <tt>previous</tt> and the indices passed to and
+ * returned from <tt>setIndex</tt> and <tt>getIndex</tt>.  It is for this
+ * reason that <tt>Normalizer</tt> does not implement the
+ * {@link CharacterIterator} interface.
+ * <p>
+ * <b>Note:</b> <tt>Normalizer</tt> is currently based on version 2.1.8
+ * of the <a href="http://www.unicode.org" target="unicode">Unicode Standard</a>.
+ * It will be updated as later versions of Unicode are released.  If you are
+ * using this class on a JDK that supports an earlier version of Unicode, it
+ * is possible that <tt>Normalizer</tt> may generate composed or dedecomposed
+ * characters for which your JDK's {@link java.lang.Character} class does not
+ * have any data.
+ * <p>
+ * @author Laura Werner, Mark Davis
+ */
+public final class Normalizer {
+
+    /**
+     * Constant indicating that the end of the iteration has been reached.
+     * This is guaranteed to have the same value as {@link CharacterIterator#DONE}.
+     */
+    public static final char DONE = CharacterIterator.DONE;
+
+    // This tells us what the bits in the "mode" object mean.
+    private static final int COMPAT_BIT = 1;
+    private static final int DECOMP_BIT = 2;
+    private static final int COMPOSE_BIT = 4;
+
+    /**
+     * This class represents the mode of a {@link Normalizer}
+     * object, <i>i.e.</i> the Unicode Normalization Form of the
+     * text that the <tt>Normalizer</tt> produces.  <tt>Mode</tt> objects
+     * are used as arguments to the {@link Normalizer#Normalizer constructors}
+     * and {@link Normalizer#setMode setMode} method of <tt>Normalizer</tt>.
+     * <p>
+     * Clients cannot create <tt>Mode</tt> objects directly.
+     * Instead, use the predefined constants {@link Normalizer#NO_OP},
+     * {@link Normalizer#COMPOSE}, {@link Normalizer#COMPOSE_COMPAT},
+     * {@link Normalizer#DECOMP}, and {@link Normalizer#DECOMP_COMPAT}.
+     * <p>
+     * @see Normalizer
+     */
+    public static final class Mode {
+        Mode(int m) {
+            mode = m;
+        }
+        final boolean compat() {
+            return (mode & COMPAT_BIT) != 0;
+        }
+        final boolean compose() {
+            return (mode & COMPOSE_BIT) != 0;
+        }
+        final boolean decomp() {
+            return (mode & DECOMP_BIT) != 0;
+        }
+        final int mode;
+    };
+
+    /**
+     * Null operation for use with the {@link #Normalizer constructors}
+     * and the static {@link #normalize normalize} method.  This value tells
+     * the <tt>Normalizer</tt> to do nothing but return unprocessed characters
+     * from the underlying String or CharacterIterator.  If you have code which
+     * requires raw text at some times and normalized text at others, you can
+     * use <tt>NO_OP</tt> for the cases where you want raw text, rather
+     * than having a separate code path that bypasses <tt>Normalizer</tt>
+     * altogether.
+     * <p>
+     * @see #setMode
+     */
+    public static final Mode NO_OP = new Mode(0);
+
+    /**
+     * Canonical decomposition followed by canonical composition.  Used with the
+     * {@link #Normalizer constructors} and the static {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>C</b>.
+     * <p>
+     * @see #setMode
+     */
+    public static final Mode COMPOSE = new Mode(COMPOSE_BIT);
+
+    /**
+     * Compatibility decomposition followed by canonical composition.
+     * Used with the {@link #Normalizer constructors} and the static
+     * {@link #normalize normalize} method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>KC</b>.
+     * <p>
+     * @see #setMode
+     */
+    public static final Mode COMPOSE_COMPAT = new Mode(COMPOSE_BIT | COMPAT_BIT);
+
+    /**
+     * Canonical decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>D</b>.
+     * <p>
+     * @see #setMode
+     */
+    public static final Mode DECOMP = new Mode(DECOMP_BIT);
+
+    /**
+     * Compatibility decomposition.  This value is passed to the
+     * {@link #Normalizer constructors} and the static {@link #normalize normalize}
+     * method to determine the operation to be performed.
+     * <p>
+     * If all optional features (<i>e.g.</i> {@link #IGNORE_HANGUL}) are turned
+     * off, this operation produces output that is in
+     * <a href=http://www.unicode.org/unicode/reports/tr15/>Unicode Canonical Form</a>
+     * <b>KD</b>.
+     * <p>
+     * @see #setMode
+     */
+    public static final Mode DECOMP_COMPAT = new Mode(DECOMP_BIT | COMPAT_BIT);
+
+    /**
+     * Option to disable Hangul/Jamo composition and decomposition.
+     * This option applies to Korean text,
+     * which can be represented either in the Jamo alphabet or in Hangul
+     * characters, which are really just two or three Jamo combined
+     * into one visual glyph.  Since Jamo takes up more storage space than
+     * Hangul, applications that process only Hangul text may wish to turn
+     * this option on when decomposing text.
+     * <p>
+     * The Unicode standard treates Hangul to Jamo conversion as a
+     * canonical decomposition, so this option must be turned <b>off</b> if you
+     * wish to transform strings into one of the standard
+     * <a href="http://www.unicode.org/unicode/reports/tr15/" target="unicode">
+     * Unicode Normalization Forms</a>.
+     * <p>
+     * @see #setOption
+     */
+    public static final int IGNORE_HANGUL = 0x0001;
+
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of a given string.
+     * <p>
+     * @param str   The string to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     */
+    public Normalizer(String str, Mode mode) {
+        this(new StringCharacterIterator(str), mode, 0);
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of a given string.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this object.
+     * <p>
+     * @param str   The string to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     *
+     * @param opt   Any optional features to be enabled.
+     *              Currently the only available option is {@link #IGNORE_HANGUL}.
+     *              If you want the default behavior corresponding to one of the
+     *              standard Unicode Normalization Forms, use 0 for this argument.
+     */
+    public Normalizer(String str, Mode mode, int opt) {
+        this(new StringCharacterIterator(str), mode, opt);
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     *
+     */
+    public Normalizer(CharacterIterator iter, Mode mode) {
+        this(iter, mode, 0);
+    }
+
+    /**
+     * Creates a new <tt>Normalizer</tt> object for iterating over the
+     * normalized form of the given text.
+     * <p>
+     * @param iter  The input text to be normalized.  The normalization
+     *              will start at the beginning of the string.
+     *
+     * @param mode  The normalization mode.
+     *
+     * @param opt   Any optional features to be enabled.
+     *              Currently the only available option is {@link #IGNORE_HANGUL}.
+     *              If you want the default behavior corresponding to one of the
+     *              standard Unicode Normalization Forms, use 0 for this argument.
+     */
+    public Normalizer(CharacterIterator iter, Mode mode, int opt) {
+        text = iter;
+        this.mode = mode;
+        options = opt;
+
+        // Compatibility explosions have lower indices; skip them if necessary
+        minDecomp = mode.compat() ? 0 : DecompData.MAX_COMPAT;
+    }
+
+    /**
+     * Clones this <tt>Normalizer</tt> object.  All properties of this
+     * object are duplicated in the new object, including the cloning of any
+     * {@link CharacterIterator} that was passed in to the constructor
+     * or to {@link #setText(CharacterIterator) setText}.
+     * However, the text storage underlying
+     * the <tt>CharacterIterator</tt> is not duplicated unless the
+     * iterator's <tt>clone</tt> method does so.
+     */
+    public Object clone() {
+        try {
+            Normalizer copy = (Normalizer) super.clone();
+            copy.text = (CharacterIterator) text.clone();
+            return copy;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError(e.toString());
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Static utility methods
+    //-------------------------------------------------------------------------
+
+    /**
+     * Normalizes a <tt>String</tt> using the given normalization operation.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this operation.
+     * Currently the only available option is {@link #IGNORE_HANGUL}.
+     * If you want the default behavior corresponding to one of the standard
+     * Unicode Normalization Forms, use 0 for this argument.
+     * <p>
+     * @param str       the input string to be normalized.
+     *
+     * @param aMode     the normalization mode
+     *
+     * @param options   the optional features to be enabled.
+     */
+    public static String normalize(String str, Mode mode, int options) {
+        if (mode.compose()) {
+            return compose(str, mode.compat(), options);
+        }
+        if (mode.decomp()) {
+            return decompose(str, mode.compat(), options);
+        }
+        return str;
+    }
+
+    //-------------------------------------------------------------------------
+    // Compose methods
+    //-------------------------------------------------------------------------
+
+    /**
+     * Compose a <tt>String</tt>.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this operation.
+     * Currently the only available option is {@link #IGNORE_HANGUL}.
+     * If you want the default behavior corresponding
+     * to Unicode Normalization Form <b>C</b> or <b>KC</b>,
+     * use 0 for this argument.
+     * <p>
+     * @param source    the string to be composed.
+     *
+     * @param compat    Perform compatibility decomposition before composition.
+     *                  If this argument is <tt>false</tt>, only canonical
+     *                  decomposition will be performed.
+     *
+     * @param options   the optional features to be enabled.
+     *
+     * @return          the composed string.
+     */
+    public static String compose(String source, boolean compat, int options)
+    {
+        StringBuffer result = new StringBuffer();
+        StringBuffer explodeBuf = new StringBuffer();
+
+        int     explodePos = EMPTY;         // Position in input buffer
+        int     basePos = 0;                // Position of last base in output string
+        int     baseIndex = 0;              // Index of last base in "actions" array
+        int     classesSeen = 0;            // Combining classes seen since last base
+        int     action;
+
+        // Compatibility explosions have lower indices; skip them if necessary
+        int minExplode = compat ? 0 : ComposeData.MAX_COMPAT;
+        int minDecomp  = compat ? 0 : DecompData.MAX_COMPAT;
+
+        out("minExplode = " + minExplode);
+
+        int i = 0;
+        while (i < source.length() || explodePos != EMPTY) {
+            // Get the next char from either the buffer or the source
+            char ch;
+            if (explodePos == EMPTY) {
+                ch = source.charAt(i++);
+            } else {
+                ch = explodeBuf.charAt(explodePos++);
+                if (explodePos >= explodeBuf.length()) {
+                    explodePos = EMPTY;
+                    explodeBuf.setLength(0);
+                }
+            }
+
+            // Get the basic info for the character
+            int charInfo = composeLookup(ch);
+            int type = charInfo & ComposeData.TYPE_MASK;
+            int index = charInfo >>> ComposeData.INDEX_SHIFT;
+
+            out("Got char " + hex(ch) + ", type=" + type + ", index=" + index);
+
+            if (type == ComposeData.BASE || type == ComposeData.EXPLODING_BASE && index < minExplode) {
+                classesSeen = 0;
+                baseIndex = index;
+                basePos = result.length();
+                result.append(ch);
+            }
+            else if (type == ComposeData.COMBINING && index > 0)
+            {
+                int cclass = ComposeData.typeMask[index];
+
+                // We can only combine a character with the base if we haven't
+                // already seen a combining character with the same canonical class.
+                if (type == ComposeData.COMBINING && (classesSeen & cclass) == 0
+                    && (action = composeAction(baseIndex, index)) > 0)
+                {
+                    if (action > ComposeData.MAX_COMPOSED) {
+                        // Pairwise explosion.  Actions above this value are really
+                        // indices into an array that in turn contains indices
+                        // into the exploding string table
+                        // TODO: What if there are unprocessed chars in the explode buffer?
+                        char newBase = pairExplode(explodeBuf, action);
+                        explodePos = 0;
+                        result.setCharAt(basePos, newBase);
+
+                        baseIndex = composeLookup(newBase) >>> ComposeData.INDEX_SHIFT;
+                    } else {
+                        // Normal pairwise combination.  Replace the base char
+                        char newBase = (char) action;
+                        result.setCharAt(basePos, newBase);
+
+                        baseIndex = composeLookup(newBase) >>> ComposeData.INDEX_SHIFT;
+                    }
+                    //
+                    // Since there are Unicode characters that cannot be combined in arbitrary
+                    // order, we have to re-process any combining marks that go with this
+                    // base character.  There are only four characters in Unicode that have
+                    // this problem.  If they are fixed in Unicode 3.0, this code can go away.
+                    //
+                    int len = result.length();
+                    if (len - basePos > 1) {
+                        for (int j = basePos+1; j < len; j++) {
+                            explodeBuf.append(result.charAt(j));
+                        }
+                        result.setLength(basePos+1);
+                        classesSeen = 0;
+                        if (explodePos == EMPTY) explodePos = 0;
+                    }
+                } else {
+                    // No combination with this character
+                    bubbleAppend(result, ch, cclass);
+                    classesSeen |= cclass;
+                }
+            }
+            else if (index > minExplode) {
+                // Single exploding character
+                explode(explodeBuf, index);
+                explodePos = 0;
+                out("explosion: " + hex(ch) + " --> " + hex(explodeBuf));
+            }
+            else if (type == ComposeData.HANGUL && minExplode == 0) {
+                // If we're in compatibility mode we need to decompose Hangul to Jamo,
+                // because some of the Jamo might have compatibility decompositions.
+                hangulToJamo(ch, explodeBuf, minDecomp);
+                out("decomposed hangul " + hex(ch) + " to jamo " + hex(explodeBuf));
+                explodePos = 0;
+            }
+            else if (type == ComposeData.INITIAL_JAMO) {
+                classesSeen = 0;
+                baseIndex = ComposeData.INITIAL_JAMO_INDEX;
+                basePos = result.length();
+                result.append(ch);
+                out("got initial jamo " + hex(ch));
+            }
+            else if (type == ComposeData.MEDIAL_JAMO && classesSeen == 0
+                        && baseIndex == ComposeData.INITIAL_JAMO_INDEX) {
+                // If the last character was an initial jamo, we can combine it with this
+                // one to create a Hangul character.
+                int l = result.charAt(basePos) - JAMO_LBASE;
+                int v = ch - JAMO_VBASE;
+                char newCh = (char)(HANGUL_BASE + (l*JAMO_VCOUNT + v) * JAMO_TCOUNT);
+                result.setCharAt(basePos, newCh);
+
+                out("got medial jamo " + hex(ch) + ", replacing with Hangul " + hex(newCh));
+
+                baseIndex = ComposeData.MEDIAL_JAMO_INDEX;
+            }
+            else if (type == ComposeData.FINAL_JAMO && classesSeen == 0
+                        && baseIndex == ComposeData.MEDIAL_JAMO_INDEX) {
+                // If the last character was a medial jamo that we turned into Hangul,
+                // we can add this character too.
+                char newCh = (char)(result.charAt(basePos) + (ch - JAMO_TBASE));
+                result.setCharAt(basePos, newCh);
+
+                out("got final jamo " + hex(ch) + ", replacing with Hangul " + hex(newCh));
+
+                baseIndex = 0;
+                basePos = -1;
+                classesSeen = 0;
+            } else {
+                baseIndex = 0;
+                basePos = -1;
+                classesSeen = 0;
+                result.append(ch);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * Decompose starting with current input character and continuing
+     * until just before the next base char.
+     * <p>
+     * <b>Input</b>:
+     * <ul>
+     *  <li>underlying char iter points to first character to decompose
+     * </ul>
+     * <p>
+     * <b>Output:</b>
+     * <ul>
+     *  <li>returns first char of decomposition or DONE if at end
+     *  <li>Underlying char iter is pointing at next base char or past end
+     * </ul>
+     */
+    private char nextCompose()
+    {
+        out("--------------- top of nextCompose() --------------------");
+
+        int     explodePos = EMPTY;         // Position in input buffer
+        int     basePos = 0;                // Position of last base in output string
+        int     baseIndex = 0;              // Index of last base in "actions" array
+        int     classesSeen = 0;            // Combining classes seen since last base
+        int     action;
+        char    lastBase = 0;
+        boolean chFromText = true;
+
+        // Compatibility explosions have lower indices; skip them if necessary
+        int minExplode = mode.compat() ? 0 : ComposeData.MAX_COMPAT;
+        int minDecomp  = mode.compat() ? 0 : DecompData.MAX_COMPAT;
+
+        initBuffer();
+        if (explodeBuf == null) {
+            explodeBuf = new StringBuffer();
+        } else {
+            explodeBuf.setLength(0);
+        }
+
+        char ch = curForward();
+
+        while (ch != DONE) {
+            // Get the basic info for the character
+            int charInfo = composeLookup(ch);
+            int type = charInfo & ComposeData.TYPE_MASK;
+            int index = charInfo >>> ComposeData.INDEX_SHIFT;
+
+            if (type == ComposeData.BASE || type == ComposeData.EXPLODING_BASE && index < minExplode) {
+                if (buffer.length() > 0 && chFromText && explodePos == EMPTY) {
+                    // When we hit a base char in the source text, we can return the text
+                    // that's been composed so far.  We'll re-process this char next time through.
+                    out("returning early because we hit a new base");
+                    break;
+                }
+                classesSeen = 0;
+                baseIndex = index;
+                basePos = buffer.length();
+                buffer.append(ch);
+                out("got BASE char " + hex(ch) + ", type=" + type + ", index=" + index);
+                lastBase = ch;
+            }
+            else if (type == ComposeData.COMBINING && index > 0)
+            {
+                int cclass = ComposeData.typeMask[index];
+
+                out("got COMBINING char " + hex(ch) + ", type=" + type + ", index=" + index
+                        + ", class=" + Integer.toString(cclass,16));
+
+                // We can only combine a character with the base if we haven't
+                // already seen a combining character with the same canonical class.
+                if (type == ComposeData.COMBINING && (classesSeen & cclass) == 0
+                    && (action = composeAction(baseIndex, index)) > 0)
+                {
+                    if (action > ComposeData.MAX_COMPOSED) {
+                        // Pairwise explosion.  Actions above this value are really
+                        // indices into an array that in turn contains indices
+                        // into the exploding string table
+                        // TODO: What if there are unprocessed chars in the explode buffer?
+                        char newBase = pairExplode(explodeBuf, action);
+                        explodePos = 0;
+                        buffer.setCharAt(basePos, newBase);
+
+                        baseIndex = composeLookup(newBase) >>> ComposeData.INDEX_SHIFT;
+
+                        out("Pairwise explosion: " + hex(lastBase) + "," + hex(ch)
+                            + " --> " + hex(newBase) + "," + hex(explodeBuf));
+                        lastBase = newBase;
+                    } else {
+                        // Normal pairwise combination.  Replace the base char
+                        char newBase = (char) action;
+                        buffer.setCharAt(basePos, newBase);
+
+                        baseIndex = composeLookup(newBase) >>> ComposeData.INDEX_SHIFT;
+
+                        out("Pairwise combination: " + hex(lastBase) + "," + hex(ch)
+                            + " --> " + hex(newBase));
+                        lastBase = newBase;
+                    }
+                    //
+                    // Since there are Unicode characters that cannot be combined in arbitrary
+                    // order, we have to re-process any combining marks that go with this
+                    // base character.  There are only four characters in Unicode that have
+                    // this problem.  If they are fixed in Unicode 3.0, this code can go away.
+                    //
+                    int len = buffer.length();
+                    if (len - basePos > 1) {
+                        out("Reprocessing combining marks");
+                        for (int j = basePos+1; j < len; j++) {
+                            explodeBuf.append(buffer.charAt(j));
+                        }
+                        buffer.setLength(basePos+1);
+                        classesSeen = 0;
+                        if (explodePos == EMPTY) explodePos = 0;
+                    }
+                } else {
+                    out("char doesn't combine");
+                    // No combination with this character
+                    bubbleAppend(buffer, ch, cclass);
+                    classesSeen |= cclass;
+                }
+            }
+            else if (index > minExplode) {
+                // Single exploding character
+                explode(explodeBuf, index);
+                explodePos = 0;
+                out("explosion: " + hex(ch) + " --> " + hex(explodeBuf));
+            }
+            else if (type == ComposeData.HANGUL && minExplode == 0) {
+                // If we're in compatibility mode we need to decompose Hangul to Jamo,
+                // because some of the Jamo might have compatibility decompositions.
+                hangulToJamo(ch, explodeBuf, minDecomp);
+                out("decomposed hangul " + hex(ch) + " to jamo " + hex(explodeBuf));
+                explodePos = 0;
+            }
+            else if (type == ComposeData.INITIAL_JAMO) {
+                if (buffer.length() > 0 && chFromText && explodePos == EMPTY) {
+                    // When we hit a base char in the source text, we can return the text
+                    // that's been composed so far.  We'll re-process this char next time through.
+                    out("returning early because we hit a new base");
+                    break;
+                }
+                classesSeen = 0;
+                baseIndex = ComposeData.INITIAL_JAMO_INDEX;
+                basePos = buffer.length();
+                buffer.append(ch);
+                out("got initial jamo " + hex(ch));
+            }
+            else if (type == ComposeData.MEDIAL_JAMO && classesSeen == 0
+                        && baseIndex == ComposeData.INITIAL_JAMO_INDEX) {
+                // If the last character was an initial jamo, we can combine it with this
+                // one to create a Hangul character.
+                int l = buffer.charAt(basePos) - JAMO_LBASE;
+                int v = ch - JAMO_VBASE;
+                char newCh = (char)(HANGUL_BASE + (l*JAMO_VCOUNT + v) * JAMO_TCOUNT);
+                buffer.setCharAt(basePos, newCh);
+
+                out("got medial jamo " + hex(ch) + ", replacing with Hangul " + hex(newCh));
+
+                baseIndex = ComposeData.MEDIAL_JAMO_INDEX;
+            }
+            else if (type == ComposeData.FINAL_JAMO && classesSeen == 0
+                        && baseIndex == ComposeData.MEDIAL_JAMO_INDEX) {
+                // If the last character was a medial jamo that we turned into Hangul,
+                // we can add this character too.
+                char newCh = (char)(buffer.charAt(basePos) + (ch - JAMO_TBASE));
+                buffer.setCharAt(basePos, newCh);
+
+                out("got final jamo " + hex(ch) + ", replacing with Hangul " + hex(newCh));
+
+                baseIndex = 0;
+                basePos = -1;
+                classesSeen = 0;
+            } else {
+                // TODO: deal with JAMO character types
+                baseIndex = 0;
+                basePos = -1;
+                classesSeen = 0;
+                buffer.append(ch);
+                out("UNKNOWN char " + hex(ch));
+            }
+
+            if (explodePos == EMPTY) {
+                ch = text.next();
+                chFromText = true;
+            } else {
+                ch = explodeBuf.charAt(explodePos++);
+                if (explodePos >= explodeBuf.length()) {
+                    explodePos = EMPTY;
+                    explodeBuf.setLength(0);
+                }
+                chFromText = false;
+            }
+        }
+        if (buffer.length() > 0) {
+            bufferLimit = buffer.length() - 1;
+            ch = buffer.charAt(0);
+        } else {
+            ch = DONE;
+            bufferLimit = 0;
+        }
+        return ch;
+    }
+
+    /**
+     * Compose starting with the input char just before the current position
+     * and continuing backward until (and including) the previous base char.
+     * <p>
+     * <b>Input</b>:
+     * <ul>
+     *  <li>underlying char iter points just after last char to decompose
+     * </ul>
+     * <p>
+     * <b>Output:</b>
+     * <ul>
+     *  <li>returns last char of resulting decomposition sequence
+     *  <li>underlying iter points to lowest-index char we decomposed, i.e. the base char
+     * </ul>
+     */
+    private char prevCompose() {
+
+        initBuffer();
+
+        // Slurp up characters until we hit a base char or an initial Jamo
+        char ch;
+        while ((ch = curBackward()) != DONE) {
+            buffer.insert(0, ch);
+
+            // Get the basic info for the character
+            int charInfo = composeLookup(ch);
+            int type = charInfo & ComposeData.TYPE_MASK;
+
+            if (type == ComposeData.BASE || type == ComposeData.EXPLODING_BASE || type == ComposeData.HANGUL
+                || type == ComposeData.INITIAL_JAMO || type == ComposeData.IGNORE)
+            {
+                break;
+            }
+        }
+        // If there's more than one character in the buffer, compose it all at once....
+        if (buffer.length() > 0) {
+            // TODO: The performance of this is awful; add a way to compose
+            // a StringBuffer in place.
+            String composed = compose(buffer.toString(), mode.compat(), options);
+            buffer.setLength(0);
+            buffer.append(composed);
+
+            if (buffer.length() > 1) {
+                bufferLimit = bufferPos = buffer.length() - 1;
+                ch = buffer.charAt(bufferPos);
+            } else {
+                ch = buffer.charAt(0);
+            }
+        }
+        else {
+            ch = DONE;
+        }
+
+        return ch;
+    }
+
+    private static void bubbleAppend(StringBuffer target, char ch, int cclass) {
+        out(" bubbleAppend(" + hex(ch) + ", " + cclass + ")" );
+        int i;
+        for (i = target.length() - 1; i > 0; --i) {
+            int iClass = getComposeClass(target.charAt(i));
+            out(" bubbleAppend: target[" + i + "] is class " + hex((char)iClass));
+
+            if (iClass == 1 || iClass <= cclass) {      // 1 means combining class 0
+                // We've hit something we can't bubble this character past, so insert here
+                break;
+            }
+        }
+        // We need to insert just after character "i"
+        out(" bubbleAppend inserting at index " + (i+1));
+        target.insert(i+1, ch);
+    }
+
+    private static int getComposeClass(char ch) {
+        int cclass = 0;
+        int charInfo = composeLookup(ch);
+        int type = charInfo & ComposeData.TYPE_MASK;
+        if (type == ComposeData.COMBINING) {
+            cclass = ComposeData.typeMask[charInfo >>> ComposeData.INDEX_SHIFT];
+        }
+        return cclass;
+    }
+
+    static final int composeLookup(char ch) {
+        return ComposeData.lookup.elementAt(ch);
+    }
+
+    static final int composeAction(int baseIndex, int comIndex) {
+        return ComposeData.actions.elementAt((char)(baseIndex
+                                            + ComposeData.MAX_BASES*comIndex));
+    }
+
+    static final void explode(StringBuffer target, int index) {
+        char ch;
+        while ((ch = ComposeData.replace.charAt(index++)) != 0)
+        target.append(ch);
+    }
+
+    static final char pairExplode(StringBuffer target, int action) {
+        int index = ComposeData.actionIndex[action - ComposeData.MAX_COMPOSED];
+        explode(target, index + 1);
+        return ComposeData.replace.charAt(index);   // New base char
+    }
+
+
+    //-------------------------------------------------------------------------
+    // Decompose methods
+    //-------------------------------------------------------------------------
+
+    /**
+     * Static method to decompose a <tt>String</tt>.
+     * <p>
+     * The <tt>options</tt> parameter specifies which optional
+     * <tt>Normalizer</tt> features are to be enabled for this operation.
+     * Currently the only available option is {@link #IGNORE_HANGUL}.
+     * The desired options should be OR'ed together to determine the value
+     * of this argument.  If you want the default behavior corresponding
+     * to Unicode Normalization Form <b>D</b> or <b>KD</b>,
+     * use 0 for this argument.
+     * <p>
+     * @param str   the string to be decomposed.
+     *
+     * @param compat    Perform compatibility decomposition.
+     *                  If this argument is <tt>false</tt>, only canonical
+     *                  decomposition will be performed.
+     *
+     *
+     * @return      the decomposed string.
+     */
+    public static String decompose(String source, boolean compat, int options)
+    {
+        boolean hangul = (options & IGNORE_HANGUL) == 0;
+        int     limit  = compat ? 0 : DecompData.MAX_COMPAT;
+
+        StringBuffer result = new StringBuffer();
+        StringBuffer buffer = null;
+
+        int i = 0, bufPtr = -1;
+
+        while (i < source.length() || bufPtr >= 0)
+        {
+            char ch;
+
+            if (bufPtr >= 0) {
+                ch = buffer.charAt(bufPtr++);
+                if (bufPtr == buffer.length()) {
+                    bufPtr = -1;
+                }
+            } else {
+                ch = source.charAt(i++);
+            }
+
+            int offset = DecompData.offsets.elementAt(ch);
+            int index = offset & DecompData.DECOMP_MASK;
+
+            if (index > limit) {
+                if ((offset & DecompData.DECOMP_RECURSE) != 0) {
+                    if (buffer == null) {
+                        buffer = new StringBuffer();
+                    } else {
+                        buffer.setLength(0);
+                    }
+                    doAppend(DecompData.contents, index, buffer);
+                    bufPtr = 0;
+                } else {
+                    doAppend(DecompData.contents, index, result);
+                }
+            } else if (ch >= HANGUL_BASE && ch < HANGUL_LIMIT && hangul) {
+                hangulToJamo(ch, result, limit);
+            } else {
+                result.append(ch);
+            }
+        }
+        fixCanonical(result);
+        return result.toString();
+    }
+
+    /**
+     * Decompose starting with current input character and continuing
+     * until just before the next base char.
+     * <p>
+     * <b>Input</b>:
+     * <ul>
+     *  <li>underlying char iter points to first character to decompose
+     * </ul>
+     * <p>
+     * <b>Output:</b>
+     * <ul>
+     *  <li>returns first char of decomposition or DONE if at end
+     *  <li>Underlying char iter is pointing at next base char or past end
+     * </ul>
+     */
+    private char nextDecomp()
+    {
+        boolean hangul = (options & IGNORE_HANGUL) == 0;
+        char ch = curForward();
+
+        int offset = DecompData.offsets.elementAt(ch);
+        int index = offset & DecompData.DECOMP_MASK;
+
+        if (index > minDecomp || DecompData.canonClass.elementAt(ch) != DecompData.BASE)
+        {
+            initBuffer();
+
+            if (index > minDecomp) {
+                out(" " + hex(ch) + " has decomposition, index=" + index);
+                doAppend(DecompData.contents, index, buffer);
+
+                if ((offset & DecompData.DECOMP_RECURSE) != 0) {
+                    // Need to decompose the output of this decomposition recursively.
+                    for (int i = 0; i < buffer.length(); i++) {
+                        ch = buffer.charAt(i);
+                        index = DecompData.offsets.elementAt(ch) & DecompData.DECOMP_MASK;
+
+                        if (index > minDecomp) {
+                            i += doReplace(DecompData.contents, index, buffer, i);
+                        }
+                    }
+                }
+            } else {
+                buffer.append(ch);
+            }
+            boolean needToReorder = false;
+
+            // Any other combining chacters that immediately follow the decomposed
+            // character must be included in the buffer too, because they're
+            // conceptually part of the same logical character.
+            //
+            // TODO: Some of these might need to be decomposed too.
+            //
+            while ((ch = text.next()) != DONE
+                && DecompData.canonClass.elementAt(ch) != DecompData.BASE)
+            {
+                needToReorder = true;
+                buffer.append(ch);
+            }
+
+            if (buffer.length() > 1 && needToReorder) {
+                // If there is more than one combining character in the buffer,
+                // put them into the canonical order.
+                // But we don't need to sort if only characters are the ones that
+                // resulted from decomosing the base character.
+                fixCanonical(buffer);
+            }
+            bufferLimit = buffer.length() - 1;
+            ch = buffer.charAt(0);
+        } else {
+            // Just use this character, but first advance to the next one
+            text.next();
+
+            // Do Hangul -> Jamo decomposition if necessary
+            if (hangul && ch >= HANGUL_BASE && ch < HANGUL_LIMIT) {
+                initBuffer();
+                hangulToJamo(ch, buffer, minDecomp);
+                bufferLimit = buffer.length() - 1;
+                ch = buffer.charAt(0);
+            }
+        }
+        //out(" nextDecomp returning " + hex(ch) + ", text index=" + text.getIndex());
+        return ch;
+    }
+
+    /**
+     * Decompose starting with the input char just before the current position
+     * and continuing backward until (and including) the previous base char.
+     * <p>
+     * <b>Input</b>:
+     * <ul>
+     *  <li>underlying char iter points just after last char to decompose
+     * </ul>
+     * <p>
+     * <b>Output:</b>
+     * <ul>
+     *  <li>returns last char of resulting decomposition sequence
+     *  <li>underlying iter points to lowest-index char we decomposed, i.e. the base char
+     * </ul>
+     */
+    private char prevDecomp() {
+        boolean hangul = (options & IGNORE_HANGUL) == 0;
+
+        char ch = curBackward();
+
+        int offset = DecompData.offsets.elementAt(ch);
+        int index = offset & DecompData.DECOMP_MASK;
+
+        out("prevDecomp got input char " + ch);
+
+        if (index > minDecomp || DecompData.canonClass.elementAt(ch) != DecompData.BASE)
+        {
+            initBuffer();
+
+            // Slurp up any combining characters till we get to a base char.
+            while (ch != DONE && DecompData.canonClass.elementAt(ch) != DecompData.BASE) {
+                buffer.insert(0, ch);
+                ch = text.previous();
+            }
+
+            // Now decompose this base character
+            offset = DecompData.offsets.elementAt(ch);
+            index = offset & DecompData.DECOMP_MASK;
+
+            if (index > minDecomp) {
+                out(" " + hex(ch) + " has decomposition, index=" + index);
+
+                int len = doInsert(DecompData.contents, index, buffer, 0);
+
+                if ((offset & DecompData.DECOMP_RECURSE) != 0) {
+                    // Need to decompose this recursively
+                    for (int i = 0; i < len; i++) {
+                        ch = buffer.charAt(i);
+                        index = DecompData.offsets.elementAt(ch) & DecompData.DECOMP_MASK;
+                        if (index > minDecomp) {
+                            i += doReplace(DecompData.contents, index, buffer, i);
+                        }
+                    }
+                }
+            } else {
+                // This is a base character that doesn't decompose
+                // and isn't involved in reordering, so throw it back
+                text.next();
+            }
+
+            if (buffer.length() > 1) {
+                // If there is more than one combining character in the buffer,
+                // put them into the canonical order.
+                fixCanonical(buffer);
+            }
+            bufferLimit = bufferPos = buffer.length() - 1;
+            ch = buffer.charAt(bufferPos);
+        }
+        else if (hangul && ch >= HANGUL_BASE && ch < HANGUL_LIMIT) {
+            initBuffer();
+            hangulToJamo(ch, buffer, minDecomp);
+            bufferLimit = bufferPos = buffer.length() - 1;
+            ch = buffer.charAt(bufferPos);
+        }
+        out(" prevDecomp returning '" + ch + "' " + hex(ch) + ", text index=" + text.getIndex());
+        return ch;
+    }
+
+    static final int getClass(char ch) {
+        int value = DecompData.canonClass.elementAt(ch);
+        return (value >= 0) ? value : value + 256;
+    }
+
+
+    //-------------------------------------------------------------------------
+    // CharacterIterator overrides
+    //-------------------------------------------------------------------------
+
+    /**
+     * Return the current character in the normalized text.
+     */
+    public char current() {
+        if (currentChar == DONE) {
+            if (mode.compose()) {
+                currentChar = nextCompose();
+            }
+            else if (mode.decomp()) {
+                currentChar = nextDecomp();
+            }
+            else {
+                currentChar = text.current();
+            }
+        }
+        return currentChar;
+    }
+
+    /**
+     * Return the first character in the normalized text.  This resets
+     * the <tt>Normalizer's</tt> position to the beginning of the text.
+     */
+    public char first() {
+        return setIndex(text.getBeginIndex());
+    }
+
+    /**
+     * Return the last character in the normalized text.  This resets
+     * the <tt>Normalizer's</tt> position to be just before the
+     * the input text corresponding to that normalized character.
+     */
+    public char last() {
+        text.setIndex(text.getEndIndex() - 1);  // Setting to getEndIndex() fails in 1.1
+        atEnd = true;                               // so work around the bug
+
+        currentChar = DONE;                     // The current char hasn't been processed
+        clearBuffer();                          // The buffer is empty too
+        return previous();
+    }
+
+    /**
+     * Return the next character in the normalized text and advance
+     * the iteration position by one.  If the end
+     * of the text has already been reached, {@link #DONE} is returned.
+     */
+    public char next() {
+        if (bufferPos < bufferLimit) {
+            // There are output characters left in the buffer
+            currentChar = buffer.charAt(++bufferPos);
+        }
+        else {
+            bufferLimit = bufferPos = 0;    // Buffer is now out of date
+            if (mode.compose()) {
+                currentChar = nextCompose();
+            }
+            else if (mode.decomp()) {
+                currentChar = nextDecomp();
+            }
+            else {
+                currentChar = text.next();
+            }
+        }
+        return currentChar;
+    }
+
+    /**
+     * Return the previous character in the normalized text and decrement
+     * the iteration position by one.  If the beginning
+     * of the text has already been reached, {@link #DONE} is returned.
+     */
+    public char previous() {
+        if (bufferPos > 0) {
+            // There are output characters left in the buffer
+            currentChar = buffer.charAt(--bufferPos);
+        }
+        else {
+            bufferLimit = bufferPos = 0;    // Buffer is now out of date
+            if (mode.compose()) {
+                currentChar = prevCompose();
+            }
+            else if (mode.decomp()) {
+                currentChar = prevDecomp();
+            }
+            else {
+                currentChar = text.previous();
+            }
+        }
+        return currentChar;
+    }
+
+    /**
+     * Set the iteration position in the input text that is being normalized
+     * and return the first normalized character at that position.
+     * <p>
+     * @param index the desired index in the input text.
+     *
+     * @return      the first normalized character that is the result of iterating
+     *              forward starting at the given index.
+     *
+     * @throws IllegalArgumentException if the given index is less than
+     *          {@link #getBeginIndex} or greater than {@link #getEndIndex}.
+     */
+    public char setIndex(int index) {
+        text.setIndex(index);   // Checks range
+        currentChar = DONE;     // The current char hasn't been processed
+        clearBuffer();          // The buffer is empty too
+
+        return current();
+    }
+
+    /**
+     * Retrieve the current iteration position in the input text that is
+     * being normalized.  This method is useful in applications such as
+     * searching, where you need to be able to determine the position in
+     * the input text that corresponds to a given normalized output character.
+     */
+    public final int getIndex() {
+        return text.getIndex();
+    }
+
+    /**
+     * Retrieve the index of the start of the input text.  This is the begin index
+     * of the <tt>CharacterIterator</tt> or the start (i.e. 0) of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     */
+    public final int getBeginIndex() {
+        return text.getBeginIndex();
+    }
+
+    /**
+     * Retrieve the index of the end of the input text.  This is the end index
+     * of the <tt>CharacterIterator</tt> or the length of the <tt>String</tt>
+     * over which this <tt>Normalizer</tt> is iterating
+     */
+    public final int getEndIndex() {
+        return text.getEndIndex();
+    }
+
+    //-------------------------------------------------------------------------
+    // Property access methods
+    //-------------------------------------------------------------------------
+
+    /**
+     * Set the normalization mode for this object.
+     * <p>
+     * <b>Note:</b>If the normalization mode is changed while iterating
+     * over a string, calls to {@link #next} and {@link #previous} may
+     * return previously buffers characters in the old normalization mode
+     * until the iteration is able to re-sync at the next base character.
+     * It is safest to call {@link #setText setText()}, {@link #first},
+     * {@link #last}, etc. after calling <tt>setMode</tt>.
+     * <p>
+     * @param newMode the new mode for this <tt>Normalizer</tt>.
+     * The supported modes are:
+     * <ul>
+     *  <li>{@link #COMPOSE}        - Unicode canonical decompositiion
+     *                                  followed by canonical composition.
+     *  <li>{@link #COMPOSE_COMPAT} - Unicode compatibility decompositiion
+     *                                  follwed by canonical composition.
+     *  <li>{@link #DECOMP}         - Unicode canonical decomposition
+     *  <li>{@link #DECOMP_COMPAT}  - Unicode compatibility decomposition.
+     *  <li>{@link #NO_OP}          - Do nothing but return characters
+     *                                  from the underlying input text.
+     * </ul>
+     *
+     * @see #getMode
+     */
+    public void setMode(Mode newMode) {
+        mode = newMode;
+        minDecomp = mode.compat() ? 0 : DecompData.MAX_COMPAT;
+    }
+
+    /**
+     * Return the basic operation performed by this <tt>Normalizer</tt>
+     *
+     * @see #setMode
+     */
+    public Mode getMode() {
+        return mode;
+    }
+
+    /**
+     * Set options that affect this <tt>Normalizer</tt>'s operation.
+     * Options do not change the basic composition or decomposition operation
+     * that is being performed , but they control whether
+     * certain optional portions of the operation are done.
+     * Currently the only available option is:
+     * <p>
+     * <ul>
+     *   <li>{@link #IGNORE_HANGUL} - Do not decompose Hangul syllables into the Jamo alphabet
+     *          and vice-versa.  This option is off by default (<i>i.e.</i> Hangul processing
+     *          is enabled) since the Unicode standard specifies that Hangul to Jamo
+     *          is a canonical decomposition.  For any of the standard Unicode Normalization
+     *          Forms, you should leave this option off.
+     * </ul>
+     * <p>
+     * @param   option  the option whose value is to be set.
+     * @param   value   the new setting for the option.  Use <tt>true</tt> to
+     *                  turn the option on and <tt>false</tt> to turn it off.
+     *
+     * @see #getOption
+     */
+    public void setOption(int option, boolean value) {
+        if (option != IGNORE_HANGUL) {
+            throw new IllegalArgumentException("Illegal option");
+        }
+        if (value) {
+            options |= option;
+        } else {
+            options &= (~option);
+        }
+    }
+
+    /**
+     * Determine whether an option is turned on or off.
+     * <p>
+     * @see #setOption
+     */
+    public boolean getOption(int option) {
+        return (options & option) != 0;
+    }
+
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position will be reset to the beginning.
+     * <p>
+     * @param newText   The new string to be normalized.
+     */
+    public void setText(String newText) {
+        text = new StringCharacterIterator(newText);
+        reset();
+    }
+
+    /**
+     * Set the input text over which this <tt>Normalizer</tt> will iterate.
+     * The iteration position will be reset to the beginning.
+     * <p>
+     * @param newText   The new text to be normalized.
+     */
+    public void setText(CharacterIterator newText) {
+        text = newText;
+        reset();
+    }
+
+
+    //-------------------------------------------------------------------------
+    // Private utility methods
+    //-------------------------------------------------------------------------
+
+    private final char curForward() {
+        char ch = text.current();
+        out(" curForward returning " + hex(ch) + ", text index=" + text.getIndex());
+        return ch;
+    }
+
+    private final char curBackward() {
+        char ch = atEnd ? text.current() : text.previous();
+        atEnd = false;
+        out(" curBackward returning " + hex(ch) + ", text index=" + text.getIndex());
+        return ch;
+    }
+
+    static final int doAppend(String source, int offset, StringBuffer dest) {
+        int index = offset >>> STR_INDEX_SHIFT;
+        int length = offset & STR_LENGTH_MASK;
+
+        if (length == 0) {
+            char ch;
+            while ((ch = DecompData.contents.charAt(index++)) != 0x0000) {
+                dest.append(ch);
+                length++;
+            }
+        } else {
+            for (int i = 0; i < length; i++) {
+                dest.append(DecompData.contents.charAt(index++));
+            }
+        }
+        return length;
+    }
+
+
+    static final int doInsert(String source, int offset, StringBuffer dest, int pos)
+    {
+        int index = offset >>> STR_INDEX_SHIFT;
+        int length = offset & STR_LENGTH_MASK;
+
+        if (length == 0) {
+            char ch;
+            while ((ch = DecompData.contents.charAt(index++)) != 0x0000) {
+                dest.insert(pos++, ch);
+                length++;
+            }
+        } else {
+            for (int i = 0; i < length; i++) {
+                dest.insert(pos++, DecompData.contents.charAt(index++));
+            }
+        }
+        return length;
+    }
+
+    static final int doReplace(String source, int offset, StringBuffer dest, int pos)
+    {
+        int index = offset >>> STR_INDEX_SHIFT;
+        int length = offset & STR_LENGTH_MASK;
+
+        if (length == 0) {
+            dest.setCharAt(pos++, DecompData.contents.charAt(index++));
+
+            char ch;
+            while ((ch = DecompData.contents.charAt(index++)) != 0x0000) {
+                dest.insert(pos++, ch);
+                length++;
+            }
+        } else {
+            dest.setCharAt(pos++, DecompData.contents.charAt(index++));
+            for (int i = 1; i < length; i++) {
+                dest.insert(pos++, DecompData.contents.charAt(index++));
+            }
+        }
+        return length;
+    }
+
+    private void reset() {
+        text.setIndex(text.getBeginIndex());
+        atEnd = false;
+        bufferPos = 0;
+        bufferLimit = 0;
+    }
+
+    private final void initBuffer() {
+        if (buffer == null) {
+            buffer = new StringBuffer(10);
+        } else {
+            buffer.setLength(0);
+        }
+        clearBuffer();
+    }
+
+    private final void clearBuffer() {
+        bufferLimit = bufferPos = 0;
+    }
+
+
+    /**
+     * Fixes the sorting sequence of non-spacing characters according to
+     * their combining class.  The algorithm is listed on p.3-11 in the
+     * Unicode Standard 2.0.  The table of combining classes is on p.4-2
+     * in the Unicode Standard 2.0.
+     * @param result the string to fix.
+     */
+    private static void fixCanonical(StringBuffer result) {
+        int i = result.length() - 1;
+        int currentType = getClass(result.charAt(i));
+        int lastType;
+
+        for (--i; i >= 0; --i) {
+            lastType = currentType;
+            currentType = getClass(result.charAt(i));
+
+            //
+            // a swap is presumed to be rare (and a double-swap very rare),
+            // so don't worry about efficiency here.
+            //
+            if (currentType > lastType && lastType != DecompData.BASE) {
+                // swap characters
+                char temp = result.charAt(i);
+                result.setCharAt(i, result.charAt(i+1));
+                result.setCharAt(i+1, temp);
+                // if not at end, backup (one further, to compensate for for-loop)
+                if (i < result.length() - 2) {
+                    i += 2;
+                }
+                // reset type, since we swapped.
+                currentType = getClass(result.charAt(i));
+            }
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Hangul / Jamo conversion utilities for internal use
+    // See section 3.10 of The Unicode Standard, v 2.0.
+    //
+
+    // Package-accessible for use by ComposedCharIter
+    static final char HANGUL_BASE   = 0xac00;
+    static final char HANGUL_LIMIT  = 0xd7a4;
+
+    private static final char JAMO_LBASE    = 0x1100;
+    private static final char JAMO_VBASE    = 0x1161;
+    private static final char JAMO_TBASE    = 0x11a7;
+    private static final int  JAMO_LCOUNT   = 19;
+    private static final int  JAMO_VCOUNT   = 21;
+    private static final int  JAMO_TCOUNT   = 28;
+    private static final int  JAMO_NCOUNT   = JAMO_VCOUNT * JAMO_TCOUNT;
+
+    /**
+     * Convert a single Hangul syllable into one or more Jamo characters.
+     *
+     * @param conjoin If true, decompose Jamo into conjoining Jamo.
+     */
+    static int hangulToJamo(char ch, StringBuffer result, int decompLimit) {
+        char sIndex  = (char)(ch - HANGUL_BASE);
+        char leading = (char)(JAMO_LBASE + sIndex / JAMO_NCOUNT);
+        char vowel   = (char)(JAMO_VBASE +
+                              (sIndex % JAMO_NCOUNT) / JAMO_TCOUNT);
+        char trailing= (char)(JAMO_TBASE + (sIndex % JAMO_TCOUNT));
+
+        int length = 0;
+
+        length += jamoAppend(leading, decompLimit, result);
+        length += jamoAppend(vowel, decompLimit, result);
+        if (trailing != JAMO_TBASE) {
+            length += jamoAppend(trailing, decompLimit, result);
+        }
+        return length;
+    }
+    static final int jamoAppend(char ch, int limit, StringBuffer dest) {
+        int offset = DecompData.offsets.elementAt(ch);
+        if (offset > limit) {
+            return doAppend(DecompData.contents, offset, dest);
+        } else {
+            dest.append(ch);
+            return 1;
+        }
+    }
+
+    static private void jamoToHangul(StringBuffer buffer, int start) {
+        int out = 0;
+        int limit = buffer.length() - 1;
+
+        int in, l, v, t;
+
+        for (in = start; in < limit; in++) {
+            char ch = buffer.charAt(in);
+
+            if ((l = ch - JAMO_LBASE) >= 0 && l < JAMO_LCOUNT
+                    && (v = buffer.charAt(in+1) - JAMO_VBASE) >= 0 && v < JAMO_VCOUNT) {
+                //
+                // We've found a pair of Jamo characters to compose.
+                // Snarf the Jamo vowel and see if there's also a trailing char
+                //
+                in++;   // Snarf the Jamo vowel too.
+
+                t = (in < limit) ? buffer.charAt(in+1) : 0;
+                t -= JAMO_TBASE;
+
+                if (t >= 0 && t < JAMO_TCOUNT) {
+                    in++;   // Snarf the trailing consonant too
+                } else {
+                    t = 0;  // No trailing consonant
+                }
+                buffer.setCharAt(out++, (char)((l*JAMO_VCOUNT + v) * JAMO_TCOUNT
+                                               + t + HANGUL_BASE));
+            } else {
+                buffer.setCharAt(out++, ch);
+            }
+        }
+        while (in < buffer.length()) {
+            buffer.setCharAt(out++, buffer.charAt(in++));
+        }
+
+        buffer.setLength(out);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------
+
+    private Mode           mode = DECOMP;
+    private int                 options = 0;
+    private transient int       minDecomp;
+
+    // The input text and our position in it
+    private CharacterIterator   text;
+    private boolean             atEnd = false;
+
+    // A buffer for holding intermediate results
+    private StringBuffer        buffer = null;
+    private int                 bufferPos = 0;
+    private int                 bufferLimit = 0;
+    private char                currentChar;
+
+    // Another buffer for use during iterative composition
+    private static final int    EMPTY = -1;
+    private StringBuffer        explodeBuf = null;
+
+    // These must agree with the constants used in NormalizerBuilder
+    static final int STR_INDEX_SHIFT = 2;
+    static final int STR_LENGTH_MASK = 0x0003;
+
+    static final void out(String str) {
+    //    System.out.println(str);
+    }
+    static final String hex(char ch) {
+        return UInfo.hex(ch);
+    }
+    static final String hex(StringBuffer s) {
+        return UInfo.hex(s.toString());
+    }
+};
diff --git a/src/com/ibm/text/NullTransliterator.java b/src/com/ibm/text/NullTransliterator.java
new file mode 100755
index 0000000..7ee1898
--- /dev/null
+++ b/src/com/ibm/text/NullTransliterator.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/NullTransliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:21 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+import java.util.*;
+
+/**
+ * A transliterator that leaves text unchanged.
+ */
+public class NullTransliterator extends Transliterator {
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 2000. All rights reserved.";
+
+    /**
+     * Package accessible ID for this transliterator.
+     */
+    static String _ID = "Null";
+
+    /**
+     * Constructs a transliterator.
+     */
+    public NullTransliterator() {
+        super(_ID, null);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        offsets.cursor = offsets.limit;
+    }
+}
diff --git a/src/com/ibm/text/NumberFormat.java b/src/com/ibm/text/NumberFormat.java
new file mode 100755
index 0000000..64a1560
--- /dev/null
+++ b/src/com/ibm/text/NumberFormat.java
@@ -0,0 +1,852 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/NumberFormat.java,v $ 
+ * $Date: 2000/03/10 04:07:22 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.text.Format;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.text.ParseException;
+import java.text.resources.*;
+import java.util.Hashtable;
+import java.math.BigInteger;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+/**
+ * <code>NumberFormat</code> is the abstract base class for all number
+ * formats. This class provides the interface for formatting and parsing
+ * numbers. <code>NumberFormat</code> also provides methods for determining
+ * which locales have number formats, and what their names are.
+ *
+ * <p><strong>This is an enhanced version of <code>NumberFormat</code> that
+ * is based on the standard version in the JDK.  New or changed functionality
+ * is labeled
+ * <strong><font face=helvetica color=red>NEW</font></strong> or
+ * <strong><font face=helvetica color=red>CHANGED</font></strong>.</strong>
+ *
+ * <p>
+ * <code>NumberFormat</code> helps you to format and parse numbers for any locale.
+ * Your code can be completely independent of the locale conventions for
+ * decimal points, thousands-separators, or even the particular decimal
+ * digits used, or whether the number format is even decimal.
+ *
+ * <p>
+ * To format a number for the current Locale, use one of the factory
+ * class methods:
+ * <blockquote>
+ * <pre>
+ *  myString = NumberFormat.getInstance().format(myNumber);
+ * </pre>
+ * </blockquote>
+ * If you are formatting multiple numbers, it is
+ * more efficient to get the format and use it multiple times so that
+ * the system doesn't have to fetch the information about the local
+ * language and country conventions multiple times.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance();
+ * for (int i = 0; i < a.length; ++i) {
+ *     output.println(nf.format(myNumber[i]) + "; ");
+ * }
+ * </pre>
+ * </blockquote>
+ * To format a number for a different Locale, specify it in the
+ * call to <code>getInstance</code>.
+ * <blockquote>
+ * <pre>
+ * NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
+ * </pre>
+ * </blockquote>
+ * You can also use a <code>NumberFormat</code> to parse numbers:
+ * <blockquote>
+ * <pre>
+ * myNumber = nf.parse(myString);
+ * </pre>
+ * </blockquote>
+ * Use <code>getInstance</code> or <code>getNumberInstance</code> to get the
+ * normal number format. Use <code>getCurrencyInstance</code> to get the
+ * currency number format. And use <code>getPercentInstance</code> to get a
+ * format for displaying percentages. With this format, a fraction like
+ * 0.53 is displayed as 53%.
+ *
+ * <p>
+ * You can also control the display of numbers with such methods as
+ * <code>setMinimumFractionDigits</code>.
+ * If you want even more control over the format or parsing,
+ * or want to give your users more control,
+ * you can try casting the <code>NumberFormat</code> you get from the factory methods
+ * to a <code>DecimalNumberFormat</code>. This will work for the vast majority
+ * of locales; just remember to put it in a <code>try</code> block in case you
+ * encounter an unusual one.
+ *
+ * <p>
+ * NumberFormat and DecimalFormat are designed such that some controls
+ * work for formatting and others work for parsing.  The following is
+ * the detailed description for each these control methods,
+ * <p>
+ * setParseIntegerOnly : only affects parsing, e.g.
+ * if true,  "3456.78" -> 3456 (and leaves the parse position just after index 6)
+ * if false, "3456.78" -> 3456.78 (and leaves the parse position just after index 8)
+ * This is independent of formatting.  If you want to not show a decimal point
+ * where there might be no digits after the decimal point, use
+ * setDecimalSeparatorAlwaysShown.
+ * <p>
+ * setDecimalSeparatorAlwaysShown : only affects formatting, and only where
+ * there might be no digits after the decimal point, such as with a pattern
+ * like "#,##0.##", e.g.,
+ * if true,  3456.00 -> "3,456."
+ * if false, 3456.00 -> "3456"
+ * This is independent of parsing.  If you want parsing to stop at the decimal
+ * point, use setParseIntegerOnly.
+ *
+ * <p>
+ * You can also use forms of the <code>parse</code> and <code>format</code>
+ * methods with <code>ParsePosition</code> and <code>FieldPosition</code> to
+ * allow you to:
+ * <ul>
+ * <li> progressively parse through pieces of a string
+ * <li> align the decimal point and other areas
+ * </ul>
+ * For example, you can align numbers in two ways:
+ * <ol>
+ * <li> If you are using a monospaced font with spacing for alignment,
+ *      you can pass the <code>FieldPosition</code> in your format call, with
+ *      <code>field</code> = <code>INTEGER_FIELD</code>. On output,
+ *      <code>getEndIndex</code> will be set to the offset between the
+ *      last character of the integer and the decimal. Add
+ *      (desiredSpaceCount - getEndIndex) spaces at the front of the string.
+ *
+ * <li> If you are using proportional fonts,
+ *      instead of padding with spaces, measure the width
+ *      of the string in pixels from the start to <code>getEndIndex</code>.
+ *      Then move the pen by
+ *      (desiredPixelWidth - widthToAlignmentPoint) before drawing the text.
+ *      It also works where there is no decimal, but possibly additional
+ *      characters at the end, e.g., with parentheses in negative
+ *      numbers: "(12)" for -12.
+ * </ol>
+ *
+ * see          java.text.DecimalFormat
+ * see          java.text.ChoiceFormat
+ * @version      $Revision: 1.5 $
+ * @author       Mark Davis
+ * @author       Helena Shih
+ * @author       Alan Liu
+ */
+public abstract class NumberFormat extends Format{
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the integer part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     */
+    public static final int INTEGER_FIELD = 0;
+
+    /**
+     * Field constant used to construct a FieldPosition object. Signifies that
+     * the position of the fraction part of a formatted number should be returned.
+     * @see java.text.FieldPosition
+     */
+    public static final int FRACTION_FIELD = 1;
+
+    /**
+     * <strong><font face=helvetica color=red>CHANGED</font></strong>
+     * Format an object.  Change: recognizes <code>BigInteger</code>
+     * and <code>BigDecimal</code> objects now.
+     */
+    public final StringBuffer format(Object number,
+                                     StringBuffer toAppendTo,
+                                     FieldPosition pos)
+    {
+        if (number instanceof Long) {
+            return format(((Long)number).longValue(), toAppendTo, pos);
+        } else if (number instanceof BigInteger) {
+            return format((BigInteger) number, toAppendTo, pos);
+        } else if (number instanceof java.math.BigDecimal) {
+            return format((java.math.BigDecimal) number, toAppendTo, pos);
+// This has been removed pending addition of com.ibm.math package to ICU4J
+/*        } else if (number instanceof com.ibm.math.BigDecimal) {
+            return format((com.ibm.math.BigDecimal) number, toAppendTo, pos);
+*/        } else if (number instanceof Number) {
+            return format(((Number)number).doubleValue(), toAppendTo, pos);
+        } else {
+            throw new IllegalArgumentException("Cannot format given Object as a Number");
+        }
+    }
+
+    public final Object parseObject(String source,
+                                    ParsePosition parsePosition)
+    {
+        return parse(source, parsePosition);
+    }
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public final String format (double number) {
+        return format(number,new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public final String format (long number) {
+        return format(number,new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigInteger.
+     */
+    public final String format(BigInteger number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigDecimal.
+     */
+    public final String format(java.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    }
+
+    /* this has been removed pending addition of com.ibm.math packge to ICU4J
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Convenience method to format a BigDecimal.
+     *
+    public final String format(com.ibm.math.BigDecimal number) {
+        return format(number, new StringBuffer(),
+                      new FieldPosition(0)).toString();
+    } */
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public abstract StringBuffer format(double number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+   /**
+     * Specialization of format.
+     * @see java.text.Format#format
+     */
+    public abstract StringBuffer format(long number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigInteger.
+     */
+    public abstract StringBuffer format(BigInteger number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos); 
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal.
+     */
+    public abstract StringBuffer format(java.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos);
+
+    /* This has been removed pending addition of com.ibm.math package to ICU4J
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Format a BigDecimal.
+     *
+    public abstract StringBuffer format(com.ibm.math.BigDecimal number,
+                                        StringBuffer toAppendTo,
+                                        FieldPosition pos); */
+   
+   /**
+     * Returns a Long if possible (e.g., within the range [Long.MIN_VALUE,
+     * Long.MAX_VALUE] and with no decimals), otherwise a Double.
+     * If IntegerOnly is set, will stop at a decimal
+     * point (or equivalent; e.g., for rational numbers "1 2/3", will stop
+     * after the 1).
+     * Does not throw an exception; if no object can be parsed, index is
+     * unchanged!
+     * @see java.text.NumberFormat#isParseIntegerOnly
+     * @see java.text.Format#parseObject
+     */
+    public abstract Number parse(String text, ParsePosition parsePosition);
+
+    /**
+     * Convenience method.
+     *
+     * @exception ParseException if the specified string is invalid.
+     * @see #format
+     */
+    public Number parse(String text) throws ParseException {
+        ParsePosition parsePosition = new ParsePosition(0);
+        Number result = parse(text, parsePosition);
+        if (parsePosition.getIndex() == 0) {
+            throw new ParseException("Unparseable number: \"" + text + "\"",
+                                     //PP:parsePosition.errorIndex);
+                                     0);
+        }
+        return result;
+    }
+
+    /**
+     * Returns true if this format will parse numbers as integers only.
+     * For example in the English locale, with ParseIntegerOnly true, the
+     * string "1234." would be parsed as the integer value 1234 and parsing
+     * would stop at the "." character.  Of course, the exact format accepted
+     * by the parse operation is locale dependant and determined by sub-classes
+     * of NumberFormat.
+     */
+    public boolean isParseIntegerOnly() {
+        return parseIntegerOnly;
+    }
+
+    /**
+     * Sets whether or not numbers should be parsed as integers only.
+     * @see #isParseIntegerOnly
+     */
+    public void setParseIntegerOnly(boolean value) {
+        parseIntegerOnly = value;
+    }
+
+    //============== Locale Stuff =====================
+
+    /**
+     * Returns the default number format for the current default locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale dependant.
+     */
+    public final static NumberFormat getInstance() {
+        return getInstance(Locale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns the default number format for the specified locale.
+     * The default format is one of the styles provided by the other
+     * factory methods: getNumberInstance, getCurrencyInstance or getPercentInstance.
+     * Exactly which one is locale dependant.
+     */
+    public static NumberFormat getInstance(Locale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the current default locale.
+     */
+    public final static NumberFormat getNumberInstance() {
+        return getInstance(Locale.getDefault(), NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a general-purpose number format for the specified locale.
+     */
+    public static NumberFormat getNumberInstance(Locale inLocale) {
+        return getInstance(inLocale, NUMBERSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the current default locale.
+     */
+    public final static NumberFormat getCurrencyInstance() {
+        return getInstance(Locale.getDefault(), CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a currency format for the specified locale.
+     */
+    public static NumberFormat getCurrencyInstance(Locale inLocale) {
+        return getInstance(inLocale, CURRENCYSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the current default locale.
+     */
+    public final static NumberFormat getPercentInstance() {
+        return getInstance(Locale.getDefault(), PERCENTSTYLE);
+    }
+
+    /**
+     * Returns a percentage format for the specified locale.
+     */
+    public static NumberFormat getPercentInstance(Locale inLocale) {
+        return getInstance(inLocale, PERCENTSTYLE);
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the current default locale.
+     */
+    public final static NumberFormat getScientificInstance() {
+        return getInstance(Locale.getDefault(), SCIENTIFICSTYLE);
+    }
+
+    /**
+     * <strong><font face=helvetica color=red>NEW</font></strong>
+     * Returns a scientific format for the specified locale.
+     */
+    public static NumberFormat getScientificInstance(Locale inLocale) {
+        return getInstance(inLocale, SCIENTIFICSTYLE);
+    }
+
+
+    /**
+     * Get the set of Locales for which NumberFormats are installed
+     * @return available locales
+     */
+    public static Locale[] getAvailableLocales() {
+        return LocaleData.getAvailableLocales("NumberPatterns");
+    }
+
+    /**
+     * Overrides hashCode
+     */
+    public int hashCode() {
+        return maximumIntegerDigits * 37 + maxFractionDigits;
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Overrides equals
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)
+            return true;
+        if (getClass() != obj.getClass())
+            return false;
+        NumberFormat other = (NumberFormat) obj;
+        return (maximumIntegerDigits == other.maximumIntegerDigits
+            && minimumIntegerDigits == other.minimumIntegerDigits
+            && maximumFractionDigits == other.maximumFractionDigits
+            && minimumFractionDigits == other.minimumFractionDigits
+            && groupingUsed == other.groupingUsed
+            && parseIntegerOnly == other.parseIntegerOnly);
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        NumberFormat other = (NumberFormat) super.clone();
+        return other;
+    }
+
+    /**
+     * Returns true if grouping is used in this format. For example, in the
+     * English locale, with grouping on, the number 1234567 might be formatted
+     * as "1,234,567". The grouping separator as well as the size of each group
+     * is locale dependant and is determined by sub-classes of NumberFormat.
+     * @see #setGroupingUsed
+     */
+    public boolean isGroupingUsed() {
+        return groupingUsed;
+    }
+
+    /**
+     * Set whether or not grouping will be used in this format.
+     * @see #isGroupingUsed
+     */
+    public void setGroupingUsed(boolean newValue) {
+        groupingUsed = newValue;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the integer portion of a
+     * number.
+     * @see #setMaximumIntegerDigits
+     */
+    public int getMaximumIntegerDigits() {
+        return maximumIntegerDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the integer portion of a
+     * number. maximumIntegerDigits must be >= minimumIntegerDigits.  If the
+     * new value for maximumIntegerDigits is less than the current value
+     * of minimumIntegerDigits, then minimumIntegerDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of integer digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumIntegerDigits
+     */
+    public void setMaximumIntegerDigits(int newValue) {
+        maximumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            minimumIntegerDigits = maximumIntegerDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the integer portion of a
+     * number.
+     * @see #setMinimumIntegerDigits
+     */
+    public int getMinimumIntegerDigits() {
+        return minimumIntegerDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the integer portion of a
+     * number. minimumIntegerDigits must be <= maximumIntegerDigits.  If the
+     * new value for minimumIntegerDigits exceeds the current value
+     * of maximumIntegerDigits, then maximumIntegerDigits will also be set to
+     * the new value
+     * @param newValue the minimum number of integer digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumIntegerDigits
+     */
+    public void setMinimumIntegerDigits(int newValue) {
+        minimumIntegerDigits = Math.max(0,newValue);
+        if (minimumIntegerDigits > maximumIntegerDigits)
+            maximumIntegerDigits = minimumIntegerDigits;
+    }
+
+    /**
+     * Returns the maximum number of digits allowed in the fraction portion of a
+     * number.
+     * @see #setMaximumFractionDigits
+     */
+    public int getMaximumFractionDigits() {
+        return maximumFractionDigits;
+    }
+
+    /**
+     * Sets the maximum number of digits allowed in the fraction portion of a
+     * number. maximumFractionDigits must be >= minimumFractionDigits.  If the
+     * new value for maximumFractionDigits is less than the current value
+     * of minimumFractionDigits, then minimumFractionDigits will also be set to
+     * the new value.
+     * @param newValue the maximum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMaximumFractionDigits
+     */
+    public void setMaximumFractionDigits(int newValue) {
+        maximumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            minimumFractionDigits = maximumFractionDigits;
+    }
+
+    /**
+     * Returns the minimum number of digits allowed in the fraction portion of a
+     * number.
+     * @see #setMinimumFractionDigits
+     */
+    public int getMinimumFractionDigits() {
+        return minimumFractionDigits;
+    }
+
+    /**
+     * Sets the minimum number of digits allowed in the fraction portion of a
+     * number. minimumFractionDigits must be <= maximumFractionDigits.  If the
+     * new value for minimumFractionDigits exceeds the current value
+     * of maximumFractionDigits, then maximumIntegerDigits will also be set to
+     * the new value
+     * @param newValue the minimum number of fraction digits to be shown; if
+     * less than zero, then zero is used. The concrete subclass may enforce an
+     * upper limit to this value appropriate to the numeric type being formatted.
+     * @see #getMinimumFractionDigits
+     */
+    public void setMinimumFractionDigits(int newValue) {
+        minimumFractionDigits = Math.max(0,newValue);
+        if (maximumFractionDigits < minimumFractionDigits)
+            maximumFractionDigits = minimumFractionDigits;
+    }
+
+    // =======================privates===============================
+
+    // [NEW]
+    private static NumberFormat getInstance(Locale desiredLocale,
+                                            int choice) {
+        return new DecimalFormat(getPattern(desiredLocale, choice),
+                                 new DecimalFormatSymbols(desiredLocale));
+    }
+
+    // [NEW]
+    protected static String getPattern(Locale forLocale, int choice) {
+        // TEMPORARY, until we get scientific patterns into the main
+        // resources:  Retrieve scientific patterns from our resources.
+        if (choice == SCIENTIFICSTYLE) {
+            // Temporarily hard code; retrieve from resource later
+            return "0.######E0";
+            // return NumberFormat.getBaseStringArray("NumberPatterns")[SCIENTIFICSTYLE];
+        }
+        // TEMPORARY: Use rounding for Swiss currency
+        if (choice == CURRENCYSTYLE &&
+            forLocale.getCountry().equals("CH")) {
+            return "'Fr. '#,##0.05;'Fr.-'#,##0.05";
+        }
+        // Try the cache first
+        String[] numberPatterns = (String[]) cachedLocaleData.get(forLocale);
+        if (numberPatterns == null) {
+            ResourceBundle resource = ResourceBundle.getBundle
+                (RESOURCE_BASE, forLocale);
+            numberPatterns = resource.getStringArray("NumberPatterns");
+            // Update the cache
+            cachedLocaleData.put(forLocale, numberPatterns); 
+        }
+        return numberPatterns[choice];
+    }
+
+    // [NEW] Temporary pending resource integration
+    public static final String RESOURCE_BASE = "java.text.resources.LocaleElements";
+    // public static final String RESOURCE_BASE = "com.ibm.text.resources.LocaleElements";
+    
+    // [NEW] Temporary pending resource integration
+    static ResourceBundle baseBundle = null;
+    
+    // [NEW] Temporary pending resource integration
+    public synchronized static final String[] getBaseStringArray(String name) {
+        if (baseBundle == null) {
+            baseBundle = ResourceBundle.getBundle(RESOURCE_BASE);
+        }
+        return baseBundle.getStringArray(name);
+    }
+
+    /**
+     * First, read in the default serializable data.
+     *
+     * Then, if <code>serialVersionOnStream</code> is less than 1, indicating that
+     * the stream was written by JDK 1.1,
+     * set the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * to be equal to the <code>byte</code> fields such as <code>maxIntegerDigits</code>,
+     * since the <code>int</code> fields were not present in JDK 1.1.
+     * Finally, set serialVersionOnStream back to the maximum allowed value so that
+     * default serialization will work properly if this object is streamed out again.
+     *
+     * @since JDK 1.2
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException
+    {
+        stream.defaultReadObject();
+        if (serialVersionOnStream < 1) {
+            // Didn't have additional int fields, reassign to use them.
+            maximumIntegerDigits = maxIntegerDigits;
+            minimumIntegerDigits = minIntegerDigits;
+            maximumFractionDigits = maxFractionDigits;
+            minimumFractionDigits = minFractionDigits;
+        }
+        serialVersionOnStream = currentSerialVersion;
+    }
+
+    /**
+     * Write out the default serializable data, after first setting
+     * the <code>byte</code> fields such as <code>maxIntegerDigits</code> to be
+     * equal to the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     * (or to <code>Byte.MAX_VALUE</code>, whichever is smaller), for compatibility
+     * with the JDK 1.1 version of the stream format.
+     *
+     * @since JDK 1.2
+     */
+    private void writeObject(ObjectOutputStream stream)
+         throws IOException
+    {
+        maxIntegerDigits = (maximumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumIntegerDigits;
+        minIntegerDigits = (minimumIntegerDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumIntegerDigits;
+        maxFractionDigits = (maximumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)maximumFractionDigits;
+        minFractionDigits = (minimumFractionDigits > Byte.MAX_VALUE) ? Byte.MAX_VALUE :
+            (byte)minimumFractionDigits;
+        stream.defaultWriteObject();
+    }
+
+    /**
+     * Cache to hold the NumberPatterns of a Locale.
+     */
+    private static final Hashtable cachedLocaleData = new Hashtable(3);
+
+    // Constants used by factory methods to specify a style of format.
+    private static final int NUMBERSTYLE = 0;
+    private static final int CURRENCYSTYLE = 1;
+    private static final int PERCENTSTYLE = 2;
+    private static final int SCIENTIFICSTYLE = 3;
+
+    /**
+     * True if the the grouping (i.e. thousands) separator is used when
+     * formatting and parsing numbers.
+     *
+     * @serial
+     * @see #isGroupingUsed
+     */
+    private boolean groupingUsed = true;
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maxIntegerDigits</code> must be greater than or equal to
+     * <code>minIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>maxIntegerDigits</code> is set to
+     * <code>maximumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumIntegerDigits
+     */
+    private byte    maxIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumIntegerDigits</code> is used instead.
+     * When writing to a stream, <code>minIntegerDigits</code> is set to
+     * <code>minimumIntegerDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumIntegerDigits
+     */
+    private byte    minIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>maximumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>maxFractionDigits</code> is set to
+     * <code>maximumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMaximumFractionDigits
+     */
+    private byte    maxFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     * <p>
+     * <strong>Note:</strong> This field exists only for serialization
+     * compatibility with JDK 1.1.  In JDK 1.2 and higher, the new
+     * <code>int</code> field <code>minimumFractionDigits</code> is used instead.
+     * When writing to a stream, <code>minFractionDigits</code> is set to
+     * <code>minimumFractionDigits</code> or <code>Byte.MAX_VALUE</code>,
+     * whichever is smaller.  When reading from a stream, this field is used
+     * only if <code>serialVersionOnStream</code> is less than 1. 
+     *
+     * @serial
+     * @see #getMinimumFractionDigits
+     */
+    private byte    minFractionDigits = 0;
+
+    /**
+     * True if this format will parse numbers as integers only.
+     *
+     * @serial
+     * @see #isParseIntegerOnly
+     */
+    private boolean parseIntegerOnly = false;
+
+    // new fields for 1.2.  byte is too small for integer digits.
+
+    /**
+     * The maximum number of digits allowed in the integer portion of a
+     * number.  <code>maximumIntegerDigits</code> must be greater than or equal to
+     * <code>minimumIntegerDigits</code>.
+     *
+     * @serial
+     * @since JDK 1.2
+     * @see #getMaximumIntegerDigits
+     */
+    private int    maximumIntegerDigits = 40;
+
+    /**
+     * The minimum number of digits allowed in the integer portion of a
+     * number.  <code>minimumIntegerDigits</code> must be less than or equal to
+     * <code>maximumIntegerDigits</code>.
+     *
+     * @serial
+     * @since JDK 1.2
+     * @see #getMinimumIntegerDigits
+     */
+    private int    minimumIntegerDigits = 1;
+
+    /**
+     * The maximum number of digits allowed in the fractional portion of a
+     * number.  <code>maximumFractionDigits</code> must be greater than or equal to
+     * <code>minimumFractionDigits</code>.
+     *
+     * @serial
+     * @since JDK 1.2
+     * @see #getMaximumFractionDigits
+     */
+    private int    maximumFractionDigits = 3;    // invariant, >= minFractionDigits
+
+    /**
+     * The minimum number of digits allowed in the fractional portion of a
+     * number.  <code>minimumFractionDigits</code> must be less than or equal to
+     * <code>maximumFractionDigits</code>.
+     *
+     * @serial
+     * @since JDK 1.2
+     * @see #getMinimumFractionDigits
+     */
+    private int    minimumFractionDigits = 0;
+
+    static final int currentSerialVersion = 1;
+
+    /**
+     * Describes the version of <code>NumberFormat</code> present on the stream.
+     * Possible values are:
+     * <ul>
+     * <li><b>0</b> (or uninitialized): the JDK 1.1 version of the stream format.
+     *     In this version, the <code>int</code> fields such as
+     *     <code>maximumIntegerDigits</code> were not present, and the <code>byte</code>
+     *     fields such as <code>maxIntegerDigits</code> are used instead.
+     *
+     * <li><b>1</b>: the JDK 1.2 version of the stream format.  The values of the
+     *     <code>byte</code> fields such as <code>maxIntegerDigits</code> are ignored,
+     *     and the <code>int</code> fields such as <code>maximumIntegerDigits</code>
+     *     are used instead.
+     * </ul>
+     * When streaming out a <code>NumberFormat</code>, the most recent format
+     * (corresponding to the highest allowable <code>serialVersionOnStream</code>)
+     * is always written.
+     *
+     * @serial
+     * @since JDK 1.2
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    // Removed "implements Cloneable" clause.  Needs to update serialization
+    // ID for backward compatibility.
+    static final long serialVersionUID = -2308460125733713944L;
+}
diff --git a/src/com/ibm/text/Replaceable.java b/src/com/ibm/text/Replaceable.java
new file mode 100755
index 0000000..479b3c4
--- /dev/null
+++ b/src/com/ibm/text/Replaceable.java
@@ -0,0 +1,89 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/Replaceable.java,v $ 
+ * $Date: 2000/03/10 04:07:22 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+/**
+ * <code>Replaceable</code> is an interface that supports the
+ * operation of replacing a substring with another piece of text.
+ * <code>Replaceable</code> is needed in order to change a piece of
+ * text while retaining style attributes.  For example, if the string
+ * "the <b>bold</b> font" has range (4, 8) replaced with "strong",
+ * then it becomes "the <b>strong</b> font".
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: Replaceable.java,v $ $Revision: 1.2 $ $Date: 2000/03/10 04:07:22 $
+ */
+public interface Replaceable {
+    /**
+     * Return the number of characters in the text.
+     * @return number of characters in text
+     */ 
+    int length();
+
+    /**
+     * Return the character at the given offset into the text.
+     * @param offset an integer between 0 and <code>length()</code>-1
+     * inclusive
+     * @return character of text at given offset
+     */
+    char charAt(int offset);
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     */
+    void getChars(int srcStart, int srcLimit, char dst[], int dstStart);
+
+    /**
+     * Replace a substring of this object with the given text.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     */
+    void replace(int start, int limit, String text);
+
+    /**
+     * Replace a substring of this object with the given text.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     */
+    void replace(int start, int limit, char[] chars,
+                 int charsStart, int charsLen);
+    // Note: We use length rather than limit to conform to StringBuffer
+    // and System.arraycopy.
+}
diff --git a/src/com/ibm/text/ReplaceableString.java b/src/com/ibm/text/ReplaceableString.java
new file mode 100755
index 0000000..5228495
--- /dev/null
+++ b/src/com/ibm/text/ReplaceableString.java
@@ -0,0 +1,171 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/ReplaceableString.java,v $ 
+ * $Date: 2000/03/10 04:07:22 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+/**
+ * <code>ReplaceableString</code> is an adapter class that implements the
+ * <code>Replaceable</code> API around an ordinary <code>StringBuffer</code>.
+ *
+ * <p><em>Note:</em> This class does not support attributes and is not
+ * intended for general use.  Most clients will need to implement
+ * {@link Replaceable} in their text representation class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @see Replaceable
+ * @author Alan Liu
+ * @version $RCSfile: ReplaceableString.java,v $ $Revision: 1.2 $ $Date: 2000/03/10 04:07:22 $
+ */
+public class ReplaceableString implements Replaceable {
+    private StringBuffer buf;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Construct a new object with the given initial contents.
+     * @param str initial contents
+     */
+    public ReplaceableString(String str) {
+        buf = new StringBuffer(str);
+    }
+
+    /**
+     * Construct a new object using <code>buf</code> for internal
+     * storage.  The contents of <code>buf</code> at the time of
+     * construction are used as the initial contents.  <em>Note!
+     * Modifications to <code>buf</code> will modify this object, and
+     * vice versa.</em>
+     * @param buf object to be used as internal storage
+     */
+    public ReplaceableString(StringBuffer buf) {
+        this.buf = buf;
+    }
+
+    /**
+     * Construct a new empty object.
+     */
+    public ReplaceableString() {
+        buf = new StringBuffer();
+    }
+
+    /**
+     * Return the contents of this object as a <code>String</code>.
+     * @return string contents of this object
+     */
+    public String toString() {
+        return buf.toString();
+    }
+
+    /**
+     * Return the internal storage of this object.  <em>Note!  Any
+     * changes made to the returned object affect this object's
+     * contents, and vice versa.</em>
+     * @return internal buffer used by this object
+     */
+    public StringBuffer getStringBuffer() {
+        return buf;
+    }
+
+    /**
+     * Return the number of characters contained in this object.
+     * <code>Replaceable</code> API.
+     */ 
+    public int length() {
+        return buf.length();
+    }
+
+    /**
+     * Return the character at the given position in this object.
+     * <code>Replaceable</code> API.
+     * @param offset offset into the contents, from 0 to
+     * <code>length()</code> - 1
+     */
+    public char charAt(int offset) {
+        return buf.charAt(offset);
+    }
+
+    /**
+     * Copies characters from this object into the destination
+     * character array.  The first character to be copied is at index
+     * <code>srcStart</code>; the last character to be copied is at
+     * index <code>srcLimit-1</code> (thus the total number of
+     * characters to be copied is <code>srcLimit-srcStart</code>). The
+     * characters are copied into the subarray of <code>dst</code>
+     * starting at index <code>dstStart</code> and ending at index
+     * <code>dstStart + (srcLimit-srcStart) - 1</code>.
+     *
+     * @param srcStart the beginning index to copy, inclusive; <code>0
+     * <= start <= limit</code>.
+     * @param srcLimit the ending index to copy, exclusive;
+     * <code>start <= limit <= length()</code>.
+     * @param dst the destination array.
+     * @param dstStart the start offset in the destination array.
+     */
+    public void getChars(int srcStart, int srcLimit, char dst[], int dstStart) {
+        buf.getChars(srcStart, srcLimit, dst, dstStart);
+    }
+
+    /**
+     * Replace zero or more characters with new characters.
+     * <code>Replaceable</code> API.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param text new text to replace characters <code>start</code> to
+     * <code>limit - 1</code>
+     */
+    public void replace(int start, int limit, String text) {
+        if (start == limit) {
+            buf.insert(start, text);
+        } else {
+            char[] tail = null;
+            if (limit < buf.length()) {
+                tail = new char[buf.length() - limit];
+                buf.getChars(limit, buf.length(), tail, 0);
+            }
+            buf.setLength(start);
+            buf.append(text);
+            if (tail != null) {
+                buf.append(tail);
+            }
+        }
+    }
+
+    /**
+     * Replace a substring of this object with the given text.
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= length()</code>.
+     * @param chars the text to replace characters <code>start</code>
+     * to <code>limit - 1</code>
+     * @param charsStart the beginning index into <code>chars</code>,
+     * inclusive; <code>0 <= start <= limit</code>.
+     * @param charsLen the number of characters of <code>chars</code>.
+     */
+    public void replace(int start, int limit, char[] chars,
+                        int charsStart, int charsLen) {
+        char[] tail = null;
+        if (limit < buf.length()) {
+            tail = new char[buf.length() - limit];
+            buf.getChars(limit, buf.length(), tail, 0);
+        }
+        buf.setLength(start);
+        buf.append(chars, charsStart, charsLen);
+        if (tail != null) {
+            buf.append(tail);
+        }
+    }
+}
diff --git a/src/com/ibm/text/RuleBasedBreakIterator.java b/src/com/ibm/text/RuleBasedBreakIterator.java
new file mode 100755
index 0000000..55ff4ff
--- /dev/null
+++ b/src/com/ibm/text/RuleBasedBreakIterator.java
@@ -0,0 +1,3022 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/RuleBasedBreakIterator.java,v $ 
+ * $Date: 2000/03/10 04:07:22 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+
+//ibm.597
+/*
+ * @(#)RuleBasedBreakIterator.java	1.3 99/04/07
+ *
+ * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
+ *
+ * The original version of this source code and documentation
+ * is copyrighted and owned by Taligent, Inc., a wholly-owned
+ * subsidiary of IBM. These materials are provided under terms
+ * of a License Agreement between Taligent and Sun. This technology
+ * is protected by multiple US and International patents.
+ *
+ * This notice and attribution to Taligent may not be removed.
+ * Taligent is a registered trademark of Taligent, Inc.
+ */
+
+package com.ibm.text;
+
+import com.ibm.util.CompactByteArray;
+import java.util.Vector;
+import java.util.Stack;
+import java.util.Hashtable;
+import java.util.Enumeration;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+import java.io.*;
+
+/**
+ * <p>A subclass of BreakIterator whose behavior is specified using a list of rules.</p>
+ *
+ * <p>There are two kinds of rules, which are separated by semicolons: <i>substitutions</i>
+ * and <i>regular expressions.</i></p>
+ *
+ * <p>A substitution rule defines a name that can be used in place of an expression. It
+ * consists of a name, an equals sign, and an expression. (There can be no whitespace on 
+ * either side of the equals sign.)  To keep its syntactic meaning intact, the expression 
+ * must be enclosed in parentheses or square brackets. A substitution is visible after its 
+ * definition, and is filled in using simple textual substitution (when a substitution is
+ * used, its name is enclosed in curly braces.  The curly braces are optional in the
+ * substition's definition). Substitution definitions can contain other substitutions, as
+ * long as those substitutions have been defined first. Substitutions are generally used to
+ * make the regular expressions (which can get quite complex) shorter and easier to read.
+ * They typically define either character categories or commonly-used subexpressions.</p>
+ *
+ * <p>There is one special substitution.&nbsp; If the description defines a substitution
+ * called &quot;$ignore&quot;, the expression must be a [] expression, and the
+ * expression defines a set of characters (the &quot;<em>ignore characters</em>&quot;) that
+ * will be transparent to the BreakIterator.&nbsp; A sequence of characters will break the
+ * same way it would if any ignore characters it contains are taken out.&nbsp; Break
+ * positions never occur before ignore characters, except when the character before the
+ * ignore characters is a line or paragraph terminator.</p>
+ *
+ * <p>A regular expression uses a syntax similar to the normal Unix regular-expression 
+ * syntax, and defines a sequence of characters to be kept together. With one significant 
+ * exception, the iterator uses a longest-possible-match algorithm when matching text to regular
+ * expressions. The iterator also treats descriptions containing multiple regular expressions
+ * as if they were ORed together (i.e., as if they were separated by |).</p>
+ *
+ * <p>The special characters recognized by the regular-expression parser are as follows:</p>
+ *
+ * <blockquote>
+ *   <table border="1" width="100%">
+ *     <tr>
+ *       <td width="6%">*</td>
+ *       <td width="94%">Specifies that the expression preceding the asterisk may occur any number
+ *       of times (including not at all).</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">+</td>
+ *       <td width="94%">Specifies that the expression preceding the asterisk may occur one or
+ *       more times, but must occur at least once.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">?</td>
+ *       <td width="94%">Specifies that the expression preceding the asterisk may occur once
+ *       or not at all (i.e., it makes the preceding expression optional).</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">()</td>
+ *       <td width="94%">Encloses a sequence of characters.  If followed by * or +, the 
+ *       sequence repeats.  If followed by ?, the sequence is optional.  Otherwise, the 
+ *       parentheses are just a grouping device and a way to delimit the ends of expressions 
+ *       containing |.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">|</td>
+ *       <td width="94%">Separates two alternative sequences of characters.&nbsp; Either one
+ *       sequence or the other, but not both, matches this expression.&nbsp; The | character can
+ *       only occur inside ().</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">.</td>
+ *       <td width="94%">Matches any character.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">*?</td>
+ *       <td width="94%">Specifies a non-greedy asterisk.&nbsp; *? works the same way as *, except
+ *       when there is overlap between the last group of characters in the expression preceding the
+ *       * and the first group of characters following the *.&nbsp; When there is this kind of
+ *       overlap, * will match the longest sequence of characters that match the expression before
+ *       the *, and *? will match the shortest sequence of characters matching the expression
+ *       before the *?.&nbsp; For example, if you have &quot;xxyxyyyxyxyxxyxyxyy&quot; in the text,
+ *       &quot;x[xy]*x&quot; will match through to the last x (i.e., &quot;<strong>xxyxyyyxyxyxxyxyx</strong>yy&quot;,
+ *       but &quot;x[xy]*?x&quot; will only match the first two xes (&quot;<strong>xx</strong>yxyyyxyxyxxyxyxyy&quot;).</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">[]</td>
+ *       <td width="94%">Specifies a group of alternative characters.&nbsp; A [] expression will
+ *       match any single character that is specified in the [] expression.&nbsp; For more on the
+ *       syntax of [] expressions, see below.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">/</td>
+ *       <td width="94%">Specifies where the break position should go if text matches this
+ *       expression.&nbsp; (e.g., &quot;[a-z]&#42;/[:Zs:]*[1-0]&quot; will match if the iterator sees a run
+ *       of letters, followed by a run of whitespace, followed by a digit, but the break position
+ *       will actually go before the whitespace).&nbsp; Expressions that don't contain / put the
+ *       break position at the end of the matching text.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">\</td>
+ *       <td width="94%">Escape character.&nbsp; The \ itself is ignored, but causes the next
+ *       character to be treated as literal character.&nbsp; This has no effect for many
+ *       characters, but for the characters listed above, this deprives them of their special
+ *       meaning.&nbsp; (There are no special escape sequences for Unicode characters, or tabs and
+ *       newlines; these are all handled by a higher-level protocol.&nbsp; In a Java string,
+ *       &quot;\n&quot; will be converted to a literal newline character by the time the
+ *       regular-expression parser sees it.&nbsp; Of course, this means that \ sequences that are
+ *       visible to the regexp parser must be written as \\ when inside a Java string.)&nbsp; All
+ *       characters in the ASCII range except for letters, digits, and control characters are
+ *       reserved characters to the parser and must be preceded by \ even if they currently don't
+ *       mean anything.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">!</td>
+ *       <td width="94%">If ! appears at the beginning of a regular expression, it tells the regexp
+ *       parser that this expression specifies the backwards-iteration behavior of the iterator,
+ *       and not its normal iteration behavior.&nbsp; This is generally only used in situations
+ *       where the automatically-generated backwards-iteration behavior doesn't produce
+ *       satisfactory results and must be supplemented with extra client-specified rules.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%"><em>(all others)</em></td>
+ *       <td width="94%">All other characters are treated as literal characters, which must match
+ *       the corresponding character(s) in the text exactly.</td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * <p>Within a [] expression, a number of other special characters can be used to specify
+ * groups of characters:</p>
+ *
+ * <blockquote>
+ *   <table border="1" width="100%">
+ *     <tr>
+ *       <td width="6%">-</td>
+ *       <td width="94%">Specifies a range of matching characters.&nbsp; For example
+ *       &quot;[a-p]&quot; matches all lowercase Latin letters from a to p (inclusive).&nbsp; The -
+ *       sign specifies ranges of continuous Unicode numeric values, not ranges of characters in a
+ *       language's alphabetical order: &quot;[a-z]&quot; doesn't include capital letters, nor does
+ *       it include accented letters such as a-umlaut.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">^</td>
+ *       <td width="94%">Inverts the expression.  All characters the expression includes are
+ *       excluded, and vice versa.  (i.e., it has the effect of saying "all Unicode characters
+ *       except...")  This character only has its special meaning when it's the first character
+ *       in the [] expression.  (Generally, you only see the ^ character inside a nested []
+ *       expression used in conjunction with the syntax below.)</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%"><em>(all others)</em></td>
+ *       <td width="94%">All other characters are treated as literal characters.&nbsp; (For
+ *       example, &quot;[aeiou]&quot; specifies just the letters a, e, i, o, and u.)</td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * <p>[] expressions can nest.  There are some other characters that have special meaning only
+ * when used in conjunction with nester [] expressions:</p>
+ *
+ * <blockquote>
+ *   <table border="1" width="100%">
+ *     <tr>
+ *       <td width="6%">::</td>
+ *       <td width="94%">Within a nested [] expression, a pair of colons containing a one- or 
+ *       two-letter code matches all characters in the corresponding Unicode category.&nbsp; 
+ *       The :: expression has to be the only thing inside the [] expression. The two-letter codes 
+ *       are the same as the two-letter codes in the Unicode database (for example, 
+ *       &quot;[[:Sc:][:Sm:]]&quot; matches all currency symbols and all math symbols).&nbsp; 
+ *       Specifying a one-letter code is the same as specifying all two-letter codes that begin 
+ *       with that letter (for example, &quot;[[:L:]]&quot; matches all letters, and is equivalent 
+ *       to &quot;[[:Lu:][:Ll:][:Lo:][:Lm:][:Lt:]]&quot;).&nbsp; Anything other than a valid 
+ *       two-letter Unicode category code or a single letter that begins a valide Unicode category 
+ *       code is illegal within the colons.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">|</td>
+ *       <td width="94%">Two nested [] expressions juxtaposed or separated only by a | character
+ *       are merged together into a single [] expression matching all the characters in either
+ *       of the original [] expressions.  (e.g., "[[ab][bc]]" is equivalent to "[abc]", and so
+ *       is "[[ab]|[bc]]". <b>NOTE:</b>  "[ab][bc]" is NOT the same thing as "[[ab][bc]]".  
+ *       The first expression will match two characters: an a or b followed by either another 
+ *       b or a c.  The second expression will match a single character, which may be a, b, or c.
+ *       The nesting is <em>required</em> for the expressions to merge together.</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">&</td>
+ *       <td width="94%">Two nested [] expressions with only & between them will match any 
+ *       character that appears in both nested [] expressions (this is a set intersection).
+ *       (e.g., "[[ab]&[bc]]" will only match the letter b.)</td>
+ *     </tr>
+ *     <tr>
+ *       <td width="6%">-</td>
+ *       <td width="94%">Two nested [] expressions with - between them will match any
+ *       character that appears in the first nested [] expression <em>but not</em> the
+ *       second one (this is an asymmetrical set difference).  (e.g., "[[:Sc:]-[$]]"
+ *       matches any currency symbol except the dollar sign.  "[[ab]-[bc]] will match
+ *       only the letter a.  This has exactly the same effect as "[[ab]&[^bc]]".)</td>
+ *     </tr>
+ *
+ * <p>For a more complete explanation, see <a
+ * href="http://www.ibm.com/java/education/boundaries/boundaries.html">http://www.ibm.com/java/education/boundaries/boundaries.html</a>.
+ * &nbsp; For examples, see the resource data (which is annotated).</p>
+ *
+ * @author Richard Gillam
+ * $RCSfile: RuleBasedBreakIterator.java,v $ $Revision: 1.5 $ $Date: 2000/03/10 04:07:22 $
+ */
+public class RuleBasedBreakIterator extends BreakIterator {
+
+    /**
+     * A token used as a character-category value to identify ignore characters
+     */
+    protected static final byte IGNORE = -1;
+
+    /**
+     * The state number of the starting state
+     */
+    private static final short START_STATE = 1;
+
+    /**
+     * The state-transition value indicating "stop"
+     */
+    private static final short STOP_STATE = 0;
+
+    /**
+     * The textual description this iterator was created from
+     */
+    private String description;
+
+    /**
+     * A table that indexes from character values to character category numbers
+     */
+    private CompactByteArray charCategoryTable = null;
+
+    /**
+     * The table of state transitions used for forward iteration
+     */
+    private short[] stateTable = null;
+
+    /**
+     * The table of state transitions used to sync up the iterator with the
+     * text in backwards and random-access iteration
+     */
+    private short[] backwardsStateTable = null;
+
+    /**
+     * A list of flags indicating which states in the state table are accepting
+     * ("end") states
+     */
+    private boolean[] endStates = null;
+
+    /**
+     * A list of flags indicating which states in the state table are
+     * lookahead states (states which turn lookahead on and off)
+     */
+    private boolean[] lookaheadStates = null;
+
+    /**
+     * The number of character categories (and, thus, the number of columns in
+     * the state tables)
+     */
+    private int numCategories;
+
+    /**
+     * The character iterator through which this BreakIterator accesses the text
+     */
+    private CharacterIterator text = null;
+
+    //=======================================================================
+    // constructors
+    //=======================================================================
+
+    /**
+     * Constructs a RuleBasedBreakIterator according to the description
+     * provided.  If the description is malformed, throws an
+     * IllegalArgumentException.  Normally, instead of constructing a
+     * RuleBasedBreakIterator directory, you'll use the factory methods
+     * on BreakIterator to create one indirectly from a description
+     * in the framework's resource files.  You'd use this when you want
+     * special behavior not provided by the built-in iterators.
+     */
+    public RuleBasedBreakIterator(String description) {
+//System.out.println(">>>RBBI constructor");
+        this.description = description;
+
+        // the actual work is done by the Builder class
+        Builder builder = makeBuilder();
+        builder.buildBreakIterator();
+//System.out.println("<<<RBBI constructor");
+    }
+
+    /**
+     * Creates a Builder.
+     */
+    protected Builder makeBuilder() {
+        return new Builder();
+    }
+
+    //=======================================================================
+    // boilerplate
+    //=======================================================================
+    /**
+     * Clones this iterator.
+     * @return A newly-constructed RuleBasedBreakIterator with the same
+     * behavior as this one.
+     */
+    public Object clone()
+    {
+        RuleBasedBreakIterator result = (RuleBasedBreakIterator) super.clone();
+        if (text != null) {
+            result.text = (CharacterIterator) text.clone();
+        }
+        return result;
+    }
+
+    /**
+     * Returns true if both BreakIterators are of the same class, have the same
+     * rules, and iterate over the same text.
+     */
+    public boolean equals(Object that) {
+        try {
+            RuleBasedBreakIterator other = (RuleBasedBreakIterator) that;
+            if (!description.equals(other.description)) {
+                return false;
+            }
+            if (text == null) {
+                return other.text == null;
+            }
+            else {
+                return text.equals(other.text);
+            }
+        }
+        catch(ClassCastException e) {
+            return false;
+        }
+    }
+
+    /**
+     * Returns the description used to create this iterator
+     */
+    public String toString() {
+        return description;
+    }
+
+    /**
+     * Compute a hashcode for this BreakIterator
+     * @return A hash code
+     */
+    public int hashCode()
+    {
+        return description.hashCode();
+    }
+
+// DELETE ME BEFORE RELEASE!!!
+public void writeTablesToFile(FileOutputStream file, boolean littleEndian) throws IOException {
+    // NOTE: The format being written here is designed to be compatible with
+    // the ICU udata interfaces and may not be useful for much else
+    DataOutputStream out = new DataOutputStream(file);
+    
+// --- write the file header ---
+byte[] comment = "Copyright (C) 1999, International Business Machines Corp. and others. All Rights Reserved.".getBytes("US-ASCII");
+// write the size of the header (rounded up to the next 16-byte boundary)
+short headerSize = (short)(comment.length + 1 // length of comment
+                   + 24); // size of static header data
+short realHeaderSize = (short)(headerSize + ((headerSize % 16 == 0) ? 0 : 16 - (headerSize % 16)));
+writeSwappedShort(realHeaderSize, out, littleEndian);
+// write magic byte values
+out.write(0xda);
+out.write(0x27);
+// write size of core header data
+writeSwappedShort((short)20, out, littleEndian);
+// write reserved bytes
+writeSwappedShort((short)0, out, littleEndian);
+// write flag indicating whether we're big-endian
+out.write(0);
+// write character set family code (0 means ASCII)
+out.write(0);
+// write size of UChar in this file
+out.write(2);
+// write reserved byte
+out.write(0);
+// write data format identifier (this is an array of bytes in ICU, so the value is NOT swapped!)
+out.writeInt(0x42524b53);   // ("BRKS")
+// write file format version number (NOT swapped!)
+out.writeInt(0);
+// write data version number (NOT swapped!)
+out.writeInt(0);
+// write copyright notice
+out.write(comment);
+out.write(0);
+// fill in padding bytes
+while (headerSize < realHeaderSize) {
+    out.write(0);
+    ++headerSize;
+}
+
+// --- write index to the file ---
+// write the number of columns in the state table
+writeSwappedInt(numCategories, out, littleEndian);
+int fileEnd = 36;
+// write the location in the file of the BreakIterator description string
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += (description.length() + 1) * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the character category table's index
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += charCategoryTable.getIndexArray().length * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the character category table's values array
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += charCategoryTable.getValueArray().length;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the forward state table
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += stateTable.length * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the backward state table
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += backwardsStateTable.length * 2;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the endStates flags
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += endStates.length;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the location of the lookaheadStates flags
+writeSwappedInt(fileEnd, out, littleEndian);
+fileEnd += lookaheadStates.length;
+fileEnd += (fileEnd % 4 == 0) ? 0 : 4 - (fileEnd % 4);
+// write the length of the file
+writeSwappedInt(fileEnd, out, littleEndian);
+
+// --- write the actual data ---
+// write description string
+for (int i = 0; i < description.length(); i++)
+    writeSwappedShort((short)description.charAt(i), out, littleEndian);
+out.writeShort(0);
+if ((description.length() + 1) % 2 == 1)
+    out.writeShort(0);
+// write character category table
+char[] temp1 = charCategoryTable.getIndexArray();
+for (int i = 0; i < temp1.length; i++)
+    writeSwappedShort((short)temp1[i], out, littleEndian);
+if (temp1.length % 2 == 1)
+    out.writeShort(0);
+byte[] temp2 = charCategoryTable.getValueArray();
+out.write(temp2);
+switch (temp2.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+// write the state transition tables
+for (int i = 0; i < stateTable.length; i++)
+    writeSwappedShort(stateTable[i], out, littleEndian);
+if (stateTable.length % 2 == 1)
+    out.writeShort(0);
+for (int i = 0; i < backwardsStateTable.length; i++)
+    writeSwappedShort(backwardsStateTable[i], out, littleEndian);
+if (backwardsStateTable.length % 2 == 1)
+    out.writeShort(0);
+// write the flag arrays
+for (int i = 0; i < endStates.length; i++)
+    out.writeBoolean(endStates[i]);
+switch (endStates.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+for (int i = 0; i < lookaheadStates.length; i++)
+    out.writeBoolean(lookaheadStates[i]);
+switch (lookaheadStates.length % 4) {
+    case 1: out.write(0);
+    case 2: out.write(0);
+    case 3: out.write(0);
+    default: break;
+}
+}
+    
+protected void writeSwappedShort(short x, DataOutputStream out, boolean littleEndian)
+throws IOException{
+    if (littleEndian) {
+        out.write((byte)(x & 0xff));
+        out.write((byte)((x >> 8) & 0xff));
+    }
+    else {
+        out.write((byte)((x >> 8) & 0xff));
+        out.write((byte)(x & 0xff));
+    }
+}
+
+protected void writeSwappedInt(int x, DataOutputStream out, boolean littleEndian)
+throws IOException {
+    if (littleEndian) {
+        out.write((byte)(x & 0xff));
+        out.write((byte)((x >> 8) & 0xff));
+        out.write((byte)((x >> 16) & 0xff));
+        out.write((byte)((x >> 24) & 0xff));
+    }
+    else {
+        out.write((byte)((x >> 24) & 0xff));
+        out.write((byte)((x >> 16) & 0xff));
+        out.write((byte)((x >> 8) & 0xff));
+        out.write((byte)(x & 0xff));
+    }
+}
+    
+    //=======================================================================
+    // BreakIterator overrides
+    //=======================================================================
+
+    /**
+     * Sets the current iteration position to the beginning of the text.
+     * (i.e., the CharacterIterator's starting offset).
+     * @return The offset of the beginning of the text.
+     */
+    public int first() {
+        CharacterIterator t = getText();
+
+        t.first();
+        return t.getIndex();
+    }
+
+    /**
+     * Sets the current iteration position to the end of the text.
+     * (i.e., the CharacterIterator's ending offset).
+     * @return The text's past-the-end offset.
+     */
+    public int last() {
+        CharacterIterator t = getText();
+
+        // I'm not sure why, but t.last() returns the offset of the last character,
+        // rather than the past-the-end offset
+        t.setIndex(t.getEndIndex());
+        return t.getIndex();
+    }
+
+    /**
+     * Advances the iterator either forward or backward the specified number of steps.
+     * Negative values move backward, and positive values move forward.  This is
+     * equivalent to repeatedly calling next() or previous().
+     * @param n The number of steps to move.  The sign indicates the direction
+     * (negative is backwards, and positive is forwards).
+     * @return The character offset of the boundary position n boundaries away from
+     * the current one.
+     */
+    public int next(int n) {
+        int result = current();
+        while (n > 0) {
+            result = handleNext();
+            --n;
+        }
+        while (n < 0) {
+            result = previous();
+            ++n;
+        }
+        return result;
+    }
+
+    /**
+     * Advances the iterator to the next boundary position.
+     * @return The position of the first boundary after this one.
+     */
+    public int next() {
+        return handleNext();
+    }
+
+    /**
+     * Advances the iterator backwards, to the last boundary preceding this one.
+     * @return The position of the last boundary position preceding this one.
+     */
+    public int previous() {
+        // if we're already sitting at the beginning of the text, return DONE
+        CharacterIterator text = getText();
+        if (current() == text.getBeginIndex()) {
+            return BreakIterator.DONE;
+        }
+
+        // set things up.  handlePrevious() will back us up to some valid
+        // break position before the current position (we back our internal
+        // iterator up one step to prevent handlePrevious() from returning
+        // the current position), but not necessarily the last one before
+        // where we started
+        int start = current();
+        text.previous();
+        int lastResult = handlePrevious();
+        int result = lastResult;
+
+        // iterate forward from the known break position until we pass our
+        // starting point.  The last break position before the starting
+        // point is our return value
+        while (result != BreakIterator.DONE && result < start) {
+            lastResult = result;
+            result = handleNext();
+        }
+
+        // set the current iteration position to be the last break position
+        // before where we started, and then return that value
+        text.setIndex(lastResult);
+        return lastResult;
+    }
+
+    /**
+     * Throw IllegalArgumentException unless begin <= offset < end.
+     */
+    protected static final void checkOffset(int offset, CharacterIterator text) {
+        if (offset < text.getBeginIndex() || offset > text.getEndIndex()) {
+            throw new IllegalArgumentException("offset out of bounds");
+        }
+    }
+
+    /**
+     * Sets the iterator to refer to the first boundary position following
+     * the specified position.
+     * @offset The position from which to begin searching for a break position.
+     * @return The position of the first break after the current position.
+     */
+    public int following(int offset) {
+        // if the offset passed in is already past the end of the text,
+        // just return DONE
+        CharacterIterator text = getText();
+        if (offset == text.getEndIndex()) {
+            return BreakIterator.DONE;
+        }
+        checkOffset(offset, text);
+
+        // otherwise, set our internal iteration position (temporarily)
+        // to the position passed in.  If this is the _beginning_ position,
+        // then we can just use next() to get our return value
+        text.setIndex(offset);
+        if (offset == text.getBeginIndex()) {
+            return handleNext();
+        }
+
+        // otherwise, we have to sync up first.  Use handlePrevious() to back
+        // us up to a known break position before the specified position (if
+        // we can determine that the specified position is a break position,
+        // we don't back up at all).  This may or may not be the last break
+        // position at or before our starting position.  Advance forward
+        // from here until we've passed the starting position.  The position
+        // we stop on will be the first break position after the specified one.
+        int result = handlePrevious();
+        while (result != BreakIterator.DONE && result <= offset) {
+            result = handleNext();
+        }
+        return result;
+    }
+
+    /**
+     * Sets the iterator to refer to the last boundary position before the
+     * specified position.
+     * @offset The position to begin searching for a break from.
+     * @return The position of the last boundary before the starting position.
+     */
+    public int preceding(int offset) {
+        // if we start by updating the current iteration position to the
+        // position specified by the caller, we can just use previous()
+        // to carry out this operation
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+        text.setIndex(offset);
+        return previous();
+    }
+
+    /**
+     * Returns true if the specfied position is a boundary position.  As a side
+     * effect, leaves the iterator pointing to the first boundary position at
+     * or after "offset".
+     * @param offset the offset to check.
+     * @return True if "offset" is a boundary position.
+     */
+    public boolean isBoundary(int offset) {
+        CharacterIterator text = getText();
+        checkOffset(offset, text);
+        if (offset == text.getBeginIndex()) {
+            return true;
+        }
+
+        // to check whether this is a boundary, we can use following() on the
+        // position before the specified one and return true if the position we
+        // get back is the one the user specified
+        else {
+            return following(offset - 1) == offset;
+        }
+    }
+
+    /**
+     * Returns the current iteration position.
+     * @return The current iteration position.
+     */
+    public int current() {
+        return getText().getIndex();
+    }
+
+    /**
+     * Return a CharacterIterator over the text being analyzed.  This version
+     * of this method returns the actual CharacterIterator we're using internally.
+     * Changing the state of this iterator can have undefined consequences.  If
+     * you need to change it, clone it first.
+     * @return An iterator over the text being analyzed.
+     */
+    public CharacterIterator getText() {
+        // The iterator is initialized pointing to no text at all, so if this
+        // function is called while we're in that state, we have to fudge an
+        // an iterator to return.
+        if (text == null) {
+            text = new StringCharacterIterator("");
+        }
+        return text;
+    }
+
+    /**
+     * Set the iterator to analyze a new piece of text.  This function resets
+     * the current iteration position to the beginning of the text.
+     * @param newText An iterator over the text to analyze.
+     */
+    public void setText(CharacterIterator newText) {
+        // Test text to see if we need to wrap it in a SafeCharIterator:
+        int end = newText.getEndIndex();
+        newText.setIndex(end);
+        if (newText.getIndex() != end) {
+            // failed - wrap in correct implementation
+            text = new SafeCharIterator(newText);
+        }
+        else {
+            text = newText;
+        }
+        text.first();
+    }
+
+
+    //=======================================================================
+    // implementation
+    //=======================================================================
+
+    /**
+     * This method is the actual implementation of the next() method.  All iteration
+     * vectors through here.  This method initializes the state machine to state 1
+     * and advances through the text character by character until we reach the end
+     * of the text or the state machine transitions to state 0.  We update our return
+     * value every time the state machine passes through a possible end state.
+     */
+    protected int handleNext() {
+        // if we're already at the end of the text, return DONE.
+        CharacterIterator text = getText();
+        if (text.getIndex() == text.getEndIndex()) {
+            return BreakIterator.DONE;
+        }
+
+        // no matter what, we always advance at least one character forward
+        int result = text.getIndex() + 1;
+        int lookaheadResult = 0;
+
+        // begin in state 1
+        int state = START_STATE;
+        int category;
+        char c = text.current();
+        char lastC = c;
+        int lastCPos = 0;
+
+        // if the first character in this segment is an ignore character (which can happen
+        // when it's either the first character in the file or follows a mandatory break
+        // character), and the first non-ignore character isn't a glue character, always
+        // put a break between the ignore characters and the rest of the text
+        if (lookupCategory(c) == IGNORE) {
+            while (lookupCategory(c) == IGNORE)
+                c = text.next();
+            
+            if (Character.getType(c) == Character.NON_SPACING_MARK || Character.getType(c)
+                    == Character.ENCLOSING_MARK) {
+                return text.getIndex();
+            }
+        }
+        
+        // loop until we reach the end of the text or transition to state 0
+        while (c != CharacterIterator.DONE && state != STOP_STATE) {
+
+            // look up the current character's character category (which tells us
+            // which column in the state table to look at)
+            category = lookupCategory(c);
+
+            // if the character isn't an ignore character, look up a state
+            // transition in the state table
+            if (category != IGNORE) {
+                state = lookupState(state, category);
+            }
+
+            // if the state we've just transitioned to is a lookahead state,
+            // (but not also an end state), save its position.  If it's
+            // both a lookahead state and an end state, update the break position
+            // to the last saved lookup-state position
+            if (lookaheadStates[state]) {
+                if (endStates[state]) {
+                    result = lookaheadResult;
+                }
+                else {
+                    lookaheadResult = text.getIndex() + 1;
+                }
+            }
+
+            // otherwise, if the state we've just transitioned to is an accepting
+            // state, update the break position to be the current iteration position
+            else {
+                if (endStates[state]) {
+                    result = text.getIndex() + 1;
+                }
+            }
+            
+            // keep track of the last "real" character we saw.  If this character isn't an
+            // ignore character, take note of it and its position in the text
+            if (category != IGNORE && state != STOP_STATE) {
+                lastC = c;
+                lastCPos = text.getIndex();
+            }
+            c = text.next();
+        }
+
+        // if we've run off the end of the text, and the very last character took us into
+        // a lookahead state, advance the break position to the lookahead position
+        // (the theory here is that if there are no characters at all after the lookahead
+        // position, that always matches the lookahead criteria)
+        if (c == CharacterIterator.DONE && lookaheadResult == text.getEndIndex()) {
+            result = lookaheadResult;
+        }
+        
+        // if the last character we saw before the one that took us into the stop state
+        // was a mandatory breaking character, then the break position goes right after it
+        // (this is here so that breaks come before, rather than after, a string of
+        // ignore characters when they follow a mandatory break character)
+        else if ("\n\r\f\u2028\u2029".indexOf(lastC) != -1) {
+            result = lastCPos + 1;
+        }
+
+        text.setIndex(result);
+        return result;
+    }
+
+    /**
+     * This method backs the iterator back up to a "safe position" in the text.
+     * This is a position that we know, without any context, must be a break position.
+     * The various calling methods then iterate forward from this safe position to
+     * the appropriate position to return.  (For more information, see the description
+     * of buildBackwardsStateTable() in RuleBasedBreakIterator.Builder.)
+     */
+    protected int handlePrevious() {
+        CharacterIterator text = getText();
+        int state = START_STATE;
+        int category = 0;
+        int lastCategory = 0;
+        char c = text.current();
+
+        // loop until we reach the beginning of the text or transition to state 0
+        while (c != CharacterIterator.DONE && state != STOP_STATE) {
+//System.out.print(" " + text.getIndex());
+
+            // save the last character's category and look up the current
+            // character's category
+            lastCategory = category;
+            category = lookupCategory(c);
+
+            // if the current character isn't an ignore character, look up a
+            // state transition in the backwards state table
+            if (category != IGNORE) {
+                state = lookupBackwardState(state, category);
+            }
+
+            // then advance one character backwards
+            c = text.previous();
+        }
+
+        // if we didn't march off the beginning of the text, we're either one or two
+        // positions away from the real break position.  (One because of the call to
+        // previous() at the end of the loop above, and another because the character
+        // that takes us into the stop state will always be the character BEFORE
+        // the break position.)
+        if (c != CharacterIterator.DONE) {
+            if (lastCategory != IGNORE) {
+                text.setIndex(text.getIndex() + 2);
+            }
+            else {
+                text.next();
+            }
+        }
+//System.out.print(",");
+        return text.getIndex();
+    }
+
+//static int visitedChars = 0;
+    /**
+     * Looks up a character's category (i.e., its category for breaking purposes,
+     * not its Unicode category)
+     */
+    protected int lookupCategory(char c) {
+//++visitedChars;
+        return charCategoryTable.elementAt(c);
+    }
+
+/*
+static void printVisitedCharCount() {
+System.out.println("Total number of characters visited = " + visitedChars);
+visitedChars = 0;
+}
+*/
+
+    /**
+     * Given a current state and a character category, looks up the
+     * next state to transition to in the state table.
+     */
+    protected int lookupState(int state, int category) {
+        return stateTable[state * numCategories + category];
+    }
+
+    /**
+     * Given a current state and a character category, looks up the
+     * next state to transition to in the backwards state table.
+     */
+    protected int lookupBackwardState(int state, int category) {
+        return backwardsStateTable[state * numCategories + category];
+    }
+
+    //=======================================================================
+    // RuleBasedBreakIterator.Builder
+    //=======================================================================
+    /**
+     * The Builder class has the job of constructing a RuleBasedBreakIterator from a
+     * textual description.  A Builder is constructed by RuleBasedBreakIterator's
+     * constructor, which uses it to construct the iterator itself and then throws it
+     * away.
+     * <p>The construction logic is separated out into its own class for two primary
+     * reasons:
+     * <ul><li>The construction logic is quite sophisticated and large.  Separating it
+     * out into its own class means the code must only be loaded into memory while a
+     * RuleBasedBreakIterator is being constructed, and can be purged after that.
+     * <li>There is a fair amount of state that must be maintained throughout the
+     * construction process that is not needed by the iterator after construction.
+     * Separating this state out into another class prevents all of the functions that
+     * construct the iterator from having to have really long parameter lists,
+     * (hopefully) contributing to readability and maintainability.</ul>
+     * <p>It'd be really nice if this could be an independent class rather than an
+     * inner class, because that would shorten the source file considerably, but
+     * making Builder an inner class of RuleBasedBreakIterator allows it direct access
+     * to RuleBasedBreakIterator's private members, which saves us from having to
+     * provide some kind of "back door" to the Builder class that could then also be
+     * used by other classes.
+     */
+    protected class Builder {
+        /**
+         * A temporary holding place used for calculating the character categories.
+         * This object contains UnicodeSet objects.
+         */
+        protected Vector categories = null;
+
+        /**
+         * A table used to map parts of regexp text to lists of character categories,
+         * rather than having to figure them out from scratch each time
+         */
+        protected Hashtable expressions = null;
+
+        /**
+         * A temporary holding place for the list of ignore characters
+         */
+        protected UnicodeSet ignoreChars = null;
+
+        /**
+         * A temporary holding place where the forward state table is built
+         */
+        protected Vector tempStateTable = null;
+
+        /**
+         * A list of all the states that have to be filled in with transitions to the
+         * next state that is created.  Used when building the state table from the
+         * regular expressions.
+         */
+        protected Vector decisionPointList = null;
+
+        /**
+         * A stack for holding decision point lists.  This is used to handle nested
+         * parentheses and braces in regexps.
+         */
+        protected Stack decisionPointStack = null;
+
+        /**
+         * A list of states that loop back on themselves.  Used to handle .*?
+         */
+        protected Vector loopingStates = null;
+
+        /**
+         * Looping states actually have to be backfilled later in the process
+         * than everything else.  This is where a the list of states to backfill
+         * is accumulated.  This is also used to handle .*?
+         */
+        protected Vector statesToBackfill = null;
+
+        /**
+         * A list mapping pairs of state numbers for states that are to be combined
+         * to the state number of the state representing their combination.  Used
+         * in the process of making the state table deterministic to prevent
+         * infinite recursion.
+         */
+        protected Vector mergeList = null;
+
+        /**
+         * A flag that is used to indicate when the list of looping states can
+         * be reset.
+         */
+        protected boolean clearLoopingStates = false;
+
+        /**
+         * A bit mask used to indicate a bit in the table's flags column that marks a
+         * state as an accepting state.
+         */
+        protected static final int END_STATE_FLAG = 0x8000;
+
+        /**
+         * A bit mask used to indicate a bit in the table's flags column that marks a
+         * state as one the builder shouldn't loop to any looping states
+         */
+        protected static final int DONT_LOOP_FLAG = 0x4000;
+
+        /**
+         * A bit mask used to indicate a bit in the table's flags column that marks a
+         * state as a lookahead state.
+         */
+        protected static final int LOOKAHEAD_STATE_FLAG = 0x2000;
+
+        /**
+         * A bit mask representing the union of the mask values listed above.
+         * Used for clearing or masking off the flag bits.
+         */
+        protected static final int ALL_FLAGS = END_STATE_FLAG | LOOKAHEAD_STATE_FLAG
+                | DONT_LOOP_FLAG;
+
+        /**
+         * No special construction is required for the Builder.
+         */
+        public Builder() {
+        }
+
+        /**
+         * This is the main function for setting up the BreakIterator's tables.  It
+         * just vectors different parts of the job off to other functions.
+         */
+        public void buildBreakIterator() {
+            Vector tempRuleList = buildRuleList(description);
+            buildCharCategories(tempRuleList);
+            buildStateTable(tempRuleList);
+            buildBackwardsStateTable(tempRuleList);
+        }
+
+        /**
+         * Thus function has three main purposes:
+         * <ul><li>Perform general syntax checking on the description, so the rest of the
+         * build code can assume that it's parsing a legal description.
+         * <li>Split the description into separate rules
+         * <li>Perform variable-name substitutions (so that no one else sees variable names)
+         * </ul>
+         */
+        private Vector buildRuleList(String description) {
+            // invariants:
+            // - parentheses must be balanced: ()[]{}<>
+            // - nothing can be nested inside {}
+            // - nothing can be nested inside [] except more []s
+            // - pairs of ()[]{}<> must not be empty
+            // - ; can only occur at the outer level
+            // - | can only appear inside ()
+            // - only one = or / can occur in a single rule
+            // - = and / cannot both occur in the same rule
+            // - the right-hand side of a = expression must be enclosed in [] or ()
+            // - * may not occur at the beginning of a rule, nor may it follow
+            //   =, /, (, (, |, }, ;, or *
+            // - ? may only follow *
+            // - the rule list must contain at least one / rule
+            // - no rule may be empty
+            // - all printing characters in the ASCII range except letters and digits
+            //   are reserved and must be preceded by \
+            // - ! may only occur at the beginning of a rule
+
+            // set up a vector to contain the broken-up description (each entry in the
+            // vector is a separate rule) and a stack for keeping track of opening
+            // punctuation
+            Vector tempRuleList = new Vector();
+            Stack parenStack = new Stack();
+
+            int p = 0;
+            int ruleStart = 0;
+            char c = '\u0000';
+            char lastC = '\u0000';
+            char lastOpen = '\u0000';
+            boolean haveEquals = false;
+            boolean havePipe = false;
+            boolean sawVarName = false;
+            boolean sawIllegalChar = false;
+            int illegalCharPos = 0;
+            final String charsThatCantPrecedeAsterisk = "=/<(|>*+?;\u0000";
+
+            // if the description doesn't end with a semicolon, tack a semicolon onto the end
+            if (description.length() != 0 && description.charAt(description.length() - 1) != ';') {
+                description = description + ";";
+            }
+
+            // for each character, do...
+            while (p < description.length()) {
+                c = description.charAt(p);
+                switch (c) {
+                    // if the character is opening punctuation, verify that no nesting
+                    // rules are broken, and push the character onto the stack
+                    case '{':
+                    case '[':
+                    case '(':
+                        if (lastOpen == '{') {
+                            error("Can't nest brackets inside {}", p, description);
+                        }
+                        if (lastOpen == '[' && c != '[') {
+                            error("Can't nest anything in [] but []", p, description);
+                        }
+
+                        // if we see { anywhere except on the left-hand side of =,
+                        // we must be seeing a variable name that was never defined
+                        if (c == '{' && (haveEquals || havePipe)) {
+                            error("Unknown variable name", p, description);
+                        }
+
+                        lastOpen = c;
+                        parenStack.push(new Character(c));
+                        if (c == '{') {
+                            sawVarName = true;
+                        }
+                        break;
+
+                    // if the character is closing punctuation, verify that it matches the
+                    // last opening punctuation we saw, and that the brackets contain
+                    // something, then pop the stack
+                    case '}':
+                    case ']':
+                    case ')':
+                        char expectedClose = '\u0000';
+                        switch (lastOpen) {
+                            case '{':
+                                expectedClose = '}';
+                                break;
+                            case '[':
+                                expectedClose = ']';
+                                break;
+                            case '(':
+                                expectedClose = ')';
+                                break;
+                        }
+                        if (c != expectedClose) {
+                            error("Unbalanced parentheses", p, description);
+                        }
+                        if (lastC == lastOpen) {
+                            error("Parens don't contain anything", p, description);
+                        }
+                        parenStack.pop();
+                        if (!parenStack.empty()) {
+                            lastOpen = ((Character)(parenStack.peek())).charValue();
+                        }
+                        else {
+                            lastOpen = '\u0000';
+                        }
+
+                        break;
+
+                    // if the character is an asterisk, make sure it occurs in a place
+                    // where an asterisk can legally go
+                    case '*': case '+': case '?':
+                        if (charsThatCantPrecedeAsterisk.indexOf(lastC) != -1
+                                && (c != '?' || lastC != '*')) {
+                            error("Misplaced *, +, or ?", p, description);
+                        }
+                        break;
+
+                    // if the character is an equals sign, make sure we haven't seen another
+                    // equals sign or a slash yet
+                    case '=':
+                        if (haveEquals || havePipe) {
+                            error("More than one = or / in rule", p, description);
+                        }
+                        haveEquals = true;
+                        sawIllegalChar = false;
+                        break;
+
+                    // if the character is a slash, make sure we haven't seen another slash
+                    // or an equals sign yet
+                    case '/':
+                        if (haveEquals || havePipe) {
+                            error("More than one = or / in rule", p, description);
+                        }
+                        if (sawVarName) {
+                            error("Unknown variable name", p, description);
+                        }
+                        havePipe = true;
+                        break;
+
+                    // if the character is an exclamation point, make sure it occurs only
+                    // at the beginning of a rule
+                    case '!':
+                        if (lastC != ';' && lastC != '\u0000') {
+                            error("! can only occur at the beginning of a rule", p, description);
+                        }
+                        break;
+
+                    // if the character is a backslash, skip the character that follows it
+                    // (it'll get treated as a literal character)
+                    case '\\':
+                        ++p;
+                        break;
+
+                    // we don't have to do anything special on a period
+                    case '.':
+                        break;
+
+                    // if the character is a syntax character that can only occur
+                    // inside [], make sure that it does in fact only occur inside []
+                    // (or in a variable name)
+                    case '^':
+                    case '-':
+                    case ':':
+                    case '&':
+                        if (lastOpen != '[' && lastOpen != '{' && !sawIllegalChar) {
+                            sawIllegalChar = true;
+                            illegalCharPos = p;
+                        }
+                        break;
+
+                    // if the character is a semicolon, do the following...
+                    case ';':
+                        // if we saw any illegal characters along the way, throw
+                        // an error
+                        if (sawIllegalChar) {
+                            error("Illegal character", illegalCharPos, description);
+                        }
+                    
+                        // make sure the rule contains something and that there are no
+                        // unbalanced parentheses or brackets
+                        if (lastC == ';' || lastC == '\u0000') {
+                            error("Empty rule", p, description);
+                        }
+                        if (!parenStack.empty()) {
+                            error("Unbalanced parenheses", p, description);
+                        }
+
+                        if (parenStack.empty()) {
+                            // if the rule contained an = sign, call processSubstitution()
+                            // to replace the substitution name with the substitution text
+                            // wherever it appears in the description
+                            if (haveEquals) {
+                                description = processSubstitution(description.substring(ruleStart,
+                                                p), description, p + 1);
+                            }
+                            else {
+                                // otherwise, check to make sure the rule doesn't reference
+                                // any undefined substitutions
+                                if (sawVarName) {
+                                    error("Unknown variable name", p, description);
+                                }
+
+                                // then add it to tempRuleList
+                                tempRuleList.addElement(description.substring(ruleStart, p));
+                            }
+
+                            // and reset everything to process the next rule
+                            ruleStart = p + 1;
+                            haveEquals = havePipe = sawVarName = sawIllegalChar = false;
+                        }
+                        break;
+
+                    // if the character is a vertical bar, check to make sure that it
+                    // occurs inside a () expression and that the character that precedes
+                    // it isn't also a vertical bar
+                    case '|':
+                        if (lastC == '|') {
+                            error("Empty alternative", p, description);
+                        }
+                        if (parenStack.empty() || lastOpen != '(') {
+                            error("Misplaced |", p, description);
+                        }
+                        break;
+
+                    // if the character is anything else (escaped characters are
+                    // skipped and don't make it here), it's an error
+                    default:
+                        if (c >= ' ' && c < '\u007f' && !Character.isLetter(c)
+                                && !Character.isDigit(c) && !sawIllegalChar) {
+                            sawIllegalChar = true;
+                            illegalCharPos = p;
+                        }
+                        break;
+                }
+                lastC = c;
+                ++p;
+            }
+            if (tempRuleList.size() == 0) {
+                error("No valid rules in description", p, description);
+            }
+            return tempRuleList;
+        }
+
+        /**
+         * This function performs variable-name substitutions.  First it does syntax
+         * checking on the variable-name definition.  If it's syntactically valid, it
+         * then goes through the remainder of the description and does a simple
+         * find-and-replace of the variable name with its text.  (The variable text
+         * must be enclosed in either [] or () for this to work.)
+         */
+        protected String processSubstitution(String substitutionRule, String description,
+                        int startPos) {
+            // isolate out the text on either side of the equals sign
+            String replace;
+            String replaceWith;
+            int equalPos = substitutionRule.indexOf('=');
+            replace = substitutionRule.substring(0, equalPos);
+            replaceWith = substitutionRule.substring(equalPos + 1);
+
+            // check to see whether the substitution name is something we've declared
+            // to be "special".  For RuleBasedBreakIterator itself, this is "$ignore".
+            // This function takes care of any extra processing that has to be done
+            // with "special" substitution names.
+            handleSpecialSubstitution(replace, replaceWith, startPos, description);
+
+            // perform various other syntax checks on the rule
+            if (replaceWith.length() == 0) {
+                error("Nothing on right-hand side of =", startPos, description);
+            }
+            if (replace.length() == 0) {
+                error("Nothing on left-hand side of =", startPos, description);
+            }
+            if (!(replaceWith.charAt(0) == '[' && replaceWith.charAt(replaceWith.length() - 1)
+                    == ']') && !(replaceWith.charAt(0) == '(' && replaceWith.charAt(
+                    replaceWith.length() - 1) == ')')) {
+                error("Illegal right-hand side for =", startPos, description);
+            }
+
+            // now go through the rest of the description (which hasn't been broken up
+            // into separate rules yet) and replace every occurrence of the
+            // substitution name with the substitution body
+            replace = "{" + replace + "}";
+            StringBuffer result = new StringBuffer();
+            result.append(description.substring(0, startPos));
+            int lastPos = startPos;
+            int pos = description.indexOf(replace, startPos);
+            while (pos != -1) {
+                result.append(description.substring(lastPos, pos));
+                result.append(replaceWith);
+                lastPos = pos + replace.length();
+                pos = description.indexOf(replace, lastPos);
+            }
+            result.append(description.substring(lastPos));
+            return result.toString();
+        }
+
+        /**
+         * This function defines a protocol for handling substitution names that
+         * are "special," i.e., that have some property beyond just being
+         * substitutions.  At the RuleBasedBreakIterator level, we have one
+         * special substitution name, "<ignore>".  Subclasses can override this
+         * function to add more.  Any special processing that has to go on beyond
+         * that which is done by the normal substitution-processing code is done
+         * here.
+         */
+        protected void handleSpecialSubstitution(String replace, String replaceWith,
+                    int startPos, String description) {
+            // if we get a definition for a substitution called "$ignore", it defines
+            // the ignore characters for the iterator.  Check to make sure the expression
+            // is a [] expression, and if it is, parse it and store the characters off
+            // to the side.
+            if (replace.equals("$ignore")) {
+                if (replaceWith.charAt(0) == '(') {
+                    error("Ignore group can't be enclosed in (", startPos, description);
+                }
+                ignoreChars = new UnicodeSet(replaceWith, false);
+            }
+        }
+
+        /**
+         * This function builds the character category table.  On entry,
+         * tempRuleList is a vector of break rules that has had variable names substituted.
+         * On exit, the charCategoryTable data member has been initialized to hold the
+         * character category table, and tempRuleList's rules have been munged to contain
+         * character category numbers everywhere a literal character or a [] expression
+         * originally occurred.
+         */
+        protected void buildCharCategories(Vector tempRuleList) {
+            int bracketLevel = 0;
+            int p = 0;
+            int lineNum = 0;
+
+            // build hash table of every literal character or [] expression in the rule list
+            // and derive a UnicodeSet object representing the characters each refers to
+            expressions = new Hashtable();
+            while (lineNum < tempRuleList.size()) {
+                String line = (String)(tempRuleList.elementAt(lineNum));
+                p = 0;
+                while (p < line.length()) {
+                    char c = line.charAt(p);
+                    switch (c) {
+                        // skip over all syntax characters except [
+                        case '(': case ')': case '*': case '.': case '/':
+                        case '|': case ';': case '?': case '!': case '+':
+                            break;
+
+                        // for [, find the matching ] (taking nested [] pairs into account)
+                        // and add the whole expression to the expression list
+                        case '[':
+                            int q = p + 1;
+                            ++bracketLevel;
+                            while (q < line.length() && bracketLevel != 0) {
+                                c = line.charAt(q);
+                                if (c == '[') {
+                                    ++bracketLevel;
+                                }
+                                else if (c == ']') {
+                                    --bracketLevel;
+                                }
+                                ++q;
+                            }
+                            if (expressions.get(line.substring(p, q)) == null) {
+                                expressions.put(line.substring(p, q), new UnicodeSet(line.
+                                                substring(p, q), false));
+//Test.debugPrintln("1. Adding expression: " + line.substring(p, q));
+                            }
+                            p = q - 1;
+                            break;
+
+                        // for \ sequences, just move to the next character and treat
+                        // it as a single character
+                        case '\\':
+                            ++p;
+                            c = line.charAt(p);
+                            // DON'T break; fall through into "default" clause
+
+                        // for an isolated single character, add it to the expression list
+                        default:
+                            UnicodeSet s = new UnicodeSet();
+                            s.add(line.charAt(p));
+                            expressions.put(line.substring(p, p + 1), s);
+//Test.debugPrintln("2. Adding expression: " + line.substring(p, p + 1));
+                            break;
+                    }
+                    ++p;
+                }
+                ++lineNum;
+            }
+
+            // create the temporary category table (which is a vector of UnicodeSet objects)
+            categories = new Vector();
+            if (ignoreChars != null) {
+                categories.addElement(ignoreChars);
+            }
+            else {
+                categories.addElement(new UnicodeSet());
+            }
+            ignoreChars = null;
+
+            // this is a hook to allow subclasses to add categories on their own
+            mungeExpressionList(expressions);
+
+            // Derive the character categories.  Go through the existing character categories
+            // looking for overlap.  Any time there's overlap, we create a new character
+            // category for the characters that overlapped and remove them from their original
+            // category.  At the end, any characters that are left in the expression haven't
+            // been mentioned in any category, so another new category is created for them.
+            // For example, if the first expression is [abc], then a, b, and c will be placed
+            // into a single character category.  If the next expression is [bcd], we will first
+            // remove b and c from their existing category (leaving a behind), create a new
+            // category for b and c, and then create another new category for d (which hadn't
+            // been mentioned in the previous expression).
+            // At no time should a character ever occur in more than one character category.
+
+            // for each expression in the expressions list, do...
+            Enumeration iter = expressions.elements();
+            while (iter.hasMoreElements()) {
+                // initialize the working char set to the chars in the current expression
+                UnicodeSet e = new UnicodeSet((UnicodeSet)iter.nextElement());
+
+                // for each category in the category list, do...
+                for (int j = categories.size() - 1; !e.isEmpty() && j > 0; j--) {
+
+                    // if there's overlap between the current working set of chars
+                    // and the current category...
+                    UnicodeSet that = (UnicodeSet)(categories.elementAt(j));
+                    UnicodeSet temp = new UnicodeSet(e);
+                    temp.retainAll(that);
+                    if (!temp.isEmpty()) {
+                        // if the current category is not a subset of the current
+                        // working set of characters, then remove the overlapping
+                        // characters from the current category and create a new
+                        // category for them
+                        if (!temp.equals(that)) {
+                            that.removeAll(temp);
+                            categories.addElement(temp);
+                        }
+                        
+                        // and always remove the overlapping characters from the current
+                        // working set of characters
+                        e.removeAll(temp);
+                    }
+                }
+
+                // if there are still characters left in the working char set,
+                // add a new category containing them
+                if (!e.isEmpty()) {
+                    categories.addElement(e);
+                }
+            }
+
+            // we have the ignore characters stored in position 0.  Make an extra pass through
+            // the character category list and remove anything from the ignore list that shows
+            // up in some other category
+            UnicodeSet allChars = new UnicodeSet();
+            for (int i = 1; i < categories.size(); i++)
+                allChars.addAll((UnicodeSet)(categories.elementAt(i)));
+            UnicodeSet ignoreChars = (UnicodeSet)(categories.elementAt(0));
+            ignoreChars.removeAll(allChars);
+
+            // now that we've derived the character categories, go back through the expression
+            // list and replace each UnicodeSet object with a String that represents the
+            // character categories that expression refers to.  The String is encoded: each
+            // character is a character category number (plus 0x100 to avoid confusing them
+            // with syntax characters in the rule grammar)
+            iter = expressions.keys();
+            while (iter.hasMoreElements()) {
+                String key = (String)iter.nextElement();
+                UnicodeSet cs = (UnicodeSet)expressions.get(key);
+                StringBuffer cats = new StringBuffer();
+
+                // for each category...
+                for (int j = 1; j < categories.size(); j++) {
+
+                    // if the current expression contains characters in that category...
+                    if (cs.containsAll((UnicodeSet)(categories.elementAt(j)))) {
+
+                        // then add the encoded category number to the String for this
+                        // expression
+                        cats.append((char)(0x100 + j));
+                        if (cs.equals((UnicodeSet)(categories.elementAt(j)))) {
+                            break;
+                        }
+                    }
+                }
+
+                // once we've finished building the encoded String for this expression,
+                // replace the UnicodeSet object with it
+                expressions.put(key, cats.toString());
+            }
+
+            // and finally, we turn the temporary category table into a permanent category
+            // table, which is a CompactByteArray. (we skip category 0, which by definition
+            // refers to all characters not mentioned specifically in the rules)
+            charCategoryTable = new CompactByteArray((byte)0);
+
+            // for each category...
+            for (int i = 0; i < categories.size(); i++) {
+                UnicodeSet chars = (UnicodeSet)(categories.elementAt(i));
+                String pairs = chars.getPairs();
+
+                // go through the character ranges in the category one by one...
+                for (int j = 0; j < pairs.length(); j += 2) {
+                    // and set the corresponding elements in the CompactArray accordingly
+                    if (i != 0) {
+                        charCategoryTable.setElementAt(pairs.charAt(j), pairs.charAt(j + 1),
+                                (byte)i);
+                    }
+
+                    // (category 0 is special-- it's the hiding place for the ignore
+                    // characters, whose real category number in the CompactArray is
+                    // -1 [this is because category 0 contains all characters not
+                    // specifically mentioned anywhere in the rules] )
+                    else {
+                        charCategoryTable.setElementAt(pairs.charAt(j), pairs.charAt(j + 1),
+                                IGNORE);
+                    }
+                }
+            }
+
+            // once we've populated the CompactArray, compact it
+            charCategoryTable.compact();
+
+            // initialize numCategories
+            numCategories = categories.size();
+        }
+
+        protected void mungeExpressionList(Hashtable expressions) {
+            // empty in the parent class.  This function provides a hook for subclasses
+            // to mess with the character category table.
+        }
+
+        /**
+         * This is the function that builds the forward state table.  Most of the real
+         * work is done in parseRule(), which is called once for each rule in the
+         * description.
+         */
+        private void buildStateTable(Vector tempRuleList) {
+            // initialize our temporary state table, and fill it with two states:
+            // state 0 is a dummy state that allows state 1 to be the starting state
+            // and 0 to represent "stop".  State 1 is added here to seed things
+            // before we start parsing
+            tempStateTable = new Vector();
+            tempStateTable.addElement(new short[numCategories + 1]);
+            tempStateTable.addElement(new short[numCategories + 1]);
+
+            // call parseRule() for every rule in the rule list (except those which
+            // start with !, which are actually backwards-iteration rules)
+            int n = tempRuleList.size();
+            for (int i = 0; i < tempRuleList.size(); i++) {
+                String rule = (String)tempRuleList.elementAt(i);
+                if (rule.charAt(0) != '!') {
+                    parseRule(rule, true);
+                }
+            }
+
+            // finally, use finishBuildingStateTable() to minimize the number of
+            // states in the table and perform some other cleanup work
+            finishBuildingStateTable(true);
+/*
+System.out.print("C:\t");
+for (int i = 0; i < numCategories; i++)
+System.out.print(Integer.toString(i) + "\t");
+System.out.println(); System.out.print("=================================================");
+for (int i = 0; i < stateTable.length; i++) {
+if (i % numCategories == 0) {
+System.out.println();
+if (endStates[i / numCategories])
+System.out.print("*");
+else
+System.out.print(" ");
+if (lookaheadStates[i / numCategories]) {
+System.out.print("%");
+}
+else
+System.out.print(" ");
+System.out.print(Integer.toString(i / numCategories) + ":\t");
+}
+if (stateTable[i] == 0) System.out.print(".\t"); else System.out.print(Integer.toString(stateTable[i]) + "\t");
+}
+System.out.println();
+*/
+    }
+
+        /**
+         * This is where most of the work really happens.  This routine parses a single
+         * rule in the rule description, adding and modifying states in the state
+         * table according to the new expression.  The state table is kept deterministic
+         * throughout the whole operation, although some ugly postprocessing is needed
+         * to handle the *? token.
+         */
+        private void parseRule(String rule, boolean forward) {
+            // algorithm notes:
+            //   - The basic idea here is to read successive character-category groups
+            //   from the input string.  For each group, you create a state and point
+            //   the appropriate entries in the previous state to it.  This produces a
+            //   straight line from the start state to the end state.  The {}, *, and (|)
+            //   idioms produce branches in this straight line.  These branches (states
+            //   that can transition to more than one other state) are called "decision
+            //   points."  A list of decision points is kept.  This contains a list of
+            //   all states that can transition to the next state to be created.  For a
+            //   straight line progression, the only thing in the decision-point list is
+            //   the current state.  But if there's a branch, the decision-point list
+            //   will contain all of the beginning points of the branch when the next
+            //   state to be created represents the end point of the branch.  A stack is
+            //   used to save decision point lists in the presence of nested parentheses
+            //   and the like.  For example, when a { is encountered, the current decision
+            //   point list is saved on the stack and restored when the corresponding }
+            //   is encountered.  This way, after the } is read, the decision point list
+            //   will contain both the state right before the } _and_ the state before
+            //   the whole {} expression.  Both of these states can transition to the next
+            //   state after the {} expression.
+            //   - one complication arises when we have to stamp a transition value into
+            //   an array cell that already contains one.  The updateStateTable() and
+            //   mergeStates() functions handle this case.  Their basic approach is to
+            //   create a new state that combines the two states that conflict and point
+            //   at it when necessary.  This happens recursively, so if the merged states
+            //   also conflict, they're resolved in the same way, and so on.  There are
+            //   a number of tests aimed at preventing infinite recursion.
+            //   - another complication arises with repeating characters.  It's somewhat
+            //   ambiguous whether the user wants a greedy or non-greedy match in these cases.
+            //   (e.g., whether "[a-z]*abc" means the SHORTEST sequence of letters ending in
+            //   "abc" or the LONGEST sequence of letters ending in "abc".  We've adopted
+            //   the *? to mean "shortest" and * by itself to mean "longest".  (You get the
+            //   same result with both if there's no overlap between the repeating character
+            //   group and the group immediately following it.)  Handling the *? token is
+            //   rather complicated and involves keeping track of whether a state needs to
+            //   be merged (as described above) or merely overwritten when you update one of
+            //   its cells, and copying the contents of a state that loops with a *? token
+            //   into some of the states that follow it after the rest of the table-building
+            //   process is complete ("backfilling").
+            // implementation notes:
+            //   - This function assumes syntax checking has been performed on the input string
+            //   prior to its being passed in here.  It assumes that parentheses are
+            //   balanced, all literal characters are enclosed in [] and turned into category
+            //   numbers, that there are no illegal characters or character sequences, and so
+            //   on.  Violation of these invariants will lead to undefined behavior.
+            //   - It'd probably be better to use linked lists rather than Vector and Stack
+            //   to maintain the decision point list and stack.  I went for simplicity in
+            //   this initial implementation.  If performance is critical enough, we can go
+            //   back and fix this later.
+            //   -There are a number of important limitations on the *? token.  It does not work
+            //   right when followed by a repeating character sequence (e.g., ".*?(abc)*")
+            //   (although it does work right when followed by a single repeating character).
+            //   It will not always work right when nested in parentheses or braces (although
+            //   sometimes it will).  It also will not work right if the group of repeating
+            //   characters and the group of characters that follows overlap partially
+            //   (e.g., "[a-g]*?[e-j]").  None of these capabilites was deemed necessary for
+            //   describing breaking rules we know about, so we left them out for
+            //   expeditiousness.
+            //   - Rules such as "[a-z]*?abc;" will be treated the same as "[a-z]*?aa*bc;"--
+            //   that is, if the string ends in "aaaabc", the break will go before the first
+            //   "a" rather than the last one.  Both of these are limitations in the design
+            //   of RuleBasedBreakIterator and not limitations of the rule parser.
+
+            int p = 0;
+            int currentState = 1;   // don't use state number 0; 0 means "stop"
+            int lastState = currentState;
+            String pendingChars = "";
+
+            decisionPointStack = new Stack();
+            decisionPointList = new Vector();
+            loopingStates = new Vector();
+            statesToBackfill = new Vector();
+
+            short[] state;
+            boolean sawEarlyBreak = false;
+
+            // if we're adding rules to the backward state table, mark the initial state
+            // as a looping state
+            if (!forward) {
+                loopingStates.addElement(new Integer(1));
+            }
+
+            // put the current state on the decision point list before we start
+            decisionPointList.addElement(new Integer(currentState)); // we want currentState to
+                                                                     // be 1 here...
+            currentState = tempStateTable.size() - 1;   // but after that, we want it to be
+                                                        // 1 less than the state number of the next state
+            while (p < rule.length()) {
+                char c = rule.charAt(p);
+                clearLoopingStates = false;
+
+                // this section handles literal characters, escaped characters (which are
+                // effectively literal characters too), the . token, and [] expressions
+                if (c == '['
+                    || c == '\\'
+                    || Character.isLetter(c)
+                    || Character.isDigit(c)
+                    || c < ' '
+                    || c == '.'
+                    || c >= '\u007f') {
+
+                    // if we're not on a period, isolate the expression and look up
+                    // the corresponding category list
+                    if (c != '.') {
+                        int q = p;
+
+                        // if we're on a backslash, the expression is the character
+                        // after the backslash
+                        if (c == '\\') {
+                            q = p + 2;
+                            ++p;
+                        }
+
+                        // if we're on an opening bracket, scan to the closing bracket
+                        // to isolate the expression
+                        else if (c == '[') {
+                            int bracketLevel = 1;
+                            while (bracketLevel > 0) {
+                                ++q;
+                                c = rule.charAt(q);
+                                if (c == '[') {
+                                    ++bracketLevel;
+                                }
+                                else if (c == ']') {
+                                    --bracketLevel;
+                                }
+                                else if (c == '\\') {
+                                    ++q;
+                                }
+                            }
+                            ++q;
+                        }
+
+                        // otherwise, the expression is just the character itself
+                        else {
+                            q = p + 1;
+                        }
+
+                        // look up the category list for the expression and store it
+                        // in pendingChars
+                        pendingChars = (String)expressions.get(rule.substring(p, q));
+
+                        // advance the current position past the expression
+                        p = q - 1;
+                    }
+
+                    // if the character we're on is a period, we end up down here
+                    else {
+                        int rowNum = ((Integer)decisionPointList.lastElement()).intValue();
+                        state = (short[])tempStateTable.elementAt(rowNum);
+
+                        // if the period is followed by an asterisk, then just set the current
+                        // state to loop back on itself
+                        if (p + 1 < rule.length() && rule.charAt(p + 1) == '*' && state[0] != 0) {
+                            decisionPointList.addElement(new Integer(state[0]));
+                            pendingChars = "";
+                            ++p;
+                            if (p + 1 < rule.length() && rule.charAt(p + 1) == '?') {
+//System.out.println("Saw *?");
+                                setLoopingStates(decisionPointList, decisionPointList);
+                                ++p;
+                            }
+//System.out.println("Saw .*");
+                        }
+
+                        // otherwise, fabricate a category list ("pendingChars") with
+                        // every category in it
+                        else {
+                            StringBuffer temp = new StringBuffer();
+                            for (int i = 0; i < numCategories; i++)
+                                temp.append((char)(i + 0x100));
+                            pendingChars = temp.toString();
+                        }
+                    }
+
+                    // we'll end up in here for all expressions except for .*, which is
+                    // special-cased above
+                    if (pendingChars.length() != 0) {
+
+                        // if the expression is followed by an asterisk, then push a copy
+                        // of the current decision point list onto the stack
+                        if (p + 1 < rule.length() && (
+                            rule.charAt(p + 1) == '*' ||
+                            rule.charAt(p + 1) == '?'
+                        )) {
+                            decisionPointStack.push(decisionPointList.clone());
+                        }
+
+                        // create a new state, add it to the list of states to backfill
+                        // if we have looping states to worry about, set its "don't make
+                        // me an accepting state" flag if we've seen a slash, and add
+                        // it to the end of the state table
+                        int newState = tempStateTable.size();
+                        if (loopingStates.size() != 0) {
+                            statesToBackfill.addElement(new Integer(newState));
+                        }
+                        state = new short[numCategories + 1];
+                        if (sawEarlyBreak) {
+                            state[numCategories] = DONT_LOOP_FLAG;
+                        }
+                        tempStateTable.addElement(state);
+
+                        // update everybody in the decision point list to point to
+                        // the new state (this also performs all the reconciliation
+                        // needed to make the table deterministic), then clear the
+                        // decision point list
+                        updateStateTable(decisionPointList, pendingChars, (short)newState);
+                        decisionPointList.removeAllElements();
+
+                        // add all states created since the last literal character we've
+                        // seen to the decision point list
+                        lastState = currentState;
+                        do {
+                            ++currentState;
+                            decisionPointList.addElement(new Integer(currentState));
+                        } while (currentState + 1 < tempStateTable.size());
+                    }
+                }
+
+                // a * denotes a repeating character or group (* after () is handled separately
+                // below).  In addition to restoring the decision point list, modify the
+                // current state to point to itself on the appropriate character categories.
+                if (c == '+' || c == '*' || c == '?') {
+                    // when there's a *, update the current state to loop back on itself
+                    // on the character categories that caused us to enter this state
+                    if (c == '*' || c == '+') {
+                        for (int i = lastState + 1; i < tempStateTable.size(); i++) {
+                            Vector temp = new Vector();
+                            temp.addElement(new Integer(i));
+                            updateStateTable(temp, pendingChars, (short)(lastState + 1));
+                        }
+                    }
+
+                    // pop the top element off the decision point stack and merge
+                    // it with the current decision point list (this causes the divergent
+                    // paths through the state table to come together again on the next
+                    // new state)
+                    if (c == '*' || c == '?') {
+                        Vector temp = (Vector)decisionPointStack.pop();
+                        for (int i = 0; i < decisionPointList.size(); i++)
+                            temp.addElement(decisionPointList.elementAt(i));
+                        decisionPointList = temp;
+
+                        // a ? after a * modifies the behavior of * in cases where there is overlap
+                        // between the set of characters that repeat and the characters which follow.
+                        // Without the ?, all states following the repeating state, up to a state which
+                        // is reached by a character that doesn't overlap, will loop back into the
+                        // repeating state.  With the ?, the mark states following the *? DON'T loop
+                        // back into the repeating state.  Thus, "[a-z]*xyz" will match the longest
+                        // sequence of letters that ends in "xyz," while "[a-z]*? will match the
+                        // _shortest_ sequence of letters that ends in "xyz".
+                        // We use extra bookkeeping to achieve this effect, since everything else works
+                        // according to the "longest possible match" principle.  The basic principle
+                        // is that transitions out of a looping state are written in over the looping
+                        // value instead of being reconciled, and that we copy the contents of the
+                        // looping state into empty cells of all non-terminal states that follow the
+                        // looping state.
+//System.out.println("c = " + c + ", p = " + p + ", rule.length() = " + rule.length());
+                        if (c == '*' && p + 1 < rule.length() && rule.charAt(p + 1) == '?') {
+//System.out.println("Saw *?");
+                            setLoopingStates(decisionPointList, decisionPointList);
+                            ++p;
+                        }
+                    }
+                }
+
+                // a ( marks the beginning of a sequence of characters.  Parentheses can either
+                // contain several alternative character sequences (i.e., "(ab|cd|ef)"), or
+                // they can contain a sequence of characters that can repeat (i.e., "(abc)*").  Thus,
+                // A () group can have multiple entry and exit points.  To keep track of this,
+                // we reserve TWO spots on the decision-point stack.  The top of the stack is
+                // the list of exit points, which becomes the current decision point list when
+                // the ) is reached.  The next entry down is the decision point list at the
+                // beginning of the (), which becomes the current decision point list at every
+                // entry point.
+                // In addition to keeping track of the exit points and the active decision
+                // points before the ( (i.e., the places from which the () can be entered),
+                // we need to keep track of the entry points in case the expression loops
+                // (i.e., is followed by *).  We do that by creating a dummy state in the
+                // state table and adding it to the decision point list (BEFORE it's duplicated
+                // on the stack).  Nobody points to this state, so it'll get optimized out
+                // at the end.  It exists only to hold the entry points in case the ()
+                // expression loops.
+                if (c == '(') {
+
+                    // add a new state to the state table to hold the entry points into
+                    // the () expression
+                    tempStateTable.addElement(new short[numCategories + 1]);
+
+                    // we have to adjust lastState and currentState to account for the
+                    // new dummy state
+                    lastState = currentState;
+                    ++currentState;
+
+                    // add the current state to the decision point list (add it at the
+                    // BEGINNING so we can find it later)
+                    decisionPointList.insertElementAt(new Integer(currentState), 0);
+
+                    // finally, push a copy of the current decision point list onto the
+                    // stack (this keeps track of the active decision point list before
+                    // the () expression), followed by an empty decision point list
+                    // (this will hold the exit points)
+                    decisionPointStack.push(decisionPointList.clone());
+                    decisionPointStack.push(new Vector());
+                }
+
+                // a | separates alternative character sequences in a () expression.  When
+                // a | is encountered, we add the current decision point list to the exit-point
+                // list, and restore the decision point list to its state prior to the (.
+                if (c == '|') {
+
+                    // pick out the top two decision point lists on the stack
+                    Vector oneDown = (Vector)decisionPointStack.pop();
+                    Vector twoDown = (Vector)decisionPointStack.peek();
+                    decisionPointStack.push(oneDown);
+
+                    // append the current decision point list to the list below it
+                    // on the stack (the list of exit points), and restore the
+                    // current decision point list to its state before the () expression
+                    for (int i = 0; i < decisionPointList.size(); i++)
+                        oneDown.addElement(decisionPointList.elementAt(i));
+                    decisionPointList = (Vector)twoDown.clone();
+                }
+
+                // a ) marks the end of a sequence of characters.  We do one of two things
+                // depending on whether the sequence repeats (i.e., whether the ) is followed
+                // by *):  If the sequence doesn't repeat, then the exit-point list is merged
+                // with the current decision point list and the decision point list from before
+                // the () is thrown away.  If the sequence does repeat, then we fish out the
+                // state we were in before the ( and copy all of its forward transitions
+                // (i.e., every transition added by the () expression) into every state in the
+                // exit-point list and the current decision point list.  The current decision
+                // point list is then merged with both the exit-point list AND the saved version
+                // of the decision point list from before the ().  Then we throw out the *.
+                if (c == ')') {
+
+                    // pull the exit point list off the stack, merge it with the current
+                    // decision point list, and make the merged version the current
+                    // decision point list
+                    Vector exitPoints = (Vector)decisionPointStack.pop();
+                    for (int i = 0; i < decisionPointList.size(); i++)
+                        exitPoints.addElement(decisionPointList.elementAt(i));
+                    decisionPointList = exitPoints;
+
+                    // if the ) isn't followed by a *, then all we have to do is throw
+                    // away the other list on the decision point stack, and we're done
+                    if (p + 1 >= rule.length() || (
+                            rule.charAt(p + 1) != '*' &&
+                            rule.charAt(p + 1) != '+' &&
+                            rule.charAt(p + 1) != '?')
+                    ) {
+                        decisionPointStack.pop();
+                    }
+
+                    // but if the sequence repeats, we have a lot more work to do...
+                    else {
+
+                        // now exitPoints and decisionPointList have to point to equivalent
+                        // vectors, but not the SAME vector
+                        exitPoints = (Vector)decisionPointList.clone();
+
+                        // pop the original decision point list off the stack
+                        Vector temp = (Vector)decisionPointStack.pop();
+
+                        // we squirreled away the row number of our entry point list
+                        // at the beginning of the original decision point list.  Fish
+                        // that state number out and retrieve the entry point list
+                        int tempStateNum = ((Integer)temp.firstElement()).intValue();
+                        short[] tempState = (short[])tempStateTable.elementAt(tempStateNum);
+
+                        // merge the original decision point list with the current
+                        // decision point list
+                        if (rule.charAt(p + 1) == '?' || rule.charAt(p + 1) == '*') {
+                            for (int i = 0; i < decisionPointList.size(); i++)
+                                temp.addElement(decisionPointList.elementAt(i));
+                            decisionPointList = temp;
+                        }
+
+                        // finally, copy every forward reference from the entry point
+                        // list into every state in the new decision point list
+                        if (rule.charAt(p + 1) == '+' || rule.charAt(p + 1) == '*') {
+                            for (int i = 0; i < tempState.length; i++) {
+                                if (tempState[i] > tempStateNum) {
+                                    updateStateTable(exitPoints,
+                                                     new Character((char)(i + 0x100)).toString(),
+                                                     tempState[i]);
+                                }
+                            }
+                        }
+
+                        // update lastState and currentState, and throw away the *
+                        lastState = currentState;
+                        currentState = tempStateTable.size() - 1;
+                        ++p;
+                    }
+                }
+
+                // a / marks the position where the break is to go if the character sequence
+                // matches this rule.  We update the flag word of every state on the decision
+                // point list to mark them as ending states, and take note of the fact that
+                // we've seen the slash
+                if (c == '/') {
+                    sawEarlyBreak = true;
+                    for (int i = 0; i < decisionPointList.size(); i++) {
+                        state = (short[])tempStateTable.elementAt(((Integer)decisionPointList.
+                                        elementAt(i)).intValue());
+                        state[numCategories] |= LOOKAHEAD_STATE_FLAG;
+                    }
+                }
+
+                // if we get here without executing any of the above clauses, we have a
+                // syntax error.  However, for now we just ignore the offending character
+                // and move on
+/*
+debugPrintln("====Parsed \"" + rule.substring(0, p + 1) + "\"...");
+System.out.println("      currentState = " + currentState);
+debugPrintVectorOfVectors("      decisionPointStack:", "        ", decisionPointStack);
+debugPrintVector("        ", decisionPointList);
+debugPrintVector("      loopingStates = ", loopingStates);
+debugPrintVector("      statesToBackfill = ", statesToBackfill);
+System.out.println("      sawEarlyBreak = " + sawEarlyBreak);
+debugPrintTempStateTable();
+*/
+
+                // clearLoopingStates is a signal back from updateStateTable() that we've
+                // transitioned to a state that won't loop back to the current looping
+                // state.  (In other words, we've gotten to a point where we can no longer
+                // go back into a *? we saw earlier.)  Clear out the list of looping states
+                // and backfill any states that need to be backfilled.
+                if (clearLoopingStates) {
+                    setLoopingStates(null, decisionPointList);
+                }
+
+                // advance to the next character, now that we've processed the current
+                // character
+                ++p;
+            }
+
+            // this takes care of backfilling any states that still need to be backfilled
+            setLoopingStates(null, decisionPointList);
+
+            // when we reach the end of the string, we do a postprocessing step to mark the
+            // end states.  The decision point list contains every state that can transition
+            // to the end state-- that is, every state that is the last state in a sequence
+            // that matches the rule.  All of these states are considered "mark states"
+            // or "accepting states"-- that is, states that cause the position returned from
+            // next() to be updated.  A mark state represents a possible break position.
+            // This allows us to look ahead and remember how far the rule matched
+            // before following the new branch (see next() for more information).
+            // The temporary state table has an extra "flag column" at the end where this
+            // information is stored.  We mark the end states by setting a flag in their
+            // flag column.
+            // Now if we saw the / in the rule, then everything after it is lookahead
+            // material and the break really goes where the slash is.  In this case,
+            // we mark these states as BOTH accepting states and lookahead states.  This
+            // signals that these states cause the break position to be updated to the
+            // position of the slash rather than the current break position.
+            for (int i = 0; i < decisionPointList.size(); i++) {
+                int rowNum = ((Integer)decisionPointList.elementAt(i)).intValue();
+                state = (short[])tempStateTable.elementAt(rowNum);
+                state[numCategories] |= END_STATE_FLAG;
+                if (sawEarlyBreak) {
+                    state[numCategories] |= LOOKAHEAD_STATE_FLAG;
+                }
+            }
+/*
+debugPrintln("====Parsed \"" + rule + ";");
+System.out.println();
+System.out.println("      currentState = " + currentState);
+debugPrintVectorOfVectors("      decisionPointStack:", "        ", decisionPointStack);
+debugPrintVector("        ", decisionPointList);
+debugPrintVector("      loopingStates = ", loopingStates);
+debugPrintVector("      statesToBackfill = ", statesToBackfill);
+System.out.println("      sawEarlyBreak = " + sawEarlyBreak);
+debugPrintTempStateTable();
+*/
+        }
+
+
+        /**
+         * Update entries in the state table, and merge states when necessary to keep
+         * the table deterministic.
+         * @param rows The list of rows that need updating (the decision point list)
+         * @param pendingChars A character category list, encoded in a String.  This is the
+         * list of the columns that need updating.
+         * @param newValue Update the cells specfied above to contain this value
+         */
+        private void updateStateTable(Vector rows,
+                                      String pendingChars,
+                                      short newValue) {
+            // create a dummy state that has the specified row number (newValue) in
+            // the cells that need to be updated (those specified by pendingChars)
+            // and 0 in the other cells
+            short[] newValues = new short[numCategories + 1];
+            for (int i = 0; i < pendingChars.length(); i++)
+                newValues[(int)(pendingChars.charAt(i)) - 0x100] = newValue;
+
+            // go through the list of rows to update, and update them by calling
+            // mergeStates() to merge them the the dummy state we created
+            for (int i = 0; i < rows.size(); i++) {
+                mergeStates(((Integer)rows.elementAt(i)).intValue(), newValues, rows);
+            }
+        }
+
+        /**
+         * The real work of making the state table deterministic happens here.  This function
+         * merges a state in the state table (specified by rowNum) with a state that is
+         * passed in (newValues).  The basic process is to copy the nonzero cells in newStates
+         * into the state in the state table (we'll call that oldValues).  If there's a
+         * collision (i.e., if the same cell has a nonzero value in both states, and it's
+         * not the SAME value), then we have to reconcile the collision.  We do this by
+         * creating a new state, adding it to the end of the state table, and using this
+         * function recursively to merge the original two states into a single, combined
+         * state.  This process may happen recursively (i.e., each successive level may
+         * involve collisions).  To prevent infinite recursion, we keep a log of merge
+         * operations.  Any time we're merging two states we've merged before, we can just
+         * supply the row number for the result of that merge operation rather than creating
+         * a new state just like it.
+         * @param rowNum The row number in the state table of the state to be updated
+         * @param newValues The state to merge it with.
+         * @param rowsBeingUpdated A copy of the list of rows passed to updateStateTable()
+         * (itself a copy of the decision point list from parseRule()).  Newly-created
+         * states get added to the decision point list if their "parents" were on it.
+         */
+        private void mergeStates(int rowNum,
+                                 short[] newValues,
+                                 Vector rowsBeingUpdated) {
+            short[] oldValues = (short[])(tempStateTable.elementAt(rowNum));
+/*
+System.out.print("***Merging " + rowNum + ":");
+for (int i = 0; i < oldValues.length; i++) System.out.print("\t" + oldValues[i]);
+System.out.println();
+System.out.print("    with   \t");
+for (int i = 0; i < newValues.length; i++) System.out.print("\t" + newValues[i]);
+System.out.println();
+*/
+
+            boolean isLoopingState = loopingStates.contains(new Integer(rowNum));
+
+            // for each of the cells in the rows we're reconciling, do...
+            for (int i = 0; i < oldValues.length; i++) {
+
+                // if they contain the same value, we don't have to do anything
+                if (oldValues[i] == newValues[i]) {
+                    continue;
+                }
+
+                // if oldValues is a looping state and the state the current cell points to
+                // is too, then we can just stomp over the current value of that cell (and
+                // set the clear-looping-states flag if necessary)
+                else if (isLoopingState && loopingStates.contains(new Integer(oldValues[i]))) {
+                    if (newValues[i] != 0) {
+                        if (oldValues[i] == 0) {
+                            clearLoopingStates = true;
+                        }
+                        oldValues[i] = newValues[i];
+                    }
+                }
+
+                // if the current cell in oldValues is 0, copy in the corresponding value
+                // from newValues
+                else if (oldValues[i] == 0) {
+                    oldValues[i] = newValues[i];
+                }
+
+                // the last column of each row is the flag column.  Take care to merge the
+                // flag words correctly
+                else if (i == numCategories) {
+                    oldValues[i] = (short)((newValues[i] & ALL_FLAGS) | oldValues[i]);
+                }
+
+                // if both newValues and oldValues have a nonzero value in the current
+                // cell, and it isn't the same value both places...
+                else if (oldValues[i] != 0 && newValues[i] != 0) {
+
+                    // look up this pair of cell values in the merge list.  If it's
+                    // found, update the cell in oldValues to point to the merged state
+                    int combinedRowNum = searchMergeList(oldValues[i], newValues[i]);
+                    if (combinedRowNum != 0) {
+                        oldValues[i] = (short)combinedRowNum;
+                    }
+
+                    // otherwise, we have to reconcile them...
+                    else {
+                        // copy our row numbers into variables to make things easier
+                        int oldRowNum = oldValues[i];
+                        int newRowNum = newValues[i];
+                        combinedRowNum = tempStateTable.size();
+
+                        // add this pair of row numbers to the merge list (create it first
+                        // if we haven't created the merge list yet)
+                        if (mergeList == null) {
+                            mergeList = new Vector();
+                        }
+                        mergeList.addElement(new int[] { oldRowNum, newRowNum, combinedRowNum });
+
+//System.out.println("***At " + rowNum + ", merging " + oldRowNum + " and " + newRowNum + " into " + combinedRowNum);
+
+                        // create a new row to represent the merged state, and copy the
+                        // contents of oldRow into it, then add it to the end of the
+                        // state table and update the original row (oldValues) to point
+                        // to the new, merged, state
+                        short[] newRow = new short[numCategories + 1];
+                        short[] oldRow = (short[])(tempStateTable.elementAt(oldRowNum));
+                        System.arraycopy(oldRow, 0, newRow, 0, numCategories + 1);
+                        tempStateTable.addElement(newRow);
+                        oldValues[i] = (short)combinedRowNum;
+
+
+//System.out.println("lastOldRowNum = " + lastOldRowNum);
+//System.out.println("lastCombinedRowNum = " + lastCombinedRowNum);
+//System.out.println("decisionPointList.contains(lastOldRowNum) = " + decisionPointList.contains(new Integer(lastOldRowNum)));
+//System.out.println("decisionPointList.contains(lastCombinedRowNum) = " + decisionPointList.contains(new Integer(lastCombinedRowNum)));
+
+                        // if the decision point list contains either of the parent rows,
+                        // update it to include the new row as well
+                        if ((decisionPointList.contains(new Integer(oldRowNum))
+                                || decisionPointList.contains(new Integer(newRowNum)))
+                            && !decisionPointList.contains(new Integer(combinedRowNum))
+                        ) {
+                            decisionPointList.addElement(new Integer(combinedRowNum));
+                        }
+
+                        // do the same thing with the list of rows being updated
+                        if ((rowsBeingUpdated.contains(new Integer(oldRowNum))
+                                || rowsBeingUpdated.contains(new Integer(newRowNum)))
+                            && !rowsBeingUpdated.contains(new Integer(combinedRowNum))
+                        ) {
+                            decisionPointList.addElement(new Integer(combinedRowNum));
+                        }
+                        // now (groan) do the same thing for all the entries on the
+                        // decision point stack
+                        for (int k = 0; k < decisionPointStack.size(); k++) {
+                            Vector dpl = (Vector)decisionPointStack.elementAt(k);
+                            if ((dpl.contains(new Integer(oldRowNum))
+                                    || dpl.contains(new Integer(newRowNum)))
+                                && !dpl.contains(new Integer(combinedRowNum))
+                            ) {
+                                dpl.addElement(new Integer(combinedRowNum));
+                            }
+                        }
+
+                        // FINALLY (puff puff puff), call mergeStates() recursively to copy
+                        // the row referred to by newValues into the new row and resolve any
+                        // conflicts that come up at that level
+                        mergeStates(combinedRowNum, (short[])(tempStateTable.elementAt(
+                                        newValues[i])), rowsBeingUpdated);
+                    }
+                }
+            }
+            return;
+        }
+
+        /**
+         * The merge list is a list of pairs of rows that have been merged somewhere in
+         * the process of building this state table, along with the row number of the
+         * row containing the merged state.  This function looks up a pair of row numbers
+         * and returns the row number of the row they combine into.  (It returns 0 if
+         * this pair of rows isn't in the merge list.)
+         */
+        private int searchMergeList(int a, int b) {
+            // if there is no merge list, there obviously isn't anything in it
+            if (mergeList == null) {
+                return 0;
+            }
+
+            // otherwise, for each element in the merge list...
+            else {
+                int[] entry;
+                for (int i = 0; i < mergeList.size(); i++) {
+                    entry = (int[])(mergeList.elementAt(i));
+
+                    // we have a hit if the two row numbers match the two row numbers
+                    // in the beginning of the entry (the two that combine), in either
+                    // order
+                    if ((entry[0] == a && entry[1] == b) || (entry[0] == b && entry[1] == a)) {
+                        return entry[2];
+                    }
+
+                    // we also have a hit if one of the two row numbers matches the marged
+                    // row number and the other one matches one of the original row numbers
+                    if ((entry[2] == a && (entry[0] == b || entry[1] == b))) {
+                        return entry[2];
+                    }
+                    if ((entry[2] == b && (entry[0] == a || entry[1] == a))) {
+                        return entry[2];
+                    }
+                }
+                return 0;
+            }
+        }
+
+        /**
+         * This function is used to update the list of current loooping states (i.e.,
+         * states that are controlled by a *? construct).  It backfills values from
+         * the looping states into unpopulated cells of the states that are currently
+         * marked for backfilling, and then updates the list of looping states to be
+         * the new list
+         * @param newLoopingStates The list of new looping states
+         * @param endStates The list of states to treat as end states (states that
+         * can exit the loop).
+         */
+        private void setLoopingStates(Vector newLoopingStates, Vector endStates) {
+
+            // if the current list of looping states isn't empty, we have to backfill
+            // values from the looping states into the states that are waiting to be
+            // backfilled
+            if (!loopingStates.isEmpty()) {
+                int loopingState = ((Integer)loopingStates.lastElement()).intValue();
+                int rowNum;
+
+                // don't backfill into an end state OR any state reachable from an end state
+                // (since the search for reachable states is recursive, it's split out into
+                // a separate function, eliminateBackfillStates(), below)
+                for (int i = 0; i < endStates.size(); i++) {
+                    eliminateBackfillStates(((Integer)endStates.elementAt(i)).intValue());
+                }
+
+                // we DON'T actually backfill the states that need to be backfilled here.
+                // Instead, we MARK them for backfilling.  The reason for this is that if
+                // there are multiple rules in the state-table description, the looping
+                // states may have some of their values changed by a succeeding rule, and
+                // this wouldn't be reflected in the backfilled states.  We mark a state
+                // for backfilling by putting the row number of the state to copy from
+                // into the flag cell at the end of the row
+                for (int i = 0; i < statesToBackfill.size(); i++) {
+                    rowNum = ((Integer)statesToBackfill.elementAt(i)).intValue();
+                    short[] state = (short[])tempStateTable.elementAt(rowNum);
+                    state[numCategories] =
+                        (short)((state[numCategories] & ALL_FLAGS) | loopingState);
+                }
+                statesToBackfill.removeAllElements();
+                loopingStates.removeAllElements();
+            }
+
+            if (newLoopingStates != null) {
+                loopingStates = (Vector)newLoopingStates.clone();
+            }
+        }
+
+        /**
+         * This removes "ending states" and states reachable from them from the
+         * list of states to backfill.
+         * @param The row number of the state to remove from the backfill list
+         */
+        private void eliminateBackfillStates(int baseState) {
+
+            // don't do anything unless this state is actually in the backfill list...
+            if (statesToBackfill.contains(new Integer(baseState))) {
+
+                // if it is, take it out
+                statesToBackfill.removeElement(new Integer(baseState));
+
+                // then go through and recursively call this function for every
+                // state that the base state points to
+                short[] state = (short[])tempStateTable.elementAt(baseState);
+                for (int i = 0; i < numCategories; i++) {
+                    if (state[i] != 0) {
+                        eliminateBackfillStates(state[i]);
+                    }
+                }
+            }
+        }
+
+        /**
+         * This function completes the backfilling process by actually doing the
+         * backfilling on the states that are marked for it
+         */
+        private void backfillLoopingStates() {
+            short[] state;
+            short[] loopingState = null;
+            int loopingStateRowNum = 0;
+            int fromState;
+
+            // for each state in the state table...
+            for (int i = 0; i < tempStateTable.size(); i++) {
+                state = (short[])tempStateTable.elementAt(i);
+
+                // check the state's flag word to see if it's marked for backfilling
+                // (it's marked for backfilling if any bits other than the two high-order
+                // bits are set-- if they are, then the flag word, minus the two high bits,
+                // is the row number to copy from)
+                fromState = state[numCategories] & ~ALL_FLAGS;
+                if (fromState > 0) {
+
+                    // load up the state to copy from (if we haven't already)
+                    if (fromState != loopingStateRowNum) {
+                        loopingStateRowNum = fromState;
+                        loopingState = (short[])tempStateTable.elementAt(loopingStateRowNum);
+                    }
+
+                    // clear out the backfill part of the flag word
+                    state[numCategories] &= ALL_FLAGS;
+
+                    // then fill all zero cells in the current state with values
+                    // from the corresponding cells of the fromState
+                    for (int j = 0; j < state.length; j++) {
+                        if (state[j] == 0) {
+                            state[j] = loopingState[j];
+                        }
+                        else if (state[j] == DONT_LOOP_FLAG) {
+                            state[j] = 0;
+                        }
+                    }
+                }
+            }
+        }
+
+        /**
+         * This function completes the state-table-building process by doing several
+         * postprocessing steps and copying everything into its final resting place
+         * in the iterator itself
+         * @param forward True if we're working on the forward state table
+         */
+        private void finishBuildingStateTable(boolean forward) {
+//debugPrintTempStateTable();
+            // start by backfilling the looping states
+            backfillLoopingStates();
+//debugPrintTempStateTable();
+
+            int[] rowNumMap = new int[tempStateTable.size()];
+            Stack rowsToFollow = new Stack();
+            rowsToFollow.push(new Integer(1));
+            rowNumMap[1] = 1;
+
+            // determine which states are no longer reachable from the start state
+            // (the reachable states will have their row numbers in the row number
+            // map, and the nonreachable states will have zero in the row number map)
+            while (rowsToFollow.size() != 0) {
+                int rowNum = ((Integer)rowsToFollow.pop()).intValue();
+                short[] row = (short[])(tempStateTable.elementAt(rowNum));
+
+                for (int i = 0; i < numCategories; i++) {
+                    if (row[i] != 0) {
+                        if (rowNumMap[row[i]] == 0) {
+                            rowNumMap[row[i]] = row[i];
+                            rowsToFollow.push(new Integer(row[i]));
+                        }
+                    }
+                }
+            }
+/*
+System.out.println("The following rows are not reachable:");
+for (int i = 1; i < rowNumMap.length; i++)
+if (rowNumMap[i] == 0) System.out.print("\t" + i);
+System.out.println();
+*/
+
+            boolean madeChange;
+            int newRowNum;
+
+            // algorithm for minimizing the number of states in the table adapted from
+            // Aho & Ullman, "Principles of Compiler Design"
+            // The basic idea here is to organize the states into classes.  When we're done,
+            // all states in the same class can be considered identical and all but one eliminated.
+
+            // initially assign states to classes based on the number of populated cells they
+            // contain (the class number is the number of populated cells)
+            int[] stateClasses = new int[tempStateTable.size()];
+            int nextClass = numCategories + 1;
+            short[] state1, state2;
+            for (int i = 1; i < stateClasses.length; i++) {
+                if (rowNumMap[i] == 0) {
+                    continue;
+                }
+                state1 = (short[])tempStateTable.elementAt(i);
+                for (int j = 0; j < numCategories; j++) {
+                    if (state1[j] != 0) {
+                        ++stateClasses[i];
+                    }
+                }
+                if (stateClasses[i] == 0) {
+                    stateClasses[i] = nextClass;
+                }
+            }
+            ++nextClass;
+
+            // then, for each class, elect the first member of that class as that class's
+            // "representative".  For each member of the class, compare it to the "representative."
+            // If there's a column position where the state being tested transitions to a
+            // state in a DIFFERENT class from the class where the "representative" transitions,
+            // then move the state into a new class.  Repeat this process until no new classes
+            // are created.
+            int currentClass;
+            int lastClass;
+            boolean split;
+
+            do {
+//System.out.println("Making a pass...");
+                currentClass = 1;
+                lastClass = nextClass;
+                while (currentClass < nextClass) {
+//System.out.print("States in class #" + currentClass +":");
+                    split = false;
+                    state1 = state2 = null;
+                    for (int i = 0; i < stateClasses.length; i++) {
+                        if (stateClasses[i] == currentClass) {
+//System.out.print("\t" + i);
+                            if (state1 == null) {
+                                state1 = (short[])tempStateTable.elementAt(i);
+                            }
+                            else {
+                                state2 = (short[])tempStateTable.elementAt(i);
+                                for (int j = 0; j < state2.length; j++)
+                                    if ((j == numCategories && state1[j] != state2[j] && forward)
+                                            || (j != numCategories && stateClasses[state1[j]]
+                                            != stateClasses[state2[j]])) {
+                                        stateClasses[i] = nextClass;
+                                        split = true;
+                                        break;
+                                    }
+                            }
+                        }
+                    }
+                    if (split) {
+                        ++nextClass;
+                    }
+                    ++currentClass;
+//System.out.println();
+                }
+            } while (lastClass != nextClass);
+
+            // at this point, all of the states in a class except the first one (the
+            //"representative") can be eliminated, so update the row-number map accordingly
+            int[] representatives = new int[nextClass];
+            for (int i = 1; i < stateClasses.length; i++)
+                if (representatives[stateClasses[i]] == 0) {
+                    representatives[stateClasses[i]] = i;
+                }
+                else {
+                    rowNumMap[i] = representatives[stateClasses[i]];
+                }
+//System.out.println("Renumbering...");
+
+            // renumber all remaining rows...
+            // first drop all that are either unreferenced or not a class representative
+            for (int i = 1; i < rowNumMap.length; i++) {
+                if (rowNumMap[i] != i) {
+                    tempStateTable.setElementAt(null, i);
+                }
+            }
+
+            // then calculate everybody's new row number and update the row
+            // number map appropriately (the first pass updates the row numbers
+            // of all the class representatives [the rows we're keeping], and the
+            // second pass updates the cross references for all the rows that
+            // are being deleted)
+            newRowNum = 1;
+            for (int i = 1; i < rowNumMap.length; i++) {
+                if (tempStateTable.elementAt(i) != null) {
+                    rowNumMap[i] = newRowNum++;
+                }
+            }
+            for (int i = 1; i < rowNumMap.length; i++) {
+                if (tempStateTable.elementAt(i) == null) {
+                    rowNumMap[i] = rowNumMap[rowNumMap[i]];
+                }
+            }
+//for (int i = 1; i < rowNumMap.length; i++) rowNumMap[i] = i; int newRowNum = rowNumMap.length;
+
+            // allocate the permanent state table, and copy the remaining rows into it
+            // (adjusting all the cell values, of course)
+
+            // this section does that for the forward state table
+            if (forward) {
+                endStates = new boolean[newRowNum];
+                lookaheadStates = new boolean[newRowNum];
+                stateTable = new short[newRowNum * numCategories];
+                int p = 0;
+                int p2 = 0;
+                for (int i = 0; i < tempStateTable.size(); i++) {
+                    short[] row = (short[])(tempStateTable.elementAt(i));
+                    if (row == null) {
+                        continue;
+                    }
+                    for (int j = 0; j < numCategories; j++) {
+                        stateTable[p] = (short)(rowNumMap[row[j]]);
+                        ++p;
+                    }
+                    endStates[p2] = ((row[numCategories] & END_STATE_FLAG) != 0);
+                    lookaheadStates[p2] = ((row[numCategories] & LOOKAHEAD_STATE_FLAG) != 0);
+                    ++p2;
+                }
+            }
+
+            // and this section does it for the backward state table
+            else {
+                backwardsStateTable = new short[newRowNum * numCategories];
+                int p = 0;
+                for (int i = 0; i < tempStateTable.size(); i++) {
+                    short[] row = (short[])(tempStateTable.elementAt(i));
+                    if (row == null) {
+                        continue;
+                    }
+                    for (int j = 0; j < numCategories; j++) {
+                        backwardsStateTable[p] = (short)(rowNumMap[row[j]]);
+                        ++p;
+                    }
+                }
+            }
+        }
+
+        /**
+         * This function builds the backward state table from the forward state
+         * table and any additional rules (identified by the ! on the front)
+         * supplied in the description
+         */
+        private void buildBackwardsStateTable(Vector tempRuleList) {
+
+            // create the temporary state table and seed it with two rows (row 0
+            // isn't used for anything, and we have to create row 1 (the initial
+            // state) before we can do anything else
+            tempStateTable = new Vector();
+            tempStateTable.addElement(new short[numCategories + 1]);
+            tempStateTable.addElement(new short[numCategories + 1]);
+
+            // although the backwards state table is built automatically from the forward
+            // state table, there are some situations (the default sentence-break rules,
+            // for example) where this doesn't yield enough stop states, causing a dramatic
+            // drop in performance.  To help with these cases, the user may supply
+            // supplemental rules that are added to the backward state table.  These have
+            // the same syntax as the normal break rules, but begin with '!' to distinguish
+            // them from normal break rules
+            for (int i = 0; i < tempRuleList.size(); i++) {
+                String rule = (String)tempRuleList.elementAt(i);
+                if (rule.charAt(0) == '!') {
+                    parseRule(rule.substring(1), false);
+                }
+            }
+            backfillLoopingStates();
+
+            // Backwards iteration is qualitatively different from forwards iteration.
+            // This is because backwards iteration has to be made to operate from no context
+            // at all-- the user should be able to ask BreakIterator for the break position
+            // immediately on either side of some arbitrary offset in the text.  The
+            // forward iteration table doesn't let us do that-- it assumes complete
+            // information on the context, which means starting from the beginning of the
+            // document.
+            // The way we do backward and random-access iteration is to back up from the
+            // current (or user-specified) position until we see something we're sure is
+            // a break position (it may not be the last break position immediately
+            // preceding our starting point, however).  Then we roll forward from there to
+            // locate the actual break position we're after.
+            // This means that the backwards state table doesn't have to identify every
+            // break position, allowing the building algorithm to be much simpler.  Here,
+            // we use a "pairs" approach, scanning the forward-iteration state table for
+            // pairs of character categories we ALWAYS break between, and building a state
+            // table from that information.  No context is required-- all this state table
+            // looks at is a pair of adjacent characters.
+
+            // It's possible that the user has supplied supplementary rules (see above).
+            // This has to be done first to keep parseRule() and friends from becoming
+            // EVEN MORE complicated.  The automatically-generated states are appended
+            // onto the end of the state table, and then the two sets of rules are
+            // stitched together at the end.  Take note of the row number of the
+            // first row of the auromatically-generated part.
+            int backTableOffset = tempStateTable.size();
+            if (backTableOffset > 2) {
+                ++backTableOffset;
+            }
+
+            // the automatically-generated part of the table models a two-dimensional
+            // array where the two dimensions represent the two characters we're currently
+            // looking at.  To model this as a state table, we actually need one additional
+            // row to represent the initial state.  It gets populated with the row numbers
+            // of the other rows (in order).
+            for (int i = 0; i < numCategories + 1; i++)
+                tempStateTable.addElement(new short[numCategories + 1]);
+
+            short[] state = (short[])tempStateTable.elementAt(backTableOffset - 1);
+            for (int i = 0; i < numCategories; i++)
+                state[i] = (short)(i + backTableOffset);
+
+            // scavenge the forward state table for pairs of character categories
+            // that always have a break between them.  The algorithm is as follows:
+            // Look down each column in the state table.  For each nonzero cell in
+            // that column, look up the row it points to.  For each nonzero cell in
+            // that row, populate a cell in the backwards state table: the row number
+            // of that cell is the number of the column we were scanning (plus the
+            // offset that locates this sub-table), and the column number of that cell
+            // is the column number of the nonzero cell we just found.  This cell is
+            // populated with its own column number (adjusted according to the actual
+            // location of the sub-table).  This process will produce a state table
+            // whose behavior is the same as looking up successive pairs of characters
+            // in an array of Booleans to determine whether there is a break.
+            int numRows = stateTable.length / numCategories;
+            for (int column = 0; column < numCategories; column++) {
+                for (int row = 0; row < numRows; row++) {
+                    int nextRow = lookupState(row, column);
+                    if (nextRow != 0) {
+                        for (int nextColumn = 0; nextColumn < numCategories; nextColumn++) {
+                            int cellValue = lookupState(nextRow, nextColumn);
+                            if (cellValue != 0) {
+                                state = (short[])tempStateTable.elementAt(nextColumn +
+                                                backTableOffset);
+                                state[column] = (short)(column + backTableOffset);
+                            }
+                        }
+                    }
+                }
+            }
+
+//debugPrintTempStateTable();
+            // if the user specified some backward-iteration rules with the ! token,
+            // we have to merge the resulting state table with the auto-generated one
+            // above.  First copy the populated cells from row 1 over the populated
+            // cells in the auto-generated table.  Then copy values from row 1 of the
+            // auto-generated table into all of the the unpopulated cells of the
+            // rule-based table.
+            if (backTableOffset > 1) {
+
+                // for every row in the auto-generated sub-table, if a cell is
+                // populated that is also populated in row 1 of the rule-based
+                // sub-table, copy the value from row 1 over the value in the
+                // auto-generated sub-table
+                state = (short[])tempStateTable.elementAt(1);
+                for (int i = backTableOffset - 1; i < tempStateTable.size(); i++) {
+                    short[] state2 = (short[])tempStateTable.elementAt(i);
+                    for (int j = 0; j < numCategories; j++) {
+                        if (state[j] != 0 && state2[j] != 0) {
+                            state2[j] = state[j];
+                        }
+                    }
+                }
+
+                // now, for every row in the rule-based sub-table that is not
+                // an end state, fill in all unpopulated cells with the values
+                // of the corresponding cells in the first row of the auto-
+                // generated sub-table.
+                state = (short[])tempStateTable.elementAt(backTableOffset - 1);
+                for (int i = 1; i < backTableOffset - 1; i++) {
+                    short[] state2 = (short[])tempStateTable.elementAt(i);
+                    if ((state2[numCategories] & END_STATE_FLAG) == 0) {
+                        for (int j = 0; j < numCategories; j++) {
+                            if (state2[j] == 0) {
+                                state2[j] = state[j];
+                            }
+                        }
+                    }
+                }
+            }
+
+//debugPrintTempStateTable();
+
+            // finally, clean everything up and copy it into the actual BreakIterator
+            // by calling finishBuildingStateTable()
+            finishBuildingStateTable(false);
+/*
+System.out.print("C:\t");
+for (int i = 0; i < numCategories; i++)
+System.out.print(Integer.toString(i) + "\t");
+System.out.println(); System.out.print("=================================================");
+for (int i = 0; i < backwardsStateTable.length; i++) {
+if (i % numCategories == 0) {
+System.out.println();
+System.out.print(Integer.toString(i / numCategories) + ":\t");
+}
+if (backwardsStateTable[i] == 0) System.out.print(".\t"); else System.out.print(Integer.toString(backwardsStateTable[i]) + "\t");
+}
+System.out.println();
+*/
+        }
+
+        /**
+         * Throws an IllegalArgumentException representing a syntax error in the rule
+         * description.  The exception's message contains some debugging information.
+         * @param message A message describing the problem
+         * @param position The position in the description where the problem was
+         * discovered
+         * @param context The string containing the error
+         */
+        protected void error(String message, int position, String context) {
+            throw new IllegalArgumentException("Parse error: " + message + "\n" +
+                    context.substring(0, position) + "\n\n" + context.substring(position));
+        }
+
+
+        protected void debugPrintVector(String label, Vector v) {
+            System.out.print(label);
+            for (int i = 0; i < v.size(); i++)
+                System.out.print(v.elementAt(i).toString() + "\t");
+            System.out.println();
+        }
+
+        protected void debugPrintVectorOfVectors(String label1, String label2, Vector v) {
+            System.out.println(label1);
+            for (int i = 0; i < v.size(); i++)
+                debugPrintVector(label2, (Vector)v.elementAt(i));
+        }
+
+        protected void debugPrintTempStateTable() {
+            System.out.println("      tempStateTable:");
+            System.out.print("        C:\t");
+            for (int i = 0; i <= numCategories; i++)
+                System.out.print(Integer.toString(i) + "\t");
+            System.out.println();
+            for (int i = 1; i < tempStateTable.size(); i++) {
+                short[] row = (short[])(tempStateTable.elementAt(i));
+                System.out.print("        " + i + ":\t");
+                for (int j = 0; j < row.length; j++) {
+                    if (row[j] == 0) {
+                        System.out.print(".\t");
+                    }
+                    else {
+                        System.out.print(Integer.toString(row[j]) + "\t");
+                    }
+                }
+                System.out.println();
+            }
+        }
+
+    }
+
+    /*
+     * This class exists to work around a bug in HotJava's implementation
+     * of CharacterIterator, which incorrectly handles setIndex(endIndex).
+     * This iterator relies only on base.setIndex(n) where n is less than
+     * endIndex.
+     *
+     * One caveat:  if the base iterator's begin and end indices change
+     * the change will not be reflected by this wrapper.  Does that matter?
+     */
+    private static final class SafeCharIterator implements CharacterIterator,
+                                                           Cloneable {
+
+        private CharacterIterator base;
+        private int rangeStart;
+        private int rangeLimit;
+        private int currentIndex;
+
+        SafeCharIterator(CharacterIterator base) {
+            this.base = base;
+            this.rangeStart = base.getBeginIndex();
+            this.rangeLimit = base.getEndIndex();
+            this.currentIndex = base.getIndex();
+        }
+
+        public char first() {
+            return setIndex(rangeStart);
+        }
+
+        public char last() {
+            return setIndex(rangeLimit - 1);
+        }
+
+        public char current() {
+            if (currentIndex < rangeStart || currentIndex >= rangeLimit) {
+                return DONE;
+            }
+            else {
+                return base.setIndex(currentIndex);
+            }
+        }
+
+        public char next() {
+
+            currentIndex++;
+            if (currentIndex >= rangeLimit) {
+                currentIndex = rangeLimit;
+                return DONE;
+            }
+            else {
+                return base.setIndex(currentIndex);
+            }
+        }
+
+        public char previous() {
+
+            currentIndex--;
+            if (currentIndex < rangeStart) {
+                currentIndex = rangeStart;
+                return DONE;
+            }
+            else {
+                return base.setIndex(currentIndex);
+            }
+        }
+
+        public char setIndex(int i) {
+
+            if (i < rangeStart || i > rangeLimit) {
+                throw new IllegalArgumentException("Invalid position");
+            }
+            currentIndex = i;
+            return current();
+        }
+
+        public int getBeginIndex() {
+            return rangeStart;
+        }
+
+        public int getEndIndex() {
+            return rangeLimit;
+        }
+
+        public int getIndex() {
+            return currentIndex;
+        }
+
+        public Object clone() {
+
+            SafeCharIterator copy = null;
+            try {
+                copy = (SafeCharIterator) super.clone();
+            }
+            catch(CloneNotSupportedException e) {
+                throw new Error("Clone not supported: " + e);
+            }
+
+            CharacterIterator copyOfBase = (CharacterIterator) base.clone();
+            copy.base = copyOfBase;
+            return copy;
+        }
+    }
+
+
+    public static void debugPrintln(String s) {
+        final String zeros = "0000";
+        String temp;
+        StringBuffer out = new StringBuffer();
+        for (int i = 0; i < s.length(); i++) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c < '\u007f') {
+                out.append(c);
+            }
+            else {
+                out.append("\\u");
+                temp = Integer.toHexString((int)c);
+                out.append(zeros.substring(0, 4 - temp.length()));
+                out.append(temp);
+            }
+        }
+        System.out.println(out);
+    }
+
+}
+
diff --git a/src/com/ibm/text/RuleBasedNumberFormat.java b/src/com/ibm/text/RuleBasedNumberFormat.java
new file mode 100755
index 0000000..b073d29
--- /dev/null
+++ b/src/com/ibm/text/RuleBasedNumberFormat.java
@@ -0,0 +1,1252 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/RuleBasedNumberFormat.java,v $ 
+ * $Date: 2000/03/10 04:07:22 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+import java.text.*;
+import java.util.Vector;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.text.DecimalFormatSymbols;
+
+/**
+ * <p>A class that formats numbers according to a set of rules. This number formatter is
+ * typically used for spelling out numeric values in words (e.g., 25,3476 as
+ * &quot;twenty-five thousand three hundred seventy-six&quot; or &quot;vingt-cinq mille trois
+ * cents soixante-seize&quot; or
+ * &quot;funfundzwanzigtausenddreihundertsechsundsiebzig&quot;), but can also be used for
+ * other complicated formatting tasks, such as formatting a number of seconds as hours,
+ * minutes and seconds (e.g., 3,730 as &quot;1:02:10&quot;).</p>
+ *
+ * <p>The resources contain three predefined formatters for each locale: spellout, which
+ * spells out a value in words (123 is &quot;one hundred twenty-three&quot;); ordinal, which
+ * appends an ordinal suffix to the end of a numeral (123 is &quot;123rd&quot;); and
+ * duration, which shows a duration in seconds as hours, minutes, and seconds (123 is
+ * &quot;2:03&quot;).&nbsp; The client can also define more specialized <tt>RuleBasedNumberFormat</tt>s
+ * by supplying programmer-defined rule sets.</p>
+ *
+ * <p>The behavior of a <tt>RuleBasedNumberFormat</tt> is specified by a textual description
+ * that is either passed to the constructor as a <tt>String</tt> or loaded from a resource
+ * bundle. In its simplest form, the description consists of a semicolon-delimited list of <em>rules.</em>
+ * Each rule has a string of output text and a value or range of values it is applicable to.
+ * In a typical spellout rule set, the first twenty rules are the words for the numbers from
+ * 0 to 19:</p>
+ *
+ * <pre>zero; one; two; three; four; five; six; seven; eight; nine;
+ * ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen; seventeen; eighteen; nineteen;</pre>
+ *
+ * <p>For larger numbers, we can use the preceding set of rules to format the ones place, and
+ * we only have to supply the words for the multiples of 10:</p>
+ *
+ * <pre>20: twenty[-&gt;&gt;];
+ * 30: thirty{-&gt;&gt;];
+ * 40: forty[-&gt;&gt;];
+ * 50: fifty[-&gt;&gt;];
+ * 60: sixty[-&gt;&gt;];
+ * 70: seventy[-&gt;&gt;];
+ * 80: eighty[-&gt;&gt;];
+ * 90: ninety[-&gt;&gt;];</pre>
+ *
+ * <p>In these rules, the <em>base value</em> is spelled out explicitly and set off from the
+ * rule's output text with a colon. The rules are in a sorted list, and a rule is applicable
+ * to all numbers from its own base value to one less than the next rule's base value. The
+ * &quot;&gt;&gt;&quot; token is called a <em>substitution</em> and tells the fomatter to
+ * isolate the number's ones digit, format it using this same set of rules, and place the
+ * result at the position of the &quot;&gt;&gt;&quot; token. Text in brackets is omitted if
+ * the number being formatted is an even multiple of 10 (the hyphen is a literal hyphen; 24
+ * is &quot;twenty-four,&quot; not &quot;twenty four&quot;).</p>
+ *
+ * <p>For even larger numbers, we can actually look up several parts of the number in the
+ * list:</p>
+ *
+ * <pre>100: &lt;&lt; hundred[ &gt;&gt;];</pre>
+ *
+ * <p>The &quot;&lt;&lt;&quot; represents a new kind of substitution. The &lt;&lt; isolates
+ * the hundreds digit (and any digits to its left), formats it using this same rule set, and
+ * places the result where the &quot;&lt;&lt;&quot; was. Notice also that the meaning of
+ * &gt;&gt; has changed: it now refers to both the tens and the ones digits. The meaning of
+ * both substitutions depends on the rule's base value. The base value determines the rule's <em>divisor,</em>
+ * which is the highest power of 10 that is less than or equal to the base value (the user
+ * can change this). To fill in the substitutions, the formatter divides the number being
+ * formatted by the divisor. The integral quotient is used to fill in the &lt;&lt;
+ * substitution, and the remainder is used to fill in the &gt;&gt; substitution. The meaning
+ * of the brackets changes similarly: text in brackets is omitted if the value being
+ * formatted is an even multiple of the rule's divisor. The rules are applied recursively, so
+ * if a substitution is filled in with text that includes another substitution, that
+ * substitution is also filled in.</p>
+ *
+ * <p>This rule covers values up to 999, at which point we add another rule:</p>
+ *
+ * <pre>1000: &lt;&lt; thousand[ &gt;&gt;];</pre>
+ *
+ * <p>Again, the meanings of the brackets and substitution tokens shift because the rule's
+ * base value is a higher power of 10, changing the rule's divisor. This rule can actually be
+ * used all the way up to 999,999. This allows us to finish out the rules as follows:</p>
+ *
+ * <pre>1,000,000: &lt;&lt; million[ &gt;&gt;];
+ * 1,000,000,000: &lt;&lt; billion[ &gt;&gt;];
+ * 1,000,000,000,000: &lt;&lt; trillion[ &gt;&gt;];
+ * 1,000,000,000,000,000: OUT OF RANGE!;</pre>
+ *
+ * <p>Commas, periods, and spaces can be used in the base values to improve legibility and
+ * are ignored by the rule parser. The last rule in the list is customarily treated as an
+ * &quot;overflow rule,&quot; applying to everything from its base value on up, and often (as
+ * in this example) being used to print out an error message or default representation.
+ * Notice also that the size of the major groupings in large numbers is controlled by the
+ * spacing of the rules: because in English we group numbers by thousand, the higher rules
+ * are separated from each other by a factor of 1,000.</p>
+ *
+ * <p>To see how these rules actually work in practice, consider the following example:
+ * Formatting 25,430 with this rule set would work like this:</p>
+ *
+ * <table border="0" width="630">
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>&lt;&lt; thousand &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[the rule whose base value is 1,000 is applicable to 25,340]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top"><strong>twenty-&gt;&gt;</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25,340 over 1,000 is 25. The rule for 20 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-<strong>five</strong> thousand &gt;&gt;</td>
+ *     <td width="340" valign="top">[25 mod 10 is 5. The rule for 5 is &quot;five.&quot;</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>&lt;&lt; hundred &gt;&gt;</strong></td>
+ *     <td width="340" valign="top">[25,340 mod 1,000 is 340. The rule for 100 applies.]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand <strong>three</strong> hundred &gt;&gt;</td>
+ *     <td width="340" valign="top">[340 over 100 is 3. The rule for 3 is &quot;three.&quot;]</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="21"></td>
+ *     <td width="257" valign="top">twenty-five thousand three hundred <strong>forty</strong></td>
+ *     <td width="340" valign="top">[340 mod 100 is 40. The rule for 40 applies. Since 40 divides
+ *     evenly by 10, the hyphen and substitution in the brackets are omitted.]</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The above syntax suffices only to format positive integers. To format negative numbers,
+ * we add a special rule:</p>
+ *
+ * <pre>-x: minus &gt;&gt;;</pre>
+ *
+ * <p>This is called a <em>negative-number rule,</em> and is identified by &quot;-x&quot;
+ * where the base value would be. This rule is used to format all negative numbers. the
+ * &gt;&gt; token here means &quot;find the number's absolute value, format it with these
+ * rules, and put the result here.&quot;</p>
+ *
+ * <p>We also add a special rule called a <em>fraction rule </em>for numbers with fractional
+ * parts:</p>
+ *
+ * <pre>x.x: &lt;&lt; point &gt;&gt;;</pre>
+ *
+ * <p>This rule is used for all positive non-integers (negative non-integers pass through the
+ * negative-number rule first and then through this rule). Here, the &lt;&lt; token refers to
+ * the number's integral part, and the &gt;&gt; to the number's fractional part. The
+ * fractional part is formatted as a series of single-digit numbers (e.g., 123.456 would be
+ * formatted as &quot;one hundred twenty-three point four five six&quot;).</p>
+ *
+ * <p>To see how this rule syntax is applied to various languages, examine the resource data.</p>
+ *
+ * <p>There is actually much more flexibility built into the rule language than the
+ * description above shows. A formatter may own multiple rule sets, which can be selected by
+ * the caller, and which can use each other to fill in their substitutions. Substitutions can
+ * also be filled in with digits, using a DecimalFormat object. There is syntax that can be
+ * used to alter a rule's divisor in various ways. And there is provision for much more
+ * flexible fraction handling. A complete description of the rule syntax follows:</p>
+ *
+ * <hr>
+ *
+ * <p>The description of a <tt>RuleBasedNumberFormat</tt>'s behavior consists of one or more <em>rule
+ * sets.</em> Each rule set consists of a name, a colon, and a list of <em>rules.</em> A rule
+ * set name must begin with a % sign. Rule sets with names that begin with a single % sign
+ * are <em>public:</em> the caller can specify that they be used to format and parse numbers.
+ * Rule sets with names that begin with %% are <em>private:</em> they exist only for the use
+ * of other rule sets. If a formatter only has one rule set, the name may be omitted.</p>
+ *
+ * <p>The user can also specify a special &quot;rule set&quot; named <tt>%%lenient-parse</tt>.
+ * The body of <tt>%%lenient-parse</tt> isn't a set of number-formatting rules, but a <tt>RuleBasedCollator</tt>
+ * description which is used to define equivalences for lenient parsing. For more information
+ * on the syntax, see <tt>RuleBasedCollator</tt>. For more information on lenient parsing,
+ * see <tt>setLenientParse()</tt>.</p>
+ *
+ * <p>The body of a rule set consists of an ordered, semicolon-delimited list of <em>rules.</em>
+ * Internally, every rule has a base value, a divisor, rule text, and zero, one, or two <em>substtutions.</em>
+ * These parameters are controlled by the description syntax, which consists of a <em>rule
+ * descriptor,</em> a colon, and a <em>rule body.</em></p>
+ *
+ * <p>A rule descriptor can take one of the following forms (text in <em>italics</em> is the
+ * name of a token):</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. <em>bv</em> is a decimal
+ *     number expressed using ASCII digits. <em>bv</em> may contain spaces, period, and commas,
+ *     which are irgnored. The rule's divisor is the highest power of 10 less than or equal to
+ *     the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. The rule's divisor is the
+ *     highest power of <em>rad</em> less than or equal to the base value.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be 10, and the exponent be the highest exponent of the radix that yields a
+ *     result less than or equal to the base value. Every &gt; character after the base value
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>bv</em>/<em>rad</em>&gt;:</td>
+ *     <td valign="top"><em>bv</em> specifies the rule's base value. To calculate the divisor,
+ *     let the radix be <em>rad</em>, and the exponent be the highest exponent of the radix that
+ *     yields a result less than or equal to the base value. Every &gt; character after the radix
+ *     decreases the exponent by 1. If the exponent is positive or 0, the divisor is the radix
+ *     raised to the power of the exponent; otherwise, the divisor is 1.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">-x:</td>
+ *     <td valign="top">The rule is a negative-number rule.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.x:</td>
+ *     <td valign="top">The rule is an <em>improper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">0.x:</td>
+ *     <td valign="top">The rule is a <em>proper fraction rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top">x.0:</td>
+ *     <td valign="top">The rule is a <em>master rule.</em></td>
+ *   </tr>
+ *   <tr>
+ *     <td width="5%" valign="top"></td>
+ *     <td width="8%" valign="top"><em>nothing</em></td>
+ *     <td valign="top">If the rule's rule descriptor is left out, the base value is one plus the
+ *     preceding rule's base value (or zero if this is the first rule in the list) in a normal
+ *     rule set.&nbsp; In a fraction rule set, the base value is the same as the preceding rule's
+ *     base value.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>A rule set may be either a regular rule set or a <em>fraction rule set,</em> depending
+ * on whether it is used to format a number's integral part (or the whole number) or a
+ * number's fractional part. Using a rule set to format a rule's fractional part makes it a
+ * fraction rule set.</p>
+ *
+ * <p>Which rule is used to format a number is defined according to one of the following
+ * algorithms: If the rule set is a regular rule set, do the following:
+ *
+ * <ul>
+ *   <li>If the rule set includes a master rule (and the number was passed in as a <tt>double</tt>),
+ *     use the master rule.&nbsp; (If the number being formatted was passed in as a <tt>long</tt>,
+ *     the master rule is ignored.)</li>
+ *   <li>If the number is negative, use the negative-number rule.</li>
+ *   <li>If the number has a fractional part and is greater than 1, use the improper fraction
+ *     rule.</li>
+ *   <li>If the number has a fractional part and is between 0 and 1, use the proper fraction
+ *     rule.</li>
+ *   <li>Binary-search the rule list for the rule with the highest base value less than or equal
+ *     to the number. If that rule has two substitutions, its base value is not an even multiple
+ *     of its divisor, and the number <em>is</em> an even multiple of the rule's divisor, use the
+ *     rule that precedes it in the rule list. Otherwise, use the rule itself.</li>
+ * </ul>
+ *
+ * <p>If the rule set is a fraction rule set, do the following:
+ *
+ * <ul>
+ *   <li>Ignore negative-number and fraction rules.</li>
+ *   <li>For each rule in the list, multiply the number being formatted (which will always be
+ *     between 0 and 1) by the rule's base value. Keep track of the distance between the result
+ *     the nearest integer.</li>
+ *   <li>Use the rule that produced the result closest to zero in the above calculation. In the
+ *     event of a tie or a direct hit, use the first matching rule encountered. (The idea here is
+ *     to try each rule's base value as a possible denominator of a fraction. Whichever
+ *     denominator produces the fraction closest in value to the number being formatted wins.) If
+ *     the rule following the matching rule has the same base value, use it if the numerator of
+ *     the fraction is anything other than 1; if the numerator is 1, use the original matching
+ *     rule. (This is to allow singular and plural forms of the rule text without a lot of extra
+ *     hassle.)</li>
+ * </ul>
+ *
+ * <p>A rule's body consists of a string of characters terminated by a semicolon. The rule
+ * may include zero, one, or two <em>substitution tokens,</em> and a range of text in
+ * brackets. The brackets denote optional text (and may also include one or both
+ * substitutions). The exact meanings of the substitution tokens, and under what conditions
+ * optional text is omitted, depend on the syntax of the substitution token and the context.
+ * The rest of the text in a rule body is literal text that is output when the rule matches
+ * the number being formatted.</p>
+ *
+ * <p>A substitution token begins and ends with a <em>token character.</em> The token
+ * character and the context together specify a mathematical operation to be performed on the
+ * number being formatted. An optional <em>substitution descriptor </em>specifies how the
+ * value resulting from that operation is used to fill in the substitution. The position of
+ * the substitution token in the rule body specifies the location of the resultant text in
+ * the original rule text.</p>
+ *
+ * <p>The meanings of the substitution token characters are as follows:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Find the absolute value of the number and format the result</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's fractional part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&gt;&gt;&gt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the remainder,
+ *       but bypass the normal rule-selection process and just use the
+ *       rule that precedes this one in this rule list.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in all other rules</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">&lt;&lt;</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Divide the number by the rule's divisor and format the quotient</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in fraction or master rule</td>
+ *     <td>Isolate the number's integral part and format it.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Multiply the number by the rule's base value and format the result.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">==</td>
+ *     <td width="165" valign="top">in all rule sets</td>
+ *     <td>Format the number unchanged</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23">[]</td>
+ *     <td width="165" valign="top">in normal rule</td>
+ *     <td>Omit the optional text if the number is an even multiple of the rule's divisor</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in negative-number rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in improper-fraction rule</td>
+ *     <td>Omit the optional text if the number is between 0 and 1 (same as specifying both an
+ *     x.x rule and a 0.x rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in master rule</td>
+ *     <td>Omit the optional text if the number is an integer (same as specifying both an x.x
+ *     rule and an x.0 rule)</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in proper-fraction rule</td>
+ *     <td>Not allowed.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="37"></td>
+ *     <td width="23"></td>
+ *     <td width="165" valign="top">in rule in fraction rule set</td>
+ *     <td>Omit the optional text if multiplying the number by the rule's base value yields 1.</td>
+ *   </tr>
+ * </table>
+ *
+ * <p>The substitution descriptor (i.e., the text between the token characters) may take one
+ * of three forms:</p>
+ *
+ * <table border="0" width="100%">
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a rule set name</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the
+ *     named rule set.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">a DecimalFormat pattern</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using a
+ *     DecimalFormat with the specified pattern.&nbsp; The pattern must begin with 0 or #.</td>
+ *   </tr>
+ *   <tr>
+ *     <td width="42"></td>
+ *     <td width="166" valign="top">nothing</td>
+ *     <td>Perform the mathematical operation on the number, and format the result using the rule
+ *     set containing the current rule, except:<ul>
+ *       <li>You can't have an empty substitution descriptor with a == substitution.</li>
+ *       <li>If you omit the substitution descriptor in a &gt;&gt; substitution in a fraction rule,
+ *         format the result one digit at a time using the rule set containing the current rule.</li>
+ *       <li>If you omit the substitution descriptor in a &lt;&lt; substitution in a rule in a
+ *         fraction rule set, format the result using the default rule set for this formatter.</li>
+ *     </ul>
+ *     </td>
+ *   </tr>
+ * </table>
+ *
+ * <p>Whitespace is ignored between a rule set name and a rule set body, between a rule
+ * descriptor and a rule body, or between rules. If a rule body begins with an apostrophe,
+ * the apostrophe is ignored, but all text after it becomes significant (this is how you can
+ * have a rule's rule text begin with whitespace). There is no escape function: the semicolon
+ * is not allowed in rule set names or in rule text, and the colon is not allowed in rule set
+ * names. The characters beginning a substitution token are always treated as the beginning
+ * of a substitution token.</p>
+ *
+ * <p>See the resource data and the demo program for annotated examples of real rule sets
+ * using these features.</p>
+ *
+ * @author Richard Gillam
+ * $RCSfile: RuleBasedNumberFormat.java,v $ $Revision: 1.2 $ $Date: 2000/03/10 04:07:22 $
+ * @see java.text.NumberFormat
+ * @see java.text.DecimalFormat
+ */
+public final class RuleBasedNumberFormat extends java.text.NumberFormat {
+
+    //-----------------------------------------------------------------------
+    // constants
+    //-----------------------------------------------------------------------
+
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    /**
+     * Selector code that tells the constructor to create a spellout formatter
+     */
+    public static final int SPELLOUT = 1;
+
+    /**
+     * Selector code that tells the constructor to create an ordinal formatter
+     */
+    public static final int ORDINAL = 2;
+
+    /**
+     * Selector code that tells the constructor to create a duration formatter
+     */
+    public static final int DURATION = 3;
+
+    //-----------------------------------------------------------------------
+    // data members
+    //-----------------------------------------------------------------------
+
+    /**
+     * The formatter's rule sets.
+     */
+    private NFRuleSet[] ruleSets = null;
+
+    /**
+     * A pointer to the formatter's default rule set.  This is always included
+     * in ruleSets.
+     */
+    private NFRuleSet defaultRuleSet = null;
+
+    /**
+     * The formatter's locale.  This is used to create DecimalFormatSymbols and
+     * Collator objects.
+     */
+    private Locale locale = null;
+
+    /**
+     * Collator to be used in lenient parsing.  This variable is lazy-evaluated:
+     * the collator is actually created the first time the client does a parse
+     * with lenient-parse mode turned on.
+     */
+    private Collator collator = null;
+
+    /**
+     * The DecimalFormatSymbols object that any DecimalFormat objects this
+     * formatter uses should use.  This variable is lazy-evaluated: it isn't
+     * filled in if the rule set never uses a DecimalFormat pattern.
+     */
+    private DecimalFormatSymbols decimalFormatSymbols = null;
+
+    /**
+     * Flag specifying whether lenient parse mode is on or off.  Off by default.
+     */
+    private boolean lenientParse = false;
+
+    /**
+     * If the description specifies lenient-parse rules, they're stored here until
+     * the collator is created.
+     */
+    private String lenientParseRules = null;
+
+    //-----------------------------------------------------------------------
+    // constructors
+    //-----------------------------------------------------------------------
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the default locale.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     */
+    public RuleBasedNumberFormat(String description) {
+        locale = Locale.getDefault();
+        init(description);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat that behaves according to the description
+     * passed in.  The formatter uses the specified locale to determine the
+     * characters to use when formatting in numerals, and to define equivalences
+     * for lenient parsing.
+     * @param description A description of the formatter's desired behavior.
+     * See the class documentation for a complete explanation of the description
+     * syntax.
+     * @param locale A locale, which governs which characters are used for
+     * formatting values in numerals, and which characters are equivalent in
+     * lenient parsing.
+     */
+    public RuleBasedNumberFormat(String description, Locale locale) {
+        this.locale = locale;
+        init(description);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  The selector
+     * code choosed among three possible predefined formats: spellout, ordinal,
+     * and duration.
+     * @param locale The locale for the formatter.
+     * @param format A selector code specifying which kind of formatter to create for that
+     * locale.  There are three legal values: SPELLOUT, which creates a formatter that
+     * spells out a value in words in the desired language, ORDINAL, which attaches
+     * an ordinal suffix from the desired language to the end of a number (e.g. "123rd"),
+     * and DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     */
+    public RuleBasedNumberFormat(Locale locale, int format) {
+        this.locale = locale;
+
+        // load up the resource bundle containing the description
+        // from the specified locale
+        ResourceBundle bundle = ResourceBundle.getBundle(
+                        "com.ibm.text.resources.NumberFormatRules",
+                        locale);
+        String description = "";
+
+        // pick a description from the resource bundle based on the
+        // kind of formatter the user asked for
+        switch (format) {
+            case SPELLOUT:
+                description = bundle.getString("SpelloutRules");
+                break;
+
+            case ORDINAL:
+                description = bundle.getString("OrdinalRules");
+                break;
+
+            case DURATION:
+                description = bundle.getString("DurationRules");
+                break;
+        }
+
+        // construct the formatter based on the description
+        init(description);
+    }
+
+    /**
+     * Creates a RuleBasedNumberFormat from a predefined description.  Uses the
+     * default locale.
+     * @param format A selector code specifying which kind of formatter to create.
+     * There are three legal values: SPELLOUT, which creates a formatter that spells
+     * out a value in words in the default locale's langyage, ORDINAL, which attaches
+     * an ordinal suffix from the default locale's language to a numeral, and
+     * DURATION, which formats a duration in seconds as hours, minutes, and seconds.
+     */
+    public RuleBasedNumberFormat(int format) {
+        this(Locale.getDefault(), format);
+    }
+
+    //-----------------------------------------------------------------------
+    // boilerplate
+    //-----------------------------------------------------------------------
+
+    /**
+     * Duplicates this formatter.
+     * @return A RuleBasedNumberFormat that is equal to this one.
+     */
+    public Object clone() {
+        return super.clone();
+    }
+
+    /**
+     * Tests two RuleBasedNumberFormats for equality.
+     * @param that The formatter to compare against this one.
+     * @return true if the two formatters have identical behavior.
+     */
+    public boolean equals(Object that) {
+        // if the other object isn't a RuleBasedNumberFormat, that's
+        // all we need to know
+        if (!(that instanceof RuleBasedNumberFormat)) {
+            return false;
+        } else {
+            // cast the other object's pointer to a pointer to a
+            // RuleBasedNumberFormat
+            RuleBasedNumberFormat that2 = (RuleBasedNumberFormat)that;
+
+            // compare their locales and lenient-parse modes
+            if (!locale.equals(that2.locale) || lenientParse != that2.lenientParse) {
+                return false;
+            }
+
+            // if that succeeds, then compare their rule set lists
+            if (ruleSets.length != that2.ruleSets.length) {
+                return false;
+            }
+            for (int i = 0; i < ruleSets.length; i++) {
+                if (!ruleSets[i].equals(that2.ruleSets[i])) {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+    }
+
+    /**
+     * Generates a textual description of this formatter.
+     * @return a String containing a rule set that will produce a RuleBasedNumberFormat
+     * with identical behavior to this one.  This won't necessarily be identical
+     * to the rule set description that was originally passed in, but will produce
+     * the same result.
+     */
+    public String toString() {
+
+        // accumulate the descriptions of all the rule sets in a
+        // StringBuffer, then cast it to a String and return it
+        StringBuffer result = new StringBuffer();
+        for (int i = 0; i < ruleSets.length; i++) {
+            result.append(ruleSets[i].toString());
+        }
+        return result.toString();
+    }
+
+    /**
+     * Writes this object to a stream.
+     * @param out The stream to write to.
+     */
+    private void writeObject(java.io.ObjectOutputStream out)
+                    throws java.io.IOException {
+        // we just write the textual description to the stream, so we
+        // have an implementation-independent streaming format
+        out.writeUTF(this.toString());
+    }
+
+    /**
+     * Reads this object in from a stream.
+     * @param in The stream to read from.
+     */
+    private void readObject(java.io.ObjectInputStream in)
+                    throws java.io.IOException {
+
+        // read the description in from the stream
+        String description = in.readUTF();
+
+        // build a brand-new RuleBasedNumberFormat from the description,
+        // then steal its substructure.  This object's substructure and
+        // the temporary RuleBasedNumberFormat drop on the floor and
+        // get swept up by the garbage collector
+        RuleBasedNumberFormat temp = new RuleBasedNumberFormat(description);
+        ruleSets = temp.ruleSets;
+        defaultRuleSet = temp.defaultRuleSet;
+    }
+
+
+    //-----------------------------------------------------------------------
+    // public API functions
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a list of the names of all of this formatter's public rule sets.
+     * @return A list of the names of all of this formatter's public rule sets.
+     */
+    public String[] getRuleSetNames() {
+        // preflight the iteration, counting the number of public rule sets
+        // (public rule sets have names that begin with % instead of %%)
+        int count = 0;
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                ++count;
+            }
+        }
+
+        // then new up an array of the proper size and copy the names into it
+        String[] result = new String[count];
+        count = 0;
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                result[count++] = ruleSets[i].getName();
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     */
+    public String format(double number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number according to the specified rule set.
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param ruleSet The name of the rule set to format the number with.
+     * This must be the name of a valid public rule set for this formatter.
+     * @return A textual representation of the number.
+     */
+    public String format(long number, String ruleSet) throws IllegalArgumentException {
+        if (ruleSet.startsWith("%%")) {
+            throw new IllegalArgumentException("Can't use internal rule set");
+        }
+        return format(number, findRuleSet(ruleSet));
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     */
+    public StringBuffer format(double number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * Formats the specified number using the formatter's default rule set.
+     * (The default rule set is the last public rule set defined in the description.)
+     * (If the specified rule set specifies a master ["x.0"] rule, this function
+     * ignores it.  Convert the number to a double first if you ned it.)  This
+     * function preserves all the precision in the long-- it doesn't convert it
+     * to a double.
+     * @param number The number to format.
+     * @param toAppendTo A StringBuffer that the result should be appended to.
+     * @param ignore This function doesn't examine or update the field position.
+     * @return toAppendTo
+     */
+    public StringBuffer format(long number,
+                               StringBuffer toAppendTo,
+                               FieldPosition ignore) {
+        // this is one of the inherited format() methods.  Since it doesn't
+        // have a way to select the rule set to use, it just uses the
+        // default one
+        toAppendTo.append(format(number, defaultRuleSet));
+        return toAppendTo;
+    }
+
+    /**
+     * Parses the specfied string, beginning at the specified position, according
+     * to this formatter's rules.  This will match the string against all of the
+     * formatter's public rule sets and return the value corresponding to the longest
+     * parseable substring.  This function's behavior is affected by the lenient
+     * parse mode.
+     * @param text The string to parse
+     * @param parsePosition On entry, contains the position of the first character
+     * in "text" to examine.  On exit, has been updated to contain the position
+     * of the first character in "text" that wasn't consumed by the parse.
+     * @return The number that corresponds to the parsed text.  This will be an
+     * instance of either Long or Double, depending on whether the result has a
+     * fractional part.
+     * @see #setLenientParseMode
+     */
+    public Number parse(String text, ParsePosition parsePosition) {
+
+        // parsePosition tells us where to start parsing.  We copy the
+        // text in the string from here to the end inro a new string,
+        // and create a new ParsePosition and result variable to use
+        // for the duration of the parse operation
+        String workingText = text.substring(parsePosition.getIndex());
+        ParsePosition workingPos = new ParsePosition(0);
+        Number tempResult = null;
+
+        // keep track of the largest number of characters consumed in
+        // the various trials, and the result that corresponds to it
+        Number result = new Long(0);
+        ParsePosition highWaterMark = new ParsePosition(workingPos.getIndex());
+
+        // iterate over the public rule sets (beginning with the default one)
+        // and try parsing the text with each of them.  Keep track of which
+        // one consumes the most characters: that's the one that determines
+        // the result we return
+        for (int i = ruleSets.length - 1; i >= 0; i--) {
+            // skip private rule sets
+            if (ruleSets[i].getName().startsWith("%%")) {
+                continue;
+            }
+
+            // try parsing the string with the rule set.  If it gets past the
+            // high-water mark, update the high-water mark and the result
+            tempResult = ruleSets[i].parse(workingText, workingPos, Double.MAX_VALUE);
+            if (workingPos.getIndex() > highWaterMark.getIndex()) {
+                result = tempResult;
+                highWaterMark.setIndex(workingPos.getIndex());
+            }
+// commented out because this API on ParsePosition doesn't exist in 1.1.x
+//            if (workingPos.getErrorIndex() > highWaterMark.getErrorIndex()) {
+//                highWaterMark.setErrorIndex(workingPos.getErrorIndex());
+//            }
+
+            // if we manage to use up all the characters in the string,
+            // we don't have to try any more rule sets
+            if (highWaterMark.getIndex() == workingText.length()) {
+                break;
+            }
+
+            // otherwise, reset our internal parse position to the
+            // beginning and try again with the next rule set
+            workingPos.setIndex(0);
+        }
+
+        // add the high water mark to our original parse position and
+        // return the result
+        parsePosition.setIndex(parsePosition.getIndex() + highWaterMark.getIndex());
+// commented out because this API on ParsePosition doesn't exist in 1.1.x
+//        if (highWaterMark.getIndex() == 0) {
+//            parsePosition.setErrorIndex(parsePosition.getIndex() + highWaterMark.getErrorIndex());
+//        }
+        return result;
+    }
+
+    /**
+     * Turns lenient parse mode on and off.
+     *
+     * When in lenient parse mode, the formatter uses a Collator for parsing the text.
+     * Only primary differences are treated as significant.  This means that case
+     * differences, accent differences, alternate spellings of the same letter
+     * (e.g., ae and a-umlaut in German), ignorable characters, etc. are ignored in
+     * matching the text.  In many cases, numerals will be accepted in place of words
+     * or phrases as well.
+     *
+     * For example, all of the following will correctly parse as 255 in English in
+     * lenient-parse mode:
+     * <br>"two hundred fifty-five"
+     * <br>"two hundred fifty five"
+     * <br>"TWO HUNDRED FIFTY-FIVE"
+     * <br>"twohundredfiftyfive"
+     * <br>"2 hundred fifty-5"
+     *
+     * The Collator used is determined by the locale that was
+     * passed to this object on construction.  The description passed to this object
+     * on construction may supply additional collation rules that are appended to the
+     * end of the default collator for the locale, enabling additional equivalences
+     * (such as adding more ignorable characters or permitting spelled-out version of
+     * symbols; see the demo program for examples).
+     *
+     * It's important to emphasize that even strict parsing is relatively lenient: it
+     * will accept some text that it won't produce as output.  In English, for example,
+     * it will correctly parse "two hundred zero" and "fifteen hundred".
+     *
+     * @param enabled If true, turns lenient-parse mode on; if false, turns it off.
+     * @see java.text.RuleBasedCollator
+     */
+    public void setLenientParseMode(boolean enabled) {
+        lenientParse = enabled;
+
+        // if we're leaving lenient-parse mode, throw away the collator
+        // we've been using
+        if (!enabled) {
+            collator = null;
+        }
+    }
+
+    /**
+     * Returns true if lenient-parse mode is turned on.  Lenient parsing is off
+     * by default.
+     * @return true if lenient-parse mode is turned on.
+     * @see #setLenientParseMode
+     */
+    public boolean lenientParseEnabled() {
+        return lenientParse;
+    }
+
+    //-----------------------------------------------------------------------
+    // package-internal API
+    //-----------------------------------------------------------------------
+
+    /**
+     * Returns a reference to the formatter's default rule set.  The default
+     * rule set is the last public rule set in the description.
+     * @return The formatter's default rule set.
+     */
+    NFRuleSet getDefaultRuleSet() {
+        return defaultRuleSet;
+    }
+
+    /**
+     * Returns the collator to use for lenient parsing.  The collator is lazily created:
+     * this function creates it the first time it's called.
+     * @return The collator to use for lenient parsing, or null if lenient parsing
+     * is turned off.
+     */
+    Collator getCollator() {
+        // lazy-evaulate the collator
+        if (collator == null && lenientParse) {
+            try {
+                // create a default collator based on the formatter's locale,
+                // then pull out that collator's rules, append any additional
+                // rules specified in the description, and create a _new_
+                // collator based on the combinaiton of those rules
+                RuleBasedCollator temp = (RuleBasedCollator)collator.getInstance(locale);
+                String rules = temp.getRules() + lenientParseRules;
+
+                collator = new RuleBasedCollator(rules);
+                collator.setDecomposition(Collator.CANONICAL_DECOMPOSITION);
+            }
+            catch (Exception e) {
+                // If we get here, it means we have a malformed set of
+                // collation rules, which hopefully won't happen
+                e.printStackTrace();
+                collator = null;
+            }
+        }
+
+        // if lenient-parse mode is off, this will be null
+        // (see setLenientParseMode())
+        return collator;
+    }
+
+    /**
+     * Returns the DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.  This object is lazily created: this function
+     * creates it the first time it's called.
+     * @return The DecimalFormatSymbols object that should be used by all DecimalFormat
+     * instances owned by this formatter.
+     */
+    DecimalFormatSymbols getDecimalFormatSymbols() {
+        // lazy-evaluate the DecimalFormatSymbols object.  This object
+        // is shared by all DecimalFormat instances belonging to this
+        // formatter
+        if (decimalFormatSymbols == null) {
+            decimalFormatSymbols = new DecimalFormatSymbols(locale);
+        }
+        return decimalFormatSymbols;
+    }
+
+    //-----------------------------------------------------------------------
+    // construction implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * This function parses the description and uses it to build all of
+     * internal data structures that the formatter uses to do formatting
+     * @param description The description of the formatter's desired behavior.
+     * This is either passed in by the caller or loaded out of a resource
+     * by one of the constructors, and is in the description format specified
+     * in the class docs.
+     */
+    private void init(String description) {
+        // start by stripping the trailing whitespace from all the rules
+        // (this is all the whitespace follwing each semicolon in the
+        // description).  This allows us to look for rule-set boundaries
+        // by searching for ";%" without having to worry about whitespace
+        // between the ; and the %
+        description = stripWhitespace(description);
+
+        // check to see if there's a set of lenient-parse rules.  If there
+        // is, pull them out into our temporary holding place for them,
+        // and delete them from the description before the real desciption-
+        // parsing code sees them
+        int lp = description.indexOf("%%lenient-parse:");
+        if (lp != -1) {
+            // we've got to make sure we're not in the middle of a rule
+            // (where "%%lenient-parse" would actually get treated as
+            // rule text)
+            if (lp == 0 || description.charAt(lp - 1) == ';') {
+                // locate the beginning and end of the actual collation
+                // rules (there may be whitespace between the name and
+                // the first token in the description)
+                int lpEnd = description.indexOf(";%", lp);
+
+                if (lpEnd == -1) {
+                    lpEnd = description.length() - 1;
+                }
+                int lpStart = lp + "%%lenient-parse:".length();
+                while (Character.isWhitespace(description.charAt(lpStart))) {
+                    ++lpStart;
+                }
+
+                // copy out the lenient-parse rules and delete them
+                // from the description
+                lenientParseRules = description.substring(lpStart, lpEnd);
+                StringBuffer temp = new StringBuffer(description.substring(0, lp));
+                if (lpEnd + 1 < description.length()) {
+                    temp.append(description.substring(lpEnd + 1));
+                }
+                description = temp.toString();
+            }
+        }
+
+        // pre-flight parsing the description and count the number of
+        // rule sets (";%" marks the end of one rule set and the beginning
+        // of the next)
+        int numRuleSets = 0;
+        for (int p = description.indexOf(";%"); p != -1; p = description.indexOf(";%", p)) {
+            ++numRuleSets;
+            ++p;
+        }
+        ++numRuleSets;
+
+        // our rule list is an array of the apprpriate size
+        ruleSets = new NFRuleSet[numRuleSets];
+
+        // divide up the descriptions into individual rule-set descriptions
+        // and store them in a temporary array.  At each step, we also
+        // new up a rule set, but all this does is initialize its name
+        // and remove it from its description.  We can't actually parse
+        // the rest of the descriptions and finish initializing everything
+        // because we have to know the names and locations of all the rule
+        // sets before we can actually set everything up
+        String[] ruleSetDescriptions = new String[numRuleSets];
+
+        int curRuleSet = 0;
+        int start = 0;
+        for (int p = description.indexOf(";%"); p != -1; p = description.indexOf(";%", start)) {
+            ruleSetDescriptions[curRuleSet] = description.substring(start, p + 1);
+            ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+            ++curRuleSet;
+            start = p + 1;
+        }
+        ruleSetDescriptions[curRuleSet] = description.substring(start);
+        ruleSets[curRuleSet] = new NFRuleSet(ruleSetDescriptions, curRuleSet);
+
+        // now we can take note of the formatter's default rule set, which
+        // is the last public rule set in the description (it's the last
+        // rather than the first so that a user can create a new formatter
+        // from an existing formatter and change its default bevhaior just
+        // by appending more rule sets to the end)
+        setDefaultRuleSet();
+
+        // finally, we can go back through the temporary descriptions
+        // list and finish seting up the substructure (and we throw
+        // away the temporary descriptions as we go)
+        for (int i = 0; i < ruleSets.length; i++) {
+            ruleSets[i].parseRules(ruleSetDescriptions[i], this);
+            ruleSetDescriptions[i] = null;
+        }
+    }
+
+    /**
+     * This function is used by init() to strip whitespace between rules (i.e.,
+     * after semicolons).
+     * @param description The formatter description
+     * @return The description with all the whitespace that follows semicolons
+     * taken out.
+     */
+    private String stripWhitespace(String description) {
+        // since we don't have a method that deletes characters (why?!!)
+        // create a nwe StringBuffer to copy the text into
+        StringBuffer result = new StringBuffer();
+
+        // iterate through the characters...
+        int start = 0;
+        while (start != -1 && start < description.length()) {
+            // seek to the first non-whitespace character...
+            while (start < description.length()
+                   && Character.isWhitespace(description.charAt(start))) {
+                ++start;
+            }
+
+            // locate the next semicolon in the text and copyt he text from
+            // our current position up to that semicolon into the result
+            int p;
+            p = description.indexOf(';', start);
+            if (p == -1) {
+                // or if we don't find a semicolon, just copy the rest of
+                // the string into the result
+                result.append(description.substring(start));
+                start = -1;
+            }
+            else if (p < description.length()) {
+                result.append(description.substring(start, p + 1));
+                start = p + 1;
+            }
+
+            // when we get here, we've seeked off the end of the sring, and
+            // we terminate the loop (we continue until *start* is -1 rather
+            // than until *p* is -1, because otherwise we'd miss the last
+            // rule in the description)
+            else {
+                start = -1;
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * This function is called ONLY DURING CONSTRUCTION to fill in the
+     * defaultRuleSet variable once we've set up all the rule sets.
+     * The default rule set is the last public rule set in the description.
+     * (It's the last rather than the first so that a caller can append
+     * text to the end of an existing formatter description to change its
+     * behavior.)
+     */
+    private void setDefaultRuleSet() {
+        // seek backward from the end of the list until we reach a rule set
+        // whose name DOESN'T begin with %%.  That's the default rule set
+        for (int i = ruleSets.length - 1; i >= 0; --i) {
+            if (!ruleSets[i].getName().startsWith("%%")) {
+                defaultRuleSet = ruleSets[i];
+                return;
+            }
+        }
+        defaultRuleSet = ruleSets[ruleSets.length - 1];
+    }
+
+    //-----------------------------------------------------------------------
+    // formatting implementation
+    //-----------------------------------------------------------------------
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a double pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    String format(double number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        return result.toString();
+    }
+
+    /**
+     * Bottleneck through which all the public format() methods
+     * that take a long pass. By the time we get here, we know
+     * which rule set we're using to do the formatting.
+     * @param number The number to format
+     * @param ruleSet The rule set to use to format the number
+     * @return The text that resulted from formatting the number
+     */
+    String format(long number, NFRuleSet ruleSet) {
+        // all API format() routines that take a double vector through
+        // here.  We have these two identical functions-- one taking a
+        // double and one taking a long-- the couple digits of precision
+        // that long has but double doesn't (both types are 8 bytes long,
+        // but double has to borrow some of the mantissa bits to hold
+        // the exponent).
+        // Create an empty string buffer where the result will
+        // be built, and pass it to the rule set (along with an insertion
+        // position of 0 and the number being formatted) to the rule set
+        // for formatting
+        StringBuffer result = new StringBuffer();
+        ruleSet.format(number, result, 0);
+        return result.toString();
+    }
+
+    /**
+     * Returns the named rule set.  Throws an IllegalArgumentException
+     * if this formatter doesn't have a rule set with that name.
+     * @param name The name of the desired rule set
+     * @return The rule set with that name
+     */
+    NFRuleSet findRuleSet(String name) throws IllegalArgumentException {
+        for (int i = 0; i < ruleSets.length; i++) {
+            if (ruleSets[i].getName().equals(name)) {
+                return ruleSets[i];
+            }
+        }
+        throw new IllegalArgumentException("No rule set named " + name);
+    }
+}
+
diff --git a/src/com/ibm/text/RuleBasedTransliterator.java b/src/com/ibm/text/RuleBasedTransliterator.java
new file mode 100755
index 0000000..23fb393
--- /dev/null
+++ b/src/com/ibm/text/RuleBasedTransliterator.java
@@ -0,0 +1,1064 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/RuleBasedTransliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:23 $ 
+ * $Revision: 1.17 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.util.Hashtable;
+import java.util.Vector;
+import java.text.ParsePosition;
+import com.ibm.util.Utility;
+
+/**
+ * A transliterator that reads a set of rules in order to determine how to perform
+ * translations. Rules are stored in resource bundles indexed by name. Rules are separated by
+ * semicolons (';'). To include a literal semicolon, prefix it with a backslash ('\;').
+ * Whitespace, as defined by <code>Character.isWhitespace()</code>, is ignored. If the first
+ * non-blank character on a line is '#', the entire line is ignored as a comment. </p>
+ * 
+ * <p>Each set of rules consists of two groups, one forward, and one reverse. This is a
+ * convention that is not enforced; rules for one direction may be omitted, with the result
+ * that translations in that direction will not modify the source text. </p>
+ * 
+ * <p><b>Rule syntax</b> </p>
+ * 
+ * <p>Rule statements take one of the following forms: 
+ * 
+ * <dl>
+ *   <dt><code>alefmadda=\u0622</code></dt>
+ *   <dd><strong>Variable definition.</strong> The name on the left is assigned the character or
+ *     expression on the right. Names may not contain any special characters (see list below).
+ *     Duplicate names (including duplicates of simple variables or category names) cause an
+ *     exception to be thrown. If the right hand side consists of one character, then the
+ *     variable stands for that character. In this example, after this statement, instances of
+ *     the left hand name surrounded by braces, &quot;<code>{alefmadda}</code>&quot;, will be
+ *     replaced by the Unicode character U+0622. If the right hand side is longer than one
+ *     character, then it is interpreted as a character category expression; see below for
+ *     details.</dd>
+ *   <dt>&nbsp;</dt>
+ *   <dt><code>softvowel=[eiyEIY]</code></dt>
+ *   <dd><strong>Category definition.</strong> The name on the left is assigned to stand for a
+ *     set of characters. The same rules for names of simple variables apply. After this
+ *     statement, the left hand variable will be interpreted as indicating a set of characters in
+ *     appropriate contexts. The pattern syntax defining sets of characters is defined by {@link
+ *     UnicodeSet}. Examples of valid patterns are:<table>
+ *       <tr valign="top">
+ *         <td nowrap><code>[abc]</code></td>
+ *         <td>The set containing the characters 'a', 'b', and 'c'.</td>
+ *       </tr>
+ *       <tr valign="top">
+ *         <td nowrap><code>[^abc]</code></td>
+ *         <td>The set of all characters <em>except</em> 'a', 'b', and 'c'.</td>
+ *       </tr>
+ *       <tr valign="top">
+ *         <td nowrap><code>[A-Z]</code></td>
+ *         <td>The set of all characters from 'A' to 'Z' in Unicode order.</td>
+ *       </tr>
+ *       <tr valign="top">
+ *         <td nowrap><code>[:Lu:]</code></td>
+ *         <td>The set of Unicode uppercase letters. See <a href="http://www.unicode.org">www.unicode.org</a>
+ *         for a complete list of categories and their two-letter codes.</td>
+ *       </tr>
+ *       <tr valign="top">
+ *         <td nowrap><code>[^a-z[:Lu:][:Ll:]]</code></td>
+ *         <td>The set of all characters <em>except</em> 'a' through 'z' and uppercase or lowercase
+ *         letters.</td>
+ *       </tr>
+ *     </table>
+ *     <p>See {@link UnicodeSet} for more documentation and examples. </p>
+ *   </dd>
+ *   <dt><code>ai&gt;{alefmadda}</code></dt>
+ *   <dd><strong>Forward translation rule.</strong> This rule states that the string on the left
+ *     will be changed to the string on the right when performing forward transliteration.</dd>
+ *   <dt>&nbsp;</dt>
+ *   <dt><code>ai&lt;{alefmadda}</code></dt>
+ *   <dd><strong>Reverse translation rule.</strong> This rule states that the string on the right
+ *     will be changed to the string on the left when performing reverse transliteration.</dd>
+ * </dl>
+ * 
+ * <dl>
+ *   <dt><code>ai&lt;&gt;{alefmadda}</code></dt>
+ *   <dd><strong>Bidirectional translation rule.</strong> This rule states that the string on the
+ *     right will be changed to the string on the left when performing forward transliteration,
+ *     and vice versa when performing reverse transliteration.</dd>
+ * </dl>
+ * 
+ * <p>Forward and reverse translation rules consist of a <em>match pattern</em> and an <em>output
+ * string</em>. The match pattern consists of literal characters, optionally preceded by
+ * context, and optionally followed by context. Context characters, like literal pattern
+ * characters, must be matched in the text being transliterated. However, unlike literal
+ * pattern characters, they are not replaced by the output text. For example, the pattern
+ * &quot;<code>(abc)def</code>&quot; indicates the characters &quot;<code>def</code>&quot;
+ * must be preceded by &quot;<code>abc</code>&quot; for a successful match. If there is a
+ * successful match, &quot;<code>def</code>&quot; will be replaced, but not &quot;<code>abc</code>&quot;.
+ * The initial '<code>(</code>' is optional, so &quot;<code>abc)def</code>&quot; is
+ * equivalent to &quot;<code>(abc)def</code>&quot;. Another example is &quot;<code>123(456)</code>&quot;
+ * (or &quot;<code>123(456</code>&quot;) in which the literal pattern &quot;<code>123</code>&quot;
+ * must be followed by &quot;<code>456</code>&quot;. </p>
+ * 
+ * <p>The output string of a forward or reverse rule consists of characters to replace the
+ * literal pattern characters. If the output string contains the character '<code>|</code>',
+ * this is taken to indicate the location of the <em>cursor</em> after replacement. The
+ * cursor is the point in the text at which the next replacement, if any, will be applied. </p>
+ * 
+ * <p>In addition to being defined in variables, <code>UnicodeSet</code> patterns may be
+ * embedded directly into rule strings. Thus, the following two rules are equivalent:</p>
+ * 
+ * <blockquote>
+ *   <p><code>vowel=[aeiou]; {vowel}&gt;*; # One way to do this<br>
+ *   [aeiou]&gt;*;
+ *   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
+ *   Another way</code></p>
+ * </blockquote>
+ * 
+ * <p><b>Example</b> </p>
+ * 
+ * <p>The following example rules illustrate many of the features of the rule language. </p>
+ * 
+ * <table cellpadding="4">
+ *   <tr valign="top">
+ *     <td>Rule 1.</td>
+ *     <td nowrap><code>(abc)def&gt;x|y</code></td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td>Rule 2.</td>
+ *     <td nowrap><code>xyz&gt;r</code></td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td>Rule 3.</td>
+ *     <td nowrap><code>yz&gt;q</code></td>
+ *   </tr>
+ * </table>
+ * 
+ * <p>Applying these rules to the string &quot;<code>adefabcdefz</code>&quot; yields the
+ * following results: </p>
+ * 
+ * <table cellpadding="4">
+ *   <tr valign="top">
+ *     <td nowrap><code>|adefabcdefz</code></td>
+ *     <td>Initial state, no rules match. Advance cursor.</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>a|defabcdefz</code></td>
+ *     <td>Still no match. Rule 1 does not match because the preceding context is not present.</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>ad|efabcdefz</code></td>
+ *     <td>Still no match. Keep advancing until there is a match...</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>ade|fabcdefz</code></td>
+ *     <td>...</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>adef|abcdefz</code></td>
+ *     <td>...</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>adefa|bcdefz</code></td>
+ *     <td>...</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>adefab|cdefz</code></td>
+ *     <td>...</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>adefabc|defz</code></td>
+ *     <td>Rule 1 matches; replace &quot;<code>def</code>&quot; with &quot;<code>xy</code>&quot;
+ *     and back up the cursor to before the '<code>y</code>'.</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>adefabcx|yz</code></td>
+ *     <td>Although &quot;<code>xyz</code>&quot; is present, rule 2 does not match because the
+ *     cursor is before the '<code>y</code>', not before the '<code>x</code>'. Rule 3 does match.
+ *     Replace &quot;<code>yz</code>&quot; with &quot;<code>q</code>&quot;.</td>
+ *   </tr>
+ *   <tr valign="top">
+ *     <td nowrap><code>adefabcxq|</code></td>
+ *     <td>The cursor is at the end; transliteration is complete.</td>
+ *   </tr>
+ * </table>
+ * 
+ * <p>The order of rules is significant. If multiple rules may match at some point, the first
+ * matching rule is applied. </p>
+ * 
+ * <p>Forward and reverse rules may have an empty output string. Otherwise, an empty left or
+ * right hand side of any statement is a syntax error. </p>
+ * 
+ * <p>Single quotes are used to quote the special characters <code>=&gt;&lt;{}[]()|</code>.
+ * To specify a single quote itself, inside or outside of quotes, use two single quotes in a
+ * row. For example, the rule &quot;<code>'&gt;'&gt;o''clock</code>&quot; changes the string
+ * &quot;<code>&gt;</code>&quot; to the string &quot;<code>o'clock</code>&quot;. </p>
+ * 
+ * <p><b>Notes</b> </p>
+ * 
+ * <p>While a RuleBasedTransliterator is being built, it checks that the rules are added in
+ * proper order. For example, if the rule &quot;a&gt;x&quot; is followed by the rule
+ * &quot;ab&gt;y&quot;, then the second rule will throw an exception. The reason is that the
+ * second rule can never be triggered, since the first rule always matches anything it
+ * matches. In other words, the first rule <em>masks</em> the second rule. </p>
+ * 
+ * <p>Copyright (c) IBM Corporation 1999-2000. All rights reserved.</p>
+ *
+ * @author Alan Liu
+ * @version $RCSfile: RuleBasedTransliterator.java,v $ $Revision: 1.17 $ $Date: 2000/03/10 04:07:23 $
+ *
+ * $Log: RuleBasedTransliterator.java,v $
+ * Revision 1.17  2000/03/10 04:07:23  johnf
+ * Copyright update
+ *
+ * Revision 1.16  2000/02/24 20:46:49  liu
+ * Add infinite loop check
+ *
+ * Revision 1.15  2000/02/10 07:36:25  johnf
+ * fixed imports for com.ibm.util.Utility
+ *
+ * Revision 1.14  2000/02/03 18:18:42  Alan
+ * Use array rather than hashtable for char-to-set map
+ *
+ * Revision 1.13  2000/01/27 18:59:19  Alan
+ * Use Position rather than int[] and move all subclass overrides to one method (handleTransliterate)
+ *
+ * Revision 1.12  2000/01/18 17:51:09  Alan
+ * Remove "keyboard" from method names. Make maximum context a field of Transliterator, and have subclasses set it.
+ *
+ * Revision 1.11  2000/01/18 02:30:49  Alan
+ * Add Jamo-Hangul, Hangul-Jamo, fix rules, add compound ID support
+ *
+ * Revision 1.10  2000/01/13 23:53:23  Alan
+ * Fix bugs found during ICU port
+ *
+ * Revision 1.9  2000/01/11 04:12:06  Alan
+ * Cleanup, embellish comments
+ *
+ * Revision 1.8  2000/01/11 02:25:03  Alan
+ * Rewrite UnicodeSet and RBT parsers for better performance and new syntax
+ *
+ * Revision 1.7  2000/01/06 01:36:36  Alan
+ * Allow string arrays in rule resource bundles
+ *
+ * Revision 1.6  2000/01/04 21:43:57  Alan
+ * Add rule indexing, and move masking check to TransliterationRuleSet.
+ *
+ * Revision 1.5  1999/12/22 01:40:54  Alan
+ * Consolidate rule pattern anteContext, key, and postContext into one string.
+ *
+ * Revision 1.4  1999/12/22 01:05:54  Alan
+ * Improve masking checking; turn it off by default, for better performance
+ */
+public class RuleBasedTransliterator extends Transliterator {
+
+    private Data data;
+
+    static final boolean DEBUG = false;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructs a new transliterator from the given rules.
+     * @param rules rules, separated by ';'
+     * @param direction either FORWARD or REVERSE.
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     */
+    public RuleBasedTransliterator(String ID, String rules, int direction,
+                                   UnicodeFilter filter) {
+        super(ID, filter);
+        if (direction != FORWARD && direction != REVERSE) {
+            throw new IllegalArgumentException("Invalid direction");
+        }
+        data = parse(rules, direction);
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }
+
+    /**
+     * Constructs a new transliterator from the given rules in the
+     * <code>FORWARD</code> direction.
+     * @param rules rules, separated by ';'
+     * @exception IllegalArgumentException if rules are malformed
+     * or direction is invalid.
+     */
+    public RuleBasedTransliterator(String ID, String rules) {
+        this(ID, rules, FORWARD, null);
+    }
+
+    RuleBasedTransliterator(String ID, Data data, UnicodeFilter filter) {
+        super(ID, filter);
+        this.data = data;
+        setMaximumContextLength(data.ruleSet.getMaximumContextLength());
+    }
+
+    static Data parse(String[] rules, int direction) {
+        return new Parser(rules, direction).getData();
+    }
+
+    static Data parse(String rules, int direction) {
+        return parse(new String[] { rules }, direction);
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position index, boolean incremental) {
+        /* We keep start and limit fixed the entire time,
+         * relative to the text -- limit may move numerically if text is
+         * inserted or removed.  The cursor moves from start to limit, with
+         * replacements happening under it.
+         *
+         * Example: rules 1. ab>x|y
+         *                2. yc>z
+         *
+         * |eabcd   start - no match, advance cursor
+         * e|abcd   match rule 1 - change text & adjust cursor
+         * ex|ycd   match rule 2 - change text & adjust cursor
+         * exz|d    no match, advance cursor
+         * exzd|    done
+         */
+        int start = index.start;
+        int limit = index.limit;
+        int cursor = index.cursor;
+
+        if (DEBUG) {
+            System.out.print("\"" +
+                Utility.escape(rsubstring(text, start, cursor)) + '|' +
+                Utility.escape(rsubstring(text, cursor, limit)) + "\"");
+        }
+
+        /* A rule like
+         *   a>b|a
+         * creates an infinite loop. To prevent that, we put an arbitrary
+         * limit on the number of iterations that we take, one that is
+         * high enough that any reasonable rules are ok, but low enough to
+         * prevent a server from hanging.  The limit is 16 times the
+         * number of characters n, unless n is so large that 16n exceeds a
+         * uint32_t.
+         */
+        int loopCount = 0;
+        int loopLimit = limit - cursor;
+        if (loopLimit >= 0x08000000) {
+            loopLimit = 0x7FFFFFFF;
+        } else {
+            loopLimit <<= 4;
+        }
+
+        boolean partial[] = new boolean[1];
+        partial[0] = false;
+
+        while (cursor < limit && loopCount <= loopLimit) {
+            TransliterationRule r = incremental ?
+                data.ruleSet.findIncrementalMatch(text, start, limit, cursor,
+                                                  data, partial, getFilter()) :
+                data.ruleSet.findMatch(text, start, limit,
+                                       cursor, data, getFilter());
+            /* If we match a rule then apply it by replacing the key
+             * with the rule output and repositioning the cursor
+             * appropriately.  If we get a partial match, then we
+             * can't do anything without more text; return with the
+             * cursor at the current position.  If we get null, then
+             * there is no match at this position, and we can advance
+             * the cursor.
+             */
+            if (r == null) {
+                if (partial[0]) {
+                    break;
+                } else {
+                    ++cursor;
+                }
+            } else {
+                text.replace(cursor, cursor + r.getKeyLength(), r.getOutput());
+                limit += r.getOutput().length() - r.getKeyLength();
+                cursor += r.getCursorPos();
+                ++loopCount;
+            }
+        }
+
+        if (DEBUG) {
+            System.out.println(" -> \"" +
+                Utility.escape(rsubstring(text, start, cursor)) + '|' + 
+                Utility.escape(rsubstring(text, cursor, cursor)) + '|' + 
+                Utility.escape(rsubstring(text, cursor, limit)) + "\"");
+        }
+
+        index.limit = limit;
+        index.cursor = cursor;
+    }
+
+
+    /**
+     * FOR DEBUGGING: Return a substring of a Replaceable.
+     */
+    private static String rsubstring(Replaceable r, int start, int limit) {
+        StringBuffer buf = new StringBuffer();
+        while (start < limit) {
+            buf.append(r.charAt(start++));
+        }
+        return buf.toString();
+    }
+
+
+
+
+
+    static class Data {
+        public Data() {
+            variableNames = new Hashtable();
+            ruleSet = new TransliterationRuleSet();
+        }
+
+        /**
+         * Rule table.  May be empty.
+         */
+        public TransliterationRuleSet ruleSet;
+
+        /**
+         * Map variable name (String) to variable (Character).  A variable
+         * name may correspond to a single literal character, in which
+         * case the character is stored in this hash.  It may also
+         * correspond to a UnicodeSet, in which case a character is
+         * again stored in this hash, but the character is a stand-in: it
+         * is an index for a secondary lookup in data.setVariables.  The stand-in
+         * also represents the UnicodeSet in the stored rules.
+         */
+        public Hashtable variableNames;
+
+        /**
+         * Map category variable (Character) to set (UnicodeSet).
+         * Variables that correspond to a set of characters are mapped
+         * from variable name to a stand-in character in data.variableNames.
+         * The stand-in then serves as a key in this hash to lookup the
+         * actual UnicodeSet object.  In addition, the stand-in is
+         * stored in the rule text to represent the set of characters.
+         * setVariables[i] represents character (setVariablesBase + i).
+         */
+        public UnicodeSet[] setVariables;
+
+        /**
+         * The character represented by setVariables[0].
+         */
+        public char setVariablesBase;
+
+        /**
+         * Return the UnicodeSet associated with the given character, or
+         * null if none.
+         */
+        public UnicodeSet lookup(char c) {
+            int i = c - setVariablesBase;
+            return (i >= 0 && i < setVariables.length)
+                ? setVariables[i] : null;
+        }
+    }
+
+
+
+    private static class Parser {
+        /**
+         * Current rule being parsed.
+         */
+        private String rules;
+
+        private int direction;
+
+        private Data data;
+
+        /**
+         * This class implements the SymbolTable interface.  It is used
+         * during parsing to give UnicodeSet access to variables that
+         * have been defined so far.  Note that it uses setVariablesVector,
+         * _not_ data.setVariables.
+         */
+        private class ParseData implements SymbolTable {
+            
+            /**
+             * Implement SymbolTable API.  Lookup a variable, returning
+             * either a Character, a UnicodeSet, or null.
+             */
+            public Object lookup(String name) {
+                Character ch = (Character) data.variableNames.get(name);
+                if (ch != null) {
+                    int i = ch.charValue() - data.setVariablesBase;
+                    if (i >= 0 && i < setVariablesVector.size()) {
+                        return setVariablesVector.elementAt(i);
+                    }
+                }
+                return ch;
+            }
+        }
+
+        /**
+         * Temporary symbol table used during parsing.
+         */
+        private ParseData parseData;
+
+        /**
+         * Temporary vector of set variables.  When parsing is complete, this
+         * is copied into the array data.setVariables.  As with data.setVariables,
+         * element 0 corresponds to character data.setVariablesBase.
+         */
+        private Vector setVariablesVector;
+
+        /**
+         * The next available stand-in for variables.  This starts at some point in
+         * the private use area (discovered dynamically) and increments up toward
+         * <code>variableLimit</code>.  At any point during parsing, available
+         * variables are <code>variableNext..variableLimit-1</code>.
+         */
+        private char variableNext;
+
+        /**
+         * The last available stand-in for variables.  This is discovered
+         * dynamically.  At any point during parsing, available variables are
+         * <code>variableNext..variableLimit-1</code>.
+         */
+        private char variableLimit;
+
+        // Operators
+        private static final char VARIABLE_DEF_OP   = '=';
+        private static final char FORWARD_RULE_OP   = '>';
+        private static final char REVERSE_RULE_OP   = '<';
+        private static final char FWDREV_RULE_OP    = '~'; // internal rep of <> op
+
+        private static final String OPERATORS = "=><";
+
+        // Other special characters
+        private static final char QUOTE               = '\'';
+        private static final char ESCAPE              = '\\';
+        private static final char END_OF_RULE         = ';';
+        private static final char RULE_COMMENT_CHAR   = '#';
+
+        private static final char VARIABLE_REF_OPEN   = '{';
+        private static final char VARIABLE_REF_CLOSE  = '}';
+        private static final char CONTEXT_OPEN        = '(';
+        private static final char CONTEXT_CLOSE       = ')';
+        private static final char SET_OPEN            = '[';
+        private static final char SET_CLOSE           = ']';
+        private static final char CURSOR_POS          = '|';
+
+        /**
+         * @param rules list of rules, separated by semicolon characters
+         * @exception IllegalArgumentException if there is a syntax error in the
+         * rules
+         */
+        public Parser(String[] ruleArray, int direction) {
+            this.direction = direction;
+            data = new Data();
+            parseRules(ruleArray);
+        }
+
+        public Data getData() {
+            return data;
+        }
+
+        /**
+         * Parse an array of zero or more rules.  The strings in the array are
+         * treated as if they were concatenated together, with rule terminators
+         * inserted between array elements if not present already.
+         *
+         * Any previous rules are discarded.  Typically this method is called exactly
+         * once, during construction.
+         * @exception IllegalArgumentException if there is a syntax error in the
+         * rules
+         */
+        private void parseRules(String[] ruleArray) {
+            determineVariableRange(ruleArray);
+            setVariablesVector = new Vector();
+            parseData = new ParseData();
+
+            StringBuffer errors = null;
+
+            try {
+                for (int i=0; i<ruleArray.length; ++i) {
+                    String rule = ruleArray[i];
+                    int pos = 0;
+                    int limit = rule.length();
+                    while (pos < limit) {
+                        char c = rule.charAt(pos++);
+                        if (Character.isWhitespace(c)) {
+                            // Ignore leading whitespace.  Note that this is not
+                            // Unicode spaces, but Java spaces -- a subset,
+                            // representing whitespace likely to be seen in code.
+                            continue;
+                        }
+                        // Skip lines starting with the comment character
+                        if (c == RULE_COMMENT_CHAR) {
+                            pos = rule.indexOf("\n", pos) + 1;
+                            if (pos == 0) {
+                                break; // No "\n" found; rest of rule is a commnet
+                            }
+                            continue; // Either fall out or restart with next line
+                        }
+                        // We've found the start of a rule.  c is its first
+                        // character, and pos points past c.  Lexically parse the
+                        // rule into component pieces.
+                        pos = parseRule(rule, --pos, limit);                    
+                    }
+                }
+            } catch (IllegalArgumentException e) {
+                errors = new StringBuffer(e.getMessage());
+            }
+
+            // Convert the set vector to an array
+            data.setVariables = new UnicodeSet[setVariablesVector.size()];
+            setVariablesVector.copyInto(data.setVariables);
+            setVariablesVector = null;
+            
+            // Index the rules
+            try {
+                data.ruleSet.freeze(data);
+            } catch (IllegalArgumentException e) {
+                if (errors == null) {
+                    errors = new StringBuffer(e.getMessage());
+                } else {
+                    errors.append("\n").append(e.getMessage());
+                }
+            }
+
+            if (errors != null) {
+                throw new IllegalArgumentException(errors.toString());
+            }
+        }
+
+        /**
+         * MAIN PARSER.  Parse the next rule in the given rule string, starting
+         * at pos.  Return the index after the last character parsed.  Do not
+         * parse characters at or after limit.
+         *
+         * Important:  The character at pos must be a non-whitespace character
+         * that is not the comment character.
+         *
+         * This method handles quoting, escaping, and whitespace removal.  It
+         * parses the end-of-rule character.  It recognizes context and cursor
+         * indicators.  Once it does a lexical breakdown of the rule at pos, it
+         * creates a rule object and adds it to our rule list.
+         */
+        private int parseRule(String rule, int pos, int limit) {
+            // Locate the left side, operator, and right side
+            int start = pos;
+            char operator = 0;
+
+            StringBuffer buf = new StringBuffer();
+            int cursor = -1; // position of cursor in buf
+            int ante = -1;   // position of ante context marker ')' in buf
+            int post = -1;   // position of post context marker '(' in buf
+            int postClose = -1; // position of post context close ')' in buf
+
+            // Assigned to buf and its adjuncts after the LHS has been
+            // parsed.  Thereafter, buf etc. refer to the RHS.
+            String left = null;
+            int leftCursor = -1, leftAnte = -1, leftPost = -1, leftPostClose = -1;
+
+        main:
+            while (pos < limit) {
+                char c = rule.charAt(pos++);
+                if (Character.isWhitespace(c)) {
+                    // Ignore whitespace.  Note that this is not Unicode
+                    // spaces, but Java spaces -- a subset, representing
+                    // whitespace likely to be seen in code.
+                    continue;
+                }
+                // Handle escapes
+                if (c == ESCAPE) {
+                    if (pos == limit) {
+                        syntaxError("Trailing backslash", rule, start);
+                    }
+                    buf.append(rule.charAt(pos++));
+                    continue;
+                }
+                // Handle quoted matter
+                if (c == QUOTE) {
+                    int iq = rule.indexOf(QUOTE, pos);
+                    if (iq == pos) {
+                        buf.append(c); // Parse [''] outside quotes as [']
+                        ++pos;
+                    } else {
+                        /* This loop picks up a segment of quoted text of the
+                         * form 'aaaa' each time through.  If this segment
+                         * hasn't really ended ('aaaa''bbbb') then it keeps
+                         * looping, each time adding on a new segment.  When it
+                         * reaches the final quote it breaks.
+                         */
+                        for (;;) {
+                            if (iq < 0) {
+                                syntaxError("Unterminated quote", rule, start);
+                            }
+                            buf.append(rule.substring(pos, iq));
+                            pos = iq+1;
+                            if (pos < limit && rule.charAt(pos) == QUOTE) {
+                                // Parse [''] inside quotes as [']
+                                iq = rule.indexOf(QUOTE, pos+1);
+                                // Continue looping
+                            } else {
+                                break;
+                            }
+                        }
+                    }
+                    continue;
+                }
+                if (OPERATORS.indexOf(c) >= 0) {
+                    if (operator != 0) {
+                        syntaxError("Unquoted " + c, rule, start);
+                    }
+                    // Found an operator char.  Check for forward-reverse operator.
+                    if (c == REVERSE_RULE_OP &&
+                        (pos < limit && rule.charAt(pos) == FORWARD_RULE_OP)) {
+                        ++pos;
+                        operator = FWDREV_RULE_OP;
+                    } else {
+                        operator = c;
+                    }
+                    left = buf.toString(); // lhs
+                    leftCursor = cursor;
+                    leftAnte = ante;
+                    leftPost = post;
+                    leftPostClose = postClose;
+
+                    buf.setLength(0);
+                    cursor = ante = post = postClose = -1;
+                    continue;
+                }
+                switch (c) {
+                case END_OF_RULE:
+                    break main;
+                case VARIABLE_REF_OPEN:
+                    {
+                        int j = rule.indexOf(VARIABLE_REF_CLOSE, pos);
+                        if (pos == j || j < 0) { // empty or unterminated
+                            syntaxError("Malformed variable reference", rule, start);
+                        }
+                        String name = rule.substring(pos, j);
+                        pos = j+1;
+                        buf.append(getVariableDef(name));
+                    }
+                    break;
+                case CONTEXT_OPEN:
+                    if (post >= 0) {
+                        syntaxError("Multiple post contexts", rule, start);
+                    }
+                    // Ignore CONTEXT_OPEN if buffer length is zero -- that means
+                    // this is the optional opening delimiter for the ante context.
+                    if (buf.length() > 0) {
+                        post = buf.length();
+                    }
+                    break;
+                case CONTEXT_CLOSE:
+                    if (postClose >= 0) {
+                        syntaxError("Unexpected " + c, rule, start);
+                    }
+                    if (post >= 0) {
+                        // This is probably the optional closing delimiter
+                        // for the post context; save the pos and check later.
+                        postClose = buf.length();
+                    } else if (ante >= 0) {
+                        syntaxError("Multiple ante contexts", rule, start);
+                    } else {
+                        ante = buf.length();
+                    }
+                    break;
+                case SET_OPEN:
+                    ParsePosition pp = new ParsePosition(pos-1); // Backup to opening '['
+                    buf.append(registerSet(new UnicodeSet(rule, pp, parseData)));
+                    pos = pp.getIndex();
+                    break;
+                case VARIABLE_REF_CLOSE:
+                case SET_CLOSE:
+                    syntaxError("Unquoted " + c, rule, start);
+                case CURSOR_POS:
+                    if (cursor >= 0) {
+                        syntaxError("Multiple cursors", rule, start);
+                    }
+                    cursor = buf.length();
+                    break;
+                default:
+                    buf.append(c);
+                    break;
+                }
+            }
+            if (operator == 0) {
+                syntaxError("No operator", rule, start);
+            }
+
+            // Check context close parameters
+            if ((leftPostClose >= 0 && leftPostClose != left.length()) ||
+                (postClose >= 0 && postClose != buf.length())) {
+                syntaxError("Extra text after ]", rule, start);
+            }
+
+            // Context is only allowed on the input side; that is, the left side
+            // for forward rules.  Cursors are only allowed on the output side;
+            // that is, the right side for forward rules.  Bidirectional rules
+            // ignore elements that do not apply.
+
+            switch (operator) {
+            case VARIABLE_DEF_OP:
+                // LHS is the name.  RHS is a single character, either a literal
+                // or a set (already parsed).  If RHS is longer than one
+                // character, it is either a multi-character string, or multiple
+                // sets, or a mixture of chars and sets -- syntax error.
+                if (buf.length() != 1) {
+                    syntaxError("Malformed RHS", rule, start);
+                }
+                if (data.variableNames.get(left) != null) {
+                    syntaxError("Duplicate definition of {" +
+                                left + "}", rule, start);
+                }
+                data.variableNames.put(left, new Character(buf.charAt(0)));
+                break;
+
+            case FORWARD_RULE_OP:
+                if (direction == FORWARD) {
+                    if (ante >= 0 || post >= 0 || leftCursor >= 0) {
+                        syntaxError("Malformed rule", rule, start);
+                    }
+                    data.ruleSet.addRule(new TransliterationRule(
+                                             left, leftAnte, leftPost,
+                                             buf.toString(), cursor));
+                } // otherwise ignore the rule; it's not the direction we want
+                break;
+
+            case REVERSE_RULE_OP:
+                if (direction == REVERSE) {
+                    if (leftAnte >= 0 || leftPost >= 0 || cursor >= 0) {
+                        syntaxError("Malformed rule", rule, start);
+                    }
+                    data.ruleSet.addRule(new TransliterationRule(
+                                             buf.toString(), ante, post,
+                                             left, leftCursor));
+                } // otherwise ignore the rule; it's not the direction we want
+                break;
+
+            case FWDREV_RULE_OP:
+                if (direction == FORWARD) {
+                    // The output side is the right; trim off any context
+                    String output = buf.toString().substring(ante < 0 ? 0 : ante,
+                                                             post < 0 ? buf.length() : post);
+                    data.ruleSet.addRule(new TransliterationRule(
+                                             left, leftAnte, leftPost,
+                                             output, cursor));
+                } else {
+                    // The output side is the left; trim off any context
+                    String output = left.substring(leftAnte < 0 ? 0 : leftAnte,
+                                                   leftPost < 0 ? left.length() : leftPost);
+                    data.ruleSet.addRule(new TransliterationRule(
+                                             buf.toString(), ante, post,
+                                             output, leftCursor));
+                }
+                break;
+            }
+
+            return pos;
+        }
+
+        /**
+         * Throw an exception indicating a syntax error.  Search the rule string
+         * for the probable end of the rule.  Of course, if the error is that
+         * the end of rule marker is missing, then the rule end will not be found.
+         * In any case the rule start will be correctly reported.
+         * @param msg error description
+         * @param rule pattern string
+         * @param start position of first character of current rule
+         */
+        private static final void syntaxError(String msg, String rule, int start) {
+            int end = quotedIndexOf(rule, start, rule.length(), ";");
+            if (end < 0) {
+                end = rule.length();
+            }
+            throw new IllegalArgumentException(msg + " in " +
+                                               rule.substring(start, end));
+        }
+        
+        /**
+         * Allocate a private-use substitution character for the given set,
+         * register it in the setVariables hash, and return the substitution
+         * character.
+         */
+        private final char registerSet(UnicodeSet set) {
+            if (variableNext >= variableLimit) {
+                throw new RuntimeException("Private use variables exhausted");
+            }
+            setVariablesVector.addElement(set);
+            return variableNext++;
+        }
+
+        /**
+         * Returns the single character value of the given variable name.  Defined
+         * names are recognized.
+         * @exception IllegalArgumentException if the name is unknown.
+         */
+        private char getVariableDef(String name) {
+            Character ch = (Character) data.variableNames.get(name);
+            if (ch == null) {
+                throw new IllegalArgumentException("Undefined variable: "
+                                                   + name);
+            }
+            return ch.charValue();
+        }
+
+        /**
+         * Determines what part of the private use region of Unicode we can use for
+         * variable stand-ins.  The correct way to do this is as follows: Parse each
+         * rule, and for forward and reverse rules, take the FROM expression, and
+         * make a hash of all characters used.  The TO expression should be ignored.
+         * When done, everything not in the hash is available for use.  In practice,
+         * this method may employ some other algorithm for improved speed.
+         */
+        private final void determineVariableRange(String[] ruleArray) {
+            // As an initial implementation, we just run through all the
+            // characters, ignoring any quoting.  This works since the quote
+            // mechanisms are outside the private use area.
+
+            Range r = new Range('\uE000', 0x1900); // Private use area
+            r = r.largestUnusedSubrange(ruleArray);
+            
+            if (r == null) {
+                throw new RuntimeException(
+                    "No private use characters available for variables");
+            }
+
+            data.setVariablesBase = variableNext = r.start;
+            variableLimit = (char) (r.start + r.length);
+
+            if (variableNext >= variableLimit) {
+                throw new RuntimeException(
+                        "Too few private use characters available for variables");
+            }
+        }
+
+        /**
+         * Returns the index of the first character in a set, ignoring quoted text.
+         * For example, in the string "abc'hide'h", the 'h' in "hide" will not be
+         * found by a search for "h".  Unlike String.indexOf(), this method searches
+         * not for a single character, but for any character of the string
+         * <code>setOfChars</code>.
+         * @param text text to be searched
+         * @param start the beginning index, inclusive; <code>0 <= start
+         * <= limit</code>.
+         * @param limit the ending index, exclusive; <code>start <= limit
+         * <= text.length()</code>.
+         * @param setOfChars string with one or more distinct characters
+         * @return Offset of the first character in <code>setOfChars</code>
+         * found, or -1 if not found.
+         * @see #indexOf
+         */
+        private static int quotedIndexOf(String text, int start, int limit,
+                                         String setOfChars) {
+            for (int i=start; i<limit; ++i) {
+                char c = text.charAt(i);
+                if (c == ESCAPE) {
+                    ++i;
+                } else if (c == QUOTE) {
+                    while (++i < limit
+                           && text.charAt(i) != QUOTE) {}
+                } else if (setOfChars.indexOf(c) >= 0) {
+                    return i;
+                }
+            }
+            return -1;
+        }
+
+
+
+        /**
+         * A range of Unicode characters.  Support the operations of testing for
+         * inclusion (does this range contain this character?) and splitting.
+         * Splitting involves breaking a range into two smaller ranges around a
+         * character inside the original range.  The split character is not included
+         * in either range.  If the split character is at either extreme end of the
+         * range, one of the split products is an empty range.
+         *
+         * This class is used internally to determine the largest available private
+         * use character range for variable stand-ins.
+         */
+        private static class Range implements Cloneable {
+            char start;
+            int length;
+
+            Range(char start, int length) {
+                this.start = start;
+                this.length = length;
+            }
+
+            public Object clone() {
+                return new Range(start, length);
+            }
+
+            boolean contains(char c) {
+                return c >= start && (c - start) < length;
+            }
+
+            /**
+             * Assume that contains(c) is true.  Split this range into two new
+             * ranges around the character c.  Make this range one of the new ranges
+             * (modify it in place) and return the other new range.  The character
+             * itself is not included in either range.  If the split results in an
+             * empty range (that is, if c == start or c == start + length - 1) then
+             * return null.
+             */
+            Range split(char c) {
+                if (c == start) {
+                    ++start;
+                    --length;
+                    return null;
+                } else if (c - start == length - 1) {
+                    --length;
+                    return null;
+                } else {
+                    ++c;
+                    Range r = new Range(c, start + length - c);
+                    length = --c - start;
+                    return r;
+                }
+            }
+
+            /**
+             * Finds the largest unused subrange by the given string.  A
+             * subrange is unused by a string if the string contains no
+             * characters in that range.  If the given string contains no
+             * characters in this range, then this range itself is
+             * returned.
+             */
+            Range largestUnusedSubrange(String[] strings) {
+                Vector v = new Vector(1);
+                v.addElement(clone());
+
+                for (int k=0; k<strings.length; ++k) {
+                    String str = strings[k];
+                    int n = str.length();
+                    for (int i=0; i<n; ++i) {
+                        char c = str.charAt(i);
+                        if (contains(c)) {
+                            for (int j=0; j<v.size(); ++j) {
+                                Range r = (Range) v.elementAt(j);
+                                if (r.contains(c)) {
+                                    r = r.split(c);
+                                    if (r != null) {
+                                        v.addElement(r);
+                                    }
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+
+                Range bestRange = null;
+                for (int j=0; j<v.size(); ++j) {
+                    Range r = (Range) v.elementAt(j);
+                    if (bestRange == null || r.length > bestRange.length) {
+                        bestRange = r;
+                    }
+                }
+
+                return bestRange;
+            }
+        }
+    }
+}
diff --git a/src/com/ibm/text/SCSU.java b/src/com/ibm/text/SCSU.java
new file mode 100755
index 0000000..ca3a77f
--- /dev/null
+++ b/src/com/ibm/text/SCSU.java
@@ -0,0 +1,190 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/SCSU.java,v $ 
+ * $Date: 2000/03/10 04:07:23 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+/**
+ * An interface defining  constants for the Standard Compression Scheme
+ * for Unicode (SCSU) as outlined in <A
+ * HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+ * Report #6</A>.
+ *
+ * @author Stephen F. Booth
+ * @version 1.1 05 Aug 99
+ * @version 1.0 26 Jul 99
+ */
+interface SCSU
+{
+    //==========================
+    // Generic window shift
+    //==========================
+    final static int COMPRESSIONOFFSET           = 0x80;
+
+    //==========================
+    // Number of windows
+    //==========================
+    final static int NUMWINDOWS                  = 8;
+    final static int NUMSTATICWINDOWS            = 8;
+
+    //==========================
+    // Indicates a window index is invalid
+    //==========================
+    final static int INVALIDWINDOW               = -1;
+
+    //==========================
+    // Indicates a character doesn't exist in input (past end of buffer)
+    //==========================
+    final static int INVALIDCHAR                 = -1;
+
+    //==========================
+    // Compression modes
+    //==========================
+    final static int SINGLEBYTEMODE              = 0;
+    final static int UNICODEMODE                 = 1;
+
+    //==========================
+    // Maximum value for a window's index
+    //==========================
+    final static int MAXINDEX                    = 0xFF;
+
+    //==========================
+    // Reserved index value (characters belongs to first block)
+    //==========================
+    final static int RESERVEDINDEX               = 0x00;
+
+    //==========================
+    // Indices for scripts which cross a half-block boundary
+    //==========================
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    //==========================
+    // Single-byte mode tags
+    //==========================
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For window offset mapping */
+    final static int [] sOffsetTable = { 
+        // table generated by CompressionTableGenerator
+        0x0, 0x80, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380, 0x400,
+	0x480, 0x500, 0x580, 0x600, 0x680, 0x700, 0x780, 0x800, 0x880,
+	0x900, 0x980, 0xa00, 0xa80, 0xb00, 0xb80, 0xc00, 0xc80, 0xd00,
+	0xd80, 0xe00, 0xe80, 0xf00, 0xf80, 0x1000, 0x1080, 0x1100,
+	0x1180, 0x1200, 0x1280, 0x1300, 0x1380, 0x1400, 0x1480,
+	0x1500, 0x1580, 0x1600, 0x1680, 0x1700, 0x1780, 0x1800,
+	0x1880, 0x1900, 0x1980, 0x1a00, 0x1a80, 0x1b00, 0x1b80,
+	0x1c00, 0x1c80, 0x1d00, 0x1d80, 0x1e00, 0x1e80, 0x1f00,
+	0x1f80, 0x2000, 0x2080, 0x2100, 0x2180, 0x2200, 0x2280,
+	0x2300, 0x2380, 0x2400, 0x2480, 0x2500, 0x2580, 0x2600,
+	0x2680, 0x2700, 0x2780, 0x2800, 0x2880, 0x2900, 0x2980,
+	0x2a00, 0x2a80, 0x2b00, 0x2b80, 0x2c00, 0x2c80, 0x2d00,
+	0x2d80, 0x2e00, 0x2e80, 0x2f00, 0x2f80, 0x3000, 0x3080,
+	0x3100, 0x3180, 0x3200, 0x3280, 0x3300, 0x3380, 0xe000,
+	0xe080, 0xe100, 0xe180, 0xe200, 0xe280, 0xe300, 0xe380,
+	0xe400, 0xe480, 0xe500, 0xe580, 0xe600, 0xe680, 0xe700,
+	0xe780, 0xe800, 0xe880, 0xe900, 0xe980, 0xea00, 0xea80,
+	0xeb00, 0xeb80, 0xec00, 0xec80, 0xed00, 0xed80, 0xee00,
+	0xee80, 0xef00, 0xef80, 0xf000, 0xf080, 0xf100, 0xf180,
+	0xf200, 0xf280, 0xf300, 0xf380, 0xf400, 0xf480, 0xf500,
+	0xf580, 0xf600, 0xf680, 0xf700, 0xf780, 0xf800, 0xf880,
+	0xf900, 0xf980, 0xfa00, 0xfa80, 0xfb00, 0xfb80, 0xfc00,
+	0xfc80, 0xfd00, 0xfd80, 0xfe00, 0xfe80, 0xff00, 0xff80, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+	0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x250, 0x370,
+	0x530, 0x3040, 0x30a0, 0xff60  
+    };
+
+    /** Static compression window offsets */
+    final static int [] sOffsets = {
+        0x0000,  // for quoting single-byte mode tags
+        0x0080,  // Latin-1 Supplement
+        0x0100,  // Latin Extended-A
+        0x0300,  // Combining Diacritical Marks
+        0x2000,  // General Punctuation
+        0x2080,  // Curency Symbols
+        0x2100,  // Letterlike Symbols and Number Forms
+        0x3000   // CJK Symbols and Punctuation
+    };
+
+};
+
diff --git a/src/com/ibm/text/SearchIterator.java b/src/com/ibm/text/SearchIterator.java
new file mode 100755
index 0000000..6b8a344
--- /dev/null
+++ b/src/com/ibm/text/SearchIterator.java
@@ -0,0 +1,438 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/SearchIterator.java,v $ 
+ * $Date: 2000/03/10 04:07:23 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+import java.text.CharacterIterator;
+import java.text.BreakIterator;
+
+/**
+ * <code>SearchIterator</code> is an abstract base class that provides methods
+ * to search for a pattern within a text string.  Instances of
+ * <code>SearchIterator</code> maintain a current position and scan over
+ * the target text, returning the indices the pattern is matched
+ * and the length of each match.
+ * <p>
+ * <code>SearchIterator</code> is an abstract base class that defines a
+ * protocol for text searching.  Subclasses provide concrete implementations of
+ * various search algorithms.  For example, {@link StringSearch}
+ * implements language-sensitive pattern matching based on the comparison rules
+ * defined in a {@link java.text.RuleBasedCollator RuleBasedCollator} object.
+ * <p>
+ * Internally, <code>SearchIterator</code> scans text using a
+ * {@link CharacterIterator}, and is thus able to scan text held
+ * by any object implementing that protocol. A <code>StringCharacterIterator</code>
+ * is used to scan <code>String</code> objects passed to <code>setText</code>.
+ * <p>
+ * <code>SearchIterator</code> provides an API that is similar to that of
+ * other text iteration classes such as <code>BreakIterator</code>.  Using this
+ * class, it is easy to scan through text looking for all occurances of a
+ * given pattern.  The following example uses a <code>StringSearch</code> object to
+ * find all instances of "fox" in the target string.  Any other subclass of
+ * <code>SearchIterator</code> can be used in an identical manner.
+ * <pre><code>
+ * String target = "The quick brown fox jumped over the lazy fox";
+ * String pattern = "fox";
+ *
+ * SearchIterator iter = new StringSearch(pattern, target);
+ *
+ * for (int pos = iter.first(); pos != SearchIterator.DONE; pos = iter.next()) {
+ *     System.out.println("Found match at " + pos +
+ *                        ", length is " + iter.getMatchLength());
+ * }
+ * </code></pre>
+ *
+ * @see StringSearch
+ */
+public abstract class SearchIterator {
+    /**
+     * DONE is returned by previous() and next() after all valid
+     * matches have been returned, and by first() and last() if
+     * there are no matches at all.
+     */
+    public static final int DONE = -1;
+    
+    /**
+     * Private value indicating that the iterator is pointing
+     * before the beginning of the target text.
+     */
+    private static final int BEFORE = -2;
+
+    /**
+     * Return the first index at which the target text matches the search
+     * pattern.  The iterator is adjusted so that its current index
+     * (as returned by {@link #getIndex}) is the match posisition if one was found
+     * and <code>DONE</code> if one was not.
+     *
+     * @return The character index of the first match, or <code>DONE</code> if there
+     *          are no matches.
+     */
+    final public int first() {
+        setIndex(BEFORE);
+        return next();
+    }
+
+    /**
+     * Return the first index greater than <tt>pos</tt> at which the target
+     * text matches the search pattern.   The iterator is adjusted so that its current index
+     * (as returned by {@link #getIndex}) is the match posisition if one was found
+     * and <code>DONE</code> if one was not.
+     *
+     * @return The character index of the first match following <code>pos</code>,
+     *          or <tt>DONE</tt> if there are no matches.
+     */
+    final public int following(int pos) {
+        setIndex(pos);
+        return next();
+    }
+    
+    /**
+     * Return the last index in the target text at which it matches
+     * the search pattern and adjusts the iteration to point to that position.
+     *
+     * @return The index of the first match, or <tt>DONE</tt> if there
+     *          are no matches.
+     */
+    final public int last() {
+        setIndex(DONE);
+        return previous();
+    }
+
+    /**
+     * Return the first index less than <code>pos</code> at which the target
+     * text matches the search pattern.   The iterator is adjusted so that its current index
+     * (as returned by {@link #getIndex}) is the match posisition if one was found
+     * and <tt>DONE</tt> if one was not.
+     *
+     * @return The character index of the first match preceding <code>pos</code>,
+     *          or <code>DONE</code> if there are no matches.
+     */
+    final public int preceding(int pos) {
+        setIndex(pos);
+        return previous();
+    }
+    
+    /**
+     * Return the index of the next point at which the text matches the
+     * search pattern, starting from the current position
+     * <p>
+     * @return The index of the next match after the current position,
+     *          or <code>DONE</code> if there are no more matches.
+     *
+     * @see #first
+     */
+    public int next() {
+        if (index == BEFORE){
+            // Starting at the beginning of the text
+            index = target.getBeginIndex();
+        } else if (length > 0) {
+            // Finding the next match after a previous one
+            index += overlap ? 1 : length;
+        }
+        index -= 1;
+        
+        do {
+            length = 0;
+            index = handleNext(index + 1);
+        } while (index != DONE && !isBreakUnit(index, index+length));
+        
+        return index;
+    }
+
+    /**
+     * Return the index of the previous point at which the text matches
+     * the search pattern, starting at the current position
+     *
+     * @return The index of the previous match before the current position,
+     *          or <code>DONE</code> if there are no more matches.
+     */
+    public int previous() {
+        if (index == DONE) {
+            index = target.getEndIndex();
+        } else if (length > 0) {
+            // Finding the previous match before a following one
+            index = overlap ? index + length - 1 : index;
+        }
+        index += 1;
+        
+        do {
+            length = 0;
+            index = handlePrev(index - 1);
+        } while (index != DONE && !isBreakUnit(index, index+length));
+
+        if (index == DONE) {
+            index = BEFORE;
+        }
+        return getIndex();
+    }
+
+
+
+    /**
+     * Return the current index in the text being searched.
+     * If the iteration has gone past the end of the text
+     * (or past the beginning for a backwards search), 
+     * {@link #DONE} is returned.
+     */
+    public int getIndex() {
+        return index == BEFORE ? DONE : index;
+    }
+
+    /**
+     * Determines whether overlapping matches are returned.  If this
+     * property is <code>true</code>, matches that begin within the
+     * boundry of the previous match are considered valid and will
+     * be returned.  For example, when searching for "abab" in the
+     * target text "ababab", both offsets 0 and 2 will be returned
+     * as valid matches if this property is <code>true</code>.
+     * <p>
+     * The default setting of this property is <tt>true</tt>
+     */
+    public void setOverlapping(boolean allowOverlap) {
+        overlap = allowOverlap;
+    }
+    
+    /**
+     * Determines whether overlapping matches are returned.
+     *
+     * @see #setOverlapping
+     */
+    public boolean isOverlapping() {
+        return overlap;
+    }
+    
+    /**
+     * Returns the length of text in the target which matches the search
+     * pattern.  This call returns a valid result only after a successful
+     * call to {@link #first}, {@link #next}, {@link #previous}, or {@link #last}.
+     * Just after construction, or after a searching method returns
+     * <tt>DONE</tt>, this method will return 0.
+     *
+     * @return The length of the match in the target text, or 0 if there
+     *          is no match currently.
+     */
+    public int getMatchLength() {
+        return length;
+    }
+
+    /**
+     * Set the BreakIterator that will be used to restrict the points
+     * at which matches are detected.
+     *
+     * @param breaker   A {@link java.text.BreakIterator BreakIterator}
+     *                  that will be used to restrict the points
+     *                  at which matches are detected.  If a match is found, but the match's start
+     *                  or end index is not a boundary as determined by
+     *                  the <tt>BreakIterator</tt>, the match will be rejected and
+     *                  another will be searched for.
+     *
+     *                  If this parameter is <tt>null</tt>, no break
+     *                  detection is attempted.
+     *
+     * @see #getBreakIterator
+     */
+    public void setBreakIterator(BreakIterator iterator) {
+        breaker = iterator;
+        if (breaker != null) {
+            breaker.setText(target);
+        }
+    }
+    
+    /**
+     * Returns the BreakIterator that is used to restrict the points
+     * at which matches are detected.  This will be the same object
+     * that was passed to the constructor or to <code>setBreakIterator</code>.
+     * Note that <tt>null</tt> is a legal value; it means that break
+     * detection should not be attempted.
+     *
+     * @see #setBreakIterator
+     */
+    public BreakIterator getBreakIterator() {
+        return breaker;
+    }
+    
+    /**
+     * Set the target text which should be searched and resets the
+     * iterator's position to point before the start of the target text.
+     * This method is useful if you want to re-use an iterator to
+     * search for the same pattern within a different body of text.
+     *
+     * @see #getTarget
+     */
+    public void setTarget(CharacterIterator iterator) {
+        target = iterator;
+        if (breaker != null) {
+            breaker.setText(target);
+        }
+        setIndex(BEFORE);
+    }
+    
+    /**
+     * Return the target text which is being searched
+     *
+     * @see #setTarget
+     */
+    public CharacterIterator getTarget() {
+        return target;
+    }
+    
+    /**
+     * Returns the text that was matched by the most recent call to 
+     * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}.
+     * If the iterator is not pointing at a valid match (e.g. just after
+     * construction or after <tt>DONE</tt> has been returned, returns
+     * an empty string.
+     */
+    public String getMatchedText() {
+        StringBuffer buffer = new StringBuffer();
+        
+        if (length > 0) {
+            int i = 0;
+            for (char c = target.setIndex(index); i < length; c = target.next(), i++)
+            {
+                buffer.append(c);
+            }
+        }
+        return buffer.toString();
+    }
+
+    //-------------------------------------------------------------------
+    // Protected interface for subclasses
+    //-------------------------------------------------------------------
+
+    /**
+     * Constructor for use by subclasses
+     * <p>
+     * @param target    The target text to be searched.  This is for internal
+     *                  use by this class.  Subclasses need to maintain their
+     *                  own reference to or iterator over the target text
+     *                  for use by their {@link #handleNext handleNext} and
+     *                  {@link #handlePrev handlePrev} methods.
+     *
+     * @param breaker   A {@link BreakIterator} that is used to restrict the points
+     *                  at which matches are detected.  If <tt>handleNext</tt> or
+     *                  <tt>handlePrev</tt> finds a match, but the match's start
+     *                  or end index is not a boundary as determined by
+     *                  the <tt>BreakIterator</tt>, the match is rejected and 
+     *                  <tt>handleNext</tt> or <tt>handlePrev</tt> is called again.
+     *                  If this parameter is <tt>null</tt>, no break
+     *                  detection is attempted.
+     *                  
+     */
+    protected SearchIterator(CharacterIterator target, BreakIterator breaker)
+    {
+        this.target = target;
+        
+        if (breaker != null) {
+            this.breaker = (BreakIterator)breaker.clone();
+            this.breaker.setText(target);
+        }
+        
+        index = target.getBeginIndex();
+        length = 0;
+    }
+
+    /**
+     * Abstract method which subclasses override to provide the mechanism
+     * for finding the next match in the target text.  This allows different
+     * subclasses to provide different search algorithms.
+     * <p>
+     * If a match is found, the implementation should return the index at
+     * which the match starts and should call {@link #setMatchLength setMatchLength}
+     * with the number of characters in the target
+     * text that make up the match.  If no match is found, the method
+     * should return DONE and should not call <tt>setMatchLength</tt>.
+     * <p>
+     * @param startAt   The index in the target text at which the search
+     *                  should start.
+     *
+     * @see #setMatchLength
+     */
+    protected abstract int handleNext(int startAt);
+
+    /**
+     * Abstract method which subclasses override to provide the mechanism
+     * for finding the previous match in the target text.  This allows different
+     * subclasses to provide different search algorithms.
+     * <p>
+     * If a match is found, the implementation should return the index at
+     * which the match starts and should call {@link #setMatchLength setMatchLength}
+     * with the number of characters in the target
+     * text that make up the match.  If no match is found, the method
+     * should return DONE and should not call <tt>setMatchLength</tt>.
+     * <p>
+     * @param startAt   The index in the target text at which the search
+     *                  should start.
+     *
+     * @see #setMatchLength
+     */
+    protected abstract int handlePrev(int startAt);
+
+    /**
+     * Sets the length of the currently matched string in the target text.
+     * Subclasses' <code>handleNext</code> and <code>handlePrev</code>
+     * methods should call this when they find a match in the target text.
+     */
+    protected void setMatchLength(int length) {
+        this.length = length;
+    }
+
+    //-------------------------------------------------------------------
+    // Privates
+    //
+    
+    /**
+     * Internal method used by preceding and following.  Sets the index
+     * to point to the given position, and clears any state that's
+     * affected.
+     */
+    private void setIndex(int pos) {
+        index = pos;
+        length = 0;
+    }
+    
+    /**
+     * Determine whether the target text bounded by <code>start</code> and
+     * <code>end</code> is one or more whole units of text as determined by
+     * the current <code>BreakIterator</code>.
+     */
+    private boolean isBreakUnit(int start, int end)
+    {
+        if (breaker == null) {
+            return true;
+        } 
+        boolean startBound = breaker.isBoundary(start);
+        boolean endBound = (end == target.getEndIndex()) || breaker.isBoundary(end);
+        
+        return startBound && endBound;
+    }
+    
+    //-------------------------------------------------------------------------
+    // Private data...
+    //-------------------------------------------------------------------------
+    private int                 index;          // Current position in the target text
+    private int                 length;         // Length of matched text, or 0
+    private boolean             overlap = true; // Return overlapping matches?
+    private CharacterIterator   target;         // Target text to be searched
+    private BreakIterator       breaker;        // Break iterator to constrain matches
+
+    //-------------------------------------------------------------------------
+    // Debugging support...
+    //-------------------------------------------------------------------------
+
+    static private final boolean DEBUG = false;
+
+    static void debug(String str) {
+        System.err.println(str);
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/text/SimpleDateFormat.java b/src/com/ibm/text/SimpleDateFormat.java
new file mode 100755
index 0000000..18681e5
--- /dev/null
+++ b/src/com/ibm/text/SimpleDateFormat.java
@@ -0,0 +1,1340 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/SimpleDateFormat.java,v $ 
+ * $Date: 2000/03/10 04:07:23 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.text.MessageFormat;
+import java.text.NumberFormat;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+
+import java.util.TimeZone;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.SimpleTimeZone;
+import java.util.GregorianCalendar;
+import java.io.ObjectInputStream;
+import java.io.IOException;
+import java.lang.ClassNotFoundException;
+import java.util.Hashtable;
+import java.lang.StringIndexOutOfBoundsException;
+
+/**
+ * <code>SimpleDateFormat</code> is a concrete class for formatting and
+ * parsing dates in a locale-sensitive manner. It allows for formatting
+ * (date -> text), parsing (text -> date), and normalization.
+ *
+ * <p>
+ * <code>SimpleDateFormat</code> allows you to start by choosing
+ * any user-defined patterns for date-time formatting. However, you
+ * are encouraged to create a date-time formatter with either
+ * <code>getTimeInstance</code>, <code>getDateInstance</code>, or
+ * <code>getDateTimeInstance</code> in <code>DateFormat</code>. Each
+ * of these class methods can return a date/time formatter initialized
+ * with a default format pattern. You may modify the format pattern
+ * using the <code>applyPattern</code> methods as desired.
+ * For more information on using these methods, see
+ * {@link DateFormat}.
+ *
+ * <p>
+ * <strong>Time Format Syntax:</strong>
+ * <p>
+ * To specify the time format use a <em>time pattern</em> string.
+ * In this pattern, all ASCII letters are reserved as pattern letters,
+ * which are defined as the following:
+ * <blockquote>
+ * <pre>
+ * Symbol   Meaning                 Presentation        Example
+ * ------   -------                 ------------        -------
+ * G        era designator          (Text)              AD
+ * y        year                    (Number)            1996
+ * M        month in year           (Text & Number)     July & 07
+ * d        day in month            (Number)            10
+ * h        hour in am/pm (1~12)    (Number)            12
+ * H        hour in day (0~23)      (Number)            0
+ * m        minute in hour          (Number)            30
+ * s        second in minute        (Number)            55
+ * S        millisecond             (Number)            978
+ * E        day in week             (Text)              Tuesday
+ * D        day in year             (Number)            189
+ * F        day of week in month    (Number)            2 (2nd Wed in July)
+ * w        week in year            (Number)            27
+ * W        week in month           (Number)            2
+ * a        am/pm marker            (Text)              PM
+ * k        hour in day (1~24)      (Number)            24
+ * K        hour in am/pm (0~11)    (Number)            0
+ * z        time zone               (Text)              Pacific Standard Time
+ * '        escape for text         (Delimiter)
+ * ''       single quote            (Literal)           '
+ * </pre>
+ * </blockquote>
+ * The count of pattern letters determine the format.
+ * <p>
+ * <strong>(Text)</strong>: 4 or more pattern letters--use full form,
+ * &lt; 4--use short or abbreviated form if one exists.
+ * <p>
+ * <strong>(Number)</strong>: the minimum number of digits. Shorter
+ * numbers are zero-padded to this amount. Year is handled specially;
+ * that is, if the count of 'y' is 2, the Year will be truncated to 2 digits.
+ * <p>
+ * <strong>(Text & Number)</strong>: 3 or over, use text, otherwise use number.
+ * <p>
+ * Any characters in the pattern that are not in the ranges of ['a'..'z']
+ * and ['A'..'Z'] will be treated as quoted text. For instance, characters
+ * like ':', '.', ' ', '#' and '@' will appear in the resulting time text
+ * even they are not embraced within single quotes.
+ * <p>
+ * A pattern containing any invalid pattern letter will result in a thrown
+ * exception during formatting or parsing.
+ *
+ * <p>
+ * <strong>Examples Using the US Locale:</strong>
+ * <blockquote>
+ * <pre>
+ * Format Pattern                         Result
+ * --------------                         -------
+ * "yyyy.MM.dd G 'at' hh:mm:ss z"    ->>  1996.07.10 AD at 15:08:56 PDT
+ * "EEE, MMM d, ''yy"                ->>  Wed, July 10, '96
+ * "h:mm a"                          ->>  12:08 PM
+ * "hh 'o''clock' a, zzzz"           ->>  12 o'clock PM, Pacific Daylight Time
+ * "K:mm a, z"                       ->>  0:00 PM, PST
+ * "yyyyy.MMMMM.dd GGG hh:mm aaa"    ->>  1996.July.10 AD 12:08 PM
+ * </pre>
+ * </blockquote>
+ * <strong>Code Sample:</strong>
+ * <blockquote>
+ * <pre>
+ * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST");
+ * pdt.setStartRule(DateFields.APRIL, 1, DateFields.SUNDAY, 2*60*60*1000);
+ * pdt.setEndRule(DateFields.OCTOBER, -1, DateFields.SUNDAY, 2*60*60*1000);
+ * <br>
+ * // Format the current time.
+ * SimpleDateFormat formatter
+ *     = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz");
+ * Date currentTime_1 = new Date();
+ * String dateString = formatter.format(currentTime_1);
+ * <br>
+ * // Parse the previous string back into a Date.
+ * ParsePosition pos = new ParsePosition(0);
+ * Date currentTime_2 = formatter.parse(dateString, pos);
+ * </pre>
+ * </blockquote>
+ * In the example, the time value <code>currentTime_2</code> obtained from
+ * parsing will be equal to <code>currentTime_1</code>. However, they may not be
+ * equal if the am/pm marker 'a' is left out from the format pattern while
+ * the "hour in am/pm" pattern symbol is used. This information loss can
+ * happen when formatting the time in PM.
+ *
+ * <p>
+ * When parsing a date string using the abbreviated year pattern ("y" or "yy"),
+ * SimpleDateFormat must interpret the abbreviated year
+ * relative to some century.  It does this by adjusting dates to be
+ * within 80 years before and 20 years after the time the SimpleDateFormat
+ * instance is created. For example, using a pattern of "MM/dd/yy" and a
+ * SimpleDateFormat instance created on Jan 1, 1997,  the string
+ * "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64"
+ * would be interpreted as May 4, 1964.
+ * During parsing, only strings consisting of exactly two digits, as defined by
+ * {@link Character#isDigit(char)}, will be parsed into the default century.
+ * Any other numeric string, such as a one digit string, a three or more digit
+ * string, or a two digit string that isn't all digits (for example, "-1"), is
+ * interpreted literally.  So "01/02/3" or "01/02/003" are parsed, using the
+ * same pattern, as Jan 2, 3 AD.  Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
+ *
+ * <p>
+ * If the year pattern has more than two 'y' characters, the year is
+ * interpreted literally, regardless of the number of digits.  So using the
+ * pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D.
+ *
+ * <p>
+ * For time zones that have no names, use strings GMT+hours:minutes or
+ * GMT-hours:minutes.
+ *
+ * <p>
+ * The calendar defines what is the first day of the week, the first week
+ * of the year, whether hours are zero based or not (0 vs 12 or 24), and the
+ * time zone. There is one common decimal format to handle all the numbers;
+ * the digit count is handled programmatically according to the pattern.
+ *
+ * @see          java.util.Calendar
+ * @see          java.util.GregorianCalendar
+ * @see          java.util.TimeZone
+ * @see          DateFormat
+ * @see          DateFormatSymbols
+ * @see          DecimalFormat
+ * @version      1.51, 09/24/99
+ * @author       Mark Davis, Chen-Lieh Huang, Alan Liu
+ */
+public class SimpleDateFormat extends DateFormat {
+
+    // the official serial version ID which says cryptically
+    // which version we're compatible with
+    static final long serialVersionUID = 4774881970558875024L;
+
+    // the internal serial version which says which version was written
+    // - 0 (default) for version up to JDK 1.1.3
+    // - 1 for version from JDK 1.1.4, which includes a new field
+    static final int currentSerialVersion = 1;
+
+    /**
+     * The version of the serialized data on the stream.  Possible values:
+     * <ul>
+     * <li><b>0</b> or not present on stream: JDK 1.1.3.  This version
+     * has no <code>defaultCenturyStart</code> on stream.
+     * <li><b>1</b> JDK 1.1.4 or later.  This version adds
+     * <code>defaultCenturyStart</code>.
+     * </ul>
+     * When streaming out this class, the most recent format
+     * and the highest allowable <code>serialVersionOnStream</code>
+     * is written.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private int serialVersionOnStream = currentSerialVersion;
+
+    /**
+     * The pattern string of this formatter.  This is always a non-localized
+     * pattern.  May not be null.  See class documentation for details.
+     * @serial
+     */
+    private String pattern;
+
+    /**
+     * The symbols used by this formatter for week names, month names,
+     * etc.  May not be null.
+     * @serial
+     * @see java.text.DateFormatSymbols
+     */
+    private DateFormatSymbols formatData;
+
+    /**
+     * We map dates with two-digit years into the century starting at
+     * <code>defaultCenturyStart</code>, which may be any date.  May
+     * not be null.
+     * @serial
+     * @since JDK1.1.4
+     */
+    private Date defaultCenturyStart;
+
+    transient private int defaultCenturyStartYear;
+
+    private static final int millisPerHour = 60 * 60 * 1000;
+    private static final int millisPerMinute = 60 * 1000;
+
+    // For time zones that have no names, use strings GMT+minutes and
+    // GMT-minutes. For instance, in France the time zone is GMT+60.
+    private static final String GMT_PLUS = "GMT+";
+    private static final String GMT_MINUS = "GMT-";
+    private static final String GMT = "GMT";
+
+    /**
+     * Cache to hold the DateTimePatterns of a Locale.
+     */
+    private static Hashtable cachedLocaleData = new Hashtable(3);
+
+    /**
+     * Construct a SimpleDateFormat using the default pattern for the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     *
+     * @see java.text.DateFormat
+     */
+    public SimpleDateFormat() {
+        this(SHORT, SHORT, Locale.getDefault());
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern in the default
+     * locale.  <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     */
+    public SimpleDateFormat(String pattern)
+    {
+        this(pattern, Locale.getDefault());
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and locale.
+     * <b>Note:</b> Not all locales support SimpleDateFormat; for full
+     * generality, use the factory methods in the DateFormat class.
+     */
+    public SimpleDateFormat(String pattern, Locale loc)
+    {
+        this.pattern = pattern;
+        this.formatData = new DateFormatSymbols(loc);
+        initialize(loc);
+    }
+
+    /**
+     * Construct a SimpleDateFormat using the given pattern and
+     * locale-specific symbol data.
+     */
+    public SimpleDateFormat(String pattern, DateFormatSymbols formatData)
+    {
+        this.pattern = pattern;
+        this.formatData = (DateFormatSymbols) formatData.clone();
+        initialize(Locale.getDefault());
+    }
+
+    /* Package-private, called by DateFormat factory methods */
+    SimpleDateFormat(int timeStyle, int dateStyle, Locale loc) {
+        /* try the cache first */
+        String[] dateTimePatterns = (String[]) cachedLocaleData.get(loc);
+        if (dateTimePatterns == null) { /* cache miss */
+            ResourceBundle r = ResourceBundle.getBundle
+            ("java.text.resources.LocaleElements", loc);
+            dateTimePatterns = r.getStringArray("DateTimePatterns");
+            /* update cache */
+            cachedLocaleData.put(loc, dateTimePatterns);
+        }
+	formatData = new DateFormatSymbols(loc);
+	if ((timeStyle >= 0) && (dateStyle >= 0)) {
+	  Object[] dateTimeArgs = {dateTimePatterns[timeStyle],
+			       dateTimePatterns[dateStyle + 4]};
+	  pattern = MessageFormat.format(dateTimePatterns[8], dateTimeArgs);
+	}
+	else if (timeStyle >= 0) {
+	  pattern = dateTimePatterns[timeStyle];
+	}
+	else if (dateStyle >= 0) {
+            pattern = dateTimePatterns[dateStyle + 4];
+	}
+	else {
+	    throw new IllegalArgumentException("No date or time style specified");
+	}
+
+	initialize(loc);
+    }
+
+    /* Initialize calendar and numberFormat fields */
+    private void initialize(Locale loc) {
+        // The format object must be constructed using the symbols for this zone.
+        // However, the calendar should use the current default TimeZone.
+        // If this is not contained in the locale zone strings, then the zone
+        // will be formatted using generic GMT+/-H:MM nomenclature.
+        calendar = Calendar.getInstance(TimeZone.getDefault(), loc);
+        numberFormat = NumberFormat.getInstance(loc);
+        numberFormat.setGroupingUsed(false);
+        if (numberFormat instanceof DecimalFormat)
+            ((DecimalFormat)numberFormat).setDecimalSeparatorAlwaysShown(false);
+        numberFormat.setParseIntegerOnly(true); /* So that dd.MM.yy can be parsed */
+        numberFormat.setMinimumFractionDigits(0); // To prevent "Jan 1.00, 1997.00"
+
+        initializeDefaultCentury();
+    }
+
+    /* Initialize the fields we use to disambiguate ambiguous years. Separate
+     * so we can call it from readObject().
+     */
+    private void initializeDefaultCentury() {
+        calendar.setTime( new Date() );
+        calendar.add( Calendar.YEAR, -80 );
+        parseAmbiguousDatesAsAfter(calendar.getTime());
+    }
+
+    /* Define one-century window into which to disambiguate dates using
+     * two-digit years.
+     */
+    private void parseAmbiguousDatesAsAfter(Date startDate) {
+        defaultCenturyStart = startDate;
+        calendar.setTime(startDate);
+        defaultCenturyStartYear = calendar.get(Calendar.YEAR);
+    }
+
+    /**
+     * Sets the 100-year period 2-digit years will be interpreted as being in
+     * to begin on the date the user specifies.
+     * @param startDate During parsing, two digit years will be placed in the range
+     * <code>startDate</code> to <code>startDate + 100 years</code>.
+     */
+    public void set2DigitYearStart(Date startDate) {
+        parseAmbiguousDatesAsAfter(startDate);
+    }
+
+    /**
+     * Returns the beginning date of the 100-year period 2-digit years are interpreted
+     * as being within.
+     * @return the start of the 100-year period into which two digit years are
+     * parsed
+     */
+    public Date get2DigitYearStart() {
+        return defaultCenturyStart;
+    }
+
+    /**
+     * Overrides DateFormat
+     * <p>Formats a date or time, which is the standard millis
+     * since January 1, 1970, 00:00:00 GMT.
+     * <p>Example: using the US locale:
+     * "yyyy.MM.dd G 'at' HH:mm:ss zzz" ->> 1996.07.10 AD at 15:08:56 PDT
+     * @param date the date-time value to be formatted into a date-time string.
+     * @param toAppendTo where the new date-time text is to be appended.
+     * @param pos the formatting position. On input: an alignment field,
+     * if desired. On output: the offsets of the alignment field.
+     * @return the formatted date-time string.
+     * @see java.text.DateFormat
+     */
+    public StringBuffer format(Date date, StringBuffer toAppendTo,
+                               FieldPosition pos)
+    {
+        // Initialize
+        pos.setBeginIndex(0);
+        pos.setEndIndex(0);
+
+        // Convert input date to time field list
+        calendar.setTime(date);
+
+        boolean inQuote = false; // true when between single quotes
+        char prevCh = 0; // previous pattern character
+        int count = 0;  // number of time prevCh repeated
+        for (int i=0; i<pattern.length(); ++i) {
+            char ch = pattern.charAt(i);
+            // Use subFormat() to format a repeated pattern character
+            // when a different pattern or non-pattern character is seen
+            if (ch != prevCh && count > 0) {
+                toAppendTo.append(
+                        subFormat(prevCh, count, toAppendTo.length(), pos, formatData));
+                count = 0;
+            }
+            if (ch == '\'') {
+                // Consecutive single quotes are a single quote literal,
+                // either outside of quotes or between quotes
+                if ((i+1)<pattern.length() && pattern.charAt(i+1) == '\'') {
+                    toAppendTo.append('\'');
+                    ++i;
+                } else {
+                    inQuote = !inQuote;
+                }
+            } else if (!inQuote
+                       && (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')) {
+                // ch is a date-time pattern character to be interpreted
+                // by subFormat(); count the number of times it is repeated
+                prevCh = ch;
+                ++count;
+            }
+            else {
+                // Append quoted characters and unquoted non-pattern characters
+                toAppendTo.append(ch);
+            }
+        }
+        // Format the last item in the pattern, if any
+        if (count > 0) {
+            toAppendTo.append(
+                    subFormat(prevCh, count, toAppendTo.length(), pos, formatData));
+        }
+        return toAppendTo;
+    }
+
+    // Map index into pattern character string to Calendar field number
+    private static final int[] PATTERN_INDEX_TO_CALENDAR_FIELD =
+    {
+        Calendar.ERA, Calendar.YEAR, Calendar.MONTH, Calendar.DATE,
+        Calendar.HOUR_OF_DAY, Calendar.HOUR_OF_DAY, Calendar.MINUTE,
+        Calendar.SECOND, Calendar.MILLISECOND, Calendar.DAY_OF_WEEK,
+        Calendar.DAY_OF_YEAR, Calendar.DAY_OF_WEEK_IN_MONTH,
+        Calendar.WEEK_OF_YEAR, Calendar.WEEK_OF_MONTH,
+        Calendar.AM_PM, Calendar.HOUR, Calendar.HOUR, Calendar.ZONE_OFFSET
+    };
+
+    // Map index into pattern character string to DateFormat field number
+    private static final int[] PATTERN_INDEX_TO_DATE_FORMAT_FIELD = {
+        DateFormat.ERA_FIELD, DateFormat.YEAR_FIELD, DateFormat.MONTH_FIELD,
+        DateFormat.DATE_FIELD, DateFormat.HOUR_OF_DAY1_FIELD,
+        DateFormat.HOUR_OF_DAY0_FIELD, DateFormat.MINUTE_FIELD,
+        DateFormat.SECOND_FIELD, DateFormat.MILLISECOND_FIELD,
+        DateFormat.DAY_OF_WEEK_FIELD, DateFormat.DAY_OF_YEAR_FIELD,
+        DateFormat.DAY_OF_WEEK_IN_MONTH_FIELD, DateFormat.WEEK_OF_YEAR_FIELD,
+        DateFormat.WEEK_OF_MONTH_FIELD, DateFormat.AM_PM_FIELD,
+        DateFormat.HOUR1_FIELD, DateFormat.HOUR0_FIELD,
+        DateFormat.TIMEZONE_FIELD,
+    };
+
+    // Private member function that does the real date/time formatting.
+    protected String subFormat(char ch, int count, int beginOffset,
+                             FieldPosition pos, DateFormatSymbols formatData)
+         throws IllegalArgumentException
+    {
+        int     patternCharIndex = -1;
+        int     maxIntCount = Integer.MAX_VALUE;
+        String  current = "";
+
+        if ((patternCharIndex=formatData.patternChars.indexOf(ch)) == -1)
+            throw new IllegalArgumentException("Illegal pattern character " +
+                                               "'" + ch + "'");
+
+        int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+        int value = calendar.get(field);
+
+        switch (patternCharIndex) {
+        case 0: // 'G' - ERA
+            current = formatData.eras[value];
+            break;
+        case 1: // 'y' - YEAR
+            if (count >= 4)
+                current = zeroPaddingNumber(value, 4, maxIntCount);
+            else // count < 4
+                current = zeroPaddingNumber(value, 2, 2); // clip 1996 to 96
+            break;
+        case 2: // 'M' - MONTH
+            if (count >= 4)
+                current = formatData.months[value];
+            else if (count == 3)
+                current = formatData.shortMonths[value];
+            else
+                current = zeroPaddingNumber(value+1, count, maxIntCount);
+            break;
+        case 4: // 'k' - HOUR_OF_DAY: 1-based.  eg, 23:59 + 1 hour =>> 24:59
+            if (value == 0)
+                current = zeroPaddingNumber(
+                                            calendar.getMaximum(Calendar.HOUR_OF_DAY)+1,
+                                            count, maxIntCount);
+            else
+                current = zeroPaddingNumber(value, count, maxIntCount);
+            break;
+        case 9: // 'E' - DAY_OF_WEEK
+            if (count >= 4)
+                current = formatData.weekdays[value];
+            else // count < 4, use abbreviated form if exists
+                current = formatData.shortWeekdays[value];
+            break;
+        case 14:    // 'a' - AM_PM
+            current = formatData.ampms[value];
+            break;
+        case 15: // 'h' - HOUR:1-based.  eg, 11PM + 1 hour =>> 12 AM
+            if (value == 0)
+                current = zeroPaddingNumber(
+                                            calendar.getLeastMaximum(Calendar.HOUR)+1,
+                                            count, maxIntCount);
+            else
+                current = zeroPaddingNumber(value, count, maxIntCount);
+            break;
+        case 17: // 'z' - ZONE_OFFSET
+            int zoneIndex
+                = formatData.getZoneIndex (calendar.getTimeZone().getID());
+            if (zoneIndex == -1)
+            {
+                // For time zones that have no names, use strings
+                // GMT+hours:minutes and GMT-hours:minutes.
+                // For instance, France time zone uses GMT+01:00.
+                StringBuffer zoneString = new StringBuffer();
+
+                value = calendar.get(Calendar.ZONE_OFFSET) +
+                    calendar.get(Calendar.DST_OFFSET);
+
+                if (value < 0)
+                {
+                    zoneString.append(GMT_MINUS);
+                    value = -value; // suppress the '-' sign for text display.
+                }
+                else
+                    zoneString.append(GMT_PLUS);
+                zoneString.append(
+                                  zeroPaddingNumber((int)(value/millisPerHour), 2, 2));
+                zoneString.append(':');
+                zoneString.append(
+                                  zeroPaddingNumber(
+                                                    (int)((value%millisPerHour)/millisPerMinute), 2, 2));
+                current = zoneString.toString();
+            }
+            else if (calendar.get(Calendar.DST_OFFSET) != 0)
+            {
+                if (count >= 4)
+                    current = formatData.zoneStrings[zoneIndex][3];
+                else
+                    // count < 4, use abbreviated form if exists
+                    current = formatData.zoneStrings[zoneIndex][4];
+            }
+            else
+            {
+                if (count >= 4)
+                    current = formatData.zoneStrings[zoneIndex][1];
+                else
+                    current = formatData.zoneStrings[zoneIndex][2];
+            }
+            break;
+        default:
+            // case 3: // 'd' - DATE
+            // case 5: // 'H' - HOUR_OF_DAY:0-based.  eg, 23:59 + 1 hour =>> 00:59
+            // case 6: // 'm' - MINUTE
+            // case 7: // 's' - SECOND
+            // case 8: // 'S' - MILLISECOND
+            // case 10: // 'D' - DAY_OF_YEAR
+            // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+            // case 12: // 'w' - WEEK_OF_YEAR
+            // case 13: // 'W' - WEEK_OF_MONTH
+            // case 16: // 'K' - HOUR: 0-based.  eg, 11PM + 1 hour =>> 0 AM
+            current = zeroPaddingNumber(value, count, maxIntCount);
+            break;
+        } // switch (patternCharIndex)
+
+        if (pos.getField() == PATTERN_INDEX_TO_DATE_FORMAT_FIELD[patternCharIndex]) {
+            // set for the first occurence only.
+            if (pos.getBeginIndex() == 0 && pos.getEndIndex() == 0) {
+                pos.setBeginIndex(beginOffset);
+                pos.setEndIndex(beginOffset + current.length());
+            }
+        }
+
+        return current;
+    }
+
+    /**
+     * Formats a number with the specified minimum and maximum number of digits.
+     */
+    protected String zeroPaddingNumber(long value, int minDigits, int maxDigits)
+    {
+        numberFormat.setMinimumIntegerDigits(minDigits);
+        numberFormat.setMaximumIntegerDigits(maxDigits);
+        return numberFormat.format(value);
+    }
+
+
+    /**
+     * Overrides DateFormat
+     * @see java.text.DateFormat
+     */
+    public Date parse(String text, ParsePosition pos)
+    {
+        int start = pos.getIndex();
+        int oldStart = start;
+        boolean[] ambiguousYear = {false};
+
+        calendar.clear(); // Clears all the time fields
+
+        boolean inQuote = false; // inQuote set true when hits 1st single quote
+        char prevCh = 0;
+        int count = 0;
+        int interQuoteCount = 1; // Number of chars between quotes
+
+        for (int i=0; i<pattern.length(); ++i)
+        {
+            char ch = pattern.charAt(i);
+
+            if (inQuote)
+            {
+                if (ch == '\'')
+                {
+                    // ends with 2nd single quote
+                    inQuote = false;
+                    // two consecutive quotes outside a quote means we have
+                    // a quote literal we need to match.
+                    if (count == 0)
+                    {
+                        if (start >= text.length() || ch != text.charAt(start))
+                        {
+                            pos.setIndex(oldStart);
+                            pos.setErrorIndex(start);
+                            return null;
+                        }
+                        ++start;
+                    }
+                    count = 0;
+                    interQuoteCount = 0;
+                }
+                else
+                {
+                    // pattern uses text following from 1st single quote.
+                    if (start >= text.length() || ch != text.charAt(start)) {
+                        // Check for cases like: 'at' in pattern vs "xt"
+                        // in time text, where 'a' doesn't match with 'x'.
+                        // If fail to match, return null.
+                        pos.setIndex(oldStart); // left unchanged
+                        pos.setErrorIndex(start);
+                        return null;
+                    }
+                    ++count;
+                    ++start;
+                }
+            }
+            else    // !inQuote
+            {
+                if (ch == '\'')
+                {
+                    inQuote = true;
+                    if (count > 0) // handle cases like: e'at'
+                    {
+                        int startOffset = start;
+                        start=subParse(text, start, prevCh, count,
+                                       false, ambiguousYear);
+                        if ( start<0 ) {
+                            pos.setErrorIndex(startOffset);
+                            pos.setIndex(oldStart);
+                            return null;
+                        }
+                        count = 0;
+                    }
+
+                    if (interQuoteCount == 0)
+                    {
+                        // This indicates two consecutive quotes inside a quote,
+                        // for example, 'o''clock'.  We need to parse this as
+                        // representing a single quote within the quote.
+                        int startOffset = start;
+                        if (start >= text.length() ||  ch != text.charAt(start))
+                        {
+                            pos.setErrorIndex(startOffset);
+                            pos.setIndex(oldStart);
+                            return null;
+                        }
+                        ++start;
+                        count = 1; // Make it look like we never left
+                    }
+                }
+                else if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')
+                {
+                    // ch is a date-time pattern
+                    if (ch != prevCh && count > 0) // e.g., yyyyMMdd
+                    {
+                        int startOffset = start;
+                        // This is the only case where we pass in 'true' for
+                        // obeyCount.  That's because the next field directly
+                        // abuts this one, so we have to use the count to know when
+                        // to stop parsing. [LIU]
+                        start = subParse(text, start, prevCh, count, true,
+                                         ambiguousYear);
+                        if (start < 0) {
+                            pos.setErrorIndex(startOffset);
+                            pos.setIndex(oldStart);
+                            return null;
+                        }
+                        prevCh = ch;
+                        count = 1;
+                    }
+                    else
+                    {
+                        if (ch != prevCh)
+                            prevCh = ch;
+                        count++;
+                    }
+                }
+                else if (count > 0)
+                {
+                    // handle cases like: MM-dd-yy, HH:mm:ss, or yyyy MM dd,
+                    // where ch = '-', ':', or ' ', repectively.
+                    int startOffset = start;
+                    start=subParse(text, start, prevCh, count,
+                                   false, ambiguousYear);
+                    if ( start < 0 ) {
+                        pos.setErrorIndex(startOffset);
+                        pos.setIndex(oldStart);
+                        return null;
+                    }
+                    if (start >= text.length() || ch != text.charAt(start)) {
+                        // handle cases like: 'MMMM dd' in pattern vs. "janx20"
+                        // in time text, where ' ' doesn't match with 'x'.
+                        pos.setErrorIndex(start);
+                        pos.setIndex(oldStart);
+                        return null;
+                    }
+                    start++;
+                    count = 0;
+                    prevCh = 0;
+                }
+                else // any other unquoted characters
+                {
+                    if (start >= text.length() || ch != text.charAt(start)) {
+                        // handle cases like: 'MMMM   dd' in pattern vs.
+                        // "jan,,,20" in time text, where "   " doesn't
+                        // match with ",,,".
+                        pos.setErrorIndex(start);
+                        pos.setIndex(oldStart);
+                        return null;
+                    }
+                    start++;
+                }
+
+                ++interQuoteCount;
+            }
+        }
+        // Parse the last item in the pattern
+        if (count > 0)
+        {
+            int startOffset = start;
+            start=subParse(text, start, prevCh, count,
+                           false, ambiguousYear);
+            if ( start < 0 ) {
+                pos.setIndex(oldStart);
+                pos.setErrorIndex(startOffset);
+                return null;
+            }
+        }
+
+        // At this point the fields of Calendar have been set.  Calendar
+        // will fill in default values for missing fields when the time
+        // is computed.
+
+        pos.setIndex(start);
+
+        // This part is a problem:  When we call parsedDate.after, we compute the time.
+        // Take the date April 3 2004 at 2:30 am.  When this is first set up, the year
+        // will be wrong if we're parsing a 2-digit year pattern.  It will be 1904.
+        // April 3 1904 is a Sunday (unlike 2004) so it is the DST onset day.  2:30 am
+        // is therefore an "impossible" time, since the time goes from 1:59 to 3:00 am
+        // on that day.  It is therefore parsed out to fields as 3:30 am.  Then we
+        // add 100 years, and get April 3 2004 at 3:30 am.  Note that April 3 2004 is
+        // a Saturday, so it can have a 2:30 am -- and it should. [LIU]
+        /*
+        Date parsedDate = calendar.getTime();
+        if( ambiguousYear[0] && !parsedDate.after(defaultCenturyStart) ) {
+            calendar.add(Calendar.YEAR, 100);
+            parsedDate = calendar.getTime();
+        }
+        */
+        // Because of the above condition, save off the fields in case we need to readjust.
+        // The procedure we use here is not particularly efficient, but there is no other
+        // way to do this given the API restrictions present in Calendar.  We minimize
+        // inefficiency by only performing this computation when it might apply, that is,
+        // when the two-digit year is equal to the start year, and thus might fall at the
+        // front or the back of the default century.  This only works because we adjust
+        // the year correctly to start with in other cases -- see subParse().
+        Date parsedDate;
+        try {
+            if (ambiguousYear[0]) // If this is true then the two-digit year == the default start year
+            {
+                // We need a copy of the fields, and we need to avoid triggering a call to
+                // complete(), which will recalculate the fields.  Since we can't access
+                // the fields[] array in Calendar, we clone the entire object.  This will
+                // stop working if Calendar.clone() is ever rewritten to call complete().
+                Calendar savedCalendar = (Calendar)calendar.clone();
+                parsedDate = calendar.getTime();
+                if (parsedDate.before(defaultCenturyStart))
+                {
+                    // We can't use add here because that does a complete() first.
+                    savedCalendar.set(Calendar.YEAR, defaultCenturyStartYear + 100);
+                    parsedDate = savedCalendar.getTime();
+                }
+            }
+            else parsedDate = calendar.getTime();
+        }
+        // An IllegalArgumentException will be thrown by Calendar.getTime()
+        // if any fields are out of range, e.g., MONTH == 17.
+        catch (IllegalArgumentException e) {
+            pos.setErrorIndex(start);
+            pos.setIndex(oldStart);
+            return null;
+        }
+
+        return parsedDate;
+    }
+
+    /**
+     * Private code-size reduction function used by subParse.
+     * @param text the time text being parsed.
+     * @param start where to start parsing.
+     * @param field the date field being parsed.
+     * @param data the string array to parsed.
+     * @return the new start position if matching succeeded; a negative number
+     * indicating matching failure, otherwise.
+     */
+    private int matchString(String text, int start, int field, String[] data)
+    {
+        int i = 0;
+        int count = data.length;
+
+        if (field == Calendar.DAY_OF_WEEK) i = 1;
+
+        // There may be multiple strings in the data[] array which begin with
+        // the same prefix (e.g., Cerven and Cervenec (June and July) in Czech).
+        // We keep track of the longest match, and return that.  Note that this
+        // unfortunately requires us to test all array elements.
+        int bestMatchLength = 0, bestMatch = -1;
+        for (; i<count; ++i)
+        {
+            int length = data[i].length();
+            // Always compare if we have no match yet; otherwise only compare
+            // against potentially better matches (longer strings).
+            if (length > bestMatchLength &&
+                text.regionMatches(true, start, data[i], 0, length))
+            {
+                bestMatch = i;
+                bestMatchLength = length;
+            }
+        }
+        if (bestMatch >= 0)
+        {
+            calendar.set(field, bestMatch);
+            return start + bestMatchLength;
+        }
+        return -start;
+    }
+
+    private int matchZoneString(String text, int start, int zoneIndex) {
+	int j;
+	for (j = 1; j <= 4; ++j) {
+	    // Checking long and short zones [1 & 2],
+	    // and long and short daylight [3 & 4].
+	    if (text.regionMatches(true, start,
+				   formatData.zoneStrings[zoneIndex][j], 0,
+				   formatData.zoneStrings[zoneIndex][j].length())) {
+		break;
+	    }
+	}
+	return (j > 4) ? -1 : j;
+    }	
+
+    /**
+     * find time zone 'text' matched zoneStrings and set to internal
+     * calendar.
+     */
+    private int subParseZoneString(String text, int start) {
+	// At this point, check for named time zones by looking through
+	// the locale data from the DateFormatZoneData strings.
+	// Want to be able to parse both short and long forms.
+	int zoneIndex = 
+	    formatData.getZoneIndex (getTimeZone().getID());
+	TimeZone tz = null;
+	int j = 0, i = 0;
+	if ((zoneIndex != -1) && ((j = matchZoneString(text, start, zoneIndex)) > 0)) {
+	    tz = TimeZone.getTimeZone(formatData.zoneStrings[zoneIndex][0]);
+	    i = zoneIndex;
+	}
+	if (tz == null) {
+	    zoneIndex = 
+		formatData.getZoneIndex (TimeZone.getDefault().getID());
+	    if ((zoneIndex != -1) && ((j = matchZoneString(text, start, zoneIndex)) > 0)) {
+		tz = TimeZone.getTimeZone(formatData.zoneStrings[zoneIndex][0]);
+		i = zoneIndex;
+	    }
+	}	    
+
+	if (tz == null) {
+	    for (i = 0; i < formatData.zoneStrings.length; i++) {
+		if ((j = matchZoneString(text, start, i)) > 0) {
+		    tz = TimeZone.getTimeZone(formatData.zoneStrings[i][0]);
+		    break;
+		}
+	    }
+	}
+	if (tz != null) { // Matched any ?
+	    calendar.set(Calendar.ZONE_OFFSET, tz.getRawOffset());
+	    // The code below time zone is assumed to be instance of
+	    // SimpleTimeZone.
+	    calendar.set(Calendar.DST_OFFSET, 
+			 j >= 3 ? ((SimpleTimeZone)tz).getDSTSavings() : 0);
+	    return (start + formatData.zoneStrings[i][j].length());
+	}
+	return 0;
+    }
+
+    /**
+     * Private member function that converts the parsed date strings into
+     * timeFields. Returns -start (for ParsePosition) if failed.
+     * @param text the time text to be parsed.
+     * @param start where to start parsing.
+     * @param ch the pattern character for the date field text to be parsed.
+     * @param count the count of a pattern character.
+     * @param obeyCount if true, then the next field directly abuts this one,
+     * and we should use the count to know when to stop parsing.
+     * @param ambiguousYear return parameter; upon return, if ambiguousYear[0]
+     * is true, then a two-digit year was parsed and may need to be readjusted.
+     * @return the new start position if matching succeeded; a negative number
+     * indicating matching failure, otherwise.
+     */
+    private int subParse(String text, int start, char ch, int count,
+                         boolean obeyCount, boolean[] ambiguousYear)
+    {
+        Number number = null;
+        int value = 0;
+        int i;
+        ParsePosition pos = new ParsePosition(0);
+        int patternCharIndex = -1;
+
+        if ((patternCharIndex=formatData.patternChars.indexOf(ch)) == -1)
+            return -start;
+
+        pos.setIndex(start);
+
+        int field = PATTERN_INDEX_TO_CALENDAR_FIELD[patternCharIndex];
+
+        // If there are any spaces here, skip over them.  If we hit the end
+        // of the string, then fail.
+        for (;;) {
+            if (pos.getIndex() >= text.length()) return -start;
+            char c = text.charAt(pos.getIndex());
+            if (c != ' ' && c != '\t') break;
+            pos.setIndex(pos.getIndex()+1);
+        }
+
+        // We handle a few special cases here where we need to parse
+        // a number value.  We handle further, more generic cases below.  We need
+        // to handle some of them here because some fields require extra processing on
+        // the parsed value.
+        if (patternCharIndex == 4 /*HOUR_OF_DAY1_FIELD*/ ||
+            patternCharIndex == 15 /*HOUR1_FIELD*/ ||
+            (patternCharIndex == 2 /*MONTH_FIELD*/ && count <= 2) ||
+            patternCharIndex == 1)
+        {
+            // It would be good to unify this with the obeyCount logic below,
+            // but that's going to be difficult.
+            if (obeyCount)
+            {
+                if ((start+count) > text.length()) return -start;
+                number = numberFormat.parse(text.substring(0, start+count), pos);
+            }
+            else number = numberFormat.parse(text, pos);
+            if (number == null)
+                return -start;
+            value = number.intValue();
+        }
+
+        switch (patternCharIndex)
+        {
+        case 0: // 'G' - ERA
+            return matchString(text, start, Calendar.ERA, formatData.eras);
+        case 1: // 'y' - YEAR
+            // If there are 3 or more YEAR pattern characters, this indicates
+            // that the year value is to be treated literally, without any
+            // two-digit year adjustments (e.g., from "01" to 2001).  Otherwise
+            // we made adjustments to place the 2-digit year in the proper
+            // century, for parsed strings from "00" to "99".  Any other string
+            // is treated literally:  "2250", "-1", "1", "002".
+            if (count <= 2 && (pos.getIndex() - start) == 2
+                && Character.isDigit(text.charAt(start))
+                && Character.isDigit(text.charAt(start+1)))
+            {
+                // Assume for example that the defaultCenturyStart is 6/18/1903.
+                // This means that two-digit years will be forced into the range
+                // 6/18/1903 to 6/17/2003.  As a result, years 00, 01, and 02
+                // correspond to 2000, 2001, and 2002.  Years 04, 05, etc. correspond
+                // to 1904, 1905, etc.  If the year is 03, then it is 2003 if the
+                // other fields specify a date before 6/18, or 1903 if they specify a
+                // date afterwards.  As a result, 03 is an ambiguous year.  All other
+                // two-digit years are unambiguous.
+                int ambiguousTwoDigitYear = defaultCenturyStartYear % 100;
+                ambiguousYear[0] = value == ambiguousTwoDigitYear;
+                value += (defaultCenturyStartYear/100)*100 +
+                    (value < ambiguousTwoDigitYear ? 100 : 0);
+            }
+            calendar.set(Calendar.YEAR, value);
+            return pos.getIndex();
+        case 2: // 'M' - MONTH
+            if (count <= 2) // i.e., M or MM.
+            {
+                // Don't want to parse the month if it is a string
+                // while pattern uses numeric style: M or MM.
+                // [We computed 'value' above.]
+                calendar.set(Calendar.MONTH, value - 1);
+                return pos.getIndex();
+            }
+            else
+            {
+                // count >= 3 // i.e., MMM or MMMM
+                // Want to be able to parse both short and long forms.
+                // Try count == 4 first:
+                int newStart = 0;
+                if ((newStart=matchString(text, start, Calendar.MONTH,
+                                          formatData.months)) > 0)
+                    return newStart;
+                else // count == 4 failed, now try count == 3
+                    return matchString(text, start, Calendar.MONTH,
+                                       formatData.shortMonths);
+            }
+        case 4: // 'k' - HOUR_OF_DAY: 1-based.  eg, 23:59 + 1 hour =>> 24:59
+            // [We computed 'value' above.]
+            if (value == calendar.getMaximum(Calendar.HOUR_OF_DAY)+1) value = 0;
+            calendar.set(Calendar.HOUR_OF_DAY, value);
+            return pos.getIndex();
+        case 9: { // 'E' - DAY_OF_WEEK
+            // Want to be able to parse both short and long forms.
+            // Try count == 4 (DDDD) first:
+            int newStart = 0;
+            if ((newStart=matchString(text, start, Calendar.DAY_OF_WEEK,
+                                      formatData.weekdays)) > 0)
+                return newStart;
+            else // DDDD failed, now try DDD
+                return matchString(text, start, Calendar.DAY_OF_WEEK,
+                                   formatData.shortWeekdays);
+        }
+        case 14:    // 'a' - AM_PM
+            return matchString(text, start, Calendar.AM_PM, formatData.ampms);
+        case 15: // 'h' - HOUR:1-based.  eg, 11PM + 1 hour =>> 12 AM
+            // [We computed 'value' above.]
+            if (value == calendar.getLeastMaximum(Calendar.HOUR)+1) value = 0;
+            calendar.set(Calendar.HOUR, value);
+            return pos.getIndex();
+        case 17: // 'z' - ZONE_OFFSET
+            // First try to parse generic forms such as GMT-07:00. Do this first
+            // in case localized DateFormatZoneData contains the string "GMT"
+            // for a zone; in that case, we don't want to match the first three
+            // characters of GMT+/-HH:MM etc.
+            {
+                int sign = 0;
+                int offset;
+
+                // For time zones that have no known names, look for strings
+                // of the form:
+                //    GMT[+-]hours:minutes or
+                //    GMT[+-]hhmm or
+                //    GMT.
+                if ((text.length() - start) >= GMT.length() &&
+                    text.regionMatches(true, start, GMT, 0, GMT.length()))
+                {
+                    calendar.set(Calendar.DST_OFFSET, 0);
+
+                    pos.setIndex(start + GMT.length());
+
+		    try { // try-catch for "GMT" only time zone string
+			if( text.charAt(pos.getIndex()) == '+' ) {
+			    sign = 1;
+			} else if( text.charAt(pos.getIndex()) == '-' ) {
+			    sign = -1;
+			} 
+		    } catch(StringIndexOutOfBoundsException e) {
+                    }
+		    if (sign == 0) {
+			calendar.set(Calendar.ZONE_OFFSET, 0 );
+			return pos.getIndex();
+		    }
+
+                    // Look for hours:minutes or hhmm.
+                    pos.setIndex(pos.getIndex() + 1);
+                    Number tzNumber = numberFormat.parse(text, pos);
+                    if( tzNumber == null) {
+                        return -start;
+                    }
+                    if( text.charAt(pos.getIndex()) == ':' ) {
+                        // This is the hours:minutes case
+                        offset = tzNumber.intValue() * 60;
+                        pos.setIndex(pos.getIndex() + 1);
+                        tzNumber = numberFormat.parse(text, pos);
+                        if( tzNumber == null) {
+                            return -start;
+                        }
+                        offset += tzNumber.intValue();
+                    }
+                    else {
+                        // This is the hhmm case.
+                        offset = tzNumber.intValue();
+                        if( offset < 24 )
+                            offset *= 60;
+                        else
+                            offset = offset % 100 + offset / 100 * 60;
+                    }
+
+                    // Fall through for final processing below of 'offset' and 'sign'.
+                }
+                else {
+                    // At this point, check for named time zones by looking through
+                    // the locale data from the DateFormatZoneData strings.
+                    // Want to be able to parse both short and long forms.
+		    i = subParseZoneString(text, start);
+		    if (i != 0)
+			return i;
+
+                    // As a last resort, look for numeric timezones of the form
+                    // [+-]hhmm as specified by RFC 822.  This code is actually
+                    // a little more permissive than RFC 822.  It will try to do
+                    // its best with numbers that aren't strictly 4 digits long.
+                    DecimalFormat fmt = new DecimalFormat("+####;-####");
+                    fmt.setParseIntegerOnly(true);
+                    Number tzNumber = fmt.parse( text, pos );
+                    if( tzNumber == null) {
+                        return -start;   // Wasn't actually a number.
+                    }
+                    offset = tzNumber.intValue();
+                    sign = 1;
+                    if( offset < 0 ) {
+                        sign = -1;
+                        offset = -offset;
+                    }
+                    if( offset < 24 )
+                        offset = offset * 60;
+                    else
+                        offset = offset % 100 + offset / 100 * 60;
+
+                    // Fall through for final processing below of 'offset' and 'sign'.
+                }
+
+                // Do the final processing for both of the above cases.  We only
+                // arrive here if the form GMT+/-... or an RFC 822 form was seen.
+                if (sign != 0)
+                {
+                    offset *= millisPerMinute * sign;
+
+                    if (calendar.getTimeZone().useDaylightTime())
+                    {
+                        calendar.set(Calendar.DST_OFFSET, millisPerHour);
+                        offset -= millisPerHour;
+                    }
+                    calendar.set(Calendar.ZONE_OFFSET, offset);
+
+                    return pos.getIndex();
+                }
+            }
+
+            // All efforts to parse a zone failed.
+            return -start;
+
+        default:
+            // case 3: // 'd' - DATE
+            // case 5: // 'H' - HOUR_OF_DAY:0-based.  eg, 23:59 + 1 hour =>> 00:59
+            // case 6: // 'm' - MINUTE
+            // case 7: // 's' - SECOND
+            // case 8: // 'S' - MILLISECOND
+            // case 10: // 'D' - DAY_OF_YEAR
+            // case 11: // 'F' - DAY_OF_WEEK_IN_MONTH
+            // case 12: // 'w' - WEEK_OF_YEAR
+            // case 13: // 'W' - WEEK_OF_MONTH
+            // case 16: // 'K' - HOUR: 0-based.  eg, 11PM + 1 hour =>> 0 AM
+
+            // Handle "generic" fields
+            if (obeyCount)
+            {
+                if ((start+count) > text.length()) return -start;
+                number = numberFormat.parse(text.substring(0, start+count), pos);
+            }
+            else number = numberFormat.parse(text, pos);
+            if (number != null) {
+                calendar.set(field, number.intValue());
+                return pos.getIndex();
+            }
+            return -start;
+        }
+    }
+
+
+    /**
+     * Translate a pattern, mapping each character in the from string to the
+     * corresponding character in the to string.
+     */
+    private String translatePattern(String pattern, String from, String to) {
+        StringBuffer result = new StringBuffer();
+        boolean inQuote = false;
+        for (int i = 0; i < pattern.length(); ++i) {
+            char c = pattern.charAt(i);
+            if (inQuote) {
+                if (c == '\'')
+                    inQuote = false;
+            }
+            else {
+                if (c == '\'')
+                    inQuote = true;
+                else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
+                    int ci = from.indexOf(c);
+                    if (ci == -1)
+                        throw new IllegalArgumentException("Illegal pattern " +
+                                                           " character '" +
+                                                           c + "'");
+                    c = to.charAt(ci);
+                }
+            }
+            result.append(c);
+        }
+        if (inQuote)
+            throw new IllegalArgumentException("Unfinished quote in pattern");
+        return result.toString();
+    }
+
+    /**
+     * Return a pattern string describing this date format.
+     */
+    public String toPattern() {
+        return pattern;
+    }
+
+    /**
+     * Return a localized pattern string describing this date format.
+     */
+    public String toLocalizedPattern() {
+        return translatePattern(pattern,
+                                formatData.patternChars,
+                                formatData.localPatternChars);
+    }
+
+    /**
+     * Apply the given unlocalized pattern string to this date format.
+     */
+    public void applyPattern (String pattern)
+    {
+        this.pattern = pattern;
+    }
+
+    /**
+     * Apply the given localized pattern string to this date format.
+     */
+    public void applyLocalizedPattern(String pattern) {
+        this.pattern = translatePattern(pattern,
+                                        formatData.localPatternChars,
+                                        formatData.patternChars);
+    }
+
+    /**
+     * Gets the date/time formatting data.
+     * @return a copy of the date-time formatting data associated
+     * with this date-time formatter.
+     */
+    public DateFormatSymbols getDateFormatSymbols()
+    {
+        return (DateFormatSymbols)formatData.clone();
+    }
+
+    /**
+     * Allows you to set the date/time formatting data.
+     * @param newFormatData the given date-time formatting data.
+     */
+    public void setDateFormatSymbols(DateFormatSymbols newFormatSymbols)
+    {
+        this.formatData = (DateFormatSymbols)newFormatSymbols.clone();
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone() {
+        SimpleDateFormat other = (SimpleDateFormat) super.clone();
+        other.formatData = (DateFormatSymbols) formatData.clone();
+        return other;
+    }
+
+    /**
+     * Override hashCode.
+     * Generates the hash code for the SimpleDateFormat object
+     */
+    public int hashCode()
+    {
+        return pattern.hashCode();
+        // just enough fields for a reasonable distribution
+    }
+
+    /**
+     * Override equals.
+     */
+    public boolean equals(Object obj)
+    {
+        if (!super.equals(obj)) return false; // super does class check
+        SimpleDateFormat that = (SimpleDateFormat) obj;
+        return (pattern.equals(that.pattern)
+                && formatData.equals(that.formatData));
+    }
+
+    /**
+     * Override readObject.
+     */
+    private void readObject(ObjectInputStream stream)
+         throws IOException, ClassNotFoundException {
+             stream.defaultReadObject();
+             if (serialVersionOnStream < 1) {
+                 // didn't have defaultCenturyStart field
+                 initializeDefaultCentury();
+             }
+             else {
+                 // fill in dependent transient field
+                 parseAmbiguousDatesAsAfter(defaultCenturyStart);
+             }
+             serialVersionOnStream = currentSerialVersion;
+    }
+}
diff --git a/src/com/ibm/text/StringCharacterIterator.java b/src/com/ibm/text/StringCharacterIterator.java
new file mode 100755
index 0000000..6b9f5a3
--- /dev/null
+++ b/src/com/ibm/text/StringCharacterIterator.java
@@ -0,0 +1,269 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/StringCharacterIterator.java,v $ 
+ * $Date: 2000/03/10 04:07:23 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+
+// NOTE:  This class is identical to java.text.StringCharacterIterator
+// in JDK 1.2.  It's copied here because the JDK 1.1 version of
+// StringCharacterIterator has a bug that prevents it from working
+// right with RuleBasedBreakIterator.  This class is unnecessary
+// when using RuleBasedBreakIterator with JDK 1.2.
+
+package com.ibm.text;
+import java.text.CharacterIterator;
+
+/**
+ * <code>StringCharacterIterator</code> implements the
+ * <code>CharacterIterater</code> protocol for a <code>String</code>.
+ * The <code>StringCharacterIterator</code> class iterates over the
+ * entire <code>String</code>.
+ *
+ * @see CharacterIterator
+ */
+
+public final class StringCharacterIterator implements CharacterIterator
+{
+    private String text;
+    private int begin;
+    private int end;
+    // invariant: begin <= pos <= end
+    private int pos;
+
+    /**
+     * Constructs an iterator with an initial index of 0.
+     */
+    public StringCharacterIterator(String text)
+    {
+        this(text, 0);
+    }
+
+    /**
+     * Constructs an iterator with the specified initial index.
+     *
+     * @param  text   The String to be iterated over
+     * @param  pos    Initial iterator position
+     */
+    public StringCharacterIterator(String text, int pos)
+    {
+    this(text, 0, text.length(), pos);
+    }
+
+    /**
+     * Constructs an iterator over the given range of the given string, with the
+     * index set at the specified position.
+     *
+     * @param  text   The String to be iterated over
+     * @param  begin  Index of the first character
+     * @param  end    Index of the character following the last character
+     * @param  pos    Initial iterator position
+     */
+    public StringCharacterIterator(String text, int begin, int end, int pos) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+
+        if (begin < 0 || begin > end || end > text.length()) {
+            throw new IllegalArgumentException("Invalid substring range");
+        }
+
+        if (pos < begin || pos > end) {
+            throw new IllegalArgumentException("Invalid position");
+        }
+
+        this.begin = begin;
+        this.end = end;
+        this.pos = pos;
+    }
+
+    /**
+     * Reset this iterator to point to a new string.  This package-visible
+     * method is used by other java.text classes that want to avoid allocating
+     * new StringCharacterIterator objects every time their setText method
+     * is called.
+     *
+     * @param  text   The String to be iterated over
+     */
+    public void setText(String text) {
+        if (text == null) {
+            throw new NullPointerException();
+        }
+        this.text = text;
+        this.begin = 0;
+        this.end = text.length();
+        this.pos = 0;
+    }
+
+    /**
+     * Implements CharacterIterator.first() for String.
+     * @see CharacterIterator#first
+     */
+    public char first()
+    {
+        pos = begin;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.last() for String.
+     * @see CharacterIterator#last
+     */
+    public char last()
+    {
+        if (end != begin) {
+            pos = end - 1;
+        } else {
+            pos = end;
+        }
+        return current();
+     }
+
+    /**
+     * Implements CharacterIterator.setIndex() for String.
+     * @see CharacterIterator#setIndex
+     */
+    public char setIndex(int p)
+    {
+    if (p < begin || p > end) {
+            throw new IllegalArgumentException("Invalid index");
+    }
+        pos = p;
+        return current();
+    }
+
+    /**
+     * Implements CharacterIterator.current() for String.
+     * @see CharacterIterator#current
+     */
+    public char current()
+    {
+        if (pos >= begin && pos < end) {
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.next() for String.
+     * @see CharacterIterator#next
+     */
+    public char next()
+    {
+        if (pos < end - 1) {
+            pos++;
+            return text.charAt(pos);
+        }
+        else {
+            pos = end;
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.previous() for String.
+     * @see CharacterIterator#previous
+     */
+    public char previous()
+    {
+        if (pos > begin) {
+            pos--;
+            return text.charAt(pos);
+        }
+        else {
+            return DONE;
+        }
+    }
+
+    /**
+     * Implements CharacterIterator.getBeginIndex() for String.
+     * @see CharacterIterator#getBeginIndex
+     */
+    public int getBeginIndex()
+    {
+        return begin;
+    }
+
+    /**
+     * Implements CharacterIterator.getEndIndex() for String.
+     * @see CharacterIterator#getEndIndex
+     */
+    public int getEndIndex()
+    {
+        return end;
+    }
+
+    /**
+     * Implements CharacterIterator.getIndex() for String.
+     * @see CharacterIterator#getIndex
+     */
+    public int getIndex()
+    {
+        return pos;
+    }
+
+    /**
+     * Compares the equality of two StringCharacterIterator objects.
+     * @param obj the StringCharacterIterator object to be compared with.
+     * @return true if the given obj is the same as this
+     * StringCharacterIterator object; false otherwise.
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof StringCharacterIterator)) {
+            return false;
+        }
+
+        StringCharacterIterator that = (StringCharacterIterator) obj;
+
+        if (hashCode() != that.hashCode()) {
+            return false;
+        }
+        if (!text.equals(that.text)) {
+            return false;
+        }
+        if (pos != that.pos || begin != that.begin || end != that.end) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Computes a hashcode for this iterator.
+     * @return A hash code
+     */
+    public int hashCode()
+    {
+        return text.hashCode() ^ pos ^ begin ^ end;
+    }
+
+    /**
+     * Creates a copy of this iterator.
+     * @return A copy of this
+     */
+    public Object clone()
+    {
+        try {
+            StringCharacterIterator other
+            = (StringCharacterIterator) super.clone();
+            return other;
+        }
+        catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+}
diff --git a/src/com/ibm/text/StringSearch.java b/src/com/ibm/text/StringSearch.java
new file mode 100755
index 0000000..3aceacc
--- /dev/null
+++ b/src/com/ibm/text/StringSearch.java
@@ -0,0 +1,630 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/StringSearch.java,v $ 
+ * $Date: 2000/03/10 04:07:24 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+import java.text.BreakIterator;
+import java.text.CharacterIterator;
+import java.text.CollationElementIterator;
+import java.text.Collator;
+import java.text.RuleBasedCollator;
+import java.text.StringCharacterIterator;
+import java.util.Locale;
+
+/**
+ * <code>StringSearch</code> is a <code>SearchIterator</code> that provides
+ * language-sensitive text searching based on the comparison rules defined
+ * in a {@link RuleBasedCollator} object.
+ * Instances of <code>StringSearch</code> function as iterators
+ * maintain a current position and scan over text returning the index of
+ * characters where the pattern occurs and the length of each match.
+ * <p>
+ * <code>StringSearch</code> uses a version of the fast Boyer-Moore search
+ * algorithm that has been adapted to work with the large character set of
+ * Unicode.  See "Efficient Text Searching in Java", to be published in
+ * <i>Java Report</i> in February, 1999, for further information on the algorithm.
+ * <p>
+ * Consult the <code>SearchIterator</code> documentation for information on
+ * and examples of how to use instances of this class to implement text
+ * searching.  <code>SearchIterator</code> provides all of the necessary
+ * API; this class only provides constructors and internal implementation
+ * methods.
+ *
+ * @see SearchIterator
+ * @see java.text.RuleBasedCollator
+ *
+ * @author Laura Werner
+ * @version 1.0
+ */
+public final class StringSearch extends SearchIterator
+{
+    /**
+     * Construct a <code>StringSearch</code> object using a specific collator and set
+     * of boundary-detection rules.
+     * <p>
+     * @param pat       The text for which this object will search.
+     *
+     * @param target    The text in which to search for the pattern.
+     *
+     * @param coll      A <code>RuleBasedCollator</code> object which defines the
+     *                  language-sensitive comparison rules used to determine 
+     *                  whether text in the pattern and target matches.
+     *
+     * @param breaker   A <code>BreakIterator</code> object used to constrain the matches
+     *                  that are found.  Matches whose start and end indices
+     *                  in the target text are not boundaries as determined
+     *                  by the <code>BreakIterator</code> are ignored.  If this behavior
+     *                  is not desired, <code>null</code> can be passed in instead.
+     */
+    public StringSearch(String pat, CharacterIterator target,
+                            RuleBasedCollator coll, BreakIterator breaker) {
+        super(target, breaker);
+
+        pattern = pat;
+        collator = coll;
+        strength = coll.getStrength();
+        iter = collator.getCollationElementIterator(target);
+        
+        initialize();   // Initialize the Boyer-Moore tables
+    }
+
+    /**
+     * Construct a <code>StringSearch</code> object using a specific collator.
+     * <p>
+     * @param pattern   The text for which this object will search.
+     *
+     * @param target    The text in which to search for the pattern.
+     *
+     * @param collator  A <code>RuleBasedCollator</code> object which defines the
+     *                  language-sensitive comparison rules used to determine 
+     *                  whether text in the pattern and target matches.
+     */
+    public StringSearch(String pattern,
+                            CharacterIterator target,
+                            RuleBasedCollator collator) {
+        this(pattern, target, collator, BreakIterator.getCharacterInstance());
+    }
+
+    /**
+     * Construct a <code>StringSearch</code> object using the collator and
+     * character boundary detection rules for a given locale
+     * <p>
+     * @param pattern   The text for which this object will search.
+     *
+     * @param target    The text in which to search for the pattern.
+     *
+     * @param loc       The locale whose collation and break-detection rules
+     *                  should be used.
+     *
+     * @exception       ClassCastException thrown if the collator for the specified
+     *                  locale is not a RuleBasedCollator.
+     */
+    public StringSearch(String pattern, CharacterIterator target, Locale loc) {
+        this(pattern, target,
+             (RuleBasedCollator) Collator.getInstance(loc),
+             BreakIterator.getCharacterInstance(loc));
+    }
+
+    /**
+     * Construct a <code>StringSearch</code> object using the collator for the default
+     * locale
+     * <p>
+     * @param pattern   The text for which this object will search.
+     *
+     * @param target    The text in which to search for the pattern.
+     *
+     * @param collator  A <code>RuleBasedCollator</code> object which defines the
+     *                  language-sensitive comparison rules used to determine 
+     *                  whether text in the pattern and target matches.
+     */
+    public StringSearch(String pattern, String target) {
+        this(pattern,
+             new StringCharacterIterator(target),
+             (RuleBasedCollator)Collator.getInstance(),
+             BreakIterator.getCharacterInstance());
+    }
+
+    //-------------------------------------------------------------------
+    // Getters and Setters
+    //-------------------------------------------------------------------
+    
+    /**
+     * Sets this object's strength property. The strength determines the
+     * minimum level of difference considered significant during a
+     * search.  Generally, {@link Collator#TERTIARY} and 
+     * {@link Collator#IDENTICAL} indicate that all differences are
+     * considered significant, {@link Collator#SECONDARY} indicates
+     * that upper/lower case distinctions should be ignored, and
+     * {@link Collator#PRIMARY} indicates that both case and accents
+     * should be ignored.  However, the exact meanings of these constants
+     * are determined by individual Collator objects.
+     * <p>
+     * @see java.text.Collator#PRIMARY
+     * @see java.text.Collator#SECONDARY
+     * @see java.text.Collator#TERTIARY
+     * @see java.text.Collator#IDENTICAL
+     */
+    public void setStrength(int newStrength) {
+        strength = newStrength;
+        
+        // Due to a bug (?) in CollationElementIterator, we must set the
+        // collator's strength as well, since the iterator is going to
+        // mask out the portions of the collation element that are not
+        // relevant for the collator's current strength setting
+        // Note that this makes it impossible to share a Collator among
+        // multiple StringSearch objects if you adjust Strength settings.
+        collator.setStrength(strength);
+        initialize();
+    }
+    
+    
+    /**
+     * Returns this object's strength property, which indicates what level
+     * of differences are considered significant during a search.
+     * <p>
+     * @see #setStrength
+     */
+    public int getStrength() {
+        return strength;
+    }
+    
+    /**
+     * Set the collator to be used for this string search.  Also changes
+     * the search strength to match that of the new collator.
+     * <p>
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     * <p>
+     * @see #getCollator
+     */
+    public void setCollator(RuleBasedCollator coll) {
+        collator = coll;
+        strength = collator.getStrength();
+        
+        // Also need to recompute the pattern and get a new target iterator
+        iter = collator.getCollationElementIterator(getTarget());
+        initialize();
+    }
+    
+    /**
+     * Return the RuleBasedCollator being used for this string search.
+     */
+    public RuleBasedCollator getCollator() {
+        return collator;
+    }
+    
+    /**
+     * Set the pattern for which to search.  
+     * This method causes internal data such as Boyer-Moore shift tables
+     * to be recalculated, but the iterator's position is unchanged.
+     */
+    public void setPattern(String pat) {
+        pattern = pat;
+        initialize();
+    }
+    
+    /**
+     * Returns the pattern for which this object is searching.
+     */
+    public String getPattern() {
+        return pattern;
+    }
+    
+    /**
+     * Set the target text which should be searched and resets the
+     * iterator's position to point before the start of the new text.
+     * This method is useful if you want to re-use an iterator to
+     * search for the same pattern within a different body of text.
+     */
+    public void setTarget(CharacterIterator target) {
+        super.setTarget(target);
+        
+        // Since we're caching a CollationElementIterator, recreate it
+        iter = collator.getCollationElementIterator(target);
+    }
+
+    //-------------------------------------------------------------------
+    // Privates
+    //-------------------------------------------------------------------
+
+    /**
+     * Search forward for matching text, starting at a given location.
+     * Clients should not call this method directly; instead they should call
+     * {@link SearchIterator#next}.
+     * <p>
+     * If a match is found, this method returns the index at which the match
+     * starts and calls {@link SearchIterator#setMatchLength}
+     * with the number of characters in the target
+     * text that make up the match.  If no match is found, the method returns
+     * <code>DONE</code> and does not call <tt>setMatchLength</tt>.
+     * <p>
+     * @param start The index in the target text at which the search starts.
+     *
+     * @return      The index at which the matched text in the target starts, or DONE
+     *              if no match was found.
+     * <p>
+     * @see SearchIterator#next
+     * @see SearchIterator#DONE
+     */
+    protected int handleNext(int start)
+    {
+        CharacterIterator target = getTarget();
+        
+        int mask = getMask(strength);
+        int done = CollationElementIterator.NULLORDER & mask;
+        
+        if (DEBUG) {
+            debug("-------------------------handleNext-----------------------------------");
+            debug("");
+            debug("strength=" + strength + ", mask=" + Integer.toString(mask,16)
+                + ", done=" + Integer.toString(done,16));
+            debug("decomp=" + collator.getDecomposition());
+            
+            debug("target.begin=" + getTarget().getBeginIndex());
+            debug("target.end=" + getTarget().getEndIndex());
+            debug("start = " + start);
+        }
+        
+        int index = start + minLen;
+        int matchEnd = 0;
+
+        while (index <= target.getEndIndex())
+        {
+            int patIndex = normLen;
+            int tval = 0, pval = 0;
+            boolean getP = true;
+
+            iter.setOffset(index);
+            matchEnd = index;
+            
+            if (DEBUG) debug(" outer loop: patIndex=" + patIndex + ", index=" + index);
+            
+            while ((patIndex > 0 || getP == false) && iter.getOffset() > start)
+            {
+                if (DEBUG) {
+                    debug("  inner loop: patIndex=" + patIndex + " iter=" + iter.getOffset());
+                    debug("   getP=" + getP);
+                }
+                
+                // Get the previous character in both the pattern and the target
+                tval = iter.previous() & mask;
+                
+                if (getP) pval = valueList[--patIndex];
+                getP = true;
+                
+                if (DEBUG) debug("   pval=" + Integer.toString(pval,16) + ", tval=" + Integer.toString(tval,16));
+                
+                if (tval == 0) {       // skip tval, use same pval
+                    if (DEBUG) debug("   tval is ignorable");
+                    getP = false;    
+                }
+                else if (pval != tval) {    // Mismatch, skip ahead
+                    if (DEBUG) debug("   mismatch: skippping " + getShift(tval, patIndex));
+                    
+                    index += getShift(tval, patIndex);
+                    break;
+                }
+                else if (patIndex == 0) {
+                    // The values matched, and we're at the beginning of the pattern,
+                    // which means we matched the whole thing.
+                    start = iter.getOffset();
+                    setMatchLength(matchEnd - start);
+                    if (DEBUG) debug("Found match at index "+ start );
+                    return start;
+                }
+            }
+            if (DEBUG) debug(" end of inner loop: patIndex=" + patIndex + " iter=" + iter.getOffset());
+            if (DEBUG) debug("   getP=" + getP);
+            
+            if (iter.getOffset() <= start) {
+                // We hit the beginning of the text being searched, which is
+                // possible if it contains lots of ignorable characters.
+                // Advance one character and try again.
+                if (DEBUG) debug("hit beginning of target; advance by one");
+                index++;
+            }
+        }
+        if (DEBUG) debug("Fell off end of outer loop; returning DONE");
+        return DONE;
+    }
+
+    /**
+     * Search backward for matching text ,starting at a given location.
+     * Clients should not call this method directly; instead they should call
+     * <code>SearchIterator.previous()</code>, which this method overrides.
+     * <p>
+     * If a match is found, this method returns the index at which the match
+     * starts and calls {@link SearchIterator#setMatchLength}
+     * with the number of characters in the target
+     * text that make up the match.  If no match is found, the method returns
+     * <code>DONE</code> and does not call <tt>setMatchLength</tt>.
+     * <p>
+     * @param start The index in the target text at which the search starts.
+     *
+     * @return      The index at which the matched text in the target starts, or DONE
+     *              if no match was found.
+     * <p>
+     * @see SearchIterator#previous
+     * @see SearchIterator#DONE
+     */
+    protected int handlePrev(int start)
+    {
+        int patLen = normLen;
+        int index = start - minLen;
+
+        int mask = getMask(strength);
+        int done = CollationElementIterator.NULLORDER & mask;
+
+        if (DEBUG) {
+            debug("-------------------------handlePrev-----------------------------------");
+            debug("");
+            debug("strength=" + strength + ", mask=" + Integer.toString(mask,16)
+                + ", done=" + Integer.toString(done,16));
+            debug("decomp=" + collator.getDecomposition());
+            
+            debug("target.begin=" + getTarget().getBeginIndex());
+            debug("target.end=" + getTarget().getEndIndex());
+        }
+        
+        while (index >= 0) {
+            int patIndex = 0;
+            int tval = 0, pval = 0;
+            boolean getP = true;
+
+            iter.setOffset(index);
+
+            if (DEBUG) debug(" outer loop: patIndex=" + patIndex + ", index=" + index);
+            
+            while ((patIndex < patLen || !getP) && iter.getOffset() < start)
+            {
+                if (DEBUG) {
+                    debug("  inner loop: patIndex=" + patIndex + " iter=" + iter.getOffset());
+                }
+                tval = iter.next() & mask;
+                if (getP) pval = valueList[patIndex++];
+                getP = true;
+
+                if (DEBUG) debug("   pval=" + Integer.toString(pval,16) + ", tval=" + Integer.toString(tval,16));
+
+                if (tval == done) {
+                    if (DEBUG) debug("   end of target; no match");
+                    return DONE;
+                }
+                else if (tval == 0) {
+                    if (DEBUG) debug("   tval is ignorable");
+                    getP = false;
+                }
+                else if (pval != tval) {
+                    // We didn't match this pattern.  Skip ahead
+                    if (DEBUG) debug("   mismatch: skippping " + getBackShift(tval, patIndex));
+                    
+                    int shift = getBackShift(tval, patIndex);
+                    index -= shift;
+                    break;
+                }
+                else if (patIndex == patLen) {
+                    // The elements matched and we're at the end of the pattern,
+                    // which means we matched the whole thing.
+                    setMatchLength(iter.getOffset() - index);
+                    return index;
+                }
+            }
+            if (iter.getOffset() >= start) {
+                // We hit the end of the text being searched, which is
+                // possible if it contains lots of ignorable characters.
+                // Back up one character and try again.
+                if (DEBUG) debug("hit end of target; back by one");
+                index--;
+            }
+        }
+        return DONE;
+    }
+
+    /**
+     * Return a bitmask that will select only the portions of a collation 
+     * element that are significant at the given strength level.
+     */
+    private static final int getMask(int strength) {
+        switch (strength) {
+            case Collator.PRIMARY:
+                return 0xFFFF0000;
+            case Collator.SECONDARY:
+                return 0xFFFFFF00;
+            default:
+                return 0xFFFFFFFF;
+        }
+    }
+    
+
+    //------------------------------------------------------------------------
+    // Private Data
+    //
+    private CollationElementIterator    iter;
+    private RuleBasedCollator           collator;
+    private int                         strength;
+    
+    //------------------------------------------------------------------------
+    // Everything from here on down is the data used to represent the
+    // Boyer-Moore shift tables and the code that generates and manipulates
+    // them.
+    //
+    private static final int MAX_TABLE = 256;        // Size of the shift tables
+    
+    private int     valueList[] = null;
+    private int     shiftTable[] = new int[MAX_TABLE];
+    private int     backShiftTable[] = new int[MAX_TABLE];
+
+    private String  pattern;            // The pattern string
+    private int     normLen = 0;        // num. of collation elements in pattern.
+    private int     minLen = 0;         // Min of composed, decomposed versions
+    private int     maxLen = 0;         // Max
+
+    private void initialize() {
+        if (DEBUG)  {
+            debug("-------------------------initialize-----------------------------------");
+            debug("pattern=" + pattern);
+        }
+        
+        CollationElementIterator iter = collator.getCollationElementIterator(pattern);
+
+        int mask = getMask(strength);
+
+        // See how many non-ignorable collation keys are in the text
+        normLen = 0;
+        int elem;
+        while ((elem = iter.next()) != CollationElementIterator.NULLORDER)
+        {
+            if ((elem & mask) != 0) {
+                normLen++;
+            }
+        }
+
+        // Save them all
+        valueList = new int[normLen];
+        int expandLen = 0;
+        iter.reset();
+        
+        for (int i = 0; i < normLen; i++)
+        {
+            elem = iter.next();
+
+            if ((elem & mask) != 0) {
+                valueList[i] = elem & mask;
+                
+            }
+            // Keep track of whether there are any expanding-character
+            // sequences that can result in one of the characters that's in
+            // the pattern.  If there are, we have to reduce the shift
+            // distances calculated below to account for it.
+            expandLen += iter.getMaxExpansion(elem) - 1;
+        }
+
+        //
+        // We need to remember the size of the composed and decomposed
+        // versions of the string.  Standard Boyer-Moore shift calculations
+        // can be wrong by an amount up to that difference, since a small
+        // small number of characters in the pattern can map to a larger
+        // number in the text being searched, or vice-versa.
+        //
+        int uniLen = pattern.length();
+        maxLen = Math.max(normLen, uniLen);
+        minLen = Math.min(normLen, uniLen) - expandLen;
+
+        if (DEBUG) debug("normLen=" + normLen + ", expandLen=" + expandLen
+                        + ", maxLen=" + maxLen + ", minLen=" + minLen);
+        
+        // Now initialize the shift tables
+        //
+        // NOTE: This is the most conservative way to build them.  If we had a way
+        // of knowing that there were no expanding/contracting chars in the rules,
+        // we could get rid of the "- 1" in the shiftTable calculations.
+        // But all of the default collators have at least one expansion or
+        // contraction, so it probably doesn't matter anyway.
+        //
+        for (int i = 0; i < MAX_TABLE; i++) {
+            shiftTable[i] = backShiftTable[i] = minLen;
+        }
+
+        for (int i = 0; i < normLen-1; i++) {
+            shiftTable[hash(valueList[i])] = Math.max(minLen - i - 1, 1);
+        }
+        shiftTable[hash(valueList[normLen-1])] = 1;
+        
+        for (int i = normLen - 1; i > 0; i--) {
+            backShiftTable[hash(valueList[i])] = i;
+        }
+        backShiftTable[hash(valueList[0])] = 1;
+
+        if (DEBUG) dumpTables();
+    }
+
+    /**
+     * Method used by StringSearch to determine how far to the right to
+     * shift the pattern during a Boyer-Moore search.  
+     *
+     * @param curValue  The current value in the target text
+     * @param curIndex  The index in the pattern at which we failed to match
+     *                  curValue in the target text.
+     */
+    private int getShift( int curValue, int curIndex ) {
+        int shiftAmt = shiftTable[hash(curValue)];
+
+        if (minLen != maxLen) {
+            int adjust = normLen - curIndex;
+            if (shiftAmt > adjust + 1) {
+                if (DEBUG) debug("getShift: adjusting by " + adjust);
+                shiftAmt -= adjust;
+            }
+        }
+        return shiftAmt;
+    }
+
+    /**
+     * Method used by StringSearch to determine how far to the left to
+     * shift the pattern during a reverse Boyer-Moore search.  
+     *
+     * @param curValue  The current value in the target text
+     * @param curIndex  The index in the pattern at which we failed to match
+     *                  curValue in the target text.
+     */
+    private int getBackShift( int curValue, int curIndex ) {
+        int shiftAmt = backShiftTable[hash(curValue)];
+
+        if (minLen != maxLen) {
+            int adjust = normLen - (minLen - curIndex);
+            if (shiftAmt > adjust + 1) {
+                if (DEBUG) debug("getBackShift: adjusting by " + adjust);
+                shiftAmt -= adjust;
+            }
+        }
+        return shiftAmt;
+    }
+
+    /**
+     * Hash a collation element from its full size (32 bits) down into a
+     * value that can be used as an index into the shift tables.  Right
+     * now we do a modulus by the size of the hash table.
+     *
+     * TODO: At some point I should experiment to see whether a slightly
+     * more complicated hash function gives us a better distribution
+     * on multilingual text.  I doubt it will have much effect on
+     * performance, though.
+     */
+    private static final int hash(int order) {
+        return CollationElementIterator.primaryOrder(order) % MAX_TABLE;
+    }
+
+
+    //-------------------------------------------------------------------------
+    // Debugging support...
+    //-------------------------------------------------------------------------
+
+    static private final boolean DEBUG = false;
+
+    static void debug(String str) {
+        System.out.println(str);
+    }
+
+    void dumpTables() {
+        for (int i = 0; i < MAX_TABLE; i++) {
+            if (shiftTable[i] != minLen) {
+                debug("shift[" + Integer.toString(i,16) + "] = " + shiftTable[i]);
+            }
+        }
+        for (int i = 0; i < MAX_TABLE; i++) {
+            if (backShiftTable[i] != minLen) {
+                debug("backShift[" + Integer.toString(i,16) + "] = " + backShiftTable[i]);
+            }
+        }
+    }
+};
diff --git a/src/com/ibm/text/SymbolTable.java b/src/com/ibm/text/SymbolTable.java
new file mode 100755
index 0000000..8ff6f86
--- /dev/null
+++ b/src/com/ibm/text/SymbolTable.java
@@ -0,0 +1,25 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/SymbolTable.java,v $ 
+ * $Date: 2000/03/10 04:07:24 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+/**
+ * An interface that maps strings to objects.
+ */
+public interface SymbolTable {
+
+    /**
+     * Lookup the object associated with this string and return it.
+     * Return <tt>null</tt> if no such name exists.
+     */
+    Object lookup(String s);
+}
diff --git a/src/com/ibm/text/TransliterationRule.java b/src/com/ibm/text/TransliterationRule.java
new file mode 100755
index 0000000..5c154c7
--- /dev/null
+++ b/src/com/ibm/text/TransliterationRule.java
@@ -0,0 +1,450 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/TransliterationRule.java,v $ 
+ * $Date: 2000/03/10 04:07:24 $ 
+ * $Revision: 1.14 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import com.ibm.util.Utility;
+
+/**
+ * A transliteration rule used by
+ * <code>RuleBasedTransliterator</code>.
+ * <code>TransliterationRule</code> is an immutable object.
+ *
+ * <p>A rule consists of an input pattern and an output string.  When
+ * the input pattern is matched, the output string is emitted.  The
+ * input pattern consists of zero or more characters which are matched
+ * exactly (the key) and optional context.  Context must match if it
+ * is specified.  Context may be specified before the key, after the
+ * key, or both.  The key, preceding context, and following context
+ * may contain variables.  Variables represent a set of Unicode
+ * characters, such as the letters <i>a</i> through <i>z</i>.
+ * Variables are detected by looking up each character in a supplied
+ * variable list to see if it has been so defined. 
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: TransliterationRule.java,v $ $Revision: 1.14 $ $Date: 2000/03/10 04:07:24 $
+ *
+ * $Log: TransliterationRule.java,v $
+ * Revision 1.14  2000/03/10 04:07:24  johnf
+ * Copyright update
+ *
+ * Revision 1.13  2000/02/10 07:36:25  johnf
+ * fixed imports for com.ibm.util.Utility
+ *
+ * Revision 1.12  2000/02/03 18:11:19  Alan
+ * Use array rather than hashtable for char-to-set map
+ *
+ * Revision 1.11  2000/01/27 18:59:19  Alan
+ * Use Position rather than int[] and move all subclass overrides to one method (handleTransliterate)
+ *
+ * Revision 1.10  2000/01/18 20:36:17  Alan
+ * Make UnicodeSet inherit from UnicodeFilter
+ *
+ * Revision 1.9  2000/01/18 02:38:55  Alan
+ * Fix filtering bug.
+ *
+ * Revision 1.8  2000/01/13 23:53:23  Alan
+ * Fix bugs found during ICU port
+ *
+ * Revision 1.7  2000/01/11 04:12:06  Alan
+ * Cleanup, embellish comments
+ *
+ * Revision 1.6  2000/01/11 02:25:03  Alan
+ * Rewrite UnicodeSet and RBT parsers for better performance and new syntax
+ *
+ * Revision 1.5  2000/01/04 21:43:57  Alan
+ * Add rule indexing, and move masking check to TransliterationRuleSet.
+ *
+ * Revision 1.4  1999/12/22 01:40:54  Alan
+ * Consolidate rule pattern anteContext, key, and postContext into one string.
+ *
+ * Revision 1.3  1999/12/22 01:05:54  Alan
+ * Improve masking checking; turn it off by default, for better performance
+ *
+ * Revision 1.2  1999/12/21 23:58:44  Alan
+ * Detect a>x masking a>y
+ *
+ */
+class TransliterationRule {
+    /**
+     * Constant returned by <code>getMatchDegree()</code> indicating a mismatch
+     * between the text and this rule.  One or more characters of the context or
+     * key do not match the text.
+     * @see #getMatchDegree
+     */
+    public static final int MISMATCH      = 0;
+
+    /**
+     * Constant returned by <code>getMatchDegree()</code> indicating a partial
+     * match between the text and this rule.  All characters of the text match
+     * the corresponding context or key, but more characters are required for a
+     * complete match.  There are some key or context characters at the end of
+     * the pattern that remain unmatched because the text isn't long enough.
+     * @see #getMatchDegree
+     */
+    public static final int PARTIAL_MATCH = 1;
+
+    /**
+     * Constant returned by <code>getMatchDegree()</code> indicating a complete
+     * match between the text and this rule.  The text matches all context and
+     * key characters.
+     * @see #getMatchDegree
+     */
+    public static final int FULL_MATCH    = 2;
+
+    /**
+     * The string that must be matched, consisting of the anteContext, key,
+     * and postContext, concatenated together, in that order.  Some components
+     * may be empty (zero length).
+     * @see anteContextLength
+     * @see keyLength
+     */
+    private String pattern;
+
+    /**
+     * The string that is emitted if the key, anteContext, and postContext
+     * are matched.
+     */
+    private String output;
+
+    /**
+     * The length of the string that must match before the key.  If
+     * zero, then there is no matching requirement before the key.
+     * Substring [0,anteContextLength) of pattern is the anteContext.
+     */
+    private int anteContextLength;
+
+    /**
+     * The length of the key.  Substring [anteContextLength,
+     * anteContextLength + keyLength) is the key.
+     */
+    private int keyLength;
+
+    /**
+     * The position of the cursor after emitting the output string, from 0 to
+     * output.length().  For most rules with no special cursor specification,
+     * the cursorPos is output.length().
+     */
+    private int cursorPos;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Construct a new rule with the given input, output text, and other
+     * attributes.  A cursor position may be specified for the output text.
+     * @param input input string, including key and optional ante and
+     * post context
+     * @param anteContextPos offset into input to end of ante context, or -1 if
+     * none.  Must be <= input.length() if not -1.
+     * @param postContextPos offset into input to start of post context, or -1
+     * if none.  Must be <= input.length() if not -1, and must be >=
+     * anteContextPos.
+     * @param output output string
+     * @param cursorPos offset into output at which cursor is located, or -1 if
+     * none.  If less than zero, then the cursor is placed after the
+     * <code>output</code>; that is, -1 is equivalent to
+     * <code>output.length()</code>.  If greater than
+     * <code>output.length()</code> then an exception is thrown.
+     */
+    public TransliterationRule(String input,
+                               int anteContextPos, int postContextPos,
+                               String output,
+                               int cursorPos) {
+        // Do range checks only when warranted to save time
+        if (anteContextPos < 0) {
+            anteContextLength = 0;
+        } else {
+            if (anteContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid ante context");
+            }
+            anteContextLength = anteContextPos;
+        }
+        if (postContextPos < 0) {
+            keyLength = input.length() - anteContextLength;
+        } else {
+            if (postContextPos < anteContextLength ||
+                postContextPos > input.length()) {
+                throw new IllegalArgumentException("Invalid post context");
+            }
+            keyLength = postContextPos - anteContextLength;
+        }
+        if (cursorPos < 0) {
+            this.cursorPos = output.length();
+        } else {
+            if (cursorPos > output.length()) {
+                throw new IllegalArgumentException("Invalid cursor position");
+            }
+            this.cursorPos = cursorPos;
+        }
+        pattern = input;
+        this.output = output;
+    }
+
+    /**
+     * Return the length of the key.  Equivalent to <code>getKey().length()</code>.
+     * @return the length of the match key.
+     */
+    public int getKeyLength() {
+        return keyLength;
+    }
+
+    /**
+     * Return the output string.
+     * @return the output string.
+     */
+    public String getOutput() {
+        return output;
+    }
+
+    /**
+     * Return the position of the cursor within the output string.
+     * @return a value from 0 to <code>getOutput().length()</code>, inclusive.
+     */
+    public int getCursorPos() {
+        return cursorPos;
+    }
+
+    /**
+     * Return the preceding context length.  This method is needed to
+     * support the <code>Transliterator</code> method
+     * <code>getMaximumContextLength()</code>.
+     */
+    public int getAnteContextLength() {
+        return anteContextLength;
+    }
+
+    /**
+     * Internal method.  Returns 8-bit index value for this rule.
+     * This is the low byte of the first character of the key,
+     * unless the first character of the key is a set.  If it's a
+     * set, or otherwise can match multiple keys, the index value is -1.
+     */
+    final int getIndexValue(RuleBasedTransliterator.Data variables) {
+        if (anteContextLength == pattern.length()) {
+            // A pattern with just ante context {such as foo)>bar} can
+            // match any key.
+            return -1;
+        }
+        char c = pattern.charAt(anteContextLength);
+        return variables.lookup(c) == null ? (c & 0xFF) : -1;
+    }
+
+    /**
+     * Internal method.  Returns true if this rule matches the given
+     * index value.  The index value is an 8-bit integer, 0..255,
+     * representing the low byte of the first character of the key.
+     * It matches this rule if it matches the first character of the
+     * key, or if the first character of the key is a set, and the set
+     * contains any character with a low byte equal to the index
+     * value.  If the rule contains only ante context, as in foo)>bar,
+     * then it will match any key.
+     */
+    final boolean matchesIndexValue(int v, RuleBasedTransliterator.Data variables) {
+        if (anteContextLength == pattern.length()) {
+            // A pattern with just ante context {such as foo)>bar} can
+            // match any key.
+            return true;
+        }
+        char c = pattern.charAt(anteContextLength);
+        UnicodeSet set = variables.lookup(c);
+        return set == null ? (c & 0xFF) == v : set.containsIndexValue(v);
+    }
+
+    /**
+     * Return true if this rule masks another rule.  If r1 masks r2 then
+     * r1 matches any input string that r2 matches.  If r1 masks r2 and r2 masks
+     * r1 then r1 == r2.  Examples: "a>x" masks "ab>y".  "a>x" masks "a[b]>y".
+     * "[c]a>x" masks "[dc]a>y".
+     */
+    public boolean masks(TransliterationRule r2) {
+        /* Rule r1 masks rule r2 if the string formed of the
+         * antecontext, key, and postcontext overlaps in the following
+         * way:
+         *
+         * r1:      aakkkpppp
+         * r2:     aaakkkkkpppp
+         *            ^
+         * 
+         * The strings must be aligned at the first character of the
+         * key.  The length of r1 to the left of the alignment point
+         * must be <= the length of r2 to the left; ditto for the
+         * right.  The characters of r1 must equal (or be a superset
+         * of) the corresponding characters of r2.  The superset
+         * operation should be performed to check for UnicodeSet
+         * masking.
+         */
+
+        /* LIMITATION of the current mask algorithm: Some rule
+         * maskings are currently not detected.  For example,
+         * "{Lu}]a>x" masks "A]a>y".  This can be added later. TODO
+         */
+
+        int left = anteContextLength;
+        int left2 = r2.anteContextLength;
+        int right = pattern.length() - left;
+        int right2 = r2.pattern.length() - left2;
+        return left <= left2 && right <= right2 &&
+            r2.pattern.substring(left2 - left).startsWith(pattern);
+    }
+
+    /**
+     * Return a string representation of this object.
+     * @return string representation of this object
+     */
+    public String toString() {
+        return getClass().getName() + '{'
+            + Utility.escape((anteContextLength > 0 ? ("(" + pattern.substring(0, anteContextLength) +
+                                              ") ") : "")
+                     + pattern.substring(anteContextLength, anteContextLength + keyLength)
+                     + (anteContextLength + keyLength < pattern.length() ?
+                        (" (" + pattern.substring(anteContextLength + keyLength) + ")") : "")
+                     + " > "
+                     + (cursorPos < output.length()
+                        ? (output.substring(0, cursorPos) + '|' + output.substring(cursorPos))
+                        : output))
+            + '}';
+    }
+
+    /**
+     * Return true if this rule matches the given text.
+     * @param text the text, both translated and untranslated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param cursor position at which to translate next, representing offset
+     * into text.  This value must be between <code>start</code> and
+     * <code>limit</code>.
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    public final boolean matches(Replaceable text, int start, int limit,
+                                 int cursor, RuleBasedTransliterator.Data variables,
+                                 UnicodeFilter filter) {
+        // Match anteContext, key, and postContext
+        cursor -= anteContextLength;
+        if (cursor < start
+            || (cursor + pattern.length()) > limit) {
+            return false;
+        }
+        for (int i=0; i<pattern.length(); ++i, ++cursor) {
+            if (!charMatches(pattern.charAt(i), text.charAt(cursor),
+                             variables, filter)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Return the degree of match between this rule and the given text.  The
+     * degree of match may be mismatch, a partial match, or a full match.  A
+     * mismatch means at least one character of the text does not match the
+     * context or key.  A partial match means some context and key characters
+     * match, but the text is not long enough to match all of them.  A full
+     * match means all context and key characters match.
+     * @param text the text, both translated and untranslated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param cursor position at which to translate next, representing offset
+     * into text.  This value must be between <code>start</code> and
+     * <code>limit</code>.
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @return one of <code>MISMATCH</code>, <code>PARTIAL_MATCH</code>, or
+     * <code>FULL_MATCH</code>.
+     * @see #MISMATCH
+     * @see #PARTIAL_MATCH
+     * @see #FULL_MATCH
+     */
+    public int getMatchDegree(Replaceable text, int start, int limit,
+                              int cursor, RuleBasedTransliterator.Data variables,
+                              UnicodeFilter filter) {
+        int len = getRegionMatchLength(text, start, limit, cursor - anteContextLength,
+                                       pattern, variables, filter);
+        return len < anteContextLength ? MISMATCH :
+            (len < pattern.length() ? PARTIAL_MATCH : FULL_MATCH);
+    }
+
+    /**
+     * Return the number of characters of the text that match this rule.  If
+     * there is a mismatch, return -1.  If the text is not long enough to match
+     * any characters, return 0.
+     * @param text the text, both translated and untranslated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param cursor position at which to translate next, representing offset
+     * into text.  This value must be between <code>start</code> and
+     * <code>limit</code>.
+     * @param template the text to match against.  All characters must match.
+     * @param variables a dictionary of variables mapping <code>Character</code>
+     * to <code>UnicodeSet</code>
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @return -1 if there is a mismatch, 0 if the text is not long enough to
+     * match any characters, otherwise the number of characters of text that
+     * match this rule.
+     */
+    protected static int getRegionMatchLength(Replaceable text, int start,
+                                              int limit, int cursor,
+                                              String template,
+                                              RuleBasedTransliterator.Data variables,
+                                              UnicodeFilter filter) {
+        if (cursor < start) {
+            return -1;
+        }
+        int i;
+        for (i=0; i<template.length() && cursor<limit; ++i, ++cursor) {
+            if (!charMatches(template.charAt(i), text.charAt(cursor),
+                             variables, filter)) {
+                return -1;
+            }
+        }
+        return i;
+    }
+
+    /**
+     * Return true if the given key matches the given text.  This method
+     * accounts for the fact that the key character may represent a character
+     * set.  Note that the key and text characters may not be interchanged
+     * without altering the results.
+     * @param keyChar a character in the match key
+     * @param textChar a character in the text being transliterated
+     * @param variables a dictionary of variables mapping <code>Character</code>
+     * to <code>UnicodeSet</code>
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    protected static final boolean charMatches(char keyChar, char textChar,
+                                               RuleBasedTransliterator.Data variables,
+                                               UnicodeFilter filter) {
+        UnicodeSet set = null;
+        return (filter == null || filter.contains(textChar)) &&
+            (((set = variables.lookup(keyChar)) == null) ?
+             keyChar == textChar : set.contains(textChar));
+    }
+}
diff --git a/src/com/ibm/text/TransliterationRuleSet.java b/src/com/ibm/text/TransliterationRuleSet.java
new file mode 100755
index 0000000..ef18c34
--- /dev/null
+++ b/src/com/ibm/text/TransliterationRuleSet.java
@@ -0,0 +1,295 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/TransliterationRuleSet.java,v $ 
+ * $Date: 2000/03/10 04:07:24 $ 
+ * $Revision: 1.9 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.util.*;
+
+/**
+ * A set of rules for a <code>RuleBasedTransliterator</code>.  This set encodes
+ * the transliteration in one direction from one set of characters or short
+ * strings to another.  A <code>RuleBasedTransliterator</code> consists of up to
+ * two such sets, one for the forward direction, and one for the reverse.
+ *
+ * <p>A <code>TransliterationRuleSet</code> has one important operation, that of
+ * finding a matching rule at a given point in the text.  This is accomplished
+ * by the <code>findMatch()</code> method.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: TransliterationRuleSet.java,v $ $Revision: 1.9 $ $Date: 2000/03/10 04:07:24 $
+ *
+ * $Log: TransliterationRuleSet.java,v $
+ * Revision 1.9  2000/03/10 04:07:24  johnf
+ * Copyright update
+ *
+ * Revision 1.8  2000/02/03 18:11:19  Alan
+ * Use array rather than hashtable for char-to-set map
+ *
+ * Revision 1.7  2000/01/27 18:59:19  Alan
+ * Use Position rather than int[] and move all subclass overrides to one method (handleTransliterate)
+ *
+ * Revision 1.6  2000/01/18 20:36:17  Alan
+ * Make UnicodeSet inherit from UnicodeFilter
+ *
+ * Revision 1.5  2000/01/04 21:43:57  Alan
+ * Add rule indexing, and move masking check to TransliterationRuleSet.
+ *
+ * Revision 1.4  1999/12/22 01:40:54  Alan
+ * Consolidate rule pattern anteContext, key, and postContext into one string.
+ *
+ * Revision 1.3  1999/12/22 01:05:54  Alan
+ * Improve masking checking; turn it off by default, for better performance
+ *
+ * Revision 1.2  1999/12/22 00:01:36  Alan
+ * Detect a>x masking a>y
+ *
+ */
+class TransliterationRuleSet {
+    /**
+     * Vector of rules, in the order added.  This is only used while the rule
+     * set is getting built.  After that, freeze() reorders and indexes the
+     * rules, and this Vector is freed.
+     */
+    private Vector ruleVector;
+
+    /**
+     * Length of the longest preceding context
+     */
+    private int maxContextLength;
+
+    /**
+     * Sorted and indexed table of rules.  This is created by freeze() from
+     * the rules in ruleVector.
+     */
+    private TransliterationRule[] rules;
+
+    /**
+     * Index table.  For text having a first character c, compute x = c&0xFF.
+     * Now use rules[index[x]..index[x+1]-1].  This index table is created by
+     * freeze().
+     */
+    private int[] index;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Construct a new empty rule set.
+     */
+    public TransliterationRuleSet() {
+        ruleVector = new Vector();
+        maxContextLength = 0;
+    }
+
+    /**
+     * Return the maximum context length.
+     * @return the length of the longest preceding context.
+     */
+    public int getMaximumContextLength() {
+        return maxContextLength;
+    }
+
+    /**
+     * Add a rule to this set.  Rules are added in order, and order is
+     * significant.
+     * @param rule the rule to add
+     */
+    public void addRule(TransliterationRule rule) {
+        if (ruleVector == null) {
+            throw new IllegalArgumentException("Cannot add rules after freezing");
+        }
+        ruleVector.addElement(rule);
+        int len;
+        if ((len = rule.getAnteContextLength()) > maxContextLength) {
+            maxContextLength = len;
+        }
+    }
+
+    /**
+     * Close this rule set to further additions, check it for masked rules,
+     * and index it to optimize performance.  Once this method is called,
+     * addRule() can no longer be called.
+     * @exception IllegalArgumentException if some rules are masked
+     */
+    public void freeze(RuleBasedTransliterator.Data variables) {
+        /* Construct the rule array and index table.  We reorder the
+         * rules by sorting them into 256 bins.  Each bin contains all
+         * rules matching the index value for that bin.  A rule
+         * matches an index value if string whose first key character
+         * has a low byte equal to the index value can match the rule.
+         *
+         * Each bin contains zero or more rules, in the same order
+         * they were found originally.  However, the total rules in
+         * the bins may exceed the number in the original vector,
+         * since rules that have a variable as their first key
+         * character will generally fall into more than one bin.
+         *
+         * That is, each bin contains all rules that either have that
+         * first index value as their first key character, or have
+         * a set containing the index value as their first character.
+         */
+        int n = ruleVector.size();
+        index = new int[257]; // [sic]
+        Vector v = new Vector(2*n); // heuristic; adjust as needed
+
+        /* Precompute the index values.  This saves a LOT of time.
+         */
+        int[] indexValue = new int[n];
+        for (int j=0; j<n; ++j) {
+            TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+            indexValue[j] = r.getIndexValue(variables);
+        }
+        for (int x=0; x<256; ++x) {
+            index[x] = v.size();
+            for (int j=0; j<n; ++j) {
+                if (indexValue[j] >= 0) {
+                    if (indexValue[j] == x) {
+                        v.addElement(ruleVector.elementAt(j));
+                    }
+                } else {
+                    // If the indexValue is < 0, then the first key character is
+                    // a set, and we must use the more time-consuming
+                    // matchesIndexValue check.  In practice this happens
+                    // rarely, so we seldom tread this code path.
+                    TransliterationRule r = (TransliterationRule) ruleVector.elementAt(j);
+                    if (r.matchesIndexValue(x, variables)) {
+                        v.addElement(r);
+                    }
+                }
+            }
+        }
+        index[256] = v.size();
+
+        /* Freeze things into an array.
+         */
+        rules = new TransliterationRule[v.size()];
+        v.copyInto(rules);
+        ruleVector = null;
+
+        StringBuffer errors = null;
+
+        /* Check for masking.  This is MUCH faster than our old check,
+         * which was each rule against each following rule, since we
+         * only have to check for masking within each bin now.  It's
+         * 256*O(n2^2) instead of O(n1^2), where n1 is the total rule
+         * count, and n2 is the per-bin rule count.  But n2<<n1, so
+         * it's a big win.
+         */
+        for (int x=0; x<256; ++x) {
+            for (int j=index[x]; j<index[x+1]-1; ++j) {
+                TransliterationRule r1 = rules[j];
+                for (int k=j+1; k<index[x+1]; ++k) {
+                    TransliterationRule r2 = rules[k];
+                    if (r1.masks(r2)) {
+                        if (errors == null) {
+                            errors = new StringBuffer();
+                        } else {
+                            errors.append("\n");
+                        }
+                        errors.append("Rule " + r1 + " masks " + r2);
+                    }
+                }
+            }
+        }
+
+        if (errors != null) {
+            throw new IllegalArgumentException(errors.toString());
+        }
+    }
+
+    /**
+     * Attempt to find a matching rule at the specified point in the text.
+     * @param text the text, both translated and untranslated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param cursor position at which to translate next, representing offset
+     * into text.  This value must be between <code>start</code> and
+     * <code>limit</code>.
+     * @param variables a dictionary mapping variables to the sets they
+     * represent (maps <code>Character</code> to <code>UnicodeSet</code>)
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @return the matching rule, or null if none found.
+     */
+    public TransliterationRule findMatch(Replaceable text, int start, int limit,
+                                         int cursor,
+                                         RuleBasedTransliterator.Data variables,
+                                         UnicodeFilter filter) {
+        /* We only need to check our indexed bin of the rule table,
+         * based on the low byte of the first key character.
+         */
+        int x = text.charAt(cursor) & 0xFF;
+        for (int i=index[x]; i<index[x+1]; ++i) {
+            if (rules[i].matches(text, start, limit, cursor, variables, filter)) {
+                return rules[i];
+            }
+        }
+        return null;
+    }
+
+    /**
+     * Attempt to find a matching rule at the specified point in the text.
+     * Unlike <code>findMatch()</code>, this method does an incremental match.
+     * An incremental match requires that there be no partial matches that might
+     * pre-empt the full match that is found.  If there are partial matches,
+     * then null is returned.  A non-null result indicates that a full match has
+     * been found, and that it cannot be pre-empted by a partial match
+     * regardless of what additional text is added to the translation buffer.
+     * @param text the text, both translated and untranslated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param cursor position at which to translate next, representing offset
+     * into text.  This value must be between <code>start</code> and
+     * <code>limit</code>.
+     * @param variables a dictionary mapping variables to the sets they
+     * represent (maps <code>Character</code> to <code>UnicodeSet</code>)
+     * @param partial output parameter.  <code>partial[0]</code> is set to
+     * true if a partial match is returned.
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @return the matching rule, or null if none found, or if the text buffer
+     * does not have enough text yet to unambiguously match a rule.
+     */
+    public TransliterationRule findIncrementalMatch(Replaceable text, int start,
+                                                    int limit, int cursor,
+                                                    RuleBasedTransliterator.Data variables,
+                                                    boolean partial[],
+                                                    UnicodeFilter filter) {
+        /* We only need to check our indexed bin of the rule table,
+         * based on the low byte of the first key character.
+         */
+        partial[0] = false;
+        int x = text.charAt(cursor) & 0xFF;
+        for (int i=index[x]; i<index[x+1]; ++i) {
+            int match = rules[i].getMatchDegree(text, start, limit, cursor,
+                                                variables, filter);
+            switch (match) {
+            case TransliterationRule.FULL_MATCH:
+                return rules[i];
+            case TransliterationRule.PARTIAL_MATCH:
+                partial[0] = true;
+                return null;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/com/ibm/text/Transliterator.java b/src/com/ibm/text/Transliterator.java
new file mode 100755
index 0000000..500fd57
--- /dev/null
+++ b/src/com/ibm/text/Transliterator.java
@@ -0,0 +1,1007 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/Transliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:24 $ 
+ * $Revision: 1.14 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.util.*;
+import java.text.MessageFormat;
+
+/**
+ * <code>Transliterator</code> is an abstract class that
+ * transliterates text from one format to another.  The most common
+ * kind of transliterator is a script, or alphabet, transliterator.
+ * For example, a Russian to Latin transliterator changes Russian text
+ * written in Cyrillic characters to phonetically equivalent Latin
+ * characters.  It does not <em>translate</em> Russian to English!
+ * Transliteration, unlike translation, operates on characters, without
+ * reference to the meanings of words and sentences.
+ *
+ * <p>Although script conversion is its most common use, a
+ * transliterator can actually perform a more general class of tasks.
+ * In fact, <code>Transliterator</code> defines a very general API
+ * which specifies only that a segment of the input text is replaced
+ * by new text.  The particulars of this conversion are determined
+ * entirely by subclasses of <code>Transliterator</code>.
+ *
+ * <p><b>Transliterators are stateless</b>
+ *
+ * <p><code>Transliterator</code> objects are <em>stateless</em>; they
+ * retain no information between calls to
+ * <code>transliterate()</code>.  As a result, threads may share
+ * transliterators without synchronizing them.  This might seem to
+ * limit the complexity of the transliteration operation.  In
+ * practice, subclasses perform complex transliterations by delaying
+ * the replacement of text until it is known that no other
+ * replacements are possible.  In other words, although the
+ * <code>Transliterator</code> objects are stateless, the source text
+ * itself embodies all the needed information, and delayed operation
+ * allows arbitrary complexity.
+ *
+ * <p><b>Batch transliteration</b>
+ *
+ * <p>The simplest way to perform transliteration is all at once, on a
+ * string of existing text.  This is referred to as <em>batch</em>
+ * transliteration.  For example, given a string <code>input</code>
+ * and a transliterator <code>t</code>, the call
+ *
+ * <blockquote><code>String result = t.transliterate(input);
+ * </code></blockquote>
+ *
+ * will transliterate it and return the result.  Other methods allow
+ * the client to specify a substring to be transliterated and to use
+ * {@link Replaceable} objects instead of strings, in order to
+ * preserve out-of-band information (such as text styles).
+ *
+ * <p><b>Keyboard transliteration</b>
+ *
+ * <p>Somewhat more involved is <em>keyboard</em>, or incremental
+ * transliteration.  This is the transliteration of text that is
+ * arriving from some source (typically the user's keyboard) one
+ * character at a time, or in some other piecemeal fashion.
+ *
+ * <p>In keyboard transliteration, a <code>Replaceable</code> buffer
+ * stores the text.  As text is inserted, as much as possible is
+ * transliterated on the fly.  This means a GUI that displays the
+ * contents of the buffer may show text being modified as each new
+ * character arrives.
+ *
+ * <p>Consider the simple <code>RuleBasedTransliterator</code>:
+ *
+ * <blockquote><code>
+ * th&gt;{theta}<br>
+ * t&gt;{tau}
+ * </code></blockquote>
+ *
+ * When the user types 't', nothing will happen, since the
+ * transliterator is waiting to see if the next character is 'h'.  To
+ * remedy this, we introduce the notion of a cursor, marked by a '|'
+ * in the output string:
+ *
+ * <blockquote><code>
+ * t&gt;|{tau}<br>
+ * {tau}h&gt;{theta}
+ * </code></blockquote>
+ *
+ * Now when the user types 't', tau appears, and if the next character
+ * is 'h', the tau changes to a theta.  This is accomplished by
+ * maintaining a cursor position (independent of the insertion point,
+ * and invisible in the GUI) across calls to
+ * <code>transliterate()</code>.  Typically, the cursor will
+ * be coincident with the insertion point, but in a case like the one
+ * above, it will precede the insertion point.
+ *
+ * <p>Keyboard transliteration methods maintain a set of three indices
+ * that are updated with each call to
+ * <code>transliterate()</code>, including the cursor, start,
+ * and limit.  These indices are changed by the method, and they are
+ * passed in and out via a Position object. The <code>start</code> index
+ * marks the beginning of the substring that the transliterator will
+ * look at.  It is advanced as text becomes committed (but it is not
+ * the committed index; that's the <code>cursor</code>).  The
+ * <code>cursor</code> index, described above, marks the point at
+ * which the transliterator last stopped, either because it reached
+ * the end, or because it required more characters to disambiguate
+ * between possible inputs.  The <code>cursor</code> can also be
+ * explicitly set by rules in a <code>RuleBasedTransliterator</code>.
+ * Any characters before the <code>cursor</code> index are frozen;
+ * future keyboard transliteration calls within this input sequence
+ * will not change them.  New text is inserted at the
+ * <code>limit</code> index, which marks the end of the substring that
+ * the transliterator looks at.
+ *
+ * <p>Because keyboard transliteration assumes that more characters
+ * are to arrive, it is conservative in its operation.  It only
+ * transliterates when it can do so unambiguously.  Otherwise it waits
+ * for more characters to arrive.  When the client code knows that no
+ * more characters are forthcoming, perhaps because the user has
+ * performed some input termination operation, then it should call
+ * <code>finishTransliteration()</code> to complete any
+ * pending transliterations.
+ *
+ * <p><b>Inverses</b>
+ *
+ * <p>Pairs of transliterators may be inverses of one another.  For
+ * example, if transliterator <b>A</b> transliterates characters by
+ * incrementing their Unicode value (so "abc" -> "def"), and
+ * transliterator <b>B</b> decrements character values, then <b>A</b>
+ * is an inverse of <b>B</b> and vice versa.  If we compose <b>A</b>
+ * with <b>B</b> in a compound transliterator, the result is the
+ * indentity transliterator, that is, a transliterator that does not
+ * change its input text.
+ *
+ * The <code>Transliterator</code> method <code>getInverse()</code>
+ * returns a transliterator's inverse, if one exists, or
+ * <code>null</code> otherwise.  However, the result of
+ * <code>getInverse()</code> usually will <em>not</em> be a true
+ * mathematical inverse.  This is because true inverse transliterators
+ * are difficult to formulate.  For example, consider two
+ * transliterators: <b>AB</b>, which transliterates the character 'A'
+ * to 'B', and <b>BA</b>, which transliterates 'B' to 'A'.  It might
+ * seem that these are exact inverses, since
+ *
+ * <blockquote>"A" x <b>AB</b> -> "B"<br>
+ * "B" x <b>BA</b> -> "A"</blockquote>
+ *
+ * where 'x' represents transliteration.  However,
+ *
+ * <blockquote>"ABCD" x <b>AB</b> -> "BBCD"<br>
+ * "BBCD" x <b>BA</b> -> "AACD"</blockquote>
+ *
+ * so <b>AB</b> composed with <b>BA</b> is not the
+ * identity. Nonetheless, <b>BA</b> may be usefully considered to be
+ * <b>AB</b>'s inverse, and it is on this basis that
+ * <b>AB</b><code>.getInverse()</code> could legitimately return
+ * <b>BA</b>.
+ *
+ * <p><b>IDs and display names</b>
+ *
+ * <p>A transliterator is designated by a short identifier string or
+ * <em>ID</em>.  IDs follow the format <em>source-destination</em>,
+ * where <em>source</em> describes the entity being replaced, and
+ * <em>destination</em> describes the entity replacing
+ * <em>source</em>.  The entities may be the names of scripts,
+ * particular sequences of characters, or whatever else it is that the
+ * transliterator converts to or from.  For example, a transliterator
+ * from Russian to Latin might be named "Russian-Latin".  A
+ * transliterator from keyboard escape sequences to Latin-1 characters
+ * might be named "KeyboardEscape-Latin1".  By convention, system
+ * entity names are in English, with the initial letters of words
+ * capitalized; user entity names may follow any format so long as
+ * they do not contain dashes.
+ *
+ * <p>In addition to programmatic IDs, transliterator objects have
+ * display names for presentation in user interfaces, returned by
+ * {@link #getDisplayName}.
+ *
+ * <p><b>Factory methods and registration</b>
+ *
+ * <p>In general, client code should use the factory method
+ * <code>getInstance()</code> to obtain an instance of a
+ * transliterator given its ID.  Valid IDs may be enumerated using
+ * <code>getAvailableIDs()</code>.  Since transliterators are
+ * stateless, multiple calls to <code>getInstance()</code> with the
+ * same ID will return the same object.
+ *
+ * <p>In addition to the system transliterators registered at startup,
+ * user transliterators may be registered by calling
+ * <code>registerInstance()</code> at run time.  To register a
+ * transliterator subclass without instantiating it (until it is
+ * needed), users may call <code>registerClass()</code>.
+ *
+ * <p><b>Subclassing</b>
+ *
+ * Subclasses must implement the abstract method
+ * <code>handleTransliterate()</code>.  <p>Subclasses should override
+ * the <code>transliterate()</code> method taking a
+ * <code>Replaceable</code> and the <code>transliterate()</code>
+ * method taking a <code>String</code> and <code>StringBuffer</code>
+ * if the performance of these methods can be improved over the
+ * performance obtained by the default implementations in this class.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: Transliterator.java,v $ $Revision: 1.14 $ $Date: 2000/03/10 04:07:24 $
+ */
+public abstract class Transliterator {
+    /**
+     * Direction constant indicating the forward direction in a transliterator,
+     * e.g., the forward rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @see RuleBasedTransliterator
+     * @see CompoundTransliterator
+     */
+    public static final int FORWARD = 0;
+
+    /**
+     * Direction constant indicating the reverse direction in a transliterator,
+     * e.g., the reverse rules of a RuleBasedTransliterator.  An "A-B"
+     * transliterator transliterates A to B when operating in the forward
+     * direction, and B to A when operating in the reverse direction.
+     * @see RuleBasedTransliterator
+     * @see CompoundTransliterator
+     */
+    public static final int REVERSE = 1;    
+
+    /**
+     * start <= tstart <= cursor <= tlimit <= limit
+     */
+    public static class Position {
+        /**
+         * The beginning index, inclusive
+         */
+        public int start;
+
+        /**
+         * The ending index, exclusive
+         */
+        public int limit;
+
+        /**
+         * The next character to be considered for transliteration.
+         */
+        public int cursor;
+
+        /**
+         * The beginning index to be transliterated, inclusive
+         */
+        public int tstart;
+
+        /**
+         * The ending index to be transliterated, exclusive
+         */
+        public int tlimit;
+
+        public Position() {
+            this(0, 0, 0, 0, 0);
+        }
+
+        public Position(int start, int limit, int cursor) {
+            this(start, limit, cursor, start, limit);
+        }
+
+        public Position(int start, int limit, int cursor, int tstart, int tlimit) {
+            this.start = start;
+            this.limit = limit;
+            this.cursor = cursor;
+            this.tstart = tstart;
+            this.tlimit = tlimit;
+        }
+    }
+
+    /**
+     * Programmatic name, e.g., "Latin-Arabic".
+     */
+    private String ID;
+
+    /** 
+     * This transliterator's filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    private UnicodeFilter filter;
+
+    private int maximumContextLength = 0;
+
+    /**
+     * Dictionary of known transliterators.  Keys are <code>String</code>
+     * names, values are one of the following:
+     *
+     * <ul><li><code>Transliterator</code> objects
+     *
+     * <li><code>Class</code> objects.  Such objects must represent
+     * subclasses of <code>Transliterator</code>, and must satisfy the
+     * constraints described in <code>registerClass()</code>
+     *
+     * <li><code>RULE_BASED_PLACEHOLDER</code>, in which case the ID
+     * will have its first '-' removed and be appended to
+     * RB_RULE_BASED_PREFIX to form a resource bundle name from which
+     * the RB_RULE key is looked up to obtain the rule.
+     *
+     * <li><code>REVERSE_RULE_BASED_PLACEHOLDER</code>.  Like
+     * <code>RULE_BASED_PLACEHOLDER</code>, except the entity names in
+     * the ID are reversed, and the argument
+     * RuleBasedTransliterator.REVERSE is pased to the
+     * RuleBasedTransliterator constructor.
+     * </ul>
+     */
+    private static Hashtable cache;
+
+    private static Hashtable displayNameCache;
+
+    /**
+     * Internal object used to stand for instances of
+     * <code>RuleBasedTransliterator</code> that have not been
+     * constructed yet in the <code>cache</code>.  When a
+     * <code>getInstance()</code> call retrieves this object, it is
+     * replaced by the actual <code>RuleBasedTransliterator</code>.
+     * This allows <code>Transliterator</code> to delay instantiation
+     * of such transliterators until they are needed.
+     */
+    private static final Object RULE_BASED_PLACEHOLDER = new Object();
+
+    /**
+     * Internal object used to stand for instances of
+     * <code>RuleBasedTransliterator</code> that have not been
+     * constructed yet in the <code>cache</code>.  These instances are
+     * constructed with an argument
+     * <code>RuleBasedTransliterator.REVERSE</code>.
+     */
+    private static final Object REVERSE_RULE_BASED_PLACEHOLDER = new Object();
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_DISPLAY_NAME_PREFIX = "%Translit%%";
+
+    /**
+     * Prefix for resource bundle key for the display name for a
+     * transliterator SCRIPT.  The ID is appended to this to form the key.
+     * The resource bundle value should be a String.
+     */
+    private static final String RB_SCRIPT_DISPLAY_NAME_PREFIX = "%Translit%";
+
+    /**
+     * Resource bundle key for display name pattern.
+     * The resource bundle value should be a String forming a
+     * MessageFormat pattern, e.g.:
+     * "{0,choice,0#|1#{1} Transliterator|2#{1} to {2} Transliterator}".
+     */
+    private static final String RB_DISPLAY_NAME_PATTERN = "TransliteratorNamePattern";
+
+    /**
+     * Resource bundle key for the list of RuleBasedTransliterator IDs.
+     * The resource bundle value should be a String[] with each element
+     * being a valid ID.  The ID will be appended to RB_RULE_BASED_PREFIX
+     * to obtain the class name in which the RB_RULE key will be sought.
+     */
+    private static final String RB_RULE_BASED_IDS = "RuleBasedTransliteratorIDs";
+
+    /**
+     * Resource bundle containing display name keys and the
+     * RB_RULE_BASED_IDS array.
+     *
+     * <p>If we ever integrate this with the Sun JDK, the resource bundle
+     * root will change to java.text.resources.LocaleElements
+     */
+    private static final String RB_LOCALE_ELEMENTS =
+        "com.ibm.text.resources.LocaleElements";
+
+    /**
+     * Prefix for resource bundle containing RuleBasedTransliterator
+     * RB_RULE string.  The ID is munged to remove the first '-' then appended
+     * to this String to obtain the class name.
+     */
+    private static final String RB_RULE_BASED_PREFIX =
+        "com.ibm.text.resources.TransliterationRule_";
+
+	private static final char RB_RULE_BASED_SEPEATOR = '_';
+
+    /**
+     * Resource bundle key for the RuleBasedTransliterator rule.
+     */
+    private static final String RB_RULE = "Rule";
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Default constructor.
+     * @param ID the string identifier for this transliterator
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     */
+    protected Transliterator(String ID, UnicodeFilter filter) {
+        if (ID == null) {
+            throw new NullPointerException();
+        }
+        this.ID = ID;
+        this.filter = filter;
+    }
+
+    /**
+     * Transliterates a segment of a string, with optional filtering.
+     *
+     * @param text the string to be transliterated
+     * @param start the beginning index, inclusive; <code>0 <= start
+     * <= limit</code>.
+     * @param limit the ending index, exclusive; <code>start <= limit
+     * <= text.length()</code>.
+     * @param filter the filter.  Any character for which
+     * <tt>filter.contains()</tt> returns <tt>false</tt> will not be
+     * altered by this transliterator.  If <tt>filter</tt> is
+     * <tt>null</tt> then no filtering is applied.
+     * @return The new limit index.  The text previously occupying <code>[start,
+     * limit)</code> has been transliterated, possibly to a string of a different
+     * length, at <code>[start, </code><em>new-limit</em><code>)</code>, where
+     * <em>new-limit</em> is the return value.
+     */
+    public final int transliterate(Replaceable text, int start, int limit) {
+        Position pos = new Position(start, limit, start);
+        handleTransliterate(text, pos, false);
+        return pos.limit;
+    }
+
+    /**
+     * Transliterates an entire string in place. Convenience method.
+     * @param text the string to be transliterated
+     */
+    public final void transliterate(Replaceable text) {
+        transliterate(text, 0, text.length());
+    }
+
+    /**
+     * Transliterate an entire string and returns the result. Convenience method.
+     *
+     * @param text the string to be transliterated
+     * @return The transliterated text
+     */
+    public final String transliterate(String text) {
+        ReplaceableString result = new ReplaceableString(text);
+        transliterate(result);
+        return result.toString();
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after new text has been inserted,
+     * typically as a result of a keyboard event.  The new text in
+     * <code>insertion</code> will be inserted into <code>text</code>
+     * at <code>index.limit</code>, advancing
+     * <code>index.limit</code> by <code>insertion.length()</code>.
+     * Then the transliterator will try to transliterate characters of
+     * <code>text</code> between <code>index.cursor</code> and
+     * <code>index.limit</code>.  Characters before
+     * <code>index.cursor</code> will not be changed.
+     *
+     * <p>Upon return, values in <code>index</code> will be updated.
+     * <code>index.start</code> will be advanced to the first
+     * character that future calls to this method will read.
+     * <code>index.cursor</code> and <code>index.limit</code> will
+     * be adjusted to delimit the range of text that future calls to
+     * this method may change.
+     *
+     * <p>Typical usage of this method begins with an initial call
+     * with <code>index.start</code> and <code>index.limit</code>
+     * set to indicate the portion of <code>text</code> to be
+     * transliterated, and <code>index.cursor == index.start</code>.
+     * Thereafter, <code>index</code> can be used without
+     * modification in future calls, provided that all changes to
+     * <code>text</code> are made via this method.
+     *
+     * <p>This method assumes that future calls may be made that will
+     * insert new text into the buffer.  As a result, it only performs
+     * unambiguous transliterations.  After the last call to this
+     * method, there may be untransliterated text that is waiting for
+     * more input to resolve an ambiguity.  In order to perform these
+     * pending transliterations, clients should call {@link
+     * #finishTransliteration} after the last call to this
+     * method has been made.
+     * 
+     * @param text the buffer holding transliterated and untransliterated text
+     * @param index an array of three integers.
+     *
+     * <ul><li><code>index.start</code>: the beginning index,
+     * inclusive; <code>0 <= index.start <= index.limit</code>.
+     *
+     * <li><code>index.limit</code>: the ending index, exclusive;
+     * <code>index.start <= index.limit <= text.length()</code>.
+     * <code>insertion</code> is inserted at
+     * <code>index.limit</code>.
+     *
+     * <li><code>index.cursor</code>: the next character to be
+     * considered for transliteration; <code>index.start <=
+     * index.cursor <= index.limit</code>.  Characters before
+     * <code>index.cursor</code> will not be changed by future calls
+     * to this method.</ul>
+     *
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.limit</code>.  If <code>null</code> then no text
+     * is inserted.
+     * @see #handleTransliterate
+     * @exception IllegalArgumentException if <code>index</code>
+     * is invalid
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    String insertion) {
+        if (index.start < 0 ||
+            index.limit > text.length() ||
+            index.cursor < index.start ||
+            index.cursor > index.limit) {
+            throw new IllegalArgumentException("Invalid index");
+        }
+
+        int originalStart = index.start;
+        if (insertion != null) {
+            text.replace(index.limit, index.limit, insertion);
+            index.limit += insertion.length();
+        }
+
+        handleTransliterate(text, index, true);
+
+        index.start = Math.max(index.cursor - getMaximumContextLength(),
+                               originalStart);
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly after a new character has been
+     * inserted, typically as a result of a keyboard event.  This is a
+     * convenience method; see {@link
+     * #transliterate(Replaceable, Position, String)} for details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index an array of three integers.  See {@link
+     * #transliterate(Replaceable, Position, String)}.
+     * @param insertion text to be inserted and possibly
+     * transliterated into the translation buffer at
+     * <code>index.limit</code>.
+     * @see #transliterate(Replaceable, Position, String)
+     */
+    public final void transliterate(Replaceable text, Position index,
+                                    char insertion) {
+        transliterate(text, index, String.valueOf(insertion));
+    }
+
+    /**
+     * Transliterates the portion of the text buffer that can be
+     * transliterated unambiguosly.  This is a convenience method; see
+     * {@link #transliterate(Replaceable, Position, String)} for
+     * details.
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index an array of three integers.  See {@link
+     * #transliterate(Replaceable, Position, String)}.
+     * @see #transliterate(Replaceable, Position, String)
+     */
+    public final void transliterate(Replaceable text, Position index) {
+        transliterate(text, index, null);
+    }
+
+    /**
+     * Finishes any pending transliterations that were waiting for
+     * more characters.  Clients should call this method as the last
+     * call after a sequence of one or more calls to
+     * <code>transliterate()</code>.
+     * @param text the buffer holding transliterated and
+     * untransliterated text.
+     * @param index the array of indices previously passed to {@link
+     * #transliterate}
+     */
+    public final void finishTransliteration(Replaceable text,
+                                            Position index) {
+        if (index.start < 0 ||
+            index.limit > text.length() ||
+            index.cursor < index.start ||
+            index.cursor > index.limit) {
+            throw new IllegalArgumentException("Invalid index");
+        }
+
+        int originalStart = index.start;
+
+        handleTransliterate(text, index, false);
+
+        index.start = Math.max(index.cursor - getMaximumContextLength(),
+                               originalStart);
+    }
+
+    /**
+     * Abstract method that concrete subclasses define to implement
+     * keyboard transliteration.  This method should transliterate all
+     * characters between <code>index.cursor</code> and
+     * <code>index.limit</code> that can be unambiguously
+     * transliterated, regardless of future insertions of text at
+     * <code>index.limit</code>.  <code>index.cursor</code> should
+     * be advanced past committed characters (those that will not
+     * change in future calls to this method).
+     * <code>index.limit</code> should be updated to reflect text
+     * replacements that shorten or lengthen the text between
+     * <code>index.cursor</code> and <code>index.limit</code>.  Upon
+     * return, neither <code>index.cursor</code> nor
+     * <code>index.limit</code> should be less than the initial value
+     * of <code>index.cursor</code>.  <code>index.start</code>
+     * should <em>not</em> be changed.
+     *
+     * @param text the buffer holding transliterated and
+     * untransliterated text
+     * @param index an array of three integers.  See {@link
+     * #transliterate(Replaceable, Position, String)}.
+     * @see #transliterate
+     */
+    protected abstract void handleTransliterate(Replaceable text,
+                                                Position pos, boolean incremental);
+
+    /**
+     * Returns the length of the longest context required by this transliterator.
+     * This is <em>preceding</em> context.  The default value is zero, but
+     * subclasses can change this by calling <code>setMaximumContextLength()</code>.
+     * For example, if a transliterator translates "ddd" (where
+     * d is any digit) to "555" when preceded by "(ddd)", then the preceding
+     * context length is 5, the length of "(ddd)".
+     *
+     * @return The maximum number of preceding context characters this
+     * transliterator needs to examine
+     */
+    final int getMaximumContextLength() {
+        return maximumContextLength;
+    }
+
+    /**
+     * Method for subclasses to use to set the maximum context length.
+     * @see #getMaximumContextLength
+     */
+    protected void setMaximumContextLength(int a) {
+        if (a < 0) {
+            throw new IllegalArgumentException("Invalid context length " + a);
+        }
+        maximumContextLength = a;
+    }
+
+    /**
+     * Returns a programmatic identifier for this transliterator.
+     * If this identifier is passed to <code>getInstance()</code>, it
+     * will return this object, if it has been registered.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     */
+    public final String getID() {
+        return ID;
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the default locale.  See {@link
+     * #getDisplayName(String,Locale)} for details.
+     */
+    public final static String getDisplayName(String ID) {
+        return getDisplayName(ID, Locale.getDefault());
+    }
+
+    /**
+     * Returns a name for this transliterator that is appropriate for
+     * display to the user in the given locale.  This name is taken
+     * from the locale resource data in the standard manner of the
+     * <code>java.text</code> package.
+     *
+     * <p>If no localized names exist in the system resource bundles,
+     * a name is synthesized using a localized
+     * <code>MessageFormat</code> pattern from the resource data.  The
+     * arguments to this pattern are an integer followed by one or two
+     * strings.  The integer is the number of strings, either 1 or 2.
+     * The strings are formed by splitting the ID for this
+     * transliterator at the first '-'.  If there is no '-', then the
+     * entire ID forms the only string.
+     * @param inLocale the Locale in which the display name should be
+     * localized.
+     * @see java.text.MessageFormat
+     */
+    public static String getDisplayName(String ID, Locale inLocale) {
+        ResourceBundle bundle = ResourceBundle.getBundle(
+            RB_LOCALE_ELEMENTS, inLocale);
+
+        // Use the registered display name, if any
+        String n = (String) displayNameCache.get(ID);
+        if (n != null) {
+            return n;
+        }
+
+        // Use display name for the entire transliterator, if it
+        // exists.
+        try {
+            return bundle.getString(RB_DISPLAY_NAME_PREFIX + ID);
+        } catch (MissingResourceException e) {}
+
+        try {
+            // Construct the formatter first; if getString() fails
+            // we'll exit the try block
+            MessageFormat format = new MessageFormat(
+                    bundle.getString(RB_DISPLAY_NAME_PATTERN));
+            // Construct the argument array
+            int i = ID.indexOf('-');
+            Object[] args = (i < 0)
+                ? new Object[] { new Integer(1), ID }
+                : new Object[] { new Integer(2), ID.substring(0, i),
+                                 ID.substring(i+1) };
+
+            // Use display names for the scripts, if they exist
+            for (int j=1; j<=((i<0)?1:2); ++j) {
+                try {
+                    args[j] = bundle.getString(RB_SCRIPT_DISPLAY_NAME_PREFIX +
+                                               (String) args[j]);
+                } catch (MissingResourceException e) {}
+            }
+
+            // Format it using the pattern in the resource
+            return format.format(args);
+        } catch (MissingResourceException e2) {}
+
+        // We should not reach this point unless there is something
+        // wrong with the build or the RB_DISPLAY_NAME_PATTERN has
+        // been deleted from the root RB_LOCALE_ELEMENTS resource.
+        throw new RuntimeException();
+    }
+
+    /**
+     * Returns the filter used by this transliterator, or <tt>null</tt>
+     * if this transliterator uses no filter.
+     */
+    public UnicodeFilter getFilter() {
+        return filter;
+    }
+
+    /**
+     * Changes the filter used by this transliterator.  If the filter
+     * is set to <tt>null</tt> then no filtering will occur.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The filter should not be changed by one
+     * thread while another thread may be transliterating.
+     */
+    public void setFilter(UnicodeFilter filter) {
+        this.filter = filter;
+    }
+
+    /**
+     * Returns a <code>Transliterator</code> object given its ID.
+     * The ID must be either a system transliterator ID or a ID registered
+     * using <code>registerClass()</code>.
+     *
+     * @param ID a valid ID, as enumerated by <code>getAvailableIDs()</code>
+     * @return A <code>Transliterator</code> object with the given ID
+     * @exception IllegalArgumentException if the given ID is invalid.
+     * @see #registerClass
+     * @see #getAvailableIDs
+     * @see #getID
+     */
+     // changed MED
+    public static Transliterator getInstance(String ID, int direction) {
+        if (ID.indexOf(';') >= 0) {
+            return new CompoundTransliterator(ID, direction, null);
+        }
+        if (direction == REVERSE) {
+            int i = ID.indexOf('-');
+            if (i < 0) {
+                throw new IllegalArgumentException("No inverse for: "
+                                                   + ID);
+            }
+            ID = ID.substring(i+1) + '-' + ID.substring(0, i);
+        }
+        Transliterator t = internalGetInstance(ID);
+        if (t != null) {
+            return t;
+        }
+        throw new IllegalArgumentException("Unsupported transliterator: "
+                                           + ID);
+    }
+
+    public static final Transliterator getInstance(String ID) {
+        return getInstance(ID, FORWARD);
+    }
+
+    /*
+    foo(String pattern, ParsePosition pos, int direction) {
+        String id;
+        UnicodeSet filter = null;
+        int start = pos.getIndex();
+        int limit = pattern.length();
+        int i = pattern.indexOf(';', start);
+        if (i >= 0) {
+            limit = i;
+        }
+        i = pattern.indexOf('[', start);
+        if (i >= 0 && i < limit) {
+            limit = i;
+            pos.setIndex(i);
+            filter = new UnicodeSet(pattern, pos, null, null);
+        } else {
+            pos.setIndex(limit);
+        }
+        id = pattern.substring(start, limit);
+        if (direction == REVERSE) {
+            i = id.indexOf('-');
+            if (i < 0) {
+                throw new IllegalArgumentException("No inverse for: " + id);
+            }
+            id = id.substring(i+1) + '-' + id.substring(0, i);
+        }
+        Transliterator t = internalGetInstance(ID);
+        if (filter != null) {
+            t.setFilter(filter);
+        }
+    }
+    */
+
+    /**
+     * Returns this transliterator's inverse.  See the class
+     * documentation for details.  This implementation simply inverts
+     * the two entities in the ID and attempts to retrieve the
+     * resulting transliterator.  That is, if <code>getID()</code>
+     * returns "A-B", then this method will return the result of
+     * <code>getInstance("B-A")</code>, or <code>null</code> if that
+     * call fails.
+     *
+     * <p>This method does not take filtering into account.  The
+     * returned transliterator will have no filter.
+     *
+     * <p>Subclasses with knowledge of their inverse may wish to
+     * override this method.
+     *
+     * @return a transliterator that is an inverse, not necessarily
+     * exact, of this transliterator, or <code>null</code> if no such
+     * transliterator is registered.
+     * @see #registerClass
+     */
+    public final Transliterator getInverse() {
+        return getInstance(ID, REVERSE);
+    }
+    
+    /**
+     * Returns a transliterator object given its ID.  Unlike getInstance(),
+     * this method returns null if it cannot make use of the given ID.
+     */
+    private static Transliterator internalGetInstance(String ID) {
+        Object obj = cache.get(ID);
+        RuleBasedTransliterator.Data data = null;
+
+        if (obj instanceof RuleBasedTransliterator.Data) {
+            data = (RuleBasedTransliterator.Data) obj;
+            // Fall through to construct transliterator from cached Data object.
+        } else if (obj instanceof Class) {
+            try {
+                return (Transliterator) ((Class) obj).newInstance();
+            } catch (InstantiationException e) {
+            } catch (IllegalAccessException e2) {}
+        } else {
+            synchronized (cache) {
+                boolean isReverse = (obj == REVERSE_RULE_BASED_PLACEHOLDER);
+                String resourceName = RB_RULE_BASED_PREFIX;
+                int i = ID.indexOf('-');
+                if (i < 0) {
+                    resourceName += ID;
+                } else {
+                    String IDLeft  = ID.substring(0, i);
+                    String IDRight = ID.substring(i+1);
+                    resourceName += isReverse ? (IDRight + RB_RULE_BASED_SEPEATOR + IDLeft)
+                                              : (IDLeft + RB_RULE_BASED_SEPEATOR + IDRight);
+                }
+                try {
+                    ResourceBundle resource = ResourceBundle.getBundle(resourceName);
+
+                    // We allow the resource bundle to contain either an array
+                    // of rules, or a single rule string.
+                    String[] ruleArray;
+                    try {
+                        ruleArray = resource.getStringArray(RB_RULE);
+                    } catch (Exception e) {
+                        // This is a ClassCastException under JDK 1.1.8
+                        ruleArray = new String[] { resource.getString(RB_RULE) };
+                    }
+
+                    data = RuleBasedTransliterator.parse(ruleArray,
+                                                         isReverse
+                                                         ? RuleBasedTransliterator.REVERSE
+                                                         : RuleBasedTransliterator.FORWARD);
+
+                    cache.put(ID, data);
+                    // Fall through to construct transliterator from Data object.
+                } catch (MissingResourceException e) {}
+            }
+        }
+
+        if (data != null) {
+            return new RuleBasedTransliterator(ID, data, null);
+        }
+
+        return null;
+    }
+
+    /**
+     * Registers a subclass of <code>Transliterator</code> with the
+     * system.  This subclass must have a public constructor taking no
+     * arguments.  When that constructor is called, the resulting
+     * object must return the <code>ID</code> passed to this method if
+     * its <code>getID()</code> method is called.
+     *
+     * @param ID the result of <code>getID()</code> for this
+     * transliterator
+     * @param transClass a subclass of <code>Transliterator</code>
+     * @see #unregister
+     */
+    public static void registerClass(String ID, Class transClass, String displayName) {
+        cache.put(ID, transClass);
+        if (displayName != null) {
+            displayNameCache.put(ID, displayName);
+        }
+    }
+
+    /**
+     * Unregisters a transliterator or class.  This may be either
+     * a system transliterator or a user transliterator or class.
+     * 
+     * @param ID the ID of the transliterator or class
+     * @return the <code>Object</code> that was registered with
+     * <code>ID</code>, or <code>null</code> if none was
+     * @see #registerClass
+     */
+    public static Object unregister(String ID) {
+        displayNameCache.remove(ID);
+        return cache.remove(ID);
+    }
+
+    /**
+     * Returns an enumeration over the programmatic names of registered
+     * <code>Transliterator</code> objects.  This includes both system
+     * transliterators and user transliterators registered using
+     * <code>registerClass()</code>.  The enumerated names may be
+     * passed to <code>getInstance()</code>.
+     *
+     * @return An <code>Enumeration</code> over <code>String</code> objects
+     * @see #getInstance
+     * @see #registerClass
+     */
+    public static final Enumeration getAvailableIDs() {
+        return cache.keys();
+    }
+
+    /**
+     * Method for subclasses to use to obtain a character in the given
+     * string, with filtering.  If the character at the given offset
+     * is excluded by this transliterator's filter, then U+FFFF is returned.
+     */
+    protected char filteredCharAt(Replaceable text, int i) {
+        char c;
+        UnicodeFilter filter = getFilter();
+        return (filter == null) ? text.charAt(i) :
+            (filter.contains(c = text.charAt(i)) ? c : '\uFFFF');
+    }
+
+    static {
+        ResourceBundle bundle = ResourceBundle.getBundle(RB_LOCALE_ELEMENTS);
+        
+        try {
+            String[] ruleBasedIDs = bundle.getStringArray(RB_RULE_BASED_IDS);
+            
+            cache = new Hashtable();
+            displayNameCache = new Hashtable();
+            
+            for (int i=0; i<ruleBasedIDs.length; ++i) {
+                String ID = ruleBasedIDs[i];
+                boolean isReverse = (ID.charAt(0) == '*');
+                if (isReverse) {
+                    ID = ID.substring(1);
+                }
+                cache.put(ID, isReverse ? REVERSE_RULE_BASED_PLACEHOLDER
+                                        : RULE_BASED_PLACEHOLDER);
+            }
+        } catch (MissingResourceException e) {}
+
+        // Register non-rule-based transliterators
+        registerClass(HangulJamoTransliterator._ID,
+                      HangulJamoTransliterator.class, null);
+        registerClass(JamoHangulTransliterator._ID,
+                      JamoHangulTransliterator.class, null);
+                      
+        registerClass(HexToUnicodeTransliterator._ID,
+                      HexToUnicodeTransliterator.class, null);
+        registerClass(UnicodeToHexTransliterator._ID,
+                      UnicodeToHexTransliterator.class, null);
+        registerClass(NullTransliterator._ID,
+                      NullTransliterator.class, null);
+    }
+}
diff --git a/src/com/ibm/text/UInfo.java b/src/com/ibm/text/UInfo.java
new file mode 100755
index 0000000..5dd158b
--- /dev/null
+++ b/src/com/ibm/text/UInfo.java
@@ -0,0 +1,649 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UInfo.java,v $ 
+ * $Date: 2000/03/10 04:07:24 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+import java.io.*;
+import java.util.*;
+
+public final class UInfo {
+    static final boolean DEBUG = false;
+    static final int UINFO_VERSION = 5;
+
+    // these values are aligned with the java.lang.Character constants
+
+    public static final byte
+    UNASSIGNED      = 0,
+    UPPERCASE_LETTER    = 1,
+    LOWERCASE_LETTER    = 2,
+    TITLECASE_LETTER    = 3,
+    MODIFIER_LETTER     = 4,
+    OTHER_LETTER        = 5,
+    NON_SPACING_MARK    = 6,
+    ENCLOSING_MARK      = 7,
+    COMBINING_SPACING_MARK  = 8,
+    DECIMAL_DIGIT_NUMBER    = 9,
+    LETTER_NUMBER       = 10,
+    OTHER_NUMBER        = 11,
+    SPACE_SEPARATOR     = 12,
+    LINE_SEPARATOR      = 13,
+    PARAGRAPH_SEPARATOR = 14,
+    CONTROL         = 15,
+    FORMAT          = 16,
+    PRIVATE_USE     = 18,
+    SURROGATE       = 19,
+    DASH_PUNCTUATION    = 20,
+    START_PUNCTUATION   = 21,
+    END_PUNCTUATION     = 22,
+    CONNECTOR_PUNCTUATION   = 23,
+    OTHER_PUNCTUATION   = 24,
+    MATH_SYMBOL     = 25,
+    CURRENCY_SYMBOL     = 26,
+    MODIFIER_SYMBOL     = 27,
+    OTHER_SYMBOL        = 28;
+
+    public String getName(char ch) {return getInfo(ch).name;}
+    public String getDecomposition(char ch) {return getInfo(ch).decomposition;}
+    public String getName10(char ch) {return getInfo(ch).name10;}
+    public String getComment(char ch) {return getInfo(ch).comment;}
+
+    public float getNumeric(char ch) {return getInfo(ch).numeric;}
+
+    public short getCanonicalClass(char ch) {return getInfo(ch).canonical;}
+    public short getDecimal(char ch) {return getInfo(ch).decimal;}
+    public short getDigit(char ch) {return getInfo(ch).digit;}
+
+    public char getUppercase(char ch) {return getInfo(ch).uppercase;}
+    public char getLowercase(char ch) {return getInfo(ch).lowercase;}
+    public char getTitlecase(char ch) {return getInfo(ch).titlecase;}
+
+    public byte getCategory(char ch) {return getInfo(ch).category;}
+    public byte getBidiClass(char ch) {return getInfo(ch).bidi;}
+    public boolean getMirrored(char ch) {return getInfo(ch).mirrored;}
+
+    public boolean isDisparaged(char ch) { return getDecomposition(ch).length() == 4; }
+
+    public boolean isLetter(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<UPPERCASE_LETTER)
+          | (1<<LOWERCASE_LETTER)
+          | (1<<TITLECASE_LETTER)
+          | (1<<MODIFIER_LETTER)
+          | (1<<MODIFIER_LETTER))));
+    }
+
+    public boolean isMark(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<NON_SPACING_MARK)
+          | (1<<ENCLOSING_MARK)
+          | (1<<COMBINING_SPACING_MARK))));
+    }
+
+    public boolean isNumber(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<DECIMAL_DIGIT_NUMBER)
+          | (1<<LETTER_NUMBER)
+          | (1<<OTHER_NUMBER))));
+    }
+
+    public boolean isSeparator(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<SPACE_SEPARATOR)
+          | (1<<LINE_SEPARATOR)
+          | (1<<PARAGRAPH_SEPARATOR))));
+    }
+
+    public boolean isFormat(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<CONTROL)
+          | (1<<FORMAT))));
+    }
+
+    public boolean isPunctuation(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<DASH_PUNCTUATION)
+          | (1<<START_PUNCTUATION)
+          | (1<<END_PUNCTUATION)
+          | (1<<CONNECTOR_PUNCTUATION)
+          | (1<<START_PUNCTUATION)
+          | (1<<END_PUNCTUATION)
+          | (1<<OTHER_PUNCTUATION))));
+    }
+
+    public boolean isSymbol(char ch) {
+        return (0 != ((1<<getCategory(ch)) &
+          ((1<<MATH_SYMBOL)
+          | (1<<CURRENCY_SYMBOL)
+          | (1<<MODIFIER_SYMBOL)
+          | (1<<OTHER_SYMBOL))));
+    }
+
+    //
+    // Characters excluded from composition.  This will eventually be read from
+    // an auxiliary data file, but for now it's hardcoded
+    //
+    static final String composeExclude =
+            "\u0958\u0959\u095a\u095b\u095c\u095d\u095e\u095f"  // Devanagari
+        +   "\ufb1f\ufb2a\ufb2b\ufb2c\ufb2d\ufb2e\ufb2f"        // Hebrew
+        +   "\ufb30\ufb31\ufb32\ufb33\ufb34\ufb35\ufb36"
+        +   "\ufb38\ufb39\ufb3a\ufb3b\ufb3c\ufb3e"
+        +   "\ufb40\ufb41\ufb43\ufb44\ufb46\ufb47\ufb48"
+        +   "\ufb49\ufb4a\ufb4b\ufb4c\ufb4d\ufb4e"
+        ;
+
+    /**
+     * Is this character excluded from the composition algorithm by virtue
+     * of being listed in the composition exclusion table in Tech Report #15?
+     */
+    public boolean isExcludedComposition(char ch) {
+        return isDisparaged(ch)
+            || composeExclude.indexOf(ch) >= 0
+            || getCanonicalClass(getDecompositionChars(ch).charAt(0)) != 0;
+    }
+
+
+
+    public String getName(String s) {
+        return getName(s,true);
+    }
+
+    public String getName(String s, boolean shortVersion) {
+        StringBuffer temp = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) temp.append(", ");
+            temp.append(getName(s.charAt(i), shortVersion));
+        }
+        return temp.toString();
+    }
+
+    public String getName(char ch, boolean shortVersion) {
+        String result = getName(ch);
+        if (!shortVersion) return result;
+        result = replace(result,"LETTER ","");
+        result = replace(result,"CHARACTER ","");
+        result = replace(result,"SIGN ","");
+        result = replace(result,"CAPITAL ","UC ");
+        if (getCategory(ch) == LOWERCASE_LETTER)
+          result = replace(result,"SMALL ","LC ");
+        result = replace(result,"COMBINING ","-");
+        result = replace(result,"WITH ","");
+        result = replace(result,"AND ","");
+        result = replace(result,"VARIA","GRAVE");
+        result = replace(result,"OXIA","ACUTE");
+        result = replace(result,"VRACHY","BREVE");
+        result = replace(result,"VERTICAL LINE ABOVE","TONOS");
+        result = replace(result,"PSILI","SMOOTH");
+        result = replace(result,"DASIA","ROUGH");
+        result = replace(result,"COMMA ABOVE","SMOOTH");
+        result = replace(result,"REVERSED COMMA ABOVE","ROUGH");
+        result = replace(result,"YPOGEGRAMMENI","IOTA-SUB");
+        result = replace(result,"PROSGEGRAMMENI","IOTA-AD");
+        result = replace(result,"DIALYTIKA","DIAERESIS");
+        result = replace(result,"PERISPOMENI","CIRCUMFLEX");
+        result = replace(result,"VOICED SOUND MARK","VOICED SIGN");
+        result = replace(result,"PROLONGED SOUND MARK","VOICED SIGN");
+        result = replace(result,"KATAKANA-HIRAGANA","KANA");
+        result = replace(result,"COMPATIBILITY IDEOGRAPH-","");
+        result = replace(result,"CHOSEONG","INITIAL");
+        result = replace(result,"JUNGSEONG","MEDIAL");
+        result = replace(result,"JONGSEONG","FINAL");
+
+        return result.substring(0,1)
+          + result.substring(1,result.length()).toLowerCase();
+    }
+
+    public String replace(String source,
+      String replacee, String replacer) {
+        int p = source.indexOf(replacee);
+        if (p == -1) return source;
+        return source.substring(0,p)
+          + replacer
+          + source.substring(p+replacee.length(),source.length());
+    }
+
+    public boolean isCCS(String s) {
+        if (s.length() < 2) return false;
+        if (isMark(s.charAt(0))) return false;
+        for (int i = 1; i < s.length(); ++i) {
+            if (!isMark(s.charAt(i))) return false;
+        }
+        return true;
+    }
+
+    // combining base sequence := <cat_zero>+ <cat_pos>*
+    public boolean isCBS(String s) {
+        if (s.length() == 0) return false;
+        if (getCanonicalClass(s.charAt(0)) != 0) return false;
+        boolean gotGreater = false;
+        for (int i = 1; i < s.length(); ++i) {
+            if (getCanonicalClass(s.charAt(i)) == 0) {
+                if (gotGreater) return false;
+            } else {
+                gotGreater = true;
+            }
+        }
+        return true;
+    }
+
+    public boolean hasCanonicalDecomposition(char ch) {
+        String decomp = getDecomposition(ch);
+        return (decomp.length() != 0 && decomp.indexOf('<') == -1);
+    }
+
+    public boolean hasCompatibilityDecomposition(char ch) {
+        String decomp = getDecomposition(ch);
+        return (decomp.length() != 0 && decomp.indexOf('<') != -1);
+    }
+
+    public boolean isEquivalent(
+      String a, String b, boolean canonical) {
+        return getFullDecomposition(a, canonical).equals(
+          getFullDecomposition(b, canonical));
+    }
+
+    // use very dumb algorithm. Don't need lower order one.
+
+    public String getFullDecomposition(
+      String s, boolean canonical) {
+        StringBuffer output = new StringBuffer();
+        for (int i = 0; i < s.length(); ++i) {
+            getFullDecomp2(s.charAt(i),canonical,output);
+        }
+        return fixCanonical(output).toString();
+    }
+
+    public StringBuffer getFullDecomposition(
+      char ch, boolean canonical, StringBuffer output) {
+
+        StringBuffer result = getFullDecomp2(ch,canonical,output);
+        return fixCanonical(result);
+    }
+
+    public String getFullDecomposition(
+      char ch, boolean canonical) {
+        return getFullDecomposition(ch, canonical, new StringBuffer()).toString();
+    }
+
+    public StringBuffer fixCanonical(StringBuffer target) {
+        for (int i = 1; i < target.length(); ++i) {
+            char ch = target.charAt(i);
+            short canClass = getCanonicalClass(ch);
+            char chPrev = target.charAt(i-1);
+            short canClassPrev = getCanonicalClass(chPrev);
+            if (canClass != 0 && canClass < canClassPrev) {
+                target.setCharAt(i-1, ch);
+                target.setCharAt(i, chPrev);
+                if (i > 1) i -= 2; // backup (-1 to compensate for loop)
+            }
+        }
+        return target;
+    }
+
+    public String fixCanonical(String source) {
+        return fixCanonical(new StringBuffer(source)).toString();
+    }
+
+
+    // ============================================
+    //                  PRIVATES
+    // ============================================
+
+    static class CharData {
+        public CharData() {
+        };
+
+        String name = "";
+        String decomposition = "";
+        String name10 = "";
+        String comment = "";
+
+        float numeric = Float.MIN_VALUE;
+
+        short canonical = 0;
+        short decimal = Short.MIN_VALUE;
+        short digit = Short.MIN_VALUE;
+
+        char uppercase;
+        char lowercase;
+        char titlecase;
+
+        byte category;
+        byte bidi = 0;
+
+        boolean mirrored;
+    };
+
+    private static final CharData UNASSIGNED_INFO = new CharData();
+    private static char cachedChar = 0xFFFF;
+
+    private CharData getInfo(char ch) {
+        if (ch == cachedChar) return UNASSIGNED_INFO;
+        // remap special ranges
+        if (ch >= 0x4E00 && ch < 0xF900) {
+            if (ch <= 0x9FA5) ch = 0x4E00;
+            else if (ch >= 0xAC00 && ch <= 0xD7A3) ch = 0xAC00;
+            else if (ch >= 0xD800 && ch <= 0xDFFF) ch = 0xD800;
+            else if (ch >= 0xE000) ch = 0xE000;
+        }
+        Object value = cache[ch];
+        CharData result;
+        if (value == null) {
+            result = UNASSIGNED_INFO;
+        } else if (value instanceof String) {
+            result = updateCache((String)value);
+        } else {
+            result = (CharData)value;
+        }
+        return result;
+    }
+
+    private StringBuffer getFullDecomp2(
+      char ch, boolean canonical, StringBuffer output) {
+
+        String decomp = getDecomposition(ch);
+        if (decomp.length() == 0
+          || (canonical && decomp.indexOf('<') != -1)) {
+            output.append(ch);
+            return output;
+        }
+        boolean inBrackets = false;
+        for (int i = 0; i < decomp.length(); ++i) {
+            char c = decomp.charAt(i);
+            if (c == '<') inBrackets = true;
+            else if (c == '>') inBrackets = false;
+            else if (inBrackets) ; // skip
+            else if (c == ' ') ; // skip
+            else {
+                String tempString = decomp.substring(i,i+4);
+                char temp = (char)Integer.parseInt(tempString,16);
+                getFullDecomposition(temp,canonical,output);
+                i+= 3;
+            }
+        }
+        return output;
+    }
+
+    public String getDecompositionChars(char ch) {
+        StringBuffer output = new StringBuffer();
+        String decomp = getDecomposition(ch);
+        if (decomp.length() == 0) {
+            output.append(ch);
+            return output.toString();
+        }
+        boolean inBrackets = false;
+        for (int i = 0; i < decomp.length(); ++i) {
+            char c = decomp.charAt(i);
+            if (c == '<') inBrackets = true;
+            else if (c == '>') inBrackets = false;
+            else if (inBrackets) ; // skip
+            else if (c == ' ') ; // skip
+            else {
+                String tempString = decomp.substring(i,i+4);
+                char temp = (char)Integer.parseInt(tempString,16);
+                output.append(temp);
+                i+= 3;
+            }
+        }
+        return output.toString();
+    }
+
+    public UInfo(String fileName) {
+        long startTime,endTime;
+
+        BufferedReader input = null;
+        String line = null;
+        try {
+            input = new BufferedReader(new FileReader(fileName),64*1024);
+            for (int count = 0;;++count) {
+                line = input.readLine();
+                if (line == null) break;
+                if (line.length() == 0) continue;
+                char ch = charFrom(line.substring(0,4));
+                if (DEBUG) if ((count % 100) == 0)
+                    System.out.println("[" + count + "," + hex(ch) + ']');
+                cache[ch] = line;
+            }
+        } catch (Exception ex) {
+            try {
+                input.close();
+            } catch (Exception ex2) {}
+            ex.printStackTrace();
+            throw new IllegalArgumentException("Couldn't read file "
+              + ex.getClass().getName() + " " + ex.getMessage()
+              + " line = " + line
+              );
+        }
+    }
+
+    public UInfo() {
+        this("../src/data/unicode/UnicodeData.txt");
+    }
+
+    /*
+  0 Code value in 4-digit hexadecimal format.
+  1 Unicode 2.1 Character Name. These names match exactly the
+  2 General Category. This is a useful breakdown into various "character
+  3 Canonical Combining Classes. The classes used for the
+  4 Bidirectional Category. See the list below for an explanation of the
+  5 Character Decomposition. In the Unicode Standard, not all of
+  6 Decimal digit value. This is a numeric field. If the character
+  7 Digit value. This is a numeric field. If the character represents a
+  8 Numeric value. This is a numeric field. If the character has the
+  9 If the characters has been identified as a "mirrored" character in
+ 10 Unicode 1.0 Name. This is the old name as published in Unicode 1.0.
+ 11 10646 Comment field. This field is informative.
+ 12 Upper case equivalent mapping. If a character is part of an
+ 13 Lower case equivalent mapping. Similar to 12. This field is informative.
+ 14 Title case equivalent mapping. Similar to 12. This field is informative.
+    */
+
+    private CharData updateCache(String line) {
+        try {
+            String[] parts = new String[30];
+            split(line,';',parts);
+            CharData info = new CharData();
+            char ch = charFrom(parts[0]);
+            info.name = parts[1];
+            info.category = (byte)lookup(parts[2], CATEGORY_TABLE);
+            info.canonical = shortFrom(parts[3]);
+            info.bidi = (byte)lookup(parts[4], BIDI_TABLE);
+            info.decomposition = parts[5];
+            info.decimal = shortFrom(parts[6]);
+            info.digit = shortFrom(parts[7]);
+            info.numeric = floatFrom(parts[8]);
+            info.mirrored = charFrom(parts[9]) == 'Y';
+            info.name10 = parts[10];
+            info.comment = parts[11];
+            info.uppercase = charFrom(parts[12]);
+            if (info.uppercase == 0) info.uppercase = ch;
+            info.lowercase = charFrom(parts[13]);
+            if (info.lowercase == 0) info.lowercase = ch;
+            info.titlecase = charFrom(parts[14]);
+            if (info.titlecase == 0) info.titlecase = info.uppercase;
+            String trial = hex(ch) + ";" + info;
+            if (DEBUG) if (!trial.equals(line)) {
+                System.out.println("Difference between:");
+                System.out.println(line);
+                System.out.println(trial);
+            }
+            cache[ch] = info;
+            return info;
+        }
+        catch (NumberFormatException e) {
+            System.out.println("updateCache: error parsing '" + line + "'");
+            throw e;
+        }
+    }
+
+    private static CharData typeInfo = new CharData();
+
+    private boolean latin1(char c) {
+        return ((c >= 20 && c <= 0x7F) || c > 0xA0);
+    }
+
+    private static final String[] YN_TABLE = {"N", "Y"};
+
+    private static final String[] CATEGORY_TABLE = {
+        "Cn", // = Other, Not Assigned
+
+        "Lu", // = Letter, Uppercase
+        "Ll", // = Letter, Lowercase
+        "Lt", // = Letter, Titlecase
+        "Lm", // = Letter, Modifier
+        "Lo", // = Letter, Other
+
+        "Mn", // = Mark, Non-Spacing
+        "Me", // = Mark, Enclosing
+        "Mc", // = Mark, Spacing Combining
+
+        "Nd", // = Number, Decimal Digit
+        "Nl", // = Number, Letter
+        "No", // = Number, Other
+
+        "Zs", // = Separator, Space
+        "Zl", // = Separator, Line
+        "Zp", // = Separator, Paragraph
+
+        "Cc", // = Other, Control
+        "Cf", // = Other, Format
+        "",   // unused
+        "Co", // = Other, Private Use
+        "Cs", // = Other, Surrogate
+
+
+        "Pd", // = Punctuation, Dash
+        "Ps", // = Punctuation, Open
+        "Pe", // = Punctuation, Close
+        "Pc", // = Punctuation, Connector
+        "Po", // = Punctuation, Other
+
+        "Sm", // = Symbol, Math
+        "Sc", // = Symbol, Currency
+        "Sk", // = Symbol, Modifier
+        "So", // = Symbol, Other
+
+        "Pi", // = Punctuation, Initial quote (may behave like Ps or Pe depending on usage)
+        "Pf", // = Punctuation, Final quote (may behave like Ps or Pe dependingon usage)
+    };
+
+    private static String[] BIDI_TABLE = {
+        "L", // Left-Right; Most alphabetic, syllabic, and logographic characters (e.g., CJK ideographs)
+        "R", // Right-Left; Arabic, Hebrew, and punctuation specific to those scripts
+        "EN", //    European Number
+        "ES", //    European Number Separator
+        "ET", //    European Number Terminator
+        "AN", //    Arabic Number
+        "CS", //    Common Number Separator
+        "B", // Block Separator
+        "S", // Segment Separator
+        "WS", //    Whitespace
+        "ON" // Other Neutrals ; All other characters: punctuation, symbols
+    };
+
+    private static short shortFrom(String p) {
+        if (p.length() == 0) return Short.MIN_VALUE;
+        return Short.parseShort(p);
+    }
+
+    private static float floatFrom(String p) {
+        try {
+            if (p.length() == 0) return Float.MIN_VALUE;
+            int fract = p.indexOf('/');
+            if (fract == -1) return Float.valueOf(p).floatValue();
+            String q = p.substring(0,fract);
+            float num = 0;
+            if (q.length() != 0) num = Integer.parseInt(q);
+            p = p.substring(fract+1,p.length());
+            float den = 0;
+            if (p.length() != 0) den = Integer.parseInt(p);
+            return num/den;
+        }
+        catch (NumberFormatException e) {
+            System.out.println("floatFrom: error parsing '" + p + "'");
+            throw e;
+        }
+    }
+
+    private static char charFrom(String p) {
+        if (p.length() == 0) return '\u0000';
+        else if (p.length() == 1) return p.charAt(0);
+        int temp = Integer.parseInt(p, 16);
+        if (temp < 0 || temp > 0xFFFF)
+            throw new NumberFormatException(
+                "Hex char out of range: " + p);
+        return (char)temp;
+    }
+
+
+    private Object[] cache = new Object[65536];
+
+    //-------------------------------------------------------------------------
+    // Static utility methods....
+    //-------------------------------------------------------------------------
+    public static String hex(char ch) {
+        StringBuffer temp = new StringBuffer();
+        return hex(ch, temp).toString();
+    }
+
+    public static String hex(String s) {
+        StringBuffer temp = new StringBuffer();
+        return hex(s, temp).toString();
+    }
+
+    public static StringBuffer hex(char ch, StringBuffer output) {
+        String foo = Integer.toString(ch,16).toUpperCase();
+        for (int i = foo.length(); i < 4; ++i) {
+            output.append('0');
+        }
+        output.append(foo);
+        return output;
+    }
+
+    public static StringBuffer hex(String s, StringBuffer result) {
+        for (int i = 0; i < s.length(); ++i) {
+            if (i != 0) result.append(',');
+            result.append(hex(s.charAt(i)));
+        }
+        return result;
+    }
+
+    /**
+     * Split a string into pieces based on the given divider character
+     */
+    private static void split(String s, char divider, String[] output) {
+        int last = 0;
+        int current = 0;
+        int i;
+        for (i = 0; i < s.length(); ++i) {
+            if (s.charAt(i) == divider) {
+                output[current++] = s.substring(last,i);
+                last = i+1;
+            }
+        }
+        output[current++] = s.substring(last,i);
+        while (current < output.length) {
+            output[current++] = "";
+        }
+    }
+
+    /**
+     * Look up a given string in a string array.  Returns the index at which the
+     * string was found in the array, or -1 if it was not found.
+     */
+    private static int lookup(String source, String[] target) {
+        for (int i = 0; i < target.length; ++i) {
+            if (source.equals(target[i])) return i;
+        }
+        return -1;
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/text/UnicodeCompressor.java b/src/com/ibm/text/UnicodeCompressor.java
new file mode 100755
index 0000000..c68646e
--- /dev/null
+++ b/src/com/ibm/text/UnicodeCompressor.java
@@ -0,0 +1,1009 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UnicodeCompressor.java,v $ 
+ * $Date: 2000/03/10 04:07:25 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+/**
+* A compression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P>The SCSU works by using dynamically positioned <EM>windows</EM>
+* consisting of 128 consecutive characters in Unicode.  During compression, 
+* characters within a window are encoded in the compressed stream as the bytes 
+* <TT>0x7F - 0xFF</TT>. The SCSU provides transparency for the characters 
+* (bytes) between <TT>U+0000 - U+00FF</TT>.  The SCSU approximates the 
+* storage size of traditional character sets, for example 1 byte per
+* character for ASCII or Latin-1 text, and 2 bytes per character for CJK
+* ideographs.</P>
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeCompressor</TT> may be used in a
+* straightforward manner to compress simple strings:</P>
+*
+* <PRE>
+*  String s = ... ; // get string from somewhere
+*  byte [] compressed = UnicodeCompressor.compress(s);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeCompressor</TT> offers more powerful APIs allowing
+* iterative compression:</P>
+*
+* <PRE>
+*  // Compress an array "chars" of length "len" using a buffer of 512 bytes
+*  // to the OutputStream "out"
+*
+*  UnicodeCompressor myCompressor         = new UnicodeCompressor();
+*  final static int  BUFSIZE              = 512;
+*  byte []           byteBuffer           = new byte [ BUFSIZE ];
+*  int               bytesWritten         = 0;
+*  int []            unicharsRead         = new int [1];
+*  int               totalCharsCompressed = 0;
+*  int               totalBytesWritten    = 0;
+*
+*  do {
+*    // do the compression
+*    bytesWritten = myCompressor.compress(chars, totalCharsCompressed, 
+*                                         len, unicharsRead,
+*                                         byteBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of bytes
+*    out.write(byteBuffer, 0, bytesWritten);
+*
+*    // update the no. of characters compressed
+*    totalCharsCompressed += unicharsRead[0];
+*
+*    // update the no. of bytes written
+*    totalBytesWritten += bytesWritten;
+*
+*  } while(totalCharsCompressed < len);
+*
+*  myCompressor.reset(); // reuse compressor
+* </PRE>
+*
+* @see UnicodeDecompressor
+*
+* @author Stephen F. Booth
+* @version 1.5 05 Aug 99
+* @version 1.4 21 Jul 99
+* @version 1.3 10 Mar 99
+* @version 1.2 08 Mar 99
+* @version 1.1 11 Jan 99 
+*/
+
+/*
+*
+* COMPRESSION STRATEGY
+*
+* Single Byte Mode
+*
+* There are three relevant cases.
+* If the character is in the current window or is Latin-1 (U+0000,
+* U+0009, U+000A, U+000D, U+0020 - U+007F), the character is placed
+* directly in the stream as a single byte.
+*
+*  1. Current character is in defined, inactive window.
+*  2. Current character is in undefined window.
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF).
+* 
+*  1. Current character is in defined, inactive window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       switch to defined window
+*    C. If only next character is in same window as current character, 
+*       quote defined window
+*    D. If neither of following characters is in same window as current, 
+*       quote defined window
+*   
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both following characters in same window as current character, 
+*       define new window
+*    C. If only next character in same window as current character, 
+*       switch to Unicode mode
+*       NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with
+*        more characters in it.
+*    D. If neither of following characters in same window as current, 
+*       switch to Unicode mode.  Alternative to above: just quote 
+*       Unicode (same byte cost)
+*   
+*  3. Current character is uncompressible Unicode (U+3400 - U+DFFF)
+*    A. Look ahead one character
+*    B. If next character in non-compressible region, switch to 
+*       Unicode mode
+*    C. If next character not in non-compressible region, quote Unicode
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   SINGLE BYTE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none (in current window)    1       2       3       4
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  switch to Unicode           3       5       7       9     byte
+*   defined     define window               3       4       5       6     cost
+*      
+*   window      switch to window            2       3       4       5
+*   defined     quote window                2       4       6       8
+*
+*  Unicode Mode
+*
+* There are two relevant cases.
+* If the character is in the non-compressible region
+* (U+3400 - U+DFFF), the character is simply written to the
+* stream as a pair of bytes.
+*
+* 1. Current character is in defined, inactive window.
+* 2. Current character is in undefined window.
+*
+*  1.Current character is in defined, inactive window
+*    A. Look ahead one character
+*    B. If next character has same index as current character, 
+*       switch to defined window (and switch to single-byte mode)
+*    C. If not, just put bytes in stream
+*   
+*  
+*  2. Current character is in undefined window
+*    A. Look ahead two characters
+*    B. If both in same window as current character, define window 
+*       (and switch to single-byte mode)
+*    C. If only next character in same window, just put bytes in stream
+*        NOTE: This costs us one extra byte.  However, 
+*        since we have a limited number of windows to work with, it is 
+*        assumed the cost will pay off later in savings from a window with 
+*        more characters in it.
+*    D. If neither in same window, put bytes in stream
+*   
+*
+* The following chart illustrates the bytes required for encoding characters
+* in each possible way
+*
+* 
+*                                   UNICODE MODE
+*                                       Characters in a row with same index
+*               tag encountered             1       2       3       4
+*               ---------------------------------------------------------------
+*               none                        2       4       6       8
+*
+*               quote Unicode               3       6       9       12
+*
+*   window not  define window               3       4       5       6     byte
+*   defined                                                               cost
+*   window      switch to window            2       3       4       5
+*   defined
+*/
+public final class UnicodeCompressor implements SCSU
+{
+    //==========================
+    // Class variables
+    //==========================
+
+    /** For quick identification of a byte as a single-byte mode tag */
+    private static boolean [] sSingleTagTable = {
+        // table generated by CompressionTableGenerator
+        false, true, true, true, true, true, true, true, true, false,
+	false, true, true, false, true, true, true, true, true, true,
+	true, true, true, true, true, true, true, true, true, true,
+	true, true, false, false, false, false, false, false,false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false   
+    };
+
+    /** For quick identification of a byte as a unicode mode tag */
+    private static boolean [] sUnicodeTagTable = {
+        // table generated by CompressionTableGenerator
+        false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false, false, false, false, false, false, false, true,
+	true, true, true, true, true, true, true, true, true, true,
+	true, true, true, true, true, true, true, true, false, false,
+	false, false, false, false, false, false, false, false, false,
+	false, false 
+    };
+
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Keeps count of times character indices are encountered */
+    private int []    fIndexCount      = new int [ MAXINDEX + 1 ];
+
+    /** The time stamps indicate when a window was last defined */
+    private int []    fTimeStamps      = new int [ NUMWINDOWS ];
+    
+    /** The current time stamp */
+    private int       fTimeStamp       = 0;
+    
+
+    /**
+     * Create a UnicodeCompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     */
+    public UnicodeCompressor()
+    {
+	reset();              // initialize to defaults
+    }
+
+    /**
+     * Compress a string into a byte array.
+     * @param buffer The string to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(char [], int, int)
+     */
+    public static byte [] compress(String buffer)
+    {
+	return compress(buffer.toCharArray(), 0, buffer.length());
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     * @param buffer The character buffer to compress.
+     * @param start The start of the character run to compress.
+     * @param limit The limit of the character run to compress.
+     * @return A byte array containing the compressed characters.
+     * @see #compress(String)
+     */
+    public static byte [] compress(char [] buffer,
+				   int start,
+				   int limit)
+    {
+	UnicodeCompressor comp = new UnicodeCompressor();
+
+	// use a buffer that we know will never overflow
+	// in the worst case, each character will take 3 bytes
+	// to encode: UQU, hibyte, lobyte.  In this case, the
+	// compressed data will look like: SCU, UQU, hibyte, lobyte, ...
+	// buffer must be at least 4 bytes in size
+	int len = Math.max(4, 3 * (limit - start) + 1);
+	byte [] temp = new byte [len];
+
+	int byteCount = comp.compress(buffer, start, limit, null, 
+				      temp, 0, len);
+
+	byte [] result = new byte [byteCount];
+	System.arraycopy(temp, 0, result, 0, byteCount);
+	return result;
+    }
+
+    /**
+     * Compress a Unicode character array into a byte array.
+     *
+     * This function will only consume input that can be completely
+     * output.
+     *
+     * @param charBuffer The character buffer to compress.
+     * @param charBufferStart The start of the character run to compress.
+     * @param charBufferLimit The limit of the character run to compress.
+     * @param charsRead A one-element array.  If not null, on return 
+     * the number of characters read from charBuffer.
+     * @param byteBuffer A buffer to receive the compressed data.  This 
+     * buffer must be at minimum four bytes in size.
+     * @param byteBufferStart The starting offset to which to write 
+     * compressed data.
+     * @param byteBufferLimit The limiting offset for writing compressed data.
+     * @return The number of bytes written to byteBuffer.
+     */
+    public int compress(char []     charBuffer,
+			int         charBufferStart,
+			int         charBufferLimit,
+			int []      charsRead,
+			byte []     byteBuffer,
+			int         byteBufferStart,
+			int         byteBufferLimit)
+    {
+        // the current position in the target byte buffer
+	int     bytePos       = byteBufferStart;
+	
+	// the current position in the source unicode character buffer
+	int     ucPos         = charBufferStart;
+	
+	// the current unicode character from the source buffer
+	int     curUC         = INVALIDCHAR;
+	
+	// the index for the current character
+        int     curIndex      = -1;
+        
+	// look ahead
+	int     nextUC        = INVALIDCHAR;
+	int     forwardUC     = INVALIDCHAR;
+	
+        // temporary for window searching
+	int     whichWindow   = 0;
+	
+	// high and low bytes of the current unicode character
+	int     hiByte        = 0;
+	int     loByte        = 0;
+
+
+	// byteBuffer must be at least 4 bytes in size
+	if(byteBuffer.length < 4 || (byteBufferLimit - byteBufferStart) < 4)
+	    throw new IllegalArgumentException("byteBuffer.length < 4");
+
+    mainLoop:
+	while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+	    switch(fMode) {
+		// main single byte mode compression loop
+	    case SINGLEBYTEMODE:
+	    singleByteModeLoop:
+	    while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+		// get current char
+		curUC = charBuffer[ucPos++];
+
+		// get next char
+		if(ucPos < charBufferLimit) 
+		    nextUC = charBuffer[ucPos];
+		else
+		    nextUC = INVALIDCHAR;
+		
+		// chars less than 0x0080 (excluding tags) go straight
+		// in stream
+		if(curUC < 0x0080) {
+		    loByte = curUC & 0xFF;
+
+		    // we need to check and make sure we don't
+		    // accidentally write a single byte mode tag to
+		    // the stream unless it's quoted
+		    if(sSingleTagTable[loByte]) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if( (bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// since we know the byte is less than 0x80, SQUOTE0
+			// will use static window 0, or ASCII
+			byteBuffer[bytePos++] = (byte) SQUOTE0;
+		    }
+
+		    byteBuffer[bytePos++] = (byte) loByte;
+		}
+
+		// if the char belongs to current window, convert it
+		// to a byte by adding the generic compression offset
+		// and subtracting the window's offset
+		else if(inDynamicWindow(curUC, fCurrentWindow) ) {
+		    byteBuffer[bytePos++] = (byte) 
+			(curUC - fOffsets[ fCurrentWindow ] 
+			 + COMPRESSIONOFFSET);
+		}
+		
+		// if char is not in compressible range, either switch to or
+		// quote from unicode
+		else if( ! isCompressible(curUC) ) {
+		    // only check next character if it is valid
+		    if(nextUC != INVALIDCHAR && isCompressible(nextUC)) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if( (bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) SQUOTEU;
+			byteBuffer[bytePos++] = (byte) (curUC >>> 8);
+			byteBuffer[bytePos++] = (byte) (curUC & 0xFF);
+		    }
+		    else {
+                                // make sure there is enough room to
+                                // write all four bytes if not, rewind
+                                // the source stream and break out
+			if((bytePos + 3) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[hiByte])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++]   = (byte) UQUOTEU;    
+
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+                
+			fMode = UNICODEMODE;
+			break singleByteModeLoop;
+		    }
+		}
+
+		// if the char is in a currently defined dynamic
+		// window, figure out which one, and either switch to
+		// it or quote from it
+		else if((whichWindow = findDynamicWindow(curUC)) 
+			!= INVALIDWINDOW ) {
+		    // look ahead
+		    if( (ucPos + 1) < charBufferLimit )
+			forwardUC = charBuffer[ucPos + 1];
+		    else
+			forwardUC = INVALIDCHAR;
+		    
+		    // all three chars in same window, switch to that
+		    // window inDynamicWindow will return false for
+		    // INVALIDCHAR
+		    if(inDynamicWindow(nextUC, whichWindow) 
+		       && inDynamicWindow(forwardUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if( (bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte)(SCHANGE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - fOffsets[whichWindow] 
+			     + COMPRESSIONOFFSET);
+			fTimeStamps [ whichWindow ] = ++fTimeStamp;
+			fCurrentWindow = whichWindow;
+		    }
+		    
+		    // either only next char or neither in same
+		    // window, so quote
+		    else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if((bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - fOffsets[whichWindow] 
+			     + COMPRESSIONOFFSET);
+		    }
+		}
+
+		// if a static window is defined, and the following
+		// character is not in that static window, quote from
+		// the static window Note: to quote from a static
+		// window, don't add 0x80
+		else if((whichWindow = findStaticWindow(curUC)) 
+			!= INVALIDWINDOW 
+			&& ! inStaticWindow(nextUC, whichWindow) ) {
+		    // make sure there is enough room to write both
+		    // bytes if not, rewind the source stream and
+		    // break out
+		    if((bytePos + 1) >= byteBufferLimit) 
+			{ --ucPos; break mainLoop; }
+
+		    byteBuffer[bytePos++] = (byte) (SQUOTE0 + whichWindow);
+		    byteBuffer[bytePos++] = (byte) 
+			(curUC - sOffsets[whichWindow]);
+		}
+		
+		// if a window is not defined, decide if we want to
+		// define a new one or switch to unicode mode
+		else {
+		    // determine index for current char (char is compressible)
+		    curIndex = makeIndex(curUC);
+		    fIndexCount[curIndex]++;
+
+		    // look ahead
+		    if((ucPos + 1) < charBufferLimit)
+			forwardUC = charBuffer[ucPos + 1];
+		    else
+			forwardUC = INVALIDCHAR;
+
+		    // if we have encountered this index at least once
+		    // before, define a new window
+		    // OR
+		    // three chars in a row with same index, define a
+		    // new window (makeIndex will return RESERVEDINDEX
+		    // for INVALIDCHAR)
+		    if((fIndexCount[curIndex] > 1) ||
+		       (curIndex == makeIndex(nextUC) 
+			&& curIndex == makeIndex(forwardUC))) {
+			// make sure there is enough room to write all
+			// three bytes if not, rewind the source
+			// stream and break out
+			if( (bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// get least recently defined window
+			whichWindow = getLRDefinedWindow();
+
+			byteBuffer[bytePos++] = (byte)(SDEFINE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) curIndex;
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - sOffsetTable[curIndex] 
+			     + COMPRESSIONOFFSET);
+
+			fOffsets[whichWindow] = sOffsetTable[curIndex];
+			fCurrentWindow = whichWindow;
+			fTimeStamps [whichWindow] = ++fTimeStamp;
+		    }
+
+		    // only two chars in a row with same index, so
+		    // switch to unicode mode (makeIndex will return
+		    // RESERVEDINDEX for INVALIDCHAR)
+		    // OR
+		    // three chars have different indices, so switch
+		    // to unicode mode
+		    else {
+			// make sure there is enough room to write all
+			// four bytes if not, rewind the source stream
+			// and break out
+			if((bytePos + 3) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte) SCHANGEU;
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[hiByte])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++] = (byte) UQUOTEU; 
+
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+
+			fMode = UNICODEMODE;
+			break singleByteModeLoop;
+		    }
+		}
+	    }
+	    break;
+
+	    case UNICODEMODE:
+		// main unicode mode compression loop
+	    unicodeModeLoop:
+	    while(ucPos < charBufferLimit && bytePos < byteBufferLimit) {
+		// get current char
+		curUC = charBuffer[ucPos++];    
+
+		// get next char
+		if( ucPos < charBufferLimit )
+		    nextUC = charBuffer[ucPos];
+		else
+		    nextUC = INVALIDCHAR;
+
+		// if we have two uncompressible chars in a row,
+		// put the current char's bytes in the stream
+		if( ! isCompressible(curUC) 
+		    || (nextUC != INVALIDCHAR && ! isCompressible(nextUC))) {
+		    // make sure there is enough room to write all three bytes
+		    // if not, rewind the source stream and break out
+		    if( (bytePos + 2) >= byteBufferLimit) 
+			{ --ucPos; break mainLoop; }
+
+		    hiByte = curUC >>> 8;
+		    loByte = curUC & 0xFF;
+
+		    if(sUnicodeTagTable[ hiByte ])
+			// add quote Unicode tag
+			byteBuffer[bytePos++] = (byte) UQUOTEU;
+                
+		    byteBuffer[bytePos++] = (byte) hiByte;
+		    byteBuffer[bytePos++] = (byte) loByte;
+        }
+		
+		// bytes less than 0x80 can go straight in the stream,
+		// but in single-byte mode
+		else if(curUC < 0x0080) {
+		    loByte = curUC & 0xFF;
+
+		    // if two chars in a row below 0x80 and the
+		    // current char is not a single-byte mode tag,
+		    // switch to single-byte mode
+		    if(nextUC != INVALIDCHAR 
+		       && nextUC < 0x0080 && ! sSingleTagTable[ loByte ] ) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if( (bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// use the last-active window
+			whichWindow = fCurrentWindow;
+			byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) loByte;
+
+			//fCurrentWindow = 0;
+			fTimeStamps [whichWindow] = ++fTimeStamp;
+			fMode = SINGLEBYTEMODE;
+			break unicodeModeLoop;
+		    }
+
+		    // otherwise, just write the bytes to the stream
+		    // (this will cover the case of only 1 char less than 0x80
+		    // and single-byte mode tags)
+		    else {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if((bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// since the character is less than 0x80, the
+			// high byte is always 0x00 - no need for
+			// (curUC >>> 8)
+			byteBuffer[bytePos++] = (byte) 0x00;
+			byteBuffer[bytePos++] = (byte) loByte;
+		    }
+		}
+
+		// figure out if the current char is in a defined window
+		else if((whichWindow = findDynamicWindow(curUC)) 
+			!= INVALIDWINDOW ) {
+		    // if two chars in a row in the same window,
+		    // switch to that window and go to single-byte mode
+		    // inDynamicWindow will return false for INVALIDCHAR
+		    if(inDynamicWindow(nextUC, whichWindow)) {
+                                // make sure there is enough room to
+                                // write both bytes if not, rewind the
+                                // source stream and break out
+			if((bytePos + 1) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			byteBuffer[bytePos++] = (byte)(UCHANGE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - fOffsets[whichWindow] 
+			     + COMPRESSIONOFFSET);
+
+			fTimeStamps [ whichWindow ] = ++fTimeStamp;
+			fCurrentWindow = whichWindow;
+			fMode = SINGLEBYTEMODE;
+			break unicodeModeLoop;
+		    }
+
+		    // otherwise, just quote the unicode for the char
+		    else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if((bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[ hiByte ])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++] = (byte) UQUOTEU;
+
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+		    }
+		}
+		
+		// char is not in a defined window
+		else {
+		    // determine index for current char (char is compressible)
+		    curIndex = makeIndex(curUC);
+		    fIndexCount[curIndex]++;
+		    
+		    // look ahead
+		    if( (ucPos + 1) < charBufferLimit )
+			forwardUC = charBuffer[ucPos + 1];
+		    else
+			forwardUC = INVALIDCHAR;
+		    
+		    // if we have encountered this index at least once
+		    // before, define a new window for it that hasn't
+		    // previously been redefined
+		    // OR
+		    // if three chars in a row with the same index,
+		    // define a new window (makeIndex will return
+		    // RESERVEDINDEX for INVALIDCHAR)
+		    if((fIndexCount[curIndex] > 1) ||
+		       (curIndex == makeIndex(nextUC) 
+			&& curIndex == makeIndex(forwardUC))) {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if((bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			// get least recently defined window
+			whichWindow = getLRDefinedWindow();
+
+			byteBuffer[bytePos++] = (byte)(UDEFINE0 + whichWindow);
+			byteBuffer[bytePos++] = (byte) curIndex;
+			byteBuffer[bytePos++] = (byte) 
+			    (curUC - sOffsetTable[curIndex] 
+			     + COMPRESSIONOFFSET);
+			
+			fOffsets[whichWindow] = sOffsetTable[curIndex];
+			fCurrentWindow = whichWindow;
+			fTimeStamps [whichWindow] = ++fTimeStamp;
+			fMode = SINGLEBYTEMODE;
+			break unicodeModeLoop;
+		    }
+		    
+		    // otherwise just quote the unicode, and save our
+		    // windows for longer runs
+		    else {
+                                // make sure there is enough room to
+                                // write all three bytes if not,
+                                // rewind the source stream and break
+                                // out
+			if((bytePos + 2) >= byteBufferLimit) 
+			    { --ucPos; break mainLoop; }
+
+			hiByte = curUC >>> 8;
+			loByte = curUC & 0xFF;
+
+			if(sUnicodeTagTable[ hiByte ])
+			    // add quote Unicode tag
+			    byteBuffer[bytePos++] = (byte) UQUOTEU;  
+			
+			byteBuffer[bytePos++] = (byte) hiByte;
+			byteBuffer[bytePos++] = (byte) loByte;
+		    }
+		}
+	    }
+	    }  // end switch
+	}
+	
+        // fill in output parameter
+	if(charsRead != null)
+	    charsRead [0] = (ucPos - charBufferStart);
+        
+        // return # of bytes written
+        return (bytePos - byteBufferStart);
+    }
+
+    /** Reset the compressor to its initial state. */
+    public void reset()
+    {
+	int i;
+
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        // reset time stamps
+        for(i = 0; i < NUMWINDOWS; i++) {
+            fTimeStamps[i]          = 0;
+        }
+
+        // reset count of seen indices
+        for(i = 0; i <= MAXINDEX; i++ ) {
+            fIndexCount[i] = 0;
+        }
+
+        fTimeStamp      = 0;                // Reset current time stamp
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+    }
+
+    //==========================
+    // Determine the index for a character
+    //==========================
+
+    /**
+     * Create the index value for a character.
+     * For more information on this function, refer to table X-3
+     * <A HREF="http://www.unicode.org/unicode/reports/tr6">UTR6</A>.
+     * @param c The character in question.
+     * @return An index for c
+     */
+    private static int makeIndex(int c)
+    {
+        // check the predefined indices
+        if(c >= 0x00C0 && c < 0x0140)
+            return LATININDEX;
+        else if(c >= 0x0250 && c < 0x02D0)
+            return IPAEXTENSIONINDEX;
+        else if(c >= 0x0370 && c < 0x03F0)
+            return GREEKINDEX;
+        else if(c >= 0x0530 && c < 0x0590)
+            return ARMENIANINDEX;
+        else if(c >= 0x3040 && c < 0x30A0)
+            return HIRAGANAINDEX;
+        else if(c >= 0x30A0 && c < 0x3120)
+            return KATAKANAINDEX;
+        else if(c >= 0xFF60 && c < 0xFF9F)
+            return HALFWIDTHKATAKANAINDEX;
+
+        // calculate index
+        else if(c >= 0x0080 && c < 0x3400)
+            return (c / 0x80) & 0xFF;
+        else if(c >= 0xE000 && c <= 0xFFFF)
+            return ((c - 0xAC00) / 0x80) & 0xFF;
+            
+        // should never happen
+        else {
+            return RESERVEDINDEX;
+        }
+    }
+
+    //==========================
+    // Check if a given character fits in a window
+    //==========================
+
+    /**
+    * Determine if a character is in a dynamic window.
+    * @param c The character to test
+    * @param whichWindow The dynamic window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private boolean inDynamicWindow(int c, 
+				    int whichWindow)
+    {
+        return (c >= fOffsets[whichWindow] 
+		&& c < (fOffsets[whichWindow] + 0x80));
+    }
+
+    /**
+     * Determine if a character is in a static window.
+    * @param c The character to test
+    * @param whichWindow The static window the test
+    * @return true if <TT>c</TT> will fit in <TT>whichWindow</TT>, 
+    * false otherwise.
+    */
+    private static boolean inStaticWindow(int c, 
+					  int whichWindow)
+    {
+        return (c >= sOffsets[whichWindow]
+		&& c < (sOffsets[whichWindow] + 0x80));
+    }
+
+    //==========================
+    // Check if a given character is compressible
+    //==========================
+
+    /**
+    * Determine if a character is compressible.
+    * @param c The character to test.
+    * @return true if the <TT>c</TT> is compressible, false otherwise.
+    */
+    private static boolean isCompressible(int c)
+    {
+        return (c < 0x3400 || c >= 0xE000);
+    }
+
+    //==========================
+    // Check if a window is defined for a given character
+    //==========================
+
+    /**
+     * Determine if a dynamic window for a certain character is defined
+     * @param c The character in question
+     * @return The dynamic window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private int findDynamicWindow(int c)
+    {
+	// supposedly faster to count down
+        //for(int i = 0; i < NUMWINDOWS; i++) {
+	for(int i = NUMWINDOWS - 1; i >= 0; --i) {
+	    if(inDynamicWindow(c, i)) {
+		++fTimeStamps[i];
+                return i;
+	    }
+	}
+        
+        return INVALIDWINDOW;
+    }
+
+    /**
+     * Determine if a static window for a certain character is defined
+     * @param c The character in question
+     * @return The static window containing <TT>c</TT>, or 
+     * INVALIDWINDOW if not defined.
+     */
+    private static int findStaticWindow(int c)
+    {
+	// supposedly faster to count down
+        //for(int i = 0; i < NUMSTATICWINDOWS; i++) {
+	for(int i = NUMSTATICWINDOWS - 1; i >= 0; --i) {
+	    if(inStaticWindow(c, i)) {
+                return i;
+	    }
+	}
+	
+        return INVALIDWINDOW;
+    }
+    
+    //==========================
+    // Find the least-recently used window
+    //==========================
+
+    /** Find the least-recently defined window */
+    private int getLRDefinedWindow()
+    {
+        int leastRU         = Integer.MAX_VALUE;
+        int whichWindow     = INVALIDWINDOW;
+
+        // find least recently used window
+        // supposedly faster to count down
+        //for( int i = 0; i < NUMWINDOWS; i++ ) {
+        for(int i = NUMWINDOWS - 1; i >= 0; --i ) {
+            if( fTimeStamps[i] < leastRU ) {
+                leastRU   = fTimeStamps[i];
+                whichWindow  = i;
+            }
+        }
+
+        return whichWindow;
+    }
+    
+};
diff --git a/src/com/ibm/text/UnicodeDecompressor.java b/src/com/ibm/text/UnicodeDecompressor.java
new file mode 100755
index 0000000..bc19b03
--- /dev/null
+++ b/src/com/ibm/text/UnicodeDecompressor.java
@@ -0,0 +1,565 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UnicodeDecompressor.java,v $ 
+ * $Date: 2000/03/10 04:07:25 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text;
+
+/**
+* A decompression engine implementing the Standard Compression Scheme
+* for Unicode (SCSU) as outlined in <A
+* HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical
+* Report #6</A>.
+*
+* <P><STRONG>USAGE</STRONG></P>
+*
+* <P>The static methods on <TT>UnicodeDecompressor</TT> may be used in a
+* straightforward manner to decompress simple strings:</P>
+*
+* <PRE>
+*  byte [] compressed = ... ; // get compressed bytes from somewhere
+*  String result = UnicodeDecompressor.decompress(compressed);
+* </PRE>
+*
+* <P>The static methods have a fairly large memory footprint.
+* For finer-grained control over memory usage, 
+* <TT>UnicodeDecompressor</TT> offers more powerful APIs allowing
+* iterative decompression:</P>
+*
+* <PRE>
+*  // Decompress an array "bytes" of length "len" using a buffer of 512 chars
+*  // to the Writer "out"
+*
+*  UnicodeDecompressor myDecompressor         = new UnicodeDecompressor();
+*  final static int    BUFSIZE                = 512;
+*  char []             charBuffer             = new char [ BUFSIZE ];
+*  int                 charsWritten           = 0;
+*  int []              bytesRead              = new int [1];
+*  int                 totalBytesDecompressed = 0;
+*  int                 totalCharsWritten      = 0;
+*
+*  do {
+*    // do the decompression
+*    charsWritten = myDecompressor.decompress(bytes, totalBytesDecompressed, 
+*                                             len, bytesRead,
+*                                             charBuffer, 0, BUFSIZE);
+*
+*    // do something with the current set of chars
+*    out.write(charBuffer, 0, charsWritten);
+*
+*    // update the no. of bytes decompressed
+*    totalBytesDecompressed += bytesRead[0];
+*
+*    // update the no. of chars written
+*    totalCharsWritten += charsWritten;
+*
+*  } while(totalBytesDecompressed < len);
+*
+*  myDecompressor.reset(); // reuse decompressor
+* </PRE>
+*
+* <P>Decompression is performed according to the standard set forth in 
+* <A HREF="http://www.unicode.org/unicode/reports/tr6">Unicode Technical 
+* Report #6</A></P>
+*
+* @see UnicodeCompressor
+*
+* @author Stephen F. Booth
+* @version 1.5 05 Aug 99
+* @version 1.4 21 Jul 99
+* @version 1.3 10 Mar 99
+* @version 1.2 08 Mar 99
+* @version 1.1 11 Jan 99 
+*/
+public final class UnicodeDecompressor implements SCSU
+{
+    //==========================
+    // Instance variables
+    //==========================
+    
+    /** Alias to current dynamic window */
+    private int       fCurrentWindow   = 0;
+
+    /** Dynamic compression window offsets */
+    private int []    fOffsets         = new int [ NUMWINDOWS ];
+
+    /** Current compression mode */
+    private int       fMode            = SINGLEBYTEMODE;
+
+    /** Size of our internal buffer */
+    private final static int BUFSIZE   = 3;
+
+    /** Internal buffer for saving state */
+    private byte []   fBuffer          = new byte [BUFSIZE];
+
+    /** Number of characters in our internal buffer */
+    private int       fBufferLength    = 0;
+    
+
+    /**
+     * Create a UnicodeDecompressor.
+     * Sets all windows to their default values.
+     * @see #reset
+     */
+    public UnicodeDecompressor()
+    {
+	reset();              // initialize to defaults
+    }
+
+    /**
+     * Decompress a byte array into a String.
+     * @param buffer The byte array to decompress.
+     * @return A String containing the decompressed characters.
+     * @see #decompress(byte [], int, int)
+     */
+    public static String decompress(byte [] buffer)
+    {
+	char [] buf = decompress(buffer, 0, buffer.length);
+	return new String(buf);
+    }
+
+    /**
+     * Decompress a byte array into a Unicode character array.
+     * @param buffer The byte array to decompress.
+     * @param start The start of the byte run to decompress.
+     * @param limit The limit of the byte run to decompress.
+     * @return A character array containing the decompressed bytes.
+     * @see #decompress(byte [])
+     */
+    public static char [] decompress(byte [] buffer,
+				     int start,
+				     int limit)
+    {
+	UnicodeDecompressor comp = new UnicodeDecompressor();
+
+	// use a buffer we know will never overflow
+	// in the worst case, each byte will decompress
+	// to a surrogate pair (buffer must be at least 2 chars)
+	int len = Math.max(2, 2 * (limit - start));
+	char [] temp = new char [len];
+
+	int charCount = comp.decompress(buffer, start, limit, null, 
+					temp, 0, len);
+
+	char [] result = new char [charCount];
+	System.arraycopy(temp, 0, result, 0, charCount);
+	return result;
+    }
+    
+    /**
+     * Decompress a byte array into a Unicode character array.
+     *
+     * This function will either completely fill the output buffer, 
+     * or consume the entire input.  
+     *
+     * @param byteBuffer The byte buffer to decompress.
+     * @param byteBufferStart The start of the byte run to decompress.
+     * @param byteBufferLimit The limit of the byte run to decompress.
+     * @param bytesRead A one-element array.  If not null, on return
+     * the number of bytes read from byteBuffer.
+     * @param charBuffer A buffer to receive the decompressed data. 
+     * This buffer must be at minimum two characters in size.
+     * @param charBufferStart The starting offset to which to write 
+     * decompressed data.
+     * @param charBufferLimit The limiting offset for writing 
+     * decompressed data.
+     * @return The number of Unicode characters written to charBuffer.
+     */
+    public int decompress(byte []    byteBuffer,
+			  int        byteBufferStart,
+			  int        byteBufferLimit,
+			  int []     bytesRead,
+			  char []    charBuffer,
+			  int        charBufferStart,
+			  int        charBufferLimit)
+    {
+	// the current position in the source byte buffer
+	int bytePos      = byteBufferStart;
+	
+	// the current position in the target char buffer
+	int ucPos        = charBufferStart;
+        
+        // the current byte from the source buffer
+	int aByte        = 0x00;
+
+
+	// charBuffer must be at least 2 chars in size
+	if(charBuffer.length < 2 || (charBufferLimit - charBufferStart) < 2)
+	    throw new IllegalArgumentException("charBuffer.length < 2");
+	
+	// if our internal buffer isn't empty, flush its contents
+	// to the output buffer before doing any more decompression
+	if(fBufferLength > 0) {
+
+	    int newBytes = 0;
+
+	    // fill the buffer completely, to guarantee one full character
+	    if(fBufferLength != BUFSIZE) {
+		newBytes = fBuffer.length - fBufferLength;
+
+		// verify there are newBytes bytes in byteBuffer
+		if(byteBufferLimit - byteBufferStart < newBytes)
+		    newBytes = byteBufferLimit - byteBufferStart;
+
+		System.arraycopy(byteBuffer, byteBufferStart, 
+				 fBuffer, fBufferLength, newBytes);
+	    }
+
+	    // reset buffer length to 0 before recursive call
+	    fBufferLength = 0;
+
+	    // call self recursively to decompress the buffer
+	    int count = decompress(fBuffer, 0, fBuffer.length, null,
+				   charBuffer, charBufferStart, 
+				   charBufferLimit);
+
+	    // update the positions into the arrays
+	    ucPos += count;
+	    bytePos += newBytes;
+	}
+
+        // the main decompression loop
+    mainLoop:
+	while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+	    switch(fMode) {  
+	    case SINGLEBYTEMODE:
+		// single-byte mode decompression loop
+	    singleByteModeLoop:
+	    while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+		aByte = byteBuffer[bytePos++] & 0xFF;
+		switch(aByte) {
+		    // All bytes from 0x80 through 0xFF are remapped
+		    // to chars or surrogate pairs according to the
+		    // currently active window
+		case 0x80: case 0x81: case 0x82: case 0x83: case 0x84: 
+		case 0x85: case 0x86: case 0x87: case 0x88: case 0x89:
+		case 0x8A: case 0x8B: case 0x8C: case 0x8D: case 0x8E:
+		case 0x8F: case 0x90: case 0x91: case 0x92: case 0x93:
+		case 0x94: case 0x95: case 0x96: case 0x97: case 0x98:
+		case 0x99: case 0x9A: case 0x9B: case 0x9C: case 0x9D:
+		case 0x9E: case 0x9F: case 0xA0: case 0xA1: case 0xA2:
+		case 0xA3: case 0xA4: case 0xA5: case 0xA6: case 0xA7:
+		case 0xA8: case 0xA9: case 0xAA: case 0xAB: case 0xAC:
+		case 0xAD: case 0xAE: case 0xAF: case 0xB0: case 0xB1:
+		case 0xB2: case 0xB3: case 0xB4: case 0xB5: case 0xB6:
+		case 0xB7: case 0xB8: case 0xB9: case 0xBA: case 0xBB:
+		case 0xBC: case 0xBD: case 0xBE: case 0xBF: case 0xC0:
+		case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5:
+		case 0xC6: case 0xC7: case 0xC8: case 0xC9: case 0xCA:
+		case 0xCB: case 0xCC: case 0xCD: case 0xCE: case 0xCF:
+		case 0xD0: case 0xD1: case 0xD2: case 0xD3: case 0xD4:
+		case 0xD5: case 0xD6: case 0xD7: case 0xD8: case 0xD9:
+		case 0xDA: case 0xDB: case 0xDC: case 0xDD: case 0xDE:
+		case 0xDF: case 0xE0: case 0xE1: case 0xE2: case 0xE3:
+		case 0xE4: case 0xE5: case 0xE6: case 0xE7: case 0xE8:
+		case 0xE9: case 0xEA: case 0xEB: case 0xEC: case 0xED:
+		case 0xEE: case 0xEF: case 0xF0: case 0xF1: case 0xF2:
+		case 0xF3: case 0xF4: case 0xF5: case 0xF6: case 0xF7:
+		case 0xF8: case 0xF9: case 0xFA: case 0xFB: case 0xFC:
+		case 0xFD: case 0xFE: case 0xFF: 
+		    // For offsets <= 0xFFFF, convert to a single char
+		    // by adding the window's offset and subtracting
+		    // the generic compression offset
+		    if(fOffsets[ fCurrentWindow ] <= 0xFFFF) {
+			charBuffer[ucPos++] = (char) 
+			    (aByte + fOffsets[ fCurrentWindow ] 
+			     - COMPRESSIONOFFSET);
+		    }
+		    // For offsets > 0x10000, convert to a surrogate pair by 
+		    // normBase = window's offset - 0x10000
+		    // high surr. = 0xD800 + (normBase >> 10)
+		    // low  surr. = 0xDC00 + (normBase & 0x3FF) + (byte & 0x7F)
+		    else {
+			// make sure there is enough room to write
+			// both characters 
+			// if not, save state and break out
+			if((ucPos + 1) >= charBufferLimit) {
+			    --bytePos;
+			    System.arraycopy(byteBuffer, bytePos,
+					     fBuffer, 0, 
+					     byteBufferLimit - bytePos);
+			    fBufferLength = byteBufferLimit - bytePos;
+			    bytePos += fBufferLength;
+			    break mainLoop; 
+			}
+			
+			int normalizedBase = fOffsets[ fCurrentWindow ] 
+			    - 0x10000;
+			charBuffer[ucPos++] = (char) 
+			    (0xD800 + (normalizedBase >> 10));
+			charBuffer[ucPos++] = (char) 
+			    (0xDC00 + (normalizedBase & 0x3FF)+(aByte & 0x7F));
+		    }
+		    break;
+
+		    // bytes from 0x20 through 0x7F are treated as ASCII and
+		    // are remapped to chars by padding the high byte
+		    // (this is the same as quoting from static window 0)
+		    // NUL (0x00), HT (0x09), CR (0x0A), LF (0x0D) 
+		    // are treated as ASCII as well
+		case 0x00: case 0x09: case 0x0A: case 0x0D:
+		case 0x20: case 0x21: case 0x22: case 0x23: case 0x24:
+		case 0x25: case 0x26: case 0x27: case 0x28: case 0x29:
+		case 0x2A: case 0x2B: case 0x2C: case 0x2D: case 0x2E:
+		case 0x2F: case 0x30: case 0x31: case 0x32: case 0x33:
+		case 0x34: case 0x35: case 0x36: case 0x37: case 0x38:
+		case 0x39: case 0x3A: case 0x3B: case 0x3C: case 0x3D:
+		case 0x3E: case 0x3F: case 0x40: case 0x41: case 0x42:
+		case 0x43: case 0x44: case 0x45: case 0x46: case 0x47:
+		case 0x48: case 0x49: case 0x4A: case 0x4B: case 0x4C:
+		case 0x4D: case 0x4E: case 0x4F: case 0x50: case 0x51:
+		case 0x52: case 0x53: case 0x54: case 0x55: case 0x56:
+		case 0x57: case 0x58: case 0x59: case 0x5A: case 0x5B:
+		case 0x5C: case 0x5D: case 0x5E: case 0x5F: case 0x60:
+		case 0x61: case 0x62: case 0x63: case 0x64: case 0x65:
+		case 0x66: case 0x67: case 0x68: case 0x69: case 0x6A:
+		case 0x6B: case 0x6C: case 0x6D: case 0x6E: case 0x6F:
+		case 0x70: case 0x71: case 0x72: case 0x73: case 0x74:
+		case 0x75: case 0x76: case 0x77: case 0x78: case 0x79:
+		case 0x7A: case 0x7B: case 0x7C: case 0x7D: case 0x7E:
+		case 0x7F: 
+		    charBuffer[ucPos++] = (char) aByte;
+		    break;
+
+		    // quote unicode
+		case SQUOTEU:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if( (bytePos + 1) >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    aByte = byteBuffer[bytePos++];
+		    charBuffer[ucPos++] = (char)
+			(aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+		    break;
+
+		    // switch to Unicode mode
+		case SCHANGEU:
+		    fMode = UNICODEMODE;
+		    break singleByteModeLoop;
+		    //break;
+
+		    // handle all quote tags
+		case SQUOTE0: case SQUOTE1: case SQUOTE2: case SQUOTE3:
+		case SQUOTE4: case SQUOTE5: case SQUOTE6: case SQUOTE7:
+		    // verify there is a byte following the tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    // if the byte is in the range 0x00 - 0x7F, use
+		    // static window n otherwise, use dynamic window n
+		    int dByte = byteBuffer[bytePos++] & 0xFF;
+		    charBuffer[ucPos++] = (char) 
+			(dByte+ (dByte >= 0x00 && dByte < 0x80 
+				 ? sOffsets[aByte - SQUOTE0] 
+				 : (fOffsets[aByte - SQUOTE0] 
+				    - COMPRESSIONOFFSET))); 
+		    break;
+
+		    // handle all change tags
+		case SCHANGE0: case SCHANGE1: case SCHANGE2: case SCHANGE3:
+		case SCHANGE4: case SCHANGE5: case SCHANGE6: case SCHANGE7:
+		    fCurrentWindow = aByte - SCHANGE0;
+		    break;
+
+		    // handle all define tags
+		case SDEFINE0: case SDEFINE1: case SDEFINE2: case SDEFINE3:
+		case SDEFINE4: case SDEFINE5: case SDEFINE6: case SDEFINE7:
+		    // verify there is a byte following the tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+
+		    fCurrentWindow = aByte - SDEFINE0;
+		    fOffsets[fCurrentWindow] = 
+			sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+		    break;
+
+		    // handle define extended tag
+		case SDEFINEX:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if((bytePos + 1) >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    aByte = byteBuffer[bytePos++] & 0xFF;
+		    fCurrentWindow = (aByte & 0xE0) >> 5;
+		    fOffsets[fCurrentWindow] = 0x10000 + 
+			(0x80 * (((aByte & 0x1F) << 8) 
+				 | (byteBuffer[bytePos++] & 0xFF)));
+		    break;
+                            
+            // reserved, shouldn't happen
+		case SRESERVED:
+		    break;
+
+		} // end switch
+	    } // end while
+	    break;
+
+	    case UNICODEMODE:
+		// unicode mode decompression loop
+	    unicodeModeLoop:
+	    while(bytePos < byteBufferLimit && ucPos < charBufferLimit) {
+		aByte = byteBuffer[bytePos++] & 0xFF;
+		switch(aByte) {
+		    // handle all define tags
+		case UDEFINE0: case UDEFINE1: case UDEFINE2: case UDEFINE3:
+		case UDEFINE4: case UDEFINE5: case UDEFINE6: case UDEFINE7:
+		    // verify there is a byte following tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    fCurrentWindow = aByte - UDEFINE0;
+		    fOffsets[fCurrentWindow] = 
+			sOffsetTable[byteBuffer[bytePos++] & 0xFF];
+		    fMode = SINGLEBYTEMODE;
+		    break unicodeModeLoop;
+		    //break;
+
+		    // handle define extended tag
+		case UDEFINEX:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if((bytePos + 1) >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+		    
+		    aByte = byteBuffer[bytePos++] & 0xFF;
+		    fCurrentWindow = (aByte & 0xE0) >> 5;
+		    fOffsets[fCurrentWindow] = 0x10000 + 
+			(0x80 * (((aByte & 0x1F) << 8) 
+				 | (byteBuffer[bytePos++] & 0xFF)));
+		    fMode = SINGLEBYTEMODE;
+		    break unicodeModeLoop;
+		    //break;
+
+		    // handle all change tags
+		case UCHANGE0: case UCHANGE1: case UCHANGE2: case UCHANGE3:
+		case UCHANGE4: case UCHANGE5: case UCHANGE6: case UCHANGE7:
+		    fCurrentWindow = aByte - UCHANGE0;
+		    fMode = SINGLEBYTEMODE;
+		    break unicodeModeLoop;
+		    //break;
+
+		    // quote unicode
+		case UQUOTEU:
+		    // verify we have two bytes following tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit  - 1) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+                
+		    aByte = byteBuffer[bytePos++];
+		    charBuffer[ucPos++] = (char) 
+			(aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+		    break;
+
+		default:
+		    // verify there is a byte following tag
+		    // if not, save state and break out
+		    if(bytePos >= byteBufferLimit ) {
+			--bytePos;
+			System.arraycopy(byteBuffer, bytePos,
+					 fBuffer, 0, 
+					 byteBufferLimit - bytePos);
+			fBufferLength = byteBufferLimit - bytePos;
+			bytePos += fBufferLength;
+			break mainLoop; 
+		    }
+
+		    charBuffer[ucPos++] = (char) 
+			(aByte << 8 | (byteBuffer[bytePos++] & 0xFF));
+		    break;
+
+		} // end switch
+	    } // end while
+	    break;
+	    
+	    } // end switch( fMode )
+	} // end while
+
+        // fill in output parameter
+	if(bytesRead != null)
+	    bytesRead [0] = (bytePos - byteBufferStart);
+
+        // return # of chars written
+	return (ucPos - charBufferStart);
+    }
+
+    /** Reset the decompressor to its initial state. */
+    public void reset()
+    {
+        // reset dynamic windows
+        fOffsets[0] = 0x0080;    // Latin-1
+        fOffsets[1] = 0x00C0;    // Latin-1 Supplement + Latin Extended-A
+        fOffsets[2] = 0x0400;    // Cyrillic
+        fOffsets[3] = 0x0600;    // Arabic
+        fOffsets[4] = 0x0900;    // Devanagari
+        fOffsets[5] = 0x3040;    // Hiragana
+        fOffsets[6] = 0x30A0;    // Katakana
+        fOffsets[7] = 0xFF00;    // Fullwidth ASCII
+
+
+        fCurrentWindow  = 0;                // Make current window Latin-1
+        fMode           = SINGLEBYTEMODE;   // Always start in single-byte mode
+	fBufferLength   = 0;                // Empty buffer
+    }
+};
diff --git a/src/com/ibm/text/UnicodeFilter.java b/src/com/ibm/text/UnicodeFilter.java
new file mode 100755
index 0000000..411aa70
--- /dev/null
+++ b/src/com/ibm/text/UnicodeFilter.java
@@ -0,0 +1,34 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UnicodeFilter.java,v $ 
+ * $Date: 2000/03/10 04:07:25 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+/**
+ * <code>UnicodeFilter</code> defines a protocol for selecting a
+ * subset of the full range (U+0000 to U+FFFF) of Unicode characters.
+ * Currently, filters are used in conjunction with classes like {@link
+ * Transliterator} to only process selected characters through a
+ * transformation.
+ *
+ * {@link UnicodeFilterLogic}
+ */
+
+public interface UnicodeFilter {
+
+    /**
+     * Returns <tt>true</tt> for characters that are in the selected
+     * subset.  In other words, if a character is <b>to be
+     * filtered</b>, then <tt>contains()</tt> returns
+     * <b><tt>false</tt></b>.
+     */
+    boolean contains(char c);
+}
diff --git a/src/com/ibm/text/UnicodeFilterLogic.java b/src/com/ibm/text/UnicodeFilterLogic.java
new file mode 100755
index 0000000..9822df0
--- /dev/null
+++ b/src/com/ibm/text/UnicodeFilterLogic.java
@@ -0,0 +1,124 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UnicodeFilterLogic.java,v $ 
+ * $Date: 2000/03/10 04:07:25 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+/**
+ * <code>UnicodeFilterLogic</code> provides logical operators on
+ * {@link UnicodeFilter} objects.  This class cannot be instantiated;
+ * it consists only of static methods.  The static methods return
+ * filter objects that perform logical inversion (<tt>not</tt>),
+ * intersection (<tt>and</tt>), or union (<tt>or</tt>) of the given
+ * filter objects.
+ */
+public final class UnicodeFilterLogic {
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements the inverse of
+     * the given filter.
+     */
+    public static UnicodeFilter not(final UnicodeFilter f) {
+        return new UnicodeFilter() {
+            public boolean contains(char c) {
+                return !f.contains(c);
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit AND of the result of the two given filters.  That is,
+     * if <tt>f.contains()</tt> is <tt>false</tt>, then <tt>g.contains()</tt>
+     * is not called, and <tt>contains()</tt> returns <tt>false</tt>.
+     *
+     * <p>Either <tt>f</tt> or <tt>g</tt> must be non-null.
+     */
+    public static UnicodeFilter and(final UnicodeFilter f,
+                                    final UnicodeFilter g) {
+        if (f == null) {
+            return g;
+        }
+        if (g == null) {
+            return f;
+        }
+        return new UnicodeFilter() {
+            public boolean contains(char c) {
+                return f.contains(c) && g.contains(c);
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit AND of the result of the given filters.  That is, if
+     * <tt>f[i].contains()</tt> is <tt>false</tt>, then
+     * <tt>f[j].contains()</tt> is not called, where <tt>j > i</tt>, and
+     * <tt>contains()</tt> returns <tt>false</tt>.
+     */
+    public static UnicodeFilter and(final UnicodeFilter[] f) {
+        return new UnicodeFilter() {
+            public boolean contains(char c) {
+                for (int i=0; i<f.length; ++i) {
+                    if (!f[i].contains(c)) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit OR of the result of the two given filters.  That is, if
+     * <tt>f.contains()</tt> is <tt>true</tt>, then <tt>g.contains()</tt> is
+     * not called, and <tt>contains()</tt> returns <tt>true</tt>.
+     *
+     * <p>Either <tt>f</tt> or <tt>g</tt> must be non-null.
+     */
+    public static UnicodeFilter or(final UnicodeFilter f,
+                                   final UnicodeFilter g) {
+        if (f == null) {
+            return g;
+        }
+        if (g == null) {
+            return f;
+        }
+        return new UnicodeFilter() {
+            public boolean contains(char c) {
+                return f.contains(c) || g.contains(c);
+            }
+        };
+    }
+
+    /**
+     * Returns a <tt>UnicodeFilter</tt> that implements a short
+     * circuit OR of the result of the given filters.  That is, if
+     * <tt>f[i].contains()</tt> is <tt>false</tt>, then
+     * <tt>f[j].contains()</tt> is not called, where <tt>j > i</tt>, and
+     * <tt>contains()</tt> returns <tt>true</tt>.
+     */
+    public static UnicodeFilter or(final UnicodeFilter[] f) {
+        return new UnicodeFilter() {
+            public boolean contains(char c) {
+                for (int i=0; i<f.length; ++i) {
+                    if (f[i].contains(c)) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+        };
+    }
+
+    // TODO: Add nand() & nor() for convenience, if needed.
+}
diff --git a/src/com/ibm/text/UnicodeSet.java b/src/com/ibm/text/UnicodeSet.java
new file mode 100755
index 0000000..0e30849
--- /dev/null
+++ b/src/com/ibm/text/UnicodeSet.java
@@ -0,0 +1,1456 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UnicodeSet.java,v $ 
+ * $Date: 2000/03/10 04:07:25 $ 
+ * $Revision: 1.16 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+
+import java.text.*;
+
+/**
+ * A mutable set of Unicode characters.  Objects of this class
+ * represent <em>character classes</em> used in regular expressions.
+ * Such classes specify a subset of the set of all Unicode characters,
+ * which in this implementation is the characters from U+0000 to
+ * U+FFFF, ignoring surrogates.
+ *
+ * <p>This class supports two APIs.  The first is modeled after Java 2's
+ * <code>java.util.Set</code> interface, although this class does not
+ * implement that interface.  All methods of <code>Set</code> are
+ * supported, with the modification that they take a character range
+ * or single character instead of an <code>Object</code>, and they
+ * take a <code>UnicodeSet</code> instead of a <code>Collection</code>.
+ *
+ * <p>The second API is the
+ * <code>applyPattern()</code>/<code>toPattern()</code> API from the
+ * <code>java.text.Format</code>-derived classes.  Unlike the
+ * methods that add characters, add categories, and control the logic
+ * of the set, the method <code>applyPattern()</code> sets all
+ * attributes of a <code>UnicodeSet</code> at once, based on a
+ * string pattern.
+ *
+ * <p>In addition, the set complement operation is supported through
+ * the <code>complement()</code> method.
+ *
+ * <p><b>Pattern syntax</b></p>
+ *
+ * Patterns are accepted by the constructors and the
+ * <code>applyPattern()</code> methods and returned by the
+ * <code>toPattern()</code> method.  These patterns follow a syntax
+ * similar to that employed by version 8 regular expression character
+ * classes:
+ *
+ * <blockquote>
+ *   <table>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern :=&nbsp; </code></td>
+ *       <td valign="top"><code>('[' '^'? item* ']') |
+ *       ('[:' '^'? category ':]')</code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>item :=&nbsp; </code></td>
+ *       <td valign="top"><code>char | (char '-' char) | pattern-expr<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>pattern-expr :=&nbsp; </code></td>
+ *       <td valign="top"><code>pattern | pattern-expr pattern |
+ *       pattern-expr op pattern<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>op :=&nbsp; </code></td>
+ *       <td valign="top"><code>'&amp;' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>special :=&nbsp; </code></td>
+ *       <td valign="top"><code>'[' | ']' | '-'<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>char :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character that is not</em><code> special<br>
+ *       | ('\u005C' </code><em>any character</em><code>)<br>
+ *       | ('\u005Cu' hex hex hex hex)<br>
+ *       </code></td>
+ *     </tr>
+ *     <tr align="top">
+ *       <td nowrap valign="top" align="right"><code>hex :=&nbsp; </code></td>
+ *       <td valign="top"><em>any character for which
+ *       </em><code>Character.digit(c, 16)</code><em>
+ *       returns a non-negative result</em></td>
+ *     </tr>
+ *     <tr>
+ *       <td nowrap valign="top" align="right"><code>category :=&nbsp; </code></td>
+ *       <td valign="top"><code>'M' | 'N' | 'Z' | 'C' | 'L' | 'P' |
+ *       'S' | 'Mn' | 'Mc' | 'Me' | 'Nd' | 'Nl' | 'No' | 'Zs' | 'Zl' |
+ *       'Zp' | 'Cc' | 'Cf' | 'Cs' | 'Co' | 'Cn' | 'Lu' | 'Ll' | 'Lt'
+ *       | 'Lm' | 'Lo' | 'Pc' | 'Pd' | 'Ps' | 'Pe' | 'Po' | 'Sm' |
+ *       'Sc' | 'Sk' | 'So'</code></td>
+ *     </tr>
+ *   </table>
+ *   <br>
+ *   <table border="1">
+ *     <tr>
+ *       <td>Legend: <table>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a := b</code></td>
+ *           <td width="20" valign="top">&nbsp; </td>
+ *           <td valign="top"><code>a</code> may be replaced by <code>b</code> </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a?</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">zero or one instance of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a*</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">one or more instances of <code>a</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>a | b</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">either <code>a</code> or <code>b</code><br>
+ *           </td>
+ *         </tr>
+ *         <tr>
+ *           <td nowrap valign="top"><code>'a'</code></td>
+ *           <td valign="top"></td>
+ *           <td valign="top">the literal string between the quotes </td>
+ *         </tr>
+ *       </table>
+ *       </td>
+ *     </tr>
+ *   </table>
+ * </blockquote>
+ *
+ * Any character may be preceded by a backslash in order to remove any special
+ * meaning.  White space characters, as defined by Character.isWhitespace(), are
+ * ignored, unless they are escaped.
+ *
+ * Patterns specify individual characters, ranges of characters, and
+ * Unicode character categories.  When elements are concatenated, they
+ * specify their union.  To complement a set, place a '^' immediately
+ * after the opening '[' or '[:'.  In any other location, '^' has no
+ * special meaning.
+ *
+ * <p>Ranges are indicated by placing two a '-' between two
+ * characters, as in "a-z".  This specifies the range of all
+ * characters from the left to the right, in Unicode order.  If the
+ * left and right characters are the same, then the range consists of
+ * just that character.  If the left character is greater than the
+ * right character it is a syntax error.  If a '-' occurs as the first
+ * character after the opening '[' or '[^', or if it occurs as the
+ * last character before the closing ']', then it is taken as a
+ * literal.  Thus "[a\u005C-b]", "[-ab]", and "[ab-]" all indicate the same
+ * set of three characters, 'a', 'b', and '-'.
+ *
+ * <p>Sets may be intersected using the '&' operator or the asymmetric
+ * set difference may be taken using the '-' operator, for example,
+ * "[[:L:]&[\u005Cu0000-\u005Cu0FFF]]" indicates the set of all Unicode letters
+ * with values less than 4096.  Operators ('&' and '|') have equal
+ * precedence and bind left-to-right.  Thus
+ * "[[:L:]-[a-z]-[\u005Cu0100-\u005Cu01FF]]" is equivalent to
+ * "[[[:L:]-[a-z]]-[\u005Cu0100-\u005Cu01FF]]".  This only really matters for
+ * difference; intersection is commutative.
+ *
+ * <table>
+ * <tr valign=top><td nowrap><code>[a]</code><td>The set containing 'a'
+ * <tr valign=top><td nowrap><code>[a-z]</code><td>The set containing 'a'
+ * through 'z' and all letters in between, in Unicode order
+ * <tr valign=top><td nowrap><code>[^a-z]</code><td>The set containing
+ * all characters but 'a' through 'z',
+ * that is, U+0000 through 'a'-1 and 'z'+1 through U+FFFF
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>][<em>pat2</em>]]</code>
+ * <td>The union of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]&[<em>pat2</em>]]</code>
+ * <td>The intersection of sets specified by <em>pat1</em> and <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[[<em>pat1</em>]-[<em>pat2</em>]]</code>
+ * <td>The asymmetric difference of sets specified by <em>pat1</em> and
+ * <em>pat2</em>
+ * <tr valign=top><td nowrap><code>[:Lu:]</code>
+ * <td>The set of characters belonging to the given
+ * Unicode category, as defined by <code>Character.getType()</code>; in
+ * this case, Unicode uppercase letters
+ * <tr valign=top><td nowrap><code>[:L:]</code>
+ * <td>The set of characters belonging to all Unicode categories
+ * starting wih 'L', that is, <code>[[:Lu:][:Ll:][:Lt:][:Lm:][:Lo:]]</code>.
+ * </table>
+ *
+ * <p><b>Character categories.</b>
+ *
+ * Character categories are specified using the POSIX-like syntax
+ * '[:Lu:]'.  The complement of a category is specified by inserting
+ * '^' after the opening '[:'.  The following category names are
+ * recognized.  Actual determination of category data uses
+ * <code>Character.getType()</code>, so it reflects the underlying
+ * implmementation used by <code>Character</code>.  As of Java 2 and
+ * JDK 1.1.8, this is Unicode 2.1.2.
+ *
+ * <pre>
+ * Normative
+ *     Mn = Mark, Non-Spacing
+ *     Mc = Mark, Spacing Combining
+ *     Me = Mark, Enclosing
+ * 
+ *     Nd = Number, Decimal Digit
+ *     Nl = Number, Letter
+ *     No = Number, Other
+ * 
+ *     Zs = Separator, Space
+ *     Zl = Separator, Line
+ *     Zp = Separator, Paragraph
+ * 
+ *     Cc = Other, Control
+ *     Cf = Other, Format
+ *     Cs = Other, Surrogate
+ *     Co = Other, Private Use
+ *     Cn = Other, Not Assigned
+ * 
+ * Informative
+ *     Lu = Letter, Uppercase
+ *     Ll = Letter, Lowercase
+ *     Lt = Letter, Titlecase
+ *     Lm = Letter, Modifier
+ *     Lo = Letter, Other
+ * 
+ *     Pc = Punctuation, Connector
+ *     Pd = Punctuation, Dash
+ *     Ps = Punctuation, Open
+ *     Pe = Punctuation, Close
+ *    *Pi = Punctuation, Initial quote
+ *    *Pf = Punctuation, Final quote
+ *     Po = Punctuation, Other
+ * 
+ *     Sm = Symbol, Math
+ *     Sc = Symbol, Currency
+ *     Sk = Symbol, Modifier
+ *     So = Symbol, Other
+ * </pre>
+ * *Unsupported by Java (and hence unsupported by UnicodeSet).
+ *
+ * @author Alan Liu
+ * @version $RCSfile: UnicodeSet.java,v $ $Revision: 1.16 $ $Date: 2000/03/10 04:07:25 $
+ */
+public class UnicodeSet implements UnicodeFilter {
+    /**
+     * The internal representation is a StringBuffer of even length.
+     * Each pair of characters represents a range that is included in
+     * the set.  A single character c is represented as cc.  Thus, the
+     * ranges in the set are (a,b), a and b inclusive, where a =
+     * pairs.charAt(i) and b = pairs.charAt(i+1) for all even i, 0 <=
+     * i <= pairs.length()-2.  Pairs are always stored in ascending
+     * Unicode order.  Pairs are always stored in shortest form.  For
+     * example, if the pair "hh", representing the single character
+     * 'h', is added to the pairs list "agik", representing the ranges
+     * 'a'-'g' and 'i'-'k', the result is "ak", not "aghhik".
+     *
+     * This representation format was originally used in Richard
+     * Gillam's CharSet class.
+     */
+    private StringBuffer pairs;
+
+    private static final String CATEGORY_NAMES =
+        //                    1 1 1 1 1 1 1   1 1 2 2 2 2 2 2 2 2 2
+        //0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6   8 9 0 1 2 3 4 5 6 7 8
+        "CnLuLlLtLmLoMnMeMcNdNlNoZsZlZpCcCf--CoCsPdPsPePcPoSmScSkSo";
+
+    private static final int UNSUPPORTED_CATEGORY = 17;
+
+    private static final char VARIABLE_REF_OPEN = '{';
+    private static final char VARIABLE_REF_CLOSE = '}';
+
+    private static final int CATEGORY_COUNT = 29;
+
+    /**
+     * A cache mapping character category integers, as returned by
+     * Character.getType(), to pairs strings.  Entries are initially
+     * null and are created on demand.
+     */
+    private static final String[] CATEGORY_PAIRS_CACHE =
+        new String[CATEGORY_COUNT];
+
+    //----------------------------------------------------------------
+    // Debugging and testing
+    //----------------------------------------------------------------
+
+    /**
+     * Return the representation of this set as a list of character
+     * ranges.  Ranges are listed in ascending Unicode order.  For
+     * example, the set [a-zA-M3] is represented as "33AMaz".
+     */
+    public String getPairs() {
+        return pairs.toString();
+    }
+
+    //----------------------------------------------------------------
+    // Public API
+    //----------------------------------------------------------------
+
+    /**
+     * Constructs an empty set.
+     */
+    public UnicodeSet() {
+        pairs = new StringBuffer();
+    }
+
+    /**
+     * Constructs a copy of an existing set.
+     */
+    public UnicodeSet(UnicodeSet other) {
+        pairs = new StringBuffer(other.pairs.toString());
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.  Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     */
+    public UnicodeSet(String pattern) {
+        this(pattern, true);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true, ignore characters for which
+     * Character.isWhitespace() returns true
+     * @exception java.lang.IllegalArgumentException if the pattern contains
+     * a syntax error.
+     */
+    public UnicodeSet(String pattern, boolean ignoreWhitespace) {
+        applyPattern(pattern, ignoreWhitespace);
+    }
+
+    /**
+     * Constructs a set from the given pattern.  See the class description
+     * for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param varNameToChar a mapping from variable names (String) to characters
+     * (Character).  May be null.  If varCharToSet is non-null, then names may
+     * map to either single characters or sets, depending on whether a mapping
+     * exists in varCharToSet.  If varCharToSet is null then all names map to
+     * single characters.
+     * @param varCharToSet a mapping from characters (Character objects from
+     * varNameToChar) to UnicodeSet objects.  May be null.  Is only used if
+     * varNameToChar is also non-null.
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    public UnicodeSet(String pattern, ParsePosition pos, SymbolTable symbols) {
+        applyPattern(pattern, pos, symbols);
+    }
+
+    /**
+     * Constructs a set from the given Unicode character category.
+     * @param category an integer indicating the character category as
+     * returned by <code>Character.getType()</code>.
+     * @exception java.lang.IllegalArgumentException if the given
+     * category is invalid.
+     */
+    public UnicodeSet(int category) {
+        if (category < 0 || category >= CATEGORY_COUNT ||
+            category == UNSUPPORTED_CATEGORY) {
+            throw new IllegalArgumentException("Invalid category");
+        }
+        pairs = new StringBuffer(getCategoryPairs(category));
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern.
+     * See the class description for the syntax of the pattern language.
+     * Whitespace is ignored.
+     * @param pattern a string specifying what characters are in the set
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    public final void applyPattern(String pattern) {
+        applyPattern(pattern, true);
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern.
+     * See the class description for the syntax of the pattern language.
+     * @param pattern a string specifying what characters are in the set
+     * @param ignoreWhitespace if true then characters for which
+     * Character.isWhitespace() returns true are ignored
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    public void applyPattern(String pattern, boolean ignoreWhitespace) {
+        ParsePosition pos = new ParsePosition(0);
+        pairs = parse(pattern, pos, null, ignoreWhitespace);
+
+        int i = pos.getIndex();
+        int n = pattern.length();
+
+        // Skip over trailing whitespace
+        if (ignoreWhitespace) {
+            while (i < n && Character.isWhitespace(pattern.charAt(i))) {
+                ++i;
+            }
+        }
+
+        if (i != n) {
+            throw new IllegalArgumentException("Parse of \"" + pattern +
+                                               "\" failed at " + i);
+        }
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param varNameToChar a mapping from variable names (String) to characters
+     * (Character).  May be null.  If varCharToSet is non-null, then names may
+     * map to either single characters or sets, depending on whether a mapping
+     * exists in varCharToSet.  If varCharToSet is null then all names map to
+     * single characters.
+     * @param varCharToSet a mapping from characters (Character objects from
+     * varNameToChar) to UnicodeSet objects.  May be null.  Is only used if
+     * varNameToChar is also non-null.
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    private void applyPattern(String pattern, ParsePosition pos, SymbolTable symbols) {
+        pairs = parse(pattern, pos, symbols, true);
+    }
+
+    /**
+     * Modifies this set to represent the set specified by the given pattern.
+     * @param pattern a string specifying what characters are in the set
+     * @param pos on input, the position in pattern at which to start parsing.
+     * On output, the position after the last character parsed.
+     * @param varNameToChar a mapping from variable names (String) to characters
+     * (Character).  May be null.  If varCharToSet is non-null, then names may
+     * map to either single characters or sets, depending on whether a mapping
+     * exists in varCharToSet.  If varCharToSet is null then all names map to
+     * single characters.
+     * @param varCharToSet a mapping from characters (Character objects from
+     * varNameToChar) to UnicodeSet objects.  May be null.  Is only used if
+     * varNameToChar is also non-null.
+     * @exception java.lang.IllegalArgumentException if the pattern
+     * contains a syntax error.
+     */
+    private void applyPattern(String pattern,
+                              ParsePosition pos, SymbolTable symbols,
+                              boolean ignoreWhitespace) {
+        pairs = parse(pattern, pos, symbols, ignoreWhitespace);
+    }
+
+    /**
+     * Returns a string representation of this set.  If the result of
+     * calling this function is passed to a UnicodeSet constructor, it
+     * will produce another set that is equal to this one.
+     */
+    public String toPattern() {
+        StringBuffer result = new StringBuffer();
+        result.append('[');
+        
+        // iterate through the ranges in the UnicodeSet
+        for (int i=0; i<pairs.length(); i+=2) {
+            // for a range with the same beginning and ending point,
+            // output that character, otherwise, output the start and
+            // end points of the range separated by a dash
+            result.append(pairs.charAt(i));
+            if (pairs.charAt(i) != pairs.charAt(i+1)) {
+                result.append('-').append(pairs.charAt(i+1));
+            }
+        }
+        
+        return result.append(']').toString();        
+    }
+
+    /**
+     * Returns the number of elements in this set (its cardinality),
+     * <em>n</em>, where <code>0 <= </code><em>n</em><code> <= 65536</code>.
+     *
+     * @return the number of elements in this set (its cardinality).
+     */
+    public int size() {
+        int n = 0;
+        for (int i=0; i<pairs.length(); i+=2) {
+            n += pairs.charAt(i+1) - pairs.charAt(i) + 1;
+        }
+        return n;
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains no elements.
+     *
+     * @return <tt>true</tt> if this set contains no elements.
+     */
+    public boolean isEmpty() {
+        return pairs.length() == 0;
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains the specified range
+     * of chars.
+     *
+     * @return <tt>true</tt> if this set contains the specified range
+     * of chars.
+     */
+    public boolean contains(char first, char last) {
+        // Set i to the end of the smallest range such that its end
+        // point >= last, or pairs.length() if no such range exists.
+        int i = 1;
+        while (i<pairs.length() && last>pairs.charAt(i)) i+=2;
+        return i<pairs.length() && first>=pairs.charAt(i-1);
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains the specified char.
+     *
+     * @return <tt>true</tt> if this set contains the specified char.
+     */
+    public boolean contains(char c) {
+        return contains(c, c);
+    }
+
+    /**
+     * Returns <tt>true</tt> if this set contains any character whose low byte
+     * is the given value.  This is used by <tt>RuleBasedTransliterator</tt> for
+     * indexing.
+     */
+    public boolean containsIndexValue(int v) {
+        /* The index value v, in the range [0,255], is contained in this set if
+         * it is contained in any pair of this set.  Pairs either have the high
+         * bytes equal, or unequal.  If the high bytes are equal, then we have
+         * aaxx..aayy, where aa is the high byte.  Then v is contained if xx <=
+         * v <= yy.  If the high bytes are unequal we have aaxx..bbyy, bb>aa.
+         * Then v is contained if xx <= v || v <= yy.  (This is identical to the
+         * time zone month containment logic.)
+         */
+        for (int i=0; i<pairs.length(); i+=2) {
+            char low = pairs.charAt(i);
+            char high = pairs.charAt(i+1);
+            if ((low & 0xFF00) == (high & 0xFF00)) {
+                if ((low & 0xFF) <= v && v <= (high & 0xFF)) {
+                    return true;
+                }
+            } else if ((low & 0xFF) <= v || v <= (high & 0xFF)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Adds the specified range to this set if it is not already
+     * present.  If this set already contains the specified range,
+     * the call leaves this set unchanged.  If <code>last > first</code>
+     * then an empty range is added, leaving the set unchanged.
+     *
+     * @param first first character, inclusive, of range to be added
+     * to this set.
+     * @param last last character, inclusive, of range to be added
+     * to this set.
+     */
+    public void add(char first, char last) {
+        if (first <= last) {
+            addPair(pairs, first, last);
+        }
+    }
+
+    /**
+     * Adds the specified character to this set if it is not already
+     * present.  If this set already contains the specified character,
+     * the call leaves this set unchanged.
+     */
+    public final void add(char c) {
+        add(c, c);
+    }
+
+    /**
+     * Removes the specified range from this set if it is present.
+     * The set will not contain the specified range once the call
+     * returns.  If <code>last > first</code> then an empty range is
+     * removed, leaving the set unchanged.
+     * 
+     * @param first first character, inclusive, of range to be removed
+     * from this set.
+     * @param last last character, inclusive, of range to be removed
+     * from this set.
+     */
+    public void remove(char first, char last) {
+        if (first <= last) {
+            removePair(pairs, first, last);
+        }
+    }
+
+    /**
+     * Removes the specified character from this set if it is present.
+     * The set will not contain the specified range once the call
+     * returns.
+     */
+    public final void remove(char c) {
+        remove(c, c);
+    }
+
+    /**
+     * Returns <tt>true</tt> if the specified set is a <i>subset</i>
+     * of this set.
+     *
+     * @param c set to be checked for containment in this set.
+     * @return <tt>true</tt> if this set contains all of the elements of the
+     * 	       specified set.
+     */
+    public boolean containsAll(UnicodeSet c) {
+        // The specified set is a subset if all of its pairs are contained
+        // in this set.
+        int i = 1;
+        for (int j=0; j<c.pairs.length(); j+=2) {
+            char last = c.pairs.charAt(j+1);
+            // Set i to the end of the smallest range such that its
+            // end point >= last, or pairs.length() if no such range
+            // exists.
+            while (i<pairs.length() && last>pairs.charAt(i)) i+=2;
+            if (i>pairs.length() || c.pairs.charAt(j) < pairs.charAt(i-1)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Adds all of the elements in the specified set to this set if
+     * they're not already present.  This operation effectively
+     * modifies this set so that its value is the <i>union</i> of the two
+     * sets.  The behavior of this operation is unspecified if the specified
+     * collection is modified while the operation is in progress.
+     *
+     * @param c set whose elements are to be added to this set.
+     * @see #add(char, char)
+     */
+    public void addAll(UnicodeSet c) {
+        doUnion(pairs, c.pairs.toString());
+    }
+
+    /**
+     * Retains only the elements in this set that are contained in the
+     * specified set.  In other words, removes from this set all of
+     * its elements that are not contained in the specified set.  This
+     * operation effectively modifies this set so that its value is
+     * the <i>intersection</i> of the two sets.
+     *
+     * @param c set that defines which elements this set will retain.
+     */
+    public void retainAll(UnicodeSet c) {
+        doIntersection(pairs, c.pairs.toString());
+    }
+
+    /**
+     * Removes from this set all of its elements that are contained in the
+     * specified set.  This operation effectively modifies this
+     * set so that its value is the <i>asymmetric set difference</i> of
+     * the two sets.
+     *
+     * @param c set that defines which elements will be removed from
+     *          this set.
+     */
+    public void removeAll(UnicodeSet c) {
+        doDifference(pairs, c.pairs.toString());
+    }
+
+    /**
+     * Inverts this set.  This operation modifies this set so that
+     * its value is its complement.  This is equivalent to the pseudo code:
+     * <code>this = new UnicodeSet("[\u0000-\uFFFF]").removeAll(this)</code>.
+     */
+    public void complement() {
+        doComplement(pairs);
+    }
+
+    /**
+     * Removes all of the elements from this set.  This set will be
+     * empty after this call returns.
+     */
+    public void clear() {
+        pairs.setLength(0);
+    }
+
+    /**
+     * Compares the specified object with this set for equality.  Returns
+     * <tt>true</tt> if the specified object is also a set, the two sets
+     * have the same size, and every member of the specified set is
+     * contained in this set (or equivalently, every member of this set is
+     * contained in the specified set).
+     *
+     * @param o Object to be compared for equality with this set.
+     * @return <tt>true</tt> if the specified Object is equal to this set.
+     */
+    public boolean equals(Object o) {
+        return o instanceof UnicodeSet &&
+            pairs.toString().equals(((UnicodeSet)o).pairs.toString());
+    }
+
+    /**
+     * Returns the hash code value for this set.
+     *
+     * @return the hash code value for this set.
+     * @see Object#hashCode()
+     */
+    public int hashCode() {
+        return pairs.hashCode();
+    }
+
+    /**
+     * Return a programmer-readable string representation of this object.
+     */
+    public String toString() {
+        return getClass().getName() + '{' + toPattern() + '}';
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Pattern parsing
+    //----------------------------------------------------------------
+
+    /**
+     * Parses the given pattern, starting at the given position.  The character
+     * at pattern.charAt(pos.getIndex()) must be '[', or the parse fails.
+     * Parsing continues until the corresponding closing ']'.  If a syntax error
+     * is encountered between the opening and closing brace, the parse fails.
+     * Upon return from a successful parse, the ParsePosition is updated to
+     * point to the character following the closing ']', and a StringBuffer
+     * containing a pairs list for the parsed pattern is returned.  This method
+     * calls itself recursively to parse embedded subpatterns.
+     *
+     * @param pattern the string containing the pattern to be parsed.  The
+     * portion of the string from pos.getIndex(), which must be a '[', to the
+     * corresponding closing ']', is parsed.
+     * @param pos upon entry, the position at which to being parsing.  The
+     * character at pattern.charAt(pos.getIndex()) must be a '['.  Upon return
+     * from a successful parse, pos.getIndex() is either the character after the
+     * closing ']' of the parsed pattern, or pattern.length() if the closing ']'
+     * is the last character of the pattern string.
+     * @return a StringBuffer containing a pairs list for the parsed substring
+     * of <code>pattern</code>
+     * @exception java.lang.IllegalArgumentException if the parse fails.
+     */
+    private static StringBuffer parse(String pattern, ParsePosition pos,
+                                      SymbolTable symbols, boolean ignoreWhitespace) {
+
+        StringBuffer pairsBuf = new StringBuffer();
+        boolean invert = false;
+
+        int lastChar = -1; // This is either a char (0..FFFF) or -1
+        char lastOp = 0;
+
+        /* This loop iterates over the characters in the pattern.  We start at
+         * the position specified by pos.  We exit the loop when either a
+         * matching closing ']' is seen, or we read all characters of the
+         * pattern.  In the latter case an error will be thrown.
+         */
+
+        /* Pattern syntax:
+         *  pat := '[' '^'? elem* ']'
+         *  elem := a | a '-' a | set | set op set
+         *  set := pat | (a set variable)
+         *  op := '&' | '-'
+         *  a := (a character, possibly defined by a var)
+         */
+
+        // mode 0: No chars parsed yet; next must be '['
+        // mode 1: '[' seen; if next is '^' or ':' then special
+        // mode 2: '[' '^'? seen; parse pattern and close with ']'
+        // mode 3: '[:' seen; parse category and close with ':]'
+        int mode = 0;
+        int openPos = 0; // offset to opening '['
+        int start = pos.getIndex();
+        int i = start;
+        int limit = pattern.length();
+        for (; i<limit; ++i) {
+            /* If the next element is a single character, c will be set to it,
+             * and nestedPairs will be null.  In this case isLiteral indicates
+             * whether the character should assume special meaning if it has
+             * one.  If the next element is a nested set, either via a variable
+             * reference, or via an embedded "[..]"  or "[:..:]" pattern, then
+             * nestedPairs will be set to the pairs list for the nested set, and
+             * c's value should be ignored.
+             */
+            char c = pattern.charAt(i);
+            String nestedPairs = null;
+            boolean isLiteral = false;
+
+            // Ignore whitespace.  This is not Unicode whitespace, but Java
+            // whitespace, a subset of Unicode whitespace.
+            if (ignoreWhitespace && Character.isWhitespace(c)) {
+                continue;
+            }
+
+            // Parse the opening '[' and optional following '^'
+            switch (mode) {
+            case 0:
+                if (c == '[') {
+                    mode = 1; // Next look for '^'
+                    openPos = i;
+                    continue;
+                } else {
+                    throw new IllegalArgumentException("Missing opening '['");
+                }
+            case 1:
+                mode = 2;
+                switch (c) {
+                case '^':
+                    invert = true;
+                    continue; // Back to top to fetch next character
+                case ':':
+                    if (i == openPos+1) {
+                        // '[:' cannot have whitespace in it
+                        --i;
+                        c = '[';
+                        mode = 3;
+                        // Fall through and parse category normally
+                    }
+                    break; // Fall through
+                case '-':
+                    isLiteral = true; // Treat leading '-' as a literal
+                    break; // Fall through
+                }
+                // else fall through and parse this character normally
+            }
+
+            // After opening matter is parsed ("[", "[^", or "[:"), the mode
+            // will be 2 if we want a closing ']', or 3 if we should parse a
+            // category and close with ":]".
+
+            /* Handle escapes.  If a character is escaped, then it assumes its
+             * literal value.  This is true for all characters, both special
+             * characters and characters with no special meaning.  We also
+             * interpret '\\uxxxx' Unicode escapes here (as literals).
+             */
+            if (c == '\\') {
+                ++i;
+                if (i < limit) {
+                    c = pattern.charAt(i);
+                    isLiteral = true;
+                    if (c == 'u') {
+                        if ((i+4) >= limit) {
+                            throw new IllegalArgumentException("Invalid \\u escape");
+                        }
+                        c = '\u0000';
+                        for (int j=(++i)+4; i<j; ++i) { // [sic]
+                            int digit = Character.digit(pattern.charAt(i), 16);
+                            if (digit<0) {
+                                throw new IllegalArgumentException("Invalid \\u escape");
+                            }
+                            c = (char) ((c << 4) | digit);
+                        }
+                        --i; // Move i back to last parsed character
+                    }
+                } else {
+                    throw new IllegalArgumentException("Trailing '\\'");
+                }
+            }
+
+            /* Parse variable references.  These are treated as literals.  If a
+             * variable refers to a UnicodeSet, nestedPairs is assigned here.
+             * Variable names are only parsed if varNameToChar is not null.
+             * Set variables are only looked up if varCharToSet is not null.
+             */
+            else if (symbols != null && !isLiteral && c == VARIABLE_REF_OPEN) {
+                ++i;
+                int j = pattern.indexOf(VARIABLE_REF_CLOSE, i);
+                if (i == j || j < 0) { // empty or unterminated
+                    throw new IllegalArgumentException("Illegal variable reference");
+                }
+                String name = pattern.substring(i, j);
+                Object obj = symbols.lookup(name);
+                if (obj == null) {
+                    throw new IllegalArgumentException("Undefined variable: "
+                                                       + name);
+                }
+                isLiteral = true;
+                if (obj instanceof Character) {
+                    c = ((Character) obj).charValue();
+                } else {
+                    nestedPairs = ((UnicodeSet) obj).pairs.toString();
+                }
+                i = j; // Make i point at closing '}'
+            }
+
+            /* An opening bracket indicates the first bracket of a nested
+             * subpattern, either a normal pattern or a category pattern.  We
+             * recognize these here and set nestedPairs accordingly.
+             */
+            else if (!isLiteral && c == '[') {
+                // Handle "[:...:]", representing a character category
+                char d = charAfter(pattern, i);
+                if (d == ':') {
+                    i += 2;
+                    int j = pattern.indexOf(":]", i);
+                    if (j < 0) {
+                        throw new IllegalArgumentException("Missing \":]\"");
+                    }
+                    nestedPairs = getCategoryPairs(pattern.substring(i, j));
+                    i = j+1; // Make i point to ']' in ":]"
+                    if (mode == 3) {
+                        // Entire pattern is a category; leave parse loop
+                        pairsBuf.append(nestedPairs);
+                        break;
+                    }
+                } else {
+                    // Recurse to get the pairs for this nested set.
+                    pos.setIndex(i); // Add 2 to point AFTER op
+                    nestedPairs = parse(pattern, pos, symbols, ignoreWhitespace).toString();
+                    i = pos.getIndex() - 1; // - 1 to point at ']'
+                }
+            }
+
+            /* At this point we have either a character c, or a nested set.  If
+             * we have encountered a nested set, either embedded in the pattern,
+             * or as a variable, we have a non-null nestedPairs, and c should be
+             * ignored.  Otherwise c is the current character, and isLiteral
+             * indicates whether it is an escaped literal (or variable) or a
+             * normal unescaped character.  Unescaped characters '-', '&', and
+             * ']' have special meanings.
+             */
+            if (nestedPairs != null) {
+                if (lastChar >= 0) {
+                    if (lastOp != 0) {
+                        throw new IllegalArgumentException("Illegal rhs for " + lastChar + lastOp);
+                    }
+                    addPair(pairsBuf, (char)lastChar, (char)lastChar);
+                    lastChar = -1;
+                }
+                switch (lastOp) {
+                case '-':
+                    doDifference(pairsBuf, nestedPairs);
+                    break;
+                case '&':
+                    doIntersection(pairsBuf, nestedPairs);
+                    break;
+                case 0:
+                    doUnion(pairsBuf, nestedPairs);
+                    break;
+                }
+                lastOp = 0;
+            } else if (!isLiteral && c == ']') {
+                // Final closing delimiter.  This is the only way we leave this
+                // loop if the pattern is well-formed.
+                break;
+            } else if (lastOp == 0 && !isLiteral && (c == '-' || c == '&')) {
+                lastOp = c;
+            } else if (lastOp == '-') {
+                addPair(pairsBuf, (char)lastChar, c);
+                lastOp = 0;
+                lastChar = -1;
+            } else if (lastOp != 0) {
+                // We have <set>&<char> or <char>&<char>
+                throw new IllegalArgumentException("Unquoted " + lastOp);
+            } else {
+                if (lastChar >= 0) {
+                    // We have <char><char>
+                    addPair(pairsBuf, (char)lastChar, (char)lastChar);
+                }
+                lastChar = c;
+            }
+        }
+
+        if (mode == 0) {
+            throw new IllegalArgumentException("Missing '[' in \"" +
+                                               pattern.substring(start) + '"');
+        }
+
+        // Handle unprocessed stuff preceding the closing ']'
+        if (lastOp == '-') {
+            // Trailing '-' is treated as literal
+            addPair(pairsBuf, lastOp, lastOp);
+        } else if (lastOp == '&') {
+            throw new IllegalArgumentException("Unquoted trailing " + lastOp);
+        }
+        if (lastChar >= 0) {
+            addPair(pairsBuf, (char)lastChar, (char)lastChar);                    
+        }
+
+        /**
+         * If we saw a '^' after the initial '[' of this pattern, then perform
+         * the complement.  (Inversion after '[:' is handled elsewhere.)
+         */
+        if (invert) {
+            doComplement(pairsBuf);
+        }
+
+        /**
+         * i indexes the last character we parsed or is pattern.length().  In
+         * the latter case, we have run off the end without finding a closing
+         * ']'.  Otherwise, we know i < pattern.length(), and we set the
+         * ParsePosition to the next character to be parsed.
+         */
+        if (i == limit) {
+            throw new IllegalArgumentException("Missing ']' in \"" +
+                                               pattern.substring(start) + '"');
+        }
+        pos.setIndex(i+1);
+
+        return pairsBuf;
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Efficient in-place union & difference
+    //----------------------------------------------------------------
+
+    /**
+     * Performs a union operation: adds the range 'c'-'d' to the given
+     * pairs list.  The pairs list is modified in place.  The result
+     * is normalized (in order and as short as possible).  For
+     * example, addPair("am", 'l', 'q') => "aq".  addPair("ampz", 'n',
+     * 'o') => "az".
+     */
+    private static void addPair(StringBuffer pairs, char c, char d) {
+        char a = 0;
+        char b = 0;
+        for (int i=0; i<pairs.length(); i+=2) {
+            char e = pairs.charAt(i);
+            char f = pairs.charAt(i+1);
+            if (e <= (d+1) && c <= (f+1)) {
+                // Merge with this range
+                f = (char) Math.max(d, f);
+
+                // Check to see if we need to merge with the
+                // subsequent range also.  This happens if we have
+                // "abdf" and are merging in "cc".  We only need to
+                // check on the right side -- never on the left.
+                if ((i+2) < pairs.length() &&
+                    pairs.charAt(i+2) == (f+1)) {
+                    f = pairs.charAt(i+3);
+                    stringBufferDelete(pairs, i+2, i+4);
+                }
+                pairs.setCharAt(i, (char) Math.min(c, e));
+                pairs.setCharAt(i+1, f);
+                return;
+            } else if ((b+1) < c && (d+1) < e) {
+                // Insert before this range
+                pairs.insert(i, new char[] { c, d });
+                return;
+            }
+            a = e;
+            b = f;
+        }
+        // If nothing else, fall through and append this new range to
+        // the end.
+        pairs.append(c).append(d);
+    }
+
+    /**
+     * Performs an asymmetric difference: removes the range 'c'-'d'
+     * from the pairs list.  The pairs list is modified in place.  The
+     * result is normalized (in order and as short as possible).  For
+     * example, removePair("am", 'l', 'q') => "ak".
+     * removePair("ampz", 'l', 'q') => "akrz".
+     */
+    private static void removePair(StringBuffer pairs, char c, char d) {
+        // Iterate over pairs until we find a pair that overlaps
+        // with the given range.
+        for (int i=0; i<pairs.length(); i+=2) {
+            char b = pairs.charAt(i+1);
+            if (b < c) {
+                // Range at i is entirely before the given range,
+                // since we have a-b < c-d.  No overlap yet...keep
+                // iterating.
+                continue;
+            }
+            char a = pairs.charAt(i);
+            if (d < a) {
+                // Range at i is entirely after the given range; c-d <
+                // a-b.  Since ranges are in order, nothing else will
+                // overlap.
+                break;
+            }
+            // Once we get here, we know c <= b and d >= a.
+            // rangeEdited is set to true if we have modified the
+            // range a-b (the range at i) in place.
+            boolean rangeEdited = false;
+            if (c > a) {
+                // If c is after a and before b, then we have overlap
+                // of this sort: a--c==b--d or a--c==d--b, where a-b
+                // and c-d are the ranges of interest.  We need to
+                // add the range a,c-1.
+                pairs.setCharAt(i+1, (char)(c-1));
+                // i is already a
+                rangeEdited = true;
+            }
+            if (d < b) {
+                // If d is after a and before b, we overlap like this:
+                // c--a==d--b or a--c==d--b, where a-b is the range at
+                // i and c-d is the range being removed.  We need to
+                // add the range d+1,b.
+                if (rangeEdited) {
+                    pairs.insert(i+2, new char[] { (char)(d+1), b });
+                    i += 2;
+                } else {
+                    pairs.setCharAt(i, (char)(d+1));
+                    // i+1 is already b
+                    rangeEdited = true;
+                }
+            }
+            if (!rangeEdited) {
+                // If we didn't add any ranges, that means the entire
+                // range a-b must be deleted, since we have
+                // c--a==b--d.
+                stringBufferDelete(pairs, i, i+2);
+                i -= 2;
+            }
+        }
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Fundamental operators
+    //----------------------------------------------------------------
+
+    /**
+     * Changes the pairs list to represent the complement of the set it
+     * currently represents.  The pairs list will be normalized (in
+     * order and in shortest possible form) if the original pairs list
+     * was normalized.
+     */
+    private static void doComplement(StringBuffer pairs) {
+        if (pairs.length() == 0) {
+            pairs.append('\u0000').append('\uffff');
+            return;
+        }
+
+        // Change each end to a start and each start to an end of the
+        // gaps between the ranges.  That is, 3-7 9-12 becomes x-2 8-8
+        // 13-x, where 'x' represents a range that must now be fixed
+        // up.
+        for (int i=0; i<pairs.length(); i+=2) {
+            pairs.setCharAt(i,   (char) (pairs.charAt(i)   - 1));
+            pairs.setCharAt(i+1, (char) (pairs.charAt(i+1) + 1));
+        }
+
+        // Fix up the initial range, either by adding a start point of
+        // U+0000, or by deleting the range altogether, if the
+        // original range was U+0000 - x.
+        if (pairs.charAt(0) == '\uFFFF') {
+            stringBufferDelete(pairs, 0, 1);
+        } else {
+            pairs.insert(0, '\u0000');
+        }
+
+        // Fix up the final range, either by adding an end point of
+        // U+FFFF, or by deleting the range altogether, if the
+        // original range was x - U+FFFF.
+        if (pairs.charAt(pairs.length() - 1) == '\u0000') {
+            pairs.setLength(pairs.length() - 1);
+        } else {
+            pairs.append('\uFFFF');
+        }
+    }
+
+    /**
+     * Given two pairs lists, changes the first in place to represent
+     * the union of the two sets.
+     *
+     * This implementation format was stolen from Richard Gillam's
+     * CharSet class.
+     */
+    private static void doUnion(StringBuffer pairs, String c2) {
+        StringBuffer result = new StringBuffer();
+        String c1 = pairs.toString();
+
+        int i = 0;
+        int j = 0;
+
+        // consider all the characters in both strings
+        while (i < c1.length() && j < c2.length()) {
+            char ub;
+            
+            // the first character in the result is the lower of the
+            // starting characters of the two strings, and "ub" gets
+            // set to the upper bound of that range
+            if (c1.charAt(i) < c2.charAt(j)) {
+                result.append(c1.charAt(i));
+                ub = c1.charAt(++i);
+            }
+            else {
+                result.append(c2.charAt(j));
+                ub = c2.charAt(++j);
+            }
+            
+            // for as long as one of our two pointers is pointing to a range's
+            // end point, or i is pointing to a character that is less than
+            // "ub" plus one (the "plus one" stitches touching ranges together)...
+            while (i % 2 == 1 || j % 2 == 1 || (i < c1.length() && c1.charAt(i)
+                            <= ub + 1)) {
+                // advance i to the first character that is greater than
+                // "ub" plus one
+                while (i < c1.length() && c1.charAt(i) <= ub + 1)
+                    ++i;
+                    
+                // if i points to the endpoint of a range, update "ub"
+                // to that character, or if i points to the start of
+                // a range and the endpoint of the preceding range is
+                // greater than "ub", update "up" to _that_ character
+                if (i % 2 == 1)
+                    ub = c1.charAt(i);
+                else if (i > 0 && c1.charAt(i - 1) > ub)
+                    ub = c1.charAt(i - 1);
+
+                // now advance j to the first character that is greater
+                // that "ub" plus one
+                while (j < c2.length() && c2.charAt(j) <= ub + 1)
+                    ++j;
+                    
+                // if j points to the endpoint of a range, update "ub"
+                // to that character, or if j points to the start of
+                // a range and the endpoint of the preceding range is
+                // greater than "ub", update "up" to _that_ character
+                if (j % 2 == 1)
+                    ub = c2.charAt(j);
+                else if (j > 0 && c2.charAt(j - 1) > ub)
+                    ub = c2.charAt(j - 1);
+            }
+            // when we finally fall out of this loop, we will have stitched
+            // together a series of ranges that overlap or touch, i and j
+            // will both point to starting points of ranges, and "ub" will
+            // be the endpoint of the range we're working on.  Write "ub"
+            // to the result
+            result.append(ub);
+            
+        // loop back around to create the next range in the result
+        }
+        
+        // we fall out to here when we've exhausted all the characters in
+        // one of the operands.  We can append all of the remaining characters
+        // in the other operand without doing any extra work.
+        if (i < c1.length())
+            result.append(c1.substring(i));
+        if (j < c2.length())
+            result.append(c2.substring(j));
+
+        pairs.setLength(0);
+        pairs.append(result.toString());
+    }
+
+    /**
+     * Given two pairs lists, changes the first in place to represent
+     * the asymmetric difference of the two sets.
+     */
+    private static void doDifference(StringBuffer pairs, String pairs2) {
+        StringBuffer p2 = new StringBuffer(pairs2);
+        doComplement(p2);
+        doIntersection(pairs, p2.toString());
+    }
+
+    /**
+     * Given two pairs lists, changes the first in place to represent
+     * the intersection of the two sets.
+     *
+     * This implementation format was stolen from Richard Gillam's
+     * CharSet class.
+     */
+    private static void doIntersection(StringBuffer pairs, String c2) {
+        StringBuffer result = new StringBuffer();
+        String c1 = pairs.toString();
+
+        int i = 0;
+        int j = 0;
+        int oldI;
+        int oldJ;
+
+        // iterate until we've exhausted one of the operands
+        while (i < c1.length() && j < c2.length()) {
+            
+            // advance j until it points to a character that is larger than
+            // the one i points to.  If this is the beginning of a one-
+            // character range, advance j to point to the end
+            if (i < c1.length() && i % 2 == 0) {
+                while (j < c2.length() && c2.charAt(j) < c1.charAt(i))
+                    ++j;
+                if (j < c2.length() && j % 2 == 0 && c2.charAt(j) == c1.charAt(i))
+                    ++j;
+            }
+
+            // if j points to the endpoint of a range, save the current
+            // value of i, then advance i until it reaches a character
+            // which is larger than the character pointed at
+            // by j.  All of the characters we've advanced over (except
+            // the one currently pointed to by i) are added to the result
+            oldI = i;
+            while (j % 2 == 1 && i < c1.length() && c1.charAt(i) <= c2.charAt(j))
+                ++i;
+            result.append(c1.substring(oldI, i));
+
+            // if i points to the endpoint of a range, save the current
+            // value of j, then advance j until it reaches a character
+            // which is larger than the character pointed at
+            // by i.  All of the characters we've advanced over (except
+            // the one currently pointed to by i) are added to the result
+            oldJ = j;
+            while (i % 2 == 1 && j < c2.length() && c2.charAt(j) <= c1.charAt(i))
+                ++j;
+            result.append(c2.substring(oldJ, j));
+
+            // advance i until it points to a character larger than j
+            // If it points at the beginning of a one-character range,
+            // advance it to the end of that range
+            if (j < c2.length() && j % 2 == 0) {
+                while (i < c1.length() && c1.charAt(i) < c2.charAt(j))
+                    ++i;
+                if (i < c1.length() && i % 2 == 0 && c2.charAt(j) == c1.charAt(i))
+                    ++i;
+            }
+        }
+
+        pairs.setLength(0);
+        pairs.append(result.toString());
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Generation of pairs for Unicode categories
+    //----------------------------------------------------------------
+    
+    /**
+     * Returns a pairs string for the given category, given its name.
+     * The category name must be either a two-letter name, such as
+     * "Lu", or a one letter name, such as "L".  One-letter names
+     * indicate the logical union of all two-letter names that start
+     * with that letter.  Case is significant.  If the name starts
+     * with the character '^' then the complement of the given
+     * character set is returned.
+     *
+     * Although individual categories such as "Lu" are cached, we do
+     * not currently cache single-letter categories such as "L" or
+     * complements such as "^Lu" or "^L".  It would be easy to cache
+     * these as well in a hashtable should the need arise.
+     */
+    private static String getCategoryPairs(String catName) {
+        boolean invert = (catName.length() > 1 &&
+                          catName.charAt(0) == '^');
+        if (invert) {
+            catName = catName.substring(1);
+        }
+
+        StringBuffer cat = null;
+        
+        // if we have two characters, search the category map for that
+        // code and either construct and return a UnicodeSet from the
+        // data in the category map or throw an exception
+        if (catName.length() == 2) {
+            int i = CATEGORY_NAMES.indexOf(catName);
+            if (i>=0 && i%2==0) {
+                i /= 2;
+                if (i != UNSUPPORTED_CATEGORY) {
+                    String pairs = getCategoryPairs(i);
+                    if (!invert) {
+                        return pairs;
+                    }
+                    cat = new StringBuffer(pairs);
+                }
+            }
+        } else if (catName.length() == 1) {
+            // if we have one character, search the category map for
+            // codes beginning with that letter, and union together
+            // all of the matching sets that we find (or throw an
+            // exception if there are no matches)
+            for (int i=0; i<CATEGORY_COUNT; ++i) {
+                if (i != UNSUPPORTED_CATEGORY &&
+                    CATEGORY_NAMES.charAt(2*i) == catName.charAt(0)) {
+                    String pairs = getCategoryPairs(i);
+                    if (cat == null) {
+                        cat = new StringBuffer(pairs);
+                    } else {
+                        doUnion(cat, pairs);
+                    }
+                }
+            }
+        }
+
+        if (cat == null) {
+            throw new IllegalArgumentException("Bad category");            
+        }
+
+        if (invert) {
+            doComplement(cat);
+        }
+        return cat.toString();
+    }
+
+    /**
+     * Returns a pairs string for the given category.  This string is
+     * cached and returned again if this method is called again with
+     * the same parameter.
+     */
+    private static String getCategoryPairs(int cat) {
+        if (CATEGORY_PAIRS_CACHE[cat] == null) {
+            // Walk through all Unicode characters, noting the start
+            // and end of each range for which Character.getType(c)
+            // returns the given category integer.  Since we are
+            // iterating in order, we can simply append the resulting
+            // ranges to the pairs string.
+            StringBuffer pairs = new StringBuffer();
+            int first = -1;
+            int last = -2;
+            for (int i=0; i<=0xFFFF; ++i) {
+                if (Character.getType((char)i) == cat) {
+                    if ((last+1) == i) {
+                        last = i;
+                    } else {
+                        if (first >= 0) {
+                            pairs.append((char)first).append((char)last);
+                        }
+                        first = last = i;
+                    }
+                }
+            }
+            if (first >= 0) {
+                pairs.append((char)first).append((char)last);
+            }
+            CATEGORY_PAIRS_CACHE[cat] = pairs.toString();
+        }
+        return CATEGORY_PAIRS_CACHE[cat];
+    }
+
+    //----------------------------------------------------------------
+    // Implementation: Utility methods
+    //----------------------------------------------------------------
+
+    /**
+     * Returns the character after the given position, or '\uFFFF' if
+     * there is none.
+     */
+    private static final char charAfter(String str, int i) {
+        return ((++i) < str.length()) ? str.charAt(i) : '\uFFFF';
+    }
+    
+    /**
+     * Deletes a range of character from a StringBuffer, from start to
+     * limit-1.  This is not part of JDK 1.1 StringBuffer, but is
+     * present in Java 2.
+     * @param start inclusive start of range
+     * @param limit exclusive end of range
+     */
+    private static void stringBufferDelete(StringBuffer buf,
+                                           int start, int limit) {
+        // In Java 2 just use:
+        //   buf.delete(start, limit);
+        char[] chars = null;
+        if (buf.length() > limit) {
+            chars = new char[buf.length() - limit];
+            buf.getChars(limit, buf.length(), chars, 0);
+        }
+        buf.setLength(start);
+        if (chars != null) {
+            buf.append(chars);
+        }
+    }
+}
diff --git a/src/com/ibm/text/UnicodeToHexTransliterator.java b/src/com/ibm/text/UnicodeToHexTransliterator.java
new file mode 100755
index 0000000..ea719ab
--- /dev/null
+++ b/src/com/ibm/text/UnicodeToHexTransliterator.java
@@ -0,0 +1,158 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/Attic/UnicodeToHexTransliterator.java,v $ 
+ * $Date: 2000/03/10 04:07:25 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text;
+import java.util.*;
+
+/**
+ * A transliterator that converts from Unicode characters to 
+ * hexadecimal Unicode escape sequences.  It outputs a
+ * prefix specified in the constructor and optionally converts the hex
+ * digits to uppercase.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: UnicodeToHexTransliterator.java,v $ $Revision: 1.5 $ $Date: 2000/03/10 04:07:25 $
+ */
+public class UnicodeToHexTransliterator extends Transliterator {
+
+    /**
+     * Package accessible ID for this transliterator.
+     */
+    static String _ID = "Unicode-Hex";
+
+    private String prefix;
+
+    private boolean uppercase;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructs a transliterator.
+     * @param prefix the string that will precede the four hex
+     * digits for UNICODE_HEX transliterators.  Ignored
+     * if direction is HEX_UNICODE.
+     * @param uppercase if true, the four hex digits will be
+     * converted to uppercase; otherwise they will be lowercase.
+     * Ignored if direction is HEX_UNICODE.
+     */
+    public UnicodeToHexTransliterator(String prefix, boolean uppercase,
+                                      UnicodeFilter filter) {
+        super(_ID, filter);
+        this.prefix = prefix;
+        this.uppercase = uppercase;
+    }
+
+    /**
+     * Constructs a transliterator with the default prefix "&#092;u"
+     * that outputs uppercase hex digits.
+     */
+    public UnicodeToHexTransliterator() {
+        this("\\u", true, null);
+    }
+
+    /**
+     * Returns the string that precedes the four hex digits.
+     * @return prefix string
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    /**
+     * Sets the string that precedes the four hex digits.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The prefix should not be changed by one
+     * thread while another thread may be transliterating.
+     * @param prefix prefix string
+     */
+    public void setPrefix(String prefix) {
+        this.prefix = prefix;
+    }
+
+    /**
+     * Returns true if this transliterator outputs uppercase hex digits.
+     */
+    public boolean isUppercase() {
+        return uppercase;
+    }
+
+    /**
+     * Sets if this transliterator outputs uppercase hex digits.
+     *
+     * <p>Callers must take care if a transliterator is in use by
+     * multiple threads.  The uppercase mode should not be changed by
+     * one thread while another thread may be transliterating.
+     * @param outputUppercase if true, then this transliterator
+     * outputs uppercase hex digits.
+     */
+    public void setUppercase(boolean outputUppercase) {
+        uppercase = outputUppercase;
+    }
+
+    /**
+     * Implements {@link Transliterator#handleTransliterate}.
+     */
+    protected void handleTransliterate(Replaceable text,
+                                       Position offsets, boolean incremental) {
+        /**
+         * Performs transliteration changing all characters to
+         * Unicode hexadecimal escapes.  For example, '@' -> "U+0040",
+         * assuming the prefix is "U+". 
+         */
+        int cursor = offsets.cursor;
+        int limit = offsets.limit;
+
+        UnicodeFilter filter = getFilter();
+
+    loop:
+        while (cursor < limit) {
+            char c = text.charAt(cursor);
+            if (filter != null && !filter.contains(c)) {
+                ++cursor;
+                continue;
+            }
+            String hex = hex(c);
+            text.replace(cursor, cursor+1, hex);
+            int len = hex.length();
+            cursor += len; // Advance cursor by 1 and adjust for new text
+            --len;
+            limit += len;
+        }
+
+        offsets.limit = limit;
+        offsets.cursor = cursor;
+    }
+
+    /**
+     * Form escape sequence.
+     */
+    private final String hex(char c) {
+        StringBuffer buf = new StringBuffer();
+        buf.append(prefix);
+        if (c < 0x1000) {
+            buf.append('0');
+            if (c < 0x100) {
+                buf.append('0');
+                if (c < 0x10) {
+                    buf.append('0');
+                }
+            }
+        } 
+        String h = Integer.toHexString(c);
+        buf.append(uppercase ? h.toUpperCase() : h);
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/text/components/AppletFrame.java b/src/com/ibm/text/components/AppletFrame.java
new file mode 100755
index 0000000..3795c24
--- /dev/null
+++ b/src/com/ibm/text/components/AppletFrame.java
@@ -0,0 +1,138 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/components/Attic/AppletFrame.java,v $ 
+ * $Date: 2000/03/10 04:07:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.components;
+import java.applet.*;
+import java.net.URL;
+import java.util.Enumeration;
+import java.awt.*;
+import java.awt.event.*;
+
+/**
+ * <p>A Frame that runs an Applet within itself, making it possible
+ * for an applet to run as an application.  Usage:
+ *
+ * <pre>
+ * public class MyApplet extends Applet {
+ *     public static void main(String args[]) {
+ *         MyApplet applet = new MyApplet();
+ *         new AppletFrame("My Applet Running As An App", applet, 640, 480);
+ *     }
+ *     ...
+ * }
+ * <pre>
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: AppletFrame.java,v $ $Revision: 1.2 $ $Date: 2000/03/10 04:07:26 $
+ */
+public class AppletFrame extends Frame implements AppletStub, AppletContext {
+
+    Applet applet;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Construct a Frame running the given Applet with the default size
+     * of 640 by 480.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     */
+    public AppletFrame(String name, Applet applet) {
+        this(name, applet, 640, 480);
+    }
+
+    /**
+     * Construct a Frame running the given Applet with the given size.
+     * When the Frame is closed, the applet's stop() method is called,
+     * the Frame is dispose()d of, and System.exit(0) is called.
+     *
+     * @param name the Frame title
+     * @param applet the applet to be run
+     * @param width width of the Frame
+     * @param height height of the Frame
+     */
+    public AppletFrame(String name, Applet applet, int width, int height) {
+        super(name);
+        this.applet = applet;
+        applet.setStub(this);
+
+        resize(width, height);
+        add("Center", applet);
+        show();
+        addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                AppletFrame.this.applet.stop();
+                dispose();
+                System.exit(0);
+            }
+        });
+
+        applet.init();
+        applet.start();
+    }
+
+    // AppletStub API
+    public void appletResize(int width,
+                             int height) {
+        resize(width, height);
+    }
+
+    public AppletContext getAppletContext() {
+        return this;
+    }
+
+    public URL getCodeBase() {
+        return null;
+    }
+
+    public URL getDocumentBase() {
+        return null;
+    }
+    
+    public String getParameter(String name) {
+        return "PARAMETER";
+    }
+
+    public boolean isActive() {
+        return true;
+    }
+
+    // AppletContext API
+    public Applet getApplet(String name) {
+        return applet;
+    }
+
+    public Enumeration getApplets() {
+        return null;
+    }
+
+    public AudioClip getAudioClip(URL url) {
+        return null;
+    }
+
+    public Image getImage(URL url) {
+        return null;
+    }
+
+    public void showDocument(URL url) {}
+    public void showDocument(URL url, String target) {}
+
+    public void showStatus(String status) {
+        System.out.println(status);
+    }
+}
diff --git a/src/com/ibm/text/components/DumbTextComponent.java b/src/com/ibm/text/components/DumbTextComponent.java
new file mode 100755
index 0000000..a12f1db
--- /dev/null
+++ b/src/com/ibm/text/components/DumbTextComponent.java
@@ -0,0 +1,720 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/components/Attic/DumbTextComponent.java,v $ 
+ * $Date: 2000/03/10 04:07:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.components;
+import java.awt.*;
+import java.awt.event.*;
+import java.text.*;
+import java.awt.datatransfer.*;
+
+// LIU: Changed from final to non-final
+public class DumbTextComponent extends Canvas
+  implements KeyListener, MouseListener, MouseMotionListener, FocusListener
+  {
+    private transient static final String copyright =
+      "Copyright \u00A9 1998, Mark Davis. All Rights Reserved.";
+    private transient static boolean DEBUG = false;
+
+    private String contents = "";
+    private Selection selection = new Selection();
+    private boolean editable = true;
+
+    private transient Selection tempSelection = new Selection();
+    private transient boolean focus;
+    private transient BreakIterator lineBreaker = BreakIterator.getLineInstance();
+    private transient BreakIterator wordBreaker = BreakIterator.getWordInstance();
+    private transient BreakIterator charBreaker = BreakIterator.getCharacterInstance();
+    private transient int lineAscent;
+    private transient int lineHeight;
+    private transient int lineLeading;
+    private transient int lastHeight = 10;
+    private transient int lastWidth = 50;
+    private static final int MAX_LINES = 200; // LIU: Use symbolic name
+    private transient int[] lineStarts = new int[MAX_LINES]; // LIU
+    private transient int lineCount = 1;
+
+    private transient boolean valid = false;
+    private transient FontMetrics fm;
+    private transient boolean redoLines = true;
+    private transient boolean doubleClick = false;
+    private transient TextListener textListener;
+    private transient ActionListener selectionListener;
+    private transient Image cacheImage;
+    private transient Dimension mySize;
+    private transient int xInset = 5;
+    private transient int yInset = 5;
+    private transient Point startPoint = new Point();
+    private transient Point endPoint = new Point();
+    private transient Point caretPoint = new Point();
+    private transient static String clipBoard;
+
+    private static final char CR = '\015'; // LIU
+
+    // ============================================
+
+    public DumbTextComponent() {
+        addMouseListener(this);
+        addMouseMotionListener(this);
+        addKeyListener(this);
+        addFocusListener(this);
+        setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
+
+    }
+
+// ================ Events ====================
+
+    public boolean isFocusTraversable() { return true; }
+
+	public void addActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.add(selectionListener, l);
+	}
+
+	public void removeActionListener(ActionListener l) {
+        selectionListener = AWTEventMulticaster.remove(selectionListener, l);
+	}
+
+	public void addTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.add(textListener, l);
+	}
+
+	public void removeTextListener(TextListener l) {
+        textListener = AWTEventMulticaster.remove(textListener, l);
+	}
+
+    private transient boolean pressed;
+
+	public void mousePressed(MouseEvent e) {
+	    if (DEBUG) System.out.println("mousePressed");
+	    if (pressed) {
+	        select(e,false);
+	    } else {
+            doubleClick = e.getClickCount() > 1;
+            requestFocus();
+            select(e, true);
+    	    pressed = true;
+	    }
+	}
+
+	public void mouseDragged(MouseEvent e) {
+	    if (DEBUG) System.out.println("mouseDragged");
+	    select(e, false);
+	}
+
+	public void mouseReleased(MouseEvent e) {
+	    if (DEBUG) System.out.println("mouseReleased");
+	    pressed = false;
+	}
+
+	public void mouseEntered(MouseEvent e) {
+	    //if (pressed) select(e, false);
+	}
+
+	public void mouseExited(MouseEvent e){
+	    //if (pressed) select(e, false);
+	}
+
+	public void mouseClicked(MouseEvent e) {}
+	public void mouseMoved(MouseEvent e) {}
+
+
+    public void focusGained(FocusEvent e) {
+	    if (DEBUG) System.out.println("focusGained");
+	    focus = true;
+	    valid = false;
+	    repaint(16);
+	}
+	public void focusLost(FocusEvent e) {
+	    if (DEBUG) System.out.println("focusLost");
+	    focus = false;
+	    valid = false;
+	    repaint(16);
+	}
+
+    public void select(MouseEvent e, boolean first) {
+	    point2Offset(e.getPoint(), tempSelection);
+        if (first) {
+            if ((e.getModifiers() & InputEvent.SHIFT_MASK) == 0) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+	    }
+	    // fix words
+	    if (doubleClick) {
+	        tempSelection.expand(wordBreaker);
+	    }
+	    select(tempSelection);
+    }
+
+	public void keyPressed(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyPressed "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+        int start = selection.getStart();
+        int end = selection.getEnd();
+        boolean shift = (e.getModifiers() & KeyEvent.SHIFT_MASK) != 0;
+        boolean ctrl = (e.getModifiers() & KeyEvent.CTRL_MASK) != 0;
+        switch (code) {
+        case KeyEvent.VK_Q:
+            if (!ctrl || !editable) break;
+            fixHex();
+            break;
+        case KeyEvent.VK_V:
+            if (!ctrl || !editable) break;
+            insertText(clipBoard);
+            break;
+        case KeyEvent.VK_C:
+            if (!ctrl) break;
+            clipBoard = contents.substring(selection.getStart(), selection.getEnd());
+            break;
+        case KeyEvent.VK_X:
+            if (!ctrl) break;
+            clipBoard = contents.substring(selection.getStart(), selection.getEnd());
+            if (editable) break;
+            insertText("");
+            break;
+        case KeyEvent.VK_A:
+            if (!ctrl) break;
+            select(Integer.MAX_VALUE, 0, false);
+            break;
+        case KeyEvent.VK_RIGHT:
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, +1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_LEFT:
+            tempSelection.set(selection);
+            tempSelection.nextBound(ctrl ? wordBreaker : charBreaker, -1, shift);
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_UP: // LIU: Add support for up arrow
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, -1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DOWN: // LIU: Add support for down arrow
+            tempSelection.set(selection);
+            tempSelection.caret = lineDelta(tempSelection.caret, +1);
+            if (!shift) {
+                tempSelection.anchor = tempSelection.caret;
+            }
+            select(tempSelection);
+            break;
+        case KeyEvent.VK_DELETE: // LIU: Add delete key support
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            start = selection.getStart();
+            end = selection.getEnd();
+            if (start == end) {
+                ++end;
+                if (end > contents.length()) {
+                    getToolkit().beep();
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;            
+        }
+    }
+
+    /**
+     * LIU: Given an offset into contents, moves up or down by lines,
+     * according to lineStarts[].
+     * @param off the offset into contents
+     * @param delta how many lines to move up (< 0) or down (> 0)
+     * @return the new offset into contents
+     */
+    private int lineDelta(int off, int delta) {
+        int line = findLine(off, false);
+        int posInLine = off - lineStarts[line];
+        // System.out.println("off=" + off + " at " + line + ":" + posInLine);
+        line += delta;
+        if (line < 0) {
+            line = posInLine = 0;
+        } else if (line >= lineCount) {
+            return contents.length();
+        }
+        off = lineStarts[line] + posInLine;
+        if (off >= lineStarts[line+1]) {
+            off = lineStarts[line+1] - 1;
+        }
+        return off;
+    }
+      
+	public void keyReleased(KeyEvent e) {
+        int code = e.getKeyCode();
+        if (DEBUG) System.out.println("keyReleased "
+          + hex((char)code) + ", " + hex((char)e.getModifiers()));
+    }
+
+	public void keyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+        if (DEBUG) System.out.println("keyTyped "
+          + hex((char)ch) + ", " + hex((char)e.getModifiers()));
+        if ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0) return;
+        switch (ch) {
+        case KeyEvent.CHAR_UNDEFINED:
+            break;
+        case KeyEvent.VK_BACK_SPACE:
+            if (!editable) break;
+            if (contents.length() == 0) break;
+            int start = selection.getStart();
+            int end = selection.getEnd();
+            if (start == end) {
+                --start;
+                if (start < 0) {
+                    getToolkit().beep(); // LIU: Add audio feedback of NOP
+                    return;
+                }
+            }
+            replaceRange("", start, end);
+            break;
+        default:
+            if (!editable) break;
+            // LIU: Dispatch to subclass API
+            handleKeyTyped(e);
+            break;
+        }
+    }
+
+    // LIU: Subclass API for handling of key typing
+    protected void handleKeyTyped(KeyEvent e) {
+        insertText(String.valueOf(e.getKeyChar()));
+    }
+
+// ===================== Control ======================
+
+    public synchronized void setEditable(boolean b) {
+        editable = b;
+    }
+
+    public boolean isEditable() {
+        return editable;
+    }
+
+    public void select(Selection newSelection) {
+        newSelection.pin(contents);
+        if (!selection.equals(newSelection)) {
+            selection.set(newSelection);
+            if (selectionListener != null) {
+                selectionListener.actionPerformed(
+                  new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
+                    "Selection Changed", 0));
+            }
+            repaint(10);
+            valid = false;
+        }
+    }
+
+    public void select(int start, int end) {
+        select(start, end, false);
+    }
+
+    public void select(int start, int end, boolean clickAfter) {
+        tempSelection.set(start, end, clickAfter);
+        select(tempSelection);
+    }
+
+    public int getSelectionStart() {
+        return selection.getStart();
+    }
+
+    public int getSelectionEnd() {
+        return selection.getEnd();
+    }
+
+    public void setBounds(int x, int y, int w, int h) {
+        super.setBounds(x,y,w,h);
+        redoLines = true;
+    }
+
+    public Dimension getPreferredSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMaximumSize() {
+        return new Dimension(lastWidth,lastHeight);
+    }
+
+    public Dimension getMinimumSize() {
+        return new Dimension(lastHeight,lastHeight);
+    }
+
+    public void setText(String text) {
+        setText2(text);
+        select(tempSelection.set(selection).pin(contents));
+    }
+
+    public void setText2(String text) {
+        contents = text;
+        charBreaker.setText(text);
+        wordBreaker.setText(text);
+        lineBreaker.setText(text);
+        redoLines = true;
+        if (textListener != null)
+            textListener.textValueChanged(
+              new TextEvent(this, TextEvent.TEXT_VALUE_CHANGED));
+        repaint(16);
+    }
+
+    public void insertText(String text) {
+        replaceRange(text, selection.getStart(), selection.getEnd());
+    }
+
+    public void replaceRange(String s, int start, int end) {
+        setText2(contents.substring(0,start) + s
+          + contents.substring(end));
+        select(tempSelection.set(selection).
+          fixAfterReplace(start, end, s.length()));
+    }
+
+    public String getText() {
+        return contents;
+    }
+
+    public void setFont(Font font) {
+        super.setFont(font);
+        redoLines = true;
+        repaint(16);
+    }
+
+    // ================== Graphics ======================
+
+    public void update(Graphics g) {
+        if (DEBUG) System.out.println("update");
+        paint(g);
+    }
+
+    public void paint(Graphics g) {
+        mySize = getSize();
+        if (cacheImage == null
+          || cacheImage.getHeight(this) != mySize.height
+          || cacheImage.getWidth(this) != mySize.width) {
+            cacheImage = createImage(mySize.width, mySize.height);
+            valid = false;
+        }
+        if (!valid || redoLines) {
+            if (DEBUG) System.out.println("painting");
+            paint2(cacheImage.getGraphics());
+            valid = true;
+        }
+        //getToolkit().sync();
+        if (DEBUG) System.out.println("copying");
+        g.drawImage(cacheImage,
+          0, 0, mySize.width, mySize.height,
+          0, 0, mySize.width, mySize.height,
+          this);
+    }
+
+    public void paint2(Graphics g) {
+        g.clearRect(0, 0, mySize.width, mySize.height);
+        if (DEBUG) System.out.println("print");
+        if (focus) g.setColor(Color.black);
+        else g.setColor(Color.gray);
+        g.drawRect(0,0,mySize.width-1,mySize.height-1);
+        g.setClip(1,1,
+          mySize.width-2,mySize.height-2);
+        g.setColor(Color.black);
+        g.setFont(getFont());
+        fm = g.getFontMetrics();
+        lineAscent = fm.getAscent();
+        lineLeading = fm.getLeading();
+        lineHeight = lineAscent + fm.getDescent() + lineLeading;
+        int y = yInset + lineAscent;
+        String lastSubstring = "";
+        if (redoLines) fixLineStarts(mySize.width-xInset-xInset);
+        for (int i = 0; i < lineCount; y += lineHeight, ++i) {
+            // LIU: Don't display terminating ^M characters
+            int lim = lineStarts[i+1];
+            if (lim > 0 && contents.length() > 0 &&
+                contents.charAt(lim-1) == CR) --lim;
+            lastSubstring = contents.substring(lineStarts[i],lim);
+            g.drawString(lastSubstring, xInset, y);
+        }
+        drawSelection(g, lastSubstring);
+        lastHeight = y + yInset - lineHeight + yInset;
+        lastWidth = mySize.width-xInset-xInset;
+    }
+
+    void paintRect(Graphics g, int x, int y, int w, int h) {
+        if (focus) {
+            g.fillRect(x, y, w, h);
+        } else {
+            g.drawRect(x, y, w-1, h-1);
+        }
+    }
+
+    public void drawSelection(Graphics g, String lastSubstring) {
+        g.setXORMode(Color.black);
+        if (selection.isCaret()) {
+            offset2Point(selection.caret, selection.clickAfter, caretPoint);
+        } else {
+            if (focus) g.setColor(Color.blue);
+            else g.setColor(Color.yellow);
+            offset2Point(selection.getStart(), true, startPoint);
+            offset2Point(selection.getEnd(), false, endPoint);
+            if (selection.getStart() == selection.caret)
+                caretPoint.setLocation(startPoint);
+            else caretPoint.setLocation(endPoint);
+            if (startPoint.y == endPoint.y) {
+                paintRect(g, startPoint.x, startPoint.y,
+                  Math.max(1,endPoint.x-startPoint.x), lineHeight);
+            } else {
+                paintRect(g, startPoint.x, startPoint.y,
+                  (mySize.width-xInset)-startPoint.x, lineHeight);
+                if (startPoint.y + lineHeight < endPoint.y)
+                  paintRect(g, xInset, startPoint.y + lineHeight,
+                  (mySize.width-xInset)-xInset, endPoint.y - startPoint.y - lineHeight);
+                paintRect(g, xInset, endPoint.y, endPoint.x-xInset, lineHeight);
+            }
+        }
+        if (focus || selection.isCaret()) {
+            if (focus) g.setColor(Color.green);
+            else g.setColor(Color.red);
+            int line = caretPoint.x - (selection.clickAfter ? 0 : 1);
+            g.fillRect(line, caretPoint.y, 1, lineHeight);
+            int w = lineHeight/12 + 1;
+            int braces = line - (selection.clickAfter ? -1 : w);
+            g.fillRect(braces, caretPoint.y, w, 1);
+            g.fillRect(braces, caretPoint.y + lineHeight - 1, w, 1);
+        }
+    }
+
+    public Point offset2Point(int off, boolean start, Point p) {
+        int line = findLine(off, start);
+        int width = 0;
+        try {
+            width = fm.stringWidth(
+              contents.substring(lineStarts[line], off));
+        } catch (Exception e) {
+            System.out.println(e);
+        }
+        p.x = width + xInset;
+        if (p.x > mySize.width - xInset)
+            p.x = mySize.width - xInset;
+        p.y = lineHeight * line + yInset;
+        return p;
+    }
+
+    private int findLine(int off, boolean start) {
+        // if it is start, then go to the next line!
+        if (start) ++off;
+        for (int i = 1; i < lineCount; ++i) {
+            // LIU: This was <= ; changed to < to make caret after
+            // final CR in line appear at START of next line.
+            if (off < lineStarts[i]) return i-1;
+        }
+        // LIU: Check for special case; after CR at end of the last line
+        if (off == lineStarts[lineCount] &&
+            off > 0 && contents.length() > 0 && contents.charAt(off-1) == CR) {
+            return lineCount;
+        }
+        return lineCount-1;
+    }
+
+    // offsets on any line will go from start,true to end,false
+    // excluding start,false and end,true
+    public Selection point2Offset(Point p, Selection o) {
+        if (p.y < yInset) {
+            o.caret = 0;
+            o.clickAfter = true;
+            return o;
+        }
+        int line = (p.y - yInset)/lineHeight;
+        if (line >= lineCount) {
+            o.caret = contents.length();
+            o.clickAfter = false;
+            return o;
+        }
+        int target = p.x - xInset;
+        if (target <= 0) {
+            o.caret = lineStarts[line];
+            o.clickAfter = true;
+            return o;
+        }
+        int lowGuess = lineStarts[line];
+        int lowWidth = 0;
+        int highGuess = lineStarts[line+1];
+        int highWidth = fm.stringWidth(contents.substring(lineStarts[line],highGuess));
+        if (target >= highWidth) {
+            o.caret = lineStarts[line+1];
+            o.clickAfter = false;
+            return o;
+        }
+        while (lowGuess < highGuess - 1) {
+            int guess = (lowGuess + highGuess)/2;
+            int width = fm.stringWidth(contents.substring(lineStarts[line],guess));
+            if (width <= target) {
+                lowGuess = guess;
+                lowWidth = width;
+                if (width == target) break;
+            } else {
+                highGuess = guess;
+                highWidth = width;
+            }
+        }
+        // at end, either lowWidth < target < width(low+1), or lowWidth = target
+        int highBound = charBreaker.following(lowGuess);
+        int lowBound = charBreaker.previous();
+        // we are now at character boundaries
+        if (lowBound != lowGuess)
+            lowWidth = fm.stringWidth(contents.substring(lineStarts[line],lowBound));
+        if (highBound != highGuess)
+            highWidth = fm.stringWidth(contents.substring(lineStarts[line],highBound));
+        // we now have the right widths
+        if (target - lowWidth < highWidth - target) {
+            o.caret = lowBound;
+            o.clickAfter = true;
+        } else {
+            o.caret = highBound;
+            o.clickAfter = false;
+        }
+        // we now have the closest!
+        return o;
+    }
+
+    private void fixLineStarts(int width) {
+        lineCount = 1;
+        lineStarts[0] = 0;
+        if (contents.length() == 0) {
+            lineStarts[1] = 0;
+            return;
+        }
+        int end = 0;
+        // LIU: Add check for MAX_LINES
+        for (int start = 0; start < contents.length() && lineCount < MAX_LINES;
+             start = end) {
+            end = nextLine(fm, start, width);
+            lineStarts[lineCount++] = end;
+            if (end == start) { // LIU: Assertion
+                throw new RuntimeException("nextLine broken");
+            }
+        }
+        --lineCount;
+        redoLines = false;
+    }
+
+    // LIU: Enhanced to wrap long lines.  Bug with return of start fixed.
+    public int nextLine(FontMetrics fm, int start, int width) {
+        int len = contents.length();
+        for (int i = start; i < len; ++i) {
+            // check for line separator
+            char ch = (contents.charAt(i));
+            if (ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029) {
+                len = i + 1;
+                if (ch == 0x000D && i+1 < len && contents.charAt(i+1) == 0x000A) // crlf
+                    ++len; // grab extra char
+                break;
+            }
+        }
+        String subject = contents.substring(start,len);
+        if (visibleWidth(fm, subject) <= width)
+          return len;
+
+        // LIU: Remainder of this method rewritten to accomodate lines
+        // longer than the component width by first trying to break
+        // into lines; then words; finally chars.
+        int n = findFittingBreak(fm, subject, width, lineBreaker);
+        if (n == 0) {
+            n = findFittingBreak(fm, subject, width, wordBreaker);
+        }
+        if (n == 0) {
+            n = findFittingBreak(fm, subject, width, charBreaker);
+        }
+        return n > 0 ? start + n : len;
+    }
+
+    /**
+     * LIU: Finds the longest substring that fits a given width
+     * composed of subunits returned by a BreakIterator.  If the smallest
+     * subunit is too long, returns 0.
+     * @param fm metrics to use
+     * @param line the string to be fix into width
+     * @param width line.substring(0, result) must be <= width
+     * @param breaker the BreakIterator that will be used to find subunits
+     * @return maximum characters, at boundaries returned by breaker,
+     * that fit into width, or zero on failure
+     */
+    private int findFittingBreak(FontMetrics fm, String line, int width,
+                                 BreakIterator breaker) {
+        breaker.setText(line);
+        int last = breaker.first();
+        int end = breaker.next();
+        while (end != BreakIterator.DONE &&
+               visibleWidth(fm, line.substring(0, end)) <= width) {
+            last = end;
+            end = breaker.next();
+        }
+        return last;
+    }
+
+    public int visibleWidth(FontMetrics fm, String s) {
+        int i;
+        for (i = s.length()-1; i >= 0; --i) {
+            char ch = s.charAt(i);
+            if (!(ch == ' ' || ch >= 0x000A && ch <= 0x000D || ch == 0x2028 || ch == 0x2029))
+              return fm.stringWidth(s.substring(0,i+1));;
+        }
+        return 0;
+    }
+
+// =============== Utility ====================
+
+    private void fixHex() {
+        if (selection.getEnd() == 0) return;
+        int store = 0;
+        int places = 1;
+        int count = 0;
+        int min = Math.min(8,selection.getEnd());
+        for (int i = 0; i < min; ++i) {
+            char ch = contents.charAt(selection.getEnd()-1-i);
+            int value = Character.getNumericValue(ch);
+            if (value < 0 || value > 15) break;
+            store += places * value;
+            ++count;
+            places *= 16;
+        }
+        String add = "";
+        int bottom = store & 0xFFFF;
+        if (store >= 0xD8000000 && store < 0xDC000000
+          && bottom >= 0xDC00 && bottom < 0xE000) { // surrogates
+            add = "" + (char)(store >> 16) + (char)bottom;
+        } else if (store > 0xFFFF && store <= 0x10FFFF) {
+            store -= 0x10000;
+            add = "" + (char)(((store >> 10) & 0x3FF) + 0xD800)
+              + (char)((store & 0x3FF) + 0xDC00);
+              
+        } else if (count >= 4) {
+            count = 4;
+            add = ""+(char)(store & 0xFFFF);
+        } else {
+            count = 1;
+            char ch = contents.charAt(selection.getEnd()-1);
+            add = hex(ch);
+            if (ch >= 0xDC00 && ch <= 0xDFFF && selection.getEnd() > 1) {
+                ch = contents.charAt(selection.getEnd()-2);
+                if (ch >= 0xD800 && ch <= 0xDBFF) {
+                    count = 2;
+                    add = hex(ch) + add;
+                }
+            }
+        }
+        replaceRange(add, selection.getEnd()-count, selection.getEnd());
+    }
+
+    public static String hex(char ch) {
+        String result = Integer.toString(ch,16).toUpperCase();
+        result = "0000".substring(result.length(),4) + result;
+        return result;
+    }
+}
diff --git a/src/com/ibm/text/components/Selection.java b/src/com/ibm/text/components/Selection.java
new file mode 100755
index 0000000..0a1684b
--- /dev/null
+++ b/src/com/ibm/text/components/Selection.java
@@ -0,0 +1,167 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/components/Attic/Selection.java,v $ 
+ * $Date: 2000/03/10 04:07:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.components;
+import java.text.*;
+
+public final class Selection {
+
+    public int anchor;
+    public int caret;
+    public boolean clickAfter;
+
+    public int getStart() {
+        return anchor < caret ? anchor : caret;
+    }
+
+    public int getEnd() {
+        return anchor > caret ? anchor : caret;
+    }
+
+    public boolean isCaret() {
+        return anchor == caret;
+    }
+
+    public Selection set(Selection other) {
+        anchor = other.anchor;
+        caret = other.caret;
+        clickAfter = other.clickAfter;
+        return this;
+    }
+
+    public Selection set(int anchor, int caret, boolean clickAfter) {
+        this.anchor = anchor;
+        this.caret = caret;
+        this.clickAfter = clickAfter;
+        return this;
+    }
+
+    public boolean equals(Object other) {
+        Selection other2 = (Selection)other;
+        return anchor == other2.anchor
+          && caret == other2.caret
+          && clickAfter == other2.clickAfter;
+    }
+
+    public boolean isLessThan(Selection other) {
+        return getStart() < other.getEnd();
+    }
+
+    public Selection pin(String text) {
+        if (anchor > text.length()) {
+            anchor = text.length();
+        } else if (anchor < 0) {
+            anchor = 0;
+        }
+        if (caret > text.length()) {
+            caret = text.length();
+            clickAfter = true;
+        } else if (caret < 0) {
+            caret = 0;
+            clickAfter = false;
+        }
+        return this;
+    }
+
+    public Selection swap(Selection after) {
+        int temp = anchor;
+        anchor = after.anchor;
+        after.anchor = temp;
+        temp = caret;
+        caret = after.caret;
+        after.caret = temp;
+        boolean b = clickAfter;
+        clickAfter = after.clickAfter;
+        after.clickAfter = b;
+        return this;
+    }
+
+    public Selection fixAfterReplace(int start, int end, int len) {
+        if (anchor >= start) {
+            if (anchor < end) anchor = end;
+            anchor = start + len + anchor - end;
+        }
+        if (caret >= start) {
+            if (caret < end) caret = end;
+            caret = start + len + caret - end;
+        }
+        return this;
+    }
+
+        // Mac & Windows considerably different
+        // Mac: end++. If start!=end, start=end
+        //  SHIFT: move end right
+        //  CTL: no different
+        // Windows:
+        //  UNSHIFTED: if start!=end, start = end, else start=end=end+1;
+        //       anchor = tip = start
+        //  SHIFT: tip++
+        //  CTL: if start!=end, start = end = nextbound(end-1),
+        //   else start=end=nextbound(end)
+        //       anchor = tip = start
+        //  CTL/SHIFT: tip = nextbound(tip)
+
+    public Selection nextBound(BreakIterator breaker,
+      int direction, boolean extend) {
+        if (!extend && anchor != caret) caret -= direction;
+        caret = next(caret, breaker, direction, true);
+        if (!extend) anchor = caret;
+        clickAfter = false;
+        return this;
+    }
+
+    // expand start and end to word breaks--if they are not already on one
+    public void expand(BreakIterator breaker) {
+        if (anchor <= caret) {
+            anchor = next(anchor,breaker,-1,false);
+            caret = next(caret,breaker,1,false);
+            /*
+            try {
+                breaker.following(anchor);
+                anchor = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                caret = breaker.following(caret-1);
+            } catch (Exception e) {}
+            */
+        } else {
+            anchor = next(anchor,breaker,1,false);
+            caret = next(caret,breaker,-1,false);
+            /*
+            try {
+                breaker.following(caret);
+                caret = breaker.previous();
+            } catch (Exception e) {}
+            try {
+                anchor = breaker.following(anchor-1);
+            } catch (Exception e) {}
+            */
+        }
+    }
+
+    // different = false - move to next boundary, unless on one
+    // true - move to next boundary, even if on one
+    public static int next(int position, BreakIterator breaker,
+      int direction, boolean different) {
+        if (!different) position -= direction;
+        try {
+            if (direction > 0) {
+                position = breaker.following(position);
+            } else {
+                breaker.following(position-1);
+                position = breaker.previous();
+            }
+        } catch (Exception e) {}
+        return position;
+    }
+}
+
diff --git a/src/com/ibm/text/components/TransliteratingTextComponent.java b/src/com/ibm/text/components/TransliteratingTextComponent.java
new file mode 100755
index 0000000..374c75d
--- /dev/null
+++ b/src/com/ibm/text/components/TransliteratingTextComponent.java
@@ -0,0 +1,202 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/components/Attic/TransliteratingTextComponent.java,v $ 
+ * $Date: 2000/03/10 04:07:26 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.components;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.text.*;
+import java.awt.datatransfer.*;
+import com.ibm.text.*;
+
+/**
+ * A subclass of {@link DumbTextComponent} that passes key events through
+ * a {@link com.ibm.text.Transliterator}.
+ *
+ * <p>Copyright &copy; IBM Corporation 1999.  All rights reserved.
+ *
+ * @author Alan Liu
+ * @version $RCSfile: TransliteratingTextComponent.java,v $ $Revision: 1.3 $ $Date: 2000/03/10 04:07:26 $
+ */
+public class TransliteratingTextComponent extends DumbTextComponent {
+
+    private static boolean DEBUG = false;
+
+    private Transliterator translit = null;
+
+    // Index into getText() where the start of transliteration is.
+    // As we commit text during transliteration, we advance
+    // this.
+    private int start = 0;
+
+    // Index into getText() where the cursor is; cursor >= start
+    private int cursor = 0;
+
+    private static final String COPYRIGHT =
+        "\u00A9 IBM Corporation 1999. All rights reserved.";
+
+    /**
+     * Constructor.
+     */
+    public TransliteratingTextComponent() {
+        super();
+        addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent e) {
+                // We get an ActionEvent only when the selection changes
+                resetTransliterationStart();
+            }
+        });
+    }
+
+    /**
+     * {@link DumbTextComponent} API.  Framework method that is called
+     * when a <code>KeyEvent</code> is received.  This implementation
+     * runs the new character through the current
+     * <code>Transliterator</code>, if one is set, and inserts the
+     * transliterated text into the buffer.
+     */
+	protected void handleKeyTyped(KeyEvent e) {
+        char ch = e.getKeyChar();
+
+        if (translit == null) {
+            super.handleKeyTyped(e);
+            return;
+        }
+
+        // ------------------------------------------------------------
+        // The following case motivates the two lines that recompute
+        // start and cursor below.
+
+        //      "     "   
+        // a b c q r|s t u m m
+        // 0 1 2 3 4 5 6 7 8 9
+        //       0 1 2
+
+        // start 3, cursor 5, sel 6 -> { 0, 3, 2 }
+        // : new int[] { 0, sel - start, cursor - start };
+        
+        // sz>99|9
+
+        //      "     {   "
+        // a b c q r 9 9|9 t u m m
+        // 0 1 2 3 4 5 6 7 8 9 a b
+        //       0 1 2 3 4
+
+        // { 3, 5, 4 } -> start 6, cursor 7, sel 8
+        // : start += index[0];
+        // : cursor = start + index[2] - index[0];
+        // ------------------------------------------------------------
+
+        // Need to save start because calls to replaceRange will update
+        // start and cursor.
+        int saveStart = start;
+
+        ReplaceableString buf = new ReplaceableString();
+        buf.getStringBuffer().append(getText().substring(start,
+                                                         getSelectionStart()));
+
+        Transliterator.Position index =
+            new Transliterator.Position(0, getSelectionStart() - start,
+                                        cursor - start);
+
+        StringBuffer log = null;
+        if (DEBUG) {
+            log = new StringBuffer();
+            log.append("start " + start + ", cursor " + cursor);
+            log.append(", sel " + getSelectionStart());
+            log.append(", {" + index.start + ", " + index.limit + ", " + index.cursor + "}, ");
+            log.append('"' + buf.toString() + "\" + '" + ch + "' -> \"");
+        }
+
+        translit.transliterate(buf, index, ch);
+        replaceRange(buf.toString(), start, getSelectionEnd());
+        // At this point start has been changed by the callback to
+        // resetTransliteratorStart() via replaceRange() -- so use our
+        // local copy, saveStart.
+
+        // The START index is zero-based.  On entry to transliterate(),
+        // it was zero.  We can therefore just add it to our original
+        // getText()-based index value of start (in saveStart) to get
+        // the new getText()-based start.
+        start = saveStart + index.start;
+
+        // Make the cursor getText()-based.  The CURSOR index is zero-based.
+        cursor = start + index.cursor - index.start;
+
+        if (DEBUG) {
+            String out = buf.toString();
+            log.append(out.substring(0, index.start)).
+                append('{').
+                append(out.substring(index.start, index.cursor)).
+                append('|').
+                append(out.substring(index.cursor)).
+                append('"');
+            log.append(", {" + index.start + ", " + index.limit + ", " + index.cursor + "}, ");
+            log.append("start " + start + ", cursor " + cursor);
+            log.append(", sel " + getSelectionStart());
+            System.out.println(escape(log.toString()));
+        }
+    }
+
+    /**
+     * Set the {@link com.ibm.text.Transliterator} and direction to
+     * use to process incoming <code>KeyEvent</code>s.
+     * @param t the {@link com.ibm.text.Transliterator} to use
+     */
+    public void setTransliterator(Transliterator t) {
+        if (translit != t) { // [sic] pointer compare ok; singletons
+            resetTransliterationStart();
+        }
+        translit = t;
+    }
+
+    /**
+     * Reset the start point at which transliteration begins.  This
+     * needs to be done when the user moves the cursor or when the
+     * current {@link com.ibm.text.Transliterator} is changed. 
+     */
+    private void resetTransliterationStart() {
+        start = getSelectionStart();
+        cursor = start;
+    }
+
+    /**
+     * Escape non-ASCII characters as Unicode.
+     * JUST FOR DEBUGGING OUTPUT.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append(c);
+                }
+            } else {
+                buf.append("\\u");
+                if (c < 0x1000) {
+                    buf.append('0');
+                    if (c < 0x100) {
+                        buf.append('0');
+                        if (c < 0x10) {
+                            buf.append('0');
+                        }
+                    }
+                }
+                buf.append(Integer.toHexString(c));
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/src/com/ibm/text/resources/BreakIteratorRules.java b/src/com/ibm/text/resources/BreakIteratorRules.java
new file mode 100755
index 0000000..3763ea0
--- /dev/null
+++ b/src/com/ibm/text/resources/BreakIteratorRules.java
@@ -0,0 +1,328 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/BreakIteratorRules.java,v $ 
+ * $Date: 2000/03/10 04:07:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default break-iterator rules.  These rules are more or less general for
+ * all locales, although there are probably a few we're missing.  The
+ * behavior currently mimics the behavior of BreakIterator in JDK 1.2.
+ * There are known deficiencies in this behavior, including the fact that
+ * the logic for handling CJK characters works for Japanese but not for
+ * Chinese, and that we don't currently have an appropriate locale for
+ * Thai.  The resources will eventually be updated to fix these problems.
+ */
+
+ /* Modified for Hindi 3/1/99. */
+
+public class BreakIteratorRules extends ListResourceBundle {
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    static final Object[][] contents = {
+        // BreakIteratorClasses lists the class names to instantiate for each
+        // built-in type of BreakIterator
+        { "BreakIteratorClasses",
+            new String[] { "RuleBasedBreakIterator",     // character-break iterator class
+                           "RuleBasedBreakIterator",     // word-break iterator class
+                           "RuleBasedBreakIterator",     // line-break iterator class
+                           "RuleBasedBreakIterator" }    // sentence-break iterator class
+        },
+
+        // rules describing how to break between logical characters
+        { "CharacterBreakRules",
+            // ignore non-spacing marks and enclosing marks (since we never
+            // put a break before ignore characters, this keeps combining
+            // accents with the base characters they modify)
+            "$ignore=[[:Mn:][:Me:]];"
+
+            // other category definitions
+            + "choseong=[\u1100-\u115f];"
+            + "jungseong=[\u1160-\u11a7];"
+            + "jongseong=[\u11a8-\u11ff];"
+            + "surr-hi=[\ud800-\udbff];"
+            + "surr-lo=[\udc00-\udfff];"
+
+            // break after every character, except as follows:
+            + ".;"
+
+            // keep CRLF sequences together
+            + "\r\n;"
+
+            // keep surrogate pairs together
+            + "{surr-hi}{surr-lo};"
+
+            // keep Hangul syllables spelled out using conjoining jamo together
+            + "{choseong}*{jungseong}*{jongseong}*;"
+
+            // various additions for Hindi support
+            + "nukta=[\u093c];"
+            + "danda=[\u0964\u0965];"
+            + "virama=[\u094d];"
+            + "devVowelSign=[\u093e-\u094c\u0962\u0963];"
+            + "devConsonant=[\u0915-\u0939];"
+            + "devNuktaConsonant=[\u0958-\u095f];"
+            + "devCharEnd=[\u0902\u0903\u0951-\u0954];"
+            + "zwj=[\u200d];"
+            
+            + "devCAMN=({devConsonant}{nukta}?);"
+            + "devConsonant1=({devNuktaConsonant}|{devCAMN});"
+            + "devConjunct=(({devConsonant1}{virama}{zwj}?)?{devConsonant1});"
+
+            + "{devConjunct}{devVowelSign}?{devCharEnd}?;"
+            + "{danda}{nukta};"
+        },
+
+        // default rules for finding word boundaries
+        { "WordBreakRules",
+            // ignore non-spacing marks, enclosing marks, and format characters,
+            // all of which should not influence the algorithm
+            "$ignore=[[:Mn:][:Me:][:Cf:]];"
+
+            // Hindi phrase separator, kanji, katakana, hiragana, CJK diacriticals,
+            // other letters, and digits
+            + "danda=[\u0964\u0965];"
+            + "kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+            + "kata=[\u3099-\u309c\u30a1-\u30fe];"
+            + "hira=[\u3041-\u309e\u30fc];"
+            + "let=[[[:L:][:Mc:]]-[{kanji}{kata}{hira}]];"
+            + "dgt=[:N:];"
+
+            // punctuation that can occur in the middle of a word: currently
+            // dashes, apostrophes, quotation marks, and periods
+            + "mid-word=[[:Pd:]\u00ad\u2027\\\"\\\'\\.];"
+
+            // punctuation that can occur in the middle of a number: currently
+            // apostrophes, qoutation marks, periods, commas, and the Arabic
+            // decimal point
+            + "mid-num=[\\\"\\\'\\,\u066b\\.];"
+
+            // punctuation that can occur at the beginning of a number: currently
+            // the period, the number sign, and all currency symbols except the cents sign
+            + "pre-num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+
+            // punctuation that can occur at the end of a number: currently
+            // the percent, per-thousand, per-ten-thousand, and Arabic percent
+            // signs, the cents sign, and the ampersand
+            + "post-num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+
+            // line separators: currently LF, FF, PS, and LS
+            + "ls=[\n\u000c\u2028\u2029];"
+
+            // whitespace: all space separators and the tab character
+            + "ws=[[:Zs:]\t];"
+
+            // a word is a sequence of letters that may contain internal
+            // punctuation, as long as it begins and ends with a letter and
+            // never contains two punctuation marks in a row
+            + "word=({let}+({mid-word}{let}+)*{danda}?);"
+
+            // a number is a sequence of digits that may contain internal
+            // punctuation, as long as it begins and ends with a digit and
+            // never contains two punctuation marks in a row.
+            + "number=({dgt}+({mid-num}{dgt}+)*);"
+
+            // break after every character, with the following exceptions
+            // (this will cause punctuation marks that aren't considered
+            // part of words or numbers to be treated as words unto themselves)
+            + ".;"
+
+            // keep together any sequence of contiguous words and numbers
+            // (including just one of either), plus an optional trailing
+            // number-suffix character
+            + "{word}?({number}{word})*({number}{post-num}?)?;"
+
+            // keep together and sequence of contiguous words and numbers
+            // that starts with a number-prefix character and a number,
+            // and may end with a number-suffix character
+            + "{pre-num}({number}{word})*({number}{post-num}?)?;"
+
+            // keep together runs of whitespace (optionally with a single trailing
+            // line separator or CRLF sequence)
+            + "{ws}*\r?{ls}?;"
+
+            // keep together runs of Katakana
+            + "{kata}*;"
+
+            // keep together runs of Hiragana
+            + "{hira}*;"
+
+            // keep together runs of Kanji
+            + "{kanji}*;"
+        },
+
+        // default rules for determining legal line-breaking positions
+        { "LineBreakRules",
+            // ignore non-spacing marks, enclosing marks, and format characters
+            "$ignore=[[:Mn:][:Me:][:Cf:]];"
+
+            // Hindi phrase separators
+            + "danda=[\u0964\u0965];"
+
+            // characters that always cause a break: ETX, tab, LF, FF, LS, and PS
+            + "break=[\u0003\t\n\f\u2028\u2029];"
+
+            // characters that always prevent a break: the non-breaking space
+            // and similar characters
+            + "nbsp=[\u00a0\u2007\u2011\ufeff];"
+
+            // whitespace: space separators and control characters, except for
+            // CR and the other characters mentioned above
+            + "space=[[[:Zs:][:Cc:]]-[{nbsp}{break}\r]];"
+
+            // dashes: dash punctuation and the discretionary hyphen, except for
+            // non-breaking hyphens
+            + "dash=[[[:Pd:]\u00ad]-[{nbsp}]];"
+
+            // characters that stick to a word if they precede it: currency symbols
+            // (except the cents sign) and starting punctuation
+            + "pre-word=[[[:Sc:]-[\u00a2]][:Ps:]\\\"\\\'];"
+
+            // characters that stick to a word if they follow it: ending punctuation,
+            // other punctuation that usually occurs at the end of a sentence,
+            // small Kana characters, some CJK diacritics, etc.
+            + "post-word=[[:Pe:]\\!\\\"\\\'\\%\\.\\,\\:\\;\\?\u00a2\u00b0\u066a\u2030-\u2034"
+                    + "\u2103\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                    + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                    + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0c"
+                    + "\uff0e\uff1f];"
+
+            // Kanji: actually includes both Kanji and Kana, except for small Kana and
+            // CJK diacritics
+            + "kanji=[[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa]-[{post-word}{$ignore}]];"
+
+            // digits
+            + "digit=[[:Nd:][:No:]];"
+
+            // punctuation that can occur in the middle of a number: periods and commas
+            + "mid-num=[\\.\\,];"
+
+            // everything not mentioned above, plus the quote marks (which are both
+            // <pre-word>, <post-word>, and <char>)
+            + "char=[^{break}{space}{dash}{kanji}{nbsp}{$ignore}{pre-word}{post-word}{mid-num}{danda}\r\\\"\\\'];"
+
+            // a "number" is a run of prefix characters and dashes, followed by one or
+            // more digits with isolated number-punctuation characters interspersed
+            + "number=([{pre-word}{dash}]*{digit}+({mid-num}{digit}+)*);"
+
+            // the basic core of a word can be either a "number" as defined above, a single
+            // "Kanji" character, or a run of any number of not-explicitly-mentioned
+            // characters (this includes Latin letters)
+            + "word-core=([{pre-word}{char}]*|{kanji}|{number});"
+
+            // a word may end with an optional suffix that be either a run of one or
+            // more dashes or a run of word-suffix characters, followed by an optional
+            // run of whitespace
+            + "word-suffix=(({dash}+|{post-word}*){space}*);"
+
+            // a word, thus, is an optional run of word-prefix characters, followed by
+            // a word core and a word suffix (the syntax of <word-core> and <word-suffix>
+            // actually allows either of them to match the empty string, putting a break
+            // between things like ")(" or "aaa(aaa"
+            + "word=({pre-word}*{word-core}{word-suffix});"
+
+            // finally, the rule that does the work: Keep together any run of words that
+            // are joined by runs of one of more non-spacing mark.  Also keep a trailing
+            // line-break character or CRLF combination with the word.  (line separators
+            // "win" over nbsp's)
+            + "{word}({nbsp}+{word})*\r?{break}?;"
+        },
+
+        // default rules for finding sentence boundaries
+        { "SentenceBreakRules",
+            // ignore non-spacing marks, enclosing marks, and format characters
+            "$ignore=[[:Mn:][:Me:][:Cf:]];"
+
+            // lowercase letters
+            + "lc=[:Ll:];"
+            
+            // uppercase Latin letters
+            + "ucLatin=[A-Z];"
+
+            // whitespace (line separators are treated as whitespace)
+            + "space=[\t\r\f\n\u2028[:Zs:]];"
+
+            // punctuation which may occur at the beginning of a sentence: "starting
+            // punctuation" and quotation marks
+            + "start=[[:Ps:]\\\"\\\'];"
+
+            // punctuation with may occur at the end of a sentence: "ending punctuation"
+            // and quotation marks
+            + "end=[[:Pe:]\\\"\\\'];"
+
+            // digits
+            + "digit=[:N:];"
+
+            // characters that unambiguously signal the end of a sentence
+            + "term=[\\!\\?\u3002\uff01\uff1f];"
+
+            // periods, which MAY signal the end of a sentence
+            + "period=[\\.\uff0e];"
+
+            // characters that may occur at the beginning of a sentence: basically anything
+            // not mentioned above (lowercase letters and digits are specifically excluded)
+            + "sent-start=[^{lc}{ucLatin}{space}{start}{end}{digit}{term}{period}\u2029{$ignore}];"
+
+            // Hindi phrase separator
+            + "danda=[\u0964\u0965];"
+
+            // always break sentences after paragraph separators
+            + ".*?\u2029?;"
+
+            // always break after a danda, if it's followed by whitespace
+            + ".*?{danda}{space}*;"
+
+            // if you see a period, skip over additional periods and ending punctuation
+            // and if the next character is a paragraph separator, break after the
+            // paragraph separator
+            + ".*?{period}[{period}{end}]*{space}*\u2029;"
+
+            // if you see a period, skip over additional periods and ending punctuation,
+            // followed by optional whitespace, followed by optional starting punctuation,
+            // and if the next character is something that can start a sentence
+            // (basically, a capital letter), then put the sentence break between the
+            // whitespace and the opening punctuation
+            + ".*?{period}[{period}{end}]*{space}*/({start}*{sent-start}|{start}+{ucLatin});"
+            
+            // same as above, except that there's a sentence break before a Latin capital
+            // letter only if there's at least one space after the period
+            + ".*?{period}[{period}{end}]*{space}+/{ucLatin};"
+
+            // if you see a sentence-terminating character, skip over any additional
+            // terminators, periods, or ending punctuation, followed by any whitespace,
+            // followed by a SINGLE optional paragraph separator, and put the break there
+            + ".*?{term}[{term}{period}{end}]*{space}*\u2029?;"
+
+            // The following rules are here to aid in backwards iteration.  The automatically
+            // generated backwards state table will rewind to the beginning of the
+            // paragraph all the time (or all the way to the beginning of the document
+            // if the document doesn't use the Unicode PS character) because the only
+            // unambiguous character pairs are those involving paragraph separators.
+            // These specify a few more unambiguous breaking situations.
+
+            // if you see a sentence-starting character, followed by starting punctuation
+            // (remember, we're iterating backwards), followed by an optional run of
+            // whitespace, followed by an optional run of ending punctuation, followed
+            // by a period, this is a safe place to turn around
+            + "![{sent-start}{ucLatin}]{start}*{space}+{end}*{period};"
+
+            // if you see a letter or a digit, followed by an optional run of
+            // starting punctuation, followed by an optional run of whitespace,
+            // followed by an optional run of ending punctuation, followed by
+            // a sentence terminator, this is a safe place to turn around
+            + "![{sent-start}{lc}{digit}]{start}*{space}*{end}*{term};"
+        }
+    };
+}
diff --git a/src/com/ibm/text/resources/BreakIteratorRules_th.java b/src/com/ibm/text/resources/BreakIteratorRules_th.java
new file mode 100755
index 0000000..c766a48
--- /dev/null
+++ b/src/com/ibm/text/resources/BreakIteratorRules_th.java
@@ -0,0 +1,110 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/BreakIteratorRules_th.java,v $ 
+ * $Date: 2000/03/10 04:07:26 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+import java.util.MissingResourceException;
+import java.net.URL;
+
+public class BreakIteratorRules_th extends ListResourceBundle {
+    public Object[][] getContents() {
+
+        URL url = getClass().getResource("thai_dict");
+
+        // if dictionary wasn't found, then this resource bundle doesn't have
+        // much to contribute...
+        if (url == null) {
+            return new Object[0][0];
+        }
+
+        return new Object[][] {
+            // names of classes to instantiate for the different kinds of break
+            // iterator.  Notice we're now using DictionaryBasedBreakIterator
+            // for word and line breaking.
+            { "BreakIteratorClasses",
+                new String[] { "RuleBasedBreakIterator",           // character-break iterator class
+                               "DictionaryBasedBreakIterator",     // word-break iterator class
+                               "DictionaryBasedBreakIterator",     // line-break iterator class
+                               "RuleBasedBreakIterator" }          // sentence-break iterator class
+            },
+
+            { "WordBreakRules",
+                "$dictionary=[\u0e01-\u0e2e\u0e30-\u0e3a\u0e40-\u0e44\u0e47-\u0e4e];" // this rule breaks the iterator with mixed Thai and English
+                + "$ignore=[[[:Mn:][:Me:][:Cf:]]-{$dictionary}];"
+                + "paiyannoi=[\u0e2f];"
+                + "maiyamok=[\u0e46];"
+                + "danda=[\u0964\u0965];"
+                + "kanji=[\u3005\u4e00-\u9fa5\uf900-\ufa2d];"
+                + "kata=[\u30a1-\u30fa];"
+                + "hira=[\u3041-\u3094];"
+                + "cjk-diacrit=[\u3099-\u309c];"
+                + "let=[[[:L:][:Mc:]]-[{kanji}{kata}{hira}{cjk-diacrit}{$dictionary}]];"
+                + "dgt=[:N:];"
+                + "mid-word=[[:Pd:]\u00ad\u2027\\\"\\\'\\.];"
+                + "mid-num=[\\\"\\\'\\,\u066b\\.];"
+                + "pre-num=[[[:Sc:]-[\u00a2]]\\#\\.];"
+                + "post-num=[\\%\\&\u00a2\u066a\u2030\u2031];"
+                + "ls=[\n\u000c\u2028\u2029];"
+                + "ws=[[:Zs:]\t];"
+                + "word=(({let}+({mid-word}{let}+)*){danda}?);"
+                + "number=({dgt}+({mid-num}{dgt}+)*);"
+                + "thai-etc={paiyannoi}\u0e25{paiyannoi};"
+                + ".;"
+                + "{word}?({number}{word})*({number}{post-num}?)?;"
+                + "{pre-num}({number}{word})*({number}{post-num}?)?;"
+                + "{$dictionary}+({paiyannoi}{maiyamok}?)?;"
+                + "{$dictionary}+{paiyannoi}/([^\u0e25{$ignore}]"
+                        + "|\u0e25[^{paiyannoi}{$ignore}]);"
+                + "{thai-etc};"
+                + "{ws}*\r?{ls}?;"
+                + "[{kata}{cjk-diacrit}]*;"
+                + "[{hira}{cjk-diacrit}]*;"
+                + "{kanji}*;"
+            },
+
+            { "LineBreakRules",
+                "$dictionary=[\u0e01-\u0e2e\u0e30-\u0e3a\u0e40-\u0e44\u0e47-\u0e4e];" // this rule breaks the iterator with mixed Thai and English
+                + "$ignore=[[[:Mn:][:Me:][:Cf:]]-[{$dictionary}]];"
+                + "danda=[\u0964\u0965];"
+                + "break=[\u0003\t\n\f\u2028\u2029];"
+                + "nbsp=[\u00a0\u2007\u2011\ufeff];"
+                + "space=[[[:Zs:][:Cc:]]-[{nbsp}{break}\r]];"
+                + "dash=[[[:Pd:]\u00ad]-{nbsp}];"
+                + "paiyannoi=[\u0e2f];"
+                + "maiyamok=[\u0e46];"
+                + "thai-etc=({paiyannoi}\u0e25{paiyannoi});"
+                + "pre-word=[[[:Sc:]-[\u00a2]][:Ps:]\\\"];"
+                + "post-word=[[:Pe:]\\!\\%\\.\\,\\:\\;\\?\\\"\u00a2\u00b0\u066a\u2030-\u2034\u2103"
+                        + "\u2105\u2109\u3001\u3002\u3005\u3041\u3043\u3045\u3047\u3049\u3063"
+                        + "\u3083\u3085\u3087\u308e\u3099-\u309e\u30a1\u30a3\u30a5\u30a7\u30a9"
+                        + "\u30c3\u30e3\u30e5\u30e7\u30ee\u30f5\u30f6\u30fc-\u30fe\uff01\uff0e"
+                        + "\uff1f{maiyamok}];"
+                + "kanji=[[\u4e00-\u9fa5\uf900-\ufa2d\u3041-\u3094\u30a1-\u30fa]-[{post-word}{$ignore}]];"
+                + "digit=[[:Nd:][:No:]];"
+                + "mid-num=[\\.\\,];"
+                + "char=[^{break}{space}{dash}{kanji}{nbsp}{$ignore}{pre-word}{post-word}"
+                        + "{mid-num}\r{danda}{$dictionary}{paiyannoi}{maiyamok}];"
+                + "number=([{pre-word}{dash}]*{digit}+({mid-num}{digit}+)*);"
+                + "word-core=({char}*|{kanji}|{number}|{$dictionary}+|{thai-etc});"
+                + "word-suffix=(({dash}+|{post-word}*){space}*);"
+                + "word=({pre-word}*{word-core}{word-suffix});"
+                + "{word}({nbsp}+{word})*(\r?{break}?|{paiyannoi}\r{break}|{paiyannoi}{break})?;"
+                + "{word}({nbsp}+{word})*{paiyannoi}/([^[\u0e25{$ignore}]]|"
+                        + "\u0e25[^{paiyannoi}{$ignore}]);"
+            },
+
+            { "WordBreakDictionary", url },
+            { "LineBreakDictionary", url }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/LocaleElements.java b/src/com/ibm/text/resources/LocaleElements.java
new file mode 100755
index 0000000..1dea2b7
--- /dev/null
+++ b/src/com/ibm/text/resources/LocaleElements.java
@@ -0,0 +1,81 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/LocaleElements.java,v $ 
+ * $Date: 2000/03/10 04:07:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class LocaleElements extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "TransliteratorNamePattern",
+                /* Format for the display name of a Transliterator.
+                 * This is the language-neutral form of this resource.
+                 */
+                "{0,choice,0#|1#{1}|2#{1}-{2}}", // Display name
+            },
+            { "RuleBasedTransliteratorIDs",
+                /* These IDs must have the form "From-To" or "SingleName".
+                 * The ID "From-To" will be sought in the resource bundle
+                 * TransliteratorRuleFromTo.java in the resources package.
+                 * The ID "SingleName" will be sought in
+                 * TransliteratorSingleName.java.  In addition, a reverse
+                 * transliterator may be specified using "*To-From", which
+                 * indicates TransliteratorRuleFromTo.java with a
+                 * RuleBasedTransliterator.REVERSE constructor parameter.
+                 */
+              new String[] {
+
+                  // Bidirectional rules
+
+                  "Fullwidth-Halfwidth",
+                  "*Halfwidth-Fullwidth",
+
+                  "Latin-Arabic",
+                  "*Arabic-Latin",
+
+                  "Latin-Cyrillic",
+                  "*Cyrillic-Latin",
+
+                  "Latin-Devanagari",
+                  "*Devanagari-Latin",
+
+                  "Latin-Greek",
+                  "*Greek-Latin",
+
+                  "Latin-Hebrew",
+                  "*Hebrew-Latin",
+
+                  "Latin-Jamo",
+                  "*Jamo-Latin",
+
+                  "Latin-Kana",
+                  "*Kana-Latin",
+
+                  "StraightQuotes-CurlyQuotes",
+                  "*CurlyQuotes-StraightQuotes",
+
+                  // One way rules (forward only)
+
+                  "Han-Pinyin",
+                  "Kanji-English",
+                  "Kanji-OnRomaji",
+                  "KeyboardEscape-Latin1",
+                  "UnicodeName-UnicodeChar"
+              }
+            },
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/LocaleElements_en.java b/src/com/ibm/text/resources/LocaleElements_en.java
new file mode 100755
index 0000000..d6a1b13
--- /dev/null
+++ b/src/com/ibm/text/resources/LocaleElements_en.java
@@ -0,0 +1,39 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/LocaleElements_en.java,v $ 
+ * $Date: 2000/03/10 04:07:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+// WARNING : the format of this file may change in the future!
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class LocaleElements_en extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "TransliteratorNamePattern",
+                /* Format for the display name of a Transliterator.
+                 * This is the English form of this resource.
+                 */
+                "{0,choice,0#|1#{1}|2#{1} to {2}}"
+            },
+
+            // Transliterator display names
+            { "%Translit%Hex", "Hex Escape" },
+            { "%Translit%UnicodeName", "Unicode Name" },
+            { "%Translit%UnicodeChar", "Unicode Character" },
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules.java b/src/com/ibm/text/resources/NumberFormatRules.java
new file mode 100755
index 0000000..171fb74
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules.java
@@ -0,0 +1,242 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules.java,v $ 
+ * $Date: 2000/03/10 04:07:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Base resource for RuleBasedNumberFormat data.  Each resource contains
+ * rule sets for three uses: spelled-out numerical values, ordinal
+ * abbreviations, and durations in seconds.  This resource contains the
+ * U.S. English data.
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:27 $
+ */
+public class NumberFormatRules extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /*
+         * Spellout rules for U.S. English.  This rule set has two variants:
+         * %simplified is a set of rules showing the simple method of spelling
+         * out numbers in English: 289 is formatted as "two hundred eighty-nine".
+         * %default uses a more complicated algorithm to format
+         * numbers in a more natural way: 289 is formatted as "two hundred AND
+         * eighty-nine" and commas are inserted between the thousands groups for
+         * values above 100,000.
+         */
+        { "SpelloutRules",
+            // This rule set shows the normal simple formatting rules for English
+            "%simplified:\n"
+                   // negative number rule.  This rule is used to format negative
+                   // numbers.  The result of formatting the number's absolute
+                   // value is placed where the >> is.
+            + "    -x: minus >>;\n"
+                   // faction rule.  This rule is used for formatting numbers
+                   // with fractional parts.  The result of formatting the
+                   // number's integral part is substituted for the <<, and
+                   // the result of formatting the number's fractional part
+                   // (one digit at a time, e.g., 0.123 is "zero point one two
+                   // three") replaces the >>.
+            + "    x.x: << point >>;\n"
+                   // the rules for the values from 0 to 19 are simply the
+                   // words for those numbers
+            + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+            + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+            + "        seventeen; eighteen; nineteen;\n"
+                   // beginning at 20, we use the >> to mark the position where
+                   // the result of formatting the number's ones digit.  Thus,
+                   // we only need a new rule at every multiple of 10.  Text in
+                   // backets is omitted if the value being formatted is an
+                   // even multiple of 10.
+            + "    20: twenty[->>];\n"
+            + "    30: thirty[->>];\n"
+            + "    40: forty[->>];\n"
+            + "    50: fifty[->>];\n"
+            + "    60: sixty[->>];\n"
+            + "    70: seventy[->>];\n"
+            + "    80: eighty[->>];\n"
+            + "    90: ninety[->>];\n"
+                   // beginning at 100, we can use << to mark the position where
+                   // the result of formatting the multiple of 100 is to be
+                   // inserted.  Notice also that the meaning of >> has shifted:
+                   // here, it refers to both the ones place and the tens place.
+                   // The meanings of the << and >> tokens depend on the base value
+                   // of the rule.  A rule's divisor is (usually) the highest
+                   // power of 10 that is less than or equal to the rule's base
+                   // value.  The value being formatted is divided by the rule's
+                   // divisor, and the integral quotient is used to get the text
+                   // for <<, while the remainder is used to produce the text
+                   // for >>.  Again, text in brackets is omitted if the value
+                   // being formatted is an even multiple of the rule's divisor
+                   // (in this case, an even multiple of 100)
+            + "    100: << hundred[ >>];\n"
+                   // The rules for the higher numbers work the same way as the
+                   // rule for 100: Again, the << and >> tokens depend on the
+                   // rule's divisor, which for all these rules is also the rule's
+                   // base value.  To group by thousand, we simply don't have any
+                   // rules between 1,000 and 1,000,000.
+            + "    1000: << thousand[ >>];\n"
+            + "    1,000,000: << million[ >>];\n"
+            + "    1,000,000,000: << billion[ >>];\n"
+            + "    1,000,000,000,000: << trillion[ >>];\n"
+                   // overflow rule.  This rule specifies that values of a
+                   // quadrillion or more are shown in numerals rather than words.
+                   // The == token means to format (with new rules) the value
+                   // being formatted by this rule and place the result where
+                   // the == is.  The #,##0 inside the == signs is a
+                   // DecimalFormat pattern.  It specifies that the value should
+                   // be formatted with a DecimalFormat object, and that it
+                   // should be formatted with no decimal places, at least one
+                   // digit, and a thousands separator.
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+
+            // %default is a more elaborate form of %simplified;  It is basically
+            // the same, except that it introduces "and" before the ones digit
+            // when appropriate (basically, between the tens and ones digits) and
+            // separates the thousands groups with commas in values over 100,000.
+            + "%default:\n"
+                   // negative-number and fraction rules.  These are the same
+                   // as those for %simplified, but ave to be stated here too
+                   // because this is an entry point
+            + "    -x: minus >>;\n"
+            + "    x.x: << point >>;\n"
+                   // just use %simplified for values below 100
+            + "    =%simplified=;\n"
+                   // for values from 100 to 9,999 use %%and to decide whether or
+                   // not to interpose the "and"
+            + "    100: << hundred[ >%%and>];\n"
+            + "    1000: << thousand[ >%%and>];\n"
+                   // for values of 100,000 and up, use %%commas to interpose the
+                   // commas in the right places (and also to interpose the "and")
+            + "    100,000>>: << thousand[>%%commas>];\n"
+            + "    1,000,000: << million[>%%commas>];\n"
+            + "    1,000,000,000: << billion[>%%commas>];\n"
+            + "    1,000,000,000,000: << trillion[>%%commas>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            // if the value passed to this rule set is greater than 100, don't
+            // add the "and"; if it's less than 100, add "and" before the last
+            // digits
+            + "%%and:\n"
+            + "    and =%default=;\n"
+            + "    100: =%default=;\n"
+            // this rule set is used to place the commas
+            + "%%commas:\n"
+                   // for values below 100, add "and" (the apostrophe at the
+                   // beginning is ignored, but causes the space that follows it
+                   // to be significant: this is necessary because the rules
+                   // calling %%commas don't put a space before it)
+            + "    ' and =%default=;\n"
+                   // put a comma after the thousands (or whatever preceded the
+                   // hundreds)
+            + "    100: , =%default=;\n"
+                   // put a comma after the millions (or whatever precedes the
+                   // thousands)
+            + "    1000: , <%default< thousand, >%default>;\n"
+                   // and so on...
+            + "    1,000,000: , =%default=;"
+            // %%lenient-parse isn't really a set of number formatting rules;
+            // it's a set of collation rules.  Lenient-parse mode uses a Collator
+            // object to compare fragments of the text being parsed to the text
+            // in the rules, allowing more leeway in the matching text.  This set
+            // of rules tells the formatter to ignore commas when parsing (it
+            // already ignores spaces, which is why we refer to the space; it also
+            // ignores hyphens, making "twenty one" and "twenty-one" parse
+            // identically)
+            + "%%lenient-parse:\n"
+            + "    & ' ' , ',' ;\n" },
+
+        /*
+         * This rule set adds an English ordinal abbreviation to the end of a
+         * number.  For example, 2 is formatted as "2nd".  Parsing doesn't work with
+         * this rule set.  To parse, use DecimalFormat on the numeral.
+         */
+        { "OrdinalRules",
+            // this rule set formats the numeral and calls %%abbrev to
+            // supply the abbreviation
+            "%main:\n"
+            + "    =#,##0==%%abbrev=;\n"
+            // this rule set supplies the abbreviation
+            + "%%abbrev:\n"
+                   // the abbreviations.  Everything from 4 to 19 ends in "th"
+            + "    th; st; nd; rd; th;\n"
+                   // at 20, we begin repeating the cycle every 10 (13 is "13th",
+                   // but 23 and 33 are "23rd" and "33rd")  We do this by
+                   // ignoring all bug the ones digit in selecting the abbreviation
+            + "    20: >>;\n"
+                   // at 100, we repeat the whole cycle by considering only the
+                   // tens and ones digits in picking an abbreviation
+            + "    100: >>;\n" },
+
+        /*
+         * This rule set formats a number of seconds in sexagesimal notation
+         * (i.e., hours, minutes, and seconds).  %with-words formats it with
+         * words (3,740 is "1 hour, 2 minutes, 20 seconds") and %in-numerals
+         * formats it entirely in numerals (3,740 is "1:02:20").
+         */
+        { "DurationRules",
+            // main rule set for formatting with words
+            "%with-words:\n"
+                   // take care of singular and plural forms of "second"
+            + "    0 seconds; 1 second; =0= seconds;\n"
+                   // use %%min to format values greater than 60 seconds
+            + "    60/60: <%%min<[, >>];\n"
+                   // use %%hr to format values greater than 3,600 seconds
+                   // (the ">>>" below causes us to see the number of minutes
+                   // when when there are zero minutes)
+            + "    3600/60: <%%hr<[, >>>];\n"
+            // this rule set takes care of the singular and plural forms
+            // of "minute"
+            + "%%min:\n"
+            + "    0 minutes; 1 minute; =0= minutes;\n"
+            // this rule set takes care of the singular and plural forms
+            // of "hour"
+            + "%%hr:\n"
+            + "    0 hours; 1 hour; =0= hours;\n"
+
+            // main rule set for formatting in numerals
+            + "%in-numerals:\n"
+                   // values below 60 seconds are shown with "sec."
+            + "    =0= sec.;\n"
+                   // higher values are shown with colons: %%min-sec is used for
+                   // values below 3,600 seconds...
+            + "    60: =%%min-sec=;\n"
+                   // ...and %%hr-min-sec is used for values of 3,600 seconds
+                   // and above
+            + "    3600: =%%hr-min-sec=;\n"
+            // this rule causes values of less than 10 minutes to show without
+            // a leading zero
+            + "%%min-sec:\n"
+            + "    0: :=00=;\n"
+            + "    60/60: <0<>>;\n"
+            // this rule set is used for values of 3,600 or more.  Minutes are always
+            // shown, and always shown with two digits
+            + "%%hr-min-sec:\n"
+            + "    0: :=00=;\n"
+            + "    60/60: <00<>>;\n"
+            + "    3600/60: <#,##0<:>>>;\n"
+            // the lenient-parse rules allow several different characters to be used
+            // as delimiters between hours, minutes, and seconds
+            + "%%lenient-parse:\n"
+            + "    & ':' = '.' = ' ' = '-';\n" }
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_de.java b/src/com/ibm/text/resources/NumberFormatRules_de.java
new file mode 100755
index 0000000..64136d5
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_de.java
@@ -0,0 +1,87 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_de.java,v $ 
+ * $Date: 2000/03/10 04:07:27 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for German
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:27 $
+ */
+public class NumberFormatRules_de extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for German.  German also adds some interesting
+         * characteristics.  For values below 1,000,000, numbers are customarily
+         * written out as a single word.  And the ones digit PRECEDES the tens
+         * digit (e.g., 23 is "dreiundzwanzig," not "zwanzigunddrei").
+         */
+        { "SpelloutRules",
+            // 1 is "eins" when by itself, but turns into "ein" in most
+            // combinations
+            "%alt-ones:\n"
+            + "    null; eins; =%%main=;\n"
+            + "%%main:\n"
+                   // words for numbers from 0 to 12.  Notice that the values
+                   // from 13 to 19 can derived algorithmically, unlike in most
+                   // other languages
+            + "    null; ein; zwei; drei; vier; f\u00fcnf; sechs; sieben; acht; neun;\n"
+            + "    zehn; elf; zw\u00f6lf; >>zehn;\n"
+                   // rules for the multiples of 10.  Notice that the ones digit
+                   // goes on the front
+            + "    20: [>>und]zwanzig;\n"
+            + "    30: [>>und]drei\u00dfig;\n"
+            + "    40: [>>und]vierzig;\n"
+            + "    50: [>>und]f\u00fcnfzig;\n"
+            + "    60: [>>und]sechzig;\n"
+            + "    70: [>>und]siebzig;\n"
+            + "    80: [>>und]achtzig;\n"
+            + "    90: [>>und]neunzig;\n"
+            + "    100: hundert[>%alt-ones>];\n"
+            + "    200: <<hundert[>%alt-ones>];\n"
+            + "    1000: tausend[>%alt-ones>];\n"
+            + "    2000: <<tausend[>%alt-ones>];\n"
+            + "    1,000,000: eine Million[ >%alt-ones>];\n"
+            + "    2,000,000: << Millionen[ >%alt-ones>];\n"
+            + "    1,000,000,000: eine Milliarde[ >%alt-ones>];\n"
+            + "    2,000,000,000: << Milliarden[ >%alt-ones>];\n"
+            + "    1,000,000,000,000: eine Billion[ >%alt-ones>];\n"
+            + "    2,000,000,000,000: << Billionen[ >%alt-ones>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;"
+            + "%%lenient-parse:\n"
+            + "    & ae , \u00e4 & ae , \u00c4\n"
+            + "    & oe , \u00f6 & oe , \u00d6\n"
+            + "    & ue , \u00fc & ue , \u00dc\n"
+        }
+            
+        // again, I'm not 100% sure of these rules.  I think both "hundert" and
+        // "einhundert" are correct or 100, but I'm not sure which is preferable
+        // in situations where this framework is likely to be used.  Also, is it
+        // really true that numbers are run together into compound words all the
+        // time?  And again, I'm missing information on negative numbers and
+        // decimals.
+    };
+}
+
diff --git a/src/com/ibm/text/resources/NumberFormatRules_el.java b/src/com/ibm/text/resources/NumberFormatRules_el.java
new file mode 100755
index 0000000..63bd02d
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_el.java
@@ -0,0 +1,80 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_el.java,v $ 
+ * $Date: 2000/03/10 04:07:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Greek
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:27 $
+ */
+public class NumberFormatRules_el extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Greek.  Again in Greek we have to supply the words
+         * for the multiples of 100 because they can't be derived algorithmically.
+         * Also, the tens dgit changes form when followed by a ones digit: an
+         * accent mark disappears from the tens digit and moves to the ones digit.
+         * Therefore, instead of using the [] notation, we actually have to use
+         * two separate rules for each multiple of 10 to show the two forms of
+         * the word.
+         */
+        { "SpelloutRules",
+            "zero (incomplete data); \u03ad\u03bd\u03b1; \u03b4\u03cd\u03bf; \u03b4\u03c1\u03af\u03b1; "
+            + "\u03c4\u03ad\u03c3\u03c3\u03b5\u03c1\u03b1; \u03c0\u03ad\u03bd\u03c4\u03b5; "
+            + "\u03ad\u03be\u03b9; \u03b5\u03c0\u03c4\u03ac; \u03bf\u03ba\u03c4\u03ce; "
+            + "\u03b5\u03bd\u03bd\u03ad\u03b1;\n"
+            + "10: \u03b4\u03ad\u03ba\u03b1; "
+            + "\u03ad\u03bd\u03b4\u03b5\u03ba\u03b1; \u03b4\u03ce\u03b4\u03b5\u03ba\u03b1; "
+            + "\u03b4\u03b5\u03ba\u03b1>>;\n"
+            + "20: \u03b5\u03af\u03ba\u03bf\u03c3\u03b9; \u03b5\u03b9\u03ba\u03bf\u03c3\u03b9>>;\n"
+            + "30: \u03c4\u03c1\u03b9\u03ac\u03bd\u03c4\u03b1; \u03c4\u03c1\u03b9\u03b1\u03bd\u03c4\u03b1>>;\n"
+            + "40: \u03c3\u03b1\u03c1\u03ac\u03bd\u03c4\u03b1; \u03c3\u03b1\u03c1\u03b1\u03bd\u03c4\u03b1>>;\n"
+            + "50: \u03c0\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; \u03c0\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+            + "60: \u03b5\u03be\u03ae\u03bd\u03c4\u03b1; \u03b5\u03be\u03b7\u03bd\u03c4\u03b1>>;\n"
+            + "70: \u03b5\u03b2\u03b4\u03bf\u03bc\u03ae\u03bd\u03c4\u03b1; "
+            + "\u03b5\u03b2\u03b4\u03bf\u03bc\u03b7\u03bd\u03c4\u03b1>>;\n"
+            + "80: \u03bf\u03b3\u03b4\u03cc\u03bd\u03c4\u03b1; \u03bf\u03b3\u03b4\u03bf\u03bd\u03c4\u03b1>>;\n"
+            + "90: \u03b5\u03bd\u03bd\u03b5\u03bd\u03ae\u03bd\u03c4\u03b1; "
+            + "\u03b5\u03bd\u03bd\u03b5\u03bd\u03b7\u03bd\u03c4\u03b1>>;\n"
+            + "100: \u03b5\u03ba\u03b1\u03c4\u03cc[\u03bd >>];\n"
+            + "200: \u03b4\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "300: \u03c4\u03c1\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "400: \u03c4\u03b5\u03c4\u03c1\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "500: \u03c0\u03b5\u03bd\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "600: \u03b5\u03be\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "700: \u03b5\u03c0\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "800: \u03bf\u03ba\u03c4\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "900: \u03b5\u03bd\u03bd\u03b9\u03b1\u03ba\u03cc\u03c3\u03b9\u03b1[ >>];\n"
+            + "1000: \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+            + "2000: << \u03c7\u03af\u03bb\u03b9\u03b1[ >>];\n"
+            + "1,000,000: << \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+            + "1,000,000,000: << \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03b9\u03cc\u03c1\u03b9\u03bf[ >>];\n"
+            + "1,000,000,000,000: =#,##0=" }
+        // Can someone supply me with information on negatives and decimals?
+        // I'm also missing the word for zero.  Can someone clue me in?
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_en.java b/src/com/ibm/text/resources/NumberFormatRules_en.java
new file mode 100755
index 0000000..d0d766e
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_en.java
@@ -0,0 +1,82 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_en.java,v $ 
+ * $Date: 2000/03/10 04:07:27 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default RuleBasedNumberFormat data for English.  This resource
+ * inherits everything from the default.
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:27 $
+ */
+public class NumberFormatRules_en extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    // this is exactly the same as SpelloutRules from the root resource
+    // bundle
+    Object[][] contents = {
+        { "SpelloutRules",
+            "%simplified:\n"
+            + "    -x: minus >>;\n"
+            + "    x.x: << point >>;\n"
+            + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+            + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+            + "        seventeen; eighteen; nineteen;\n"
+            + "    20: twenty[->>];\n"
+            + "    30: thirty[->>];\n"
+            + "    40: forty[->>];\n"
+            + "    50: fifty[->>];\n"
+            + "    60: sixty[->>];\n"
+            + "    70: seventy[->>];\n"
+            + "    80: eighty[->>];\n"
+            + "    90: ninety[->>];\n"
+            + "    100: << hundred[ >>];\n"
+            + "    1000: << thousand[ >>];\n"
+            + "    1,000,000: << million[ >>];\n"
+            + "    1,000,000,000: << billion[ >>];\n"
+            + "    1,000,000,000,000: << trillion[ >>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            + "%default:\n"
+            + "    -x: minus >>;\n"
+            + "    x.x: << point >>;\n"
+            + "    =%simplified=;\n"
+            + "    100: << hundred[ >%%and>];\n"
+            + "    1000: << thousand[ >%%and>];\n"
+            + "    100,000>>: << thousand[>%%commas>];\n"
+            + "    1,000,000: << million[>%%commas>];\n"
+            + "    1,000,000,000: << billion[>%%commas>];\n"
+            + "    1,000,000,000,000: << trillion[>%%commas>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            + "%%and:\n"
+            + "    and =%default=;\n"
+            + "    100: =%default=;\n"
+            + "%%commas:\n"
+            + "    ' and =%default=;\n"
+            + "    100: , =%default=;\n"
+            + "    1000: , <%default< thousand, >%default>;\n"
+            + "    1,000,000: , =%default=;"
+            + "%%lenient-parse:\n"
+            + "    & ' ' , ',' ;\n" }
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_en_GB.java b/src/com/ibm/text/resources/NumberFormatRules_en_GB.java
new file mode 100755
index 0000000..79ddda9
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_en_GB.java
@@ -0,0 +1,97 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_en_GB.java,v $ 
+ * $Date: 2000/03/10 04:07:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for U.K. English.
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:28 $
+ */
+public class NumberFormatRules_en_GB extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for U.K. English.  U.K. English has one significant
+         * difference from U.S. English: the names for values of 1,000,000,000
+         * and higher.  In American English, each successive "-illion" is 1,000
+         * times greater than the preceding one: 1,000,000,000 is "one billion"
+         * and 1,000,000,000,000 is "one trillion."  In British English, each
+         * successive "-illion" is one million times greater than the one before:
+         * "one billion" is 1,000,000,000,000 (or what Americans would call a
+         * "trillion"), and "one trillion" is 1,000,000,000,000,000,000.
+         * 1,000,000,000 in British English is "one thousand million."  (This
+         * value is sometimes called a "milliard," but this word seems to have
+         * fallen into disuse.)
+         */
+        { "SpelloutRules",
+            "%simplified:\n"
+            + "    -x: minus >>;\n"
+            + "    x.x: << point >>;\n"
+            + "    zero; one; two; three; four; five; six; seven; eight; nine;\n"
+            + "    ten; eleven; twelve; thirteen; fourteen; fifteen; sixteen;\n"
+            + "        seventeen; eighteen; nineteen;\n"
+            + "    20: twenty[->>];\n"
+            + "    30: thirty[->>];\n"
+            + "    40: forty[->>];\n"
+            + "    50: fifty[->>];\n"
+            + "    60: sixty[->>];\n"
+            + "    70: seventy[->>];\n"
+            + "    80: eighty[->>];\n"
+            + "    90: ninety[->>];\n"
+            + "    100: << hundred[ >>];\n"
+            + "    1000: << thousand[ >>];\n"
+            + "    1,000,000: << million[ >>];\n"
+            + "    1,000,000,000,000: << billion[ >>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            + "%default:\n"
+            + "    -x: minus >>;\n"
+            + "    x.x: << point >>;\n"
+            + "    =%simplified=;\n"
+            + "    100: << hundred[ >%%and>];\n"
+            + "    1000: << thousand[ >%%and>];\n"
+            + "    100,000>>: << thousand[>%%commas>];\n"
+            + "    1,000,000: << million[>%%commas>];\n"
+            + "    1,000,000,000,000: << billion[>%%commas>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            + "%%and:\n"
+            + "    and =%default=;\n"
+            + "    100: =%default=;\n"
+            + "%%commas:\n"
+            + "    ' and =%default=;\n"
+            + "    100: , =%default=;\n"
+            + "    1000: , <%default< thousand, >%default>;\n"
+            + "    1,000,000: , =%default=;"
+            + "%%lenient-parse:\n"
+            + "    & ' ' , ',' ;\n" }
+        // Could someone please correct me if I'm wrong about "milliard" falling
+        // into disuse, or have missed any other details of how large numbers
+        // are rendered.  Also, could someone please provide me with information
+        // on which other English-speaking countries use which system?  Right now,
+        // I'm assuming that the U.S. system is used in Canada and that all the
+        // other English-speaking countries follow the British system.  Can
+        // someone out there confirm this?
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_es.java b/src/com/ibm/text/resources/NumberFormatRules_es.java
new file mode 100755
index 0000000..aec02dc
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_es.java
@@ -0,0 +1,96 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_es.java,v $ 
+ * $Date: 2000/03/10 04:07:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Spanish.
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:28 $
+ */
+public class NumberFormatRules_es extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Spanish.  The Spanish rules are quite similar to
+         * the English rules, but there are some important differences:
+         * First, we have to provide separate rules for most of the twenties
+         * because the ones digit frequently picks up an accent mark that it
+         * doesn't have when standing alone.  Second, each multiple of 100 has
+         * to be specified separately because the multiplier on 100 very often
+         * changes form in the contraction: 500 is "quinientos," not
+         * "cincocientos."  In addition, the word for 100 is "cien" when
+         * standing alone, but changes to "ciento" when followed by more digits.
+         * There also some other differences.
+         */
+        { "SpelloutRules",
+            // negative-number and fraction rules
+            "-x: menos >>;\n"
+            + "x.x: << punto >>;\n"
+            // words for values from 0 to 19
+            + "cero; uno; dos; tres; cuatro; cinco; seis; siete; ocho; nueve;\n"
+            + "diez; once; doce; trece; catorce; quince; diecis\u00e9is;\n"
+            + "    diecisiete; dieciocho; diecinueve;\n"
+            // words for values from 20 to 29 (necessary because the ones digit
+            // often picks up an accent mark it doesn't have when standing alone)
+            + "veinte; veintiuno; veintid\u00f3s; veintitr\u00e9s; veinticuatro;\n"
+            + "    veinticinco; veintis\u00e9is; veintisiete; veintiocho;\n"
+            + "    veintinueve;\n"
+            // words for multiples of 10 (notice that the tens digit is separated
+            // from the ones digit by the word "y".)
+            + "30: treinta[ y >>];\n"
+            + "40: cuarenta[ y >>];\n"
+            + "50: cincuenta[ y >>];\n"
+            + "60: sesenta[ y >>];\n"
+            + "70: setenta[ y >>];\n"
+            + "80: ochenta[ y >>];\n"
+            + "90: noventa[ y >>];\n"
+            // 100 by itself is "cien," but 100 followed by something is "cineto"
+            + "100: cien;\n"
+            + "101: ciento >>;\n"
+            // words for multiples of 100 (must be stated because they're
+            // rarely simple concatenations)
+            + "200: doscientos[ >>];\n"
+            + "300: trescientos[ >>];\n"
+            + "400: cuatrocientos[ >>];\n"
+            + "500: quinientos[ >>];\n"
+            + "600: seiscientos[ >>];\n"
+            + "700: setecientos[ >>];\n"
+            + "800: ochocientos[ >>];\n"
+            + "900: novecientos[ >>];\n"
+            // for 1,000, the multiplier on "mil" is omitted: 2,000 is "dos mil,"
+            // but 1,000 is just "mil."
+            + "1000: mil[ >>];\n"
+            + "2000: << mil[ >>];\n"
+            // 1,000,000 is "un millon," not "uno millon"
+            + "1,000,000: un mill\u00f3n[ >>];\n"
+            + "2,000,000: << mill\u00f3n[ >>];\n"
+            // overflow rule
+            + "1,000,000,000: =#,##0= (incomplete data);" }
+        // The Spanish rules are incomplete.  I'm missing information on negative
+        // numbers and numbers with fractional parts.  I also don't have
+        // information on numbers higher than the millions.
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_fr.java b/src/com/ibm/text/resources/NumberFormatRules_fr.java
new file mode 100755
index 0000000..b0c59df
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_fr.java
@@ -0,0 +1,99 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_fr.java,v $ 
+ * $Date: 2000/03/10 04:07:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default RuleBasedNumberFormat data for French
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:28 $
+ */
+public class NumberFormatRules_fr extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for French.  French adds some interesting quirks of its
+         * own: 1) The word "et" is interposed between the tens and ones digits,
+         * but only if the ones digit if 1: 20 is "vingt," and 2 is "vingt-deux,"
+         * but 21 is "vingt-et-un."  2)  There are no words for 70, 80, or 90.
+         * "quatre-vingts" ("four twenties") is used for 80, and values proceed
+         * by score from 60 to 99 (e.g., 73 is "soixante-treize" ["sixty-thirteen"]).
+         * Numbers from 1,100 to 1,199 are rendered as hundreds rather than
+         * thousands: 1,100 is "onze cents" ("eleven hundred"), rather than
+         * "mille cent" ("one thousand one hundred")
+         */
+        { "SpelloutRules",
+            // the main rule set
+            "%main:\n"
+            + "    -x: moins >>;\n"
+            + "    x.x: << virgule >>;\n"
+                   // words for numbers from 0 to 10
+            + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+            + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+            + "        dix-sept; dix-huit; dix-neuf;\n"
+                   // ords for the multiples of 10: %%alt-ones inserts "et"
+                   // when needed
+            + "    20: vingt[->%%alt-ones>];\n"
+            + "    30: trente[->%%alt-ones>];\n"
+            + "    40: quarante[->%%alt-ones>];\n"
+            + "    50: cinquante[->%%alt-ones>];\n"
+                   // rule for 60.  The /20 causes this rule's multiplier to be
+                   // 20 rather than 10, allowinhg us to recurse for all values
+                   // from 60 to 79...
+            + "    60/20: soixante[->%%alt-ones>];\n"
+                   // ...except for 71, which must be special-cased
+            + "    71: soixante et onze;\n"
+                   // at 72, we have to repeat the rule for 60 to get us to 79
+            + "    72/20: soixante->%%alt-ones>;\n"
+                   // at 80, we state a new rule with the phrase for 80.  Since
+                   // it changes form when there's a ones digit, we need a second
+                   // rule at 81.  This rule also includes "/20," allowing it to
+                   // be used correctly for all values up to 99
+            + "    80: quatre-vingts; 81/20: quatre-vingt->>;\n"
+                   // "cent" becomes plural when preceded by a multiplier, and
+                   // the multiplier is omitted from the singular form
+            + "    100: cent[ >>];\n"
+            + "    200: << cents[ >>];\n"
+            + "    1000: mille[ >>];\n"
+                   // values from 1,100 to 1,199 are rendered as "onze cents..."
+                   // instead of "mille cent..."  The > after "1000" decreases
+                   // the rule's exponent, causing its multiplier to be 100 instead
+                   // of 1,000.  This prevents us from getting "onze cents cent
+                   // vingt-deux" ("eleven hundred one hundred twenty-two").
+            + "    1100>: onze cents[ >>];\n"
+                   // at 1,200, we go back to formating in thousands, so we
+                   // repeat the rule for 1,000
+            + "    1200: mille >>;\n"
+                   // at 2,000, the multiplier is added
+            + "    2000: << mille[ >>];\n"
+            + "    1,000,000: << million[ >>];\n"
+            + "    1,000,000,000: << milliarde[ >>];\n"
+            + "    1,000,000,000,000: << billion[ >>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            // %%alt-ones is used to insert "et" when the ones digit is 1
+            + "%%alt-ones:\n"
+            + "    ; et-un; =%main=;" }
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_fr_CH.java b/src/com/ibm/text/resources/NumberFormatRules_fr_CH.java
new file mode 100755
index 0000000..607d776
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_fr_CH.java
@@ -0,0 +1,77 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_fr_CH.java,v $ 
+ * $Date: 2000/03/10 04:07:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Swiss French.
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:28 $
+ */
+public class NumberFormatRules_fr_CH extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Swiss French.  Swiss French differs from French French
+         * in that it does have words for 70, 80, and 90.  This rule set shows them,
+         * and is simpler as a result.
+         */
+        { "SpelloutRules",
+            "%main:\n"
+            + "    -x: moins >>;\n"
+            + "    x.x: << virgule >>;\n"
+            + "    z\u00e9ro; un; deux; trois; quatre; cinq; six; sept; huit; neuf;\n"
+            + "    dix; onze; douze; treize; quatorze; quinze; seize;\n"
+            + "        dix-sept; dix-huit; dix-neuf;\n"
+            + "    20: vingt[->%%alt-ones>];\n"
+            + "    30: trente[->%%alt-ones>];\n"
+            + "    40: quarante[->%%alt-ones>];\n"
+            + "    50: cinquante[->%%alt-ones>];\n"
+            + "    60: soixante[->%%alt-ones>];\n"
+                   // notice new words for 70, 80, and 90
+            + "    70: septante[->%%alt-ones>];\n"
+            + "    80: octante[->%%alt-ones>];\n"
+            + "    90: nonante[->%%alt-ones>];\n"
+            + "    100: cent[ >>];\n"
+            + "    200: << cents[ >>];\n"
+            + "    1000: mille[ >>];\n"
+            + "    1100>: onze cents[ >>];\n"
+            + "    1200: mille >>;\n"
+            + "    2000: << mille[ >>];\n"
+            + "    1,000,000: << million[ >>];\n"
+            + "    1,000,000,000: << milliarde[ >>];\n"
+            + "    1,000,000,000,000: << billion[ >>];\n"
+            + "    1,000,000,000,000,000: =#,##0=;\n"
+            + "%%alt-ones:\n"
+            + "    ; et-un; =%main=;" }
+        // again, I'm missing information on negative numbers and decimals for
+        // these to rule sets.  Also, I'm not 100% sure about Swiss French.  Is
+        // this correct?  Is "onze cents" commonly used for 1,100 in both France
+        // and Switzerland?  Can someone fill me in on the rules for the other
+        // French-speaking countries?  I've heard conflicting opinions on which
+        // version is used in Canada, and I understand there's an alternate set
+        // of words for 70, 80, and 90 that is used somewhere, but I don't know
+        // what those words are or where they're used.
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_it.java b/src/com/ibm/text/resources/NumberFormatRules_it.java
new file mode 100755
index 0000000..d74d5ef
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_it.java
@@ -0,0 +1,133 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_it.java,v $ 
+ * $Date: 2000/03/10 04:07:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Italian
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:28 $
+ */
+public class NumberFormatRules_it extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Italian.  Like German, most Italian numbers are
+         * written as single words.  What makes these rules complicated is the rule
+         * that says that when a word ending in a vowel and a word beginning with
+         * a vowel are combined into a compound, the vowel is dropped from the
+         * end of the first word: 180 is "centottanta," not "centoottanta."
+         * The complexity of this rule set is to produce this behavior.
+         */
+        { "SpelloutRules",
+            // main rule set.  Follows the patterns of the preceding rule sets,
+            // except that the final vowel is omitted from words ending in
+            // vowels when they are followed by another word; instead, we have
+            // separate rule sets that are identical to this one, except that
+            // all the words that don't begin with a vowel have a vowel tacked
+            // onto them at the front.  A word ending in a vowel calls a
+            // substitution that will supply that vowel, unless that vowel is to
+            // be elided.
+            "%main:\n"
+            + "    -x: meno >>;\n"
+            + "    x.x: << virgola >>;\n"
+            + "    zero; uno; due; tre; quattro; cinque; sei; sette; otto;\n"
+            + "        nove;\n"
+            + "    dieci; undici; dodici; tredici; quattordici; quindici; sedici;\n"
+            + "        diciasette; diciotto; diciannove;\n"
+            + "    20: venti; vent>%%with-i>;\n"
+            + "    30: trenta; trent>%%with-i>;\n"
+            + "    40: quaranta; quarant>%%with-a>;\n"
+            + "    50: cinquanta; cinquant>%%with-a>;\n"
+            + "    60: sessanta; sessant>%%with-a>;\n"
+            + "    70: settanta; settant>%%with-a>;\n"
+            + "    80: ottanta; ottant>%%with-a>;\n"
+            + "    90: novanta; novant>%%with-a>;\n"
+            + "    100: cento; cent[>%%with-o>];\n"
+            + "    200: <<cento; <<cent[>%%with-o>];\n"
+            + "    1000: mille; mill[>%%with-i>];\n"
+            + "    2000: <<mila; <<mil[>%%with-a>];\n"
+            + "    100,000>>: <<mila[ >>];\n"
+            + "    1,000,000: =#,##0= (incomplete data);\n"
+            + "%%with-a:\n"
+            + "    azero; uno; adue; atre; aquattro; acinque; asei; asette; otto;\n"
+            + "        anove;\n"
+            + "    adieci; undici; adodici; atredici; aquattordici; aquindici; asedici;\n"
+            + "        adiciasette; adiciotto; adiciannove;\n"
+            + "    20: aventi; avent>%%with-i>;\n"
+            + "    30: atrenta; atrent>%%with-i>;\n"
+            + "    40: aquaranta; aquarant>%%with-a>;\n"
+            + "    50: acinquanta; acinquant>%%with-a>;\n"
+            + "    60: asessanta; asessant>%%with-a>;\n"
+            + "    70: asettanta; asettant>%%with-a>;\n"
+            + "    80: ottanta; ottant>%%with-a>;\n"
+            + "    90: anovanta; anovant>%%with-a>;\n"
+            + "    100: acento; acent[>%%with-o>];\n"
+            + "    200: <%%with-a<cento; <%%with-a<cent[>%%with-o>];\n"
+            + "    1000: amille; amill[>%%with-i>];\n"
+            + "    2000: <%%with-a<mila; <%%with-a<mil[>%%with-a>];\n"
+            + "    100,000: =%main=;\n"
+            + "%%with-i:\n"
+            + "    izero; uno; idue; itre; iquattro; icinque; isei; isette; otto;\n"
+            + "        inove;\n"
+            + "    idieci; undici; idodici; itredici; iquattordici; iquindici; isedici;\n"
+            + "        idiciasette; idiciotto; idiciannove;\n"
+            + "    20: iventi; ivent>%%with-i>;\n"
+            + "    30: itrenta; itrent>%%with-i>;\n"
+            + "    40: iquaranta; iquarant>%%with-a>;\n"
+            + "    50: icinquanta; icinquant>%%with-a>;\n"
+            + "    60: isessanta; isessant>%%with-a>;\n"
+            + "    70: isettanta; isettant>%%with-a>;\n"
+            + "    80: ottanta; ottant>%%with-a>;\n"
+            + "    90: inovanta; inovant>%%with-a>;\n"
+            + "    100: icento; icent[>%%with-o>];\n"
+            + "    200: <%%with-i<cento; <%%with-i<cent[>%%with-o>];\n"
+            + "    1000: imille; imill[>%%with-i>];\n"
+            + "    2000: <%%with-i<mila; <%%with-i<mil[>%%with-a>];\n"
+            + "    100,000: =%main=;\n"
+            + "%%with-o:\n"
+            + "    ozero; uno; odue; otre; oquattro; ocinque; osei; osette; otto;\n"
+            + "        onove;\n"
+            + "    odieci; undici; ododici; otredici; oquattordici; oquindici; osedici;\n"
+            + "        odiciasette; odiciotto; odiciannove;\n"
+            + "    20: oventi; ovent>%%with-i>;\n"
+            + "    30: otrenta; otrent>%%with-i>;\n"
+            + "    40: oquaranta; oquarant>%%with-a>;\n"
+            + "    50: ocinquanta; ocinquant>%%with-a>;\n"
+            + "    60: osessanta; osessant>%%with-a>;\n"
+            + "    70: osettanta; osettant>%%with-a>;\n"
+            + "    80: ottanta; ottant>%%with-a>;\n"
+            + "    90: onovanta; onovant>%%with-a>;\n"
+            + "    100: ocento; ocent[>%%with-o>];\n"
+            + "    200: <%%with-o<cento; <%%with-o<cent[>%%with-o>];\n"
+            + "    1000: omille; omill[>%%with-i>];\n"
+            + "    2000: <%%with-o<mila; <%%with-o<mil[>%%with-a>];\n"
+            + "    100,000: =%main=;\n" }
+        // Can someone confirm that I did the vowel-eliding thing right?  I'm
+        // not 100% sure I'm doing it in all the right places, or completely
+        // correctly.  Also, I don't have information for negatives and decimals,
+        // and I lack words fror values from 1,000,000 on up.
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_iw.java b/src/com/ibm/text/resources/NumberFormatRules_iw.java
new file mode 100755
index 0000000..ac39373
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_iw.java
@@ -0,0 +1,65 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_iw.java,v $ 
+ * $Date: 2000/03/10 04:07:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Hebrew
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:28 $
+ */
+public class NumberFormatRules_iw extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Hebrew.  Hebrew actually has inflected forms for
+         * most of the lower-order numbers.  The masculine forms are shown
+         * here.
+         */
+        { "SpelloutRules",
+            "zero (incomplete data); \u05d0\u05d4\u05d3; \u05e9\u05d2\u05d9\u05d9\u05dd; \u05e9\u05dc\u05d5\u05e9\u05d4;\n"
+            + "4: \u05d0\u05d3\u05d1\u05e6\u05d4; \u05d7\u05d2\u05d5\u05d9\u05e9\u05d4; \u05e9\u05e9\u05d4;\n"
+            + "7: \u05e9\u05d1\u05e6\u05d4; \u05e9\u05de\u05d5\u05d2\u05d4; \u05ea\u05e9\u05e6\u05d4;\n"
+            + "10: \u05e6\u05e9\u05d3\u05d4[ >>];\n"
+            + "20: \u05e6\u05e9\u05d3\u05d9\u05dd[ >>];\n"
+            + "30: \u05e9\u05dc\u05d5\u05e9\u05d9\u05dd[ >>];\n"
+            + "40: \u05d0\u05d3\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+            + "50: \u05d7\u05de\u05d9\u05e9\u05d9\u05dd[ >>];\n"
+            + "60: \u05e9\u05e9\u05d9\u05dd[ >>];\n"
+            + "70: \u05e9\u05d1\u05e6\u05d9\u05dd[ >>];\n"
+            + "80: \u05e9\u05de\u05d5\u05d2\u05d9\u05dd[ >>];\n"
+            + "90: \u05ea\u05e9\u05e6\u05d9\u05dd[ >>];\n"
+            + "100: \u05de\u05d0\u05d4[ >>];\n"
+            + "200: << \u05de\u05d0\u05d4[ >>];\n"
+            + "1000: \u05d0\u05dc\u05e3[ >>];\n"
+            + "2000: << \u05d0\u05dc\u05e3[ >>];\n"
+            + "1,000,000: =#,##0= (incomplete data);" }
+        // This data is woefully incomplete.  Can someone fill me in on the
+        // various inflected forms of the numbers, which seem to be necessary
+        // to do Hebrew correctly?  Can somone supply me with data for values
+        // from 1,000,000 on up?  What about the word for zero?  What about
+        // information on negatives and decimals?
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_ja.java b/src/com/ibm/text/resources/NumberFormatRules_ja.java
new file mode 100755
index 0000000..3d17369
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_ja.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_ja.java,v $ 
+ * $Date: 2000/03/10 04:07:28 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Japanese
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:28 $
+ */
+public class NumberFormatRules_ja extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Japanese.  In Japanese, there really isn't any
+         * distinction between a number written out in digits and a number
+         * written out in words: the ideographic characters are both digits
+         * and words.  This rule set provides two variants:  %traditional
+         * uses the traditional CJK numerals (which are also used in China
+         * and Korea).  %financial uses alternate ideographs for many numbers
+         * that are harder to alter than the traditional numerals (one could
+         * fairly easily change a one to
+         * a three just by adding two strokes, for example).  This is also done in
+         * the other countries using Chinese idographs, but different ideographs
+         * are used in those places.
+         */
+        { "SpelloutRules",
+            "%financial:\n"
+            + "    \u96f6; \u58f1; \u5f10; \u53c2; \u56db; \u4f0d; \u516d; \u4e03; \u516b; \u4e5d;\n"
+            + "    \u62fe[>>];\n"
+            + "    20: <<\u62fe[>>];\n"
+            + "    100: <<\u767e[>>];\n"
+            + "    1000: <<\u5343[>>];\n"
+            + "    10,000: <<\u4e07[>>];\n"
+            + "    100,000,000: <<\u5104[>>];\n"
+            + "    1,000,000,000,000: <<\u5146[>>];\n"
+            + "    10,000,000,000,000,000: =#,##0=;\n"
+            + "%traditional:\n"
+            + "    \u96f6; \u4e00; \u4e8c; \u4e09; \u56db; \u4e94; \u516d; \u4e03; \u516b; \u4e5d;\n"
+            + "    \u5341[>>];\n"
+            + "    20: <<\u5341[>>];\n"
+            + "    100: <<\u767e[>>];\n"
+            + "    1000: <<\u5343[>>];\n"
+            + "    10,000: <<\u4e07[>>];\n"
+            + "    100,000,000: <<\u5104[>>];\n"
+            + "    1,000,000,000,000: <<\u5146[>>];\n"
+            + "    10,000,000,000,000,000: =#,##0=;" }
+        // Can someone supply me with the right fraud-proof ideographs for
+        // Simplified and Traditional Chinese, and for Korean?  Can someone
+        // supply me with information on negatives and decimals?
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_nl.java b/src/com/ibm/text/resources/NumberFormatRules_nl.java
new file mode 100755
index 0000000..d27ec60
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_nl.java
@@ -0,0 +1,60 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_nl.java,v $ 
+ * $Date: 2000/03/10 04:07:29 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Dutch
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:29 $
+ */
+class NumberFormatRules_nl extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Swedish.
+         */
+        { "SpelloutRules",
+            " -x: min >>;\n"
+            + "x.x: << komma >>;\n"
+            + "(zero?); een; twee; drie; vier; vijf; zes; zeven; acht; negen;\n"
+            + "tien; elf; twaalf; dertien; veertien; vijftien; zestien;\n"
+            + "zeventien; achtien; negentien;\n"
+            + "20: [>> en ]twintig;\n"
+            + "30: [>> en ]dertig;\n"
+            + "40: [>> en ]veertig;\n"
+            + "50: [>> en ]vijftig;\n"
+            + "60: [>> en ]zestig;\n"
+            + "70: [>> en ]zeventig;\n"
+            + "80: [>> en ]tachtig;\n"
+            + "90: [>> en ]negentig;\n"
+            + "100: << honderd[ >>];\n"
+            + "1000: << duizend[ >>];\n"
+            + "1,000,000: << miljoen[ >>];\n"
+            + "1,000,000,000: << biljoen[ >>];\n"
+            + "1,000,000,000,000: =#,##0=" }
+            // can someone supply me with information on negatives and decimals?
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_ru.java b/src/com/ibm/text/resources/NumberFormatRules_ru.java
new file mode 100755
index 0000000..3ab07cd
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_ru.java
@@ -0,0 +1,71 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_ru.java,v $ 
+ * $Date: 2000/03/10 04:07:29 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Russian
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:29 $
+ */
+public class NumberFormatRules_ru extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Russian.
+         */
+        { "SpelloutRules",
+            "\u043d\u043e\u043b\u044c; \u043e\u0434\u0438\u043d; \u0434\u0432\u0430; \u0442\u0440\u0438; "
+            + "\u0447\u0435\u0442\u044b\u0440\u0435; \u043f\u044f\u0442; \u0448\u0435\u0441\u0442; "
+            + "\u0441\u0435\u043c\u044c; \u0432\u043e\u0441\u0435\u043c\u044c; \u0434\u0435\u0432\u044f\u0442;\n"
+            + "10: \u0434\u0435\u0441\u044f\u0442; "
+            + "\u043e\u0434\u0438\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+            + "\u0434\u0432\u0435\u043d\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+            + "\u0442\u0440\u0438\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+            + "\u0447\u0435\u0442\u044b\u0440\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+            + "15: \u043f\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+            + "\u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+            + "\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+            + "\u0432\u043e\u0441\u0435\u043c\u043d\u0430\u0434\u0446\u0430\u0442\u044c; "
+            + "\u0434\u0435\u0432\u044f\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u044c;\n"
+            + "20: \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+            + "30: \u0442\u0440\u043b\u0434\u0446\u0430\u0442\u044c[ >>];\n"
+            + "40: \u0441\u043e\u0440\u043e\u043a[ >>];\n"
+            + "50: \u043f\u044f\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+            + "60: \u0448\u0435\u0441\u0442\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+            + "70: \u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+            + "80: \u0432\u043e\u0441\u0435\u043c\u044c\u0434\u0435\u0441\u044f\u0442[ >>];\n"
+            + "90: \u0434\u0435\u0432\u044f\u043d\u043e\u0441\u0442\u043e[ >>];\n"
+            + "100: \u0441\u0442\u043e[ >>];\n"
+            + "200: << \u0441\u0442\u043e[ >>];\n"
+            + "1000: \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+            + "2000: << \u0442\u044b\u0441\u044f\u0447\u0430[ >>];\n"
+            + "1,000,000: \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+            + "2,000,000: << \u043c\u0438\u043b\u043b\u0438\u043e\u043d[ >>];\n"
+            + "1,000,000,000: =#,##0=;" }
+        // Can someone supply me with information on negatives and decimals?
+        // How about words for billions and trillions?
+    };
+}
diff --git a/src/com/ibm/text/resources/NumberFormatRules_sv.java b/src/com/ibm/text/resources/NumberFormatRules_sv.java
new file mode 100755
index 0000000..197088a
--- /dev/null
+++ b/src/com/ibm/text/resources/NumberFormatRules_sv.java
@@ -0,0 +1,62 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/NumberFormatRules_sv.java,v $ 
+ * $Date: 2000/03/10 04:07:29 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * RuleBasedNumberFormat data for Swedish
+ *
+ * @author Richard Gillam
+ * @version $Version$ $Date: 2000/03/10 04:07:29 $
+ */
+public class NumberFormatRules_sv extends ListResourceBundle {
+    /**
+     * Puts a copyright in the .class file
+     */
+    private static final String copyrightNotice
+        = "Copyright \u00a91997-1998 IBM Corp.  All rights reserved.";
+    public Object[][] getContents() {
+        return contents;
+    }
+
+    Object[][] contents = {
+        /**
+         * Spellout rules for Swedish.
+         */
+        { "SpelloutRules",
+            "noll; ett; tv\u00e5; tre; fyra; fem; sex; sjo; \u00e5tta; nio;\n"
+            + "tio; elva; tolv; tretton; fjorton; femton; sexton; sjutton; arton; nitton;\n"
+            + "20: tjugo[>>];\n"
+            + "30: trettio[>>];\n"
+            + "40: fyrtio[>>];\n"
+            + "50: femtio[>>];\n"
+            + "60: sextio[>>];\n"
+            + "70: sjuttio[>>];\n"
+            + "80: \u00e5ttio[>>];\n"
+            + "90: nittio[>>];\n"
+            + "100: hundra[>>];\n"
+            + "200: <<hundra[>>];\n"
+            + "1000: tusen[ >>];\n"
+            + "2000: << tusen[ >>];\n"
+            + "1,000,000: en miljon[ >>];\n"
+            + "2,000,000: << miljon[ >>];\n"
+            + "1,000,000,000: en miljard[ >>];\n"
+            + "2,000,000,000: << miljard[ >>];\n"
+            + "1,000,000,000,000: en biljon[ >>];\n"
+            + "2,000,000,000,000: << biljon[ >>];\n"
+            + "1,000,000,000,000,000: =#,##0=" }
+        // can someone supply me with information on negatives and decimals?
+    };
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Fullwidth_Halfwidth.java b/src/com/ibm/text/resources/TransliterationRule_Fullwidth_Halfwidth.java
new file mode 100755
index 0000000..9bb2653
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Fullwidth_Halfwidth.java
@@ -0,0 +1,288 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Fullwidth_Halfwidth.java,v $ 
+ * $Date: 2000/03/10 04:07:29 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Fullwidth_Halfwidth extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule", ""
+            
+            /* Mechanically generated from Unicode Character Database
+             */
+
+    // multicharacter
+
+    + "\u30AC<>\uFF76\uFF9E;"   //  to KATAKANA LETTER GA
+    + "\u30AE<>\uFF77\uFF9E;"   //  to KATAKANA LETTER GI
+    + "\u30B0<>\uFF78\uFF9E;"   //  to KATAKANA LETTER GU
+    + "\u30B2<>\uFF79\uFF9E;"   //  to KATAKANA LETTER GE
+    + "\u30B4<>\uFF7A\uFF9E;"   //  to KATAKANA LETTER GO
+    + "\u30B6<>\uFF7B\uFF9E;"   //  to KATAKANA LETTER ZA
+    + "\u30B8<>\uFF7C\uFF9E;"   //  to KATAKANA LETTER ZI
+    + "\u30BA<>\uFF7D\uFF9E;"   //  to KATAKANA LETTER ZU
+    + "\u30BC<>\uFF7E\uFF9E;"   //  to KATAKANA LETTER ZE
+    + "\u30BE<>\uFF7F\uFF9E;"   //  to KATAKANA LETTER ZO
+    + "\u30C0<>\uFF80\uFF9E;"   //  to KATAKANA LETTER DA
+    + "\u30C2<>\uFF81\uFF9E;"   //  to KATAKANA LETTER DI
+    + "\u30C5<>\uFF82\uFF9E;"   //  to KATAKANA LETTER DU
+    + "\u30C7<>\uFF83\uFF9E;"   //  to KATAKANA LETTER DE
+    + "\u30C9<>\uFF84\uFF9E;"   //  to KATAKANA LETTER DO
+    + "\u30D0<>\uFF8A\uFF9E;"   //  to KATAKANA LETTER BA
+    + "\u30D1<>\uFF8A\uFF9F;"   //  to KATAKANA LETTER PA
+    + "\u30D3<>\uFF8B\uFF9E;"   //  to KATAKANA LETTER BI
+    + "\u30D4<>\uFF8B\uFF9F;"   //  to KATAKANA LETTER PI
+    + "\u30D6<>\uFF8C\uFF9E;"   //  to KATAKANA LETTER BU
+    + "\u30D7<>\uFF8C\uFF9F;"   //  to KATAKANA LETTER PU
+    + "\u30D9<>\uFF8D\uFF9E;"   //  to KATAKANA LETTER BE
+    + "\u30DA<>\uFF8D\uFF9F;"   //  to KATAKANA LETTER PE
+    + "\u30DC<>\uFF8E\uFF9E;"   //  to KATAKANA LETTER BO
+    + "\u30DD<>\uFF8E\uFF9F;"   //  to KATAKANA LETTER PO
+    + "\u30F4<>\uFF73\uFF9E;"   //  to KATAKANA LETTER VU
+    + "\u30F7<>\uFF9C\uFF9E;"   //  to KATAKANA LETTER VA
+    + "\u30FA<>\uFF66\uFF9E;"   //  to KATAKANA LETTER VO
+    
+    // single character
+
+    + "\uFF01<>'!';"    //  from FULLWIDTH EXCLAMATION MARK
+    + "\uFF02<>'\"';"   //  from FULLWIDTH QUOTATION MARK
+    + "\uFF03<>'#';"    //  from FULLWIDTH NUMBER SIGN
+    + "\uFF04<>'$';"    //  from FULLWIDTH DOLLAR SIGN
+    + "\uFF05<>'%';"    //  from FULLWIDTH PERCENT SIGN
+    + "\uFF06<>'&';"    //  from FULLWIDTH AMPERSAND
+    + "\uFF07<>'';" //  from FULLWIDTH APOSTROPHE
+    + "\uFF08<>'(';"    //  from FULLWIDTH LEFT PARENTHESIS
+    + "\uFF09<>')';"    //  from FULLWIDTH RIGHT PARENTHESIS
+    + "\uFF0A<>'*';"    //  from FULLWIDTH ASTERISK
+    + "\uFF0B<>'+';"    //  from FULLWIDTH PLUS SIGN
+    + "\uFF0C<>',';"    //  from FULLWIDTH COMMA
+    + "\uFF0D<>'-';"    //  from FULLWIDTH HYPHEN-MINUS
+    + "\uFF0E<>'.';"    //  from FULLWIDTH FULL STOP
+    + "\uFF0F<>'/';"    //  from FULLWIDTH SOLIDUS
+    + "\uFF10<>'0';"    //  from FULLWIDTH DIGIT ZERO
+    + "\uFF11<>'1';"    //  from FULLWIDTH DIGIT ONE
+    + "\uFF12<>'2';"    //  from FULLWIDTH DIGIT TWO
+    + "\uFF13<>'3';"    //  from FULLWIDTH DIGIT THREE
+    + "\uFF14<>'4';"    //  from FULLWIDTH DIGIT FOUR
+    + "\uFF15<>'5';"    //  from FULLWIDTH DIGIT FIVE
+    + "\uFF16<>'6';"    //  from FULLWIDTH DIGIT SIX
+    + "\uFF17<>'7';"    //  from FULLWIDTH DIGIT SEVEN
+    + "\uFF18<>'8';"    //  from FULLWIDTH DIGIT EIGHT
+    + "\uFF19<>'9';"    //  from FULLWIDTH DIGIT NINE
+    + "\uFF1A<>':';"    //  from FULLWIDTH COLON
+    + "\uFF1B<>';';"    //  from FULLWIDTH SEMICOLON
+    + "\uFF1C<>'<';"    //  from FULLWIDTH LESS-THAN SIGN
+    + "\uFF1D<>'=';"    //  from FULLWIDTH EQUALS SIGN
+    + "\uFF1E<>'>';"    //  from FULLWIDTH GREATER-THAN SIGN
+    + "\uFF1F<>'?';"    //  from FULLWIDTH QUESTION MARK
+    + "\uFF20<>'@';"    //  from FULLWIDTH COMMERCIAL AT
+    + "\uFF21<>A;"  //  from FULLWIDTH LATIN CAPITAL LETTER A
+    + "\uFF22<>B;"  //  from FULLWIDTH LATIN CAPITAL LETTER B
+    + "\uFF23<>C;"  //  from FULLWIDTH LATIN CAPITAL LETTER C
+    + "\uFF24<>D;"  //  from FULLWIDTH LATIN CAPITAL LETTER D
+    + "\uFF25<>E;"  //  from FULLWIDTH LATIN CAPITAL LETTER E
+    + "\uFF26<>F;"  //  from FULLWIDTH LATIN CAPITAL LETTER F
+    + "\uFF27<>G;"  //  from FULLWIDTH LATIN CAPITAL LETTER G
+    + "\uFF28<>H;"  //  from FULLWIDTH LATIN CAPITAL LETTER H
+    + "\uFF29<>I;"  //  from FULLWIDTH LATIN CAPITAL LETTER I
+    + "\uFF2A<>J;"  //  from FULLWIDTH LATIN CAPITAL LETTER J
+    + "\uFF2B<>K;"  //  from FULLWIDTH LATIN CAPITAL LETTER K
+    + "\uFF2C<>L;"  //  from FULLWIDTH LATIN CAPITAL LETTER L
+    + "\uFF2D<>M;"  //  from FULLWIDTH LATIN CAPITAL LETTER M
+    + "\uFF2E<>N;"  //  from FULLWIDTH LATIN CAPITAL LETTER N
+    + "\uFF2F<>O;"  //  from FULLWIDTH LATIN CAPITAL LETTER O
+    + "\uFF30<>P;"  //  from FULLWIDTH LATIN CAPITAL LETTER P
+    + "\uFF31<>Q;"  //  from FULLWIDTH LATIN CAPITAL LETTER Q
+    + "\uFF32<>R;"  //  from FULLWIDTH LATIN CAPITAL LETTER R
+    + "\uFF33<>S;"  //  from FULLWIDTH LATIN CAPITAL LETTER S
+    + "\uFF34<>T;"  //  from FULLWIDTH LATIN CAPITAL LETTER T
+    + "\uFF35<>U;"  //  from FULLWIDTH LATIN CAPITAL LETTER U
+    + "\uFF36<>V;"  //  from FULLWIDTH LATIN CAPITAL LETTER V
+    + "\uFF37<>W;"  //  from FULLWIDTH LATIN CAPITAL LETTER W
+    + "\uFF38<>X;"  //  from FULLWIDTH LATIN CAPITAL LETTER X
+    + "\uFF39<>Y;"  //  from FULLWIDTH LATIN CAPITAL LETTER Y
+    + "\uFF3A<>Z;"  //  from FULLWIDTH LATIN CAPITAL LETTER Z
+    + "\uFF3B<>'[';"    //  from FULLWIDTH LEFT SQUARE BRACKET
+    + "\uFF3C<>'\\';"    //  from FULLWIDTH REVERSE SOLIDUS {double escape - aliu}
+    + "\uFF3D<>']';"    //  from FULLWIDTH RIGHT SQUARE BRACKET
+    + "\uFF3E<>'^';"    //  from FULLWIDTH CIRCUMFLEX ACCENT
+    + "\uFF3F<>'_';"    //  from FULLWIDTH LOW LINE
+    + "\uFF40<>'`';"    //  from FULLWIDTH GRAVE ACCENT
+    + "\uFF41<>a;"  //  from FULLWIDTH LATIN SMALL LETTER A
+    + "\uFF42<>b;"  //  from FULLWIDTH LATIN SMALL LETTER B
+    + "\uFF43<>c;"  //  from FULLWIDTH LATIN SMALL LETTER C
+    + "\uFF44<>d;"  //  from FULLWIDTH LATIN SMALL LETTER D
+    + "\uFF45<>e;"  //  from FULLWIDTH LATIN SMALL LETTER E
+    + "\uFF46<>f;"  //  from FULLWIDTH LATIN SMALL LETTER F
+    + "\uFF47<>g;"  //  from FULLWIDTH LATIN SMALL LETTER G
+    + "\uFF48<>h;"  //  from FULLWIDTH LATIN SMALL LETTER H
+    + "\uFF49<>i;"  //  from FULLWIDTH LATIN SMALL LETTER I
+    + "\uFF4A<>j;"  //  from FULLWIDTH LATIN SMALL LETTER J
+    + "\uFF4B<>k;"  //  from FULLWIDTH LATIN SMALL LETTER K
+    + "\uFF4C<>l;"  //  from FULLWIDTH LATIN SMALL LETTER L
+    + "\uFF4D<>m;"  //  from FULLWIDTH LATIN SMALL LETTER M
+    + "\uFF4E<>n;"  //  from FULLWIDTH LATIN SMALL LETTER N
+    + "\uFF4F<>o;"  //  from FULLWIDTH LATIN SMALL LETTER O
+    + "\uFF50<>p;"  //  from FULLWIDTH LATIN SMALL LETTER P
+    + "\uFF51<>q;"  //  from FULLWIDTH LATIN SMALL LETTER Q
+    + "\uFF52<>r;"  //  from FULLWIDTH LATIN SMALL LETTER R
+    + "\uFF53<>s;"  //  from FULLWIDTH LATIN SMALL LETTER S
+    + "\uFF54<>t;"  //  from FULLWIDTH LATIN SMALL LETTER T
+    + "\uFF55<>u;"  //  from FULLWIDTH LATIN SMALL LETTER U
+    + "\uFF56<>v;"  //  from FULLWIDTH LATIN SMALL LETTER V
+    + "\uFF57<>w;"  //  from FULLWIDTH LATIN SMALL LETTER W
+    + "\uFF58<>x;"  //  from FULLWIDTH LATIN SMALL LETTER X
+    + "\uFF59<>y;"  //  from FULLWIDTH LATIN SMALL LETTER Y
+    + "\uFF5A<>z;"  //  from FULLWIDTH LATIN SMALL LETTER Z
+    + "\uFF5B<>'{';"    //  from FULLWIDTH LEFT CURLY BRACKET
+    + "\uFF5C<>'|';"    //  from FULLWIDTH VERTICAL LINE
+    + "\uFF5D<>'}';"    //  from FULLWIDTH RIGHT CURLY BRACKET
+    + "\uFF5E<>'~';"    //  from FULLWIDTH TILDE
+    + "\u3002<>\uFF61;" //  to HALFWIDTH IDEOGRAPHIC FULL STOP
+    + "\u300C<>\uFF62;" //  to HALFWIDTH LEFT CORNER BRACKET
+    + "\u300D<>\uFF63;" //  to HALFWIDTH RIGHT CORNER BRACKET
+    + "\u3001<>\uFF64;" //  to HALFWIDTH IDEOGRAPHIC COMMA
+    + "\u30FB<>\uFF65;" //  to HALFWIDTH KATAKANA MIDDLE DOT
+    + "\u30F2<>\uFF66;" //  to HALFWIDTH KATAKANA LETTER WO
+    + "\u30A1<>\uFF67;" //  to HALFWIDTH KATAKANA LETTER SMALL A
+    + "\u30A3<>\uFF68;" //  to HALFWIDTH KATAKANA LETTER SMALL I
+    + "\u30A5<>\uFF69;" //  to HALFWIDTH KATAKANA LETTER SMALL U
+    + "\u30A7<>\uFF6A;" //  to HALFWIDTH KATAKANA LETTER SMALL E
+    + "\u30A9<>\uFF6B;" //  to HALFWIDTH KATAKANA LETTER SMALL O
+    + "\u30E3<>\uFF6C;" //  to HALFWIDTH KATAKANA LETTER SMALL YA
+    + "\u30E5<>\uFF6D;" //  to HALFWIDTH KATAKANA LETTER SMALL YU
+    + "\u30E7<>\uFF6E;" //  to HALFWIDTH KATAKANA LETTER SMALL YO
+    + "\u30C3<>\uFF6F;" //  to HALFWIDTH KATAKANA LETTER SMALL TU
+    + "\u30FC<>\uFF70;" //  to HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+    + "\u30A2<>\uFF71;" //  to HALFWIDTH KATAKANA LETTER A
+    + "\u30A4<>\uFF72;" //  to HALFWIDTH KATAKANA LETTER I
+    + "\u30A6<>\uFF73;" //  to HALFWIDTH KATAKANA LETTER U
+    + "\u30A8<>\uFF74;" //  to HALFWIDTH KATAKANA LETTER E
+    + "\u30AA<>\uFF75;" //  to HALFWIDTH KATAKANA LETTER O
+    + "\u30AB<>\uFF76;" //  to HALFWIDTH KATAKANA LETTER KA
+    + "\u30AD<>\uFF77;" //  to HALFWIDTH KATAKANA LETTER KI
+    + "\u30AF<>\uFF78;" //  to HALFWIDTH KATAKANA LETTER KU
+    + "\u30B1<>\uFF79;" //  to HALFWIDTH KATAKANA LETTER KE
+    + "\u30B3<>\uFF7A;" //  to HALFWIDTH KATAKANA LETTER KO
+    + "\u30B5<>\uFF7B;" //  to HALFWIDTH KATAKANA LETTER SA
+    + "\u30B7<>\uFF7C;" //  to HALFWIDTH KATAKANA LETTER SI
+    + "\u30B9<>\uFF7D;" //  to HALFWIDTH KATAKANA LETTER SU
+    + "\u30BB<>\uFF7E;" //  to HALFWIDTH KATAKANA LETTER SE
+    + "\u30BD<>\uFF7F;" //  to HALFWIDTH KATAKANA LETTER SO
+    + "\u30BF<>\uFF80;" //  to HALFWIDTH KATAKANA LETTER TA
+    + "\u30C1<>\uFF81;" //  to HALFWIDTH KATAKANA LETTER TI
+    + "\u30C4<>\uFF82;" //  to HALFWIDTH KATAKANA LETTER TU
+    + "\u30C6<>\uFF83;" //  to HALFWIDTH KATAKANA LETTER TE
+    + "\u30C8<>\uFF84;" //  to HALFWIDTH KATAKANA LETTER TO
+    + "\u30CA<>\uFF85;" //  to HALFWIDTH KATAKANA LETTER NA
+    + "\u30CB<>\uFF86;" //  to HALFWIDTH KATAKANA LETTER NI
+    + "\u30CC<>\uFF87;" //  to HALFWIDTH KATAKANA LETTER NU
+    + "\u30CD<>\uFF88;" //  to HALFWIDTH KATAKANA LETTER NE
+    + "\u30CE<>\uFF89;" //  to HALFWIDTH KATAKANA LETTER NO
+    + "\u30CF<>\uFF8A;" //  to HALFWIDTH KATAKANA LETTER HA
+    + "\u30D2<>\uFF8B;" //  to HALFWIDTH KATAKANA LETTER HI
+    + "\u30D5<>\uFF8C;" //  to HALFWIDTH KATAKANA LETTER HU
+    + "\u30D8<>\uFF8D;" //  to HALFWIDTH KATAKANA LETTER HE
+    + "\u30DB<>\uFF8E;" //  to HALFWIDTH KATAKANA LETTER HO
+    + "\u30DE<>\uFF8F;" //  to HALFWIDTH KATAKANA LETTER MA
+    + "\u30DF<>\uFF90;" //  to HALFWIDTH KATAKANA LETTER MI
+    + "\u30E0<>\uFF91;" //  to HALFWIDTH KATAKANA LETTER MU
+    + "\u30E1<>\uFF92;" //  to HALFWIDTH KATAKANA LETTER ME
+    + "\u30E2<>\uFF93;" //  to HALFWIDTH KATAKANA LETTER MO
+    + "\u30E4<>\uFF94;" //  to HALFWIDTH KATAKANA LETTER YA
+    + "\u30E6<>\uFF95;" //  to HALFWIDTH KATAKANA LETTER YU
+    + "\u30E8<>\uFF96;" //  to HALFWIDTH KATAKANA LETTER YO
+    + "\u30E9<>\uFF97;" //  to HALFWIDTH KATAKANA LETTER RA
+    + "\u30EA<>\uFF98;" //  to HALFWIDTH KATAKANA LETTER RI
+    + "\u30EB<>\uFF99;" //  to HALFWIDTH KATAKANA LETTER RU
+    + "\u30EC<>\uFF9A;" //  to HALFWIDTH KATAKANA LETTER RE
+    + "\u30ED<>\uFF9B;" //  to HALFWIDTH KATAKANA LETTER RO
+    + "\u30EF<>\uFF9C;" //  to HALFWIDTH KATAKANA LETTER WA
+    + "\u30F3<>\uFF9D;" //  to HALFWIDTH KATAKANA LETTER N
+    + "\u3099<>\uFF9E;" //  to HALFWIDTH KATAKANA VOICED SOUND MARK
+    + "\u309A<>\uFF9F;" //  to HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+    + "\u1160<>\uFFA0;" //  to HALFWIDTH HANGUL FILLER
+    + "\u1100<>\uFFA1;" //  to HALFWIDTH HANGUL LETTER KIYEOK
+    + "\u1101<>\uFFA2;" //  to HALFWIDTH HANGUL LETTER SSANGKIYEOK
+    + "\u11AA<>\uFFA3;" //  to HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+    + "\u1102<>\uFFA4;" //  to HALFWIDTH HANGUL LETTER NIEUN
+    + "\u11AC<>\uFFA5;" //  to HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+    + "\u11AD<>\uFFA6;" //  to HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+    + "\u1103<>\uFFA7;" //  to HALFWIDTH HANGUL LETTER TIKEUT
+    + "\u1104<>\uFFA8;" //  to HALFWIDTH HANGUL LETTER SSANGTIKEUT
+    + "\u1105<>\uFFA9;" //  to HALFWIDTH HANGUL LETTER RIEUL
+    + "\u11B0<>\uFFAA;" //  to HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+    + "\u11B1<>\uFFAB;" //  to HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+    + "\u11B2<>\uFFAC;" //  to HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+    + "\u11B3<>\uFFAD;" //  to HALFWIDTH HANGUL LETTER RIEUL-SIOS
+    + "\u11B4<>\uFFAE;" //  to HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+    + "\u11B5<>\uFFAF;" //  to HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+    + "\u111A<>\uFFB0;" //  to HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+    + "\u1106<>\uFFB1;" //  to HALFWIDTH HANGUL LETTER MIEUM
+    + "\u1107<>\uFFB2;" //  to HALFWIDTH HANGUL LETTER PIEUP
+    + "\u1108<>\uFFB3;" //  to HALFWIDTH HANGUL LETTER SSANGPIEUP
+    + "\u1121<>\uFFB4;" //  to HALFWIDTH HANGUL LETTER PIEUP-SIOS
+    + "\u1109<>\uFFB5;" //  to HALFWIDTH HANGUL LETTER SIOS
+    + "\u110A<>\uFFB6;" //  to HALFWIDTH HANGUL LETTER SSANGSIOS
+    + "\u110B<>\uFFB7;" //  to HALFWIDTH HANGUL LETTER IEUNG
+    + "\u110C<>\uFFB8;" //  to HALFWIDTH HANGUL LETTER CIEUC
+    + "\u110D<>\uFFB9;" //  to HALFWIDTH HANGUL LETTER SSANGCIEUC
+    + "\u110E<>\uFFBA;" //  to HALFWIDTH HANGUL LETTER CHIEUCH
+    + "\u110F<>\uFFBB;" //  to HALFWIDTH HANGUL LETTER KHIEUKH
+    + "\u1110<>\uFFBC;" //  to HALFWIDTH HANGUL LETTER THIEUTH
+    + "\u1111<>\uFFBD;" //  to HALFWIDTH HANGUL LETTER PHIEUPH
+    + "\u1112<>\uFFBE;" //  to HALFWIDTH HANGUL LETTER HIEUH
+    + "\u1161<>\uFFC2;" //  to HALFWIDTH HANGUL LETTER A
+    + "\u1162<>\uFFC3;" //  to HALFWIDTH HANGUL LETTER AE
+    + "\u1163<>\uFFC4;" //  to HALFWIDTH HANGUL LETTER YA
+    + "\u1164<>\uFFC5;" //  to HALFWIDTH HANGUL LETTER YAE
+    + "\u1165<>\uFFC6;" //  to HALFWIDTH HANGUL LETTER EO
+    + "\u1166<>\uFFC7;" //  to HALFWIDTH HANGUL LETTER E
+    + "\u1167<>\uFFCA;" //  to HALFWIDTH HANGUL LETTER YEO
+    + "\u1168<>\uFFCB;" //  to HALFWIDTH HANGUL LETTER YE
+    + "\u1169<>\uFFCC;" //  to HALFWIDTH HANGUL LETTER O
+    + "\u116A<>\uFFCD;" //  to HALFWIDTH HANGUL LETTER WA
+    + "\u116B<>\uFFCE;" //  to HALFWIDTH HANGUL LETTER WAE
+    + "\u116C<>\uFFCF;" //  to HALFWIDTH HANGUL LETTER OE
+    + "\u116D<>\uFFD2;" //  to HALFWIDTH HANGUL LETTER YO
+    + "\u116E<>\uFFD3;" //  to HALFWIDTH HANGUL LETTER U
+    + "\u116F<>\uFFD4;" //  to HALFWIDTH HANGUL LETTER WEO
+    + "\u1170<>\uFFD5;" //  to HALFWIDTH HANGUL LETTER WE
+    + "\u1171<>\uFFD6;" //  to HALFWIDTH HANGUL LETTER WI
+    + "\u1172<>\uFFD7;" //  to HALFWIDTH HANGUL LETTER YU
+    + "\u1173<>\uFFDA;" //  to HALFWIDTH HANGUL LETTER EU
+    + "\u1174<>\uFFDB;" //  to HALFWIDTH HANGUL LETTER YI
+    + "\u1175<>\uFFDC;" //  to HALFWIDTH HANGUL LETTER I
+    + "\uFFE0<>'\u00a2';"    //  from FULLWIDTH CENT SIGN
+    + "\uFFE1<>'\u00a3';"    //  from FULLWIDTH POUND SIGN
+    + "\uFFE2<>'\u00ac';"    //  from FULLWIDTH NOT SIGN
+    + "\uFFE3<>' '\u0304;"  //  from FULLWIDTH MACRON
+    + "\uFFE4<>'\u00a6';"    //  from FULLWIDTH BROKEN BAR
+    + "\uFFE5<>'\u00a5';"    //  from FULLWIDTH YEN SIGN
+    + "\uFFE6<>\u20A9;" //  from FULLWIDTH WON SIGN
+    + "\u2502<>\uFFE8;" //  to HALFWIDTH FORMS LIGHT VERTICAL
+    + "\u2190<>\uFFE9;" //  to HALFWIDTH LEFTWARDS ARROW
+    + "\u2191<>\uFFEA;" //  to HALFWIDTH UPWARDS ARROW
+    + "\u2192<>\uFFEB;" //  to HALFWIDTH RIGHTWARDS ARROW
+    + "\u2193<>\uFFEC;" //  to HALFWIDTH DOWNWARDS ARROW
+    + "\u25A0<>\uFFED;" //  to HALFWIDTH BLACK SQUARE
+    + "\u25CB<>\uFFEE;" //  to HALFWIDTH WHITE CIRCLE
+
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Han_Pinyin.java b/src/com/ibm/text/resources/TransliterationRule_Han_Pinyin.java
new file mode 100755
index 0000000..d41bb9b
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Han_Pinyin.java
@@ -0,0 +1,20427 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Han_Pinyin.java,v $ 
+ * $Date: 2000/03/10 04:07:29 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+import java.util.ListResourceBundle;
+public class TransliterationRule_Han_Pinyin extends ListResourceBundle {
+ public Object[][] getContents() {
+  return new Object[][] {
+   {"Rule", getRules()}
+  };
+ }
+
+ private String[] getRules() {
+	String[] s1 = getString1();
+	String[] s2 = getString2();
+	String[] s3 = getString3();
+
+	String[] result = new String[s1.length + s2.length + s3.length];
+	System.arraycopy(s1, 0, result, 0, s1.length);
+	System.arraycopy(s2, 0, result, s1.length, s2.length);
+	System.arraycopy(s3, 0, result, s1.length + s2.length, s3.length);
+	return result;
+ }
+
+  private String[] getString1() {
+	return new String[] {
+
+    "A4=\u00C0;",
+    "A2=\u00C1;",
+    "E4=\u00C8;",
+    "E2=\u00C9;",
+    "a4=\u00E0;",
+    "a2=\u00E1;",
+    "e4=\u00E8;",
+    "e2=\u00E9;",
+    "i4=\u00EC;",
+    "i2=\u00ED;",
+    "o4=\u00F2;",
+    "o2=\u00F3;",
+    "u4=\u00F9;",
+    "u2=\u00FA;",
+    "uu=\u00FC;",
+    "a1=\u0101;",
+    "a3=\u0103;",
+    "e1=\u0113;",
+    "e3=\u0115;",
+    "i1=\u012B;",
+    "i3=\u012D;",
+    "o1=\u014D;",
+    "o3=\u014F;",
+    "u1=\u016B;",
+    "u3=\u016D;",
+    "uu2=\u01D8;",
+    "uu3=\u01DA;",
+    "uu4=\u01DC;",
+    "4=\u0300;",
+    "2=\u0301;",
+
+    "\u4E00>Y{i1};",
+	"\u4E01>Ding;",
+	"\u4E02>Ka{o3};",
+	"\u4E03>Qi;",
+	"\u4E04>Sh{a4}ng;",
+	"\u4E05>Xi{a4};",
+	"\u4E07>M{o4};",
+	"\u4E08>Zh{a4}ng;",
+	"\u4E09>San;",
+	"\u4E0A>Sh{a4}ng;",
+	"\u4E0B>Xi{a4};",
+	"\u4E0C>Ji;",
+	"\u4E0D>B{u4};",
+	"\u4E0E>Y{u3};",
+	"\u4E0F>Mi{a3}n;",
+	"\u4E10>Ga{i4};",
+	"\u4E11>Cho{u3};",
+	"\u4E12>Cho{u3};",
+	"\u4E13>Zhuan;",
+	"\u4E14>Qi{e3};",
+	"\u4E15>Pi;",
+	"\u4E16>Sh{i4};",
+	"\u4E17>Sh{i4};",
+	"\u4E18>Qiu;",
+	"\u4E19>B{i3}ng;",
+	"\u4E1A>Y{e4};",
+	"\u4E1B>C{o2}ng;",
+	"\u4E1C>Dong;",
+	"\u4E1D>Si;",
+	"\u4E1E>Ch{e2}ng;",
+	"\u4E1F>Diu;",
+	"\u4E20>Qiu;",
+	"\u4E21>Li{a3}ng;",
+	"\u4E22>Diu;",
+	"\u4E23>Yo{u3};",
+	"\u4E24>Li{a3}ng;",
+	"\u4E25>Y{a2}n;",
+	"\u4E26>B{i4}ng;",
+	"\u4E27>Sang;",
+	"\u4E28>G{u3}n;",
+	"\u4E29>Jiu;",
+	"\u4E2A>G{e4};",
+	"\u4E2B>Ya;",
+	"\u4E2C>Qi{a2}ng;",
+	"\u4E2D>Zhong;",
+	"\u4E2E>J{i3};",
+	"\u4E2F>Ji{e4};",
+	"\u4E30>Feng;",
+	"\u4E31>Gu{a4}n;",
+	"\u4E32>Chu{a4}n;",
+	"\u4E33>Ch{a3}n;",
+	"\u4E34>L{i2}n;",
+	"\u4E35>Zhu{o3};",
+	"\u4E36>Zh{u3};",
+	"\u4E38>W{a2}n;",
+	"\u4E39>Dan;",
+	"\u4E3A>We{i4};",
+	"\u4E3B>Zh{u3};",
+	"\u4E3C>J{i3}ng;",
+	"\u4E3D>L{i4};",
+	"\u4E3E>J{u3};",
+	"\u4E3F>Pi{e3};",
+	"\u4E40>F{u2};",
+	"\u4E41>Y{i2};",
+	"\u4E42>Y{i4};",
+	"\u4E43>Na{i3};",
+	"\u4E45>Ji{u3};",
+	"\u4E46>Ji{u3};",
+	"\u4E47>Zh{e2};",
+	"\u4E48>Yao;",
+	"\u4E49>Y{i4};",
+	"\u4E4B>Zhi;",
+	"\u4E4C>Wu;",
+	"\u4E4D>Zh{a4};",
+	"\u4E4E>Hu;",
+	"\u4E4F>F{a2};",
+	"\u4E50>L{e4};",
+	"\u4E51>Zh{o4}ng;",
+	"\u4E52>Ping;",
+	"\u4E53>P{a1}ng;",
+	"\u4E54>Qia{o2};",
+	"\u4E55>H{u3};",
+	"\u4E56>Guai;",
+	"\u4E57>Ch{e2}ng;",
+	"\u4E58>Ch{e2}ng;",
+	"\u4E59>Y{i3};",
+	"\u4E5A>Y{i3}n;",
+	"\u4E5C>Mie;",
+	"\u4E5D>Ji{u3};",
+	"\u4E5E>Q{i3};",
+	"\u4E5F>Y{e3};",
+	"\u4E60>X{i2};",
+	"\u4E61>Xiang;",
+	"\u4E62>Ga{i4};",
+	"\u4E63>Diu;",
+	"\u4E66>Shu;",
+	"\u4E68>Sh{i3};",
+	"\u4E69>Ji;",
+	"\u4E6A>Nang;",
+	"\u4E6B>Jia;",
+	"\u4E6D>Sh{i2};",
+	"\u4E70>Ma{i3};",
+	"\u4E71>Lu{a4}n;",
+	"\u4E73>R{u3};",
+	"\u4E74>Xu{e2};",
+	"\u4E75>Y{a3}n;",
+	"\u4E76>F{u3};",
+	"\u4E77>Sha;",
+	"\u4E78>N{a3};",
+	"\u4E79>Gan;",
+	"\u4E7E>Gan;",
+	"\u4E7F>Ch{i4};",
+	"\u4E80>Gui;",
+	"\u4E81>Gan;",
+	"\u4E82>Lu{a4}n;",
+	"\u4E83>L{i2}n;",
+	"\u4E84>Y{i4};",
+	"\u4E85>Ju{e2};",
+	"\u4E86>Lia{o3};",
+	"\u4E88>Y{u2};",
+	"\u4E89>Zheng;",
+	"\u4E8A>Sh{i4};",
+	"\u4E8B>Sh{i4};",
+	"\u4E8C>{E4}r;",
+	"\u4E8D>Ch{u4};",
+	"\u4E8E>Y{u2};",
+	"\u4E8F>Y{u2};",
+	"\u4E90>Y{u2};",
+	"\u4E91>Y{u2}n;",
+	"\u4E92>H{u4};",
+	"\u4E93>Q{i2};",
+	"\u4E94>W{u3};",
+	"\u4E95>J{i3}ng;",
+	"\u4E96>S{i4};",
+	"\u4E97>Su{i4};",
+	"\u4E98>G{e4}n;",
+	"\u4E99>G{e4}n;",
+	"\u4E9A>Y{a4};",
+	"\u4E9B>Xie;",
+	"\u4E9C>Y{a4};",
+	"\u4E9D>Q{i2};",
+	"\u4E9E>Y{a4};",
+	"\u4E9F>J{i2};",
+	"\u4EA0>To{u2};",
+	"\u4EA1>W{a2}ng;",
+	"\u4EA2>K{a4}ng;",
+	"\u4EA3>T{a4};",
+	"\u4EA4>Jiao;",
+	"\u4EA5>Ha{i4};",
+	"\u4EA6>Y{i4};",
+	"\u4EA7>Ch{a3}n;",
+	"\u4EA8>Heng;",
+	"\u4EA9>M{u3};",
+	"\u4EAB>Xi{a3}ng;",
+	"\u4EAC>Jing;",
+	"\u4EAD>T{i2}ng;",
+	"\u4EAE>Li{a4}ng;",
+	"\u4EAF>Xi{a3}ng;",
+	"\u4EB0>Jing;",
+	"\u4EB1>Y{e4};",
+	"\u4EB2>Qin;",
+	"\u4EB3>B{o2};",
+	"\u4EB4>Yo{u4};",
+	"\u4EB5>Xi{e4};",
+	"\u4EB6>D{a3}n;",
+	"\u4EB7>Li{a2}n;",
+	"\u4EB8>Du{o3};",
+	"\u4EB9>We{i3};",
+	"\u4EBA>R{e2}n;",
+	"\u4EBB>R{e2}n;",
+	"\u4EBC>J{i2};",
+	"\u4EBE>W{a2}ng;",
+	"\u4EBF>Y{i4};",
+	"\u4EC0>Sh{i2};",
+	"\u4EC1>R{e2}n;",
+	"\u4EC2>L{e4};",
+	"\u4EC3>Ding;",
+	"\u4EC4>Z{e4};",
+	"\u4EC5>J{i3}n;",
+	"\u4EC6>Pu;",
+	"\u4EC7>Cho{u2};",
+	"\u4EC8>Ba;",
+	"\u4EC9>Zh{a3}ng;",
+	"\u4ECA>Jin;",
+	"\u4ECB>Ji{e4};",
+	"\u4ECC>Bing;",
+	"\u4ECD>R{e2}ng;",
+	"\u4ECE>C{o2}ng;",
+	"\u4ECF>F{o2};",
+	"\u4ED0>S{a3}n;",
+	"\u4ED1>L{u2}n;",
+	"\u4ED3>Cang;",
+	"\u4ED4>Z{i3};",
+	"\u4ED5>Sh{i4};",
+	"\u4ED6>Ta;",
+	"\u4ED7>Zh{a4}ng;",
+	"\u4ED8>F{u4};",
+	"\u4ED9>Xian;",
+	"\u4EDA>Xian;",
+	"\u4EDB>Tuo;",
+	"\u4EDC>H{o2}ng;",
+	"\u4EDD>T{o2}ng;",
+	"\u4EDE>R{e4}n;",
+	"\u4EDF>Qian;",
+	"\u4EE0>G{a2}n;",
+	"\u4EE1>Y{i4};",
+	"\u4EE2>D{i2};",
+	"\u4EE3>Da{i4};",
+	"\u4EE4>L{i4}ng;",
+	"\u4EE5>Y{i3};",
+	"\u4EE6>Cha{o4};",
+	"\u4EE7>Ch{a2}ng;",
+	"\u4EE8>Sa;",
+	"\u4EEA>Y{i2};",
+	"\u4EEB>M{u4};",
+	"\u4EEC>M{e1}n;",
+	"\u4EED>R{e4}n;",
+	"\u4EEE>Ji{a3};",
+	"\u4EEF>Cha{o4};",
+	"\u4EF0>Y{a3}ng;",
+	"\u4EF1>Qi{a2}n;",
+	"\u4EF2>Zh{o4}ng;",
+	"\u4EF3>P{i3};",
+	"\u4EF4>W{a4}n;",
+	"\u4EF5>W{u3};",
+	"\u4EF6>Ji{a4}n;",
+	"\u4EF7>Ji{e4};",
+	"\u4EF8>Ya{o3};",
+	"\u4EF9>Feng;",
+	"\u4EFA>Cang;",
+	"\u4EFB>R{e4}n;",
+	"\u4EFC>W{a2}ng;",
+	"\u4EFD>F{e4}n;",
+	"\u4EFE>Di;",
+	"\u4EFF>F{a3}ng;",
+	"\u4F00>Zhong;",
+	"\u4F01>Q{i3};",
+	"\u4F02>Pe{i4};",
+	"\u4F03>Y{u2};",
+	"\u4F04>Dia{o4};",
+	"\u4F05>D{u4}n;",
+	"\u4F06>W{e4}n;",
+	"\u4F07>Y{i4};",
+	"\u4F08>X{i3}n;",
+	"\u4F09>K{a4}ng;",
+	"\u4F0A>Yi;",
+	"\u4F0B>J{i2};",
+	"\u4F0C>A{i4};",
+	"\u4F0D>W{u3};",
+	"\u4F0E>J{i4};",
+	"\u4F0F>F{u2};",
+	"\u4F10>F{a2};",
+	"\u4F11>Xiu;",
+	"\u4F12>J{i4}n;",
+	"\u4F13>Bei;",
+	"\u4F14>D{a3}n;",
+	"\u4F15>Fu;",
+	"\u4F16>T{a3}ng;",
+	"\u4F17>Zh{o4}ng;",
+	"\u4F18>You;",
+	"\u4F19>Hu{o3};",
+	"\u4F1A>Hu{i4};",
+	"\u4F1B>Y{u3};",
+	"\u4F1C>Cu{i4};",
+	"\u4F1D>Chu{a2}n;",
+	"\u4F1E>S{a3}n;",
+	"\u4F1F>We{i3};",
+	"\u4F20>Chu{a2}n;",
+	"\u4F21>Che;",
+	"\u4F22>Y{a2};",
+	"\u4F23>Xi{a4}n;",
+	"\u4F24>Shang;",
+	"\u4F25>Chang;",
+	"\u4F26>L{u2}n;",
+	"\u4F27>Cang;",
+	"\u4F28>X{u4}n;",
+	"\u4F29>X{i4}n;",
+	"\u4F2A>We{i3};",
+	"\u4F2B>Zh{u4};",
+	"\u4F2D>Xu{a2}n;",
+	"\u4F2E>N{u2};",
+	"\u4F2F>B{o2};",
+	"\u4F30>Gu;",
+	"\u4F31>N{i3};",
+	"\u4F32>N{i3};",
+	"\u4F33>Xi{e4};",
+	"\u4F34>B{a4}n;",
+	"\u4F35>X{u4};",
+	"\u4F36>L{i2}ng;",
+	"\u4F37>Zho{u4};",
+	"\u4F38>Shen;",
+	"\u4F39>Qu;",
+	"\u4F3A>S{i4};",
+	"\u4F3B>Beng;",
+	"\u4F3C>S{i4};",
+	"\u4F3D>Jia;",
+	"\u4F3E>Pi;",
+	"\u4F3F>Y{i4};",
+	"\u4F40>S{i4};",
+	"\u4F41>A{i3};",
+	"\u4F42>Zheng;",
+	"\u4F43>Di{a4}n;",
+	"\u4F44>H{a2}n;",
+	"\u4F45>Ma{i4};",
+	"\u4F46>D{a4}n;",
+	"\u4F47>Zh{u4};",
+	"\u4F48>B{u4};",
+	"\u4F49>Qu;",
+	"\u4F4A>B{i3};",
+	"\u4F4B>Sha{o4};",
+	"\u4F4C>C{i3};",
+	"\u4F4D>We{i4};",
+	"\u4F4E>Di;",
+	"\u4F4F>Zh{u4};",
+	"\u4F50>Zu{o3};",
+	"\u4F51>Yo{u4};",
+	"\u4F52>Yang;",
+	"\u4F53>T{i3};",
+	"\u4F54>Zh{a4}n;",
+	"\u4F55>H{e2};",
+	"\u4F56>B{i4};",
+	"\u4F57>Tuo;",
+	"\u4F58>Sh{e2};",
+	"\u4F59>Y{u2};",
+	"\u4F5A>Y{i4};",
+	"\u4F5B>F{o2};",
+	"\u4F5C>Zu{o4};",
+	"\u4F5D>Ko{u4};",
+	"\u4F5E>N{i4}ng;",
+	"\u4F5F>T{o2}ng;",
+	"\u4F60>N{i3};",
+	"\u4F61>Xuan;",
+	"\u4F62>Q{u2};",
+	"\u4F63>Y{o4}ng;",
+	"\u4F64>W{a3};",
+	"\u4F65>Qian;",
+	"\u4F67>K{a3};",
+	"\u4F69>Pe{i4};",
+	"\u4F6A>Hua{i2};",
+	"\u4F6B>H{e4};",
+	"\u4F6C>La{o3};",
+	"\u4F6D>Xi{a2}ng;",
+	"\u4F6E>G{e2};",
+	"\u4F6F>Y{a2}ng;",
+	"\u4F70>Ba{i3};",
+	"\u4F71>F{a3};",
+	"\u4F72>M{i2}ng;",
+	"\u4F73>Ji{a1};",
+	"\u4F74>{E4}r;",
+	"\u4F75>B{i4}ng;",
+	"\u4F76>J{i2};",
+	"\u4F77>H{e3}n;",
+	"\u4F78>Hu{o2};",
+	"\u4F79>Gu{i3};",
+	"\u4F7A>Qu{a2}n;",
+	"\u4F7B>Tiao;",
+	"\u4F7C>Jia{o3};",
+	"\u4F7D>C{i4};",
+	"\u4F7E>Y{i4};",
+	"\u4F7F>Sh{i3};",
+	"\u4F80>X{i2}ng;",
+	"\u4F81>Shen;",
+	"\u4F82>Tuo;",
+	"\u4F83>K{a3}n;",
+	"\u4F84>Zh{i2};",
+	"\u4F85>Gai;",
+	"\u4F86>La{i2};",
+	"\u4F87>Y{i2};",
+	"\u4F88>Ch{i3};",
+	"\u4F89>Kua;",
+	"\u4F8A>Guang;",
+	"\u4F8B>L{i4};",
+	"\u4F8C>Yin;",
+	"\u4F8D>Sh{i4};",
+	"\u4F8E>M{i3};",
+	"\u4F8F>Zhu;",
+	"\u4F90>X{u4};",
+	"\u4F91>Yo{u4};",
+	"\u4F92>An;",
+	"\u4F93>L{u4};",
+	"\u4F94>Mo{u2};",
+	"\u4F95>{E2}r;",
+	"\u4F96>L{u2}n;",
+	"\u4F97>T{o2}ng;",
+	"\u4F98>Ch{a4};",
+	"\u4F99>Ch{i4};",
+	"\u4F9A>X{u4}n;",
+	"\u4F9B>Gong;",
+	"\u4F9C>Zhou;",
+	"\u4F9D>Yi;",
+	"\u4F9E>R{u3};",
+	"\u4F9F>Ji{a4}n;",
+	"\u4FA0>Xi{a2};",
+	"\u4FA1>Ji{a4};",
+	"\u4FA2>Za{i4};",
+	"\u4FA3>L{uu3};",
+	"\u4FA5>Jia{o3};",
+	"\u4FA6>Zhen;",
+	"\u4FA7>C{e4};",
+	"\u4FA8>Qia{o2};",
+	"\u4FA9>Kua{i4};",
+	"\u4FAA>Cha{i2};",
+	"\u4FAB>N{i4}ng;",
+	"\u4FAC>N{o2}ng;",
+	"\u4FAD>J{i3}n;",
+	"\u4FAE>W{u3};",
+	"\u4FAF>Ho{u2};",
+	"\u4FB0>Ji{o3}ng;",
+	"\u4FB1>Ch{e3}ng;",
+	"\u4FB2>Zh{e4}n;",
+	"\u4FB3>Zu{o4};",
+	"\u4FB4>Cho{u3};",
+	"\u4FB5>Qin;",
+	"\u4FB6>L{uu3};",
+	"\u4FB7>J{u2};",
+	"\u4FB8>Sh{u4};",
+	"\u4FB9>T{i3}ng;",
+	"\u4FBA>Sh{e4}n;",
+	"\u4FBB>Tuo;",
+	"\u4FBC>B{o2};",
+	"\u4FBD>N{a2}n;",
+	"\u4FBE>Hao;",
+	"\u4FBF>Bi{a4}n;",
+	"\u4FC0>Tu{i3};",
+	"\u4FC1>Y{u3};",
+	"\u4FC2>X{i4};",
+	"\u4FC3>C{u4};",
+	"\u4FC4>{E2};",
+	"\u4FC5>Qi{u2};",
+	"\u4FC6>X{u2};",
+	"\u4FC7>Ku{a3}ng;",
+	"\u4FC8>K{u4};",
+	"\u4FC9>W{u4};",
+	"\u4FCA>J{u4}n;",
+	"\u4FCB>Y{i4};",
+	"\u4FCC>F{u3};",
+	"\u4FCD>L{a2}ng;",
+	"\u4FCE>Z{u3};",
+	"\u4FCF>Qia{o4};",
+	"\u4FD0>L{i4};",
+	"\u4FD1>Y{o3}ng;",
+	"\u4FD2>H{u4}n;",
+	"\u4FD3>J{i4}ng;",
+	"\u4FD4>Xi{a4}n;",
+	"\u4FD5>S{a4}n;",
+	"\u4FD6>Pa{i3};",
+	"\u4FD7>S{u2};",
+	"\u4FD8>F{u2};",
+	"\u4FD9>Xi;",
+	"\u4FDA>L{i3};",
+	"\u4FDB>F{u3};",
+	"\u4FDC>Ping;",
+	"\u4FDD>Ba{o3};",
+	"\u4FDE>Y{u2};",
+	"\u4FDF>S{i4};",
+	"\u4FE0>Xi{a2};",
+	"\u4FE1>X{i4}n;",
+	"\u4FE2>Xiu;",
+	"\u4FE3>Y{u3};",
+	"\u4FE4>T{i4};",
+	"\u4FE5>Che;",
+	"\u4FE6>Cho{u2};",
+	"\u4FE8>Y{a3}n;",
+	"\u4FE9>Li{a3};",
+	"\u4FEA>L{i4};",
+	"\u4FEB>La{i2};",
+	"\u4FED>Ji{a3}n;",
+	"\u4FEE>Xiu;",
+	"\u4FEF>F{u3};",
+	"\u4FF0>H{e4};",
+	"\u4FF1>J{u4};",
+	"\u4FF2>Xia{o4};",
+	"\u4FF3>Pa{i2};",
+	"\u4FF4>Ji{a4}n;",
+	"\u4FF5>Bia{o4};",
+	"\u4FF6>Ch{u4};",
+	"\u4FF7>Fe{i4};",
+	"\u4FF8>F{e4}ng;",
+	"\u4FF9>Y{a4};",
+	"\u4FFA>{a3}n;",
+	"\u4FFB>Be{i4};",
+	"\u4FFC>Y{u4};",
+	"\u4FFD>Xin;",
+	"\u4FFE>B{i3};",
+	"\u4FFF>Ji{a4}n;",
+	"\u5000>Chang;",
+	"\u5001>Ch{i2};",
+	"\u5002>B{i4}ng;",
+	"\u5003>Z{a2}n;",
+	"\u5004>Ya{o2};",
+	"\u5005>Cu{i4};",
+	"\u5006>Li{a3};",
+	"\u5007>W{a3}n;",
+	"\u5008>La{i2};",
+	"\u5009>Cang;",
+	"\u500A>Z{o4}ng;",
+	"\u500B>G{e4};",
+	"\u500C>Guan;",
+	"\u500D>Be{i4};",
+	"\u500E>Tian;",
+	"\u500F>Shu;",
+	"\u5010>Shu;",
+	"\u5011>M{e1}n;",
+	"\u5012>Da{o3};",
+	"\u5013>T{a2}n;",
+	"\u5014>Ju{e2};",
+	"\u5015>Chu{i2};",
+	"\u5016>X{i4}ng;",
+	"\u5017>P{e2}ng;",
+	"\u5018>T{a3}ng;",
+	"\u5019>Ho{u4};",
+	"\u501A>Y{i3};",
+	"\u501B>Qi;",
+	"\u501C>T{i4};",
+	"\u501D>G{a4}n;",
+	"\u501E>J{i4}ng;",
+	"\u501F>Ji{e4};",
+	"\u5020>Sui;",
+	"\u5021>Ch{a4}ng;",
+	"\u5022>Ji{e2};",
+	"\u5023>F{a3}ng;",
+	"\u5024>Zh{i2};",
+	"\u5025>Kong;",
+	"\u5026>Ju{a4}n;",
+	"\u5027>Zong;",
+	"\u5028>J{u4};",
+	"\u5029>Qi{a4}n;",
+	"\u502A>N{i2};",
+	"\u502B>L{u2}n;",
+	"\u502C>Zhuo;",
+	"\u502D>Wei;",
+	"\u502E>Lu{o3};",
+	"\u502F>Song;",
+	"\u5030>L{e2}ng;",
+	"\u5031>H{u4}n;",
+	"\u5032>Dong;",
+	"\u5033>Z{i4};",
+	"\u5034>B{e4}n;",
+	"\u5035>W{u3};",
+	"\u5036>J{u4};",
+	"\u5037>Na{i4};",
+	"\u5038>Ca{i3};",
+	"\u5039>Ji{a3}n;",
+	"\u503A>Zha{i4};",
+	"\u503B>Ye;",
+	"\u503C>Zh{i2};",
+	"\u503D>Sh{a4};",
+	"\u503E>Qing;",
+	"\u5040>Ying;",
+	"\u5041>Cheng;",
+	"\u5042>Jian;",
+	"\u5043>Y{a3}n;",
+	"\u5044>Nu{a4}n;",
+	"\u5045>Zh{o4}ng;",
+	"\u5046>Ch{u3}n;",
+	"\u5047>Ji{a3};",
+	"\u5048>Ji{e2};",
+	"\u5049>We{i3};",
+	"\u504A>Y{u3};",
+	"\u504B>B{i3}ng;",
+	"\u504C>Ru{o4};",
+	"\u504D>T{i2};",
+	"\u504E>Wei;",
+	"\u504F>Pian;",
+	"\u5050>Y{a4}n;",
+	"\u5051>Feng;",
+	"\u5052>T{a3}ng;",
+	"\u5053>W{o4};",
+	"\u5054>{E4};",
+	"\u5055>Xi{e2};",
+	"\u5056>Ch{e3};",
+	"\u5057>Sh{e3}ng;",
+	"\u5058>K{a3}n;",
+	"\u5059>D{i4};",
+	"\u505A>Zu{o4};",
+	"\u505B>Cha;",
+	"\u505C>T{i2}ng;",
+	"\u505D>Be{i4};",
+	"\u505E>Y{e4};",
+	"\u505F>Hu{a2}ng;",
+	"\u5060>Ya{o3};",
+	"\u5061>Zh{a4}n;",
+	"\u5062>Cho{u3};",
+	"\u5063>Yan;",
+	"\u5064>Yo{u3};",
+	"\u5065>Ji{a4}n;",
+	"\u5066>Xu;",
+	"\u5067>Zha;",
+	"\u5068>Ci;",
+	"\u5069>F{u4};",
+	"\u506A>Bi;",
+	"\u506B>Zh{i4};",
+	"\u506C>Z{o3}ng;",
+	"\u506D>Mi{a3}n;",
+	"\u506E>J{i2};",
+	"\u506F>Y{i3};",
+	"\u5070>Xi{e4};",
+	"\u5071>X{u2}n;",
+	"\u5072>Si;",
+	"\u5073>Duan;",
+	"\u5074>C{e4};",
+	"\u5075>Zhen;",
+	"\u5076>O{u3};",
+	"\u5077>Tou;",
+	"\u5078>Tou;",
+	"\u5079>Be{i4};",
+	"\u507A>Z{a2};",
+	"\u507B>L{uu3};",
+	"\u507C>Ji{e2};",
+	"\u507D>We{i3};",
+	"\u507E>F{e4}n;",
+	"\u507F>Ch{a2}ng;",
+	"\u5080>Gui;",
+	"\u5081>So{u3};",
+	"\u5082>Zh{i4};",
+	"\u5083>S{u4};",
+	"\u5084>Xia;",
+	"\u5085>F{u4};",
+	"\u5086>Yu{a4}n;",
+	"\u5087>R{o3}ng;",
+	"\u5088>L{i4};",
+	"\u5089>R{u4};",
+	"\u508A>Y{u3}n;",
+	"\u508B>Go{u4};",
+	"\u508C>M{a4};",
+	"\u508D>B{a4}ng;",
+	"\u508E>Dian;",
+	"\u508F>T{a2}ng;",
+	"\u5090>Ha{o4};",
+	"\u5091>Ji{e2};",
+	"\u5092>Xi;",
+	"\u5093>Sh{a4}n;",
+	"\u5094>Qi{a4}n;",
+	"\u5095>Ju{e2};",
+	"\u5096>Cang;",
+	"\u5097>Ch{u4};",
+	"\u5098>S{a3}n;",
+	"\u5099>Be{i4};",
+	"\u509A>Xia{o4};",
+	"\u509B>Y{o3}ng;",
+	"\u509C>Ya{o2};",
+	"\u509D>T{a4}n;",
+	"\u509E>Suo;",
+	"\u509F>Y{a3}ng;",
+	"\u50A0>Fa;",
+	"\u50A1>B{i4}ng;",
+	"\u50A2>Jia;",
+	"\u50A3>Da{i3};",
+	"\u50A4>Za{i4};",
+	"\u50A5>T{a3}ng;",
+	"\u50A7>B{i4}n;",
+	"\u50A8>Ch{u3};",
+	"\u50A9>Nu{o2};",
+	"\u50AA>Can;",
+	"\u50AB>Le{i3};",
+	"\u50AC>Cui;",
+	"\u50AD>Yong;",
+	"\u50AE>Zao;",
+	"\u50AF>Z{o3}ng;",
+	"\u50B0>P{e2}ng;",
+	"\u50B1>S{o3}ng;",
+	"\u50B2>A{o4};",
+	"\u50B3>Chu{a2}n;",
+	"\u50B4>Y{u3};",
+	"\u50B5>Zha{i4};",
+	"\u50B6>Co{u4};",
+	"\u50B7>Shang;",
+	"\u50B8>Qi{a3}ng;",
+	"\u50B9>J{i4}ng;",
+	"\u50BA>Ch{i4};",
+	"\u50BB>Sh{a3};",
+	"\u50BC>H{a4}n;",
+	"\u50BD>Zhang;",
+	"\u50BE>Qing;",
+	"\u50BF>Y{a4}n;",
+	"\u50C0>D{i4};",
+	"\u50C1>Xi;",
+	"\u50C2>L{uu3};",
+	"\u50C3>Be{i4};",
+	"\u50C4>Pia{o4};",
+	"\u50C5>J{i3}n;",
+	"\u50C6>Li{a2}n;",
+	"\u50C7>L{u4};",
+	"\u50C8>M{a4}n;",
+	"\u50C9>Qian;",
+	"\u50CA>Xian;",
+	"\u50CB>T{a4}n;",
+	"\u50CC>Y{i2}ng;",
+	"\u50CD>D{o4}ng;",
+	"\u50CE>Zhu{a4}n;",
+	"\u50CF>Xi{a4}ng;",
+	"\u50D0>Sh{a4}n;",
+	"\u50D1>Qia{o2};",
+	"\u50D2>Ji{o3}ng;",
+	"\u50D3>Tu{i3};",
+	"\u50D4>Z{u3}n;",
+	"\u50D5>P{u2};",
+	"\u50D6>Xi;",
+	"\u50D7>La{o2};",
+	"\u50D8>Ch{a3}ng;",
+	"\u50D9>Guang;",
+	"\u50DA>Lia{o2};",
+	"\u50DB>Qi;",
+	"\u50DC>D{e4}ng;",
+	"\u50DD>Ch{a2}n;",
+	"\u50DE>We{i3};",
+	"\u50DF>Ji;",
+	"\u50E0>Fan;",
+	"\u50E1>Hu{i4};",
+	"\u50E2>Chu{a3}n;",
+	"\u50E3>Ji{a4}n;",
+	"\u50E4>D{a4}n;",
+	"\u50E5>Jia{o3};",
+	"\u50E6>Ji{u4};",
+	"\u50E7>Seng;",
+	"\u50E8>F{e4}n;",
+	"\u50E9>Xi{a4}n;",
+	"\u50EA>Ju{e2};",
+	"\u50EB>{E4};",
+	"\u50EC>Jiao;",
+	"\u50ED>Ji{a4}n;",
+	"\u50EE>T{o2}ng;",
+	"\u50EF>L{i3}n;",
+	"\u50F0>B{o2};",
+	"\u50F1>G{u4};",
+	"\u50F3>S{u4};",
+	"\u50F4>Xi{a4}n;",
+	"\u50F5>Jiang;",
+	"\u50F6>M{i3}n;",
+	"\u50F7>Y{e4};",
+	"\u50F8>J{i4}n;",
+	"\u50F9>Ji{a4};",
+	"\u50FA>Qia{o4};",
+	"\u50FB>P{i4};",
+	"\u50FC>Feng;",
+	"\u50FD>Zho{u4};",
+	"\u50FE>A{i4};",
+	"\u50FF>Sa{i4};",
+	"\u5100>Y{i2};",
+	"\u5101>J{u4}n;",
+	"\u5102>N{o2}ng;",
+	"\u5103>Ch{a2}n;",
+	"\u5104>Y{i4};",
+	"\u5105>Dang;",
+	"\u5106>J{i3}ng;",
+	"\u5107>Xuan;",
+	"\u5108>Kua{i4};",
+	"\u5109>Ji{a3}n;",
+	"\u510A>Ch{u4};",
+	"\u510B>Dan;",
+	"\u510C>Jia{o3};",
+	"\u510D>Sh{a3};",
+	"\u510E>Za{i4};",
+	"\u5110>B{i4}n;",
+	"\u5111>{A4}n;",
+	"\u5112>R{u2};",
+	"\u5113>Ta{i2};",
+	"\u5114>Cho{u2};",
+	"\u5115>Cha{i2};",
+	"\u5116>L{a2}n;",
+	"\u5117>N{i3};",
+	"\u5118>J{i3}n;",
+	"\u5119>Qi{a4}n;",
+	"\u511A>M{e2}ng;",
+	"\u511B>W{u3};",
+	"\u511C>N{i2}ng;",
+	"\u511D>Qi{o2}ng;",
+	"\u511E>N{i3};",
+	"\u511F>Ch{a2}ng;",
+	"\u5120>Li{e4};",
+	"\u5121>Le{i3};",
+	"\u5122>L{uu3};",
+	"\u5123>Ku{a4}ng;",
+	"\u5124>Ba{o4};",
+	"\u5125>D{u2};",
+	"\u5126>Biao;",
+	"\u5127>Z{a3}n;",
+	"\u5128>Zh{i2};",
+	"\u5129>S{i4};",
+	"\u512A>You;",
+	"\u512B>Ha{o2};",
+	"\u512C>Ch{e4}n;",
+	"\u512D>Ch{e4}n;",
+	"\u512E>L{i4};",
+	"\u512F>T{e2}ng;",
+	"\u5130>We{i3};",
+	"\u5131>L{o3}ng;",
+	"\u5132>Ch{u3};",
+	"\u5133>Ch{a4}n;",
+	"\u5134>R{a2}ng;",
+	"\u5135>Shu;",
+	"\u5136>Hu{i4};",
+	"\u5137>L{i4};",
+	"\u5138>Lu{o2};",
+	"\u5139>Z{a3}n;",
+	"\u513A>Nu{o2};",
+	"\u513B>T{a3}ng;",
+	"\u513C>Y{a3}n;",
+	"\u513D>Le{i3};",
+	"\u513E>N{a4}ng;",
+	"\u513F>{E2}r;",
+	"\u5140>W{u4};",
+	"\u5141>Y{u3}n;",
+	"\u5142>Zan;",
+	"\u5143>Yu{a2}n;",
+	"\u5144>Xiong;",
+	"\u5145>Chong;",
+	"\u5146>Zha{o4};",
+	"\u5147>Xiong;",
+	"\u5148>Xian;",
+	"\u5149>Guang;",
+	"\u514A>Du{i4};",
+	"\u514B>K{e4};",
+	"\u514C>Du{i4};",
+	"\u514D>Mi{a3}n;",
+	"\u514E>T{u4};",
+	"\u514F>Ch{a2}ng;",
+	"\u5150>{E2}r;",
+	"\u5151>Du{i4};",
+	"\u5152>{E2}r;",
+	"\u5153>Xin;",
+	"\u5154>T{u4};",
+	"\u5155>S{i4};",
+	"\u5156>Y{a3}n;",
+	"\u5157>Y{a3}n;",
+	"\u5158>Sh{i3};",
+	"\u5159>Shi2k{e4};",
+	"\u515A>D{a3}ng;",
+	"\u515B>Qian;",
+	"\u515C>Dou;",
+	"\u515D>Fen;",
+	"\u515E>Ma{o2};",
+	"\u515F>Shen;",
+	"\u5160>Dou;",
+	"\u5161>Bai3k{e4};",
+	"\u5162>Jing;",
+	"\u5163>L{i3};",
+	"\u5164>Hu{a2}ng;",
+	"\u5165>R{u4};",
+	"\u5166>W{a2}ng;",
+	"\u5167>Ne{i4};",
+	"\u5168>Qu{a2}n;",
+	"\u5169>Li{a3}ng;",
+	"\u516A>Y{u2};",
+	"\u516B>Ba;",
+	"\u516C>Gong;",
+	"\u516D>Li{u4};",
+	"\u516E>Xi;",
+	"\u5170>L{a2}n;",
+	"\u5171>G{o4}ng;",
+	"\u5172>Tian;",
+	"\u5173>Guan;",
+	"\u5174>Xing;",
+	"\u5175>Bing;",
+	"\u5176>Q{i2};",
+	"\u5177>J{u4};",
+	"\u5178>Di{a3}n;",
+	"\u5179>Zi;",
+	"\u517B>Y{a3}ng;",
+	"\u517C>Jian;",
+	"\u517D>Sho{u4};",
+	"\u517E>J{i4};",
+	"\u517F>Y{i4};",
+	"\u5180>J{i4};",
+	"\u5181>Ch{a3}n;",
+	"\u5182>Jiong;",
+	"\u5183>Mao;",
+	"\u5184>R{a3}n;",
+	"\u5185>Ne{i4};",
+	"\u5186>Yuan;",
+	"\u5187>Ma{o3};",
+	"\u5188>Gang;",
+	"\u5189>R{a3}n;",
+	"\u518A>C{e4};",
+	"\u518B>Jiong;",
+	"\u518C>C{e4};",
+	"\u518D>Za{i4};",
+	"\u518E>Gu{a3};",
+	"\u518F>Ji{o3}ng;",
+	"\u5190>Ma{o4};",
+	"\u5191>Zho{u4};",
+	"\u5192>Mo{u4};",
+	"\u5193>Go{u4};",
+	"\u5194>X{u3};",
+	"\u5195>Mi{a3}n;",
+	"\u5196>M{i4};",
+	"\u5197>R{o3}ng;",
+	"\u5198>Y{i2}n;",
+	"\u5199>Xi{e3};",
+	"\u519A>K{a3}n;",
+	"\u519B>Jun;",
+	"\u519C>N{o2}ng;",
+	"\u519D>Y{i2};",
+	"\u519E>M{i2};",
+	"\u519F>Sh{i4};",
+	"\u51A0>Guan;",
+	"\u51A1>M{e2}ng;",
+	"\u51A2>Zh{o3}ng;",
+	"\u51A3>J{u4};",
+	"\u51A4>Yuan;",
+	"\u51A5>M{i2}ng;",
+	"\u51A6>Ko{u4};",
+	"\u51A8>F{u4};",
+	"\u51A9>Xi{e3};",
+	"\u51AA>M{i4};",
+	"\u51AB>Bing;",
+	"\u51AC>Dong;",
+	"\u51AD>Ta{i2};",
+	"\u51AE>Gang;",
+	"\u51AF>F{e2}ng;",
+	"\u51B0>Bing;",
+	"\u51B1>H{u4};",
+	"\u51B2>Chong;",
+	"\u51B3>Ju{e2};",
+	"\u51B4>H{u4};",
+	"\u51B5>Ku{a4}ng;",
+	"\u51B6>Y{e3};",
+	"\u51B7>L{e3}ng;",
+	"\u51B8>P{a4}n;",
+	"\u51B9>F{u2};",
+	"\u51BA>M{i3}n;",
+	"\u51BB>D{o4}ng;",
+	"\u51BC>Xi{a3}n;",
+	"\u51BD>Li{e4};",
+	"\u51BE>Xi{a2};",
+	"\u51BF>Jian;",
+	"\u51C0>J{i4}ng;",
+	"\u51C1>Sh{u4};",
+	"\u51C2>Me{i3};",
+	"\u51C3>T{u2};",
+	"\u51C4>Qi;",
+	"\u51C5>G{u4};",
+	"\u51C6>Zh{u3}n;",
+	"\u51C7>S{o4}ng;",
+	"\u51C8>J{i4}ng;",
+	"\u51C9>Li{a2}ng;",
+	"\u51CA>Q{i4}ng;",
+	"\u51CB>Diao;",
+	"\u51CC>L{i2}ng;",
+	"\u51CD>D{o4}ng;",
+	"\u51CE>G{a4}n;",
+	"\u51CF>Ji{a3}n;",
+	"\u51D0>Yin;",
+	"\u51D1>Co{u4};",
+	"\u51D2>Y{i2};",
+	"\u51D3>L{i4};",
+	"\u51D4>Cang;",
+	"\u51D5>M{i3}ng;",
+	"\u51D6>Zhu{e3}n;",
+	"\u51D7>Cu{i2};",
+	"\u51D8>Si;",
+	"\u51D9>Du{o2};",
+	"\u51DA>J{i4}n;",
+	"\u51DB>L{i3}n;",
+	"\u51DC>L{i3}n;",
+	"\u51DD>N{i2}ng;",
+	"\u51DE>Xi;",
+	"\u51DF>D{u2};",
+	"\u51E0>Ji;",
+	"\u51E1>F{a2}n;",
+	"\u51E2>F{a2}n;",
+	"\u51E3>F{a2}n;",
+	"\u51E4>F{e4}ng;",
+	"\u51E5>Ju;",
+	"\u51E6>Ch{u3};",
+	"\u51E8>Feng;",
+	"\u51EB>F{u2};",
+	"\u51EC>Feng;",
+	"\u51ED>P{i2}ng;",
+	"\u51EE>Feng;",
+	"\u51EF>Ka{i3};",
+	"\u51F0>Hu{a2}ng;",
+	"\u51F1>Ka{i3};",
+	"\u51F2>Gan;",
+	"\u51F3>D{e4}ng;",
+	"\u51F4>P{i2}ng;",
+	"\u51F5>Qu;",
+	"\u51F6>Xiong;",
+	"\u51F7>Kua{i4};",
+	"\u51F8>Tu;",
+	"\u51F9>Ao;",
+	"\u51FA>Chu;",
+	"\u51FB>J{i2};",
+	"\u51FC>D{a4}ng;",
+	"\u51FD>H{a2}n;",
+	"\u51FE>H{a2}n;",
+	"\u51FF>Za{o2};",
+	"\u5200>Dao;",
+	"\u5201>Diao;",
+	"\u5202>Dao;",
+	"\u5203>R{e4}n;",
+	"\u5204>R{e4}n;",
+	"\u5205>Chuang;",
+	"\u5206>Fen;",
+	"\u5207>Qie;",
+	"\u5208>Y{i4};",
+	"\u5209>Ji;",
+	"\u520A>Kan;",
+	"\u520B>Qi{a4}n;",
+	"\u520C>C{u3}n;",
+	"\u520D>Ch{u2};",
+	"\u520E>W{e3}n;",
+	"\u520F>Ji;",
+	"\u5210>D{a3}n;",
+	"\u5211>X{i2}ng;",
+	"\u5212>Hu{a2};",
+	"\u5213>W{a2}n;",
+	"\u5214>Ju{e2};",
+	"\u5215>L{i2};",
+	"\u5216>Yu{e4};",
+	"\u5217>Li{e4};",
+	"\u5218>Li{u2};",
+	"\u5219>Z{e2};",
+	"\u521A>Gang;",
+	"\u521B>Chu{a4}ng;",
+	"\u521C>F{u2};",
+	"\u521D>Chu;",
+	"\u521E>Q{u4};",
+	"\u521F>Ju;",
+	"\u5220>Shan;",
+	"\u5221>M{i3}n;",
+	"\u5222>L{i2}ng;",
+	"\u5223>Zhong;",
+	"\u5224>P{a4}n;",
+	"\u5225>Bi{e2};",
+	"\u5226>Ji{e2};",
+	"\u5227>Ji{e2};",
+	"\u5228>Ba{o4};",
+	"\u5229>L{i4};",
+	"\u522A>Shan;",
+	"\u522B>Bi{e2};",
+	"\u522C>Ch{a3}n;",
+	"\u522D>J{i3}ng;",
+	"\u522E>Gua;",
+	"\u522F>Gen;",
+	"\u5230>Da{o4};",
+	"\u5231>Chu{a4}ng;",
+	"\u5232>Kui;",
+	"\u5233>Ku;",
+	"\u5234>Du{o4};",
+	"\u5235>{E4}r;",
+	"\u5236>Zh{i4};",
+	"\u5237>Shua;",
+	"\u5238>Qu{a4}n;",
+	"\u5239>Ch{a4};",
+	"\u523A>C{i4};",
+	"\u523B>K{e4};",
+	"\u523C>Ji{e2};",
+	"\u523D>Gu{i4};",
+	"\u523E>C{i4};",
+	"\u523F>Gu{i4};",
+	"\u5240>Ka{i3};",
+	"\u5241>Du{o4};",
+	"\u5242>J{i4};",
+	"\u5243>T{i4};",
+	"\u5244>J{i3}ng;",
+	"\u5245>Lo{u2};",
+	"\u5246>Gen;",
+	"\u5247>Z{e2};",
+	"\u5248>Yuan;",
+	"\u5249>Cu{o4};",
+	"\u524A>Xue;",
+	"\u524B>K{e4};",
+	"\u524C>L{a4};",
+	"\u524D>Qi{a2}n;",
+	"\u524E>Ch{a4};",
+	"\u524F>Chu{a4}ng;",
+	"\u5250>Gu{a3};",
+	"\u5251>Ji{a4}n;",
+	"\u5252>Cu{o4};",
+	"\u5253>L{i2};",
+	"\u5254>Ti;",
+	"\u5255>Fe{i4};",
+	"\u5256>Pou;",
+	"\u5257>Ch{a3}n;",
+	"\u5258>Q{i2};",
+	"\u5259>Chu{a4}ng;",
+	"\u525A>Z{i4};",
+	"\u525B>Gang;",
+	"\u525C>Wan;",
+	"\u525D>Bo;",
+	"\u525E>Ji;",
+	"\u525F>Duo;",
+	"\u5260>Q{i2}ng;",
+	"\u5261>Y{a3}n;",
+	"\u5262>Zhu{o2};",
+	"\u5263>Ji{a4}n;",
+	"\u5264>J{i4};",
+	"\u5265>Bo;",
+	"\u5266>Yan;",
+	"\u5267>J{u4};",
+	"\u5268>Hu{o4};",
+	"\u5269>Sh{e4}ng;",
+	"\u526A>Ji{a3}n;",
+	"\u526B>Du{o2};",
+	"\u526C>Duan;",
+	"\u526D>Wu;",
+	"\u526E>Gu{a3};",
+	"\u526F>F{u4};",
+	"\u5270>Sh{e4}ng;",
+	"\u5271>Ji{a4}n;",
+	"\u5272>Ge;",
+	"\u5273>Zha;",
+	"\u5274>Ka{i3};",
+	"\u5275>Chu{a4}ng;",
+	"\u5276>Juan;",
+	"\u5277>Ch{a3}n;",
+	"\u5278>Tu{a2}n;",
+	"\u5279>L{u4};",
+	"\u527A>L{i2};",
+	"\u527B>Fo{u2};",
+	"\u527C>Shan;",
+	"\u527D>Pia{o4};",
+	"\u527E>Kou;",
+	"\u527F>Jia{o3};",
+	"\u5280>Gua;",
+	"\u5281>Qiao;",
+	"\u5282>Ju{e2};",
+	"\u5283>Hu{a4};",
+	"\u5284>Zh{a2};",
+	"\u5285>Zhu{o4};",
+	"\u5286>Li{a2}n;",
+	"\u5287>J{u4};",
+	"\u5288>Pi;",
+	"\u5289>Li{u2};",
+	"\u528A>Gu{i4};",
+	"\u528B>Jia{o3};",
+	"\u528C>Gu{i4};",
+	"\u528D>Ji{a4}n;",
+	"\u528E>Ji{a4}n;",
+	"\u528F>Tang;",
+	"\u5290>Huo;",
+	"\u5291>J{i4};",
+	"\u5292>Ji{a4}n;",
+	"\u5293>Y{i4};",
+	"\u5294>Ji{a4}n;",
+	"\u5295>Zh{i2};",
+	"\u5296>Ch{a2}n;",
+	"\u5297>Cu{a2}n;",
+	"\u5298>M{o2};",
+	"\u5299>L{i2};",
+	"\u529A>Zh{u2};",
+	"\u529B>L{i4};",
+	"\u529C>Ya;",
+	"\u529D>Qu{a4}n;",
+	"\u529E>B{a4}n;",
+	"\u529F>Gong;",
+	"\u52A0>Jia;",
+	"\u52A1>W{u4};",
+	"\u52A2>Ma{i4};",
+	"\u52A3>Li{e4};",
+	"\u52A4>J{i4}n;",
+	"\u52A5>Keng;",
+	"\u52A6>Xi{e2};",
+	"\u52A7>Zh{i3};",
+	"\u52A8>D{o4}ng;",
+	"\u52A9>Zh{u4};",
+	"\u52AA>N{u3};",
+	"\u52AB>Ji{e2};",
+	"\u52AC>Q{u2};",
+	"\u52AD>Sha{o4};",
+	"\u52AE>Y{i4};",
+	"\u52AF>Zhu;",
+	"\u52B0>Mia{o3};",
+	"\u52B1>L{i4};",
+	"\u52B2>J{i4}ng;",
+	"\u52B3>La{o2};",
+	"\u52B4>La{o2};",
+	"\u52B5>Ju{a4}n;",
+	"\u52B6>Ko{u3};",
+	"\u52B7>Y{a2}ng;",
+	"\u52B8>Wa;",
+	"\u52B9>Xia{o4};",
+	"\u52BA>Mo{u2};",
+	"\u52BB>Kuang;",
+	"\u52BC>Ji{e2};",
+	"\u52BD>Li{e4};",
+	"\u52BE>H{e2};",
+	"\u52BF>Sh{i4};",
+	"\u52C0>K{e4};",
+	"\u52C1>J{i4}ng;",
+	"\u52C2>Ha{o2};",
+	"\u52C3>B{o2};",
+	"\u52C4>M{i3}n;",
+	"\u52C5>Ch{i4};",
+	"\u52C6>L{a2}ng;",
+	"\u52C7>Y{o3}ng;",
+	"\u52C8>Y{o3}ng;",
+	"\u52C9>Mi{a3}n;",
+	"\u52CA>K{e4};",
+	"\u52CB>Xun;",
+	"\u52CC>Ju{a4}n;",
+	"\u52CD>Q{i2}ng;",
+	"\u52CE>L{u4};",
+	"\u52CF>Po{u3};",
+	"\u52D0>M{e3}ng;",
+	"\u52D1>La{i4};",
+	"\u52D2>L{e4};",
+	"\u52D3>Ka{i4};",
+	"\u52D4>Mi{a3}n;",
+	"\u52D5>D{o4}ng;",
+	"\u52D6>X{u4};",
+	"\u52D7>X{u4};",
+	"\u52D8>Kan;",
+	"\u52D9>W{u4};",
+	"\u52DA>Y{i4};",
+	"\u52DB>Xun;",
+	"\u52DC>W{e3}ng;",
+	"\u52DD>Sh{e4}ng;",
+	"\u52DE>La{o2};",
+	"\u52DF>M{u4};",
+	"\u52E0>L{u4};",
+	"\u52E1>Pia{o4};",
+	"\u52E2>Sh{i4};",
+	"\u52E3>Ji;",
+	"\u52E4>Q{i2}n;",
+	"\u52E5>Qi{a3}ng;",
+	"\u52E6>Jia{o3};",
+	"\u52E7>Qu{a4}n;",
+	"\u52E8>Y{a3}ng;",
+	"\u52E9>Y{i4};",
+	"\u52EA>Ju{e2};",
+	"\u52EB>F{a2}n;",
+	"\u52EC>Ju{a4}n;",
+	"\u52ED>T{o2}ng;",
+	"\u52EE>J{u4};",
+	"\u52EF>Dan;",
+	"\u52F0>Xi{e2};",
+	"\u52F1>Ma{i4};",
+	"\u52F2>Xun;",
+	"\u52F3>Xun;",
+	"\u52F4>L{uu4};",
+	"\u52F5>L{i4};",
+	"\u52F6>Ch{e4};",
+	"\u52F7>R{a2}ng;",
+	"\u52F8>Qu{a4}n;",
+	"\u52F9>Bao;",
+	"\u52FA>Sha{o2};",
+	"\u52FB>Y{u2}n;",
+	"\u52FC>Jiu;",
+	"\u52FD>Ba{o4};",
+	"\u52FE>Gou;",
+	"\u52FF>W{u4};",
+	"\u5300>Y{u2}n;",
+	"\u5303>Ga{i4};",
+	"\u5304>Ga{i4};",
+	"\u5305>Bao;",
+	"\u5306>Cong;",
+	"\u5308>Xiong;",
+	"\u5309>Peng;",
+	"\u530A>J{u2};",
+	"\u530B>Ta{o2};",
+	"\u530C>G{e2};",
+	"\u530D>P{u2};",
+	"\u530E>{A4}n;",
+	"\u530F>Pa{o2};",
+	"\u5310>F{u2};",
+	"\u5311>Gong;",
+	"\u5312>D{a2};",
+	"\u5313>Ji{u4};",
+	"\u5314>Qiong;",
+	"\u5315>B{i3};",
+	"\u5316>Hu{a4};",
+	"\u5317>Be{i3};",
+	"\u5318>Na{o3};",
+	"\u5319>Ch{i2};",
+	"\u531A>Fang;",
+	"\u531B>Ji{u4};",
+	"\u531C>Y{i2};",
+	"\u531D>Za;",
+	"\u531E>Ji{a4}ng;",
+	"\u531F>K{a4}ng;",
+	"\u5320>Ji{a4}ng;",
+	"\u5321>Kuang;",
+	"\u5322>Hu;",
+	"\u5323>Xi{a2};",
+	"\u5324>Qu;",
+	"\u5325>Bi{a4}n;",
+	"\u5326>Gu{i3};",
+	"\u5327>Qi{e4};",
+	"\u5328>Zang;",
+	"\u5329>Kuang;",
+	"\u532A>Fe{i3};",
+	"\u532B>Hu;",
+	"\u532C>To{u2};",
+	"\u532D>Gu{i3};",
+	"\u532E>Gu{i4};",
+	"\u532F>Hu{i4};",
+	"\u5330>Dan;",
+	"\u5331>Gu{i4};",
+	"\u5332>Li{a2}n;",
+	"\u5333>Li{a2}n;",
+	"\u5334>Su{a3}n;",
+	"\u5335>D{u2};",
+	"\u5336>Ji{u4};",
+	"\u5337>Q{u2};",
+	"\u5338>X{i3};",
+	"\u5339>P{i3};",
+	"\u533A>Qu;",
+	"\u533B>Y{i4};",
+	"\u533C>Qi{a4};",
+	"\u533D>Y{a3}n;",
+	"\u533E>Bi{a3}n;",
+	"\u533F>N{i4};",
+	"\u5340>Qu;",
+	"\u5341>Sh{i2};",
+	"\u5342>X{i4}n;",
+	"\u5343>Qian;",
+	"\u5344>Ni{a4}n;",
+	"\u5345>S{a4};",
+	"\u5346>Z{u2};",
+	"\u5347>Sheng;",
+	"\u5348>W{u3};",
+	"\u5349>Hu{i4};",
+	"\u534A>B{a4}n;",
+	"\u534B>Sh{i4};",
+	"\u534C>X{i4};",
+	"\u534D>W{a4}n;",
+	"\u534E>Hu{a2};",
+	"\u534F>Xi{e2};",
+	"\u5350>W{a4}n;",
+	"\u5351>Bei;",
+	"\u5352>Z{u2};",
+	"\u5353>Zhuo;",
+	"\u5354>Xi{e2};",
+	"\u5355>Dan;",
+	"\u5356>Ma{i4};",
+	"\u5357>N{a2}n;",
+	"\u5358>Dan;",
+	"\u5359>J{i2};",
+	"\u535A>B{o2};",
+	"\u535B>Shua{i4};",
+	"\u535C>B{u3};",
+	"\u535D>Ku{a4}ng;",
+	"\u535E>Bi{a4}n;",
+	"\u535F>B{u3};",
+	"\u5360>Zhan;",
+	"\u5361>Qi{a3};",
+	"\u5362>L{u2};",
+	"\u5363>Yo{u3};",
+	"\u5364>L{u3};",
+	"\u5365>Xi;",
+	"\u5366>Gu{a4};",
+	"\u5367>W{o4};",
+	"\u5368>Xi{e4};",
+	"\u5369>Ji{e2};",
+	"\u536A>Ji{e2};",
+	"\u536B>We{i4};",
+	"\u536C>{A2}ng;",
+	"\u536D>Qi{o2}ng;",
+	"\u536E>Zhi;",
+	"\u536F>Ma{o3};",
+	"\u5370>Y{i4}n;",
+	"\u5371>Wei;",
+	"\u5372>Sha{o4};",
+	"\u5373>J{i2};",
+	"\u5374>Qu{e4};",
+	"\u5375>Lu{a3}n;",
+	"\u5376>Sh{i4};",
+	"\u5377>Ju{a4}n;",
+	"\u5378>Xi{e4};",
+	"\u5379>X{u4};",
+	"\u537A>J{i3}n;",
+	"\u537B>Qu{e4};",
+	"\u537C>W{u4};",
+	"\u537D>J{i2};",
+	"\u537E>{E4};",
+	"\u537F>Qing;",
+	"\u5380>Xi;",
+	"\u5382>H{a4}n;",
+	"\u5383>Zhan;",
+	"\u5384>{E4};",
+	"\u5385>Ting;",
+	"\u5386>L{i4};",
+	"\u5387>Zh{e2};",
+	"\u5388>H{a3}n;",
+	"\u5389>L{i4};",
+	"\u538A>Y{a3};",
+	"\u538B>Ya;",
+	"\u538C>Y{a4}n;",
+	"\u538D>Sh{e4};",
+	"\u538E>Zh{i3};",
+	"\u538F>Zh{a3};",
+	"\u5390>P{a2}ng;",
+	"\u5392>H{e2};",
+	"\u5393>Y{a2};",
+	"\u5394>Zh{i4};",
+	"\u5395>C{e4};",
+	"\u5396>P{a2}ng;",
+	"\u5397>T{i2};",
+	"\u5398>L{i2};",
+	"\u5399>Sh{e4};",
+	"\u539A>Ho{u4};",
+	"\u539B>Ting;",
+	"\u539C>Zui;",
+	"\u539D>Cu{o4};",
+	"\u539E>Fe{i4};",
+	"\u539F>Yu{a2}n;",
+	"\u53A0>C{e4};",
+	"\u53A1>Yu{a2}n;",
+	"\u53A2>Xiang;",
+	"\u53A3>Y{a3}n;",
+	"\u53A4>L{i4};",
+	"\u53A5>Ju{e2};",
+	"\u53A6>Sh{a4};",
+	"\u53A7>Dian;",
+	"\u53A8>Ch{u2};",
+	"\u53A9>Ji{u4};",
+	"\u53AA>Q{i2}n;",
+	"\u53AB>A{o2};",
+	"\u53AC>Gu{i3};",
+	"\u53AD>Y{a4}n;",
+	"\u53AE>Si;",
+	"\u53AF>L{i4};",
+	"\u53B0>Ch{a3}ng;",
+	"\u53B1>L{a2}n;",
+	"\u53B2>L{i4};",
+	"\u53B3>Y{a2}n;",
+	"\u53B4>Y{a3}n;",
+	"\u53B5>Yu{a2}n;",
+	"\u53B6>Si;",
+	"\u53B7>Gong;",
+	"\u53B8>L{i2}n;",
+	"\u53B9>Qi{u2};",
+	"\u53BA>Q{u4};",
+	"\u53BB>Q{u4};",
+	"\u53BD>Le{i3};",
+	"\u53BE>Du;",
+	"\u53BF>Xi{a4}n;",
+	"\u53C0>Zhuan;",
+	"\u53C1>San;",
+	"\u53C2>Can;",
+	"\u53C3>Can;",
+	"\u53C4>Can;",
+	"\u53C5>Can;",
+	"\u53C6>A{i4};",
+	"\u53C7>Da{i4};",
+	"\u53C8>Yo{u4};",
+	"\u53C9>Ch{a1};",
+	"\u53CA>J{i2};",
+	"\u53CB>Yo{u3};",
+	"\u53CC>Shuang;",
+	"\u53CD>F{a3}n;",
+	"\u53CE>Shou;",
+	"\u53CF>Gua{i4};",
+	"\u53D0>B{a2};",
+	"\u53D1>Fa;",
+	"\u53D2>Ru{o4};",
+	"\u53D3>Sh{i4};",
+	"\u53D4>Shu;",
+	"\u53D5>Zhu{o2};",
+	"\u53D6>Qu;",
+	"\u53D7>Sho{u4};",
+	"\u53D8>Bi{a4}n;",
+	"\u53D9>X{u4};",
+	"\u53DA>Ji{a3};",
+	"\u53DB>P{a4}n;",
+	"\u53DC>So{u3};",
+	"\u53DD>Ga{o4};",
+	"\u53DE>We{i4};",
+	"\u53DF>So{u3};",
+	"\u53E0>Di{e2};",
+	"\u53E1>Ru{i4};",
+	"\u53E2>C{o2}ng;",
+	"\u53E3>Ko{u3};",
+	"\u53E4>G{u3};",
+	"\u53E5>J{u4};",
+	"\u53E6>L{i4}ng;",
+	"\u53E7>Gu{a3};",
+	"\u53E8>Tao;",
+	"\u53E9>Ko{u4};",
+	"\u53EA>Zh{i3};",
+	"\u53EB>Jia{o4};",
+	"\u53EC>Zha{o4};",
+	"\u53ED>Ba;",
+	"\u53EE>Ding;",
+	"\u53EF>K{e3};",
+	"\u53F0>Ta{i2};",
+	"\u53F1>Ch{i4};",
+	"\u53F2>Sh{i3};",
+	"\u53F3>Yo{u4};",
+	"\u53F4>Qi{u2};",
+	"\u53F5>P{o3};",
+	"\u53F6>Xi{e2};",
+	"\u53F7>Ha{o4};",
+	"\u53F8>Si;",
+	"\u53F9>T{a4}n;",
+	"\u53FA>Ch{i3};",
+	"\u53FB>L{e4};",
+	"\u53FC>Diao;",
+	"\u53FD>Ji;",
+	"\u53FF>Hong;",
+	"\u5400>Mie;",
+	"\u5401>Xu;",
+	"\u5402>M{a2}ng;",
+	"\u5403>Chi;",
+	"\u5404>G{e4};",
+	"\u5405>Xuan;",
+	"\u5406>Yao;",
+	"\u5407>Z{i3};",
+	"\u5408>H{e2};",
+	"\u5409>J{i2};",
+	"\u540A>Dia{o4};",
+	"\u540B>C{u4}n;",
+	"\u540C>T{o2}ng;",
+	"\u540D>M{i2}ng;",
+	"\u540E>Ho{u4};",
+	"\u540F>L{i4};",
+	"\u5410>T{u3};",
+	"\u5411>Xi{a4}ng;",
+	"\u5412>Zh{a4};",
+	"\u5413>Xi{a4};",
+	"\u5414>Y{e3};",
+	"\u5415>L{uu3};",
+	"\u5416>A;",
+	"\u5417>M{a1};",
+	"\u5418>O{u3};",
+	"\u5419>Xue;",
+	"\u541A>Yi;",
+	"\u541B>Jun;",
+	"\u541C>Cho{u3};",
+	"\u541D>L{i4}n;",
+	"\u541E>Tun;",
+	"\u541F>Y{i2}n;",
+	"\u5420>Fe{i4};",
+	"\u5421>B{i3};",
+	"\u5422>Q{i4}n;",
+	"\u5423>Q{i4}n;",
+	"\u5424>Ji{e4};",
+	"\u5425>B{u4};",
+	"\u5426>Fo{u3};",
+	"\u5427>B{a1};",
+	"\u5428>Dun;",
+	"\u5429>Fen;",
+	"\u542A>{E2};",
+	"\u542B>H{a2}n;",
+	"\u542C>Ting;",
+	"\u542D>H{a2}ng;",
+	"\u542E>Sh{u3}n;",
+	"\u542F>Q{i3};",
+	"\u5430>H{o2}ng;",
+	"\u5431>Zhi;",
+	"\u5432>Sh{e3}n;",
+	"\u5433>W{u2};",
+	"\u5434>W{u2};",
+	"\u5435>Cha{o3};",
+	"\u5436>N{e4};",
+	"\u5437>Xu{e4};",
+	"\u5438>Xi;",
+	"\u5439>Chui;",
+	"\u543A>Dou;",
+	"\u543B>W{e3}n;",
+	"\u543C>Ho{u3};",
+	"\u543D>O{u2};",
+	"\u543E>W{u2};",
+	"\u543F>Ga{o4};",
+	"\u5440>Ya;",
+	"\u5441>J{u4}n;",
+	"\u5442>L{uu3};",
+	"\u5443>{E4};",
+	"\u5444>G{e2};",
+	"\u5445>Me{i2};",
+	"\u5446>A{i2};",
+	"\u5447>Q{i3};",
+	"\u5448>Ch{e2}ng;",
+	"\u5449>W{u2};",
+	"\u544A>Ga{o4};",
+	"\u544B>Fu;",
+	"\u544C>Jia{o4};",
+	"\u544D>Hong;",
+	"\u544E>Ch{i3};",
+	"\u544F>Sheng;",
+	"\u5450>N{e4};",
+	"\u5451>Tun;",
+	"\u5452>F{u3};",
+	"\u5453>Y{i4};",
+	"\u5454>Dai;",
+	"\u5455>Ou;",
+	"\u5456>L{i4};",
+	"\u5457>Ba{i4};",
+	"\u5458>Yu{a2}n;",
+	"\u5459>Kuai;",
+	"\u545B>Qiang;",
+	"\u545C>Wu;",
+	"\u545D>{E4};",
+	"\u545E>Shi;",
+	"\u545F>Qu{a3}n;",
+	"\u5460>Pen;",
+	"\u5461>W{e3}n;",
+	"\u5462>N{i2};",
+	"\u5463>M{2};",
+	"\u5464>L{i3}ng;",
+	"\u5465>R{a3}n;",
+	"\u5466>You;",
+	"\u5467>D{i3};",
+	"\u5468>Zhou;",
+	"\u5469>Sh{i4};",
+	"\u546A>Zho{u4};",
+	"\u546B>Tie;",
+	"\u546C>X{i4};",
+	"\u546D>Y{i4};",
+	"\u546E>Q{i4};",
+	"\u546F>P{i2}ng;",
+	"\u5470>Z{i3};",
+	"\u5471>Gu;",
+	"\u5472>Zi;",
+	"\u5473>We{i4};",
+	"\u5474>Xu;",
+	"\u5475>He;",
+	"\u5476>Na{o2};",
+	"\u5477>Xia;",
+	"\u5478>Pei;",
+	"\u5479>Y{i4};",
+	"\u547A>Xiao;",
+	"\u547B>Shen;",
+	"\u547C>Hu;",
+	"\u547D>M{i4}ng;",
+	"\u547E>D{a2};",
+	"\u547F>Qu;",
+	"\u5480>J{u3};",
+	"\u5481>G{e4}m;",
+	"\u5482>Za;",
+	"\u5483>Tuo;",
+	"\u5484>Duo;",
+	"\u5485>Po{u4};",
+	"\u5486>Pa{o2};",
+	"\u5487>B{i4};",
+	"\u5488>F{u2};",
+	"\u5489>Yang;",
+	"\u548A>H{e2};",
+	"\u548B>Zh{a4};",
+	"\u548C>H{e2};",
+	"\u548D>Hai;",
+	"\u548E>Ji{u4};",
+	"\u548F>Y{o3}ng;",
+	"\u5490>F{u4};",
+	"\u5491>Qu{e4};",
+	"\u5492>Zho{u4};",
+	"\u5493>W{a3};",
+	"\u5494>K{a3};",
+	"\u5495>Gu;",
+	"\u5496>Ka;",
+	"\u5497>Zu{o3};",
+	"\u5498>B{u4};",
+	"\u5499>L{o2}ng;",
+	"\u549A>Dong;",
+	"\u549B>N{i2}ng;",
+	"\u549D>Si;",
+	"\u549E>Xi{a4}n;",
+	"\u549F>Hu{o4};",
+	"\u54A0>Q{i4};",
+	"\u54A1>{E4}r;",
+	"\u54A2>{E4};",
+	"\u54A3>Guang;",
+	"\u54A4>Zh{a4};",
+	"\u54A5>X{i4};",
+	"\u54A6>Y{i2};",
+	"\u54A7>Li{e3};",
+	"\u54A8>Zi;",
+	"\u54A9>Mie;",
+	"\u54AA>Mi;",
+	"\u54AB>Zh{i3};",
+	"\u54AC>Ya{o3};",
+	"\u54AD>Ji;",
+	"\u54AE>Zho{u4};",
+	"\u54AF>Ge;",
+	"\u54B0>Shua{i4};",
+	"\u54B1>Z{a2}n;",
+	"\u54B2>Xia{o4};",
+	"\u54B3>K{e2};",
+	"\u54B4>Hui;",
+	"\u54B5>Kua;",
+	"\u54B6>Hua{i4};",
+	"\u54B7>Ta{o2};",
+	"\u54B8>Xi{a2}n;",
+	"\u54B9>{E4};",
+	"\u54BA>Xuan;",
+	"\u54BB>Xiu;",
+	"\u54BC>Wai;",
+	"\u54BD>Yan;",
+	"\u54BE>La{o3};",
+	"\u54BF>Yi;",
+	"\u54C0>Ai;",
+	"\u54C1>P{i3}n;",
+	"\u54C2>Sh{e3}n;",
+	"\u54C3>T{o2}ng;",
+	"\u54C4>Hong;",
+	"\u54C5>Xiong;",
+	"\u54C6>Ch{i3};",
+	"\u54C7>Wa;",
+	"\u54C8>Ha;",
+	"\u54C9>Zai;",
+	"\u54CA>Y{u4};",
+	"\u54CB>D{i4};",
+	"\u54CC>Pa{i4};",
+	"\u54CD>Xi{a3}ng;",
+	"\u54CE>Ai;",
+	"\u54CF>H{e3}n;",
+	"\u54D0>Kuang;",
+	"\u54D1>Y{a3};",
+	"\u54D2>Da;",
+	"\u54D3>Xiao;",
+	"\u54D4>B{i4};",
+	"\u54D5>Yu{e3};",
+	"\u54D7>Hua;",
+	"\u54D9>Kua{i4};",
+	"\u54DA>Du{o3};",
+	"\u54DC>J{i4};",
+	"\u54DD>N{o2}ng;",
+	"\u54DE>Mou;",
+	"\u54DF>Y{o1};",
+	"\u54E0>Ha{o4};",
+	"\u54E1>Yu{a2}n;",
+	"\u54E2>L{o4}ng;",
+	"\u54E3>Po{u3};",
+	"\u54E4>M{a2}ng;",
+	"\u54E5>Ge;",
+	"\u54E6>{E2};",
+	"\u54E7>Chi;",
+	"\u54E8>Sha{o4};",
+	"\u54E9>Li;",
+	"\u54EA>N{a3};",
+	"\u54EB>Z{u2};",
+	"\u54EC>H{e2};",
+	"\u54ED>Ku;",
+	"\u54EE>Xiao;",
+	"\u54EF>Xi{a4}n;",
+	"\u54F0>La{o2};",
+	"\u54F1>Bo;",
+	"\u54F2>Zh{e2};",
+	"\u54F3>Zha;",
+	"\u54F4>Li{a4}ng;",
+	"\u54F5>Ba;",
+	"\u54F6>Mie;",
+	"\u54F7>L{e4};",
+	"\u54F8>Sui;",
+	"\u54F9>Fo{u2};",
+	"\u54FA>B{u3};",
+	"\u54FB>H{a4}n;",
+	"\u54FC>Heng;",
+	"\u54FD>G{e3}ng;",
+	"\u54FE>Shuo;",
+	"\u54FF>G{e3};",
+	"\u5500>Yo{u3};",
+	"\u5501>Y{a4}n;",
+	"\u5502>G{u3};",
+	"\u5503>G{u3};",
+	"\u5504>Ba{i4};",
+	"\u5505>Han;",
+	"\u5506>Suo;",
+	"\u5507>Ch{u2}n;",
+	"\u5508>Y{i4};",
+	"\u5509>Ai;",
+	"\u550A>Ji{a2};",
+	"\u550B>T{u3};",
+	"\u550C>Xi{a2}n;",
+	"\u550D>Hu{a3}n;",
+	"\u550E>Li;",
+	"\u550F>Xi;",
+	"\u5510>T{a2}ng;",
+	"\u5511>Zu{o4};",
+	"\u5512>Qi{u2};",
+	"\u5513>Che;",
+	"\u5514>W{u2};",
+	"\u5515>Za{o4};",
+	"\u5516>Y{a3};",
+	"\u5517>Dou;",
+	"\u5518>Q{i3};",
+	"\u5519>D{i2};",
+	"\u551A>Q{i4}n;",
+	"\u551B>M{a4};",
+	"\u551D>H{o3}ng;",
+	"\u551E>Do{u3};",
+	"\u5520>La{o2};",
+	"\u5521>Li{a3}ng;",
+	"\u5522>Su{o3};",
+	"\u5523>Za{o4};",
+	"\u5524>Hu{a4}n;",
+	"\u5526>Sha;",
+	"\u5527>Ji;",
+	"\u5528>Zu{o3};",
+	"\u5529>Wo;",
+	"\u552A>F{e3}ng;",
+	"\u552B>Y{i2}n;",
+	"\u552C>H{u3};",
+	"\u552D>Qi;",
+	"\u552E>Sho{u4};",
+	"\u552F>We{i2};",
+	"\u5530>Shua;",
+	"\u5531>Ch{a4}ng;",
+	"\u5532>{E2}r;",
+	"\u5533>L{i4};",
+	"\u5534>Qi{a4}ng;",
+	"\u5535>{a3}n;",
+	"\u5536>Ji{e4};",
+	"\u5537>Yo;",
+	"\u5538>Ni{a4}n;",
+	"\u5539>Yu;",
+	"\u553A>Ti{a3}n;",
+	"\u553B>La{i3};",
+	"\u553C>Sh{a4};",
+	"\u553D>Xi;",
+	"\u553E>Tu{o4};",
+	"\u553F>Hu;",
+	"\u5540>A{i2};",
+	"\u5541>Zhou;",
+	"\u5542>No{u4};",
+	"\u5543>K{e3}n;",
+	"\u5544>Zhu{o2};",
+	"\u5545>Zhu{o2};",
+	"\u5546>Shang;",
+	"\u5547>D{i2};",
+	"\u5548>H{e4}ng;",
+	"\u5549>L{a2}n;",
+	"\u554A>{a1};",
+	"\u554B>Xiao;",
+	"\u554C>Xiang;",
+	"\u554D>Tun;",
+	"\u554E>W{u3};",
+	"\u554F>W{e4}n;",
+	"\u5550>Cu{i4};",
+	"\u5551>Sh{a4};",
+	"\u5552>Hu;",
+	"\u5553>Q{i3};",
+	"\u5554>Q{i3};",
+	"\u5555>Ta{o2};",
+	"\u5556>D{a4}n;",
+	"\u5557>D{a4}n;",
+	"\u5558>Y{e4};",
+	"\u5559>Z{i3};",
+	"\u555A>B{i3};",
+	"\u555B>Cu{i4};",
+	"\u555C>Chu{o4};",
+	"\u555D>H{e2};",
+	"\u555E>Y{a3};",
+	"\u555F>Q{i3};",
+	"\u5560>Zh{e2};",
+	"\u5561>Pei;",
+	"\u5562>Li{a3}ng;",
+	"\u5563>Xi{a2}n;",
+	"\u5564>P{i2};",
+	"\u5565>Sh{a4};",
+	"\u5566>L{a1};",
+	"\u5567>Z{e2};",
+	"\u5568>Qing;",
+	"\u5569>Gu{a4};",
+	"\u556A>Pa;",
+	"\u556B>Zh{e3};",
+	"\u556C>S{e4};",
+	"\u556D>Zhu{a4}n;",
+	"\u556E>Ni{e4};",
+	"\u556F>Gu{o1};",
+	"\u5570>Luo;",
+	"\u5571>Yan;",
+	"\u5572>D{i4};",
+	"\u5573>Qu{a2}n;",
+	"\u5574>Tan;",
+	"\u5575>B{o1};",
+	"\u5576>D{i4}ng;",
+	"\u5577>Lang;",
+	"\u5578>Xia{o4};",
+	"\u557A>T{a2}ng;",
+	"\u557B>Ch{i4};",
+	"\u557C>T{i2};",
+	"\u557D>{A2}n;",
+	"\u557E>Jiu;",
+	"\u557F>D{a4}n;",
+	"\u5580>K{e4};",
+	"\u5581>Y{o2}ng;",
+	"\u5582>We{i4};",
+	"\u5583>N{a2}n;",
+	"\u5584>Sh{a4}n;",
+	"\u5585>Y{u4};",
+	"\u5586>Zh{e2};",
+	"\u5587>L{a3};",
+	"\u5588>Jie;",
+	"\u5589>Ho{u2};",
+	"\u558A>H{a3}n;",
+	"\u558B>Di{e2};",
+	"\u558C>Zhou;",
+	"\u558D>Cha{i2};",
+	"\u558E>Wai;",
+	"\u558F>R{e3};",
+	"\u5590>Y{u4};",
+	"\u5591>Yin;",
+	"\u5592>Z{a2}n;",
+	"\u5593>Yao;",
+	"\u5594>Wo;",
+	"\u5595>Mi{a3}n;",
+	"\u5596>H{u2};",
+	"\u5597>Y{u3}n;",
+	"\u5598>Chu{a3}n;",
+	"\u5599>Hu{i4};",
+	"\u559A>Hu{a4}n;",
+	"\u559B>Hu{a4}n;",
+	"\u559C>X{i3};",
+	"\u559D>He;",
+	"\u559E>Ji;",
+	"\u559F>Ku{i4};",
+	"\u55A0>Zh{o3}ng;",
+	"\u55A1>We{i3};",
+	"\u55A2>Sh{a4};",
+	"\u55A3>X{u3};",
+	"\u55A4>Hu{a2}ng;",
+	"\u55A5>D{u4};",
+	"\u55A6>Ni{e4};",
+	"\u55A7>Xuan;",
+	"\u55A8>Li{a4}ng;",
+	"\u55A9>Y{u4};",
+	"\u55AA>Sang;",
+	"\u55AB>Chi;",
+	"\u55AC>Qia{o2};",
+	"\u55AD>Y{a4}n;",
+	"\u55AE>Dan;",
+	"\u55AF>Pen;",
+	"\u55B0>Can;",
+	"\u55B1>L{i2};",
+	"\u55B2>Y{o1};",
+	"\u55B3>Zha;",
+	"\u55B4>Wei;",
+	"\u55B5>Miao;",
+	"\u55B6>Y{i2}ng;",
+	"\u55B7>Pen;",
+	"\u55B9>Ku{i2};",
+	"\u55BA>X{i4};",
+	"\u55BB>Y{u4};",
+	"\u55BC>Ji{e2};",
+	"\u55BD>Lo{u1};",
+	"\u55BE>K{u4};",
+	"\u55BF>Sa{o4};",
+	"\u55C0>Hu{o4};",
+	"\u55C1>T{i2};",
+	"\u55C2>Ya{o2};",
+	"\u55C3>H{e4};",
+	"\u55C4>{A2};",
+	"\u55C5>Xi{u4};",
+	"\u55C6>Qiang;",
+	"\u55C7>S{e4};",
+	"\u55C8>Yong;",
+	"\u55C9>S{u4};",
+	"\u55CA>H{o3}ng;",
+	"\u55CB>Xi{e2};",
+	"\u55CC>Y{i4};",
+	"\u55CD>Suo;",
+	"\u55CE>M{a1};",
+	"\u55CF>Cha;",
+	"\u55D0>Ha{i4};",
+	"\u55D1>K{e4};",
+	"\u55D2>T{a4};",
+	"\u55D3>S{a3}ng;",
+	"\u55D4>Ti{a2}n;",
+	"\u55D5>R{u4};",
+	"\u55D6>Sou;",
+	"\u55D7>Wa;",
+	"\u55D8>Ji;",
+	"\u55D9>P{a3}ng;",
+	"\u55DA>Wu;",
+	"\u55DB>Xi{a2}n;",
+	"\u55DC>Sh{i4};",
+	"\u55DD>G{e2};",
+	"\u55DE>Zi;",
+	"\u55DF>Jie;",
+	"\u55E0>Lu{o4};",
+	"\u55E1>Weng;",
+	"\u55E2>W{a4};",
+	"\u55E3>S{i4};",
+	"\u55E4>Chi;",
+	"\u55E5>Ha{o2};",
+	"\u55E6>Suo;",
+	"\u55E7>Jia1l{u2}n;",
+	"\u55E8>Ha{i3};",
+	"\u55E9>Su{o3};",
+	"\u55EA>Q{i2}n;",
+	"\u55EB>Ni{e4};",
+	"\u55EC>He;",
+	"\u55EE>Sa{i4};",
+	"\u55EF>Ng{4};",
+	"\u55F0>G{e4};",
+	"\u55F1>N{a2};",
+	"\u55F2>Di{a3};",
+	"\u55F3>A{i4};",
+	"\u55F5>Tong;",
+	"\u55F6>B{i4};",
+	"\u55F7>A{o2};",
+	"\u55F8>A{o2};",
+	"\u55F9>Li{a2}n;",
+	"\u55FA>Cui;",
+	"\u55FB>Zhe;",
+	"\u55FC>M{o4};",
+	"\u55FD>So{u4};",
+	"\u55FE>So{u3};",
+	"\u55FF>T{a3}n;",
+	"\u5600>D{i2};",
+	"\u5601>Qi;",
+	"\u5602>Jia{o4};",
+	"\u5603>Chong;",
+	"\u5604>Jiao;",
+	"\u5605>Ka{i3};",
+	"\u5606>T{a4}n;",
+	"\u5607>San;",
+	"\u5608>Ca{o2};",
+	"\u5609>Jia;",
+	"\u560A>A{i2};",
+	"\u560B>Xiao;",
+	"\u560C>Piao;",
+	"\u560D>Lo{u1};",
+	"\u560E>Ga;",
+	"\u560F>G{u3};",
+	"\u5610>Xiao;",
+	"\u5611>Hu;",
+	"\u5612>Hu{i4};",
+	"\u5613>Gu{o1};",
+	"\u5614>Ou;",
+	"\u5615>Xian;",
+	"\u5616>Z{e2};",
+	"\u5617>Ch{a2}ng;",
+	"\u5618>Xu;",
+	"\u5619>P{o2};",
+	"\u561A>D{e2};",
+	"\u561B>M{a1};",
+	"\u561C>M{a4};",
+	"\u561D>H{u2};",
+	"\u561E>Le{i1};",
+	"\u561F>Du;",
+	"\u5620>Ga;",
+	"\u5621>Tang;",
+	"\u5622>Y{e3};",
+	"\u5623>Beng;",
+	"\u5624>Ying;",
+	"\u5626>Jia{o4};",
+	"\u5627>Mi;",
+	"\u5628>Xia{o4};",
+	"\u5629>Hua;",
+	"\u562A>Ma{i3};",
+	"\u562B>R{a2}n;",
+	"\u562C>Zuo;",
+	"\u562D>Peng;",
+	"\u562E>La{o2};",
+	"\u562F>Xia{o4};",
+	"\u5630>Ji;",
+	"\u5631>Zh{u3};",
+	"\u5632>Cha{o2};",
+	"\u5633>Ku{i4};",
+	"\u5634>Zu{i3};",
+	"\u5635>Xiao;",
+	"\u5636>Si;",
+	"\u5637>Ha{o2};",
+	"\u5638>F{u3};",
+	"\u5639>Lia{o2};",
+	"\u563A>Qia{o2};",
+	"\u563B>Xi;",
+	"\u563C>Xi{u4};",
+	"\u563D>Tan;",
+	"\u563E>T{a2}n;",
+	"\u563F>M{o4};",
+	"\u5640>X{u4}n;",
+	"\u5641>{e3};",
+	"\u5642>Z{u3}n;",
+	"\u5643>Fan;",
+	"\u5644>Chi;",
+	"\u5645>Hui;",
+	"\u5646>Z{a3}n;",
+	"\u5647>Chu{a2}ng;",
+	"\u5648>C{u4};",
+	"\u5649>D{a4}n;",
+	"\u564A>Y{u4};",
+	"\u564B>Tun;",
+	"\u564C>Cheng;",
+	"\u564D>Jia{o4};",
+	"\u564E>Ye;",
+	"\u564F>Xi;",
+	"\u5650>Q{i4};",
+	"\u5651>Ha{o2};",
+	"\u5652>Li{a2}n;",
+	"\u5653>Xu;",
+	"\u5654>Deng;",
+	"\u5655>Hui;",
+	"\u5656>Y{i2}n;",
+	"\u5657>Pu;",
+	"\u5658>Jue;",
+	"\u5659>Q{i2}n;",
+	"\u565A>X{u2}n;",
+	"\u565B>Ni{e4};",
+	"\u565C>Lu;",
+	"\u565D>Si;",
+	"\u565E>Y{a3}n;",
+	"\u565F>Y{i4}ng;",
+	"\u5660>Da;",
+	"\u5661>Dan;",
+	"\u5662>Y{u3};",
+	"\u5663>Zho{u4};",
+	"\u5664>J{i4}n;",
+	"\u5665>N{o2}ng;",
+	"\u5666>Yu{e3};",
+	"\u5667>Hu{i4};",
+	"\u5668>Q{i4};",
+	"\u5669>{E4};",
+	"\u566A>Za{o4};",
+	"\u566B>Yi;",
+	"\u566C>Sh{i4};",
+	"\u566D>Jia{o4};",
+	"\u566E>Yuan;",
+	"\u566F>A{i4};",
+	"\u5670>Yong;",
+	"\u5671>Ju{e2};",
+	"\u5672>Kua{i4};",
+	"\u5673>Y{u3};",
+	"\u5674>Pen;",
+	"\u5675>Da{o4};",
+	"\u5676>G{e2};",
+	"\u5677>Xin;",
+	"\u5678>Dun;",
+	"\u5679>Dang;",
+	"\u567B>Sa{i1};",
+	"\u567C>Pi;",
+	"\u567D>P{i3};",
+	"\u567E>Yin;",
+	"\u567F>Zu{i3};",
+	"\u5680>N{i2}ng;",
+	"\u5681>D{i2};",
+	"\u5682>L{a4}n;",
+	"\u5683>Ta;",
+	"\u5684>Hu{o4};",
+	"\u5685>R{u2};",
+	"\u5686>Hao;",
+	"\u5687>Xi{a4};",
+	"\u5688>Y{a4};",
+	"\u5689>Duo;",
+	"\u568A>X{i4};",
+	"\u568B>Cho{u2};",
+	"\u568C>J{i4};",
+	"\u568D>J{i4}n;",
+	"\u568E>Ha{o2};",
+	"\u568F>T{i4};",
+	"\u5690>Ch{a2}ng;",
+	"\u5693>Ca;",
+	"\u5694>T{i4};",
+	"\u5695>Lu;",
+	"\u5696>Hu{i4};",
+	"\u5697>B{o2};",
+	"\u5698>You;",
+	"\u5699>Ni{e4};",
+	"\u569A>Y{i2}n;",
+	"\u569B>H{u4};",
+	"\u569C>M{o4};",
+	"\u569D>Huang;",
+	"\u569E>Zh{e2};",
+	"\u569F>L{i2};",
+	"\u56A0>Li{u2};",
+	"\u56A2>N{a2}ng;",
+	"\u56A3>Xiao;",
+	"\u56A4>M{o2};",
+	"\u56A5>Y{a4}n;",
+	"\u56A6>L{i4};",
+	"\u56A7>L{u2};",
+	"\u56A8>L{o2}ng;",
+	"\u56A9>F{u2};",
+	"\u56AA>D{a4}n;",
+	"\u56AB>Ch{e4}n;",
+	"\u56AC>P{i2}n;",
+	"\u56AD>P{i3};",
+	"\u56AE>Xi{a4}ng;",
+	"\u56AF>Hu{o4};",
+	"\u56B0>M{o2};",
+	"\u56B1>X{i4};",
+	"\u56B2>Du{o3};",
+	"\u56B3>K{u4};",
+	"\u56B4>Y{a2}n;",
+	"\u56B5>Ch{a2}n;",
+	"\u56B6>Ying;",
+	"\u56B7>R{a3}ng;",
+	"\u56B8>Di{a3}n;",
+	"\u56B9>La;",
+	"\u56BA>T{a4};",
+	"\u56BB>Xiao;",
+	"\u56BC>Jia{o2};",
+	"\u56BD>Chu{o4};",
+	"\u56BE>Huan;",
+	"\u56BF>Hu{o4};",
+	"\u56C0>Zhu{a4}n;",
+	"\u56C1>Ni{e4};",
+	"\u56C2>Xiao;",
+	"\u56C3>C{a4};",
+	"\u56C4>L{i2};",
+	"\u56C5>Ch{a3}n;",
+	"\u56C6>Cha{i4};",
+	"\u56C7>L{i4};",
+	"\u56C8>Y{i4};",
+	"\u56C9>Luo;",
+	"\u56CA>N{a2}ng;",
+	"\u56CB>Z{a4}n;",
+	"\u56CC>Su;",
+	"\u56CD>X{i3};",
+	"\u56CF>Jian;",
+	"\u56D0>Z{a2};",
+	"\u56D1>Zh{u3};",
+	"\u56D2>L{a2}n;",
+	"\u56D3>Ni{e4};",
+	"\u56D4>Nang;",
+	"\u56D7>We{i2};",
+	"\u56D8>Hu{i2};",
+	"\u56D9>Yin;",
+	"\u56DA>Qi{u2};",
+	"\u56DB>S{i4};",
+	"\u56DC>N{i2}n;",
+	"\u56DD>Ji{a3}n;",
+	"\u56DE>Hu{i2};",
+	"\u56DF>X{i4}n;",
+	"\u56E0>Yin;",
+	"\u56E1>Nan;",
+	"\u56E2>Tu{a2}n;",
+	"\u56E3>Tu{a2}n;",
+	"\u56E4>D{u4}n;",
+	"\u56E5>K{a4}ng;",
+	"\u56E6>Yuan;",
+	"\u56E7>Ji{o3}ng;",
+	"\u56E8>Pian;",
+	"\u56E9>Y{u4}n;",
+	"\u56EA>Cong;",
+	"\u56EB>H{u2};",
+	"\u56EC>Hu{i2};",
+	"\u56ED>Yu{a2}n;",
+	"\u56EE>Yo{u2};",
+	"\u56EF>Gu{o2};",
+	"\u56F0>K{u4}n;",
+	"\u56F1>Cong;",
+	"\u56F2>We{i2};",
+	"\u56F3>T{u2};",
+	"\u56F4>We{i2};",
+	"\u56F5>L{u2}n;",
+	"\u56F6>Gu{o2};",
+	"\u56F7>Qun;",
+	"\u56F8>R{i4};",
+	"\u56F9>L{i2}ng;",
+	"\u56FA>G{u4};",
+	"\u56FB>Gu{o2};",
+	"\u56FC>Tai;",
+	"\u56FD>Gu{o2};",
+	"\u56FE>T{u2};",
+	"\u56FF>Yo{u4};",
+	"\u5700>Gu{o2};",
+	"\u5701>Y{i2}n;",
+	"\u5702>H{u4}n;",
+	"\u5703>P{u3};",
+	"\u5704>Y{u3};",
+	"\u5705>H{a2}n;",
+	"\u5706>Yu{a2}n;",
+	"\u5707>L{u2}n;",
+	"\u5708>Quan;",
+	"\u5709>Y{u3};",
+	"\u570A>Qing;",
+	"\u570B>Gu{o2};",
+	"\u570C>Chu{a2}n;",
+	"\u570D>We{i2};",
+	"\u570E>Yu{a2}n;",
+	"\u570F>Quan;",
+	"\u5710>Ku;",
+	"\u5711>F{u4};",
+	"\u5712>Yu{a2}n;",
+	"\u5713>Yu{a2}n;",
+	"\u5714>{E4};",
+	"\u5715>Tu2shu1gu{a3}n;",
+	"\u5716>T{u2};",
+	"\u5717>T{u2};",
+	"\u5718>Tu{a2}n;",
+	"\u5719>L{uu}{e4};",
+	"\u571A>Hu{i4};",
+	"\u571B>Y{i4};",
+	"\u571C>Yu{a2}n;",
+	"\u571D>Lu{a2}n;",
+	"\u571E>Lu{a2}n;",
+	"\u571F>T{u3};",
+	"\u5720>Y{a4};",
+	"\u5721>T{u3};",
+	"\u5722>Ting;",
+	"\u5723>Sh{e4}ng;",
+	"\u5724>P{u3};",
+	"\u5725>L{u4};",
+	"\u5727>Ya;",
+	"\u5728>Za{i4};",
+	"\u5729>We{i2};",
+	"\u572A>Ge;",
+	"\u572B>Y{u4};",
+	"\u572C>Wu;",
+	"\u572D>Gui;",
+	"\u572E>P{i3};",
+	"\u572F>Y{i2};",
+	"\u5730>D{i4};",
+	"\u5731>Qian;",
+	"\u5732>Qian;",
+	"\u5733>Zh{e4}n;",
+	"\u5734>Zhu{o2};",
+	"\u5735>D{a4}ng;",
+	"\u5736>Qi{a4};",
+	"\u5739>Ku{a4}ng;",
+	"\u573A>Ch{a2}ng;",
+	"\u573B>Q{i2};",
+	"\u573C>Ni{e4};",
+	"\u573D>M{o4};",
+	"\u573E>J{i2};",
+	"\u573F>Ji{a2};",
+	"\u5740>Zh{i3};",
+	"\u5741>Zh{i3};",
+	"\u5742>B{a3}n;",
+	"\u5743>Xun;",
+	"\u5744>To{u2};",
+	"\u5745>Q{i3}n;",
+	"\u5746>F{e2}n;",
+	"\u5747>Jun;",
+	"\u5748>Keng;",
+	"\u5749>T{u2}n;",
+	"\u574A>Fang;",
+	"\u574B>F{e4}n;",
+	"\u574C>B{e4}n;",
+	"\u574D>Tan;",
+	"\u574E>K{a3}n;",
+	"\u574F>Pi;",
+	"\u5750>Zu{o4};",
+	"\u5751>Keng;",
+	"\u5752>B{i4};",
+	"\u5753>X{i2}ng;",
+	"\u5754>D{i4};",
+	"\u5755>Jing;",
+	"\u5756>J{i4};",
+	"\u5757>Kua{i4};",
+	"\u5758>D{i3};",
+	"\u5759>Jing;",
+	"\u575A>Jian;",
+	"\u575B>T{a2}n;",
+	"\u575C>L{i4};",
+	"\u575D>B{a4};",
+	"\u575E>W{u4};",
+	"\u575F>F{e2}n;",
+	"\u5760>Zhu{i4};",
+	"\u5761>Po;",
+	"\u5762>P{a3}n;",
+	"\u5763>Tang;",
+	"\u5764>Kun;",
+	"\u5765>Qu;",
+	"\u5766>T{a3}n;",
+	"\u5767>Zhi;",
+	"\u5768>Tu{o2};",
+	"\u5769>Gan;",
+	"\u576A>P{i2}ng;",
+	"\u576B>Di{a4}n;",
+	"\u576C>Gu{a4};",
+	"\u576D>N{i2};",
+	"\u576E>Ta{i2};",
+	"\u576F>Pi;",
+	"\u5770>Jiong;",
+	"\u5771>Y{a3}ng;",
+	"\u5772>F{o2};",
+	"\u5773>A{o4};",
+	"\u5774>Li{u4};",
+	"\u5775>Qiu;",
+	"\u5776>M{u4};",
+	"\u5777>K{e3};",
+	"\u5778>Go{u4};",
+	"\u5779>Xu{e4};",
+	"\u577A>B{a2};",
+	"\u577B>Ch{i2};",
+	"\u577C>Ch{e4};",
+	"\u577D>L{i2}ng;",
+	"\u577E>Zh{u4};",
+	"\u577F>F{u4};",
+	"\u5780>Hu;",
+	"\u5781>Zh{i4};",
+	"\u5782>Chu{i2};",
+	"\u5783>La;",
+	"\u5784>L{o3}ng;",
+	"\u5785>L{o3}ng;",
+	"\u5786>L{u2};",
+	"\u5787>A{o4};",
+	"\u5789>Pa{o2};",
+	"\u578B>X{i2}ng;",
+	"\u578C>D{o4}ng;",
+	"\u578D>J{i4};",
+	"\u578E>K{e4};",
+	"\u578F>L{u4};",
+	"\u5790>C{i2};",
+	"\u5791>Ch{i3};",
+	"\u5792>Le{i3};",
+	"\u5793>Gai;",
+	"\u5794>Yin;",
+	"\u5795>Ho{u4};",
+	"\u5796>Dui;",
+	"\u5797>Zha{o4};",
+	"\u5798>F{u2};",
+	"\u5799>Guang;",
+	"\u579A>Ya{o2};",
+	"\u579B>Du{o3};",
+	"\u579C>Du{o3};",
+	"\u579D>Gu{i3};",
+	"\u579E>Ch{a2};",
+	"\u579F>Y{a2}ng;",
+	"\u57A0>Y{i2}n;",
+	"\u57A1>F{a2};",
+	"\u57A2>Go{u4};",
+	"\u57A3>Yu{a2}n;",
+	"\u57A4>Di{e2};",
+	"\u57A5>Xi{e2};",
+	"\u57A6>K{e3}n;",
+	"\u57A7>Jiong;",
+	"\u57A8>Sho{u3};",
+	"\u57A9>{E4};",
+	"\u57AB>Di{a4}n;",
+	"\u57AC>H{o2}ng;",
+	"\u57AD>W{u4};",
+	"\u57AE>Ku{a3};",
+	"\u57B1>D{a4}ng;",
+	"\u57B2>Ka{i3};",
+	"\u57B4>Na{o3};",
+	"\u57B5>{a3}n;",
+	"\u57B6>Xing;",
+	"\u57B7>Xi{a4}n;",
+	"\u57B8>Hu{a4}n;",
+	"\u57B9>Bang;",
+	"\u57BA>Pei;",
+	"\u57BB>B{a4};",
+	"\u57BC>Y{i4};",
+	"\u57BD>Y{i4}n;",
+	"\u57BE>H{a4}n;",
+	"\u57BF>X{u4};",
+	"\u57C0>Chu{i2};",
+	"\u57C1>C{e2}n;",
+	"\u57C2>G{e3}ng;",
+	"\u57C3>Ai;",
+	"\u57C4>P{e2}ng;",
+	"\u57C5>F{a2}ng;",
+	"\u57C6>Qu{e4};",
+	"\u57C7>Y{o3}ng;",
+	"\u57C8>X{u4}n;",
+	"\u57C9>Ji{a2};",
+	"\u57CA>D{i4};",
+	"\u57CB>Ma{i2};",
+	"\u57CC>L{a4}ng;",
+	"\u57CD>Xu{a4}n;",
+	"\u57CE>Ch{e2}ng;",
+	"\u57CF>Y{a2}n;",
+	"\u57D0>Jin;",
+	"\u57D1>Zh{e2};",
+	"\u57D2>Le{i4};",
+	"\u57D3>Li{e4};",
+	"\u57D4>B{u4};",
+	"\u57D5>Ch{e2}ng;",
+	"\u57D7>B{u4};",
+	"\u57D8>Sh{i2};",
+	"\u57D9>Xun;",
+	"\u57DA>Guo;",
+	"\u57DB>Jiong;",
+	"\u57DC>Y{e3};",
+	"\u57DD>Ni{a4}n;",
+	"\u57DE>D{i3};",
+	"\u57DF>Y{u4};",
+	"\u57E0>B{u4};",
+	"\u57E1>Y{a4};",
+	"\u57E2>Ju{a3}n;",
+	"\u57E3>Su{i4};",
+	"\u57E4>P{i2};",
+	"\u57E5>Cheng;",
+	"\u57E6>W{a3}n;",
+	"\u57E7>J{u4};",
+	"\u57E8>L{u3}n;",
+	"\u57E9>Zheng;",
+	"\u57EA>Kong;",
+	"\u57EB>Ch{o3}ng;",
+	"\u57EC>Dong;",
+	"\u57ED>Da{i4};",
+	"\u57EE>T{a4}n;",
+	"\u57EF>{a3}n;",
+	"\u57F0>Ca{i4};",
+	"\u57F1>Sh{u2};",
+	"\u57F2>B{e3}ng;",
+	"\u57F3>K{a3}n;",
+	"\u57F4>Zh{i2};",
+	"\u57F5>Du{o3};",
+	"\u57F6>Y{i4};",
+	"\u57F7>Zh{i2};",
+	"\u57F8>Y{i4};",
+	"\u57F9>Pe{i2};",
+	"\u57FA>Ji;",
+	"\u57FB>Zh{u3}n;",
+	"\u57FC>Q{i2};",
+	"\u57FD>Sa{o4};",
+	"\u57FE>J{u4};",
+	"\u57FF>N{i2};",
+	"\u5800>Ku;",
+	"\u5801>K{e4};",
+	"\u5802>T{a2}ng;",
+	"\u5803>Kun;",
+	"\u5804>N{i4};",
+	"\u5805>Jian;",
+	"\u5806>Dui;",
+	"\u5807>J{i3}n;",
+	"\u5808>Gang;",
+	"\u5809>Y{u4};",
+	"\u580A>{E4};",
+	"\u580B>P{e2}ng;",
+	"\u580C>G{u4};",
+	"\u580D>T{u4};",
+	"\u580E>L{e4}ng;",
+	"\u5810>Y{a2};",
+	"\u5811>Qi{a4}n;",
+	"\u5813>{A4}n;",
+	"\u5815>Du{o4};",
+	"\u5816>Na{o3};",
+	"\u5817>Tu;",
+	"\u5818>Ch{e2}ng;",
+	"\u5819>Yin;",
+	"\u581A>H{u2}n;",
+	"\u581B>B{i4};",
+	"\u581C>Li{a4}n;",
+	"\u581D>Guo;",
+	"\u581E>Di{e2};",
+	"\u581F>Zhu{a4}n;",
+	"\u5820>Ho{u4};",
+	"\u5821>Ba{o3};",
+	"\u5822>Ba{o3};",
+	"\u5823>Y{u2};",
+	"\u5824>Di;",
+	"\u5825>Ma{o2};",
+	"\u5826>Jie;",
+	"\u5827>Ru{a2}n;",
+	"\u5828>{E4};",
+	"\u5829>G{e4}ng;",
+	"\u582A>Kan;",
+	"\u582B>Zong;",
+	"\u582C>Y{u2};",
+	"\u582D>Hu{a2}ng;",
+	"\u582E>{E4};",
+	"\u582F>Ya{o2};",
+	"\u5830>Y{a4}n;",
+	"\u5831>Ba{o4};",
+	"\u5832>J{i2};",
+	"\u5833>Me{i2};",
+	"\u5834>Ch{a2}ng;",
+	"\u5835>D{u3};",
+	"\u5836>Tu{o2};",
+	"\u5837>Y{i4}n;",
+	"\u5838>F{e2}ng;",
+	"\u5839>Zh{o4}ng;",
+	"\u583A>Ji{e4};",
+	"\u583B>Zhen;",
+	"\u583C>Feng;",
+	"\u583D>Gang;",
+	"\u583E>Chu{a3}n;",
+	"\u583F>Ji{a3}n;",
+	"\u5842>Xi{a4}ng;",
+	"\u5843>Huang;",
+	"\u5844>L{e2}ng;",
+	"\u5845>Du{a4}n;",
+	"\u5847>Xuan;",
+	"\u5848>J{i4};",
+	"\u5849>J{i2};",
+	"\u584A>Kua{i4};",
+	"\u584B>Y{i2}ng;",
+	"\u584C>Ta;",
+	"\u584D>Ch{e2}ng;",
+	"\u584E>Y{o3}ng;",
+	"\u584F>Ka{i3};",
+	"\u5850>S{u4};",
+	"\u5851>S{u4};",
+	"\u5852>Sh{i2};",
+	"\u5853>M{i4};",
+	"\u5854>T{a3};",
+	"\u5855>W{e3}ng;",
+	"\u5856>Ch{e2}ng;",
+	"\u5857>T{u2};",
+	"\u5858>T{a2}ng;",
+	"\u5859>Qu{e4};",
+	"\u585A>Zh{o3}ng;",
+	"\u585B>L{i4};",
+	"\u585C>P{e2}ng;",
+	"\u585D>B{a4}ng;",
+	"\u585E>Sai;",
+	"\u585F>Z{a4}ng;",
+	"\u5860>Dui;",
+	"\u5861>Ti{a2}n;",
+	"\u5862>W{u4};",
+	"\u5863>Ch{e3}ng;",
+	"\u5864>Xun;",
+	"\u5865>G{e2};",
+	"\u5866>Zh{e4}n;",
+	"\u5867>A{i4};",
+	"\u5868>Gong;",
+	"\u5869>Y{a2}n;",
+	"\u586A>K{a3}n;",
+	"\u586B>Ti{a2}n;",
+	"\u586C>Yu{a2}n;",
+	"\u586D>Wen;",
+	"\u586E>Xi{e4};",
+	"\u586F>Li{u4};",
+	"\u5871>L{a3}ng;",
+	"\u5872>Ch{a2}ng;",
+	"\u5873>P{e2}ng;",
+	"\u5874>B{e4}ng;",
+	"\u5875>Ch{e2}n;",
+	"\u5876>C{u4};",
+	"\u5877>L{u3};",
+	"\u5878>O{u3};",
+	"\u5879>Qi{a4}n;",
+	"\u587A>Me{i2};",
+	"\u587B>M{o4};",
+	"\u587C>Zhuan;",
+	"\u587D>Shu{a3}ng;",
+	"\u587E>Sh{u2};",
+	"\u587F>Lo{u3};",
+	"\u5880>Ch{i2};",
+	"\u5881>M{a4}n;",
+	"\u5882>Biao;",
+	"\u5883>J{i4}ng;",
+	"\u5884>Qi;",
+	"\u5885>Sh{u4};",
+	"\u5886>D{i4};",
+	"\u5887>Zhang;",
+	"\u5888>K{a4}n;",
+	"\u5889>Yong;",
+	"\u588A>Di{a4}n;",
+	"\u588B>Ch{e3}n;",
+	"\u588C>Zhi;",
+	"\u588D>X{i4};",
+	"\u588E>Guo;",
+	"\u588F>Qi{a3}ng;",
+	"\u5890>J{i4}n;",
+	"\u5891>Di;",
+	"\u5892>Shang;",
+	"\u5893>M{u4};",
+	"\u5894>Cui;",
+	"\u5895>Y{a4}n;",
+	"\u5896>T{a3};",
+	"\u5897>Zeng;",
+	"\u5898>Q{i2};",
+	"\u5899>Qi{a2}ng;",
+	"\u589A>Li{a2}ng;",
+	"\u589C>Zhu{i4};",
+	"\u589D>Qiao;",
+	"\u589E>Zeng;",
+	"\u589F>Xu;",
+	"\u58A0>Sh{a4}n;",
+	"\u58A1>Sh{a4}n;",
+	"\u58A2>B{a2};",
+	"\u58A3>Pu;",
+	"\u58A4>Kua{i4};",
+	"\u58A5>D{o3}ng;",
+	"\u58A6>F{a2}n;",
+	"\u58A7>Qu{e4};",
+	"\u58A8>M{o4};",
+	"\u58A9>Dun;",
+	"\u58AA>Dun;",
+	"\u58AB>Dun;",
+	"\u58AC>D{i4};",
+	"\u58AD>Sh{e4}ng;",
+	"\u58AE>Du{o4};",
+	"\u58AF>Du{o4};",
+	"\u58B0>T{a2}n;",
+	"\u58B1>D{e4}ng;",
+	"\u58B2>W{u3};",
+	"\u58B3>F{e2}n;",
+	"\u58B4>Hu{a2}ng;",
+	"\u58B5>T{a2}n;",
+	"\u58B6>Da;",
+	"\u58B7>Y{e4};",
+	"\u58BA>Y{u4};",
+	"\u58BB>Qi{a2}ng;",
+	"\u58BC>Ji;",
+	"\u58BD>Qiao;",
+	"\u58BE>K{e3}n;",
+	"\u58BF>Y{i4};",
+	"\u58C0>P{i2};",
+	"\u58C1>B{i4};",
+	"\u58C2>Di{a4}n;",
+	"\u58C3>Jiang;",
+	"\u58C4>Y{e3};",
+	"\u58C5>Yong;",
+	"\u58C6>B{o2};",
+	"\u58C7>T{a2}n;",
+	"\u58C8>L{a3}n;",
+	"\u58C9>J{u4};",
+	"\u58CA>Hua{i4};",
+	"\u58CB>D{a4}ng;",
+	"\u58CC>R{a3}ng;",
+	"\u58CD>Qi{a4}n;",
+	"\u58CE>Xun;",
+	"\u58CF>L{a4}n;",
+	"\u58D0>X{i3};",
+	"\u58D1>H{e4};",
+	"\u58D2>A{i4};",
+	"\u58D3>Ya;",
+	"\u58D4>Da{o3};",
+	"\u58D5>Ha{o2};",
+	"\u58D6>Ru{a2}n;",
+	"\u58D8>Le{i3};",
+	"\u58D9>Ku{a4}ng;",
+	"\u58DA>L{u2};",
+	"\u58DB>Y{a2}n;",
+	"\u58DC>T{a2}n;",
+	"\u58DD>We{i2};",
+	"\u58DE>Hua{i4};",
+	"\u58DF>L{o3}ng;",
+	"\u58E0>L{o3}ng;",
+	"\u58E1>Ru{i4};",
+	"\u58E2>L{i4};",
+	"\u58E3>L{i2}n;",
+	"\u58E4>R{a3}ng;",
+	"\u58E6>Xun;",
+	"\u58E7>Y{a2}n;",
+	"\u58E8>Le{i2};",
+	"\u58E9>B{a4};",
+	"\u58EB>Sh{i4};",
+	"\u58EC>R{e2}n;",
+	"\u58EE>Zhu{a4}ng;",
+	"\u58EF>Zhu{a4}ng;",
+	"\u58F0>Sheng;",
+	"\u58F1>Yi;",
+	"\u58F2>Ma{i4};",
+	"\u58F3>K{e2};",
+	"\u58F4>Zh{u3};",
+	"\u58F5>Zhu{a4}ng;",
+	"\u58F6>H{u2};",
+	"\u58F7>H{u2};",
+	"\u58F8>K{u3}n;",
+	"\u58F9>Yi;",
+	"\u58FA>H{u2};",
+	"\u58FB>X{u4};",
+	"\u58FC>K{u3}n;",
+	"\u58FD>Sho{u4};",
+	"\u58FE>M{a3}ng;",
+	"\u58FF>Z{u3}n;",
+	"\u5900>Sho{u4};",
+	"\u5901>Yi;",
+	"\u5902>Zh{i3};",
+	"\u5903>Gu;",
+	"\u5904>Ch{u4};",
+	"\u5905>Ji{a4}ng;",
+	"\u5906>Feng;",
+	"\u5907>Be{i4};",
+	"\u5909>Bi{a4}n;",
+	"\u590A>Sui;",
+	"\u590B>Qun;",
+	"\u590C>L{i2}ng;",
+	"\u590D>F{u4};",
+	"\u590E>Zu{o4};",
+	"\u590F>Xi{a4};",
+	"\u5910>Xi{o4}ng;",
+	"\u5912>Na{o2};",
+	"\u5913>Xi{a4};",
+	"\u5914>Ku{i2};",
+	"\u5915>Xi;",
+	"\u5916>Wa{i4};",
+	"\u5917>Yu{a4}n;",
+	"\u5918>Ma{o3};",
+	"\u5919>S{u4};",
+	"\u591A>Duo;",
+	"\u591B>Duo;",
+	"\u591C>Y{e4};",
+	"\u591D>Q{i2}ng;",
+	"\u591F>Go{u4};",
+	"\u5920>Go{u4};",
+	"\u5921>Q{i4};",
+	"\u5922>M{e4}ng;",
+	"\u5923>M{e4}ng;",
+	"\u5924>Y{i2}n;",
+	"\u5925>Hu{o3};",
+	"\u5926>Ch{e4}n;",
+	"\u5927>D{a4};",
+	"\u5928>Z{e4};",
+	"\u5929>Tian;",
+	"\u592A>Ta{i4};",
+	"\u592B>Fu;",
+	"\u592C>Gua{i4};",
+	"\u592D>Ya{o3};",
+	"\u592E>Yang;",
+	"\u592F>Hang;",
+	"\u5930>Ga{o3};",
+	"\u5931>Shi;",
+	"\u5932>B{e3}n;",
+	"\u5933>Ta{i4};",
+	"\u5934>To{u2};",
+	"\u5935>Y{a3}n;",
+	"\u5936>B{i3};",
+	"\u5937>Y{i2};",
+	"\u5938>Kua;",
+	"\u5939>Jia;",
+	"\u593A>Du{o2};",
+	"\u593C>Ku{a3}ng;",
+	"\u593D>Y{u4}n;",
+	"\u593E>Jia;",
+	"\u593F>Pa;",
+	"\u5940>En;",
+	"\u5941>Li{a2}n;",
+	"\u5942>Hu{a4}n;",
+	"\u5943>D{i4};",
+	"\u5944>Y{a3}n;",
+	"\u5945>Pa{o4};",
+	"\u5946>Qu{a3}n;",
+	"\u5947>Q{i2};",
+	"\u5948>Na{i4};",
+	"\u5949>F{e4}ng;",
+	"\u594A>Xi{e2};",
+	"\u594B>F{e4}n;",
+	"\u594C>Di{a3}n;",
+	"\u594E>Ku{i2};",
+	"\u594F>Zo{u4};",
+	"\u5950>Hu{a4}n;",
+	"\u5951>Q{i4};",
+	"\u5952>Kai;",
+	"\u5953>Zh{a4};",
+	"\u5954>Ben;",
+	"\u5955>Y{i4};",
+	"\u5956>Ji{a3}ng;",
+	"\u5957>Ta{o4};",
+	"\u5958>Z{a4}ng;",
+	"\u5959>B{e3}n;",
+	"\u595A>Xi;",
+	"\u595B>Xi{a3}ng;",
+	"\u595C>Fe{i3};",
+	"\u595D>Diao;",
+	"\u595E>X{u4}n;",
+	"\u595F>Keng;",
+	"\u5960>Di{a4}n;",
+	"\u5961>A{o4};",
+	"\u5962>She;",
+	"\u5963>W{e3}ng;",
+	"\u5964>P{a3}n;",
+	"\u5965>A{o4};",
+	"\u5966>W{u4};",
+	"\u5967>A{o4};",
+	"\u5968>Ji{a3}ng;",
+	"\u5969>Li{a2}n;",
+	"\u596A>Du{o2};",
+	"\u596B>Yun;",
+	"\u596C>Ji{a3}ng;",
+	"\u596D>Sh{i4};",
+	"\u596E>F{e4}n;",
+	"\u596F>Hu{o4};",
+	"\u5970>B{i4};",
+	"\u5971>Li{a2}n;",
+	"\u5972>Du{o3};",
+	"\u5973>N{uu3};",
+	"\u5974>N{u2};",
+	"\u5975>Ding;",
+	"\u5976>Na{i3};",
+	"\u5977>Qian;",
+	"\u5978>Jian;",
+	"\u5979>Ta;",
+	"\u597A>Ji{u3};",
+	"\u597B>N{a2}n;",
+	"\u597C>Ch{a4};",
+	"\u597D>Ha{o3};",
+	"\u597E>Xian;",
+	"\u597F>F{a4}n;",
+	"\u5980>J{i3};",
+	"\u5981>Shu{o4};",
+	"\u5982>R{u2};",
+	"\u5983>Fei;",
+	"\u5984>W{a4}ng;",
+	"\u5985>H{o2}ng;",
+	"\u5986>Zhuang;",
+	"\u5987>F{u4};",
+	"\u5988>Ma;",
+	"\u5989>Dan;",
+	"\u598A>R{e4}n;",
+	"\u598B>Fu;",
+	"\u598C>J{i4}ng;",
+	"\u598D>Y{a2}n;",
+	"\u598E>Xi{e4};",
+	"\u598F>W{e4}n;",
+	"\u5990>Zhong;",
+	"\u5991>Pa;",
+	"\u5992>D{u4};",
+	"\u5993>J{i4};",
+	"\u5994>Keng;",
+	"\u5995>Zh{o4}ng;",
+	"\u5996>Yao;",
+	"\u5997>J{i4}n;",
+	"\u5998>Y{u2}n;",
+	"\u5999>Mia{o4};",
+	"\u599A>Pei;",
+	"\u599C>Yu{e4};",
+	"\u599D>Zhuang;",
+	"\u599E>Niu;",
+	"\u599F>Y{a4}n;",
+	"\u59A0>N{a4};",
+	"\u59A1>Xin;",
+	"\u59A2>F{e2}n;",
+	"\u59A3>B{i3};",
+	"\u59A4>Y{u2};",
+	"\u59A5>Tu{o3};",
+	"\u59A6>Feng;",
+	"\u59A7>Yu{a2}n;",
+	"\u59A8>F{a2}ng;",
+	"\u59A9>W{u3};",
+	"\u59AA>Y{u4};",
+	"\u59AB>Gui;",
+	"\u59AC>D{u4};",
+	"\u59AD>B{a2};",
+	"\u59AE>Ni;",
+	"\u59AF>Zho{u2};",
+	"\u59B0>Zhu{o2};",
+	"\u59B1>Zhao;",
+	"\u59B2>D{a2};",
+	"\u59B3>Na{i3};",
+	"\u59B4>Yu{a3}n;",
+	"\u59B5>To{u3};",
+	"\u59B6>Xu{a2}n;",
+	"\u59B7>Zh{i2};",
+	"\u59B8>E;",
+	"\u59B9>Me{i4};",
+	"\u59BA>M{o4};",
+	"\u59BB>Qi;",
+	"\u59BC>B{i4};",
+	"\u59BD>Shen;",
+	"\u59BE>Qi{e4};",
+	"\u59BF>E;",
+	"\u59C0>H{e2};",
+	"\u59C1>X{u3};",
+	"\u59C2>F{a2};",
+	"\u59C3>Zheng;",
+	"\u59C4>M{i2}n;",
+	"\u59C5>B{a4}n;",
+	"\u59C6>M{u3};",
+	"\u59C7>Fu;",
+	"\u59C8>L{i2}ng;",
+	"\u59C9>Z{i3};",
+	"\u59CA>Z{i3};",
+	"\u59CB>Sh{i3};",
+	"\u59CC>R{a3}n;",
+	"\u59CD>Shan;",
+	"\u59CE>Yang;",
+	"\u59CF>M{a2}n;",
+	"\u59D0>Ji{e3};",
+	"\u59D1>Gu;",
+	"\u59D2>S{i4};",
+	"\u59D3>X{i4}ng;",
+	"\u59D4>We{i3};",
+	"\u59D5>Zi;",
+	"\u59D6>J{u4};",
+	"\u59D7>Shan;",
+	"\u59D8>Pin;",
+	"\u59D9>R{e4}n;",
+	"\u59DA>Ya{o2};",
+	"\u59DB>T{o3}ng;",
+	"\u59DC>Jiang;",
+	"\u59DD>Shu;",
+	"\u59DE>J{i2};",
+	"\u59DF>Gai;",
+	"\u59E0>Sh{a4}ng;",
+	"\u59E1>Ku{o4};",
+	"\u59E2>Juan;",
+	"\u59E3>Jiao;",
+	"\u59E4>Go{u4};",
+	"\u59E5>M{u3};",
+	"\u59E6>Jian;",
+	"\u59E7>Jian;",
+	"\u59E8>Y{i2};",
+	"\u59E9>Ni{a4}n;",
+	"\u59EA>Zh{i2};",
+	"\u59EB>Ji;",
+	"\u59EC>Ji;",
+	"\u59ED>Xi{a4}n;",
+	"\u59EE>H{e2}ng;",
+	"\u59EF>Guang;",
+	"\u59F0>Jun;",
+	"\u59F1>Kua;",
+	"\u59F2>Y{a4}n;",
+	"\u59F3>M{i3}ng;",
+	"\u59F4>Li{e4};",
+	"\u59F5>Pe{i4};",
+	"\u59F6>Y{a3}n;",
+	"\u59F7>Yo{u4};",
+	"\u59F8>Y{a2}n;",
+	"\u59F9>Ch{a4};",
+	"\u59FA>Shen;",
+	"\u59FB>Yin;",
+	"\u59FC>Ch{i3};",
+	"\u59FD>Gu{i3};",
+	"\u59FE>Quan;",
+	"\u59FF>Zi;",
+	"\u5A00>Song;",
+	"\u5A01>Wei;",
+	"\u5A02>H{o2}ng;",
+	"\u5A03>W{a2};",
+	"\u5A04>Lo{u2};",
+	"\u5A05>Y{a4};",
+	"\u5A06>Ra{o3};",
+	"\u5A07>Jiao;",
+	"\u5A08>Lu{a2}n;",
+	"\u5A09>Ping;",
+	"\u5A0A>Xi{a4}n;",
+	"\u5A0B>Sha{o4};",
+	"\u5A0C>L{i3};",
+	"\u5A0D>Ch{e2}ng;",
+	"\u5A0E>Xia{o4};",
+	"\u5A0F>M{a2}ng;",
+	"\u5A10>Fu;",
+	"\u5A11>Suo;",
+	"\u5A12>W{u3};",
+	"\u5A13>We{i3};",
+	"\u5A14>K{e4};",
+	"\u5A15>La{i4};",
+	"\u5A16>Chu{o4};",
+	"\u5A17>D{i4}ng;",
+	"\u5A18>Ni{a2}ng;",
+	"\u5A19>X{i2}ng;",
+	"\u5A1A>N{a2}n;",
+	"\u5A1B>Y{u2};",
+	"\u5A1C>Nu{o2};",
+	"\u5A1D>Pei;",
+	"\u5A1E>Ne{i3};",
+	"\u5A1F>Juan;",
+	"\u5A20>Shen;",
+	"\u5A21>Zh{i4};",
+	"\u5A22>H{a2}n;",
+	"\u5A23>D{i4};",
+	"\u5A24>Zhuang;",
+	"\u5A25>{E2};",
+	"\u5A26>P{i2}n;",
+	"\u5A27>Tu{i4};",
+	"\u5A28>H{a4}n;",
+	"\u5A29>Mi{a3}n;",
+	"\u5A2A>W{u2};",
+	"\u5A2B>Y{a2}n;",
+	"\u5A2C>W{u3};",
+	"\u5A2D>Xi;",
+	"\u5A2E>Y{a2}n;",
+	"\u5A2F>Y{u2};",
+	"\u5A30>S{i4};",
+	"\u5A31>Y{u2};",
+	"\u5A32>Wa;",
+	"\u5A34>Xi{a2}n;",
+	"\u5A35>Ju;",
+	"\u5A36>Q{u3};",
+	"\u5A37>Shu{i4};",
+	"\u5A38>Qi;",
+	"\u5A39>Xi{a2}n;",
+	"\u5A3A>Zhui;",
+	"\u5A3B>Dong;",
+	"\u5A3C>Chang;",
+	"\u5A3D>L{u4};",
+	"\u5A3E>A{i3};",
+	"\u5A3F>E;",
+	"\u5A40>E;",
+	"\u5A41>Lo{u2};",
+	"\u5A42>Mi{a2}n;",
+	"\u5A43>C{o2}ng;",
+	"\u5A44>Po{u3};",
+	"\u5A45>J{u2};",
+	"\u5A46>P{o2};",
+	"\u5A47>Ca{i3};",
+	"\u5A48>D{i2}ng;",
+	"\u5A49>W{a3}n;",
+	"\u5A4A>Bia{o3};",
+	"\u5A4B>Xiao;",
+	"\u5A4C>Sh{u3};",
+	"\u5A4D>Q{i3};",
+	"\u5A4E>Hui;",
+	"\u5A4F>F{u4};",
+	"\u5A50>E;",
+	"\u5A51>W{o3};",
+	"\u5A52>T{a2}n;",
+	"\u5A53>Fei;",
+	"\u5A54>Wei;",
+	"\u5A55>Ji{e2};",
+	"\u5A56>Tian;",
+	"\u5A57>N{i2};",
+	"\u5A58>Qu{a2}n;",
+	"\u5A59>J{i4}ng;",
+	"\u5A5A>Hun;",
+	"\u5A5B>Jing;",
+	"\u5A5C>Qian;",
+	"\u5A5D>Di{a4}n;",
+	"\u5A5E>X{i4}ng;",
+	"\u5A5F>H{u4};",
+	"\u5A60>W{a4};",
+	"\u5A61>La{i2};",
+	"\u5A62>B{i4};",
+	"\u5A63>Yin;",
+	"\u5A64>Chou;",
+	"\u5A65>Chu{o4};",
+	"\u5A66>F{u4};",
+	"\u5A67>J{i4}ng;",
+	"\u5A68>L{u2}n;",
+	"\u5A69>Y{a4}n;",
+	"\u5A6A>L{a2}n;",
+	"\u5A6B>Kun;",
+	"\u5A6C>Y{i2}n;",
+	"\u5A6D>Y{a4};",
+	"\u5A6E>Ju;",
+	"\u5A6F>L{i4};",
+	"\u5A70>Di{a3}n;",
+	"\u5A71>Xi{a2}n;",
+	"\u5A73>Hu{a4};",
+	"\u5A74>Ying;",
+	"\u5A75>Ch{a2}n;",
+	"\u5A76>Sh{e3}n;",
+	"\u5A77>T{i2}ng;",
+	"\u5A78>D{a4}ng;",
+	"\u5A79>Ya{o3};",
+	"\u5A7A>W{u4};",
+	"\u5A7B>N{a4}n;",
+	"\u5A7C>Ru{o4};",
+	"\u5A7D>Ji{a3};",
+	"\u5A7E>Tou;",
+	"\u5A7F>X{u4};",
+	"\u5A80>Y{u2};",
+	"\u5A81>Wei;",
+	"\u5A82>T{i2};",
+	"\u5A83>Ro{u2};",
+	"\u5A84>Me{i3};",
+	"\u5A85>Dan;",
+	"\u5A86>Ru{a3}n;",
+	"\u5A87>Qin;",
+	"\u5A88>Hui;",
+	"\u5A89>Wu;",
+	"\u5A8A>Qi{a2}n;",
+	"\u5A8B>Chun;",
+	"\u5A8C>Ma{o2};",
+	"\u5A8D>F{u4};",
+	"\u5A8E>Ji{e3};",
+	"\u5A8F>Duan;",
+	"\u5A90>Xi;",
+	"\u5A91>Zh{o4}ng;",
+	"\u5A92>Me{i2};",
+	"\u5A93>Hu{a2}ng;",
+	"\u5A94>Mi{a2}n;",
+	"\u5A95>An;",
+	"\u5A96>Ying;",
+	"\u5A97>Xuan;",
+	"\u5A98>Jie;",
+	"\u5A99>Wei;",
+	"\u5A9A>Me{i4};",
+	"\u5A9B>Yu{a4}n;",
+	"\u5A9C>Zhen;",
+	"\u5A9D>Qiu;",
+	"\u5A9E>T{i2};",
+	"\u5A9F>Xi{e4};",
+	"\u5AA0>Tu{o3};",
+	"\u5AA1>Li{a4}n;",
+	"\u5AA2>Ma{o4};",
+	"\u5AA3>R{a3}n;",
+	"\u5AA4>Si;",
+	"\u5AA5>Pian;",
+	"\u5AA6>We{i4};",
+	"\u5AA7>Wa;",
+	"\u5AA8>Ji{u4};",
+	"\u5AA9>H{u2};",
+	"\u5AAA>A{o3};",
+	"\u5AAD>Xu;",
+	"\u5AAE>Tou;",
+	"\u5AAF>Gui;",
+	"\u5AB0>Zou;",
+	"\u5AB1>Ya{o2};",
+	"\u5AB2>P{i4};",
+	"\u5AB3>X{i2};",
+	"\u5AB4>Yu{a2}n;",
+	"\u5AB5>Y{i4}ng;",
+	"\u5AB6>R{o2}ng;",
+	"\u5AB7>R{u4};",
+	"\u5AB8>Chi;",
+	"\u5AB9>Li{u2};",
+	"\u5ABA>Me{i3};",
+	"\u5ABB>P{a2}n;",
+	"\u5ABC>A{o3};",
+	"\u5ABD>Ma;",
+	"\u5ABE>Go{u4};",
+	"\u5ABF>Ku{i4};",
+	"\u5AC0>Q{i2}n;",
+	"\u5AC1>Ji{a4};",
+	"\u5AC2>Sa{o3};",
+	"\u5AC3>Zhen;",
+	"\u5AC4>Yu{a2}n;",
+	"\u5AC5>Cha;",
+	"\u5AC6>Y{o2}ng;",
+	"\u5AC7>M{i2}ng;",
+	"\u5AC8>Ying;",
+	"\u5AC9>J{i2};",
+	"\u5ACA>S{u4};",
+	"\u5ACB>Nia{o3};",
+	"\u5ACC>Xi{a2}n;",
+	"\u5ACD>Tao;",
+	"\u5ACE>P{a2}ng;",
+	"\u5ACF>L{a2}ng;",
+	"\u5AD0>Na{o3};",
+	"\u5AD1>Ba{o2};",
+	"\u5AD2>A{i4};",
+	"\u5AD3>P{i4};",
+	"\u5AD4>P{i2}n;",
+	"\u5AD5>Y{i4};",
+	"\u5AD6>Pia{o4};",
+	"\u5AD7>Y{u4};",
+	"\u5AD8>Le{i2};",
+	"\u5AD9>Xu{a2}n;",
+	"\u5ADA>M{a4}n;",
+	"\u5ADB>Yi;",
+	"\u5ADC>Zhang;",
+	"\u5ADD>Kang;",
+	"\u5ADE>Y{o2}ng;",
+	"\u5ADF>N{i4};",
+	"\u5AE0>L{i2};",
+	"\u5AE1>D{i2};",
+	"\u5AE2>Gui;",
+	"\u5AE3>Yan;",
+	"\u5AE4>J{i4}n;",
+	"\u5AE5>Zhuan;",
+	"\u5AE6>Ch{a2}ng;",
+	"\u5AE7>C{e4};",
+	"\u5AE8>Han;",
+	"\u5AE9>N{e4}n;",
+	"\u5AEA>La{o4};",
+	"\u5AEB>M{o2};",
+	"\u5AEC>Zhe;",
+	"\u5AED>H{u4};",
+	"\u5AEE>H{u4};",
+	"\u5AEF>A{o4};",
+	"\u5AF0>N{e4}n;",
+	"\u5AF1>Qi{a2}ng;",
+	"\u5AF3>Pi{e4};",
+	"\u5AF4>Gu;",
+	"\u5AF5>W{u3};",
+	"\u5AF6>Jia{o2};",
+	"\u5AF7>Tu{o3};",
+	"\u5AF8>Zh{a3}n;",
+	"\u5AF9>Ma{o2};",
+	"\u5AFA>Xi{a2}n;",
+	"\u5AFB>Xi{a2}n;",
+	"\u5AFC>M{o4};",
+	"\u5AFD>Lia{o2};",
+	"\u5AFE>Li{a2}n;",
+	"\u5AFF>Hu{a4};",
+	"\u5B00>Gui;",
+	"\u5B01>Deng;",
+	"\u5B02>Zhi;",
+	"\u5B03>Xu;",
+	"\u5B04>Yi;",
+	"\u5B05>Hu{a2};",
+	"\u5B06>Xi;",
+	"\u5B07>Hu{i4};",
+	"\u5B08>Ra{o3};",
+	"\u5B09>Xi;",
+	"\u5B0A>Y{a4}n;",
+	"\u5B0B>Ch{a2}n;",
+	"\u5B0C>Jiao;",
+	"\u5B0D>Me{i3};",
+	"\u5B0E>F{a4}n;",
+	"\u5B0F>Fan;",
+	"\u5B10>Xian;",
+	"\u5B11>Y{i4};",
+	"\u5B12>We{i4};",
+	"\u5B13>Jia{o4};",
+	"\u5B14>F{u4};",
+	"\u5B15>Sh{i4};",
+	"\u5B16>B{i4};",
+	"\u5B17>Sh{a4}n;",
+	"\u5B18>Su{i4};",
+	"\u5B19>Qi{a2}ng;",
+	"\u5B1A>Li{a3}n;",
+	"\u5B1B>Hu{a2}n;",
+	"\u5B1C>Xin;",
+	"\u5B1D>Nia{o3};",
+	"\u5B1E>D{o3}ng;",
+	"\u5B1F>Y{i4};",
+	"\u5B20>C{a2}n;",
+	"\u5B21>A{i4};",
+	"\u5B22>Ni{a2}ng;",
+	"\u5B23>N{e2}ng;",
+	"\u5B24>Ma;",
+	"\u5B25>Tia{o3};",
+	"\u5B26>Cho{u2};",
+	"\u5B27>J{i4}n;",
+	"\u5B28>C{i2};",
+	"\u5B29>Y{u2};",
+	"\u5B2A>P{i2}n;",
+	"\u5B2B>Yong;",
+	"\u5B2C>Xu;",
+	"\u5B2D>Na{i3};",
+	"\u5B2E>Yan;",
+	"\u5B2F>Ta{i2};",
+	"\u5B30>Ying;",
+	"\u5B31>C{a2}n;",
+	"\u5B32>Nia{o3};",
+	"\u5B33>Wo;",
+	"\u5B34>Y{i2}ng;",
+	"\u5B35>Mi{a2}n;",
+	"\u5B37>Ma;",
+	"\u5B38>Sh{e3}n;",
+	"\u5B39>X{i4}ng;",
+	"\u5B3A>N{i4};",
+	"\u5B3B>D{u2};",
+	"\u5B3C>Li{u3};",
+	"\u5B3D>Yuan;",
+	"\u5B3E>L{a3}n;",
+	"\u5B3F>Y{a4}n;",
+	"\u5B40>Shuang;",
+	"\u5B41>L{i2}ng;",
+	"\u5B42>Jia{o3};",
+	"\u5B43>Ni{a2}ng;",
+	"\u5B44>L{a3}n;",
+	"\u5B45>Xian;",
+	"\u5B46>Ying;",
+	"\u5B47>Shuang;",
+	"\u5B48>Shuai;",
+	"\u5B49>Qu{a2}n;",
+	"\u5B4A>M{i3};",
+	"\u5B4B>L{i2};",
+	"\u5B4C>Lu{a2}n;",
+	"\u5B4D>Y{a2}n;",
+	"\u5B4E>Zh{u3};",
+	"\u5B4F>L{a3}n;",
+	"\u5B50>Z{i3};",
+	"\u5B51>Ji{e2};",
+	"\u5B52>Ju{e2};",
+	"\u5B53>Ju{e2};",
+	"\u5B54>K{o3}ng;",
+	"\u5B55>Y{u4}n;",
+	"\u5B56>Zi;",
+	"\u5B57>Z{i4};",
+	"\u5B58>C{u2}n;",
+	"\u5B59>Sun;",
+	"\u5B5A>F{u2};",
+	"\u5B5B>Be{i4};",
+	"\u5B5C>Zi;",
+	"\u5B5D>Xia{o4};",
+	"\u5B5E>X{i4}n;",
+	"\u5B5F>M{e4}ng;",
+	"\u5B60>S{i4};",
+	"\u5B61>Tai;",
+	"\u5B62>Bao;",
+	"\u5B63>J{i4};",
+	"\u5B64>Gu;",
+	"\u5B65>N{u2};",
+	"\u5B66>Xu{e2};",
+	"\u5B68>Zhu{a3}n;",
+	"\u5B69>Ha{i2};",
+	"\u5B6A>Lu{a2}n;",
+	"\u5B6B>Sun;",
+	"\u5B6C>Hua{i4};",
+	"\u5B6D>Mie;",
+	"\u5B6E>C{o2}ng;",
+	"\u5B6F>Qian;",
+	"\u5B70>Sh{u2};",
+	"\u5B71>Ch{a2}n;",
+	"\u5B72>Ya;",
+	"\u5B73>Zi;",
+	"\u5B74>N{i3};",
+	"\u5B75>Fu;",
+	"\u5B76>Zi;",
+	"\u5B77>L{i2};",
+	"\u5B78>Xu{e2};",
+	"\u5B79>B{o4};",
+	"\u5B7A>R{u2};",
+	"\u5B7B>La{i2};",
+	"\u5B7C>Ni{e4};",
+	"\u5B7D>Ni{e4};",
+	"\u5B7E>Ying;",
+	"\u5B7F>Lu{a2}n;",
+	"\u5B80>Mi{a2}n;",
+	"\u5B81>Zh{u4};",
+	"\u5B82>R{o3}ng;",
+	"\u5B83>Ta;",
+	"\u5B84>Gu{i3};",
+	"\u5B85>Zha{i2};",
+	"\u5B86>Qi{o2}ng;",
+	"\u5B87>Y{u3};",
+	"\u5B88>Sho{u3};",
+	"\u5B89>An;",
+	"\u5B8A>T{u2};",
+	"\u5B8B>S{o4}ng;",
+	"\u5B8C>W{a2}n;",
+	"\u5B8D>Ro{u4};",
+	"\u5B8E>Ya{o3};",
+	"\u5B8F>H{o2}ng;",
+	"\u5B90>Y{i2};",
+	"\u5B91>J{i3}ng;",
+	"\u5B92>Zhun;",
+	"\u5B93>M{i4};",
+	"\u5B94>Zh{u3};",
+	"\u5B95>D{a4}ng;",
+	"\u5B96>H{o2}ng;",
+	"\u5B97>Zong;",
+	"\u5B98>Guan;",
+	"\u5B99>Zho{u4};",
+	"\u5B9A>D{i4}ng;",
+	"\u5B9B>W{a3}n;",
+	"\u5B9C>Y{i2};",
+	"\u5B9D>Ba{o3};",
+	"\u5B9E>Sh{i2};",
+	"\u5B9F>Sh{i2};",
+	"\u5BA0>Ch{o3}ng;",
+	"\u5BA1>Sh{e3}n;",
+	"\u5BA2>K{e4};",
+	"\u5BA3>Xuan;",
+	"\u5BA4>Sh{i4};",
+	"\u5BA5>Yo{u4};",
+	"\u5BA6>Hu{a4}n;",
+	"\u5BA7>Y{i2};",
+	"\u5BA8>Tia{o3};",
+	"\u5BA9>Sh{i3};",
+	"\u5BAA>Xi{a4}n;",
+	"\u5BAB>Gong;",
+	"\u5BAC>Ch{e2}ng;",
+	"\u5BAD>Q{u2}n;",
+	"\u5BAE>Gong;",
+	"\u5BAF>Xiao;",
+	"\u5BB0>Za{i3};",
+	"\u5BB1>Zh{a4};",
+	"\u5BB2>Ba{o3};",
+	"\u5BB3>Ha{i4};",
+	"\u5BB4>Y{a4}n;",
+	"\u5BB5>Xiao;",
+	"\u5BB6>Jia;",
+	"\u5BB7>Sh{e3}n;",
+	"\u5BB8>Ch{e2}n;",
+	"\u5BB9>R{o2}ng;",
+	"\u5BBA>Hu{a3}ng;",
+	"\u5BBB>M{i4};",
+	"\u5BBC>Ko{u4};",
+	"\u5BBD>Kuan;",
+	"\u5BBE>Bin;",
+	"\u5BBF>S{u4};",
+	"\u5BC0>Ca{i4};",
+	"\u5BC1>Z{a3}n;",
+	"\u5BC2>J{i4};",
+	"\u5BC3>Yuan;",
+	"\u5BC4>J{i4};",
+	"\u5BC5>Y{i2}n;",
+	"\u5BC6>M{i4};",
+	"\u5BC7>Ko{u4};",
+	"\u5BC8>Qing;",
+	"\u5BC9>Qu{e4};",
+	"\u5BCA>Zhen;",
+	"\u5BCB>Ji{a3}n;",
+	"\u5BCC>F{u4};",
+	"\u5BCD>N{i2}ng;",
+	"\u5BCE>B{i4}ng;",
+	"\u5BCF>Hu{a2}n;",
+	"\u5BD0>Me{i4};",
+	"\u5BD1>Q{i3}n;",
+	"\u5BD2>H{a2}n;",
+	"\u5BD3>Y{u4};",
+	"\u5BD4>Sh{i2};",
+	"\u5BD5>N{i2}ng;",
+	"\u5BD6>Q{i4}n;",
+	"\u5BD7>N{i2}ng;",
+	"\u5BD8>Zh{i4};",
+	"\u5BD9>Y{u3};",
+	"\u5BDA>Ba{o3};",
+	"\u5BDB>Kuan;",
+	"\u5BDC>N{i2}ng;",
+	"\u5BDD>Q{i3}n;",
+	"\u5BDE>M{o4};",
+	"\u5BDF>Ch{a2};",
+	"\u5BE0>J{u4};",
+	"\u5BE1>Gu{a3};",
+	"\u5BE2>Q{i3}n;",
+	"\u5BE3>Hu;",
+	"\u5BE4>W{u4};",
+	"\u5BE5>Lia{o2};",
+	"\u5BE6>Sh{i2};",
+	"\u5BE7>Zh{u4};",
+	"\u5BE8>Zha{i4};",
+	"\u5BE9>Sh{e3}n;",
+	"\u5BEA>We{i3};",
+	"\u5BEB>Xi{e3};",
+	"\u5BEC>Kuan;",
+	"\u5BED>Hu{i4};",
+	"\u5BEE>Lia{o2};",
+	"\u5BEF>J{u4}n;",
+	"\u5BF0>Hu{a2}n;",
+	"\u5BF1>Y{i4};",
+	"\u5BF2>Y{i2};",
+	"\u5BF3>Ba{o3};",
+	"\u5BF4>Q{i4}n;",
+	"\u5BF5>Ch{o3}ng;",
+	"\u5BF6>Ba{o3};",
+	"\u5BF7>Feng;",
+	"\u5BF8>C{u4}n;",
+	"\u5BF9>Du{i4};",
+	"\u5BFA>S{i4};",
+	"\u5BFB>X{u2}n;",
+	"\u5BFC>Da{o3};",
+	"\u5BFD>L{uu4};",
+	"\u5BFE>Du{i4};",
+	"\u5BFF>Sho{u4};",
+	"\u5C00>P{o3};",
+	"\u5C01>Feng;",
+	"\u5C02>Zhuan;",
+	"\u5C03>Fu;",
+	"\u5C04>Sh{e4};",
+	"\u5C05>K{e4};",
+	"\u5C06>Jiang;",
+	"\u5C07>Jiang;",
+	"\u5C08>Zhuan;",
+	"\u5C09>We{i4};",
+	"\u5C0A>Zun;",
+	"\u5C0B>X{u2}n;",
+	"\u5C0C>Sh{u4};",
+	"\u5C0D>Du{i4};",
+	"\u5C0E>Da{o3};",
+	"\u5C0F>Xia{o3};",
+	"\u5C10>Ji;",
+	"\u5C11>Sha{o3};",
+	"\u5C12>{e3}r;",
+	"\u5C13>{e3}r;",
+	"\u5C14>{e3}r;",
+	"\u5C15>G{a3};",
+	"\u5C16>Jian;",
+	"\u5C17>Sh{u2};",
+	"\u5C18>Ch{e2}n;",
+	"\u5C19>Sh{a4}ng;",
+	"\u5C1A>Sh{a4}ng;",
+	"\u5C1B>Mo;",
+	"\u5C1C>G{a2};",
+	"\u5C1D>Ch{a2}ng;",
+	"\u5C1E>Lia{o4};",
+	"\u5C1F>Xi{a3}n;",
+	"\u5C20>Xi{a3}n;",
+	"\u5C22>Wang;",
+	"\u5C23>Wang;",
+	"\u5C24>Yo{u2};",
+	"\u5C25>Lia{o4};",
+	"\u5C26>Lia{o4};",
+	"\u5C27>Ya{o2};",
+	"\u5C28>M{a2}ng;",
+	"\u5C29>Wang;",
+	"\u5C2A>Wang;",
+	"\u5C2B>Wang;",
+	"\u5C2C>G{a4};",
+	"\u5C2D>Ya{o2};",
+	"\u5C2E>Du{o4};",
+	"\u5C2F>Ku{i4};",
+	"\u5C30>Zh{o3}ng;",
+	"\u5C31>Ji{u4};",
+	"\u5C32>Gan;",
+	"\u5C33>G{u3};",
+	"\u5C34>Gan;",
+	"\u5C35>Tu{i2};",
+	"\u5C36>Gan;",
+	"\u5C37>Gan;",
+	"\u5C38>Shi;",
+	"\u5C39>Y{i3}n;",
+	"\u5C3A>Ch{i3};",
+	"\u5C3B>Kao;",
+	"\u5C3C>N{i2};",
+	"\u5C3D>J{i3}n;",
+	"\u5C3E>We{i3};",
+	"\u5C3F>Nia{o4};",
+	"\u5C40>J{u2};",
+	"\u5C41>P{i4};",
+	"\u5C42>C{e2}ng;",
+	"\u5C43>X{i4};",
+	"\u5C44>Bi;",
+	"\u5C45>Ju;",
+	"\u5C46>Ji{e4};",
+	"\u5C47>Ti{a2}n;",
+	"\u5C48>Qu;",
+	"\u5C49>T{i4};",
+	"\u5C4A>Ji{e4};",
+	"\u5C4B>Wu;",
+	"\u5C4C>Dia{o3};",
+	"\u5C4D>Shi;",
+	"\u5C4E>Sh{i3};",
+	"\u5C4F>P{i2}ng;",
+	"\u5C50>Ji;",
+	"\u5C51>Xi{e4};",
+	"\u5C52>Ch{e2}n;",
+	"\u5C53>X{i4};",
+	"\u5C54>N{i2};",
+	"\u5C55>Zh{a3}n;",
+	"\u5C56>Xi;",
+	"\u5C58>M{a3}n;",
+	"\u5C59>E;",
+	"\u5C5A>Lo{u4};",
+	"\u5C5B>P{i2}ng;",
+	"\u5C5C>T{i4};",
+	"\u5C5D>Fe{i4};",
+	"\u5C5E>Sh{u3};",
+	"\u5C5F>Xi{e4};",
+	"\u5C60>T{u2};",
+	"\u5C61>L{uu3};",
+	"\u5C62>L{uu3};",
+	"\u5C63>X{i3};",
+	"\u5C64>C{e2}ng;",
+	"\u5C65>L{uu3};",
+	"\u5C66>J{u4};",
+	"\u5C67>Xi{e4};",
+	"\u5C68>J{u4};",
+	"\u5C69>Jue;",
+	"\u5C6A>Lia{o2};",
+	"\u5C6B>Ju{e2};",
+	"\u5C6C>Sh{u3};",
+	"\u5C6D>X{i4};",
+	"\u5C6E>Ch{e4};",
+	"\u5C6F>T{u2}n;",
+	"\u5C70>N{i4};",
+	"\u5C71>Shan;",
+	"\u5C73>Xian;",
+	"\u5C74>L{i4};",
+	"\u5C75>Xue;",
+	"\u5C78>L{o2}ng;",
+	"\u5C79>Y{i4};",
+	"\u5C7A>Q{i3};",
+	"\u5C7B>R{e4}n;",
+	"\u5C7C>W{u4};",
+	"\u5C7D>H{a4}n;",
+	"\u5C7E>Shen;",
+	"\u5C7F>Y{u3};",
+	"\u5C80>Chu;",
+	"\u5C81>Su{i4};",
+	"\u5C82>Q{i3};",
+	"\u5C84>Yu{e4};",
+	"\u5C85>B{a3}n;",
+	"\u5C86>Ya{o3};",
+	"\u5C87>{A2}ng;",
+	"\u5C88>Y{a2};",
+	"\u5C89>W{u4};",
+	"\u5C8A>Ji{e2};",
+	"\u5C8B>{E4};",
+	"\u5C8C>J{i2};",
+	"\u5C8D>Qian;",
+	"\u5C8E>Fen;",
+	"\u5C8F>Yu{a2}n;",
+	"\u5C90>Q{i2};",
+	"\u5C91>C{e2}n;",
+	"\u5C92>Qi{a2}n;",
+	"\u5C93>Q{i2};",
+	"\u5C94>Ch{a4};",
+	"\u5C95>Ji{e4};",
+	"\u5C96>Qu;",
+	"\u5C97>G{a3}ng;",
+	"\u5C98>Xi{a4}n;",
+	"\u5C99>A{o4};",
+	"\u5C9A>L{a2}n;",
+	"\u5C9B>Da{o3};",
+	"\u5C9C>Ba;",
+	"\u5C9D>Zu{o4};",
+	"\u5C9E>Zu{o4};",
+	"\u5C9F>Y{a3}ng;",
+	"\u5CA0>J{u4};",
+	"\u5CA1>Gang;",
+	"\u5CA2>K{e3};",
+	"\u5CA3>Go{u3};",
+	"\u5CA4>Xu{e4};",
+	"\u5CA5>Bei;",
+	"\u5CA6>L{i4};",
+	"\u5CA7>Tia{o2};",
+	"\u5CA8>Ju;",
+	"\u5CA9>Y{a2}n;",
+	"\u5CAA>F{u2};",
+	"\u5CAB>Xi{u4};",
+	"\u5CAC>Ji{a3};",
+	"\u5CAD>L{i2}ng;",
+	"\u5CAE>Tu{o2};",
+	"\u5CAF>Pei;",
+	"\u5CB0>Yo{u3};",
+	"\u5CB1>Da{i4};",
+	"\u5CB2>Ku{a4}ng;",
+	"\u5CB3>Yu{e4};",
+	"\u5CB4>Qu;",
+	"\u5CB5>H{u4};",
+	"\u5CB6>P{o4};",
+	"\u5CB7>M{i2}n;",
+	"\u5CB8>{A4}n;",
+	"\u5CB9>Tia{o2};",
+	"\u5CBA>L{i2}ng;",
+	"\u5CBB>Ch{i2};",
+	"\u5CBD>Dong;",
+	"\u5CBF>Kui;",
+	"\u5CC0>Xi{u4};",
+	"\u5CC1>Ma{o3};",
+	"\u5CC2>T{o2}ng;",
+	"\u5CC3>Xu{e2};",
+	"\u5CC4>Y{i4};",
+	"\u5CC6>He;",
+	"\u5CC7>Ke;",
+	"\u5CC8>Lu{o4};",
+	"\u5CC9>E;",
+	"\u5CCA>F{u4};",
+	"\u5CCB>X{u2}n;",
+	"\u5CCC>Di{e2};",
+	"\u5CCD>L{u4};",
+	"\u5CCE>An;",
+	"\u5CCF>{e3}r;",
+	"\u5CD0>Gai;",
+	"\u5CD1>Qu{a2}n;",
+	"\u5CD2>T{o2}ng;",
+	"\u5CD3>Y{i2};",
+	"\u5CD4>M{u3};",
+	"\u5CD5>Sh{i2};",
+	"\u5CD6>An;",
+	"\u5CD7>We{i2};",
+	"\u5CD8>Hu;",
+	"\u5CD9>Zh{i4};",
+	"\u5CDA>M{i4};",
+	"\u5CDB>L{i3};",
+	"\u5CDC>Ji;",
+	"\u5CDD>T{o2}ng;",
+	"\u5CDE>We{i2};",
+	"\u5CDF>Yo{u4};",
+	"\u5CE1>Xi{a2};",
+	"\u5CE2>L{i3};",
+	"\u5CE3>Ya{o2};",
+	"\u5CE4>Jia{o4};",
+	"\u5CE5>Zheng;",
+	"\u5CE6>Lu{a2}n;",
+	"\u5CE7>Jiao;",
+	"\u5CE8>{E2};",
+	"\u5CE9>{E2};",
+	"\u5CEA>Y{u4};",
+	"\u5CEB>Y{e2};",
+	"\u5CEC>Bu;",
+	"\u5CED>Qia{o4};",
+	"\u5CEE>Qun;",
+	"\u5CEF>Feng;",
+	"\u5CF0>Feng;",
+	"\u5CF1>Na{o2};",
+	"\u5CF2>L{i3};",
+	"\u5CF3>Yo{u2};",
+	"\u5CF4>Xi{a4}n;",
+	"\u5CF5>H{o2}ng;",
+	"\u5CF6>Da{o3};",
+	"\u5CF7>Shen;",
+	"\u5CF8>Ch{e2}ng;",
+	"\u5CF9>T{u2};",
+	"\u5CFA>G{e3}ng;",
+	"\u5CFB>J{u4}n;",
+	"\u5CFC>Ha{o4};",
+	"\u5CFD>Xi{a2};",
+	"\u5CFE>Yin;",
+	"\u5CFF>Y{u3};",
+	"\u5D00>L{a4}ng;",
+	"\u5D01>K{a3}n;",
+	"\u5D02>La{o2};",
+	"\u5D03>La{i2};",
+	"\u5D04>Xi{a3}n;",
+	"\u5D05>Qu{e4};",
+	"\u5D06>Kong;",
+	"\u5D07>Ch{o2}ng;",
+	"\u5D08>Ch{o2}ng;",
+	"\u5D09>T{a4};",
+	"\u5D0A>Lin;",
+	"\u5D0B>Hu{a2};",
+	"\u5D0C>Ju;",
+	"\u5D0D>La{i2};",
+	"\u5D0E>Q{i2};",
+	"\u5D0F>M{i2}n;",
+	"\u5D10>Kun;",
+	"\u5D11>Kun;",
+	"\u5D12>Z{u2};",
+	"\u5D13>G{u4};",
+	"\u5D14>Cui;",
+	"\u5D15>Y{a2};",
+	"\u5D16>Y{a2};",
+	"\u5D17>G{a3}ng;",
+	"\u5D18>L{u2}n;",
+	"\u5D19>L{u2}n;",
+	"\u5D1A>L{e2}ng;",
+	"\u5D1B>Ju{e2};",
+	"\u5D1C>Duo;",
+	"\u5D1D>Zheng;",
+	"\u5D1E>Guo;",
+	"\u5D1F>Y{i2}n;",
+	"\u5D20>Dong;",
+	"\u5D21>H{a2}n;",
+	"\u5D22>Zheng;",
+	"\u5D23>We{i3};",
+	"\u5D24>Ya{o2};",
+	"\u5D25>P{i3};",
+	"\u5D26>Yan;",
+	"\u5D27>Song;",
+	"\u5D28>Ji{e2};",
+	"\u5D29>Beng;",
+	"\u5D2A>Z{u2};",
+	"\u5D2B>Ju{e2};",
+	"\u5D2C>Dong;",
+	"\u5D2D>Zh{a3}n;",
+	"\u5D2E>G{u4};",
+	"\u5D2F>Y{i2}n;",
+	"\u5D31>Z{e2};",
+	"\u5D32>Hu{a2}ng;",
+	"\u5D33>Y{u2};",
+	"\u5D34>Wei;",
+	"\u5D35>Y{a2}ng;",
+	"\u5D36>Feng;",
+	"\u5D37>Qi{u2};",
+	"\u5D38>D{u4}n;",
+	"\u5D39>T{i2};",
+	"\u5D3A>Y{i3};",
+	"\u5D3B>Zh{i4};",
+	"\u5D3C>Sh{i4};",
+	"\u5D3D>Za{i3};",
+	"\u5D3E>Ya{o3};",
+	"\u5D3F>{E4};",
+	"\u5D40>Zh{u4};",
+	"\u5D41>Kan;",
+	"\u5D42>L{uu4};",
+	"\u5D43>Y{a3}n;",
+	"\u5D44>Me{i3};",
+	"\u5D45>Gan;",
+	"\u5D46>Ji;",
+	"\u5D47>Ji;",
+	"\u5D48>Hu{a3}n;",
+	"\u5D49>T{i2}ng;",
+	"\u5D4A>Sh{e4}ng;",
+	"\u5D4B>Me{i2};",
+	"\u5D4C>Qi{a4}n;",
+	"\u5D4D>W{u4};",
+	"\u5D4E>Y{u2};",
+	"\u5D4F>Zong;",
+	"\u5D50>L{a2}n;",
+	"\u5D51>Ju{e2};",
+	"\u5D52>Y{a2}n;",
+	"\u5D53>Y{a2}n;",
+	"\u5D54>We{i3};",
+	"\u5D55>Zong;",
+	"\u5D56>Ch{a2};",
+	"\u5D57>Su{i4};",
+	"\u5D58>R{o2}ng;",
+	"\u5D5A>Qin;",
+	"\u5D5B>Y{u2};",
+	"\u5D5D>Lo{u3};",
+	"\u5D5E>T{u2};",
+	"\u5D5F>Dui;",
+	"\u5D60>Xi;",
+	"\u5D61>Weng;",
+	"\u5D62>Cang;",
+	"\u5D63>Dang;",
+	"\u5D64>H{o2}ng;",
+	"\u5D65>Ji{e2};",
+	"\u5D66>A{i2};",
+	"\u5D67>Li{u2};",
+	"\u5D68>W{u3};",
+	"\u5D69>Song;",
+	"\u5D6A>Qiao;",
+	"\u5D6B>Zi;",
+	"\u5D6C>We{i2};",
+	"\u5D6D>Beng;",
+	"\u5D6E>Dian;",
+	"\u5D6F>Cu{o2};",
+	"\u5D70>Qi{a3}n;",
+	"\u5D71>Y{o3}ng;",
+	"\u5D72>Ni{e4};",
+	"\u5D73>Cu{o2};",
+	"\u5D74>J{i2};",
+	"\u5D77>S{o3}ng;",
+	"\u5D78>Zong;",
+	"\u5D79>Ji{a4}ng;",
+	"\u5D7A>Lia{o2};",
+	"\u5D7B>Kang;",
+	"\u5D7C>Ch{a3}n;",
+	"\u5D7D>Di{e2};",
+	"\u5D7E>Cen;",
+	"\u5D7F>D{i3}ng;",
+	"\u5D80>Tu;",
+	"\u5D81>Lo{u3};",
+	"\u5D82>Zh{a4}ng;",
+	"\u5D83>Zh{a3}n;",
+	"\u5D84>Zh{a3}n;",
+	"\u5D85>A{o2};",
+	"\u5D86>Ca{o2};",
+	"\u5D87>Qu;",
+	"\u5D88>Qiang;",
+	"\u5D89>Zui;",
+	"\u5D8A>Zu{i3};",
+	"\u5D8B>Da{o3};",
+	"\u5D8C>Da{o3};",
+	"\u5D8D>X{i2};",
+	"\u5D8E>Y{u4};",
+	"\u5D8F>B{o2};",
+	"\u5D90>L{o2}ng;",
+	"\u5D91>Xi{a3}ng;",
+	"\u5D92>C{e2}ng;",
+	"\u5D93>Bo;",
+	"\u5D94>Qin;",
+	"\u5D95>Jiao;",
+	"\u5D96>Y{a3}n;",
+	"\u5D97>La{o2};",
+	"\u5D98>Zh{a4}n;",
+	"\u5D99>L{i2}n;",
+	"\u5D9A>Lia{o2};",
+	"\u5D9B>Lia{o2};",
+	"\u5D9C>Jin;",
+	"\u5D9D>D{e4}ng;",
+	"\u5D9E>Du{o4};",
+	"\u5D9F>Zun;",
+	"\u5DA0>Jia{o4};",
+	"\u5DA1>Gu{i4};",
+	"\u5DA2>Ya{o2};",
+	"\u5DA3>Qia{o2};",
+	"\u5DA4>Ya{o2};",
+	"\u5DA5>Ju{e2};",
+	"\u5DA6>Zhan;",
+	"\u5DA7>Y{i4};",
+	"\u5DA8>Xu{e2};",
+	"\u5DA9>Na{o2};",
+	"\u5DAA>Y{e4};",
+	"\u5DAB>Y{e4};",
+	"\u5DAC>Y{i2};",
+	"\u5DAD>{E4};",
+	"\u5DAE>Xi{a3}n;",
+	"\u5DAF>J{i2};",
+	"\u5DB0>Xi{e4};",
+	"\u5DB1>K{e3};",
+	"\u5DB2>Xi;",
+	"\u5DB3>D{i4};",
+	"\u5DB4>A{o4};",
+	"\u5DB5>Zu{i3};",
+	"\u5DB7>N{i4};",
+	"\u5DB8>R{o2}ng;",
+	"\u5DB9>Da{o3};",
+	"\u5DBA>L{i3}ng;",
+	"\u5DBB>Z{a2};",
+	"\u5DBC>Y{u3};",
+	"\u5DBD>Yu{e4};",
+	"\u5DBE>Y{i3}n;",
+	"\u5DC0>Jie;",
+	"\u5DC1>L{i4};",
+	"\u5DC2>Su{i3};",
+	"\u5DC3>L{o2}ng;",
+	"\u5DC4>L{o2}ng;",
+	"\u5DC5>Dian;",
+	"\u5DC6>Y{i2}ng;",
+	"\u5DC7>Xi;",
+	"\u5DC8>J{u2};",
+	"\u5DC9>Ch{a2}n;",
+	"\u5DCA>Y{i3}ng;",
+	"\u5DCB>Kui;",
+	"\u5DCC>Y{a2}n;",
+	"\u5DCD>Wei;",
+	"\u5DCE>Na{o2};",
+	"\u5DCF>Qu{a2}n;",
+	"\u5DD0>Cha{o3};",
+	"\u5DD1>Cu{a2}n;",
+	"\u5DD2>Lu{a2}n;",
+	"\u5DD3>Dian;",
+	"\u5DD4>Dian;",
+	"\u5DD6>Y{a2}n;",
+	"\u5DD7>Y{a2}n;",
+	"\u5DD8>Y{a3}n;",
+	"\u5DD9>Na{o2};",
+	"\u5DDA>Y{a3}n;",
+	"\u5DDB>Chuan;",
+	"\u5DDC>Gu{i4};",
+	"\u5DDD>Chuan;",
+	"\u5DDE>Zhou;",
+	"\u5DDF>Huang;",
+	"\u5DE0>Jing;",
+	"\u5DE1>X{u2}n;",
+	"\u5DE2>Cha{o2};",
+	"\u5DE3>Cha{o2};",
+	"\u5DE4>Lie;",
+	"\u5DE5>Gong;",
+	"\u5DE6>Zu{o3};",
+	"\u5DE7>Qia{o3};",
+	"\u5DE8>J{u4};",
+	"\u5DE9>G{o3}ng;",
+	"\u5DEB>Wu;",
+	"\u5DEE>Chai;",
+	"\u5DEF>Qi{u2};",
+	"\u5DF0>Qi{u2};",
+	"\u5DF1>J{i3};",
+	"\u5DF2>Y{i3};",
+	"\u5DF3>S{i4};",
+	"\u5DF4>Ba;",
+	"\u5DF5>Zhi;",
+	"\u5DF6>Zhao;",
+	"\u5DF7>Xi{a4}ng;",
+	"\u5DF8>Y{i2};",
+	"\u5DF9>J{i3}n;",
+	"\u5DFA>X{u4}n;",
+	"\u5DFB>Ju{a4}n;",
+	"\u5DFD>X{u4}n;",
+	"\u5DFE>Jin;",
+	"\u5DFF>F{u2};",
+	"\u5E00>Za;",
+	"\u5E01>B{i4};",
+	"\u5E02>Sh{i4};",
+	"\u5E03>B{u4};",
+	"\u5E04>Ding;",
+	"\u5E05>Shua{i4};",
+	"\u5E06>Fan;",
+	"\u5E07>Ni{e4};",
+	"\u5E08>Shi;",
+	"\u5E09>Fen;",
+	"\u5E0A>P{a4};",
+	"\u5E0B>Zh{i3};",
+	"\u5E0C>Xi;",
+	"\u5E0D>H{u4};",
+	"\u5E0E>D{a4}n;",
+	"\u5E0F>We{i2};",
+	"\u5E10>Zh{a4}ng;",
+	"\u5E11>T{a3}ng;",
+	"\u5E12>Da{i4};",
+	"\u5E13>M{a4};",
+	"\u5E14>Pe{i4};",
+	"\u5E15>P{a4};",
+	"\u5E16>Tie;",
+	"\u5E17>F{u2};",
+	"\u5E18>Li{a2}n;",
+	"\u5E19>Zh{i4};",
+	"\u5E1A>Zho{u3};",
+	"\u5E1B>B{o2};",
+	"\u5E1C>Zh{i4};",
+	"\u5E1D>D{i4};",
+	"\u5E1E>M{o4};",
+	"\u5E1F>Y{i4};",
+	"\u5E20>Y{i4};",
+	"\u5E21>P{i2}ng;",
+	"\u5E22>Qi{a4};",
+	"\u5E23>Ju{a4}n;",
+	"\u5E24>R{u2};",
+	"\u5E25>Shua{i4};",
+	"\u5E26>Da{i4};",
+	"\u5E27>Zh{e4}ng;",
+	"\u5E28>Shu{i4};",
+	"\u5E29>Qia{o4};",
+	"\u5E2A>Zhen;",
+	"\u5E2B>Shi;",
+	"\u5E2C>Q{u2}n;",
+	"\u5E2D>X{i2};",
+	"\u5E2E>Bang;",
+	"\u5E2F>Da{i4};",
+	"\u5E30>Gui;",
+	"\u5E31>Cho{u2};",
+	"\u5E32>P{i2}ng;",
+	"\u5E33>Zh{a4}ng;",
+	"\u5E34>Sha;",
+	"\u5E35>Wan;",
+	"\u5E36>Da{i4};",
+	"\u5E37>We{i2};",
+	"\u5E38>Ch{a2}ng;",
+	"\u5E39>Sh{a4};",
+	"\u5E3A>Q{i2};",
+	"\u5E3B>Z{e2};",
+	"\u5E3C>Gu{o2};",
+	"\u5E3D>Ma{o4};",
+	"\u5E3E>D{u3};",
+	"\u5E3F>Ho{u2};",
+	"\u5E40>Zh{e4}ng;",
+	"\u5E41>Xu;",
+	"\u5E42>M{i4};",
+	"\u5E43>We{i2};",
+	"\u5E44>W{o4};",
+	"\u5E45>F{u2};",
+	"\u5E46>Y{i4};",
+	"\u5E47>Bang;",
+	"\u5E48>P{i2}ng;",
+	"\u5E4A>Gong;",
+	"\u5E4B>P{a2}n;",
+	"\u5E4C>Hu{a3}ng;",
+	"\u5E4D>Dao;",
+	"\u5E4E>M{i4};",
+	"\u5E4F>Jia;",
+	"\u5E50>T{e2}ng;",
+	"\u5E51>Hui;",
+	"\u5E52>Zhong;",
+	"\u5E53>Shan;",
+	"\u5E54>M{a4}n;",
+	"\u5E55>M{u4};",
+	"\u5E56>Biao;",
+	"\u5E57>Gu{o2};",
+	"\u5E58>Z{e2};",
+	"\u5E59>M{u4};",
+	"\u5E5A>Bang;",
+	"\u5E5B>Zh{a4}ng;",
+	"\u5E5C>Ji{o3}ng;",
+	"\u5E5D>Ch{a3}n;",
+	"\u5E5E>F{u2};",
+	"\u5E5F>Zh{i4};",
+	"\u5E60>Hu;",
+	"\u5E61>Fan;",
+	"\u5E62>Chu{a2}ng;",
+	"\u5E63>B{i4};",
+	"\u5E66>M{i4};",
+	"\u5E67>Qiao;",
+	"\u5E68>Chan;",
+	"\u5E69>F{e2}n;",
+	"\u5E6A>M{e2}ng;",
+	"\u5E6B>Bang;",
+	"\u5E6C>Cho{u2};",
+	"\u5E6D>Mi{e4};",
+	"\u5E6E>Ch{u2};",
+	"\u5E6F>Ji{e2};",
+	"\u5E70>Xi{a3}n;",
+	"\u5E71>L{a2}n;",
+	"\u5E72>Gan;",
+	"\u5E73>P{i2}ng;",
+	"\u5E74>Ni{a2}n;",
+	"\u5E75>Qian;",
+	"\u5E76>B{i4}ng;",
+	"\u5E77>B{i4}ng;",
+	"\u5E78>X{i4}ng;",
+	"\u5E79>G{a4}n;",
+	"\u5E7A>Yao;",
+	"\u5E7B>Hu{a4}n;",
+	"\u5E7C>Yo{u4};",
+	"\u5E7D>You;",
+	"\u5E7E>J{i3};",
+	"\u5E7F>Y{a3}n;",
+	"\u5E80>P{i3};",
+	"\u5E81>Ting;",
+	"\u5E82>Z{e4};",
+	"\u5E83>Gu{a3}ng;",
+	"\u5E84>Zhuang;",
+	"\u5E85>M{o1};",
+	"\u5E86>Q{i4}ng;",
+	"\u5E87>B{i4};",
+	"\u5E88>Q{i2}n;",
+	"\u5E89>D{u4}n;",
+	"\u5E8A>Chu{a2}ng;",
+	"\u5E8B>Gu{i3};",
+	"\u5E8C>Y{a3};",
+	"\u5E8D>Ba{i4};",
+	"\u5E8E>Ji{e4};",
+	"\u5E8F>X{u4};",
+	"\u5E90>L{u2};",
+	"\u5E91>W{u3};",
+	"\u5E93>K{u4};",
+	"\u5E94>Y{i4}ng;",
+	"\u5E95>D{i3};",
+	"\u5E96>Pa{o2};",
+	"\u5E97>Di{a4}n;",
+	"\u5E98>Ya;",
+	"\u5E99>Mia{o4};",
+	"\u5E9A>Geng;",
+	"\u5E9B>Ci;",
+	"\u5E9C>F{u3};",
+	"\u5E9D>T{o2}ng;",
+	"\u5E9E>P{a2}ng;",
+	"\u5E9F>Fe{i4};",
+	"\u5EA0>Xi{a2}ng;",
+	"\u5EA1>Y{i3};",
+	"\u5EA2>Zh{i4};",
+	"\u5EA3>Tiao;",
+	"\u5EA4>Zh{i4};",
+	"\u5EA5>Xiu;",
+	"\u5EA6>D{u4};",
+	"\u5EA7>Zu{o4};",
+	"\u5EA8>Xiao;",
+	"\u5EA9>T{u2};",
+	"\u5EAA>Gu{i3};",
+	"\u5EAB>K{u4};",
+	"\u5EAC>P{a2}ng;",
+	"\u5EAD>T{i2}ng;",
+	"\u5EAE>Yo{u3};",
+	"\u5EAF>Bu;",
+	"\u5EB0>Ding;",
+	"\u5EB1>Ch{e3}ng;",
+	"\u5EB2>La{i2};",
+	"\u5EB3>Bei;",
+	"\u5EB4>J{i2};",
+	"\u5EB5>An;",
+	"\u5EB6>Sh{u4};",
+	"\u5EB7>Kang;",
+	"\u5EB8>Yong;",
+	"\u5EB9>Tu{o3};",
+	"\u5EBA>Song;",
+	"\u5EBB>Sh{u4};",
+	"\u5EBC>Q{i3}ng;",
+	"\u5EBD>Y{u4};",
+	"\u5EBE>Y{u3};",
+	"\u5EBF>Mia{o4};",
+	"\u5EC0>Sou;",
+	"\u5EC1>C{e4};",
+	"\u5EC2>Xiang;",
+	"\u5EC3>Fe{i4};",
+	"\u5EC4>Ji{u4};",
+	"\u5EC5>H{e2};",
+	"\u5EC6>Hu{i4};",
+	"\u5EC7>Li{u4};",
+	"\u5EC8>Sh{a4};",
+	"\u5EC9>Li{a2}n;",
+	"\u5ECA>L{a2}ng;",
+	"\u5ECB>Sou;",
+	"\u5ECC>Ji{a4}n;",
+	"\u5ECD>Po{u3};",
+	"\u5ECE>Q{i3}ng;",
+	"\u5ECF>Ji{u4};",
+	"\u5ED0>Ji{u4};",
+	"\u5ED1>Q{i2}n;",
+	"\u5ED2>A{o2};",
+	"\u5ED3>Ku{o4};",
+	"\u5ED4>Lo{u2};",
+	"\u5ED5>Yin;",
+	"\u5ED6>Lia{o4};",
+	"\u5ED7>Da{i4};",
+	"\u5ED8>L{u4};",
+	"\u5ED9>Y{i4};",
+	"\u5EDA>Ch{u2};",
+	"\u5EDB>Ch{a2}n;",
+	"\u5EDC>Tu;",
+	"\u5EDD>Si;",
+	"\u5EDE>Xin;",
+	"\u5EDF>Mia{o4};",
+	"\u5EE0>Ch{a3}ng;",
+	"\u5EE1>W{u3};",
+	"\u5EE2>Fe{i4};",
+	"\u5EE3>Gu{a3}ng;",
+	"\u5EE5>Kua{i4};",
+	"\u5EE6>B{i4};",
+	"\u5EE7>Qi{a2}ng;",
+	"\u5EE8>Xi{e4};",
+	"\u5EE9>L{i3}n;",
+	"\u5EEA>L{i3}n;",
+	"\u5EEB>Lia{o2};",
+	"\u5EEC>L{u2};",
+	"\u5EEE>Y{i2}ng;",
+	"\u5EEF>Xian;",
+	"\u5EF0>Ting;",
+	"\u5EF1>Yong;",
+	"\u5EF2>L{i2};",
+	"\u5EF3>Ting;",
+	"\u5EF4>Y{i3}n;",
+	"\u5EF5>X{u2}n;",
+	"\u5EF6>Y{a2}n;",
+	"\u5EF7>T{i2}ng;",
+	"\u5EF8>D{i2};",
+	"\u5EF9>P{o4};",
+	"\u5EFA>Ji{a4}n;",
+	"\u5EFB>Hu{i2};",
+	"\u5EFC>Na{i3};",
+	"\u5EFD>Hu{i2};",
+	"\u5EFE>G{o4}ng;",
+	"\u5EFF>Ni{a4}n;",
+	"\u5F00>Kai;",
+	"\u5F01>Bi{a4}n;",
+	"\u5F02>Y{i4};",
+	"\u5F03>Q{i4};",
+	"\u5F04>N{o4}ng;",
+	"\u5F05>F{e2}n;",
+	"\u5F06>J{u3};",
+	"\u5F07>Y{a3}n;",
+	"\u5F08>Y{i4};",
+	"\u5F09>Z{a4}ng;",
+	"\u5F0A>B{i4};",
+	"\u5F0B>Y{i4};",
+	"\u5F0C>Yi;",
+	"\u5F0D>{E4}r;",
+	"\u5F0E>San;",
+	"\u5F0F>Sh{i4};",
+	"\u5F10>{E4}r;",
+	"\u5F11>Sh{i4};",
+	"\u5F12>Sh{i4};",
+	"\u5F13>Gong;",
+	"\u5F14>Dia{o4};",
+	"\u5F15>Y{i3}n;",
+	"\u5F16>H{u4};",
+	"\u5F17>F{u2};",
+	"\u5F18>H{o2}ng;",
+	"\u5F19>Wu;",
+	"\u5F1A>Tu{i2};",
+	"\u5F1B>Ch{i2};",
+	"\u5F1C>Ji{a4}ng;",
+	"\u5F1D>B{a4};",
+	"\u5F1E>Sh{e3}n;",
+	"\u5F1F>D{i4};",
+	"\u5F20>Zhang;",
+	"\u5F21>Ju{e2};",
+	"\u5F22>Tao;",
+	"\u5F23>F{u3};",
+	"\u5F24>D{i3};",
+	"\u5F25>M{i2};",
+	"\u5F26>Xi{a2}n;",
+	"\u5F27>H{u2};",
+	"\u5F28>Chao;",
+	"\u5F29>N{u3};",
+	"\u5F2A>J{i4}ng;",
+	"\u5F2B>Zh{e3}n;",
+	"\u5F2C>Y{i2};",
+	"\u5F2D>M{i3};",
+	"\u5F2E>Quan;",
+	"\u5F2F>Wan;",
+	"\u5F30>Shao;",
+	"\u5F31>Ru{o4};",
+	"\u5F32>Xuan;",
+	"\u5F33>J{i4}ng;",
+	"\u5F34>Dun;",
+	"\u5F35>Zhang;",
+	"\u5F36>Ji{a4}ng;",
+	"\u5F37>Qi{a2}ng;",
+	"\u5F38>P{e2}ng;",
+	"\u5F39>D{a4}n;",
+	"\u5F3A>Qi{a2}ng;",
+	"\u5F3B>B{i4};",
+	"\u5F3C>B{i4};",
+	"\u5F3D>Sh{e4};",
+	"\u5F3E>D{a4}n;",
+	"\u5F3F>Ji{a3}n;",
+	"\u5F40>Go{u4};",
+	"\u5F42>Fa;",
+	"\u5F43>B{i4};",
+	"\u5F44>Kou;",
+	"\u5F46>Bi{e4};",
+	"\u5F47>Xiao;",
+	"\u5F48>D{a4}n;",
+	"\u5F49>Ku{o4};",
+	"\u5F4A>Qi{a2}ng;",
+	"\u5F4B>H{o2}ng;",
+	"\u5F4C>M{i2};",
+	"\u5F4D>Ku{o4};",
+	"\u5F4E>Wan;",
+	"\u5F4F>Ju{e2};",
+	"\u5F50>J{i4};",
+	"\u5F51>J{i4};",
+	"\u5F52>Gui;",
+	"\u5F53>Dang;",
+	"\u5F54>L{u4};",
+	"\u5F55>L{u4};",
+	"\u5F56>Tu{a4}n;",
+	"\u5F57>Hu{i4};",
+	"\u5F58>Zh{i4};",
+	"\u5F59>Hu{i4};",
+	"\u5F5A>Hu{i4};",
+	"\u5F5B>Y{i2};",
+	"\u5F5C>Y{i2};",
+	"\u5F5D>Y{i2};",
+	"\u5F5E>Y{i2};",
+	"\u5F5F>Hu{o4};",
+	"\u5F60>Hu{o4};",
+	"\u5F61>Shan;",
+	"\u5F62>X{i2}ng;",
+	"\u5F63>W{e2}n;",
+	"\u5F64>T{o2}ng;",
+	"\u5F65>Y{a4}n;",
+	"\u5F66>Y{a4}n;",
+	"\u5F67>Y{u4};",
+	"\u5F68>Chi;",
+	"\u5F69>Ca{i3};",
+	"\u5F6A>Biao;",
+	"\u5F6B>Diao;",
+	"\u5F6C>Bin;",
+	"\u5F6D>P{e2}ng;",
+	"\u5F6E>Y{o3}ng;",
+	"\u5F6F>Piao;",
+	"\u5F70>Zhang;",
+	"\u5F71>Y{i3}ng;",
+	"\u5F72>Chi;",
+	"\u5F73>Ch{i4};",
+	"\u5F74>Zhu{o2};",
+	"\u5F75>Tu{o3};",
+	"\u5F76>J{i2};",
+	"\u5F77>P{a2}ng;",
+	"\u5F78>Zhong;",
+	"\u5F79>Y{i4};",
+	"\u5F7A>W{a2}ng;",
+	"\u5F7B>Ch{e4};",
+	"\u5F7C>B{i3};",
+	"\u5F7D>Ch{i2};",
+	"\u5F7E>L{i3}ng;",
+	"\u5F7F>F{u2};",
+	"\u5F80>W{a3}ng;",
+	"\u5F81>Zheng;",
+	"\u5F82>C{u2};",
+	"\u5F83>W{a3}ng;",
+	"\u5F84>J{i4}ng;",
+	"\u5F85>Da{i4};",
+	"\u5F86>Xi;",
+	"\u5F87>X{u4}n;",
+	"\u5F88>H{e3}n;",
+	"\u5F89>Y{a2}ng;",
+	"\u5F8A>Hua{i2};",
+	"\u5F8B>L{uu4};",
+	"\u5F8C>Ho{u4};",
+	"\u5F8D>Wa;",
+	"\u5F8E>Ch{e3}ng;",
+	"\u5F8F>Zh{i4};",
+	"\u5F90>X{u2};",
+	"\u5F91>J{i4}ng;",
+	"\u5F92>T{u2};",
+	"\u5F93>C{o2}ng;",
+	"\u5F95>La{i2};",
+	"\u5F96>C{o2}ng;",
+	"\u5F97>D{e2};",
+	"\u5F98>Pa{i2};",
+	"\u5F99>X{i3};",
+	"\u5F9B>Q{i4};",
+	"\u5F9C>Ch{a2}ng;",
+	"\u5F9D>Zh{i4};",
+	"\u5F9E>C{o2}ng;",
+	"\u5F9F>Zhou;",
+	"\u5FA0>La{i2};",
+	"\u5FA1>Y{u4};",
+	"\u5FA2>Xi{e4};",
+	"\u5FA3>Ji{e4};",
+	"\u5FA4>Ji{a4}n;",
+	"\u5FA5>Ch{i2};",
+	"\u5FA6>Ji{a3};",
+	"\u5FA7>Bi{a4}n;",
+	"\u5FA8>Hu{a2}ng;",
+	"\u5FA9>F{u4};",
+	"\u5FAA>X{u2}n;",
+	"\u5FAB>We{i3};",
+	"\u5FAC>P{a2}ng;",
+	"\u5FAD>Ya{o2};",
+	"\u5FAE>Wei;",
+	"\u5FAF>Xi;",
+	"\u5FB0>Zheng;",
+	"\u5FB1>Pia{o4};",
+	"\u5FB2>Ch{i2};",
+	"\u5FB3>D{e2};",
+	"\u5FB4>Zheng;",
+	"\u5FB5>Zheng;",
+	"\u5FB6>Bi{e4};",
+	"\u5FB7>D{e2};",
+	"\u5FB8>Chong;",
+	"\u5FB9>Ch{e4};",
+	"\u5FBA>Jia{o3};",
+	"\u5FBB>We{i4};",
+	"\u5FBC>Jia{o4};",
+	"\u5FBD>Hui;",
+	"\u5FBE>Me{i2};",
+	"\u5FBF>L{o4}ng;",
+	"\u5FC0>Xiang;",
+	"\u5FC1>Ba{o4};",
+	"\u5FC2>Q{u2};",
+	"\u5FC3>Xin;",
+	"\u5FC4>Shu4xin1p{a2}ng;",
+	"\u5FC5>B{i4};",
+	"\u5FC6>Y{i4};",
+	"\u5FC7>L{e4};",
+	"\u5FC8>R{e2}n;",
+	"\u5FC9>Dao;",
+	"\u5FCA>D{i4}ng;",
+	"\u5FCB>Ga{i3};",
+	"\u5FCC>J{i4};",
+	"\u5FCD>R{e3}n;",
+	"\u5FCE>R{e2}n;",
+	"\u5FCF>Ch{a4}n;",
+	"\u5FD0>T{a3}n;",
+	"\u5FD1>T{e4};",
+	"\u5FD2>T{e4};",
+	"\u5FD3>Gan;",
+	"\u5FD4>Q{i4};",
+	"\u5FD5>Sh{i4};",
+	"\u5FD6>C{u3}n;",
+	"\u5FD7>Zh{i4};",
+	"\u5FD8>W{a4}ng;",
+	"\u5FD9>M{a2}ng;",
+	"\u5FDA>Xi;",
+	"\u5FDB>F{a2}n;",
+	"\u5FDC>Ying;",
+	"\u5FDD>Ti{a3}n;",
+	"\u5FDE>M{i2}n;",
+	"\u5FDF>M{i2}n;",
+	"\u5FE0>Zhong;",
+	"\u5FE1>Chong;",
+	"\u5FE2>W{u4};",
+	"\u5FE3>J{i2};",
+	"\u5FE4>W{u3};",
+	"\u5FE5>X{i4};",
+	"\u5FE6>Y{e4};",
+	"\u5FE7>You;",
+	"\u5FE8>W{a4}n;",
+	"\u5FE9>Cong;",
+	"\u5FEA>Zhong;",
+	"\u5FEB>Kua{i4};",
+	"\u5FEC>Y{u4};",
+	"\u5FED>Bi{a4}n;",
+	"\u5FEE>Zh{i4};",
+	"\u5FEF>Q{i2};",
+	"\u5FF0>Cu{i4};",
+	"\u5FF1>Ch{e2}n;",
+	"\u5FF2>Ta{i4};",
+	"\u5FF3>T{u2}n;",
+	"\u5FF4>Qi{a2}n;",
+	"\u5FF5>Ni{a4}n;",
+	"\u5FF6>H{u2}n;",
+	"\u5FF7>Xiong;",
+	"\u5FF8>Ni{u3};",
+	"\u5FF9>W{a3}ng;",
+	"\u5FFA>Xian;",
+	"\u5FFB>Xin;",
+	"\u5FFC>Kang;",
+	"\u5FFD>Hu;",
+	"\u5FFE>Ka{i4};",
+	"\u5FFF>F{e4}n;",
+	"\u6000>Hua{i2};",
+	"\u6001>Ta{i4};",
+	"\u6002>S{o3}ng;",
+	"\u6003>W{u3};",
+	"\u6004>O{u4};",
+	"\u6005>Ch{a4}ng;",
+	"\u6006>Chu{a4}ng;",
+	"\u6007>J{u4};",
+	"\u6008>Y{i4};",
+	"\u6009>Ba{o3};",
+	"\u600A>Chao;",
+	"\u600B>M{i2}n;",
+	"\u600C>Pei;",
+	"\u600D>Zu{o4};",
+	"\u600E>Z{e3}n;",
+	"\u600F>Y{a4}ng;",
+	"\u6010>Ko{u4};",
+	"\u6011>B{a4}n;",
+	"\u6012>N{u4};",
+	"\u6013>Na{o2};",
+	"\u6014>Zheng;",
+	"\u6015>P{a4};",
+	"\u6016>B{u4};",
+	"\u6017>Tie;",
+	"\u6018>G{u4};",
+	"\u6019>H{u4};",
+	"\u601A>J{u4};",
+	"\u601B>D{a2};",
+	"\u601C>Li{a2}n;",
+	"\u601D>Si;",
+	"\u601E>Chou;",
+	"\u601F>D{i4};",
+	"\u6020>Da{i4};",
+	"\u6021>Y{i2};",
+	"\u6022>T{u2};",
+	"\u6023>Yo{u2};",
+	"\u6024>Fu;",
+	"\u6025>J{i2};",
+	"\u6026>Peng;",
+	"\u6027>X{i4}ng;",
+	"\u6028>Yu{a4}n;",
+	"\u6029>N{i2};",
+	"\u602A>Gua{i4};",
+	"\u602B>F{u2};",
+	"\u602C>X{i4};",
+	"\u602D>B{i4};",
+	"\u602E>You;",
+	"\u602F>Qi{e4};",
+	"\u6030>Xu{a4}n;",
+	"\u6031>Cong;",
+	"\u6032>B{i3}ng;",
+	"\u6033>Hu{a3}ng;",
+	"\u6034>X{u4};",
+	"\u6035>Ch{u4};",
+	"\u6036>Pi;",
+	"\u6037>Xi;",
+	"\u6038>Xi;",
+	"\u6039>Tan;",
+	"\u603B>Z{o3}ng;",
+	"\u603C>Du{i4};",
+	"\u603F>Y{i4};",
+	"\u6040>Ch{i3};",
+	"\u6041>R{e4}n;",
+	"\u6042>X{u2}n;",
+	"\u6043>Sh{i4};",
+	"\u6044>X{i4};",
+	"\u6045>La{o3};",
+	"\u6046>H{e2}ng;",
+	"\u6047>Kuang;",
+	"\u6048>M{u2};",
+	"\u6049>Zh{i3};",
+	"\u604A>Xi{e2};",
+	"\u604B>Li{a4}n;",
+	"\u604C>Tiao;",
+	"\u604D>Hu{a3}ng;",
+	"\u604E>Di{e2};",
+	"\u604F>Ha{o3};",
+	"\u6050>K{o3}ng;",
+	"\u6051>Gu{i3};",
+	"\u6052>H{e2}ng;",
+	"\u6053>Xi;",
+	"\u6054>Xia{o4};",
+	"\u6055>Sh{u4};",
+	"\u6056>S1;",
+	"\u6057>Ku{a3};",
+	"\u6058>Qiu;",
+	"\u6059>Y{a4}ng;",
+	"\u605A>Hu{i4};",
+	"\u605B>Hu{i2};",
+	"\u605C>Ch{i4};",
+	"\u605D>Ji{a2};",
+	"\u605E>Y{i2};",
+	"\u605F>Xiong;",
+	"\u6060>Gua{i4};",
+	"\u6061>L{i4}n;",
+	"\u6062>Hui;",
+	"\u6063>Z{i4};",
+	"\u6064>X{u4};",
+	"\u6065>Ch{i3};",
+	"\u6066>Xi{a4}ng;",
+	"\u6067>N{uu4};",
+	"\u6068>H{e4}n;",
+	"\u6069>En;",
+	"\u606A>K{e4};",
+	"\u606B>Tong;",
+	"\u606C>Ti{a2}n;",
+	"\u606D>Gong;",
+	"\u606E>Qu{a2}n;",
+	"\u606F>Xi;",
+	"\u6070>Qi{a4};",
+	"\u6071>Yu{e4};",
+	"\u6072>Peng;",
+	"\u6073>K{e3}n;",
+	"\u6074>D{e2};",
+	"\u6075>Hu{i4};",
+	"\u6076>{E4};",
+	"\u6078>T{o4}ng;",
+	"\u6079>Y{a4}n;",
+	"\u607A>Ka{i3};",
+	"\u607B>C{e4};",
+	"\u607C>Na{o3};",
+	"\u607D>Y{u4}n;",
+	"\u607E>M{a2}ng;",
+	"\u607F>Y{o3}ng;",
+	"\u6080>Y{o3}ng;",
+	"\u6081>Yuan;",
+	"\u6082>Pi;",
+	"\u6083>K{u3}n;",
+	"\u6084>Qia{o3};",
+	"\u6085>Yu{e4};",
+	"\u6086>Y{u4};",
+	"\u6087>Y{u4};",
+	"\u6088>Ji{e4};",
+	"\u6089>Xi;",
+	"\u608A>Zh{e2};",
+	"\u608B>L{i4}n;",
+	"\u608C>T{i4};",
+	"\u608D>H{a4}n;",
+	"\u608E>Ha{o4};",
+	"\u608F>Qi{e4};",
+	"\u6090>T{i4};",
+	"\u6091>B{u4};",
+	"\u6092>Y{i4};",
+	"\u6093>Qi{a4}n;",
+	"\u6094>Hu{i3};",
+	"\u6095>Xi;",
+	"\u6096>Be{i4};",
+	"\u6097>M{a2}n;",
+	"\u6098>Yi;",
+	"\u6099>Heng;",
+	"\u609A>S{o3}ng;",
+	"\u609B>Quan;",
+	"\u609C>Ch{e3}ng;",
+	"\u609D>Hui;",
+	"\u609E>W{u4};",
+	"\u609F>W{u4};",
+	"\u60A0>You;",
+	"\u60A1>L{i2};",
+	"\u60A2>Li{a4}ng;",
+	"\u60A3>Hu{a4}n;",
+	"\u60A4>Cong;",
+	"\u60A5>Y{i4};",
+	"\u60A6>Yu{e4};",
+	"\u60A7>L{i4};",
+	"\u60A8>N{i2}n;",
+	"\u60A9>Na{o3};",
+	"\u60AA>{E4};",
+	"\u60AB>Qu{e4};",
+	"\u60AC>Xu{a2}n;",
+	"\u60AD>Qian;",
+	"\u60AE>W{u4};",
+	"\u60AF>M{i3}n;",
+	"\u60B0>C{o2}ng;",
+	"\u60B1>Fe{i3};",
+	"\u60B2>Bei;",
+	"\u60B3>Du{o2};",
+	"\u60B4>Cu{i4};",
+	"\u60B5>Ch{a4}ng;",
+	"\u60B6>M{e4}n;",
+	"\u60B7>L{i4};",
+	"\u60B8>J{i4};",
+	"\u60B9>Gu{a4}n;",
+	"\u60BA>Gu{a4}n;",
+	"\u60BB>X{i4}ng;",
+	"\u60BC>Da{o4};",
+	"\u60BD>Qi;",
+	"\u60BE>Kong;",
+	"\u60BF>Ti{a3}n;",
+	"\u60C0>L{u2}n;",
+	"\u60C1>Xi;",
+	"\u60C2>K{a3}n;",
+	"\u60C3>Kun;",
+	"\u60C4>N{i4};",
+	"\u60C5>Q{i2}ng;",
+	"\u60C6>Cho{u2};",
+	"\u60C7>Dun;",
+	"\u60C8>Gu{o3};",
+	"\u60C9>Chan;",
+	"\u60CA>Li{a2}ng;",
+	"\u60CB>W{a3}n;",
+	"\u60CC>Yuan;",
+	"\u60CD>Jin;",
+	"\u60CE>J{i4};",
+	"\u60CF>L{i2}n;",
+	"\u60D0>Y{u4};",
+	"\u60D1>Hu{o4};",
+	"\u60D2>H{e2};",
+	"\u60D3>Qu{a2}n;",
+	"\u60D4>T{a2}n;",
+	"\u60D5>T{i4};",
+	"\u60D6>T{i4};",
+	"\u60D7>Nie;",
+	"\u60D8>W{a3}ng;",
+	"\u60D9>Chu{o4};",
+	"\u60DA>Bu;",
+	"\u60DB>Hun;",
+	"\u60DC>Xi;",
+	"\u60DD>T{a3}ng;",
+	"\u60DE>Xin;",
+	"\u60DF>We{i2};",
+	"\u60E0>Hu{i4};",
+	"\u60E1>{E4};",
+	"\u60E2>Ru{i3};",
+	"\u60E3>Z{o3}ng;",
+	"\u60E4>Jian;",
+	"\u60E5>Y{o3}ng;",
+	"\u60E6>Di{a4}n;",
+	"\u60E7>J{u4};",
+	"\u60E8>C{a3}n;",
+	"\u60E9>Ch{e2}ng;",
+	"\u60EA>D{e2};",
+	"\u60EB>Be{i4};",
+	"\u60EC>Qi{e4};",
+	"\u60ED>C{a2}n;",
+	"\u60EE>D{a4}n;",
+	"\u60EF>Gu{a4}n;",
+	"\u60F0>Du{o4};",
+	"\u60F1>Na{o3};",
+	"\u60F2>Y{u4}n;",
+	"\u60F3>Xi{a3}ng;",
+	"\u60F4>Zhu{i4};",
+	"\u60F5>Di{e4};",
+	"\u60F6>Hu{a2}ng;",
+	"\u60F7>Ch{u3}n;",
+	"\u60F8>Qi{o2}ng;",
+	"\u60F9>R{e3};",
+	"\u60FA>Xing;",
+	"\u60FB>C{e4};",
+	"\u60FC>Bi{a3}n;",
+	"\u60FD>Hun;",
+	"\u60FE>Zong;",
+	"\u60FF>T{i2};",
+	"\u6100>Qia{o3};",
+	"\u6101>Cho{u2};",
+	"\u6102>Be{i4};",
+	"\u6103>Xuan;",
+	"\u6104>Wei;",
+	"\u6105>G{e2};",
+	"\u6106>Qian;",
+	"\u6107>We{i3};",
+	"\u6108>Y{u4};",
+	"\u6109>Y{u2};",
+	"\u610A>B{i4};",
+	"\u610B>Xuan;",
+	"\u610C>Hu{a4}n;",
+	"\u610D>M{i3}n;",
+	"\u610E>B{i4};",
+	"\u610F>Y{i4};",
+	"\u6110>Mi{a3}n;",
+	"\u6111>Y{o3}ng;",
+	"\u6112>Ka{i4};",
+	"\u6113>D{a4}ng;",
+	"\u6114>Yin;",
+	"\u6115>{E4};",
+	"\u6116>Ch{e2}n;",
+	"\u6117>Mo{u4};",
+	"\u6118>K{e4};",
+	"\u6119>K{e4};",
+	"\u611A>Y{u2};",
+	"\u611B>A{i4};",
+	"\u611C>Qi{e4};",
+	"\u611D>Y{a3}n;",
+	"\u611E>Nu{o4};",
+	"\u611F>G{a3}n;",
+	"\u6120>Y{u4}n;",
+	"\u6121>Z{o3}ng;",
+	"\u6122>Sai;",
+	"\u6123>L{e2}ng;",
+	"\u6124>F{e4}n;",
+	"\u6126>Ku{i4};",
+	"\u6127>Ku{i4};",
+	"\u6128>Qu{e4};",
+	"\u6129>Gong;",
+	"\u612A>Y{u2}n;",
+	"\u612B>S{u4};",
+	"\u612C>S{u4};",
+	"\u612D>Q{i2};",
+	"\u612E>Ya{o2};",
+	"\u612F>S{o3}ng;",
+	"\u6130>Hu{a3}ng;",
+	"\u6131>J{i2};",
+	"\u6132>G{u3};",
+	"\u6133>J{u4};",
+	"\u6134>Chu{a4}ng;",
+	"\u6135>N{i4};",
+	"\u6136>Xi{e2};",
+	"\u6137>Ka{i3};",
+	"\u6138>Zh{e3}ng;",
+	"\u6139>Y{o3}ng;",
+	"\u613A>Ca{o3};",
+	"\u613B>S{u4}n;",
+	"\u613C>Sh{e4}n;",
+	"\u613D>B{o2};",
+	"\u613E>Ka{i4};",
+	"\u613F>Yu{a4}n;",
+	"\u6140>Xi{e2};",
+	"\u6141>H{u4}n;",
+	"\u6142>Y{o3}ng;",
+	"\u6143>Y{a3}ng;",
+	"\u6144>L{i4};",
+	"\u6145>Sao;",
+	"\u6146>Tao;",
+	"\u6147>Yin;",
+	"\u6148>C{i2};",
+	"\u6149>X{u4};",
+	"\u614A>Qi{a4}n;",
+	"\u614B>Ta{i4};",
+	"\u614C>Huang;",
+	"\u614D>Y{u4}n;",
+	"\u614E>Sh{e4}n;",
+	"\u614F>M{i3}ng;",
+	"\u6151>Sh{e4};",
+	"\u6152>C{o2}ng;",
+	"\u6153>Pia{o4};",
+	"\u6154>M{o4};",
+	"\u6155>M{u4};",
+	"\u6156>Gu{o2};",
+	"\u6157>Ch{i4};",
+	"\u6158>C{a3}n;",
+	"\u6159>C{a2}n;",
+	"\u615A>C{a2}n;",
+	"\u615B>Cu{i2};",
+	"\u615C>M{i3}n;",
+	"\u615D>T{e4};",
+	"\u615E>Zhang;",
+	"\u615F>T{o4}ng;",
+	"\u6160>A{o4};",
+	"\u6161>Shu{a3}ng;",
+	"\u6162>M{a4}n;",
+	"\u6163>Gu{a4}n;",
+	"\u6164>Qu{e4};",
+	"\u6165>Za{o4};",
+	"\u6166>Ji{u4};",
+	"\u6167>Hu{i4};",
+	"\u6168>Ka{i3};",
+	"\u6169>Li{a2}n;",
+	"\u616A>O{u4};",
+	"\u616B>S{o3}ng;",
+	"\u616C>J{i3}n;",
+	"\u616D>Y{i4}n;",
+	"\u616E>L{uu4};",
+	"\u616F>Shang;",
+	"\u6170>We{i4};",
+	"\u6171>Tu{a2}n;",
+	"\u6172>M{a2}n;",
+	"\u6173>Qian;",
+	"\u6174>Sh{e4};",
+	"\u6175>Yong;",
+	"\u6176>Q{i4}ng;",
+	"\u6177>Kang;",
+	"\u6178>D{i4};",
+	"\u6179>Zh{i2};",
+	"\u617A>Lo{u2};",
+	"\u617B>Ju{a4}n;",
+	"\u617C>Qi;",
+	"\u617D>Qi;",
+	"\u617E>Y{u4};",
+	"\u617F>P{i2}ng;",
+	"\u6180>Lia{o2};",
+	"\u6181>Cong;",
+	"\u6182>You;",
+	"\u6183>Chong;",
+	"\u6184>Zh{i4};",
+	"\u6185>T{o4}ng;",
+	"\u6186>Cheng;",
+	"\u6187>Q{i4};",
+	"\u6188>Qu;",
+	"\u6189>P{e2}ng;",
+	"\u618A>Be{i4};",
+	"\u618B>Bie;",
+	"\u618C>Ch{u2}n;",
+	"\u618D>Jiao;",
+	"\u618E>Zeng;",
+	"\u618F>Ch{i4};",
+	"\u6190>Li{a2}n;",
+	"\u6191>P{i2}ng;",
+	"\u6192>Ku{i4};",
+	"\u6193>Hu{i4};",
+	"\u6194>Qia{o2};",
+	"\u6195>Ch{e2}ng;",
+	"\u6196>Y{i4}n;",
+	"\u6197>Y{i4}n;",
+	"\u6198>X{i3};",
+	"\u6199>X{i3};",
+	"\u619A>D{a4}n;",
+	"\u619B>T{a2}n;",
+	"\u619C>Du{o3};",
+	"\u619D>Du{i4};",
+	"\u619E>Du{i4};",
+	"\u619F>S{u4};",
+	"\u61A0>Ju{e2};",
+	"\u61A1>C{e4};",
+	"\u61A2>Xiao;",
+	"\u61A3>F{a2}n;",
+	"\u61A4>F{e4}n;",
+	"\u61A5>La{o2};",
+	"\u61A6>La{o4};",
+	"\u61A7>Chong;",
+	"\u61A8>Han;",
+	"\u61A9>Q{i4};",
+	"\u61AA>Xi{a2}n;",
+	"\u61AB>M{i3}n;",
+	"\u61AC>J{i3}ng;",
+	"\u61AD>Lia{o3};",
+	"\u61AE>W{u3};",
+	"\u61AF>C{a3}n;",
+	"\u61B0>Ju{e2};",
+	"\u61B1>C{u4};",
+	"\u61B2>Xi{a4}n;",
+	"\u61B3>T{a3}n;",
+	"\u61B4>Sh{e2}ng;",
+	"\u61B5>Pi;",
+	"\u61B6>Y{i4};",
+	"\u61B7>Ch{u3};",
+	"\u61B8>Xian;",
+	"\u61B9>Na{o2};",
+	"\u61BA>D{a4}n;",
+	"\u61BB>T{a3}n;",
+	"\u61BC>J{i3}ng;",
+	"\u61BD>Song;",
+	"\u61BE>H{a4}n;",
+	"\u61BF>Jiao;",
+	"\u61C0>Wa{i4};",
+	"\u61C1>Hu{a2}n;",
+	"\u61C2>D{o3}ng;",
+	"\u61C3>Q{i2}n;",
+	"\u61C4>Q{i2}n;",
+	"\u61C5>Q{u2};",
+	"\u61C6>Ca{o3};",
+	"\u61C7>K{e3}n;",
+	"\u61C8>Xi{e4};",
+	"\u61C9>Y{i4}ng;",
+	"\u61CA>A{o4};",
+	"\u61CB>Ma{o4};",
+	"\u61CC>Y{i4};",
+	"\u61CD>L{i3}n;",
+	"\u61CE>S{e4};",
+	"\u61CF>J{u4}n;",
+	"\u61D0>Hua{i2};",
+	"\u61D1>M{e4}n;",
+	"\u61D2>L{a3}n;",
+	"\u61D3>A{i4};",
+	"\u61D4>L{i3}n;",
+	"\u61D5>Yan;",
+	"\u61D6>Gua;",
+	"\u61D7>Xi{a4};",
+	"\u61D8>Ch{i4};",
+	"\u61D9>Y{u3};",
+	"\u61DA>Y{i4}n;",
+	"\u61DB>Dai;",
+	"\u61DC>M{e4}ng;",
+	"\u61DD>A{i4};",
+	"\u61DE>M{e2}ng;",
+	"\u61DF>Du{i4};",
+	"\u61E0>Q{i2};",
+	"\u61E1>M{o3};",
+	"\u61E2>L{a2}n;",
+	"\u61E3>M{e4}n;",
+	"\u61E4>Cho{u2};",
+	"\u61E5>Zh{i4};",
+	"\u61E6>Nu{o4};",
+	"\u61E7>Nu{o4};",
+	"\u61E8>Yan;",
+	"\u61E9>Y{a3}ng;",
+	"\u61EA>B{o2};",
+	"\u61EB>Zh{i2};",
+	"\u61EC>Ku{a4}ng;",
+	"\u61ED>Ku{a4}ng;",
+	"\u61EE>Yo{u3};",
+	"\u61EF>Fu;",
+	"\u61F0>Li{u2};",
+	"\u61F1>Mi{e4};",
+	"\u61F2>Ch{e2}ng;",
+	"\u61F4>Ch{a4}n;",
+	"\u61F5>M{e2}ng;",
+	"\u61F6>L{a3}n;",
+	"\u61F7>Hua{i2};",
+	"\u61F8>Xu{a2}n;",
+	"\u61F9>R{a4}ng;",
+	"\u61FA>Ch{a4}n;",
+	"\u61FB>J{i4};",
+	"\u61FC>J{u4};",
+	"\u61FD>Huan;",
+	"\u61FE>Sh{e4};",
+	"\u61FF>Y{i4};",
+	"\u6200>Li{a4}n;",
+	"\u6201>N{a3}n;",
+	"\u6202>M{i2};",
+	"\u6203>T{a3}ng;",
+	"\u6204>Ju{e2};",
+	"\u6205>G{a4}ng;",
+	"\u6206>G{a4}ng;",
+	"\u6207>G{a4}ng;",
+	"\u6208>Ge;",
+	"\u6209>Yu{e4};",
+	"\u620A>W{u4};",
+	"\u620B>Jian;",
+	"\u620C>Xu;",
+	"\u620D>Sh{u4};",
+	"\u620E>R{o2}ng;",
+	"\u620F>X{i4};",
+	"\u6210>Ch{e2}ng;",
+	"\u6211>W{o3};",
+	"\u6212>Ji{e4};",
+	"\u6213>Ge;",
+	"\u6214>Jian;",
+	"\u6215>Qiang;",
+	"\u6216>Hu{o4};",
+	"\u6217>Qiang;",
+	"\u6218>Zh{a4}n;",
+	"\u6219>D{o4}ng;",
+	"\u621A>Qi;",
+	"\u621B>Ji{a2};",
+	"\u621C>Di{e2};",
+	"\u621D>Ze{i2};",
+	"\u621E>Ji{a2};",
+	"\u621F>J{i3};",
+	"\u6220>Sh{i4};",
+	"\u6221>Kan;",
+	"\u6222>J{i2};",
+	"\u6223>Ku{i2};",
+	"\u6224>Ga{i4};",
+	"\u6225>D{e3}ng;",
+	"\u6226>Zh{a4}n;",
+	"\u6227>Chuang;",
+	"\u6228>Ge;",
+	"\u6229>Ji{a3}n;",
+	"\u622A>Ji{e2};",
+	"\u622B>Y{u4};",
+	"\u622C>Ji{a3}n;",
+	"\u622D>Y{a3}n;",
+	"\u622E>L{u4};",
+	"\u622F>X{i4};",
+	"\u6230>Zh{a4}n;",
+	"\u6231>X{i4};",
+	"\u6232>X{i4};",
+	"\u6233>Chuo;",
+	"\u6234>Da{i4};",
+	"\u6235>Q{u2};",
+	"\u6236>H{u4};",
+	"\u6237>H{u4};",
+	"\u6238>H{u4};",
+	"\u6239>{E4};",
+	"\u623A>Sh{i4};",
+	"\u623B>L{i4};",
+	"\u623C>Ma{o3};",
+	"\u623D>H{u4};",
+	"\u623E>L{i4};",
+	"\u623F>F{a2}ng;",
+	"\u6240>Su{o3};",
+	"\u6241>Bi{a3}n;",
+	"\u6242>Di{a4}n;",
+	"\u6243>Jiong;",
+	"\u6244>Sh{a3}ng;",
+	"\u6245>Y{i2};",
+	"\u6246>Y{i3};",
+	"\u6247>Sh{a4}n;",
+	"\u6248>H{u4};",
+	"\u6249>Fei;",
+	"\u624A>Y{a3}n;",
+	"\u624B>Sho{u3};",
+	"\u624C>T1shou3p{a2}ng;",
+	"\u624D>Ca{i2};",
+	"\u624E>Zha;",
+	"\u624F>Qi{u2};",
+	"\u6250>L{e4};",
+	"\u6251>Bu;",
+	"\u6252>Ba;",
+	"\u6253>D{a3};",
+	"\u6254>Reng;",
+	"\u6255>F{u2};",
+	"\u6257>Za{i4};",
+	"\u6258>Tuo;",
+	"\u6259>Zh{a4}ng;",
+	"\u625A>Diao;",
+	"\u625B>K{a2}ng;",
+	"\u625C>Yu;",
+	"\u625D>Ku;",
+	"\u625E>H{a4}n;",
+	"\u625F>Shen;",
+	"\u6260>Cha;",
+	"\u6261>Y{i3};",
+	"\u6262>G{u3};",
+	"\u6263>Ko{u4};",
+	"\u6264>W{u4};",
+	"\u6265>Tuo;",
+	"\u6266>Qian;",
+	"\u6267>Zh{i2};",
+	"\u6268>R{e4}n;",
+	"\u6269>Ku{o4};",
+	"\u626A>M{e2}n;",
+	"\u626B>Sa{o3};",
+	"\u626C>Y{a2}ng;",
+	"\u626D>Ni{u3};",
+	"\u626E>B{a4}n;",
+	"\u626F>Ch{e3};",
+	"\u6270>Ra{o3};",
+	"\u6271>Xi;",
+	"\u6272>Qi{a2}n;",
+	"\u6273>Ban;",
+	"\u6274>Ji{a2};",
+	"\u6275>Y{u2};",
+	"\u6276>F{u2};",
+	"\u6277>A{o4};",
+	"\u6278>Xi;",
+	"\u6279>Pi;",
+	"\u627A>Zh{i3};",
+	"\u627B>Z{i4};",
+	"\u627C>{E4};",
+	"\u627D>D{u4}n;",
+	"\u627E>Zha{o3};",
+	"\u627F>Ch{e2}ng;",
+	"\u6280>J{i4};",
+	"\u6281>Y{a3}n;",
+	"\u6282>Ku{a2}ng;",
+	"\u6283>Bi{a4}n;",
+	"\u6284>Chao;",
+	"\u6285>Ju;",
+	"\u6286>W{e4}n;",
+	"\u6287>H{u2};",
+	"\u6288>Yu{e4};",
+	"\u6289>Ju{e2};",
+	"\u628A>B{a3};",
+	"\u628B>Q{i4}n;",
+	"\u628C>Zh{e3}n;",
+	"\u628D>Zh{e3}ng;",
+	"\u628E>Y{u3}n;",
+	"\u628F>W{a2}n;",
+	"\u6290>N{u4};",
+	"\u6291>Y{i4};",
+	"\u6292>Shu;",
+	"\u6293>Zhua;",
+	"\u6294>Po{u2};",
+	"\u6295>To{u2};",
+	"\u6296>Do{u3};",
+	"\u6297>K{a4}ng;",
+	"\u6298>Zh{e2};",
+	"\u6299>Po{u2};",
+	"\u629A>F{u3};",
+	"\u629B>Pao;",
+	"\u629C>B{a2};",
+	"\u629D>A{o3};",
+	"\u629E>Z{e2};",
+	"\u629F>Tu{a2}n;",
+	"\u62A0>Kou;",
+	"\u62A1>L{u2}n;",
+	"\u62A2>Qi{a3}ng;",
+	"\u62A4>H{u4};",
+	"\u62A5>Ba{o4};",
+	"\u62A6>B{i3}ng;",
+	"\u62A7>Zh{i3};",
+	"\u62A8>Peng;",
+	"\u62A9>Tan;",
+	"\u62AA>Pu;",
+	"\u62AB>Pi;",
+	"\u62AC>Ta{i2};",
+	"\u62AD>Ya{o3};",
+	"\u62AE>Zh{e3}n;",
+	"\u62AF>Zha;",
+	"\u62B0>Y{a3}ng;",
+	"\u62B1>Ba{o4};",
+	"\u62B2>He;",
+	"\u62B3>N{i3};",
+	"\u62B4>Y{i4};",
+	"\u62B5>D{i3};",
+	"\u62B6>Ch{i4};",
+	"\u62B7>Pi;",
+	"\u62B8>Za;",
+	"\u62B9>M{o3};",
+	"\u62BA>M{o3};",
+	"\u62BB>Sh{e4}n;",
+	"\u62BC>Ya;",
+	"\u62BD>Chou;",
+	"\u62BE>Qu;",
+	"\u62BF>M{i3}n;",
+	"\u62C0>Ch{u4};",
+	"\u62C1>Jia;",
+	"\u62C2>F{u2};",
+	"\u62C3>Zh{a3}n;",
+	"\u62C4>Zh{u3};",
+	"\u62C5>D{a4}n;",
+	"\u62C6>Chai;",
+	"\u62C7>M{u3};",
+	"\u62C8>Ni{a2}n;",
+	"\u62C9>La;",
+	"\u62CA>F{u3};",
+	"\u62CB>Pao;",
+	"\u62CC>B{a4}n;",
+	"\u62CD>Pai;",
+	"\u62CE>Ling;",
+	"\u62CF>N{a2};",
+	"\u62D0>Gua{i3};",
+	"\u62D1>Qi{a2}n;",
+	"\u62D2>J{u4};",
+	"\u62D3>Tu{o4};",
+	"\u62D4>B{a2};",
+	"\u62D5>Tuo;",
+	"\u62D6>Tuo;",
+	"\u62D7>A{o3};",
+	"\u62D8>Ju;",
+	"\u62D9>Zhu{o2};",
+	"\u62DA>P{a4}n;",
+	"\u62DB>Zhao;",
+	"\u62DC>Ba{i4};",
+	"\u62DD>Ba{i4};",
+	"\u62DE>D{i3};",
+	"\u62DF>N{i3};",
+	"\u62E0>J{u4};",
+	"\u62E1>Ku{o4};",
+	"\u62E2>L{o3}ng;",
+	"\u62E3>Ji{a3}n;",
+	"\u62E5>Y{o3}ng;",
+	"\u62E6>L{a2}n;",
+	"\u62E7>N{i2}ng;",
+	"\u62E8>Bo;",
+	"\u62E9>Z{e2};",
+	"\u62EA>Qian;",
+	"\u62EB>H{e2}n;",
+	"\u62EC>Gua;",
+	"\u62ED>Sh{i4};",
+	"\u62EE>Ji{e2};",
+	"\u62EF>Zh{e3}ng;",
+	"\u62F0>N{i3}n;",
+	"\u62F1>G{o3}ng;",
+	"\u62F2>G{o3}ng;",
+	"\u62F3>Qu{a2}n;",
+	"\u62F4>Shuan;",
+	"\u62F5>C{u2}n;",
+	"\u62F6>Z{a3}n;",
+	"\u62F7>Ka{o3};",
+	"\u62F8>Ch{i3};",
+	"\u62F9>Xi{e2};",
+	"\u62FA>C{e4};",
+	"\u62FB>Hui;",
+	"\u62FC>Pin;",
+	"\u62FD>Zhuai;",
+	"\u62FE>Sh{i2};",
+	"\u62FF>N{a2};",
+	"\u6300>B{o4};",
+	"\u6301>Ch{i2};",
+	"\u6302>Gu{a4};",
+	"\u6303>Zh{i4};",
+	"\u6304>Ku{o4};",
+	"\u6305>Du{o3};",
+	"\u6306>Du{o3};",
+	"\u6307>Zh{i3};",
+	"\u6308>Qi{e4};",
+	"\u6309>{A4}n;",
+	"\u630A>N{o4}ng;",
+	"\u630B>Zh{e4}n;",
+	"\u630C>G{e2};",
+	"\u630D>Jia{o4};",
+	"\u630E>Ku;",
+	"\u630F>D{o4}ng;",
+	"\u6310>R{u2};",
+	"\u6311>Tiao;",
+	"\u6312>Li{e4};",
+	"\u6313>Zha;",
+	"\u6314>L{uu3};",
+	"\u6315>Di{e2};",
+	"\u6316>Wa;",
+	"\u6317>Ju{e2};",
+	"\u6319>J{u3};",
+	"\u631A>Zh{i4};",
+	"\u631B>Lu{a2}n;",
+	"\u631C>Y{a4};",
+	"\u631D>Zhua;",
+	"\u631E>T{a4};",
+	"\u631F>Xi{e2};",
+	"\u6320>Na{o2};",
+	"\u6321>D{a3}ng;",
+	"\u6322>Jia{o3};",
+	"\u6323>Zheng;",
+	"\u6324>J{i3};",
+	"\u6325>Hui;",
+	"\u6326>X{u2}n;",
+	"\u6328>Ai;",
+	"\u6329>Tuo;",
+	"\u632A>Nu{o2};",
+	"\u632B>Cu{o4};",
+	"\u632C>B{o2};",
+	"\u632D>G{e3}ng;",
+	"\u632E>T{i3};",
+	"\u632F>Zh{e4}n;",
+	"\u6330>Ch{e2}ng;",
+	"\u6331>Suo;",
+	"\u6332>Suo;",
+	"\u6333>Keng;",
+	"\u6334>Me{i3};",
+	"\u6335>L{o4}ng;",
+	"\u6336>J{u2};",
+	"\u6337>P{e2}ng;",
+	"\u6338>Ji{a3}n;",
+	"\u6339>Y{i4};",
+	"\u633A>T{i3}ng;",
+	"\u633B>Shan;",
+	"\u633C>Nu{o4};",
+	"\u633D>W{a3}n;",
+	"\u633E>Xi{e2};",
+	"\u633F>Cha;",
+	"\u6340>Feng;",
+	"\u6341>Jia{o3};",
+	"\u6342>W{u3};",
+	"\u6343>J{u4}n;",
+	"\u6344>Ji{u4};",
+	"\u6345>T{o3}ng;",
+	"\u6346>K{u3}n;",
+	"\u6347>Hu{o4};",
+	"\u6348>T{u2};",
+	"\u6349>Zhuo;",
+	"\u634A>Po{u2};",
+	"\u634B>L{e4};",
+	"\u634C>Ba;",
+	"\u634D>H{a4}n;",
+	"\u634E>Shao;",
+	"\u634F>Nie;",
+	"\u6350>Juan;",
+	"\u6351>Z{e2};",
+	"\u6352>S{o3}ng;",
+	"\u6353>Y{e2};",
+	"\u6354>Ju{e2};",
+	"\u6355>B{u3};",
+	"\u6356>Hu{a2}n;",
+	"\u6357>B{u4};",
+	"\u6358>Z{u4}n;",
+	"\u6359>Y{i4};",
+	"\u635A>Zhai;",
+	"\u635B>L{uu3};",
+	"\u635C>Sou;",
+	"\u635D>Tuo;",
+	"\u635E>Lao;",
+	"\u635F>S{u3}n;",
+	"\u6360>Bang;",
+	"\u6361>Ji{a3}n;",
+	"\u6362>Hu{a4}n;",
+	"\u6363>Da{o3};",
+	"\u6365>W{a4}n;",
+	"\u6366>Q{i2}n;",
+	"\u6367>P{e3}ng;",
+	"\u6368>Sh{e3};",
+	"\u6369>Li{e4};",
+	"\u636A>M{i2}n;",
+	"\u636B>M{e2}n;",
+	"\u636C>F{u3};",
+	"\u636D>Ba{i3};",
+	"\u636E>J{u4};",
+	"\u636F>Da{o3};",
+	"\u6370>W{o3};",
+	"\u6371>A{i2};",
+	"\u6372>Ju{a3}n;",
+	"\u6373>Yu{e4};",
+	"\u6374>Z{o3}ng;",
+	"\u6375>Ch{e3}n;",
+	"\u6376>Chu{i2};",
+	"\u6377>Ji{e2};",
+	"\u6378>Tu;",
+	"\u6379>B{e4}n;",
+	"\u637A>N{a4};",
+	"\u637B>Ni{a3}n;",
+	"\u637C>Nu{o2};",
+	"\u637D>Z{u2};",
+	"\u637E>W{o4};",
+	"\u637F>Xi;",
+	"\u6380>Xian;",
+	"\u6381>Ch{e2}ng;",
+	"\u6382>Dian;",
+	"\u6383>Sa{o3};",
+	"\u6384>L{u2}n;",
+	"\u6385>Q{i4}ng;",
+	"\u6386>Gang;",
+	"\u6387>Du{o2};",
+	"\u6388>Sho{u4};",
+	"\u6389>Dia{o4};",
+	"\u638A>Po{u2};",
+	"\u638B>D{i3};",
+	"\u638C>Zh{a3}ng;",
+	"\u638D>G{u3}n;",
+	"\u638E>J{i3};",
+	"\u638F>Tao;",
+	"\u6390>Qia;",
+	"\u6391>Q{i2};",
+	"\u6392>Pa{i2};",
+	"\u6393>Sh{u2};",
+	"\u6394>Qian;",
+	"\u6395>L{i4}ng;",
+	"\u6396>Y{i4};",
+	"\u6397>Y{a4};",
+	"\u6398>Ju{e2};",
+	"\u6399>Zheng;",
+	"\u639A>Li{a3}ng;",
+	"\u639B>Gu{a4};",
+	"\u639C>Y{i3};",
+	"\u639D>Hu{o4};",
+	"\u639E>Sh{a4}n;",
+	"\u639F>Zh{e3}ng;",
+	"\u63A0>L{uu}{e4};",
+	"\u63A1>Ca{i3};",
+	"\u63A2>T{a4}n;",
+	"\u63A3>Ch{e4};",
+	"\u63A4>Bing;",
+	"\u63A5>Jie;",
+	"\u63A6>T{i4};",
+	"\u63A7>K{o4}ng;",
+	"\u63A8>Tui;",
+	"\u63A9>Y{a3}n;",
+	"\u63AA>Cu{o4};",
+	"\u63AB>Zou;",
+	"\u63AC>J{u2};",
+	"\u63AD>Ti{a4}n;",
+	"\u63AE>Qi{a2}n;",
+	"\u63AF>K{e4}n;",
+	"\u63B0>Bai;",
+	"\u63B1>Sho{u3};",
+	"\u63B2>Jie;",
+	"\u63B3>L{u3};",
+	"\u63B4>Gu{o2};",
+	"\u63B7>Zh{i2};",
+	"\u63B8>D{a3}n;",
+	"\u63BA>Xian;",
+	"\u63BB>Sao;",
+	"\u63BC>Gu{a4}n;",
+	"\u63BD>P{e4}ng;",
+	"\u63BE>Yu{a4}n;",
+	"\u63BF>Nu{o4};",
+	"\u63C0>Ji{a3}n;",
+	"\u63C1>Zhen;",
+	"\u63C2>Jiu;",
+	"\u63C3>Jian;",
+	"\u63C4>Y{u2};",
+	"\u63C5>Y{a2}n;",
+	"\u63C6>Ku{i2};",
+	"\u63C7>N{a3}n;",
+	"\u63C8>Hong;",
+	"\u63C9>Ro{u2};",
+	"\u63CA>P{i4};",
+	"\u63CB>Wei;",
+	"\u63CC>Sai;",
+	"\u63CD>Zo{u4};",
+	"\u63CE>Xuan;",
+	"\u63CF>Mia{o2};",
+	"\u63D0>T{i2};",
+	"\u63D1>Nie;",
+	"\u63D2>Cha;",
+	"\u63D3>Sh{i4};",
+	"\u63D4>Z{o3}ng;",
+	"\u63D5>Zh{e4}n;",
+	"\u63D6>Yi;",
+	"\u63D7>Sh{u3}n;",
+	"\u63D8>H{e2}ng;",
+	"\u63D9>Bi{a4}n;",
+	"\u63DA>Y{a2}ng;",
+	"\u63DB>Hu{a4}n;",
+	"\u63DC>Y{a3}n;",
+	"\u63DD>Zu{a4}n;",
+	"\u63DE>{a3}n;",
+	"\u63DF>Xu;",
+	"\u63E0>Y{a4};",
+	"\u63E1>W{o4};",
+	"\u63E2>K{e4};",
+	"\u63E3>Chua{i3};",
+	"\u63E4>J{i2};",
+	"\u63E5>T{i4};",
+	"\u63E6>L{a2};",
+	"\u63E7>L{a4};",
+	"\u63E8>Ch{e2}ng;",
+	"\u63E9>Kai;",
+	"\u63EA>Jiu;",
+	"\u63EB>Jiu;",
+	"\u63EC>T{u2};",
+	"\u63ED>Jie;",
+	"\u63EE>Hui;",
+	"\u63EF>Geng;",
+	"\u63F0>Ch{o4}ng;",
+	"\u63F1>Shu{o4};",
+	"\u63F2>Sh{e2};",
+	"\u63F3>Xi{e4};",
+	"\u63F4>Yu{a2}n;",
+	"\u63F5>Qi{a2}n;",
+	"\u63F6>Y{e2};",
+	"\u63F7>Cha;",
+	"\u63F8>Zha;",
+	"\u63F9>Bei;",
+	"\u63FA>Ya{o2};",
+	"\u63FD>L{a3}n;",
+	"\u63FE>W{e4}n;",
+	"\u63FF>Q{i4}n;",
+	"\u6400>Chan;",
+	"\u6401>Ge;",
+	"\u6402>Lo{u3};",
+	"\u6403>Z{o3}ng;",
+	"\u6404>Geng;",
+	"\u6405>Jia{o3};",
+	"\u6406>Go{u4};",
+	"\u6407>Q{i4}n;",
+	"\u6408>Y{o3}ng;",
+	"\u6409>Qu{e4};",
+	"\u640A>Chou;",
+	"\u640B>Ch{i3};",
+	"\u640C>Zh{a3}n;",
+	"\u640D>S{u3}n;",
+	"\u640E>Sun;",
+	"\u640F>B{o2};",
+	"\u6410>Ch{u4};",
+	"\u6411>R{o3}ng;",
+	"\u6412>B{e4}ng;",
+	"\u6413>Cuo;",
+	"\u6414>Sao;",
+	"\u6415>K{e4};",
+	"\u6416>Ya{o2};",
+	"\u6417>Da{o3};",
+	"\u6418>Zhi;",
+	"\u6419>N{u4};",
+	"\u641A>Xi{e2};",
+	"\u641B>Jian;",
+	"\u641C>Sou;",
+	"\u641D>Qi{u3};",
+	"\u641E>Ga{o3};",
+	"\u641F>Xi{a3}n;",
+	"\u6420>Shu{o4};",
+	"\u6421>S{a3}ng;",
+	"\u6422>J{i4}n;",
+	"\u6423>Mi{e4};",
+	"\u6424>{E4};",
+	"\u6425>Chu{i2};",
+	"\u6426>Nu{o4};",
+	"\u6427>Shan;",
+	"\u6428>T{a4};",
+	"\u6429>Ji{e2};",
+	"\u642A>T{a2}ng;",
+	"\u642B>P{a2}n;",
+	"\u642C>Ban;",
+	"\u642D>Da;",
+	"\u642E>L{i4};",
+	"\u642F>Tao;",
+	"\u6430>H{u2};",
+	"\u6431>Zh{i4};",
+	"\u6432>Wa;",
+	"\u6433>Xi{a2};",
+	"\u6434>Qian;",
+	"\u6435>W{e4}n;",
+	"\u6436>Qi{a3}ng;",
+	"\u6437>Ti{a2}n;",
+	"\u6438>Zhen;",
+	"\u6439>{E4};",
+	"\u643A>Xi;",
+	"\u643B>Nu{o4};",
+	"\u643C>Qu{a2}n;",
+	"\u643D>Ch{a2};",
+	"\u643E>Zh{a4};",
+	"\u643F>G{e2};",
+	"\u6440>W{u3};",
+	"\u6441>{E4}n;",
+	"\u6442>Sh{e4};",
+	"\u6443>K{a2}ng;",
+	"\u6444>Sh{e4};",
+	"\u6445>Shu;",
+	"\u6446>Ba{i3};",
+	"\u6447>Ya{o2};",
+	"\u6448>B{i4}n;",
+	"\u6449>Sou;",
+	"\u644A>Tan;",
+	"\u644B>S{a4};",
+	"\u644C>Ch{a3}n;",
+	"\u644D>Suo;",
+	"\u644E>Lia{o2};",
+	"\u644F>Chong;",
+	"\u6450>Chuang;",
+	"\u6451>Gu{o2};",
+	"\u6452>B{i4}ng;",
+	"\u6453>F{e2}ng;",
+	"\u6454>Shuai;",
+	"\u6455>D{i4};",
+	"\u6456>Q{i4};",
+	"\u6457>Sou;",
+	"\u6458>Zhai;",
+	"\u6459>Li{a3}n;",
+	"\u645A>T{a2}ng;",
+	"\u645B>Chi;",
+	"\u645C>Gu{a4}n;",
+	"\u645D>L{u4};",
+	"\u645E>Lu{o2};",
+	"\u645F>Lo{u3};",
+	"\u6460>Z{o3}ng;",
+	"\u6461>Ga{i4};",
+	"\u6462>H{u4};",
+	"\u6463>Zha;",
+	"\u6464>Chu{a3}ng;",
+	"\u6465>T{a4}ng;",
+	"\u6466>Hu{a4};",
+	"\u6467>Cui;",
+	"\u6468>Na{i2};",
+	"\u6469>M{o2};",
+	"\u646A>Jiang;",
+	"\u646B>Gui;",
+	"\u646C>Y{i4}ng;",
+	"\u646D>Zh{i2};",
+	"\u646E>A{o2};",
+	"\u646F>Zh{i4};",
+	"\u6470>Ni{e4};",
+	"\u6471>M{a2}n;",
+	"\u6472>Sh{a4}n;",
+	"\u6473>Kou;",
+	"\u6474>Shu;",
+	"\u6475>Su{o3};",
+	"\u6476>Tu{a2}n;",
+	"\u6477>Jia{o3};",
+	"\u6478>Mo;",
+	"\u6479>M{o2};",
+	"\u647A>Zh{e2};",
+	"\u647B>Xian;",
+	"\u647C>Keng;",
+	"\u647D>Pia{o3};",
+	"\u647E>Ji{a4}ng;",
+	"\u647F>Yin;",
+	"\u6480>Go{u4};",
+	"\u6481>Qian;",
+	"\u6482>L{uu}{e4};",
+	"\u6483>J{i2};",
+	"\u6484>Ying;",
+	"\u6485>Jue;",
+	"\u6486>Pie;",
+	"\u6487>Pi{e3};",
+	"\u6488>Lao;",
+	"\u6489>Dun;",
+	"\u648A>Xi{a4}n;",
+	"\u648B>Ru{a2}n;",
+	"\u648C>Ku{i4};",
+	"\u648D>Z{a3}n;",
+	"\u648E>Y{i4};",
+	"\u648F>X{u2}n;",
+	"\u6490>Cheng;",
+	"\u6491>Cheng;",
+	"\u6492>S{a3};",
+	"\u6493>Na{o2};",
+	"\u6494>H{e4}ng;",
+	"\u6495>Si;",
+	"\u6496>Qi{a3}n;",
+	"\u6497>Hu{a2}ng;",
+	"\u6498>Da;",
+	"\u6499>Z{u3}n;",
+	"\u649A>Ni{a3}n;",
+	"\u649B>L{i3}n;",
+	"\u649C>Zh{e3}ng;",
+	"\u649D>Hui;",
+	"\u649E>Zhu{a4}ng;",
+	"\u649F>Jia{o3};",
+	"\u64A0>J{i3};",
+	"\u64A1>Cao;",
+	"\u64A2>D{a3}n;",
+	"\u64A3>D{a3}n;",
+	"\u64A4>Ch{e4};",
+	"\u64A5>Bo;",
+	"\u64A6>Ch{e3};",
+	"\u64A7>Ju{e2};",
+	"\u64A8>Xiao;",
+	"\u64A9>Lia{o2};",
+	"\u64AA>B{e4}n;",
+	"\u64AB>F{u3};",
+	"\u64AC>Qia{o4};",
+	"\u64AD>B{o4};",
+	"\u64AE>Cuo;",
+	"\u64AF>Zhu{o2};",
+	"\u64B0>Zhu{a4}n;",
+	"\u64B1>Tu{o3};",
+	"\u64B2>Pu;",
+	"\u64B3>Q{i4}n;",
+	"\u64B4>Dun;",
+	"\u64B5>Ni{a3}n;",
+	"\u64B7>Xi{e2};",
+	"\u64B8>L{u3};",
+	"\u64B9>Jia{o3};",
+	"\u64BA>Cuan;",
+	"\u64BB>T{a4};",
+	"\u64BC>H{a4}n;",
+	"\u64BD>Qia{o4};",
+	"\u64BE>Zhua;",
+	"\u64BF>Ji{a3}n;",
+	"\u64C0>G{a3}n;",
+	"\u64C1>Y{o3}ng;",
+	"\u64C2>Le{i2};",
+	"\u64C3>Ku{o3};",
+	"\u64C4>L{u3};",
+	"\u64C5>Sh{a4}n;",
+	"\u64C6>Zhu{o2};",
+	"\u64C7>Z{e2};",
+	"\u64C8>Pu;",
+	"\u64C9>Chu{o4};",
+	"\u64CA>J{i2};",
+	"\u64CB>D{a3}ng;",
+	"\u64CC>Su{o3};",
+	"\u64CD>Cao;",
+	"\u64CE>Q{i2}ng;",
+	"\u64CF>J{i4}ng;",
+	"\u64D0>Hu{a4}n;",
+	"\u64D1>Jie;",
+	"\u64D2>Q{i2}n;",
+	"\u64D3>Kua{i3};",
+	"\u64D4>Dan;",
+	"\u64D5>Xi;",
+	"\u64D6>G{e3};",
+	"\u64D7>P{i4};",
+	"\u64D8>B{o4};",
+	"\u64D9>A{o4};",
+	"\u64DA>J{u4};",
+	"\u64DB>Y{e4};",
+	"\u64DE>So{u3};",
+	"\u64DF>M{i2};",
+	"\u64E0>J{i3};",
+	"\u64E1>Ta{i2};",
+	"\u64E2>Zhu{o2};",
+	"\u64E3>Da{o3};",
+	"\u64E4>X{i3}ng;",
+	"\u64E5>L{a3}n;",
+	"\u64E6>Ca;",
+	"\u64E7>J{u3};",
+	"\u64E8>Y{e2};",
+	"\u64E9>R{u3};",
+	"\u64EA>Y{e4};",
+	"\u64EB>Y{e4};",
+	"\u64EC>N{i3};",
+	"\u64ED>H{u4};",
+	"\u64EE>J{i2};",
+	"\u64EF>B{i4}n;",
+	"\u64F0>N{i2}ng;",
+	"\u64F1>Ge;",
+	"\u64F2>Zh{i2};",
+	"\u64F3>Ji{e2};",
+	"\u64F4>Ku{o4};",
+	"\u64F5>M{o2};",
+	"\u64F6>Ji{a4}n;",
+	"\u64F7>Xi{e2};",
+	"\u64F8>Li{e4};",
+	"\u64F9>Tan;",
+	"\u64FA>Ba{i3};",
+	"\u64FB>So{u3};",
+	"\u64FC>L{u3};",
+	"\u64FD>L{uu}{e4};",
+	"\u64FE>Ra{o3};",
+	"\u64FF>Zh{i2};",
+	"\u6500>Pan;",
+	"\u6501>Y{a3}ng;",
+	"\u6502>Le{i4};",
+	"\u6503>S{a4};",
+	"\u6504>Shu;",
+	"\u6505>Z{a3}n;",
+	"\u6506>Ni{a3}n;",
+	"\u6507>Xi{a3}n;",
+	"\u6508>J{u4}n;",
+	"\u6509>Hu{o4};",
+	"\u650A>L{i4};",
+	"\u650B>L{a4};",
+	"\u650C>H{a4}n;",
+	"\u650D>Y{i2}ng;",
+	"\u650E>L{u2};",
+	"\u650F>L{o3}ng;",
+	"\u6510>Qian;",
+	"\u6511>Qian;",
+	"\u6512>Z{a3}n;",
+	"\u6513>Qian;",
+	"\u6514>L{a2}n;",
+	"\u6515>San;",
+	"\u6516>Ying;",
+	"\u6517>Me{i2};",
+	"\u6518>R{a2}ng;",
+	"\u6519>Chan;",
+	"\u651B>Cuan;",
+	"\u651C>Xi;",
+	"\u651D>Sh{e4};",
+	"\u651E>Lu{o3};",
+	"\u651F>J{u4}n;",
+	"\u6520>M{i2};",
+	"\u6521>L{i2};",
+	"\u6522>Z{a3}n;",
+	"\u6523>L{uu}{a2}n;",
+	"\u6524>Tan;",
+	"\u6525>Zu{a4}n;",
+	"\u6526>L{i4};",
+	"\u6527>Dian;",
+	"\u6528>Wa;",
+	"\u6529>D{a3}ng;",
+	"\u652A>Jia{o3};",
+	"\u652B>Ju{e2};",
+	"\u652C>L{a3}n;",
+	"\u652D>L{i4};",
+	"\u652E>N{a3}ng;",
+	"\u652F>Zhi;",
+	"\u6530>Gu{i4};",
+	"\u6531>Gu{i3};",
+	"\u6532>Qi;",
+	"\u6533>X{i2}n;",
+	"\u6534>Pu;",
+	"\u6535>Sui;",
+	"\u6536>Shou;",
+	"\u6537>Ka{o2};",
+	"\u6538>You;",
+	"\u6539>Ga{i3};",
+	"\u653A>Y{i3};",
+	"\u653B>Gong;",
+	"\u653C>Gan;",
+	"\u653D>Ban;",
+	"\u653E>F{a4}ng;",
+	"\u653F>Zh{e4}ng;",
+	"\u6540>B{o2};",
+	"\u6541>Dian;",
+	"\u6542>Ko{u4};",
+	"\u6543>M{i3}n;",
+	"\u6544>W{u4};",
+	"\u6545>G{u4};",
+	"\u6546>H{e2};",
+	"\u6547>C{e4};",
+	"\u6548>Xia{o4};",
+	"\u6549>M{i3};",
+	"\u654A>Ch{u4};",
+	"\u654B>G{e2};",
+	"\u654C>D{i2};",
+	"\u654D>X{u4};",
+	"\u654E>Jia{o4};",
+	"\u654F>M{i3}n;",
+	"\u6550>Ch{e2}n;",
+	"\u6551>Ji{u4};",
+	"\u6552>Zh{e4}n;",
+	"\u6553>Du{o2};",
+	"\u6554>Y{u3};",
+	"\u6555>Ch{i4};",
+	"\u6556>A{o2};",
+	"\u6557>Ba{i4};",
+	"\u6558>X{u4};",
+	"\u6559>Jia{o4};",
+	"\u655A>Du{o2};",
+	"\u655B>Li{a4}n;",
+	"\u655C>Ni{e4};",
+	"\u655D>B{i4};",
+	"\u655E>Ch{a3}ng;",
+	"\u655F>Di{a3}n;",
+	"\u6560>Du{o2};",
+	"\u6561>Y{i4};",
+	"\u6562>G{a3}n;",
+	"\u6563>S{a4}n;",
+	"\u6564>K{e3};",
+	"\u6565>Y{a4}n;",
+	"\u6566>Dun;",
+	"\u6567>Q{i3};",
+	"\u6568>Do{u3};",
+	"\u6569>Xia{o4};",
+	"\u656A>Du{o2};",
+	"\u656B>Jia{o4};",
+	"\u656C>J{i4}ng;",
+	"\u656D>Y{a2}ng;",
+	"\u656E>Xi{a2};",
+	"\u656F>M{i2}n;",
+	"\u6570>Sh{u4};",
+	"\u6571>A{i2};",
+	"\u6572>Qiao;",
+	"\u6573>A{i2};",
+	"\u6574>Zh{e3}ng;",
+	"\u6575>D{i2};",
+	"\u6576>Zh{e4}n;",
+	"\u6577>Fu;",
+	"\u6578>Sh{u4};",
+	"\u6579>Lia{o2};",
+	"\u657A>Qu;",
+	"\u657B>Xi{o4}ng;",
+	"\u657C>X{i3};",
+	"\u657D>Jia{o3};",
+	"\u657F>Jia{o3};",
+	"\u6580>Zhu{o2};",
+	"\u6581>Y{i4};",
+	"\u6582>Li{a4}n;",
+	"\u6583>B{i4};",
+	"\u6584>L{i4};",
+	"\u6585>Xia{o4};",
+	"\u6586>Xia{o4};",
+	"\u6587>W{e2}n;",
+	"\u6588>Xu{e2};",
+	"\u6589>Q{i2};",
+	"\u658A>Q{i2};",
+	"\u658B>Zhai;",
+	"\u658C>Bin;",
+	"\u658D>Ju{e2};",
+	"\u658E>Zhai;",
+	"\u6590>Fe{i3};",
+	"\u6591>Ban;",
+	"\u6592>Ban;",
+	"\u6593>L{a2}n;",
+	"\u6594>Y{u3};",
+	"\u6595>L{a2}n;",
+	"\u6596>We{i3};",
+	"\u6597>Do{u3};",
+	"\u6598>Sheng;",
+	"\u6599>Lia{o4};",
+	"\u659A>Ji{a3};",
+	"\u659B>H{u2};",
+	"\u659C>Xi{e2};",
+	"\u659D>Ji{a3};",
+	"\u659E>Y{u3};",
+	"\u659F>Zhen;",
+	"\u65A0>Jia{o4};",
+	"\u65A1>W{o4};",
+	"\u65A2>To{u3};",
+	"\u65A3>Ch{u4};",
+	"\u65A4>Jin;",
+	"\u65A5>Ch{i4};",
+	"\u65A6>Y{i2}n;",
+	"\u65A7>F{u3};",
+	"\u65A8>Qiang;",
+	"\u65A9>Zh{a3}n;",
+	"\u65AA>Q{u2};",
+	"\u65AB>Zhu{o2};",
+	"\u65AC>Zh{a3}n;",
+	"\u65AD>Du{a4}n;",
+	"\u65AE>Zhu{o2};",
+	"\u65AF>Si;",
+	"\u65B0>Xin;",
+	"\u65B1>Zhu{o2};",
+	"\u65B2>Zhu{o2};",
+	"\u65B3>Q{i2}n;",
+	"\u65B4>L{i2}n;",
+	"\u65B5>Zhu{o2};",
+	"\u65B6>Ch{u4};",
+	"\u65B7>Du{a4}n;",
+	"\u65B8>Zh{u3};",
+	"\u65B9>Fang;",
+	"\u65BA>Xi{e4};",
+	"\u65BB>H{a2}ng;",
+	"\u65BC>Y{u2};",
+	"\u65BD>Shi;",
+	"\u65BE>Pe{i4};",
+	"\u65BF>Yo{u2};",
+	"\u65C1>P{a2}ng;",
+	"\u65C2>Q{i2};",
+	"\u65C3>Zhan;",
+	"\u65C4>Ma{o2};",
+	"\u65C5>L{uu3};",
+	"\u65C6>Pe{i4};",
+	"\u65C7>Pi;",
+	"\u65C8>Li{u2};",
+	"\u65C9>Fu;",
+	"\u65CA>F{a3}ng;",
+	"\u65CB>Xu{a2}n;",
+	"\u65CC>Jing;",
+	"\u65CD>Jing;",
+	"\u65CE>N{i3};",
+	"\u65CF>Z{u2};",
+	"\u65D0>Zha{o4};",
+	"\u65D1>Y{i3};",
+	"\u65D2>Li{u2};",
+	"\u65D3>Shao;",
+	"\u65D4>Ji{a4}n;",
+	"\u65D6>Y{i3};",
+	"\u65D7>Q{i2};",
+	"\u65D8>Zh{i4};",
+	"\u65D9>Fan;",
+	"\u65DA>Piao;",
+	"\u65DB>Fan;",
+	"\u65DC>Zhan;",
+	"\u65DD>Gua{i4};",
+	"\u65DE>Su{i4};",
+	"\u65DF>Y{u2};",
+	"\u65E0>W{u2};",
+	"\u65E1>J{i4};",
+	"\u65E2>J{i4};",
+	"\u65E3>J{i4};",
+	"\u65E4>Hu{o4};",
+	"\u65E5>R{i4};",
+	"\u65E6>D{a4}n;",
+	"\u65E7>Ji{u4};",
+	"\u65E8>Zh{i3};",
+	"\u65E9>Za{o3};",
+	"\u65EA>Xi{e2};",
+	"\u65EB>Tiao;",
+	"\u65EC>X{u2}n;",
+	"\u65ED>X{u4};",
+	"\u65EE>X{u4};",
+	"\u65EF>X{u4};",
+	"\u65F0>G{a4}n;",
+	"\u65F1>H{a4}n;",
+	"\u65F2>Ta{i2};",
+	"\u65F3>D{i4};",
+	"\u65F4>Xu;",
+	"\u65F5>Ch{a3}n;",
+	"\u65F6>Sh{i2};",
+	"\u65F7>Ku{a4}ng;",
+	"\u65F8>Y{a2}ng;",
+	"\u65F9>Sh{i2};",
+	"\u65FA>W{a4}ng;",
+	"\u65FB>M{i2}n;",
+	"\u65FC>M{i2}n;",
+	"\u65FD>Tun;",
+	"\u65FE>Chun;",
+	"\u65FF>W{u3};",
+	"\u6600>Y{u2}n;",
+	"\u6601>Be{i4};",
+	"\u6602>{A2}ng;",
+	"\u6603>Z{e4};",
+	"\u6604>B{a3}n;",
+	"\u6605>Ji{e2};",
+	"\u6606>Kun;",
+	"\u6607>Sheng;",
+	"\u6608>H{u4};",
+	"\u6609>F{a3}ng;",
+	"\u660A>Ha{o4};",
+	"\u660B>Gu{i4};",
+	"\u660C>Chang;",
+	"\u660D>Xuan;",
+	"\u660E>M{i2}ng;",
+	"\u660F>Hun;",
+	"\u6610>Fen;",
+	"\u6611>Q{i3}n;",
+	"\u6612>Hu;",
+	"\u6613>Y{i4};",
+	"\u6614>X{i2};",
+	"\u6615>Xin;",
+	"\u6616>Y{a2}n;",
+	"\u6617>Z{e4};",
+	"\u6618>F{a3}ng;",
+	"\u6619>T{a2}n;",
+	"\u661A>Sh{e4}n;",
+	"\u661B>J{u4};",
+	"\u661C>Y{a2}ng;",
+	"\u661D>Z{a3}n;",
+	"\u661E>B{i3}ng;",
+	"\u661F>Xing;",
+	"\u6620>Y{i4}ng;",
+	"\u6621>Xu{a4}n;",
+	"\u6622>Pe{i3};",
+	"\u6623>Zh{e3}n;",
+	"\u6624>Ling;",
+	"\u6625>Chun;",
+	"\u6626>Ha{o4};",
+	"\u6627>Me{i4};",
+	"\u6628>Zu{o2};",
+	"\u6629>M{o4};",
+	"\u662A>Bi{a4}n;",
+	"\u662B>X{u3};",
+	"\u662C>Hun;",
+	"\u662D>Zhao;",
+	"\u662E>Z{o4}ng;",
+	"\u662F>Sh{i4};",
+	"\u6630>Sh{i4};",
+	"\u6631>Y{u4};",
+	"\u6632>Fe{i4};",
+	"\u6633>Di{e2};",
+	"\u6634>Ma{o3};",
+	"\u6635>N{i4};",
+	"\u6636>Ch{a3}ng;",
+	"\u6637>Wen;",
+	"\u6638>Dong;",
+	"\u6639>A{i3};",
+	"\u663A>B{i3}ng;",
+	"\u663B>{A2}ng;",
+	"\u663C>Zho{u4};",
+	"\u663D>L{o2}ng;",
+	"\u663E>Xi{a3}n;",
+	"\u663F>Ku{a4}ng;",
+	"\u6640>Tia{o3};",
+	"\u6641>Cha{o2};",
+	"\u6642>Sh{i2};",
+	"\u6643>Hu{a3}ng;",
+	"\u6644>Hu{a3}ng;",
+	"\u6645>Xuan;",
+	"\u6646>Ku{i2};",
+	"\u6647>Xu;",
+	"\u6648>Jia{o3};",
+	"\u6649>J{i4}n;",
+	"\u664A>Zh{i3};",
+	"\u664B>J{i4}n;",
+	"\u664C>Sh{a3}ng;",
+	"\u664D>T{o2}ng;",
+	"\u664E>H{o3}ng;",
+	"\u664F>Y{a4}n;",
+	"\u6650>Gai;",
+	"\u6651>Xi{a3}ng;",
+	"\u6652>Sha{i4};",
+	"\u6653>Xia{o3};",
+	"\u6654>Ye;",
+	"\u6655>Yun;",
+	"\u6656>Hui;",
+	"\u6657>H{a2}n;",
+	"\u6658>H{a4}n;",
+	"\u6659>J{u4}n;",
+	"\u665A>W{a3}n;",
+	"\u665B>Xi{a4}n;",
+	"\u665C>Kun;",
+	"\u665D>Zho{u4};",
+	"\u665E>Xi;",
+	"\u665F>Ch{e2}ng;",
+	"\u6660>Sh{e2}ng;",
+	"\u6661>Bu;",
+	"\u6662>Zhe;",
+	"\u6663>Zhe;",
+	"\u6664>W{u4};",
+	"\u6665>H{a4}n;",
+	"\u6666>Hu{i4};",
+	"\u6667>Ha{o4};",
+	"\u6668>Ch{e2}n;",
+	"\u6669>W{a3}n;",
+	"\u666A>Ti{a3}n;",
+	"\u666B>Zhu{o2};",
+	"\u666C>Zu{i4};",
+	"\u666D>Zho{u3};",
+	"\u666E>P{u3};",
+	"\u666F>J{i3}ng;",
+	"\u6670>Xi;",
+	"\u6671>Sh{a3}n;",
+	"\u6672>Y{i3};",
+	"\u6673>X{i4};",
+	"\u6674>Q{i2}ng;",
+	"\u6675>Q{i3};",
+	"\u6676>Jing;",
+	"\u6677>Gu{i3};",
+	"\u6678>Zh{e3}n;",
+	"\u6679>Y{i4};",
+	"\u667A>Zh{i4};",
+	"\u667B>{a3}n;",
+	"\u667C>W{a3}n;",
+	"\u667D>L{i2}n;",
+	"\u667E>Li{a4}ng;",
+	"\u667F>Chang;",
+	"\u6680>W{a3}ng;",
+	"\u6681>Xia{o3};",
+	"\u6682>Z{a4}n;",
+	"\u6684>Xuan;",
+	"\u6685>Xu{a3}n;",
+	"\u6686>Y{i2};",
+	"\u6687>Xi{a2};",
+	"\u6688>Yun;",
+	"\u6689>Hui;",
+	"\u668A>F{u3};",
+	"\u668B>M{i3}n;",
+	"\u668C>Ku{i2};",
+	"\u668D>H{e4};",
+	"\u668E>Y{i4}ng;",
+	"\u668F>D{u3};",
+	"\u6690>We{i3};",
+	"\u6691>Sh{u3};",
+	"\u6692>Q{i2}ng;",
+	"\u6693>Ma{o4};",
+	"\u6694>N{a2}n;",
+	"\u6695>Ji{a3}n;",
+	"\u6696>Nu{a3}n;",
+	"\u6697>{A4}n;",
+	"\u6698>Y{a2}ng;",
+	"\u6699>Chun;",
+	"\u669A>Ya{o2};",
+	"\u669B>Su{o3};",
+	"\u669C>J{i4}n;",
+	"\u669D>M{i2}ng;",
+	"\u669E>Jia{o3};",
+	"\u669F>Ka{i3};",
+	"\u66A0>Ga{o3};",
+	"\u66A1>W{e3}ng;",
+	"\u66A2>Ch{a4}ng;",
+	"\u66A3>Q{i4};",
+	"\u66A4>Ha{o4};",
+	"\u66A5>Y{a4}n;",
+	"\u66A6>L{i4};",
+	"\u66A7>A{i4};",
+	"\u66A8>J{i4};",
+	"\u66A9>Gu{i4};",
+	"\u66AA>M{e3}n;",
+	"\u66AB>Z{a4}n;",
+	"\u66AC>Xi{e4};",
+	"\u66AD>Ha{o4};",
+	"\u66AE>M{u4};",
+	"\u66AF>M{o4};",
+	"\u66B0>Cong;",
+	"\u66B1>N{i4};",
+	"\u66B2>Zhang;",
+	"\u66B3>Hu{i4};",
+	"\u66B4>Ba{o4};",
+	"\u66B5>H{a4}n;",
+	"\u66B6>Xu{a2}n;",
+	"\u66B7>Chu{a2}n;",
+	"\u66B8>Lia{o2};",
+	"\u66B9>Xian;",
+	"\u66BA>D{a4}n;",
+	"\u66BB>J{i3}ng;",
+	"\u66BC>Pie;",
+	"\u66BD>L{i2}n;",
+	"\u66BE>Tun;",
+	"\u66BF>X{i3};",
+	"\u66C0>Y{i4};",
+	"\u66C1>J{i4};",
+	"\u66C2>Hu{a4}ng;",
+	"\u66C3>Ta{i4};",
+	"\u66C4>Y{e4};",
+	"\u66C5>Y{e4};",
+	"\u66C6>L{i4};",
+	"\u66C7>T{a2}n;",
+	"\u66C8>T{o2}ng;",
+	"\u66C9>Xia{o3};",
+	"\u66CA>Fe{i4};",
+	"\u66CB>Q{i3}n;",
+	"\u66CC>Zha{o4};",
+	"\u66CD>Ha{o4};",
+	"\u66CE>Y{i4};",
+	"\u66CF>Xi{a4}ng;",
+	"\u66D0>Xing;",
+	"\u66D1>Sen;",
+	"\u66D2>Jia{o3};",
+	"\u66D3>Ba{o4};",
+	"\u66D4>J{i4}ng;",
+	"\u66D5>Yi{a4}n;",
+	"\u66D6>A{i4};",
+	"\u66D7>Y{e4};",
+	"\u66D8>R{u2};",
+	"\u66D9>Sh{u4};",
+	"\u66DA>M{e2}ng;",
+	"\u66DB>Xun;",
+	"\u66DC>Ya{o4};",
+	"\u66DD>P{u4};",
+	"\u66DE>L{i4};",
+	"\u66DF>Ch{e2}n;",
+	"\u66E0>Ku{a4}ng;",
+	"\u66E1>Di{e2};",
+	"\u66E3>Y{a4}n;",
+	"\u66E4>Hu{o4};",
+	"\u66E5>L{u2};",
+	"\u66E6>Xi;",
+	"\u66E7>R{o2}ng;",
+	"\u66E8>L{o2}ng;",
+	"\u66E9>N{a3}ng;",
+	"\u66EA>Lu{o3};",
+	"\u66EB>Lu{a2}n;",
+	"\u66EC>Sha{i4};",
+	"\u66ED>T{a3}ng;",
+	"\u66EE>Y{a3}n;",
+	"\u66EF>Ch{u2};",
+	"\u66F0>Yue;",
+	"\u66F1>Yue;",
+	"\u66F2>Q{u3};",
+	"\u66F3>Y{i4};",
+	"\u66F4>G{e4}ng;",
+	"\u66F5>Y{e4};",
+	"\u66F6>Hu;",
+	"\u66F7>H{e2};",
+	"\u66F8>Shu;",
+	"\u66F9>Ca{o2};",
+	"\u66FA>Ca{o2};",
+	"\u66FC>M{a4}n;",
+	"\u66FD>Ceng;",
+	"\u66FE>C{e2}ng;",
+	"\u66FF>T{i4};",
+	"\u6700>Zu{i4};",
+	"\u6701>C{a3}n;",
+	"\u6702>X{u4};",
+	"\u6703>Hu{i4};",
+	"\u6704>Y{i4}n;",
+	"\u6705>Qi{e4};",
+	"\u6706>Fen;",
+	"\u6707>P{i2};",
+	"\u6708>Yu{e4};",
+	"\u6709>Yo{u3};",
+	"\u670A>Ru{a3}n;",
+	"\u670B>P{e2}ng;",
+	"\u670C>Ban;",
+	"\u670D>F{u2};",
+	"\u670E>L{i2}ng;",
+	"\u670F>Fe{i3};",
+	"\u6710>Q{u2};",
+	"\u6712>N{uu4};",
+	"\u6713>Tia{o4};",
+	"\u6714>Shu{o4};",
+	"\u6715>Zh{e4}n;",
+	"\u6716>L{a3}ng;",
+	"\u6717>L{a3}ng;",
+	"\u6718>Juan;",
+	"\u6719>M{i2}ng;",
+	"\u671A>Huang;",
+	"\u671B>W{a4}ng;",
+	"\u671C>Tun;",
+	"\u671D>Zhao;",
+	"\u671E>Ji;",
+	"\u671F>Q{i2};",
+	"\u6720>Ying;",
+	"\u6721>Zong;",
+	"\u6722>W{a4}ng;",
+	"\u6723>T{o2}ng;",
+	"\u6724>L{a3}ng;",
+	"\u6726>M{e2}ng;",
+	"\u6727>L{o2}ng;",
+	"\u6728>M{u4};",
+	"\u6729>D{e3}ng;",
+	"\u672A>We{i4};",
+	"\u672B>M{o4};",
+	"\u672C>B{e3}n;",
+	"\u672D>Zh{a2};",
+	"\u672E>Zh{u2};",
+	"\u672F>Zh{u2};",
+	"\u6731>Zhu;",
+	"\u6732>R{e2}n;",
+	"\u6733>Ba;",
+	"\u6734>P{o4};",
+	"\u6735>Du{o3};",
+	"\u6736>Du{o3};",
+	"\u6737>Dao;",
+	"\u6738>L{i4};",
+	"\u6739>Qi{u2};",
+	"\u673A>Ji;",
+	"\u673B>Jiu;",
+	"\u673C>B{i3};",
+	"\u673D>Xi{u3};",
+	"\u673E>T{i2}ng;",
+	"\u673F>C{i4};",
+	"\u6740>Sha;",
+	"\u6742>Z{a2};",
+	"\u6743>Qu{a2}n;",
+	"\u6744>Qian;",
+	"\u6745>Y{u2};",
+	"\u6746>Gan;",
+	"\u6747>Wu;",
+	"\u6748>Cha;",
+	"\u6749>Shan;",
+	"\u674A>X{u2}n;",
+	"\u674B>Fan;",
+	"\u674C>W{u4};",
+	"\u674D>Z{i3};",
+	"\u674E>L{i3};",
+	"\u674F>X{i4}ng;",
+	"\u6750>Ca{i2};",
+	"\u6751>Cun;",
+	"\u6752>R{e4}n;",
+	"\u6753>Sha{o2};",
+	"\u6754>Tuo;",
+	"\u6755>D{i4};",
+	"\u6756>Zh{a4}ng;",
+	"\u6757>M{a2}ng;",
+	"\u6758>Ch{i4};",
+	"\u6759>Y{i4};",
+	"\u675A>G{u3};",
+	"\u675B>Gong;",
+	"\u675C>D{u4};",
+	"\u675D>Y{i2};",
+	"\u675E>Q{i3};",
+	"\u675F>Sh{u4};",
+	"\u6760>Gang;",
+	"\u6761>Tia{o2};",
+	"\u6765>La{i2};",
+	"\u6767>M{a2}ng;",
+	"\u6768>Y{a2}ng;",
+	"\u6769>M{a4};",
+	"\u676A>Mia{o3};",
+	"\u676B>S{i4};",
+	"\u676C>Yu{a2}n;",
+	"\u676D>H{a2}ng;",
+	"\u676E>Fe{i4};",
+	"\u676F>Bei;",
+	"\u6770>Ji{e2};",
+	"\u6771>Dong;",
+	"\u6772>Ga{o3};",
+	"\u6773>Ya{o3};",
+	"\u6774>Xian;",
+	"\u6775>Ch{u3};",
+	"\u6776>Qun;",
+	"\u6777>P{a2};",
+	"\u6778>Shu;",
+	"\u6779>Hu{a4};",
+	"\u677A>Xin;",
+	"\u677B>Cho{u3};",
+	"\u677C>Zh{u4};",
+	"\u677D>Cho{u3};",
+	"\u677E>Song;",
+	"\u677F>B{a3}n;",
+	"\u6780>Song;",
+	"\u6781>J{i2};",
+	"\u6782>Yu{e4};",
+	"\u6783>J{i4}n;",
+	"\u6784>Gou;",
+	"\u6785>Ji;",
+	"\u6786>Ma{o2};",
+	"\u6787>P{i2};",
+	"\u6788>B{i4};",
+	"\u6789>W{a3}ng;",
+	"\u678A>{A4}ng;",
+	"\u678B>Fang;",
+	"\u678C>F{e2}n;",
+	"\u678D>Y{i4};",
+	"\u678E>F{u2};",
+	"\u678F>N{a2}n;",
+	"\u6790>Xi;",
+	"\u6791>H{u4};",
+	"\u6792>Y{a2};",
+	"\u6793>Do{u3};",
+	"\u6794>X{u2}n;",
+	"\u6795>Zh{e3}n;",
+	"\u6796>Yao;",
+	"\u6797>L{i2}n;",
+	"\u6798>Ru{i4};",
+	"\u6799>{E2};",
+	"\u679A>Me{i2};",
+	"\u679B>Zha{o4};",
+	"\u679C>Gu{o3};",
+	"\u679D>Zhi;",
+	"\u679E>Cong;",
+	"\u679F>Y{u4}n;",
+	"\u67A1>Do{u3};",
+	"\u67A2>Shu;",
+	"\u67A3>Za{o3};",
+	"\u67A5>L{i4};",
+	"\u67A7>Ji{a4}n;",
+	"\u67A8>Ch{e2}ng;",
+	"\u67AA>Qiang;",
+	"\u67AB>Feng;",
+	"\u67AC>N{a2}n;",
+	"\u67AD>Xiao;",
+	"\u67AE>Xian;",
+	"\u67AF>Ku;",
+	"\u67B0>P{i2}ng;",
+	"\u67B1>Y{i2};",
+	"\u67B2>X{i3};",
+	"\u67B3>Zhi;",
+	"\u67B4>Gua{i3};",
+	"\u67B5>Xiao;",
+	"\u67B6>Ji{a4};",
+	"\u67B7>Jia;",
+	"\u67B8>Go{u3};",
+	"\u67B9>Fu;",
+	"\u67BA>M{o4};",
+	"\u67BB>Y{i4};",
+	"\u67BC>Y{e4};",
+	"\u67BD>Y{e4};",
+	"\u67BE>Sh{i4};",
+	"\u67BF>Ni{e4};",
+	"\u67C0>B{i3};",
+	"\u67C1>Du{o4};",
+	"\u67C2>Y{i2};",
+	"\u67C3>L{i2}ng;",
+	"\u67C4>B{i3}ng;",
+	"\u67C5>N{i3};",
+	"\u67C6>La;",
+	"\u67C7>H{e2};",
+	"\u67C8>P{a2}n;",
+	"\u67C9>F{a2}n;",
+	"\u67CA>Zhong;",
+	"\u67CB>Da{i4};",
+	"\u67CC>C{i2};",
+	"\u67CD>Yang;",
+	"\u67CE>Fu;",
+	"\u67CF>B{o2};",
+	"\u67D0>Mo{u3};",
+	"\u67D1>Gan;",
+	"\u67D2>Qi;",
+	"\u67D3>R{a3}n;",
+	"\u67D4>Ro{u2};",
+	"\u67D5>Ma{o4};",
+	"\u67D6>Zhao;",
+	"\u67D7>Song;",
+	"\u67D8>Zh{e4};",
+	"\u67D9>Xi{a2};",
+	"\u67DA>Yo{u4};",
+	"\u67DB>Shen;",
+	"\u67DC>J{u3};",
+	"\u67DD>Tu{o4};",
+	"\u67DE>Zu{o4};",
+	"\u67DF>N{a2}n;",
+	"\u67E0>N{i2}ng;",
+	"\u67E1>Y{o3}ng;",
+	"\u67E2>D{i3};",
+	"\u67E3>Zh{i2};",
+	"\u67E4>Zha;",
+	"\u67E5>Ch{a2};",
+	"\u67E6>D{a4}n;",
+	"\u67E7>Gu;",
+	"\u67E8>Pu;",
+	"\u67E9>Ji{u4};",
+	"\u67EA>Ao;",
+	"\u67EB>F{u2};",
+	"\u67EC>Ji{a3}n;",
+	"\u67ED>Bo;",
+	"\u67EE>Du{o4};",
+	"\u67EF>Ke;",
+	"\u67F0>Na{i4};",
+	"\u67F1>Zh{u4};",
+	"\u67F2>B{i4};",
+	"\u67F3>Li{u3};",
+	"\u67F4>Cha{i2};",
+	"\u67F5>Zh{a4};",
+	"\u67F6>S{i4};",
+	"\u67F7>Zh{u4};",
+	"\u67F8>Pei;",
+	"\u67F9>Sh{i4};",
+	"\u67FA>Gua{i3};",
+	"\u67FB>Ch{a2};",
+	"\u67FC>Ya{o3};",
+	"\u67FD>Ju{e2};",
+	"\u67FE>Ji{u4};",
+	"\u67FF>Sh{i4};",
+	"\u6800>Zhi;",
+	"\u6801>Li{u3};",
+	"\u6802>Me{i2};",
+	"\u6804>R{o2}ng;",
+	"\u6805>Zh{a4};",
+	"\u6807>Biao;",
+	"\u6808>Zh{a4}n;",
+	"\u6809>Ji{e2};",
+	"\u680A>L{o2}ng;",
+	"\u680B>D{o4}ng;",
+	"\u680C>L{u2};",
+	"\u680E>L{i4};",
+	"\u680F>L{a2}n;",
+	"\u6810>Y{o3}ng;",
+	"\u6811>Sh{u4};",
+	"\u6812>X{u2}n;",
+	"\u6813>Shuan;",
+	"\u6814>Q{i4};",
+	"\u6815>Zhen;",
+	"\u6816>Qi;",
+	"\u6817>L{i4};",
+	"\u6818>Y{i3};",
+	"\u6819>Xi{a2}ng;",
+	"\u681A>Zh{e4}n;",
+	"\u681B>L{i4};",
+	"\u681C>S{u4};",
+	"\u681D>Gua;",
+	"\u681E>Kan;",
+	"\u681F>Bing;",
+	"\u6820>R{e3}n;",
+	"\u6821>Xia{o4};",
+	"\u6822>B{o2};",
+	"\u6823>R{e3}n;",
+	"\u6824>B{i4}ng;",
+	"\u6825>Zi;",
+	"\u6826>Cho{u2};",
+	"\u6827>Y{i4};",
+	"\u6828>Ji{e2};",
+	"\u6829>X{u3};",
+	"\u682A>Zhu;",
+	"\u682B>Ji{a4}n;",
+	"\u682C>Zu{i4};",
+	"\u682D>{E2}r;",
+	"\u682E>{e3}r;",
+	"\u682F>Yo{u3};",
+	"\u6830>F{a2};",
+	"\u6831>G{o3}ng;",
+	"\u6832>Ka{o3};",
+	"\u6833>La{o3};",
+	"\u6834>Zhan;",
+	"\u6835>L{i4};",
+	"\u6836>Yin;",
+	"\u6837>Y{a2}ng;",
+	"\u6838>H{e2};",
+	"\u6839>Gen;",
+	"\u683A>Zh{i3};",
+	"\u683B>Ch{i4};",
+	"\u683C>G{e2};",
+	"\u683D>Zai;",
+	"\u683E>Lu{a2}n;",
+	"\u683F>F{u2};",
+	"\u6840>Ji{e2};",
+	"\u6841>H{a2}ng;",
+	"\u6842>Gu{i4};",
+	"\u6843>Ta{o2};",
+	"\u6844>Gu{a4}ng;",
+	"\u6845>We{i2};",
+	"\u6846>Ku{a4}ng;",
+	"\u6847>R{u2};",
+	"\u6848>{A4}n;",
+	"\u6849>{A4}n;",
+	"\u684A>Ju{a4}n;",
+	"\u684B>Y{i2};",
+	"\u684C>Zhuo;",
+	"\u684D>Ku;",
+	"\u684E>Zh{i2};",
+	"\u684F>Qi{o2}ng;",
+	"\u6850>T{o2}ng;",
+	"\u6851>Sang;",
+	"\u6852>Sang;",
+	"\u6853>Hu{a2}n;",
+	"\u6854>Ji{e2};",
+	"\u6855>Ji{u4};",
+	"\u6856>Xu{e4};",
+	"\u6857>Du{o4};",
+	"\u6858>Zhu{i4};",
+	"\u6859>Y{u2};",
+	"\u685A>Z{a3}n;",
+	"\u685C>Ying;",
+	"\u685F>Zh{a4}n;",
+	"\u6860>Y{a2};",
+	"\u6861>Na{o2};",
+	"\u6862>Zhen;",
+	"\u6863>D{a3}ng;",
+	"\u6864>Qi;",
+	"\u6865>Qia{o2};",
+	"\u6866>Hu{a4};",
+	"\u6867>Kua{i4};",
+	"\u6868>Ji{a3}ng;",
+	"\u6869>Zhuang;",
+	"\u686A>X{u2}n;",
+	"\u686B>Suo;",
+	"\u686C>Sha;",
+	"\u686D>Zhen;",
+	"\u686E>Bei;",
+	"\u686F>Ting;",
+	"\u6870>Gua;",
+	"\u6871>J{i4}ng;",
+	"\u6872>B{o2};",
+	"\u6873>B{e4}n;",
+	"\u6874>F{u2};",
+	"\u6875>Ru{i3};",
+	"\u6876>T{o3}ng;",
+	"\u6877>Ju{e2};",
+	"\u6878>Xi;",
+	"\u6879>L{a2}ng;",
+	"\u687A>Li{u3};",
+	"\u687B>Feng;",
+	"\u687C>Qi;",
+	"\u687D>W{e3}n;",
+	"\u687E>Jun;",
+	"\u687F>G{a3}n;",
+	"\u6880>C{u4};",
+	"\u6881>Li{a2}ng;",
+	"\u6882>Qi{u2};",
+	"\u6883>T{i3}ng;",
+	"\u6884>Yo{u3};",
+	"\u6885>Me{i2};",
+	"\u6886>Bang;",
+	"\u6887>L{o4}ng;",
+	"\u6888>Peng;",
+	"\u6889>Zhuang;",
+	"\u688A>D{i4};",
+	"\u688B>Xuan;",
+	"\u688C>T{u2};",
+	"\u688D>Za{o4};",
+	"\u688E>Ao;",
+	"\u688F>G{u4};",
+	"\u6890>B{i4};",
+	"\u6891>D{i2};",
+	"\u6892>H{a2}n;",
+	"\u6893>Z{i3};",
+	"\u6894>Zhi;",
+	"\u6895>R{e4}n;",
+	"\u6896>Be{i4};",
+	"\u6897>G{e3}ng;",
+	"\u6898>Ji{a4}n;",
+	"\u6899>Hu{a4}n;",
+	"\u689A>W{a3}n;",
+	"\u689B>Nu{o2};",
+	"\u689C>Ji{a2};",
+	"\u689D>Tia{o2};",
+	"\u689E>J{i4};",
+	"\u689F>Xiao;",
+	"\u68A0>L{uu3};",
+	"\u68A1>Hu{a2}n;",
+	"\u68A2>Shao;",
+	"\u68A3>C{e2}n;",
+	"\u68A4>F{e2}n;",
+	"\u68A5>Song;",
+	"\u68A6>M{e4}ng;",
+	"\u68A7>W{u2};",
+	"\u68A8>L{i2};",
+	"\u68A9>L{i2};",
+	"\u68AA>Do{u4};",
+	"\u68AB>Cen;",
+	"\u68AC>Y{i3}ng;",
+	"\u68AD>Suo;",
+	"\u68AE>J{u2};",
+	"\u68AF>Ti;",
+	"\u68B0>Ji{e4};",
+	"\u68B1>K{u3}n;",
+	"\u68B2>Zhu{o2};",
+	"\u68B3>Shu;",
+	"\u68B4>Chan;",
+	"\u68B5>F{a4}n;",
+	"\u68B6>We{i3};",
+	"\u68B7>J{i4}ng;",
+	"\u68B8>L{i2};",
+	"\u68B9>Bing;",
+	"\u68BC>Ta{o2};",
+	"\u68BD>Zh{i4};",
+	"\u68BE>La{i2};",
+	"\u68BF>Li{a2}n;",
+	"\u68C0>Ji{a3}n;",
+	"\u68C1>Zhu{o2};",
+	"\u68C2>L{i2}ng;",
+	"\u68C3>L{i2};",
+	"\u68C4>Q{i4};",
+	"\u68C5>B{i4}ng;",
+	"\u68C6>Zhun;",
+	"\u68C7>Cong;",
+	"\u68C8>Qi{a4}n;",
+	"\u68C9>Mi{a2}n;",
+	"\u68CA>Q{i2};",
+	"\u68CB>Q{i2};",
+	"\u68CC>Ca{i3};",
+	"\u68CD>G{u4}n;",
+	"\u68CE>Ch{a2}n;",
+	"\u68CF>T{e4};",
+	"\u68D0>Fe{i3};",
+	"\u68D1>Pa{i2};",
+	"\u68D2>B{a4}ng;",
+	"\u68D3>Po{u3};",
+	"\u68D4>Hun;",
+	"\u68D5>Zong;",
+	"\u68D6>Ch{e2}ng;",
+	"\u68D7>Za{o3};",
+	"\u68D8>J{i2};",
+	"\u68D9>L{i4};",
+	"\u68DA>P{e2}ng;",
+	"\u68DB>Y{u4};",
+	"\u68DC>Y{u4};",
+	"\u68DD>G{u4};",
+	"\u68DE>H{u2}n;",
+	"\u68DF>D{o4}ng;",
+	"\u68E0>T{a2}ng;",
+	"\u68E1>Gang;",
+	"\u68E2>W{a3}ng;",
+	"\u68E3>D{i4};",
+	"\u68E4>X{i2};",
+	"\u68E5>F{a2}n;",
+	"\u68E6>Cheng;",
+	"\u68E7>Zh{a4}n;",
+	"\u68E8>Q{i3};",
+	"\u68E9>Yuan;",
+	"\u68EA>Y{a3}n;",
+	"\u68EB>Y{u4};",
+	"\u68EC>Quan;",
+	"\u68ED>Y{i4};",
+	"\u68EE>Sen;",
+	"\u68EF>R{e3}n;",
+	"\u68F0>Chu{i2};",
+	"\u68F1>L{e2}ng;",
+	"\u68F2>Qi;",
+	"\u68F3>Zhu{o2};",
+	"\u68F4>F{u2};",
+	"\u68F5>Ke;",
+	"\u68F6>La{i2};",
+	"\u68F7>Zou;",
+	"\u68F8>Zou;",
+	"\u68F9>Zhuo;",
+	"\u68FA>Guan;",
+	"\u68FB>F{e2}n;",
+	"\u68FC>F{e2}n;",
+	"\u68FD>Chen;",
+	"\u68FE>Qi{o2}ng;",
+	"\u68FF>Ni{e4};",
+	"\u6900>W{a3}n;",
+	"\u6901>Gu{o3};",
+	"\u6902>L{u4};",
+	"\u6903>Ha{o2};",
+	"\u6904>Jie;",
+	"\u6905>Y{i3};",
+	"\u6906>Cho{u2};",
+	"\u6907>J{u3};",
+	"\u6908>J{u2};",
+	"\u6909>Ch{e2}ng;",
+	"\u690A>Zu{o2};",
+	"\u690B>Li{a2}ng;",
+	"\u690C>Qiang;",
+	"\u690D>Zh{i2};",
+	"\u690E>Zhui;",
+	"\u690F>Ya;",
+	"\u6910>Ju;",
+	"\u6911>Bei;",
+	"\u6912>Jiao;",
+	"\u6913>Zhu{o2};",
+	"\u6914>Zi;",
+	"\u6915>Bin;",
+	"\u6916>P{e2}ng;",
+	"\u6917>D{i4}ng;",
+	"\u6918>Ch{u3};",
+	"\u691C>Ji{a3}n;",
+	"\u691D>Gui;",
+	"\u691E>X{i4};",
+	"\u691F>D{u2};",
+	"\u6920>Qi{a4}n;",
+	"\u6924>Lu{o2};",
+    };
+  }
+
+  private String[] getString2() {
+	return new String[] {
+
+	"\u6925>Zhi;",
+	"\u692A>P{e4}ng;",
+	"\u692B>Zh{a3}n;",
+	"\u692D>Tu{o3};",
+	"\u692E>Sen;",
+	"\u692F>Du{o2};",
+	"\u6930>Y{e2};",
+	"\u6931>Fo{u4};",
+	"\u6932>We{i3};",
+	"\u6933>Wei;",
+	"\u6934>Du{a4}n;",
+	"\u6935>Ji{a3};",
+	"\u6936>Zong;",
+	"\u6937>Jian;",
+	"\u6938>Y{i2};",
+	"\u6939>Sh{e4}n;",
+	"\u693A>X{i2};",
+	"\u693B>Y{a4}n;",
+	"\u693C>Y{a3}n;",
+	"\u693D>Chu{a2}n;",
+	"\u693E>Zh{a4}n;",
+	"\u693F>Chun;",
+	"\u6940>Y{u3};",
+	"\u6941>H{e2};",
+	"\u6942>Zha;",
+	"\u6943>W{o4};",
+	"\u6944>Pi{a2}n;",
+	"\u6945>B{i4};",
+	"\u6946>Yao;",
+	"\u6947>Hu{o4};",
+	"\u6948>Xu;",
+	"\u6949>Ru{o4};",
+	"\u694A>Y{a2}ng;",
+	"\u694B>L{a4};",
+	"\u694C>Y{a2}n;",
+	"\u694D>B{e3}n;",
+	"\u694E>H{u2}n;",
+	"\u694F>Ku{i2};",
+	"\u6950>Ji{e4};",
+	"\u6951>Ku{i2};",
+	"\u6952>Si;",
+	"\u6953>Feng;",
+	"\u6954>Xi{e4};",
+	"\u6955>Tu{o3};",
+	"\u6956>Zh{i4};",
+	"\u6957>Ji{a4}n;",
+	"\u6958>M{u4};",
+	"\u6959>Ma{o4};",
+	"\u695A>Ch{u3};",
+	"\u695B>H{u4};",
+	"\u695C>H{u2};",
+	"\u695D>Li{a4}n;",
+	"\u695E>L{e2}ng;",
+	"\u695F>T{i2}ng;",
+	"\u6960>N{a2}n;",
+	"\u6961>Y{u2};",
+	"\u6962>Yo{u2};",
+	"\u6963>Me{i2};",
+	"\u6964>S{o3}ng;",
+	"\u6965>Xu{a4}n;",
+	"\u6966>Xu{a4}n;",
+	"\u6967>Ying;",
+	"\u6968>Zhen;",
+	"\u6969>Pi{a2}n;",
+	"\u696A>Y{e4};",
+	"\u696B>J{i2};",
+	"\u696C>Ji{e2};",
+	"\u696D>Y{e4};",
+	"\u696E>Ch{u3};",
+	"\u696F>Sh{u3}n;",
+	"\u6970>Y{u2};",
+	"\u6971>Co{u4};",
+	"\u6972>Wei;",
+	"\u6973>Me{i2};",
+	"\u6974>D{i4};",
+	"\u6975>J{i2};",
+	"\u6976>Ji{e2};",
+	"\u6977>Ka{i3};",
+	"\u6978>Qiu;",
+	"\u6979>Y{i2}ng;",
+	"\u697A>Ro{u2};",
+	"\u697B>H{e2}ng;",
+	"\u697C>Lo{u2};",
+	"\u697D>L{e4};",
+	"\u6980>P{i3}n;",
+	"\u6982>Ga{i4};",
+	"\u6983>T{a2}n;",
+	"\u6984>L{a3}n;",
+	"\u6985>Y{u2}n;",
+	"\u6986>Y{u2};",
+	"\u6987>Ch{e4}n;",
+	"\u6988>L{uu2};",
+	"\u6989>J{u3};",
+	"\u698D>Xi{e4};",
+	"\u698E>Ji{a3};",
+	"\u698F>Y{i4};",
+	"\u6990>Zh{a3}n;",
+	"\u6991>F{u4};",
+	"\u6992>Na{i4};",
+	"\u6993>M{i4};",
+	"\u6994>L{a2}ng;",
+	"\u6995>R{o2}ng;",
+	"\u6996>G{u3};",
+	"\u6997>Ji{a4}n;",
+	"\u6998>J{u3};",
+	"\u6999>T{a3};",
+	"\u699A>Ya{o3};",
+	"\u699B>Zhen;",
+	"\u699C>B{a3}ng;",
+	"\u699D>Sha;",
+	"\u699E>Yu{a2}n;",
+	"\u699F>Z{i3};",
+	"\u69A0>Ming;",
+	"\u69A1>S{u4};",
+	"\u69A2>Ji{a4};",
+	"\u69A3>Ya{o2};",
+	"\u69A4>Ji{e2};",
+	"\u69A5>Hu{a3}ng;",
+	"\u69A6>G{a4}n;",
+	"\u69A7>Fe{i3};",
+	"\u69A8>Zh{a4};",
+	"\u69A9>Qi{a2}n;",
+	"\u69AA>M{a4};",
+	"\u69AB>S{u3}n;",
+	"\u69AC>Yu{a2}n;",
+	"\u69AD>Xi{e4};",
+	"\u69AE>R{o2}ng;",
+	"\u69AF>Sh{i2};",
+	"\u69B0>Zhi;",
+	"\u69B1>Cui;",
+	"\u69B2>Y{u2}n;",
+	"\u69B3>T{i2}ng;",
+	"\u69B4>Li{u2};",
+	"\u69B5>R{o2}ng;",
+	"\u69B6>T{a2}ng;",
+	"\u69B7>Qu{e4};",
+	"\u69B8>Zhai;",
+	"\u69B9>Si;",
+	"\u69BA>Sh{e4}ng;",
+	"\u69BB>T{a4};",
+	"\u69BC>K{e4};",
+	"\u69BD>Xi;",
+	"\u69BE>G{u4};",
+	"\u69BF>Qi;",
+	"\u69C0>Ka{o3};",
+	"\u69C1>Ga{o3};",
+	"\u69C2>Sun;",
+	"\u69C3>P{a2}n;",
+	"\u69C4>Tao;",
+	"\u69C5>G{e2};",
+	"\u69C6>X{u2}n;",
+	"\u69C7>Dian;",
+	"\u69C8>No{u4};",
+	"\u69C9>J{i2};",
+	"\u69CA>Shu{o4};",
+	"\u69CB>Go{u4};",
+	"\u69CC>Chu{i2};",
+	"\u69CD>Qiang;",
+	"\u69CE>Cha;",
+	"\u69CF>Qi{a3}n;",
+	"\u69D0>Hua{i2};",
+	"\u69D1>Me{i2};",
+	"\u69D2>X{u4};",
+	"\u69D3>G{a4}ng;",
+	"\u69D4>Gao;",
+	"\u69D5>Zhu{o2};",
+	"\u69D6>Tu{o4};",
+	"\u69D8>Y{a4}ng;",
+	"\u69D9>Dian;",
+	"\u69DA>Ji{a3};",
+	"\u69DB>Ji{a4}n;",
+	"\u69DC>Zu{i4};",
+	"\u69DF>Bin;",
+	"\u69E0>Zhu;",
+	"\u69E2>X{i2};",
+	"\u69E3>Q{i3};",
+	"\u69E4>Li{a2}n;",
+	"\u69E5>Hu{i4};",
+	"\u69E6>Y{o2}ng;",
+	"\u69E7>Qi{a4}n;",
+	"\u69E8>Gu{o3};",
+	"\u69E9>Ga{i4};",
+	"\u69EA>Ga{i4};",
+	"\u69EB>Tu{a2}n;",
+	"\u69EC>Hu{a4};",
+	"\u69ED>C{u4};",
+	"\u69EE>Sen;",
+	"\u69EF>Cui;",
+	"\u69F0>B{e4}ng;",
+	"\u69F1>Yo{u3};",
+	"\u69F2>H{u2};",
+	"\u69F3>Ji{a3}ng;",
+	"\u69F4>H{u4};",
+	"\u69F5>Hu{a4}n;",
+	"\u69F6>Ku{i4};",
+	"\u69F7>Y{i4};",
+	"\u69F8>Ni{e4};",
+	"\u69F9>Gao;",
+	"\u69FA>Kang;",
+	"\u69FB>Gui;",
+	"\u69FC>Gui;",
+	"\u69FD>Ca{o2};",
+	"\u69FE>M{a2}n;",
+	"\u69FF>J{i3}n;",
+	"\u6A00>D{i4};",
+	"\u6A01>Zhuang;",
+	"\u6A02>L{e4};",
+	"\u6A03>L{a2}ng;",
+	"\u6A04>Ch{e2}n;",
+	"\u6A05>Cong;",
+	"\u6A06>L{i2};",
+	"\u6A07>Xiu;",
+	"\u6A08>Q{i2}ng;",
+	"\u6A09>Shu{a3}ng;",
+	"\u6A0A>F{a2}n;",
+	"\u6A0B>Tong;",
+	"\u6A0C>Gu{a4}n;",
+	"\u6A0D>Ji;",
+	"\u6A0E>Suo;",
+	"\u6A0F>Le{i3};",
+	"\u6A10>L{u3};",
+	"\u6A11>Li{a2}ng;",
+	"\u6A12>M{i4};",
+	"\u6A13>Lo{u2};",
+	"\u6A14>Cha{o2};",
+	"\u6A15>S{u4};",
+	"\u6A16>Ke;",
+	"\u6A17>Shu;",
+	"\u6A18>T{a2}ng;",
+	"\u6A19>Biao;",
+	"\u6A1A>L{u4};",
+	"\u6A1B>Jiu;",
+	"\u6A1C>Sh{u4};",
+	"\u6A1D>Zha;",
+	"\u6A1E>Shu;",
+	"\u6A1F>Zhang;",
+	"\u6A20>M{e2}n;",
+	"\u6A21>M{o2};",
+	"\u6A22>Nia{o3};",
+	"\u6A23>Y{a4}ng;",
+	"\u6A24>Tia{o2};",
+	"\u6A25>P{e2}ng;",
+	"\u6A26>Zh{u4};",
+	"\u6A27>Sha;",
+	"\u6A28>Xi;",
+	"\u6A29>Qu{a2}n;",
+	"\u6A2A>H{e2}ng;",
+	"\u6A2B>Jian;",
+	"\u6A2C>Cong;",
+	"\u6A2F>Qi{a2}ng;",
+	"\u6A31>Ying;",
+	"\u6A32>{E4}r;",
+	"\u6A33>X{i2}n;",
+	"\u6A34>Zh{i2};",
+	"\u6A35>Qia{o2};",
+	"\u6A36>Zui;",
+	"\u6A37>Cong;",
+	"\u6A38>P{u2};",
+	"\u6A39>Sh{u4};",
+	"\u6A3A>Hu{a4};",
+	"\u6A3B>Ku{i4};",
+	"\u6A3C>Zhen;",
+	"\u6A3D>Zun;",
+	"\u6A3E>Yu{e4};",
+	"\u6A3F>Zh{a3}n;",
+	"\u6A40>Xi;",
+	"\u6A41>X{u2}n;",
+	"\u6A42>Di{a4}n;",
+	"\u6A43>Fa;",
+	"\u6A44>G{a3}n;",
+	"\u6A45>M{o2};",
+	"\u6A46>W{u3};",
+	"\u6A47>Qiao;",
+	"\u6A48>Na{o2};",
+	"\u6A49>L{i4}n;",
+	"\u6A4A>Li{u2};",
+	"\u6A4B>Qia{o2};",
+	"\u6A4C>Xi{a4}n;",
+	"\u6A4D>R{u4}n;",
+	"\u6A4E>F{a2}n;",
+	"\u6A4F>Zh{a3}n;",
+	"\u6A50>Tu{o4};",
+	"\u6A51>La{o3};",
+	"\u6A52>Y{u2}n;",
+	"\u6A53>Sh{u4}n;",
+	"\u6A54>Tu{i2};",
+	"\u6A55>Cheng;",
+	"\u6A56>T{a2}ng;",
+	"\u6A57>M{e2}ng;",
+	"\u6A58>J{u2};",
+	"\u6A59>Ch{e2}ng;",
+	"\u6A5A>S{u4};",
+	"\u6A5B>Ju{e2};",
+	"\u6A5C>Ju{e2};",
+	"\u6A5D>Tan;",
+	"\u6A5E>Hu{i4};",
+	"\u6A5F>Ji;",
+	"\u6A60>Nu{o3};",
+	"\u6A61>Xi{a4}ng;",
+	"\u6A62>Tu{o3};",
+	"\u6A63>N{i3}ng;",
+	"\u6A64>Ru{i3};",
+	"\u6A65>Zhu;",
+	"\u6A66>Chu{a2}ng;",
+	"\u6A67>Zeng;",
+	"\u6A68>F{e2}n;",
+	"\u6A69>Qi{o2}ng;",
+	"\u6A6A>R{a3}n;",
+	"\u6A6B>H{e2}ng;",
+	"\u6A6C>C{e2}n;",
+	"\u6A6D>Gu;",
+	"\u6A6E>Li{u3};",
+	"\u6A6F>La{o4};",
+	"\u6A70>Gao;",
+	"\u6A71>Ch{u2};",
+	"\u6A76>J{i2};",
+	"\u6A77>Dou;",
+	"\u6A79>L{u3};",
+	"\u6A7C>Yu{a2}n;",
+	"\u6A7D>T{a4};",
+	"\u6A7E>Shu;",
+	"\u6A7F>Jiang;",
+	"\u6A80>T{a2}n;",
+	"\u6A81>L{i3}n;",
+	"\u6A82>N{o2}ng;",
+	"\u6A83>Y{i3}n;",
+	"\u6A84>X{i2};",
+	"\u6A85>Su{i4};",
+	"\u6A86>Shan;",
+	"\u6A87>Zu{i4};",
+	"\u6A88>Xu{a2}n;",
+	"\u6A89>Cheng;",
+	"\u6A8A>G{a4}n;",
+	"\u6A8B>Ju;",
+	"\u6A8C>Zu{i4};",
+	"\u6A8D>Y{i4};",
+	"\u6A8E>Q{i2}n;",
+	"\u6A8F>P{u3};",
+	"\u6A90>Y{a2}n;",
+	"\u6A91>Le{i2};",
+	"\u6A92>Feng;",
+	"\u6A93>Hu{i3};",
+	"\u6A94>D{a3}ng;",
+	"\u6A95>J{i4};",
+	"\u6A96>Su{i4};",
+	"\u6A97>B{o4};",
+	"\u6A98>B{i4};",
+	"\u6A99>D{i3}ng;",
+	"\u6A9A>Ch{u3};",
+	"\u6A9B>Zhua;",
+	"\u6A9C>Kua{i4};",
+	"\u6A9D>J{i2};",
+	"\u6A9E>Ji{e3};",
+	"\u6A9F>Ji{a3};",
+	"\u6AA0>Q{i2}ng;",
+	"\u6AA1>Zh{e4};",
+	"\u6AA2>Ji{a3}n;",
+	"\u6AA3>Qi{a2}ng;",
+	"\u6AA4>Da{o4};",
+	"\u6AA5>Y{i3};",
+	"\u6AA6>Bia{o3};",
+	"\u6AA7>Song;",
+	"\u6AA8>She;",
+	"\u6AA9>L{i3}n;",
+	"\u6AAB>Ch{a2};",
+	"\u6AAC>M{e2}ng;",
+	"\u6AAD>Y{i2}n;",
+	"\u6AAE>Ta{o2};",
+	"\u6AAF>Ta{i2};",
+	"\u6AB0>Mi{a2}n;",
+	"\u6AB1>Q{i2};",
+	"\u6AB2>To{a2}n;",
+	"\u6AB3>Bin;",
+	"\u6AB4>Hu{o4};",
+	"\u6AB5>J{i4};",
+	"\u6AB6>Qian;",
+	"\u6AB7>M{i2};",
+	"\u6AB8>N{i2}ng;",
+	"\u6AB9>Yi;",
+	"\u6ABA>Ga{o3};",
+	"\u6ABB>Ji{a4}n;",
+	"\u6ABC>Y{i4}n;",
+	"\u6ABD>{E2}r;",
+	"\u6ABE>Q{i3}ng;",
+	"\u6ABF>Y{a3}n;",
+	"\u6AC0>Q{i2};",
+	"\u6AC1>M{i4};",
+	"\u6AC2>Zha{o4};",
+	"\u6AC3>Gu{i4};",
+	"\u6AC4>Chun;",
+	"\u6AC5>Ji;",
+	"\u6AC6>Ku{i2};",
+	"\u6AC7>P{o2};",
+	"\u6AC8>D{e4}ng;",
+	"\u6AC9>Ch{u2};",
+	"\u6ACB>Mi{a2}n;",
+	"\u6ACC>You;",
+	"\u6ACD>Zh{i4};",
+	"\u6ACE>Gu{a4}ng;",
+	"\u6ACF>Qian;",
+	"\u6AD0>Le{i3};",
+	"\u6AD1>Le{i3};",
+	"\u6AD2>S{a4};",
+	"\u6AD3>L{u3};",
+	"\u6AD4>L{i4};",
+	"\u6AD5>Cu{a2}n;",
+	"\u6AD6>L{uu2};",
+	"\u6AD7>Mi{e4};",
+	"\u6AD8>Hu{i4};",
+	"\u6AD9>Ou;",
+	"\u6ADA>L{uu2};",
+	"\u6ADB>Ji{e2};",
+	"\u6ADC>Gao;",
+	"\u6ADD>D{u2};",
+	"\u6ADE>Yu{a2}n;",
+	"\u6ADF>L{i4};",
+	"\u6AE0>Fe{i4};",
+	"\u6AE1>Zhu{o2};",
+	"\u6AE2>So{u3};",
+	"\u6AE3>Li{a2}n;",
+	"\u6AE5>Ch{u2};",
+	"\u6AE7>Zhu;",
+	"\u6AE8>L{u2};",
+	"\u6AE9>Y{a2}n;",
+	"\u6AEA>L{i4};",
+	"\u6AEB>Zhu;",
+	"\u6AEC>Ch{e4}n;",
+	"\u6AED>Ji{e2};",
+	"\u6AEE>{E4};",
+	"\u6AEF>Su;",
+	"\u6AF0>Hua{i2};",
+	"\u6AF1>Ni{e4};",
+	"\u6AF2>Y{u4};",
+	"\u6AF3>L{o2}ng;",
+	"\u6AF4>La{i4};",
+	"\u6AF6>Xi{a3}n;",
+	"\u6AF8>J{u3};",
+	"\u6AF9>Xiao;",
+	"\u6AFA>L{i2}ng;",
+	"\u6AFB>Ying;",
+	"\u6AFC>Jian;",
+	"\u6AFD>Y{i3}n;",
+	"\u6AFE>Yo{u2};",
+	"\u6AFF>Y{i2}ng;",
+	"\u6B00>Xiang;",
+	"\u6B01>N{o2}ng;",
+	"\u6B02>B{o2};",
+	"\u6B03>Ch{a2}n;",
+	"\u6B04>L{a2}n;",
+	"\u6B05>J{u3};",
+	"\u6B06>Shuang;",
+	"\u6B07>Sh{e4};",
+	"\u6B08>We{i2};",
+	"\u6B09>C{o4}ng;",
+	"\u6B0A>Qu{a2}n;",
+	"\u6B0B>Q{u2};",
+	"\u6B0E>Y{u4};",
+	"\u6B0F>Lu{o2};",
+	"\u6B10>L{i3};",
+	"\u6B11>Z{a4}n;",
+	"\u6B12>Lu{a2}n;",
+	"\u6B13>D{a3}ng;",
+	"\u6B14>Ju{e2};",
+	"\u6B16>L{a3}n;",
+	"\u6B17>L{a2}n;",
+	"\u6B18>Zh{u3};",
+	"\u6B19>Le{i2};",
+	"\u6B1A>L{i3};",
+	"\u6B1B>B{a4};",
+	"\u6B1C>N{a2}ng;",
+	"\u6B1D>Y{u4};",
+	"\u6B1E>L{i2}ng;",
+	"\u6B20>Qi{a4}n;",
+	"\u6B21>C{i4};",
+	"\u6B22>Huan;",
+	"\u6B23>Xin;",
+	"\u6B24>Y{u2};",
+	"\u6B25>Y{u4};",
+	"\u6B26>Qian;",
+	"\u6B27>Ou;",
+	"\u6B28>Xu;",
+	"\u6B29>Chao;",
+	"\u6B2A>Ch{u4};",
+	"\u6B2B>Chi;",
+	"\u6B2C>Ka{i4};",
+	"\u6B2D>Y{i4};",
+	"\u6B2E>Ju{e2};",
+	"\u6B2F>X{i2};",
+	"\u6B30>Xu;",
+	"\u6B31>Xi{a4};",
+	"\u6B32>Y{u4};",
+	"\u6B33>Kua{i4};",
+	"\u6B34>L{a2}ng;",
+	"\u6B35>Ku{a3}n;",
+	"\u6B36>Shu{o4};",
+	"\u6B37>Xi;",
+	"\u6B38>A{i3};",
+	"\u6B39>Yi;",
+	"\u6B3A>Qi;",
+	"\u6B3B>Hu;",
+	"\u6B3C>Ch{i3};",
+	"\u6B3D>Qin;",
+	"\u6B3E>Ku{a3}n;",
+	"\u6B3F>K{a3}n;",
+	"\u6B40>Ku{a3}n;",
+	"\u6B41>K{a3}n;",
+	"\u6B42>Chu{a2}n;",
+	"\u6B43>Sh{a4};",
+	"\u6B44>Gua;",
+	"\u6B45>Yin;",
+	"\u6B46>Xin;",
+	"\u6B47>Xie;",
+	"\u6B48>Y{u2};",
+	"\u6B49>Qi{a4}n;",
+	"\u6B4A>Xiao;",
+	"\u6B4B>Y{i2};",
+	"\u6B4C>Ge;",
+	"\u6B4D>Wu;",
+	"\u6B4E>T{a4}n;",
+	"\u6B4F>J{i4}n;",
+	"\u6B50>Ou;",
+	"\u6B51>Hu;",
+	"\u6B52>T{i4};",
+	"\u6B53>Huan;",
+	"\u6B54>Xu;",
+	"\u6B55>P{e4}n;",
+	"\u6B56>Xi;",
+	"\u6B57>Xia{o4};",
+	"\u6B58>Xu;",
+	"\u6B59>X{i4};",
+	"\u6B5B>Li{a4}n;",
+	"\u6B5C>Ch{u4};",
+	"\u6B5D>Y{i4};",
+	"\u6B5E>K{a3}n;",
+	"\u6B5F>Y{u2};",
+	"\u6B60>Chu{o4};",
+	"\u6B61>Huan;",
+	"\u6B62>Zh{i3};",
+	"\u6B63>Zh{e4}ng;",
+	"\u6B64>C{i3};",
+	"\u6B65>B{u4};",
+	"\u6B66>W{u3};",
+	"\u6B67>Q{i2};",
+	"\u6B68>B{u4};",
+	"\u6B69>B{u4};",
+	"\u6B6A>Wai;",
+	"\u6B6B>J{u4};",
+	"\u6B6C>Qi{a2}n;",
+	"\u6B6D>Ch{i2};",
+	"\u6B6E>S{e4};",
+	"\u6B6F>Ch{i3};",
+	"\u6B70>S{e4};",
+	"\u6B71>Zh{o3}ng;",
+	"\u6B72>Su{i4};",
+	"\u6B73>Su{i4};",
+	"\u6B74>L{i4};",
+	"\u6B75>Cu{o4};",
+	"\u6B76>Y{u2};",
+	"\u6B77>L{i4};",
+	"\u6B78>Gui;",
+	"\u6B79>Da{i3};",
+	"\u6B7A>Da{i3};",
+	"\u6B7B>S{i3};",
+	"\u6B7C>Jian;",
+	"\u6B7D>Zh{e2};",
+	"\u6B7E>M{o4};",
+	"\u6B7F>M{o4};",
+	"\u6B80>Ya{o3};",
+	"\u6B81>M{o4};",
+	"\u6B82>C{u2};",
+	"\u6B83>Yang;",
+	"\u6B84>Ti{a3}n;",
+	"\u6B85>Sheng;",
+	"\u6B86>Da{i4};",
+	"\u6B87>Shang;",
+	"\u6B88>X{u4};",
+	"\u6B89>X{u4}n;",
+	"\u6B8A>Shu;",
+	"\u6B8B>C{a2}n;",
+	"\u6B8C>Ju{e2};",
+	"\u6B8D>Pia{o3};",
+	"\u6B8E>Qi{a4};",
+	"\u6B8F>Qi{u4};",
+	"\u6B90>S{u4};",
+	"\u6B91>Q{i2}ng;",
+	"\u6B92>Y{u3}n;",
+	"\u6B93>Li{a4}n;",
+	"\u6B94>Y{i4};",
+	"\u6B95>Fo{u3};",
+	"\u6B96>Zh{i2};",
+	"\u6B97>Y{e4};",
+	"\u6B98>C{a2}n;",
+	"\u6B99>Hun;",
+	"\u6B9A>Dan;",
+	"\u6B9B>J{i2};",
+	"\u6B9C>Y{e4};",
+	"\u6B9D>Zhen;",
+	"\u6B9E>Y{u3}n;",
+	"\u6B9F>Wen;",
+	"\u6BA0>Cho{u4};",
+	"\u6BA1>B{i4}n;",
+	"\u6BA2>T{i4};",
+	"\u6BA3>J{i3}n;",
+	"\u6BA4>Shang;",
+	"\u6BA5>Y{i2}n;",
+	"\u6BA6>Diao;",
+	"\u6BA7>C{u4};",
+	"\u6BA8>Hu{i4};",
+	"\u6BA9>Cu{a4}n;",
+	"\u6BAA>Y{i4};",
+	"\u6BAB>Dan;",
+	"\u6BAC>D{u4};",
+	"\u6BAD>Jiang;",
+	"\u6BAE>Li{a4}n;",
+	"\u6BAF>B{i4}n;",
+	"\u6BB0>D{u2};",
+	"\u6BB2>Jian;",
+	"\u6BB3>Shu;",
+	"\u6BB4>Ou;",
+	"\u6BB5>Du{a4}n;",
+	"\u6BB6>Zh{u4};",
+	"\u6BB7>Yin;",
+	"\u6BB8>Q{i4}ng;",
+	"\u6BB9>Y{i4};",
+	"\u6BBA>Sha;",
+	"\u6BBB>Qu{e4};",
+	"\u6BBC>K{e2};",
+	"\u6BBD>Ya{o2};",
+	"\u6BBE>J{u4}n;",
+	"\u6BBF>Di{a4}n;",
+	"\u6BC0>Hu{i3};",
+	"\u6BC1>Hu{i3};",
+	"\u6BC2>G{u3};",
+	"\u6BC3>Qu{e4};",
+	"\u6BC4>Ji;",
+	"\u6BC5>Y{i4};",
+	"\u6BC6>Ou;",
+	"\u6BC7>Hu{i3};",
+	"\u6BC8>Du{a4}n;",
+	"\u6BC9>Yi;",
+	"\u6BCA>Xiao;",
+	"\u6BCB>W{u2};",
+	"\u6BCC>Gu{a4}n;",
+	"\u6BCD>M{u3};",
+	"\u6BCE>Me{i3};",
+	"\u6BCF>Me{i3};",
+	"\u6BD0>A{i3};",
+	"\u6BD1>Zu{o3};",
+	"\u6BD2>D{u2};",
+	"\u6BD3>Y{u4};",
+	"\u6BD4>B{i3};",
+	"\u6BD5>B{i4};",
+	"\u6BD6>B{i4};",
+	"\u6BD7>P{i2};",
+	"\u6BD8>P{i2};",
+	"\u6BD9>B{i4};",
+	"\u6BDA>Ch{a2}n;",
+	"\u6BDB>Ma{o2};",
+	"\u6BDE>P{u2};",
+	"\u6BE0>Jia;",
+	"\u6BE1>Zhan;",
+	"\u6BE2>Sai;",
+	"\u6BE3>M{u4};",
+	"\u6BE4>Tu{o4};",
+	"\u6BE5>X{u2}n;",
+	"\u6BE6>{E4}r;",
+	"\u6BE7>R{o2}ng;",
+	"\u6BE8>Xi{a3}n;",
+	"\u6BE9>J{u2};",
+	"\u6BEA>M{u2};",
+	"\u6BEB>Ha{o2};",
+	"\u6BEC>Qi{u2};",
+	"\u6BED>Do{u4};",
+	"\u6BEF>T{a3}n;",
+	"\u6BF0>Pe{i2};",
+	"\u6BF1>J{u2};",
+	"\u6BF2>Du{o2};",
+	"\u6BF3>Cu{i4};",
+	"\u6BF4>Bi;",
+	"\u6BF5>San;",
+	"\u6BF7>Ma{o4};",
+	"\u6BF8>Sui;",
+	"\u6BF9>Yu;",
+	"\u6BFA>Yu;",
+	"\u6BFB>Tu{o4};",
+	"\u6BFC>H{e2};",
+	"\u6BFD>Ji{a4}n;",
+	"\u6BFE>T{a4};",
+	"\u6BFF>San;",
+	"\u6C00>L{uu2};",
+	"\u6C01>M{u2};",
+	"\u6C02>L{i2};",
+	"\u6C03>T{o2}ng;",
+	"\u6C04>R{o3}ng;",
+	"\u6C05>Ch{a3}ng;",
+	"\u6C06>P{u3};",
+	"\u6C07>Lu{o2};",
+	"\u6C08>Zhan;",
+	"\u6C09>Sa{o4};",
+	"\u6C0A>Zhan;",
+	"\u6C0B>M{e2}ng;",
+	"\u6C0C>Lu{o2};",
+	"\u6C0D>Q{u2};",
+	"\u6C0E>Di{e2};",
+	"\u6C0F>Sh{i4};",
+	"\u6C10>D{i3};",
+	"\u6C11>M{i2}n;",
+	"\u6C12>Ju{e2};",
+	"\u6C13>M{a2}ng;",
+	"\u6C14>Q{i4};",
+	"\u6C15>Pie;",
+	"\u6C16>Na{i3};",
+	"\u6C17>Q{i4};",
+	"\u6C18>Dao;",
+	"\u6C19>Xian;",
+	"\u6C1A>Chuan;",
+	"\u6C1B>Fen;",
+	"\u6C1C>R{i4};",
+	"\u6C1D>Ne{i4};",
+	"\u6C1F>F{u2};",
+	"\u6C20>Shen;",
+	"\u6C21>Dong;",
+	"\u6C22>Qing;",
+	"\u6C23>Q{i4};",
+	"\u6C24>Yin;",
+	"\u6C25>Xi;",
+	"\u6C26>Ha{i4};",
+	"\u6C27>Y{a3}ng;",
+	"\u6C28>An;",
+	"\u6C29>Y{a4};",
+	"\u6C2A>K{e4};",
+	"\u6C2B>Qing;",
+	"\u6C2C>Y{a4};",
+	"\u6C2D>Dong;",
+	"\u6C2E>D{a4}n;",
+	"\u6C2F>L{uu4};",
+	"\u6C30>Qing;",
+	"\u6C31>Y{a3}ng;",
+	"\u6C32>Yun;",
+	"\u6C33>Yun;",
+	"\u6C34>Shu{i3};",
+	"\u6C35>San1dian3shu{i3};",
+	"\u6C36>Zh{e3}ng;",
+	"\u6C37>Bing;",
+	"\u6C38>Y{o3}ng;",
+	"\u6C39>D{a4}ng;",
+	"\u6C3B>L{e4};",
+	"\u6C3C>N{i4};",
+	"\u6C3D>T{u3}n;",
+	"\u6C3E>F{a4}n;",
+	"\u6C3F>Gu{i3};",
+	"\u6C40>Ting;",
+	"\u6C41>Zhi;",
+	"\u6C42>Qi{u2};",
+	"\u6C43>Bin;",
+	"\u6C44>Z{e4};",
+	"\u6C45>Mi{a3}n;",
+	"\u6C46>Cuan;",
+	"\u6C47>Hu{i4};",
+	"\u6C48>Diao;",
+	"\u6C49>Y{i4};",
+	"\u6C4A>Ch{a4};",
+	"\u6C4B>Zhu{o2};",
+	"\u6C4C>Chu{a4}n;",
+	"\u6C4D>W{a2}n;",
+	"\u6C4E>F{a4}n;",
+	"\u6C4F>Da{i4};",
+	"\u6C50>X{i4};",
+	"\u6C51>Tuo;",
+	"\u6C52>M{a2}ng;",
+	"\u6C53>Qi{u2};",
+	"\u6C54>Q{i4};",
+	"\u6C55>Sh{a4}n;",
+	"\u6C56>Pa{i4};",
+	"\u6C57>H{a4}n;",
+	"\u6C58>Qian;",
+	"\u6C59>Wu;",
+	"\u6C5A>Wu;",
+	"\u6C5B>X{u4}n;",
+	"\u6C5C>S{i4};",
+	"\u6C5D>R{u3};",
+	"\u6C5E>G{o3}ng;",
+	"\u6C5F>Jiang;",
+	"\u6C60>Ch{i2};",
+	"\u6C61>Wu;",
+	"\u6C64>Tang;",
+	"\u6C65>Zhi;",
+	"\u6C66>Ch{i2};",
+	"\u6C67>Qian;",
+	"\u6C68>M{i4};",
+	"\u6C69>Y{u4};",
+	"\u6C6A>Wang;",
+	"\u6C6B>Q{i4}ng;",
+	"\u6C6C>J{i3}ng;",
+	"\u6C6D>Ru{i4};",
+	"\u6C6E>Jun;",
+	"\u6C6F>H{o2}ng;",
+	"\u6C70>Ta{i4};",
+	"\u6C71>Qu{a3}n;",
+	"\u6C72>J{i2};",
+	"\u6C73>Bi{a4}n;",
+	"\u6C74>Bi{a4}n;",
+	"\u6C75>G{a4}n;",
+	"\u6C76>W{e4}n;",
+	"\u6C77>Zhong;",
+	"\u6C78>Fang;",
+	"\u6C79>Xiong;",
+	"\u6C7A>Ju{e2};",
+	"\u6C7B>H{a3}ng;",
+	"\u6C7C>Niou;",
+	"\u6C7D>Q{i4};",
+	"\u6C7E>F{e2}n;",
+	"\u6C7F>X{u4};",
+	"\u6C80>X{u4};",
+	"\u6C81>Q{i4}n;",
+	"\u6C82>Y{i2};",
+	"\u6C83>W{o4};",
+	"\u6C84>Y{u2}n;",
+	"\u6C85>Yu{a2}n;",
+	"\u6C86>H{a2}ng;",
+	"\u6C87>Y{a3}n;",
+	"\u6C88>Ch{e2}n;",
+	"\u6C89>Ch{e2}n;",
+	"\u6C8A>D{a4}n;",
+	"\u6C8B>Yo{u2};",
+	"\u6C8C>D{u4}n;",
+	"\u6C8D>H{u4};",
+	"\u6C8E>Hu{o4};",
+	"\u6C8F>Qie;",
+	"\u6C90>M{u4};",
+	"\u6C91>Ro{u2};",
+	"\u6C92>Me{i2};",
+	"\u6C93>T{a4};",
+	"\u6C94>Mi{a3}n;",
+	"\u6C95>W{u4};",
+	"\u6C96>Chong;",
+	"\u6C97>Tian;",
+	"\u6C98>B{i3};",
+	"\u6C99>Sha;",
+	"\u6C9A>Zh{i3};",
+	"\u6C9B>Pe{i4};",
+	"\u6C9C>P{a4}n;",
+	"\u6C9D>Zhu{i3};",
+	"\u6C9E>Za;",
+	"\u6C9F>Gou;",
+	"\u6CA0>Li{u2};",
+	"\u6CA1>Me{i2};",
+	"\u6CA2>Z{e2};",
+	"\u6CA3>Feng;",
+	"\u6CA4>O{u4};",
+	"\u6CA5>L{i4};",
+	"\u6CA6>L{u2}n;",
+	"\u6CA7>Cang;",
+	"\u6CA8>F{e2}ng;",
+	"\u6CA9>We{i2};",
+	"\u6CAA>H{u4};",
+	"\u6CAB>M{o4};",
+	"\u6CAC>Me{i4};",
+	"\u6CAD>Sh{u4};",
+	"\u6CAE>Ju;",
+	"\u6CAF>Z{a3}n;",
+	"\u6CB0>Tuo;",
+	"\u6CB1>Tu{o2};",
+	"\u6CB2>Tu{o2};",
+	"\u6CB3>H{e2};",
+	"\u6CB4>L{i4};",
+	"\u6CB5>M{i3};",
+	"\u6CB6>Y{i2};",
+	"\u6CB7>Fa;",
+	"\u6CB8>Fe{i4};",
+	"\u6CB9>Yo{u2};",
+	"\u6CBA>Ti{a2}n;",
+	"\u6CBB>Zh{i4};",
+	"\u6CBC>Zha{o3};",
+	"\u6CBD>Gu;",
+	"\u6CBE>Zhan;",
+	"\u6CBF>Y{a2}n;",
+	"\u6CC0>Si;",
+	"\u6CC1>Ku{a4}ng;",
+	"\u6CC2>Ji{o3}ng;",
+	"\u6CC3>J{u4};",
+	"\u6CC4>Xi{e4};",
+	"\u6CC5>Qi{u2};",
+	"\u6CC6>Yi;",
+	"\u6CC7>Jia;",
+	"\u6CC8>Zhong;",
+	"\u6CC9>Qu{a2}n;",
+	"\u6CCA>B{o2};",
+	"\u6CCB>Hu{i4};",
+	"\u6CCC>M{i4};",
+	"\u6CCD>Ben;",
+	"\u6CCE>Zhu{o2};",
+	"\u6CCF>Ch{u4};",
+	"\u6CD0>L{e4};",
+	"\u6CD1>Yo{u3};",
+	"\u6CD2>Gu;",
+	"\u6CD3>H{o2}ng;",
+	"\u6CD4>Gan;",
+	"\u6CD5>F{a3};",
+	"\u6CD6>Ma{o3};",
+	"\u6CD7>S{i4};",
+	"\u6CD8>Hu;",
+	"\u6CD9>P{i2}ng;",
+	"\u6CDA>C{i3};",
+	"\u6CDB>F{a4}n;",
+	"\u6CDC>Ch{i2};",
+	"\u6CDD>S{u4};",
+	"\u6CDE>N{i4}ng;",
+	"\u6CDF>Cheng;",
+	"\u6CE0>L{i2}ng;",
+	"\u6CE1>Pa{o4};",
+	"\u6CE2>Bo;",
+	"\u6CE3>Q{i4};",
+	"\u6CE4>S{i4};",
+	"\u6CE5>N{i2};",
+	"\u6CE6>J{u2};",
+	"\u6CE7>Yu{e4};",
+	"\u6CE8>Zh{u4};",
+	"\u6CE9>Sheng;",
+	"\u6CEA>Le{i4};",
+	"\u6CEB>Xu{a4}n;",
+	"\u6CEC>Xu{e4};",
+	"\u6CED>Fu;",
+	"\u6CEE>P{a4}n;",
+	"\u6CEF>M{i3}n;",
+	"\u6CF0>Ta{i4};",
+	"\u6CF1>Yang;",
+	"\u6CF2>J{i3};",
+	"\u6CF3>Y{o3}ng;",
+	"\u6CF4>Gu{a4}n;",
+	"\u6CF5>B{e4}ng;",
+	"\u6CF6>Xu{e2};",
+	"\u6CF7>L{o2}ng;",
+	"\u6CF8>L{u2};",
+	"\u6CFA>B{o2};",
+	"\u6CFB>Xi{e4};",
+	"\u6CFC>Po;",
+	"\u6CFD>Z{e2};",
+	"\u6CFE>Jing;",
+	"\u6CFF>Y{i2}n;",
+	"\u6D00>Zhou;",
+	"\u6D01>J{i2};",
+	"\u6D02>Y{i4};",
+	"\u6D03>Hui;",
+	"\u6D04>Hu{i2};",
+	"\u6D05>Zu{i3};",
+	"\u6D06>Ch{e2}ng;",
+	"\u6D07>Yin;",
+	"\u6D08>We{i2};",
+	"\u6D09>Ho{u4};",
+	"\u6D0A>Ji{a4}n;",
+	"\u6D0B>Y{a2}ng;",
+	"\u6D0C>Li{e4};",
+	"\u6D0D>S{i4};",
+	"\u6D0E>J{i4};",
+	"\u6D0F>{E2}r;",
+	"\u6D10>X{i2}ng;",
+	"\u6D11>F{u2};",
+	"\u6D12>S{a3};",
+	"\u6D13>Su{o3};",
+	"\u6D14>Zh{i3};",
+	"\u6D15>Yin;",
+	"\u6D16>W{u2};",
+	"\u6D17>X{i3};",
+	"\u6D18>Ka{o3};",
+	"\u6D19>Zhu;",
+	"\u6D1A>Ji{a4}ng;",
+	"\u6D1B>Lu{o4};",
+	"\u6D1D>{A4}n;",
+	"\u6D1E>D{o4}ng;",
+	"\u6D1F>Y{i2};",
+	"\u6D20>Mo{u2};",
+	"\u6D21>Le{i3};",
+	"\u6D22>Yi;",
+	"\u6D23>M{i3};",
+	"\u6D24>Qu{a2}n;",
+	"\u6D25>Jin;",
+	"\u6D26>M{o4};",
+	"\u6D27>We{i3};",
+	"\u6D28>Xia{o2};",
+	"\u6D29>Xi{e4};",
+	"\u6D2A>H{o2}ng;",
+	"\u6D2B>X{u4};",
+	"\u6D2C>Shu{o4};",
+	"\u6D2D>Kuang;",
+	"\u6D2E>Tao;",
+	"\u6D2F>Qi{e4};",
+	"\u6D30>J{u4};",
+	"\u6D31>{e3}r;",
+	"\u6D32>Zhou;",
+	"\u6D33>R{u4};",
+	"\u6D34>P{i2}ng;",
+	"\u6D35>X{u2}n;",
+	"\u6D36>Xiong;",
+	"\u6D37>Zh{i4};",
+	"\u6D38>Guang;",
+	"\u6D39>Hu{a2}n;",
+	"\u6D3A>M{i2}ng;",
+	"\u6D3B>Hu{o2};",
+	"\u6D3C>Wa;",
+	"\u6D3D>Qi{a4};",
+	"\u6D3E>Pa{i4};",
+	"\u6D3F>Wu;",
+	"\u6D40>Q{u3};",
+	"\u6D41>Li{u2};",
+	"\u6D42>Y{i4};",
+	"\u6D43>Ji{a2};",
+	"\u6D44>J{i4}ng;",
+	"\u6D45>Qi{a3}n;",
+	"\u6D46>Jiang;",
+	"\u6D47>Jiao;",
+	"\u6D48>Ch{e2}ng;",
+	"\u6D49>Shi;",
+	"\u6D4A>Zhu{o2};",
+	"\u6D4B>C{e4};",
+	"\u6D4D>Kua{i4};",
+	"\u6D4E>J{i4};",
+	"\u6D4F>Li{u2};",
+	"\u6D50>Ch{a3}n;",
+	"\u6D51>H{u2}n;",
+	"\u6D52>H{u3};",
+	"\u6D53>N{o2}ng;",
+	"\u6D54>X{u2}n;",
+	"\u6D55>J{i4}n;",
+	"\u6D56>Li{e4};",
+	"\u6D57>Qi{u2};",
+	"\u6D58>We{i3};",
+	"\u6D59>Zh{e4};",
+	"\u6D5A>J{u4}n;",
+	"\u6D5B>H{a4}n;",
+	"\u6D5C>Bang;",
+	"\u6D5D>M{a2}ng;",
+	"\u6D5E>Zhu{o2};",
+	"\u6D5F>Yo{u2};",
+	"\u6D60>Xi;",
+	"\u6D61>B{o2};",
+	"\u6D62>Do{u4};",
+	"\u6D63>W{a3}n;",
+	"\u6D64>H{o2}ng;",
+	"\u6D65>Y{i4};",
+	"\u6D66>P{u3};",
+	"\u6D67>Y{i3}ng;",
+	"\u6D68>L{a3}n;",
+	"\u6D69>Ha{o4};",
+	"\u6D6A>L{a4}ng;",
+	"\u6D6B>H{a3}n;",
+	"\u6D6C>L{i3};",
+	"\u6D6D>Geng;",
+	"\u6D6E>F{u2};",
+	"\u6D6F>W{u2};",
+	"\u6D70>Li{a4}n;",
+	"\u6D71>Ch{u2}n;",
+	"\u6D72>F{e2}ng;",
+	"\u6D73>Y{i4};",
+	"\u6D74>Y{u4};",
+	"\u6D75>T{o2}ng;",
+	"\u6D76>La{o2};",
+	"\u6D77>Ha{i3};",
+	"\u6D78>J{i4}n;",
+	"\u6D79>Ji{a2};",
+	"\u6D7A>Chong;",
+	"\u6D7B>W{e3}ng;",
+	"\u6D7C>Me{i3};",
+	"\u6D7D>Sui;",
+	"\u6D7E>Cheng;",
+	"\u6D7F>Pe{i4};",
+	"\u6D80>Xi{a4}n;",
+	"\u6D81>Sh{e4}n;",
+	"\u6D82>T{u2};",
+	"\u6D83>K{u4}n;",
+	"\u6D84>Pin;",
+	"\u6D85>Ni{e4};",
+	"\u6D86>H{a4}n;",
+	"\u6D87>Jing;",
+	"\u6D88>Xiao;",
+	"\u6D89>Sh{e4};",
+	"\u6D8A>Ni{a4}n;",
+	"\u6D8B>Tu;",
+	"\u6D8C>Y{o3}ng;",
+	"\u6D8D>Xia{o4};",
+	"\u6D8E>Xi{a2}n;",
+	"\u6D8F>T{i3}ng;",
+	"\u6D90>{E2};",
+	"\u6D91>S{u4};",
+	"\u6D92>Tun;",
+	"\u6D93>Juan;",
+	"\u6D94>C{e2}n;",
+	"\u6D95>T{i4};",
+	"\u6D96>L{i4};",
+	"\u6D97>Shu{i4};",
+	"\u6D98>S{i4};",
+	"\u6D99>Le{i4};",
+	"\u6D9A>Shu{i4};",
+	"\u6D9B>Tao;",
+	"\u6D9C>D{u2};",
+	"\u6D9D>La{o4};",
+	"\u6D9E>La{i2};",
+	"\u6D9F>Li{a2}n;",
+	"\u6DA0>We{i2};",
+	"\u6DA1>Wo;",
+	"\u6DA2>Y{u2}n;",
+	"\u6DA3>Hu{a4}n;",
+	"\u6DA4>D{i2};",
+	"\u6DA6>R{u4}n;",
+	"\u6DA7>Ji{a4}n;",
+	"\u6DA8>Zh{a3}ng;",
+	"\u6DA9>S{e4};",
+	"\u6DAA>F{u2};",
+	"\u6DAB>Gu{a4}n;",
+	"\u6DAC>X{i4}ng;",
+	"\u6DAD>Sho{u4};",
+	"\u6DAE>Shu{a4}n;",
+	"\u6DAF>Y{a2};",
+	"\u6DB0>Chu{o4};",
+	"\u6DB1>Zh{a4}ng;",
+	"\u6DB2>Y{e4};",
+	"\u6DB3>Kong;",
+	"\u6DB4>W{o4};",
+	"\u6DB5>H{a2}n;",
+	"\u6DB6>Tuo;",
+	"\u6DB7>Dong;",
+	"\u6DB8>H{e2};",
+	"\u6DB9>Wo;",
+	"\u6DBA>Ju;",
+	"\u6DBB>G{a4}n;",
+	"\u6DBC>Li{a2}ng;",
+	"\u6DBD>Hun;",
+	"\u6DBE>T{a4};",
+	"\u6DBF>Zhu{o2};",
+	"\u6DC0>Di{a4}n;",
+	"\u6DC1>Qi{e4};",
+	"\u6DC2>D{e2};",
+	"\u6DC3>Ju{a4}n;",
+	"\u6DC4>Zi;",
+	"\u6DC5>Xi;",
+	"\u6DC6>Ya{o2};",
+	"\u6DC7>Q{i2};",
+	"\u6DC8>G{u3};",
+	"\u6DC9>Gu{o3};",
+	"\u6DCA>H{a4}n;",
+	"\u6DCB>L{i2}n;",
+	"\u6DCC>T{a3}ng;",
+	"\u6DCD>Zhou;",
+	"\u6DCE>P{e3}ng;",
+	"\u6DCF>Ha{o4};",
+	"\u6DD0>Chang;",
+	"\u6DD1>Sh{u2};",
+	"\u6DD2>Qi;",
+	"\u6DD3>Fang;",
+	"\u6DD4>Ch{i4};",
+	"\u6DD5>L{u4};",
+	"\u6DD6>Na{o4};",
+	"\u6DD7>J{u2};",
+	"\u6DD8>Ta{o2};",
+	"\u6DD9>C{o2}ng;",
+	"\u6DDA>Le{i4};",
+	"\u6DDB>Zh{i4};",
+	"\u6DDC>P{e2}ng;",
+	"\u6DDD>Fe{i2};",
+	"\u6DDE>Song;",
+	"\u6DDF>Ti{a3}n;",
+	"\u6DE0>P{i4};",
+	"\u6DE1>D{a4}n;",
+	"\u6DE2>Y{u4};",
+	"\u6DE3>N{i2};",
+	"\u6DE4>Yu;",
+	"\u6DE5>L{u4};",
+	"\u6DE6>G{a4}n;",
+	"\u6DE7>M{i4};",
+	"\u6DE8>J{i4}ng;",
+	"\u6DE9>L{i2}ng;",
+	"\u6DEA>L{u2}n;",
+	"\u6DEB>Y{i2}n;",
+	"\u6DEC>Cu{i4};",
+	"\u6DED>Q{u2};",
+	"\u6DEE>Hua{i2};",
+	"\u6DEF>Y{u4};",
+	"\u6DF0>Ni{a4}n;",
+	"\u6DF1>Shen;",
+	"\u6DF2>Pia{o2};",
+	"\u6DF3>Ch{u2}n;",
+	"\u6DF4>W{a4};",
+	"\u6DF5>Yuan;",
+	"\u6DF6>La{i2};",
+	"\u6DF7>H{u3}n;",
+	"\u6DF8>Qing;",
+	"\u6DF9>Yan;",
+	"\u6DFA>Qi{a3}n;",
+	"\u6DFB>Tian;",
+	"\u6DFC>Mia{o3};",
+	"\u6DFD>Zh{i3};",
+	"\u6DFE>Y{i3}n;",
+	"\u6DFF>M{i4};",
+	"\u6E00>Ben;",
+	"\u6E01>Yuan;",
+	"\u6E02>W{e4}n;",
+	"\u6E03>R{e4};",
+	"\u6E04>Fei;",
+	"\u6E05>Qing;",
+	"\u6E06>Yuan;",
+	"\u6E07>K{e3};",
+	"\u6E08>J{i4};",
+	"\u6E09>Sh{e4};",
+	"\u6E0A>Yuan;",
+	"\u6E0C>L{u4};",
+	"\u6E0D>Z{i4};",
+	"\u6E0E>D{u2};",
+	"\u6E10>Ji{a4}n;",
+	"\u6E11>M{i3}n;",
+	"\u6E12>P{i4};",
+	"\u6E14>Y{u2};",
+	"\u6E15>Yuan;",
+	"\u6E16>Sh{e3}n;",
+	"\u6E17>Sh{e4}n;",
+	"\u6E18>Ro{u2};",
+	"\u6E19>Hu{a4}n;",
+	"\u6E1A>Zh{u3};",
+	"\u6E1B>Ji{a3}n;",
+	"\u6E1C>Nu{a3}n;",
+	"\u6E1D>Y{u2};",
+	"\u6E1E>Qi{u2};",
+	"\u6E1F>T{i2}ng;",
+	"\u6E20>Q{u2};",
+	"\u6E21>D{u4};",
+	"\u6E22>F{e2}ng;",
+	"\u6E23>Zha;",
+	"\u6E24>B{o2};",
+	"\u6E25>W{o4};",
+	"\u6E26>Wo;",
+	"\u6E27>D{i4};",
+	"\u6E28>Wei;",
+	"\u6E29>Wen;",
+	"\u6E2A>R{u2};",
+	"\u6E2B>Xi{e4};",
+	"\u6E2C>C{e4};",
+	"\u6E2D>We{i4};",
+	"\u6E2E>Ge;",
+	"\u6E2F>G{a3}ng;",
+	"\u6E30>Y{a3}n;",
+	"\u6E31>H{o2}ng;",
+	"\u6E32>Xu{a4}n;",
+	"\u6E33>M{i3};",
+	"\u6E34>K{e3};",
+	"\u6E35>Ma{o2};",
+	"\u6E36>Ying;",
+	"\u6E37>Y{a3}n;",
+	"\u6E38>Yo{u2};",
+	"\u6E39>Hong;",
+	"\u6E3A>Mia{o3};",
+	"\u6E3B>X{i3}ng;",
+	"\u6E3C>Me{i3};",
+	"\u6E3D>Zai;",
+	"\u6E3E>H{u2}n;",
+	"\u6E3F>Na{i4};",
+	"\u6E40>Ku{i2};",
+	"\u6E41>Sh{i2};",
+	"\u6E42>{E4};",
+	"\u6E43>Pa{i4};",
+	"\u6E44>Me{i2};",
+	"\u6E45>Li{a4}n;",
+	"\u6E46>Q{i4};",
+	"\u6E47>Q{i4};",
+	"\u6E48>Me{i2};",
+	"\u6E49>Ti{a2}n;",
+	"\u6E4A>Co{u4};",
+	"\u6E4B>We{i2};",
+	"\u6E4C>Can;",
+	"\u6E4D>Tuan;",
+	"\u6E4E>Mi{a3}n;",
+	"\u6E4F>Hu{i4};",
+	"\u6E50>M{o4};",
+	"\u6E51>X{u3};",
+	"\u6E52>J{i2};",
+	"\u6E53>P{e2}n;",
+	"\u6E54>Jian;",
+	"\u6E55>Ji{a3}n;",
+	"\u6E56>H{u2};",
+	"\u6E57>F{e4}ng;",
+	"\u6E58>Xiang;",
+	"\u6E59>Y{i4};",
+	"\u6E5A>Y{i4}n;",
+	"\u6E5B>Zh{a4}n;",
+	"\u6E5C>Sh{i2};",
+	"\u6E5D>Jie;",
+	"\u6E5E>Ch{e2}ng;",
+	"\u6E5F>Hu{a2}ng;",
+	"\u6E60>T{a4}n;",
+	"\u6E61>Y{u2};",
+	"\u6E62>B{i4};",
+	"\u6E63>M{i3}n;",
+	"\u6E64>Shi;",
+	"\u6E65>T{u2};",
+	"\u6E66>Sheng;",
+	"\u6E67>Y{o3}ng;",
+	"\u6E68>Q{u4};",
+	"\u6E69>Zh{o4}ng;",
+	"\u6E6A>Sue{i4};",
+	"\u6E6B>Jiu;",
+	"\u6E6C>Jia{o3};",
+	"\u6E6D>Qio{u2};",
+	"\u6E6E>Yin;",
+	"\u6E6F>Tang;",
+	"\u6E70>L{o2}ng;",
+	"\u6E71>Hu{o4};",
+	"\u6E72>Yu{a2}n;",
+	"\u6E73>N{a3}n;",
+	"\u6E74>B{a4}n;",
+	"\u6E75>Yo{u3};",
+	"\u6E76>Qu{a2}n;",
+	"\u6E77>Chu{i2};",
+	"\u6E78>Li{a4}ng;",
+	"\u6E79>Ch{a2}n;",
+	"\u6E7A>Y{a2}n;",
+	"\u6E7B>Ch{u2}n;",
+	"\u6E7C>Ni{e4};",
+	"\u6E7D>Zi;",
+	"\u6E7E>Wan;",
+	"\u6E7F>Shi;",
+	"\u6E80>M{a3}n;",
+	"\u6E81>Y{i2}ng;",
+	"\u6E83>Ku{i4};",
+	"\u6E85>Ji{a4}n;",
+	"\u6E86>X{u4};",
+	"\u6E87>L{uu3};",
+	"\u6E88>Gui;",
+	"\u6E89>Ga{i4};",
+	"\u6E8C>Po;",
+	"\u6E8D>J{i4}n;",
+	"\u6E8E>Gu{i4};",
+	"\u6E8F>T{a2}ng;",
+	"\u6E90>Yu{a2}n;",
+	"\u6E91>Su{o3};",
+	"\u6E92>Yu{a2}n;",
+	"\u6E93>Li{a2}n;",
+	"\u6E94>Ya{o3};",
+	"\u6E95>M{e4}ng;",
+	"\u6E96>Zh{u3}n;",
+	"\u6E97>Sh{e2}ng;",
+	"\u6E98>K{e4};",
+	"\u6E99>Ta{i4};",
+	"\u6E9A>D{a2};",
+	"\u6E9B>Wa;",
+	"\u6E9C>Liu;",
+	"\u6E9D>Gou;",
+	"\u6E9E>Sao;",
+	"\u6E9F>M{i2}ng;",
+	"\u6EA0>Zh{a4};",
+	"\u6EA1>Sh{i2};",
+	"\u6EA2>Y{i4};",
+	"\u6EA3>L{u2}n;",
+	"\u6EA4>M{a3};",
+	"\u6EA5>P{u3};",
+	"\u6EA6>We{i2};",
+	"\u6EA7>L{i4};",
+	"\u6EA8>Ca{i2};",
+	"\u6EA9>W{u4};",
+	"\u6EAA>Xi;",
+	"\u6EAB>Wen;",
+	"\u6EAC>Qiang;",
+	"\u6EAD>Z{e2};",
+	"\u6EAE>Shi;",
+	"\u6EAF>S{u4};",
+	"\u6EB0>Yi;",
+	"\u6EB1>Zhen;",
+	"\u6EB2>Sou;",
+	"\u6EB3>Y{u2}n;",
+	"\u6EB4>Xi{u4};",
+	"\u6EB5>Yin;",
+	"\u6EB6>R{o2}ng;",
+	"\u6EB7>H{u4}n;",
+	"\u6EB8>S{u4};",
+	"\u6EB9>S{u4};",
+	"\u6EBA>N{i4};",
+	"\u6EBB>T{a4};",
+	"\u6EBC>Shi;",
+	"\u6EBD>R{u4};",
+	"\u6EBE>Wei;",
+	"\u6EBF>P{a4}n;",
+	"\u6EC0>Ch{u4};",
+	"\u6EC1>Ch{u2};",
+	"\u6EC2>Pang;",
+	"\u6EC3>W{e3}ng;",
+	"\u6EC4>Cang;",
+	"\u6EC5>Mi{e4};",
+	"\u6EC6>H{e2};",
+	"\u6EC7>Dian;",
+	"\u6EC8>Ha{o4};",
+	"\u6EC9>Hu{a3}ng;",
+	"\u6ECA>X{i4};",
+	"\u6ECB>Zi;",
+	"\u6ECC>D{i2};",
+	"\u6ECD>Zh{i3};",
+	"\u6ECE>Y{i2}ng;",
+	"\u6ECF>F{u3};",
+	"\u6ED0>Ji{e2};",
+	"\u6ED1>Hu{a2};",
+	"\u6ED2>Ge;",
+	"\u6ED3>Z{i3};",
+	"\u6ED4>Tao;",
+	"\u6ED5>T{e2}ng;",
+	"\u6ED6>Sui;",
+	"\u6ED7>B{i3};",
+	"\u6ED8>Jia{o4};",
+	"\u6ED9>Hu{i4};",
+	"\u6EDA>G{u3}n;",
+	"\u6EDB>Y{i2}n;",
+	"\u6EDC>Gao;",
+	"\u6EDD>L{o2}ng;",
+	"\u6EDE>Zh{i4};",
+	"\u6EDF>Y{a4}n;",
+	"\u6EE0>Sh{e4};",
+	"\u6EE1>M{a3}n;",
+	"\u6EE2>Y{i4}ng;",
+	"\u6EE3>Ch{u2}n;",
+	"\u6EE4>L{uu4};",
+	"\u6EE5>L{a4}n;",
+	"\u6EE6>Lu{a2}n;",
+	"\u6EE8>Bin;",
+	"\u6EE9>Tan;",
+	"\u6EEA>Y{u4};",
+	"\u6EEB>So{u3};",
+	"\u6EEC>H{u4};",
+	"\u6EED>B{i4};",
+	"\u6EEE>Biao;",
+	"\u6EEF>Zh{i4};",
+	"\u6EF0>Ji{a3}ng;",
+	"\u6EF1>Ko{u4};",
+	"\u6EF2>Sh{e4}n;",
+	"\u6EF3>Shang;",
+	"\u6EF4>Di;",
+	"\u6EF5>M{i4};",
+	"\u6EF6>A{o2};",
+	"\u6EF7>L{u3};",
+	"\u6EF8>H{u3};",
+	"\u6EF9>Hu;",
+	"\u6EFA>Yo{u2};",
+	"\u6EFB>Ch{a3}n;",
+	"\u6EFC>F{a4}n;",
+	"\u6EFD>Y{o2}ng;",
+	"\u6EFE>G{u3}n;",
+	"\u6EFF>M{a3}n;",
+	"\u6F00>Q{i4}ng;",
+	"\u6F01>Y{u2};",
+	"\u6F02>Piao;",
+	"\u6F03>J{i2};",
+	"\u6F04>Y{a2};",
+	"\u6F05>Jia{o3};",
+	"\u6F06>Qi;",
+	"\u6F07>X{i3};",
+	"\u6F08>J{i4};",
+	"\u6F09>L{u4};",
+	"\u6F0A>L{uu3};",
+	"\u6F0B>L{o2}ng;",
+	"\u6F0C>J{i3}n;",
+	"\u6F0D>Gu{o2};",
+	"\u6F0E>C{o2}ng;",
+	"\u6F0F>Lo{u4};",
+	"\u6F10>Zh{i2};",
+	"\u6F11>Ga{i4};",
+	"\u6F12>Qi{a2}ng;",
+	"\u6F13>L{i2};",
+	"\u6F14>Y{a3}n;",
+	"\u6F15>Ca{o2};",
+	"\u6F16>Jia{o4};",
+	"\u6F17>Cong;",
+	"\u6F18>Q{u2}n;",
+	"\u6F19>Tu{a2}n;",
+	"\u6F1A>O{u4};",
+	"\u6F1B>T{e2}ng;",
+	"\u6F1C>Y{e3};",
+	"\u6F1D>X{i2};",
+	"\u6F1E>M{i4};",
+	"\u6F1F>T{a2}ng;",
+	"\u6F20>M{o4};",
+	"\u6F21>Shang;",
+	"\u6F22>H{a4}n;",
+	"\u6F23>Li{a2}n;",
+	"\u6F24>L{a3}n;",
+	"\u6F25>Wa;",
+	"\u6F26>L{i2};",
+	"\u6F27>Qi{a2}n;",
+	"\u6F28>F{e2}ng;",
+	"\u6F29>Xu{a2}n;",
+	"\u6F2A>Yi;",
+	"\u6F2B>M{a4}n;",
+	"\u6F2C>Z{i4};",
+	"\u6F2D>M{a3}ng;",
+	"\u6F2E>Kang;",
+	"\u6F2F>Le{i3};",
+	"\u6F30>Peng;",
+	"\u6F31>Sh{u4};",
+	"\u6F32>Zh{a3}ng;",
+	"\u6F33>Zhang;",
+	"\u6F34>Ch{o2}ng;",
+	"\u6F35>X{u4};",
+	"\u6F36>Hu{a4}n;",
+	"\u6F37>Ku{o4};",
+	"\u6F38>Ji{a4}n;",
+	"\u6F39>Yan;",
+	"\u6F3A>Chu{a3}ng;",
+	"\u6F3B>Lia{o2};",
+	"\u6F3C>Cu{i3};",
+	"\u6F3D>T{i2};",
+	"\u6F3E>Y{a4}ng;",
+	"\u6F3F>Jiang;",
+	"\u6F40>C{o2}ng;",
+	"\u6F41>Y{i3}ng;",
+	"\u6F42>H{o2}ng;",
+	"\u6F43>X{u2}n;",
+	"\u6F44>Sh{u4};",
+	"\u6F45>Gu{a4}n;",
+	"\u6F46>Y{i2}ng;",
+	"\u6F47>Xiao;",
+	"\u6F4A>X{u4};",
+	"\u6F4B>Li{a4}n;",
+	"\u6F4C>Zh{i4};",
+	"\u6F4D>We{i2};",
+	"\u6F4E>P{i4};",
+	"\u6F4F>Ju{e2};",
+	"\u6F50>Jia{o4};",
+	"\u6F51>Po;",
+	"\u6F52>D{a4}ng;",
+	"\u6F53>Hu{i4};",
+	"\u6F54>Ji{e2};",
+	"\u6F55>W{u3};",
+	"\u6F56>P{a2};",
+	"\u6F57>J{i2};",
+	"\u6F58>Pan;",
+	"\u6F59>Gu{i2};",
+	"\u6F5A>Xiao;",
+	"\u6F5B>Qi{a2}n;",
+	"\u6F5C>Qi{a2}n;",
+	"\u6F5D>Xi;",
+	"\u6F5E>L{u4};",
+	"\u6F5F>X{i4};",
+	"\u6F60>Xu{a4}n;",
+	"\u6F61>D{u4}n;",
+	"\u6F62>Hu{a2}ng;",
+	"\u6F63>M{i3}n;",
+	"\u6F64>R{u4}n;",
+	"\u6F65>S{u4};",
+	"\u6F66>Lia{o2};",
+	"\u6F67>Zhen;",
+	"\u6F68>Zhong;",
+	"\u6F69>Y{i4};",
+	"\u6F6A>D{i2};",
+	"\u6F6B>Wan;",
+	"\u6F6C>D{a4}n;",
+	"\u6F6D>T{a2}n;",
+	"\u6F6E>Cha{o2};",
+	"\u6F6F>X{u2}n;",
+	"\u6F70>Ku{i4};",
+	"\u6F71>Yie;",
+	"\u6F72>Sha{o4};",
+	"\u6F73>T{u2};",
+	"\u6F74>Zhu;",
+	"\u6F75>S{a4}n;",
+	"\u6F76>Hei;",
+	"\u6F77>B{i3};",
+	"\u6F78>Shan;",
+	"\u6F79>Ch{a2}n;",
+	"\u6F7A>Ch{a2}n;",
+	"\u6F7B>Sh{u3};",
+	"\u6F7C>T{o2}ng;",
+	"\u6F7D>P{u3};",
+	"\u6F7E>L{i2}n;",
+	"\u6F7F>We{i2};",
+	"\u6F80>S{e4};",
+	"\u6F81>S{e4};",
+	"\u6F82>Ch{e2}ng;",
+	"\u6F83>Ji{o4}ng;",
+	"\u6F84>Ch{e2}ng;",
+	"\u6F85>Hu{a4};",
+	"\u6F86>Jiao;",
+	"\u6F87>La{o4};",
+	"\u6F88>Ch{e4};",
+	"\u6F89>G{a3}n;",
+	"\u6F8A>Cun;",
+	"\u6F8B>H{e4}ng;",
+	"\u6F8C>Si;",
+	"\u6F8D>Sh{u4};",
+	"\u6F8E>P{e2}ng;",
+	"\u6F8F>H{a4}n;",
+	"\u6F90>Y{u2}n;",
+	"\u6F91>Li{u4};",
+	"\u6F92>H{o4}ng;",
+	"\u6F93>F{u2};",
+	"\u6F94>Ha{o4};",
+	"\u6F95>H{e2};",
+	"\u6F96>Xian;",
+	"\u6F97>Ji{a4}n;",
+	"\u6F98>Shan;",
+	"\u6F99>X{i4};",
+	"\u6F9C>L{a2}n;",
+	"\u6F9E>Y{u2};",
+	"\u6F9F>L{i3}n;",
+	"\u6FA0>M{i3}n;",
+	"\u6FA1>Za{o3};",
+	"\u6FA2>Dang;",
+	"\u6FA3>W{a3}n;",
+	"\u6FA4>Z{e2};",
+	"\u6FA5>Xi{e4};",
+	"\u6FA6>Y{u4};",
+	"\u6FA7>L{i3};",
+	"\u6FA8>Sh{i4};",
+	"\u6FA9>Xu{e2};",
+	"\u6FAA>L{i2}ng;",
+	"\u6FAB>M{a4}n;",
+	"\u6FAC>Zi;",
+	"\u6FAD>Yong;",
+	"\u6FAE>Kua{i4};",
+	"\u6FAF>C{a4}n;",
+	"\u6FB0>Li{a4}n;",
+	"\u6FB1>Di{a4}n;",
+	"\u6FB2>Y{e4};",
+	"\u6FB3>A{o4};",
+	"\u6FB4>Hu{a2}n;",
+	"\u6FB5>Zhen;",
+	"\u6FB6>Ch{a2}n;",
+	"\u6FB7>M{a4}n;",
+	"\u6FB8>D{a3}n;",
+	"\u6FB9>D{a4}n;",
+	"\u6FBA>Y{i4};",
+	"\u6FBB>Su{i4};",
+	"\u6FBC>P{i4};",
+	"\u6FBD>J{u4};",
+	"\u6FBE>T{a4};",
+	"\u6FBF>Q{i2}n;",
+	"\u6FC0>Ji;",
+	"\u6FC1>Zhu{o2};",
+	"\u6FC2>Li{a2}n;",
+	"\u6FC3>N{o2}ng;",
+	"\u6FC4>Guo;",
+	"\u6FC5>J{i4}n;",
+	"\u6FC6>F{e2}n;",
+	"\u6FC7>S{e4};",
+	"\u6FC8>J{i2};",
+	"\u6FC9>Sui;",
+	"\u6FCA>Hu{i4};",
+	"\u6FCB>Ch{u3};",
+	"\u6FCC>T{a4};",
+	"\u6FCD>Song;",
+	"\u6FCE>D{i3}ng;",
+	"\u6FD0>Zh{u3};",
+	"\u6FD1>La{i4};",
+	"\u6FD2>Bin;",
+	"\u6FD3>Li{a2}n;",
+	"\u6FD4>M{i3};",
+	"\u6FD5>Shi;",
+	"\u6FD6>Sh{u4};",
+	"\u6FD7>M{i4};",
+	"\u6FD8>N{i4}ng;",
+	"\u6FD9>Y{i2}ng;",
+	"\u6FDA>Y{i2}ng;",
+	"\u6FDB>M{e2}ng;",
+	"\u6FDC>J{i4}n;",
+	"\u6FDD>Q{i2};",
+	"\u6FDE>P{i4};",
+	"\u6FDF>J{i4};",
+	"\u6FE0>Ha{o2};",
+	"\u6FE1>R{u2};",
+	"\u6FE2>Zu{i3};",
+	"\u6FE3>W{o4};",
+	"\u6FE4>Tao;",
+	"\u6FE5>Y{i4}n;",
+	"\u6FE6>Y{i3}n;",
+	"\u6FE7>Du{i4};",
+	"\u6FE8>C{i2};",
+	"\u6FE9>Hu{o4};",
+	"\u6FEA>J{i4}ng;",
+	"\u6FEB>L{a4}n;",
+	"\u6FEC>J{u4}n;",
+	"\u6FED>A{i4};",
+	"\u6FEE>Pu;",
+	"\u6FEF>Zhu{o2};",
+	"\u6FF0>We{i2};",
+	"\u6FF1>Bin;",
+	"\u6FF2>G{u3};",
+	"\u6FF3>Qi{a2}n;",
+	"\u6FF4>X{i2}ng;",
+	"\u6FF6>Ku{o4};",
+	"\u6FF7>Fe{i4};",
+	"\u6FFA>Ji{a4}n;",
+	"\u6FFB>We{i3};",
+	"\u6FFC>Lu{o4};",
+	"\u6FFD>Z{a4}n;",
+	"\u6FFE>L{uu4};",
+	"\u6FFF>L{i4};",
+	"\u7000>You;",
+	"\u7001>Y{a4}ng;",
+	"\u7002>L{u3};",
+	"\u7003>S{i4};",
+	"\u7004>Ji{e2};",
+	"\u7005>Y{i4}ng;",
+	"\u7006>D{u2};",
+	"\u7007>W{a3}ng;",
+	"\u7008>Hui;",
+	"\u7009>Xi{e4};",
+	"\u700A>P{a2}n;",
+	"\u700B>Sh{e3}n;",
+	"\u700C>Biao;",
+	"\u700D>Ch{a2}n;",
+	"\u700E>M{o4};",
+	"\u700F>Li{u2};",
+	"\u7010>Jian;",
+	"\u7011>P{u4};",
+	"\u7012>S{e4};",
+	"\u7013>Ch{e2}ng;",
+	"\u7014>G{u3};",
+	"\u7015>Bin;",
+	"\u7016>Hu{o4};",
+	"\u7017>Xi{a4}n;",
+	"\u7018>L{u2};",
+	"\u7019>Qin;",
+	"\u701A>H{a4}n;",
+	"\u701B>Y{i2}ng;",
+	"\u701C>Yong;",
+	"\u701D>L{i4};",
+	"\u701E>J{i4}ng;",
+	"\u701F>Xiao;",
+	"\u7020>Y{i2}ng;",
+	"\u7021>Su{i3};",
+	"\u7022>We{i2};",
+	"\u7023>Xi{e4};",
+	"\u7024>Hua{i2};",
+	"\u7025>Ha{o4};",
+	"\u7026>Zhu;",
+	"\u7027>L{o2}ng;",
+	"\u7028>La{i4};",
+	"\u7029>Du{i4};",
+	"\u702A>F{a2}n;",
+	"\u702B>H{u2};",
+	"\u702C>La{i4};",
+	"\u702F>Y{i2}ng;",
+	"\u7030>M{i2};",
+	"\u7031>J{i4};",
+	"\u7032>Li{a4}n;",
+	"\u7033>Ji{a4}n;",
+	"\u7034>Y{i3}ng;",
+	"\u7035>F{e4}n;",
+	"\u7036>L{i2}n;",
+	"\u7037>Y{i4};",
+	"\u7038>Jian;",
+	"\u7039>Yu{e4};",
+	"\u703A>Ch{a2}n;",
+	"\u703B>Da{i4};",
+	"\u703C>R{a2}ng;",
+	"\u703D>Ji{a3}n;",
+	"\u703E>L{a2}n;",
+	"\u703F>F{a2}n;",
+	"\u7040>Shu{a4}ng;",
+	"\u7041>Yuan;",
+	"\u7042>Zhu{o2};",
+	"\u7043>Feng;",
+	"\u7044>Sh{e4};",
+	"\u7045>Le{i3};",
+	"\u7046>L{a2}n;",
+	"\u7047>C{o2}ng;",
+	"\u7048>Q{u2};",
+	"\u7049>Yong;",
+	"\u704A>Qi{a2}n;",
+	"\u704B>F{a3};",
+	"\u704C>Gu{a4}n;",
+	"\u704D>Qu{e4};",
+	"\u704E>Y{a4}n;",
+	"\u704F>Ha{o4};",
+	"\u7051>S{a3};",
+	"\u7052>Z{a4}n;",
+	"\u7053>Lu{a2}n;",
+	"\u7054>Y{a4}n;",
+	"\u7055>L{i2};",
+	"\u7056>M{i3};",
+	"\u7057>Sh{a4}n;",
+	"\u7058>Tan;",
+	"\u7059>D{a3}ng;",
+	"\u705A>Jia{o3};",
+	"\u705B>Ch{a3}n;",
+	"\u705D>Ha{o4};",
+	"\u705E>B{a4};",
+	"\u705F>Zh{u2};",
+	"\u7060>L{a3}n;",
+	"\u7061>L{a2}n;",
+	"\u7062>N{a3}ng;",
+	"\u7063>Wan;",
+	"\u7064>Lu{a2}n;",
+	"\u7065>X{u2}n;",
+	"\u7066>Xi{a3}n;",
+	"\u7067>Y{a4}n;",
+	"\u7068>G{a3}n;",
+	"\u7069>Y{a4}n;",
+	"\u706A>Y{u4};",
+	"\u706B>Hu{o3};",
+	"\u706C>Si4dian3hu{o3};",
+	"\u706D>Mi{e4};",
+	"\u706E>Guang;",
+	"\u706F>Deng;",
+	"\u7070>Hui;",
+	"\u7071>Xiao;",
+	"\u7072>Xiao;",
+	"\u7073>Hu1;",
+	"\u7074>H{o2}ng;",
+	"\u7075>L{i2}ng;",
+	"\u7076>Za{o4};",
+	"\u7077>Zhu{a4}n;",
+	"\u7078>Ji{u3};",
+	"\u7079>Zh{a4};",
+	"\u707A>Xi{e4};",
+	"\u707B>Ch{i4};",
+	"\u707C>Zhu{o2};",
+	"\u707D>Zai;",
+	"\u707E>Zai;",
+	"\u707F>C{a4}n;",
+	"\u7080>Y{a2}ng;",
+	"\u7081>Q{i4};",
+	"\u7082>Zhong;",
+	"\u7083>F{e2}n;",
+	"\u7084>Ni{u3};",
+	"\u7085>Ji{o3}ng;",
+	"\u7086>W{e2}n;",
+	"\u7087>P{o4};",
+	"\u7088>Y{i4};",
+	"\u7089>L{u2};",
+	"\u708A>Chui;",
+	"\u708B>Pi;",
+	"\u708C>Ka{i4};",
+	"\u708D>P{a4}n;",
+	"\u708E>Y{a2}n;",
+	"\u708F>Ka{i4};",
+	"\u7090>P{a4}ng;",
+	"\u7091>M{u4};",
+	"\u7092>Cha{o3};",
+	"\u7093>Lia{o4};",
+	"\u7094>Gu{i4};",
+	"\u7095>K{a4}ng;",
+	"\u7096>Tun;",
+	"\u7097>Guang;",
+	"\u7098>Xin;",
+	"\u7099>Zh{i4};",
+	"\u709A>Guang;",
+	"\u709B>Guang;",
+	"\u709C>We{i3};",
+	"\u709D>Qi{a4}ng;",
+	"\u709F>D{a2};",
+	"\u70A0>Xi{a2};",
+	"\u70A1>Zheng;",
+	"\u70A2>Zh{u2};",
+	"\u70A3>K{e3};",
+	"\u70A4>Zha{o4};",
+	"\u70A5>F{u2};",
+	"\u70A6>B{a2};",
+	"\u70A7>Du{o4};",
+	"\u70A8>Du{o4};",
+	"\u70A9>L{i4}ng;",
+	"\u70AA>Zhu{o2};",
+	"\u70AB>Xu{a4}n;",
+	"\u70AC>J{u4};",
+	"\u70AD>T{a4}n;",
+	"\u70AE>Pa{o4};",
+	"\u70AF>Ji{o3}ng;",
+	"\u70B0>Pa{o2};",
+	"\u70B1>Ta{i2};",
+	"\u70B2>Ta{i2};",
+	"\u70B3>B{i3}ng;",
+	"\u70B4>Y{a3}ng;",
+	"\u70B5>Tong;",
+	"\u70B6>Han;",
+	"\u70B7>Zh{u4};",
+	"\u70B8>Zh{a4};",
+	"\u70B9>Di{a3}n;",
+	"\u70BA>We{i4};",
+	"\u70BB>Sh{i2};",
+	"\u70BC>Li{a4}n;",
+	"\u70BD>Ch{i4};",
+	"\u70BE>Hu{a3}ng;",
+	"\u70C0>Hu;",
+	"\u70C1>Shu{o4};",
+	"\u70C2>L{a4}n;",
+	"\u70C3>J{i3}ng;",
+	"\u70C4>Jia{o3};",
+	"\u70C5>X{u4};",
+	"\u70C6>X{i2}ng;",
+	"\u70C7>Qu{a4}n;",
+	"\u70C8>Li{e4};",
+	"\u70C9>Hu{a4}n;",
+	"\u70CA>Y{a2}ng;",
+	"\u70CB>Xiao;",
+	"\u70CC>Xiu;",
+	"\u70CD>Xi{a3}n;",
+	"\u70CE>Y{i2}n;",
+	"\u70CF>Wu;",
+	"\u70D0>Zhou;",
+	"\u70D1>Ya{o2};",
+	"\u70D2>Sh{i4};",
+	"\u70D3>Wei;",
+	"\u70D4>T{o2}ng;",
+	"\u70D5>Xu{e4};",
+	"\u70D6>Zai;",
+	"\u70D7>Ka{i4};",
+	"\u70D8>Hong;",
+	"\u70D9>Lu{o4};",
+	"\u70DA>Xi{a2};",
+	"\u70DB>Zh{u2};",
+	"\u70DC>Xu{a3}n;",
+	"\u70DD>Zheng;",
+	"\u70DE>P{o4};",
+	"\u70DF>Yan;",
+	"\u70E0>Hu{i3};",
+	"\u70E1>Guang;",
+	"\u70E2>Zh{e4};",
+	"\u70E3>Hui;",
+	"\u70E4>Ka{o3};",
+	"\u70E6>F{a2}n;",
+	"\u70E7>Shao;",
+	"\u70E8>Y{e4};",
+	"\u70E9>Hu{i4};",
+	"\u70EB>T{a4}ng;",
+	"\u70EC>J{i4}n;",
+	"\u70ED>R{e4};",
+	"\u70EF>Xi;",
+	"\u70F0>F{u2};",
+	"\u70F1>Ji{o3}ng;",
+	"\u70F2>Ch{e4};",
+	"\u70F3>P{u3};",
+	"\u70F4>J{i3}ng;",
+	"\u70F5>Zhu{o2};",
+	"\u70F6>T{i3}ng;",
+	"\u70F7>W{a2}n;",
+	"\u70F8>Ha{i3};",
+	"\u70F9>Peng;",
+	"\u70FA>L{a3}ng;",
+	"\u70FB>Shan;",
+	"\u70FC>Hu;",
+	"\u70FD>Feng;",
+	"\u70FE>Ch{i4};",
+	"\u70FF>R{o2}ng;",
+	"\u7100>H{u2};",
+	"\u7101>Xi;",
+	"\u7102>Sh{u2};",
+	"\u7103>H{e4};",
+	"\u7104>Xun;",
+	"\u7105>K{u4};",
+	"\u7106>Ju{e2};",
+	"\u7107>Xiao;",
+	"\u7108>Xi;",
+	"\u7109>Yan;",
+	"\u710A>H{a4}n;",
+	"\u710B>Zhu{a4}ng;",
+	"\u710C>J{u4}n;",
+	"\u710D>D{i4};",
+	"\u710E>Xi{e4};",
+	"\u710F>J{i2};",
+	"\u7110>W{u4};",
+	"\u7113>H{a2}n;",
+	"\u7114>Y{a4}n;",
+	"\u7115>Hu{a4}n;",
+	"\u7116>M{e4}n;",
+	"\u7117>J{u2};",
+	"\u7118>Cho{u2};",
+	"\u7119>Be{i4};",
+	"\u711A>F{e2}n;",
+	"\u711B>L{i4}n;",
+	"\u711C>Kun;",
+	"\u711D>H{u4}n;",
+	"\u711E>Tun;",
+	"\u711F>X{i2};",
+	"\u7120>Cu{i4};",
+	"\u7121>W{u2};",
+	"\u7122>Hong;",
+	"\u7123>J{u4};",
+	"\u7124>F{u3};",
+	"\u7125>W{o4};",
+	"\u7126>Jiao;",
+	"\u7127>Cong;",
+	"\u7128>F{e4}ng;",
+	"\u7129>Ping;",
+	"\u712A>Qiong;",
+	"\u712B>Ru{o4};",
+	"\u712C>X{i2};",
+	"\u712D>Qi{o2}ng;",
+	"\u712E>X{i4}n;",
+	"\u712F>Zhu{o2};",
+	"\u7130>Y{a4}n;",
+	"\u7131>Y{a4}n;",
+	"\u7132>Y{i4};",
+	"\u7133>Ju{e2};",
+	"\u7134>Y{u4};",
+	"\u7135>G{a4}ng;",
+	"\u7136>R{a2}n;",
+	"\u7137>P{i2};",
+	"\u7138>G{u3};",
+	"\u713A>Sheng;",
+	"\u713B>Ch{a4}ng;",
+	"\u713C>Shao;",
+	"\u7141>Ch{e2}n;",
+	"\u7142>H{e4};",
+	"\u7143>Ku{i3};",
+	"\u7144>Zhong;",
+	"\u7145>Du{a4}n;",
+	"\u7146>Xia;",
+	"\u7147>Hui;",
+	"\u7148>F{e4}ng;",
+	"\u7149>Li{a4}n;",
+	"\u714A>Xuan;",
+	"\u714B>Xing;",
+	"\u714C>Hu{a2}ng;",
+	"\u714D>Jia{o3};",
+	"\u714E>Jian;",
+	"\u714F>B{i4};",
+	"\u7150>Ying;",
+	"\u7151>Zh{u3};",
+	"\u7152>We{i3};",
+	"\u7153>Tuan;",
+	"\u7154>Ti{a4}n;",
+	"\u7155>Xi;",
+	"\u7156>Nu{a3}n;",
+	"\u7157>Nu{a3}n;",
+	"\u7158>Ch{a2}n;",
+	"\u7159>Yan;",
+	"\u715A>Ji{o3}ng;",
+	"\u715B>Ji{o3}ng;",
+	"\u715C>Y{u4};",
+	"\u715D>Me{i4};",
+	"\u715E>Sh{a4};",
+	"\u715F>We{i4};",
+	"\u7160>Y{e4};",
+	"\u7161>X{i4}n;",
+	"\u7162>Qi{o2}ng;",
+	"\u7163>Ro{u3};",
+	"\u7164>Me{i2};",
+	"\u7165>Hu{a4}n;",
+	"\u7166>X{u3};",
+	"\u7167>Zha{o4};",
+	"\u7168>Wei;",
+	"\u7169>F{a2}n;",
+	"\u716A>Qi{u2};",
+	"\u716B>Su{i4};",
+	"\u716C>Y{a2}ng;",
+	"\u716D>Li{e4};",
+	"\u716E>Zh{u3};",
+	"\u716F>Jie;",
+	"\u7170>Ga{o4};",
+	"\u7171>Gua;",
+	"\u7172>Ba{o4};",
+	"\u7173>H{u2};",
+	"\u7174>Yun;",
+	"\u7175>Xia;",
+	"\u7178>Bian;",
+	"\u7179>Go{u4};",
+	"\u717A>Tu{i4};",
+	"\u717B>T{a2}ng;",
+	"\u717C>Cha{o3};",
+	"\u717D>Shan;",
+	"\u717E>N;",
+	"\u717F>B{o2};",
+	"\u7180>Hu{a3}ng;",
+	"\u7181>Xi{e2};",
+	"\u7182>X{i4};",
+	"\u7183>W{u4};",
+	"\u7184>X{i2};",
+	"\u7185>Y{u2}n;",
+	"\u7186>H{e2};",
+	"\u7187>H{e4};",
+	"\u7188>Xi;",
+	"\u7189>Y{u2}n;",
+	"\u718A>Xi{o2}ng;",
+	"\u718B>Na{i2};",
+	"\u718C>Sh{a4}n;",
+	"\u718D>Qiong;",
+	"\u718E>Ya{o4};",
+	"\u718F>Xun;",
+	"\u7190>M{i4};",
+	"\u7191>Li{a2}n;",
+	"\u7192>Y{i2}ng;",
+	"\u7193>W{e4}n;",
+	"\u7194>R{o2}ng;",
+	"\u7197>Qi{a4}ng;",
+	"\u7198>Liu;",
+	"\u7199>Xi;",
+	"\u719A>B{i4};",
+	"\u719B>Biao;",
+	"\u719C>Z{o3}ng;",
+	"\u719D>L{u4};",
+	"\u719E>Jian;",
+	"\u719F>Sho{u2};",
+	"\u71A0>Y{i4};",
+	"\u71A1>Lo{u2};",
+	"\u71A2>Feng;",
+	"\u71A3>Sui;",
+	"\u71A4>Y{i4};",
+	"\u71A5>Tong;",
+	"\u71A6>Ju{e2};",
+	"\u71A7>Zong;",
+	"\u71A8>Y{u4}n;",
+	"\u71A9>H{u4};",
+	"\u71AA>Y{i2};",
+	"\u71AB>Zh{i4};",
+	"\u71AC>A{o2};",
+	"\u71AD>We{i4};",
+	"\u71AE>Lia{o2};",
+	"\u71AF>H{a4}n;",
+	"\u71B0>Ou;",
+	"\u71B1>R{e4};",
+	"\u71B2>Ji{o3}ng;",
+	"\u71B3>M{a4}n;",
+	"\u71B5>Shang;",
+	"\u71B6>Cu{a4}n;",
+	"\u71B7>Zeng;",
+	"\u71B8>Jian;",
+	"\u71B9>Xi;",
+	"\u71BA>Xi;",
+	"\u71BB>Xi;",
+	"\u71BC>Y{i4};",
+	"\u71BD>Xia{o4};",
+	"\u71BE>Ch{i4};",
+	"\u71BF>Hu{a2}ng;",
+	"\u71C0>Ch{a3}n;",
+	"\u71C1>Y{e4};",
+	"\u71C2>Qi{a2}n;",
+	"\u71C3>R{a2}n;",
+	"\u71C4>Y{a4}n;",
+	"\u71C5>Xi{a2}n;",
+	"\u71C6>Qia{o2};",
+	"\u71C7>Z{u4}n;",
+	"\u71C8>Deng;",
+	"\u71C9>D{u4}n;",
+	"\u71CA>Shen;",
+	"\u71CB>Jiao;",
+	"\u71CC>F{e2}n;",
+	"\u71CD>Si;",
+	"\u71CE>Lia{o4};",
+	"\u71CF>Y{u4};",
+	"\u71D0>L{i2}n;",
+	"\u71D1>T{o2}ng;",
+	"\u71D2>Shao;",
+	"\u71D3>Fen;",
+	"\u71D4>F{a2}n;",
+	"\u71D5>Y{a4}n;",
+	"\u71D6>X{u2}n;",
+	"\u71D7>L{a4}n;",
+	"\u71D8>Me{i3};",
+	"\u71D9>T{a4}ng;",
+	"\u71DA>Yi;",
+	"\u71DB>J{i3}ng;",
+	"\u71DC>M{e4}n;",
+	"\u71DF>Y{i2}ng;",
+	"\u71E0>Y{u4};",
+	"\u71E1>Y{i4};",
+	"\u71E2>Xu{e2};",
+	"\u71E3>L{a2}n;",
+	"\u71E4>Ta{i4};",
+	"\u71E5>Za{o4};",
+	"\u71E6>C{a4}n;",
+	"\u71E7>Su{i4};",
+	"\u71E8>Xi;",
+	"\u71E9>Qu{e4};",
+	"\u71EA>Cong;",
+	"\u71EB>Li{a2}n;",
+	"\u71EC>Hu{i3};",
+	"\u71ED>Zh{u2};",
+	"\u71EE>Xi{e4};",
+	"\u71EF>L{i2}ng;",
+	"\u71F0>Wei;",
+	"\u71F1>Y{i4};",
+	"\u71F2>Xi{e2};",
+	"\u71F3>Zha{o4};",
+	"\u71F4>Hu{i4};",
+	"\u71F7>L{a2}n;",
+	"\u71F8>R{u2};",
+	"\u71F9>Xi{a3}n;",
+	"\u71FA>Ka{o3};",
+	"\u71FB>Xun;",
+	"\u71FC>J{i4}n;",
+	"\u71FD>Cho{u2};",
+	"\u71FE>Cho{u2};",
+	"\u71FF>Ya{o4};",
+	"\u7200>H{e4};",
+	"\u7201>L{a4}n;",
+	"\u7202>Biao;",
+	"\u7203>R{o2}ng;",
+	"\u7204>L{i4};",
+	"\u7205>M{o4};",
+	"\u7206>Ba{o4};",
+	"\u7207>Ru{o4};",
+	"\u7208>L{uu2};",
+	"\u7209>L{a4};",
+	"\u720A>A{o2};",
+	"\u720B>X{u4}n;",
+	"\u720C>Ku{a4}ng;",
+	"\u720D>Shu{o4};",
+	"\u720F>L{i4};",
+	"\u7210>L{u2};",
+	"\u7211>Ju{e2};",
+	"\u7212>Lia{o4};",
+	"\u7213>Y{a4}n;",
+	"\u7214>Xi;",
+	"\u7215>Xi{e4};",
+	"\u7216>L{o2}ng;",
+	"\u7217>Y{e4};",
+	"\u7219>R{a3}ng;",
+	"\u721A>Yu{e4};",
+	"\u721B>L{a4}n;",
+	"\u721C>C{o2}ng;",
+	"\u721D>Ju{e2};",
+	"\u721E>T{o2}ng;",
+	"\u721F>Gu{a4}n;",
+	"\u7221>Ch{e4};",
+	"\u7222>M{i2};",
+	"\u7223>T{a3}ng;",
+	"\u7224>L{a4}n;",
+	"\u7225>Zh{u2};",
+	"\u7227>L{i2}ng;",
+	"\u7228>Cu{a4}n;",
+	"\u7229>Y{u4};",
+	"\u722A>Zhu{a3};",
+	"\u722C>P{a2};",
+	"\u722D>Zheng;",
+	"\u722E>Pa{o2};",
+	"\u722F>Cheng;",
+	"\u7230>Yu{a2}n;",
+	"\u7231>A{i4};",
+	"\u7232>We{i4};",
+	"\u7234>Ju{e2};",
+	"\u7235>Ju{e2};",
+	"\u7236>F{u4};",
+	"\u7237>Y{e2};",
+	"\u7238>B{a4};",
+	"\u7239>Die;",
+	"\u723A>Y{e2};",
+	"\u723B>Ya{o2};",
+	"\u723C>Z{u3};",
+	"\u723D>Shu{a3}ng;",
+	"\u723E>{e3}r;",
+	"\u723F>Qi{a2}ng;",
+	"\u7240>Chu{a2}ng;",
+	"\u7241>Ge;",
+	"\u7242>Zang;",
+	"\u7243>Di{e2};",
+	"\u7244>Qiang;",
+	"\u7245>Y{o2}ng;",
+	"\u7246>Qi{a2}ng;",
+	"\u7247>Pi{a4}n;",
+	"\u7248>B{a3}n;",
+	"\u7249>P{a4}n;",
+	"\u724A>Sha{o2};",
+	"\u724B>Jian;",
+	"\u724C>Pa{i2};",
+	"\u724D>D{u2};",
+	"\u724E>Chuang;",
+	"\u724F>To{u2};",
+	"\u7250>Zh{a2};",
+	"\u7251>Bian;",
+	"\u7252>Di{e2};",
+	"\u7253>B{a3}ng;",
+	"\u7254>B{o2};",
+	"\u7255>Chuang;",
+	"\u7256>Yo{u3};",
+	"\u7258>D{u2};",
+	"\u7259>Y{a2};",
+	"\u725A>Ch{e4}ng;",
+	"\u725B>Ni{u2};",
+	"\u725D>P{i4}n;",
+	"\u725E>Jiu;",
+	"\u725F>Mo{u2};",
+	"\u7260>Tuo;",
+	"\u7261>M{u3};",
+	"\u7262>La{o2};",
+	"\u7263>R{e4}n;",
+	"\u7264>M{a2}ng;",
+	"\u7265>Fang;",
+	"\u7266>Ma{o2};",
+	"\u7267>M{u4};",
+	"\u7268>Gang;",
+	"\u7269>W{u4};",
+	"\u726A>Y{a4}n;",
+	"\u726B>Ge;",
+	"\u726C>Be{i4};",
+	"\u726D>S{i4};",
+	"\u726E>Ji{a4}n;",
+	"\u726F>G{u3};",
+	"\u7270>Yo{u4};",
+	"\u7271>Ge;",
+	"\u7272>Sheng;",
+	"\u7273>M{u3};",
+	"\u7274>D{i3};",
+	"\u7275>Qian;",
+	"\u7276>Qu{a4}n;",
+	"\u7277>Qu{a2}n;",
+	"\u7278>Z{i4};",
+	"\u7279>T{e4};",
+	"\u727A>Xi;",
+	"\u727B>M{a2}ng;",
+	"\u727C>Keng;",
+	"\u727D>Qian;",
+	"\u727E>W{u2};",
+	"\u727F>G{u4};",
+	"\u7280>Xi;",
+	"\u7281>L{i2};",
+	"\u7282>L{i2};",
+	"\u7283>Po{u3};",
+	"\u7284>Ji;",
+	"\u7285>Gang;",
+	"\u7286>Zh{i2};",
+	"\u7287>Ben;",
+	"\u7288>Qu{a2}n;",
+	"\u7289>R{u2}n;",
+	"\u728A>D{u2};",
+	"\u728B>J{u4};",
+	"\u728C>Jia;",
+	"\u728D>Jian;",
+	"\u728E>Feng;",
+	"\u728F>Pian;",
+	"\u7290>Ke;",
+	"\u7291>J{u2};",
+	"\u7292>Ka{o4};",
+	"\u7293>Ch{u2};",
+	"\u7294>X{i4};",
+	"\u7295>Be{i4};",
+	"\u7296>Lu{o4};",
+	"\u7297>Ji{e4};",
+	"\u7298>M{a2};",
+	"\u7299>San;",
+	"\u729A>We{i4};",
+	"\u729B>L{i2};",
+	"\u729C>Dun;",
+	"\u729D>T{o2}ng;",
+	"\u729F>Ji{a4}ng;",
+	"\u72A1>L{i4};",
+	"\u72A2>D{u2};",
+	"\u72A3>Li{e4};",
+	"\u72A4>P{i2};",
+	"\u72A5>Pia{o3};",
+	"\u72A6>Ba{o4};",
+	"\u72A7>Xi;",
+	"\u72A8>Chou;",
+	"\u72A9>We{i4};",
+	"\u72AA>Ku{i2};",
+	"\u72AB>Chou;",
+	"\u72AC>Qu{a3}n;",
+	"\u72AD>Fan3quan3p{a2}ng;",
+	"\u72AE>B{a2};",
+	"\u72AF>F{a4}n;",
+	"\u72B0>Qi{u2};",
+	"\u72B1>J{i3};",
+	"\u72B2>Ca{i2};",
+	"\u72B3>Chu{o2};",
+	"\u72B4>{A4}n;",
+	"\u72B5>Ji{e2};",
+	"\u72B6>Zhu{a4}ng;",
+	"\u72B7>Gu{a3}ng;",
+	"\u72B8>M{a4};",
+	"\u72B9>Yo{u2};",
+	"\u72BA>K{a4}ng;",
+	"\u72BB>B{o2};",
+	"\u72BC>Ho{u3};",
+	"\u72BD>Y{a2};",
+	"\u72BE>Y{i2}n;",
+	"\u72BF>Huan;",
+	"\u72C0>Zhu{a4}ng;",
+	"\u72C1>Y{u3}n;",
+	"\u72C2>Ku{a2}ng;",
+	"\u72C3>Ni{u3};",
+	"\u72C4>D{i2};",
+	"\u72C5>Qing;",
+	"\u72C6>Zh{o4}ng;",
+	"\u72C7>M{u4};",
+	"\u72C8>Be{i4};",
+	"\u72C9>Pi;",
+	"\u72CA>J{u2};",
+	"\u72CB>N{i2};",
+	"\u72CC>Sheng;",
+	"\u72CD>Pa{o2};",
+	"\u72CE>Xi{a2};",
+	"\u72CF>Tu{o2};",
+	"\u72D0>H{u2};",
+	"\u72D1>L{i2}ng;",
+	"\u72D2>Fe{i4};",
+	"\u72D3>Pi;",
+	"\u72D4>N{i3};",
+	"\u72D5>A{o3};",
+	"\u72D6>Yo{u4};",
+	"\u72D7>Go{u3};",
+	"\u72D8>Yu{e4};",
+	"\u72D9>Ju;",
+	"\u72DA>D{a4}n;",
+	"\u72DB>P{o4};",
+	"\u72DC>G{u3};",
+	"\u72DD>Xi{a3}n;",
+	"\u72DE>N{i2}ng;",
+	"\u72DF>Hu{a2}n;",
+	"\u72E0>H{e3}n;",
+	"\u72E1>Jia{o3};",
+	"\u72E2>H{e2};",
+	"\u72E3>Zha{o4};",
+	"\u72E4>J{i2};",
+	"\u72E5>X{u4}n;",
+	"\u72E6>Shan;",
+	"\u72E7>T{a4};",
+	"\u72E8>R{o2}ng;",
+	"\u72E9>Sho{u4};",
+	"\u72EA>Tong;",
+	"\u72EB>La{o3};",
+	"\u72EC>D{u2};",
+	"\u72ED>Xi{a2};",
+	"\u72EE>Shi;",
+	"\u72EF>Hu{a2};",
+	"\u72F0>Zheng;",
+	"\u72F1>Y{u4};",
+	"\u72F2>Sun;",
+	"\u72F3>Y{u2};",
+	"\u72F4>B{i4};",
+	"\u72F5>M{a2}ng;",
+	"\u72F6>X{i3};",
+	"\u72F7>Ju{a4}n;",
+	"\u72F8>L{i2};",
+	"\u72F9>Xi{a2};",
+	"\u72FA>Y{i2}n;",
+	"\u72FB>Suan;",
+	"\u72FC>L{a2}ng;",
+	"\u72FD>Be{i4};",
+	"\u72FE>Zh{i4};",
+	"\u72FF>Y{a2}n;",
+	"\u7300>Sha;",
+	"\u7301>L{i4};",
+	"\u7302>H{a4}n;",
+	"\u7303>Xi{a3}n;",
+	"\u7304>Jing;",
+	"\u7305>Pa{i2};",
+	"\u7306>Fei;",
+	"\u7307>Ya{o2};",
+	"\u7308>B{a4};",
+	"\u7309>Q{i2};",
+	"\u730A>N{i2};",
+	"\u730B>Biao;",
+	"\u730C>Y{i4}n;",
+	"\u730D>La{i2};",
+	"\u730E>X{i2};",
+	"\u730F>Jian;",
+	"\u7310>Qiang;",
+	"\u7311>Kun;",
+	"\u7312>Yan;",
+	"\u7313>Gu{o3};",
+	"\u7314>Z{o4}ng;",
+	"\u7315>M{i2};",
+	"\u7316>Chang;",
+	"\u7317>Yi;",
+	"\u7318>Zh{i4};",
+	"\u7319>Zheng;",
+	"\u731A>Y{a2};",
+	"\u731B>M{e3}ng;",
+	"\u731C>Cai;",
+	"\u731D>C{u4};",
+	"\u731E>Sh{e4};",
+	"\u7321>Lu{o2};",
+	"\u7322>H{u2};",
+	"\u7323>Zong;",
+	"\u7324>J{i4};",
+	"\u7325>We{i3};",
+	"\u7326>Feng;",
+	"\u7327>Wo;",
+	"\u7328>Yu{a2}n;",
+	"\u7329>Xing;",
+	"\u732A>Zhu;",
+	"\u732B>Mao;",
+	"\u732C>We{i4};",
+	"\u732D>Yu{a2}n;",
+	"\u732E>Xi{a4}n;",
+	"\u732F>Tuan;",
+	"\u7330>Y{a4};",
+	"\u7331>Na{o2};",
+	"\u7332>Xie;",
+	"\u7333>Jia;",
+	"\u7334>Ho{u2};",
+	"\u7335>Bian;",
+	"\u7336>Yo{u2};",
+	"\u7337>Yo{u2};",
+	"\u7338>Me{i2};",
+	"\u7339>Zha;",
+	"\u733A>Ya{o2};",
+	"\u733B>Sun;",
+	"\u733C>B{o2};",
+	"\u733D>M{i2}ng;",
+	"\u733E>Hu{a2};",
+	"\u733F>Yu{a2}n;",
+	"\u7340>Sou;",
+	"\u7341>M{a4};",
+	"\u7342>Yu{a2}n;",
+	"\u7343>Dai;",
+	"\u7344>Y{u4};",
+	"\u7345>Shi;",
+	"\u7346>Ha{o2};",
+	"\u7348>Y{i4};",
+	"\u7349>Zhen;",
+	"\u734A>Chu{a4}ng;",
+	"\u734B>Ha{o2};",
+	"\u734C>M{a4}n;",
+	"\u734D>J{i4}ng;",
+	"\u734E>Ji{a3}ng;",
+	"\u734F>M{u2};",
+	"\u7350>Zhang;",
+	"\u7351>Ch{a2}n;",
+	"\u7352>A{o2};",
+	"\u7353>A{o2};",
+	"\u7354>Ha{o2};",
+	"\u7355>Cui;",
+	"\u7356>F{e2}n;",
+	"\u7357>Ju{e2};",
+	"\u7358>B{i4};",
+	"\u7359>B{i4};",
+	"\u735A>Hu{a2}ng;",
+	"\u735B>P{u2};",
+	"\u735C>L{i2}n;",
+	"\u735D>Y{u4};",
+	"\u735E>T{o2}ng;",
+	"\u735F>Ya{o4};",
+	"\u7360>Lia{o2};",
+	"\u7361>Shu{o4};",
+	"\u7362>Xiao;",
+	"\u7365>X{i2};",
+	"\u7366>G{e2};",
+	"\u7367>Ju{a4}n;",
+	"\u7368>D{u2};",
+	"\u7369>Hu{i4};",
+	"\u736A>Kua{i4};",
+	"\u736B>Xi{a3}n;",
+	"\u736C>Xi{e4};",
+	"\u736D>T{a4};",
+	"\u736E>Xi{a3}n;",
+	"\u736F>Xun;",
+	"\u7370>N{i2}ng;",
+	"\u7371>P{i2}n;",
+	"\u7372>Hu{o4};",
+	"\u7373>No{u4};",
+	"\u7374>M{e2}ng;",
+	"\u7375>Li{e4};",
+	"\u7376>Na{o2};",
+	"\u7377>Gu{a3}ng;",
+	"\u7378>Sho{u4};",
+	"\u7379>L{u2};",
+	"\u737A>T{a4};",
+	"\u737B>Xi{a4}n;",
+	"\u737C>M{i2};",
+	"\u737D>R{a2}ng;",
+	"\u737E>Huan;",
+	"\u737F>Na{o2};",
+	"\u7380>Lu{o2};",
+	"\u7381>Xi{a3}n;",
+	"\u7382>Q{i2};",
+	"\u7383>Ju{e2};",
+	"\u7384>Xu{a2}n;",
+	"\u7385>Mia{o4};",
+	"\u7386>Zi;",
+	"\u7387>L{uu4};",
+	"\u7388>L{u2};",
+	"\u7389>Y{u4};",
+	"\u738A>S{u4};",
+	"\u738B>W{a2}ng;",
+	"\u738C>Qi{u2};",
+	"\u738D>G{a3};",
+	"\u738E>Ding;",
+	"\u738F>L{e4};",
+	"\u7390>Ba;",
+	"\u7391>Ji;",
+	"\u7392>H{o2}ng;",
+	"\u7393>D{i4};",
+	"\u7394>Qu{a4}n;",
+	"\u7395>Gan;",
+	"\u7396>Ji{u3};",
+	"\u7397>Y{u2};",
+	"\u7398>J{i3};",
+	"\u7399>Y{u2};",
+	"\u739A>Y{a2}ng;",
+	"\u739B>M{a3};",
+	"\u739C>Gong;",
+	"\u739D>W{u3};",
+	"\u739E>Fu;",
+	"\u739F>W{e2}n;",
+	"\u73A0>Ji{e4};",
+	"\u73A1>Y{a4};",
+	"\u73A2>F{e2}n;",
+	"\u73A3>Bi{a4}n;",
+	"\u73A4>B{e3}ng;",
+	"\u73A5>Yu{e4};",
+	"\u73A6>Ju{e2};",
+	"\u73A7>Y{u3}n;",
+	"\u73A8>Ju{e2};",
+	"\u73A9>W{a2}n;",
+	"\u73AA>Jian;",
+	"\u73AB>Me{i2};",
+	"\u73AC>D{a3}n;",
+	"\u73AD>P{i2};",
+	"\u73AE>We{i3};",
+	"\u73AF>Hu{a2}n;",
+	"\u73B0>Xi{a4}n;",
+	"\u73B1>Qiang;",
+	"\u73B2>L{i2}ng;",
+	"\u73B3>Da{i4};",
+	"\u73B4>Y{i4};",
+	"\u73B5>{A2}n;",
+	"\u73B6>P{i2}ng;",
+	"\u73B7>Di{a4}n;",
+	"\u73B8>F{u2};",
+	"\u73B9>Xu{a2}n;",
+	"\u73BA>X{i3};",
+	"\u73BB>Bo;",
+	"\u73BC>C{i3};",
+	"\u73BD>Go{u3};",
+	"\u73BE>Ji{a3};",
+	"\u73BF>Sha{o2};",
+	"\u73C0>P{o4};",
+	"\u73C1>C{i2};",
+	"\u73C2>Ke;",
+	"\u73C3>R{a3}n;",
+	"\u73C4>Sheng;",
+	"\u73C5>Shen;",
+	"\u73C6>Y{i2};",
+	"\u73C7>Z{u3};",
+	"\u73C8>Jia;",
+	"\u73C9>M{i2}n;",
+	"\u73CA>Shan;",
+	"\u73CB>Li{u3};",
+	"\u73CC>B{i4};",
+	"\u73CD>Zhen;",
+	"\u73CE>Zhen;",
+	"\u73CF>Ju{e2};",
+	"\u73D0>F{a4};",
+	"\u73D1>L{o2}ng;",
+	"\u73D2>Jin;",
+	"\u73D3>Jia{o4};",
+	"\u73D4>Ji{a4}n;",
+	"\u73D5>L{i4};",
+	"\u73D6>Guang;",
+	"\u73D7>Xian;",
+	"\u73D8>Zhou;",
+	"\u73D9>G{o3}ng;",
+	"\u73DA>Yan;",
+	"\u73DB>Xi{u4};",
+	"\u73DC>Y{a2}ng;",
+	"\u73DD>X{u3};",
+	"\u73DE>Lu{o4};",
+	"\u73DF>S{u4};",
+	"\u73E0>Zhu;",
+	"\u73E1>Q{i2}n;",
+	"\u73E2>K{e4}n;",
+	"\u73E3>X{u2}n;",
+	"\u73E4>Ba{o3};",
+	"\u73E5>{e3}r;",
+	"\u73E6>Xi{a4}ng;",
+	"\u73E7>Ya{o2};",
+	"\u73E8>Xi{a2};",
+	"\u73E9>H{e2}ng;",
+	"\u73EA>Gui;",
+	"\u73EB>Chong;",
+	"\u73EC>X{u4};",
+	"\u73ED>Ban;",
+	"\u73EE>Pe{i4};",
+	"\u73F0>Dang;",
+	"\u73F2>H{u2}n;",
+	"\u73F3>W{e2}n;",
+	"\u73F4>{E2};",
+	"\u73F5>Ch{e2}ng;",
+	"\u73F6>T{i2};",
+	"\u73F7>W{u3};",
+	"\u73F8>W{u2};",
+	"\u73F9>Ch{e2}ng;",
+	"\u73FA>J{u4}n;",
+	"\u73FB>Me{i2};",
+	"\u73FC>Be{i4};",
+	"\u73FD>T{i3}ng;",
+	"\u73FE>Xi{a4}n;",
+	"\u73FF>Chu{o4};",
+	"\u7400>H{a2}n;",
+	"\u7401>Xuan;",
+	"\u7402>Y{a2}n;",
+	"\u7403>Qi{u2};",
+	"\u7404>Qu{a3}n;",
+	"\u7405>L{a2}ng;",
+	"\u7406>L{i3};",
+	"\u7407>Xi{u4};",
+	"\u7408>F{u2};",
+	"\u7409>Li{u2};",
+	"\u740A>Y{e2};",
+	"\u740B>Xi;",
+	"\u740C>L{i2}ng;",
+	"\u740D>L{i4};",
+	"\u740E>J{i4}n;",
+	"\u740F>Li{a2}n;",
+	"\u7410>Su{o3};",
+	"\u7413>W{a2}n;",
+	"\u7414>Di{a4}n;",
+	"\u7415>P{i2}n;",
+	"\u7416>Zh{a3}n;",
+	"\u7417>Cu{i4};",
+	"\u7418>M{i2}n;",
+	"\u7419>Y{u4};",
+	"\u741A>Ju;",
+	"\u741B>Chen;",
+	"\u741C>La{i2};",
+	"\u741D>W{e2}n;",
+	"\u741E>Sh{e4}ng;",
+	"\u741F>We{i2};",
+	"\u7420>Di{a3}n;",
+	"\u7421>Ch{u4};",
+	"\u7422>Zhu{o2};",
+	"\u7423>Pe{i3};",
+	"\u7424>Cheng;",
+	"\u7425>H{u3};",
+	"\u7426>Q{i2};",
+	"\u7427>{E4};",
+	"\u7428>Kun;",
+	"\u7429>Chang;",
+	"\u742A>Q{i2};",
+	"\u742B>B{e3}ng;",
+	"\u742C>W{a3}n;",
+	"\u742D>L{u4};",
+	"\u742E>C{o2}ng;",
+	"\u742F>Gu{a3}n;",
+	"\u7430>Y{a3}n;",
+	"\u7431>Diao;",
+	"\u7432>Be{i4};",
+	"\u7433>L{i2}n;",
+	"\u7434>Q{i2}n;",
+	"\u7435>P{i2};",
+	"\u7436>P{a2};",
+	"\u7437>Qu{e4};",
+	"\u7438>Zhu{o2};",
+	"\u7439>Q{i2}n;",
+	"\u743A>F{a4};",
+	"\u743C>Qi{o2}ng;",
+	"\u743D>D{u3};",
+	"\u743E>Ji{e4};",
+	"\u743F>H{u2}n;",
+	"\u7440>Y{u3};",
+	"\u7441>Ma{o4};",
+	"\u7442>Me{i2};",
+	"\u7443>Chun;",
+	"\u7444>Xuan;",
+	"\u7445>T{i2};",
+	"\u7446>Xing;",
+	"\u7447>Da{i4};",
+	"\u7448>Ro{u2};",
+	"\u7449>M{i2}n;",
+	"\u744A>Zhen;",
+	"\u744B>We{i3};",
+	"\u744C>Ru{a3}n;",
+	"\u744D>Hu{a4}n;",
+	"\u744E>Jie;",
+	"\u744F>Chuan;",
+	"\u7450>Ji{a3}n;",
+	"\u7451>Zhu{a4}n;",
+	"\u7452>Y{a2}ng;",
+	"\u7453>Li{a4}n;",
+	"\u7454>Qu{a2}n;",
+	"\u7455>Xi{a2};",
+	"\u7456>Du{a4}n;",
+	"\u7457>Yu{a4}n;",
+	"\u7458>Y{e2};",
+	"\u7459>Na{o3};",
+	"\u745A>H{u2};",
+	"\u745B>Ying;",
+	"\u745C>Y{u2};",
+	"\u745D>Hu{a2}ng;",
+	"\u745E>Ru{i4};",
+	"\u745F>S{e4};",
+	"\u7460>Li{u2};",
+	"\u7461>Shi;",
+	"\u7462>R{o2}ng;",
+	"\u7463>Su{o3};",
+	"\u7464>Ya{o2};",
+	"\u7465>Wen;",
+	"\u7466>Wu;",
+	"\u7467>Jin;",
+	"\u7468>J{i4}n;",
+	"\u7469>Y{i2}ng;",
+	"\u746A>M{a3};",
+	"\u746B>Tao;",
+	"\u746C>Li{u2};",
+	"\u746D>T{a2}ng;",
+	"\u746E>L{i4};",
+	"\u746F>L{a2}ng;",
+	"\u7470>Gui;",
+	"\u7471>Zh{e4}n;",
+	"\u7472>Qiang;",
+	"\u7473>Cu{o3};",
+	"\u7474>Ju{e2};",
+	"\u7475>Zha{o3};",
+	"\u7476>Ya{o2};",
+	"\u7477>A{i4};",
+	"\u7478>Bin;",
+	"\u7479>T{u2};",
+	"\u747A>Ch{a2}ng;",
+	"\u747B>Kun;",
+	"\u747C>Zhuan;",
+	"\u747D>Cong;",
+	"\u747E>J{i3}n;",
+	"\u747F>Yi;",
+	"\u7480>Cu{i3};",
+	"\u7481>Cong;",
+	"\u7482>Q{i2};",
+	"\u7483>L{i2};",
+	"\u7484>Y{i3}ng;",
+	"\u7485>Su{o3};",
+	"\u7486>Qi{u2};",
+	"\u7487>Xu{a2}n;",
+	"\u7488>A{o2};",
+	"\u7489>Li{a2}n;",
+	"\u748A>M{a2}n;",
+	"\u748B>Zhang;",
+	"\u748C>Y{i2}n;",
+	"\u748E>Ying;",
+	"\u748F>Zh{i4};",
+	"\u7490>L{u4};",
+	"\u7491>W{u2};",
+	"\u7492>Deng;",
+	"\u7493>Xio{u4};",
+	"\u7494>Zeng;",
+	"\u7495>X{u2}n;",
+	"\u7496>Q{u2};",
+	"\u7497>D{a4}ng;",
+	"\u7498>L{i2}n;",
+	"\u7499>Lia{o2};",
+	"\u749A>Qi{o2}ng;",
+	"\u749B>S{u4};",
+	"\u749C>Hu{a2}ng;",
+	"\u749D>Gui;",
+	"\u749E>P{u2};",
+	"\u749F>J{i3}ng;",
+	"\u74A0>F{a2}n;",
+	"\u74A1>J{i4}n;",
+	"\u74A2>Li{u2};",
+	"\u74A3>Ji;",
+	"\u74A5>J{i3}ng;",
+	"\u74A6>A{i4};",
+	"\u74A7>B{i4};",
+	"\u74A8>C{a4}n;",
+	"\u74A9>Q{u2};",
+	"\u74AA>Za{o3};",
+	"\u74AB>Dang;",
+	"\u74AC>Jia{o3};",
+	"\u74AD>G{u4}n;",
+	"\u74AE>T{a3}n;",
+	"\u74AF>Hu{i4};",
+	"\u74B0>Hu{a2}n;",
+	"\u74B1>S{e4};",
+	"\u74B2>Su{i4};",
+	"\u74B3>Ti{a2}n;",
+	"\u74B5>Y{u2};",
+	"\u74B6>J{i4}n;",
+	"\u74B7>L{u2};",
+	"\u74B8>Bin;",
+	"\u74B9>Sho{u4};",
+	"\u74BA>W{e4}n;",
+	"\u74BB>Zu{i3};",
+	"\u74BC>L{a2}n;",
+	"\u74BD>X{i3};",
+	"\u74BE>J{i4};",
+	"\u74BF>Xu{a2}n;",
+	"\u74C0>Ru{a3}n;",
+	"\u74C1>Hu{o4};",
+	"\u74C2>Ga{i4};",
+	"\u74C3>Le{i2};",
+	"\u74C4>D{u2};",
+	"\u74C5>L{i4};",
+	"\u74C6>Zh{i2};",
+	"\u74C7>Ro{u2};",
+	"\u74C8>L{i2};",
+	"\u74C9>Z{a4}n;",
+	"\u74CA>Qi{o2}ng;",
+	"\u74CB>Zh{e2};",
+	"\u74CC>Gui;",
+	"\u74CD>Su{i4};",
+	"\u74CE>L{a4};",
+	"\u74CF>L{o2}ng;",
+	"\u74D0>L{u2};",
+	"\u74D1>L{i4};",
+	"\u74D2>Z{a4}n;",
+	"\u74D3>L{a4}n;",
+	"\u74D4>Ying;",
+	"\u74D5>M{i2};",
+	"\u74D6>Xiang;",
+	"\u74D7>Xi;",
+	"\u74D8>Gu{a4}n;",
+	"\u74D9>Da{o4};",
+	"\u74DA>Z{a4}n;",
+	"\u74DB>Hu{a2}n;",
+	"\u74DC>Gua;",
+	"\u74DD>B{o2};",
+	"\u74DE>Di{e2};",
+	"\u74DF>Ba{o2};",
+	"\u74E0>H{u4};",
+	"\u74E1>Zh{i2};",
+	"\u74E2>Pia{o2};",
+	"\u74E3>B{a4}n;",
+	"\u74E4>R{a2}ng;",
+	"\u74E5>L{i4};",
+	"\u74E6>W{a3};",
+	"\u74E8>Jiang;",
+	"\u74E9>Qian2w{a3};",
+	"\u74EA>F{a3}n;",
+	"\u74EB>P{e2}n;",
+	"\u74EC>F{a3}ng;",
+	"\u74ED>D{a3}n;",
+	"\u74EE>W{e4}ng;",
+	"\u74EF>Ou;",
+	"\u74F3>H{u2};",
+	"\u74F4>L{i2}ng;",
+	"\u74F5>Y{i2};",
+	"\u74F6>P{i2}ng;",
+	"\u74F7>C{i2};",
+	"\u74F9>Ju{a4}n;",
+	"\u74FA>Ch{a2}ng;",
+	"\u74FB>Chi;",
+	"\u74FD>D{a4}ng;",
+	"\u74FE>M{e3}ng;",
+	"\u74FF>Po{u3};",
+	"\u7500>Zhu{i4};",
+	"\u7501>P{i2}ng;",
+	"\u7502>Bian;",
+	"\u7503>Zho{u4};",
+	"\u7504>Zhen;",
+	"\u7506>C{i2};",
+	"\u7507>Ying;",
+	"\u7508>Q{i4};",
+	"\u7509>Xi{a2}n;",
+	"\u750A>Lo{u3};",
+	"\u750B>D{i4};",
+	"\u750C>Ou;",
+	"\u750D>M{e2}ng;",
+	"\u750E>Zhuan;",
+	"\u750F>P{e4}ng;",
+	"\u7510>L{i2}n;",
+	"\u7511>Z{e4}ng;",
+	"\u7512>W{u3};",
+	"\u7513>P{i4};",
+	"\u7514>Dan;",
+	"\u7515>W{e4}ng;",
+	"\u7516>Ying;",
+	"\u7517>Y{a3}n;",
+	"\u7518>Gan;",
+	"\u7519>Da{i4};",
+	"\u751A>Sh{e2}n;",
+	"\u751B>Ti{a2}n;",
+	"\u751C>Ti{a2}n;",
+	"\u751D>Han;",
+	"\u751E>Ch{a2}ng;",
+	"\u751F>Sheng;",
+	"\u7520>Q{i2}ng;",
+	"\u7521>Sheng;",
+	"\u7522>Ch{a3}n;",
+	"\u7523>Ch{a3}n;",
+	"\u7524>Ru{i2};",
+	"\u7525>Sheng;",
+	"\u7526>Su;",
+	"\u7527>Sen;",
+	"\u7528>Y{o4}ng;",
+	"\u7529>Shua{i3};",
+	"\u752A>L{u4};",
+	"\u752B>F{u3};",
+	"\u752C>Y{o3}ng;",
+	"\u752D>B{e2}ng;",
+	"\u752E>F{e4}ng;",
+	"\u752F>N{i2}ng;",
+	"\u7530>Ti{a2}n;",
+	"\u7531>Yo{u2};",
+	"\u7532>Ji{a3};",
+	"\u7533>Shen;",
+	"\u7534>Zh{a2};",
+	"\u7535>Di{a4}n;",
+	"\u7536>F{u2};",
+	"\u7537>N{a2}n;",
+	"\u7538>Di{a4}n;",
+	"\u7539>P{i2}ng;",
+	"\u753A>T{i3}ng;",
+	"\u753B>Hu{a4};",
+	"\u753C>T{i3}ng;",
+	"\u753D>Qu{a3}n;",
+	"\u753E>Zi;",
+	"\u753F>M{e2}ng;",
+	"\u7540>B{i4};",
+	"\u7541>Q{i2};",
+	"\u7542>Li{u4};",
+	"\u7543>X{u2}n;",
+	"\u7544>Li{u2};",
+	"\u7545>Ch{a4}ng;",
+	"\u7546>M{u3};",
+	"\u7547>Y{u2}n;",
+	"\u7548>F{a4}n;",
+	"\u7549>F{u2};",
+	"\u754A>Geng;",
+	"\u754B>Ti{a2}n;",
+	"\u754C>Ji{e4};",
+	"\u754D>Ji{e4};",
+	"\u754E>Qu{a3}n;",
+	"\u754F>We{i4};",
+	"\u7550>F{u2};",
+	"\u7551>Ti{a2}n;",
+	"\u7552>M{u3};",
+	"\u7554>P{a4}n;",
+	"\u7555>Jiang;",
+	"\u7556>Wa;",
+	"\u7557>D{a2};",
+	"\u7558>N{a2}n;",
+	"\u7559>Li{u2};",
+	"\u755A>B{e3}n;",
+	"\u755B>Zh{e3}n;",
+	"\u755C>Ch{u4};",
+	"\u755D>M{u3};",
+	"\u755E>M{u3};",
+	"\u755F>C{e4};",
+	"\u7561>Gai;",
+	"\u7562>B{i4};",
+	"\u7563>D{a2};",
+	"\u7564>Zh{i4};",
+	"\u7565>L{uu}{e4};",
+	"\u7566>Q{i2};",
+	"\u7567>L{uu}{e4};",
+	"\u7568>Pan;",
+	"\u756A>Fan;",
+	"\u756B>Hu{a4};",
+	"\u756C>Y{u2};",
+	"\u756D>Y{u2};",
+	"\u756E>M{u3};",
+	"\u756F>J{u4}n;",
+	"\u7570>Y{i4};",
+	"\u7571>Li{u2};",
+	"\u7572>Y{u2};",
+	"\u7573>Di{e2};",
+	"\u7574>Cho{u2};",
+	"\u7575>Hu{a4};",
+	"\u7576>Dang;",
+	"\u7577>Chu{o4};",
+	"\u7578>Ji;",
+	"\u7579>W{a3}n;",
+	"\u757A>Jiang;",
+	"\u757B>Sh{e2}ng;",
+	"\u757C>Ch{a4}ng;",
+	"\u757D>Tu{a3}n;",
+	"\u757E>Le{i2};",
+	"\u757F>Ji;",
+	"\u7580>Cha;",
+	"\u7581>Li{u2};",
+	"\u7583>Tu{a3}n;",
+	"\u7584>L{i2}n;",
+	"\u7585>Jiang;",
+	"\u7586>Jiang;",
+	"\u7587>Cho{u2};",
+	"\u7588>B{o4};",
+	"\u7589>Di{e2};",
+	"\u758A>Di{e2};",
+	"\u758B>P{i3};",
+	"\u758C>Ni{e4};",
+	"\u758D>D{a4}n;",
+	"\u758E>Shu;",
+	"\u758F>Shu;",
+	"\u7590>Zh{i4};",
+	"\u7591>Y{i2};",
+	"\u7592>Chu{a2}ng;",
+	"\u7593>Na{i3};",
+	"\u7594>Ding;",
+	"\u7595>B{i3};",
+	"\u7596>Ji{e2};",
+	"\u7597>Lia{o2};",
+	"\u7598>Gong;",
+	"\u7599>Ge;",
+	"\u759A>Ji{u4};",
+	"\u759B>Zho{u3};",
+	"\u759C>Xi{a4};",
+	"\u759D>Sh{a4}n;",
+	"\u759E>Xu;",
+	"\u759F>N{uu}{e4};",
+	"\u75A0>L{i4};",
+	"\u75A1>Y{a2}ng;",
+	"\u75A2>Ch{e4}n;",
+	"\u75A3>Yo{u2};",
+	"\u75A4>Ba;",
+	"\u75A5>Ji{e4};",
+	"\u75A6>Ju{e2};",
+	"\u75A7>Zhi;",
+	"\u75A8>Xia;",
+	"\u75A9>Cu{i4};",
+	"\u75AA>B{i4};",
+	"\u75AB>Y{i4};",
+	"\u75AC>L{i4};",
+	"\u75AD>Z{o4}ng;",
+	"\u75AE>Chuang;",
+	"\u75AF>Feng;",
+	"\u75B0>Zh{u4};",
+	"\u75B1>Pa{o4};",
+	"\u75B2>P{i2};",
+	"\u75B3>Gan;",
+	"\u75B4>Ke;",
+	"\u75B5>Ci;",
+	"\u75B6>Xi{e4};",
+	"\u75B7>Q{i2};",
+	"\u75B8>D{a3}n;",
+	"\u75B9>Zh{e3}n;",
+	"\u75BA>F{a2};",
+	"\u75BB>Zh{i3};",
+	"\u75BC>T{e2}ng;",
+	"\u75BD>Ju;",
+	"\u75BE>J{i2};",
+	"\u75BF>Fe{i4};",
+	"\u75C0>Q{u2};",
+	"\u75C1>Di{a4}n;",
+	"\u75C2>Jia;",
+	"\u75C3>Xi{a2}n;",
+	"\u75C4>Ch{a2};",
+	"\u75C5>B{i4}ng;",
+	"\u75C6>N{i4};",
+	"\u75C7>Zh{e4}ng;",
+	"\u75C8>Yong;",
+	"\u75C9>J{i4}ng;",
+	"\u75CA>Qu{a2}n;",
+	"\u75CB>Ch{o2}ng;",
+	"\u75CC>Tong;",
+	"\u75CD>Y{i2};",
+	"\u75CE>Kai;",
+	"\u75CF>We{i3};",
+	"\u75D0>Hu{i2};",
+	"\u75D1>Du{o3};",
+	"\u75D2>Y{a3}ng;",
+	"\u75D3>Ch{i4};",
+	"\u75D4>Zh{i4};",
+	"\u75D5>H{e2}n;",
+	"\u75D6>Y{a3};",
+	"\u75D7>Me{i4};",
+	"\u75D8>Do{u4};",
+	"\u75D9>J{i4}ng;",
+	"\u75DA>Xiao;",
+	"\u75DB>T{o4}ng;",
+	"\u75DC>Tu;",
+	"\u75DD>M{a2}ng;",
+	"\u75DE>P{i3};",
+	"\u75DF>Xiao;",
+	"\u75E0>Suan;",
+	"\u75E1>Pu;",
+	"\u75E2>L{i4};",
+	"\u75E3>Zh{i4};",
+	"\u75E4>Cu{o2};",
+	"\u75E5>Du{o2};",
+	"\u75E6>W{u4};",
+	"\u75E7>Sha;",
+	"\u75E8>La{o2};",
+	"\u75E9>Sho{u4};",
+	"\u75EA>Hu{a4}n;",
+	"\u75EB>Xi{a2}n;",
+	"\u75EC>Y{i4};",
+	"\u75ED>P{e2}ng;",
+	"\u75EE>Zh{a4}ng;",
+	"\u75EF>Gu{a3}n;",
+	"\u75F0>T{a2}n;",
+	"\u75F1>Fe{i4};",
+	"\u75F2>M{a2};",
+	"\u75F3>L{i2}n;",
+	"\u75F4>Chi;",
+	"\u75F5>J{i4};",
+	"\u75F6>Di{a3}n;",
+	"\u75F7>An;",
+	"\u75F8>Ch{i4};",
+	"\u75F9>B{i4};",
+	"\u75FA>Bei;",
+	"\u75FB>M{i2}n;",
+	"\u75FC>Gu;",
+	"\u75FD>Dui;",
+	"\u75FE>E;",
+	"\u75FF>We{i3};",
+	"\u7600>Yu;",
+	"\u7601>Cu{i4};",
+	"\u7602>Y{a3};",
+	"\u7603>Zh{u3};",
+	"\u7604>C{u4};",
+	"\u7605>D{a4}n;",
+	"\u7606>Sh{e4}n;",
+	"\u7607>Zh{u3}ng;",
+	"\u7608>J{i4};",
+	"\u7609>Y{u4};",
+	"\u760A>Ho{u2};",
+	"\u760B>Feng;",
+	"\u760C>L{a4};",
+	"\u760D>Y{a2}ng;",
+	"\u760E>Sh{e4}n;",
+	"\u760F>T{u2};",
+	"\u7610>Y{u3};",
+	"\u7611>Gua;",
+	"\u7612>W{e2}n;",
+	"\u7613>Hu{a4}n;",
+	"\u7614>K{u4};",
+	"\u7615>Ji{a3};",
+	"\u7616>Yin;",
+	"\u7617>Y{i4};",
+	"\u7618>L{uu2};",
+	"\u7619>Sao;",
+	"\u761A>Ju{e2};",
+	"\u761B>Ch{i4};",
+	"\u761C>X{i2};",
+	"\u761D>Guan;",
+	"\u761E>Y{i4};",
+	"\u761F>Wen;",
+	"\u7620>J{i2};",
+	"\u7621>Chuang;",
+	"\u7622>Ban;",
+	"\u7623>Le{i3};",
+	"\u7624>Li{u2};",
+	"\u7625>Cha{i4};",
+	"\u7626>Sho{u4};",
+	"\u7627>N{uu}{e4};",
+	"\u7628>Dian;",
+	"\u7629>Da;",
+	"\u762A>Pie;",
+	"\u762B>Tan;",
+	"\u762C>Zh{a4}ng;",
+	"\u762D>Biao;",
+	"\u762E>Shen;",
+	"\u762F>C{u4};",
+	"\u7630>Lu{o3};",
+	"\u7631>Y{i4};",
+	"\u7632>Z{o4}ng;",
+	"\u7633>Chou;",
+	"\u7634>Zh{a4}ng;",
+	"\u7635>Zha{i4};",
+	"\u7636>So{u4};",
+	"\u7637>Su{o3};",
+	"\u7638>Qu{e2};",
+	"\u7639>Dia{o4};",
+	"\u763A>Lo{u4};",
+	"\u763B>L{uu2};",
+	"\u763C>M{o4};",
+	"\u763D>J{i4}n;",
+	"\u763E>Y{i3}n;",
+	"\u763F>Y{i3}ng;",
+	"\u7640>Hu{a2}ng;",
+	"\u7641>F{u2};",
+	"\u7642>Lia{o2};",
+	"\u7643>L{o2}ng;",
+	"\u7644>Qia{o2};",
+	"\u7645>Li{u2};",
+	"\u7646>La{o2};",
+	"\u7647>Xi{a2}n;",
+	"\u7648>Fe{i4};",
+	"\u7649>D{a4}n;",
+	"\u764A>Y{i4}n;",
+	"\u764B>H{e4};",
+	"\u764C>Y{a2}n;",
+	"\u764D>Ban;",
+	"\u764E>Xi{a2}n;",
+	"\u764F>Guan;",
+	"\u7650>Gua{i4};",
+	"\u7651>N{o2}ng;",
+	"\u7652>Y{u4};",
+	"\u7653>We{i2};",
+	"\u7654>Y{i4};",
+	"\u7655>Yong;",
+	"\u7656>P{i3};",
+	"\u7657>Le{i3};",
+	"\u7658>L{i4};",
+	"\u7659>Sh{u3};",
+	"\u765A>D{a4}n;",
+	"\u765B>L{i3}n;",
+	"\u765C>Di{a4}n;",
+	"\u765D>L{i3}n;",
+	"\u765E>La{i4};",
+	"\u765F>Pie;",
+	"\u7660>J{i4};",
+	"\u7661>Chi;",
+	"\u7662>Y{a3}ng;",
+	"\u7663>Xi{a3}n;",
+	"\u7664>Ji{e2};",
+	"\u7665>Zheng;",
+	"\u7667>L{i4};",
+	"\u7668>Hu{o4};",
+	"\u7669>La{i4};",
+	"\u766B>Dian;",
+	"\u766C>Xi{a3}n;",
+	"\u766D>Y{i3}ng;",
+	"\u766E>Y{i3}n;",
+	"\u766F>Q{u2};",
+	"\u7670>Yong;",
+	"\u7671>Tan;",
+	"\u7672>Dian;",
+	"\u7673>Lu{o3};",
+	"\u7674>L{uu}{a2}n;",
+	"\u7675>Lu{a2}n;",
+	"\u7676>Bo;",
+	"\u7678>Gu{i3};",
+	"\u7679>Po;",
+	"\u767A>Fa;",
+	"\u767B>Deng;",
+	"\u767C>Fa;",
+	"\u767D>Ba{i2};",
+	"\u767E>Ba{i3};",
+	"\u767F>Qi{e2};",
+	"\u7680>Bi;",
+	"\u7681>Za{o4};",
+	"\u7682>Za{o4};",
+	"\u7683>Ma{o4};",
+	"\u7684>D{e1};",
+	"\u7685>Pa;",
+	"\u7686>Jie;",
+	"\u7687>Hu{a2}ng;",
+	"\u7688>Gui;",
+	"\u7689>C{i3};",
+	"\u768A>L{i2}ng;",
+	"\u768B>Gao;",
+	"\u768C>M{o4};",
+	"\u768D>J{i2};",
+	"\u768E>Jia{o3};",
+	"\u768F>P{e3}ng;",
+	"\u7690>Gao;",
+	"\u7691>A{i2};",
+	"\u7692>{E2};",
+	"\u7693>Ha{o4};",
+	"\u7694>H{a4}n;",
+	"\u7695>Bi;",
+	"\u7696>W{a3}n;",
+	"\u7697>Cho{u2};",
+	"\u7698>Qi{a4}n;",
+	"\u7699>Xi;",
+	"\u769A>A{i2};",
+	"\u769B>Ji{o3}ng;",
+	"\u769C>Ha{o4};",
+	"\u769D>Hu{a3}ng;",
+	"\u769E>Ha{o4};",
+	"\u769F>Z{e2};",
+	"\u76A0>Cu{i3};",
+	"\u76A1>Ha{o4};",
+	"\u76A2>Xia{o3};",
+	"\u76A3>Y{e4};",
+	"\u76A4>P{o2};",
+	"\u76A5>Ha{o4};",
+	"\u76A6>Jia{o3};",
+	"\u76A7>A{i4};",
+	"\u76A8>Xing;",
+	"\u76A9>Hu{a4}ng;",
+	"\u76AA>L{i4};",
+	"\u76AB>Pia{o3};",
+	"\u76AC>H{e4};",
+	"\u76AD>Jia{o4};",
+	"\u76AE>P{i2};",
+	"\u76AF>G{a3}n;",
+	"\u76B0>Pa{o4};",
+	"\u76B1>Zho{u4};",
+	"\u76B2>Jun;",
+	"\u76B3>Qi{u2};",
+	"\u76B4>Cun;",
+	"\u76B5>Qu{e4};",
+	"\u76B6>Zha;",
+	"\u76B7>G{u3};",
+	"\u76B8>Jun;",
+	"\u76B9>Jun;",
+	"\u76BA>Zho{u4};",
+	"\u76BB>Zha;",
+	"\u76BC>G{u3};",
+	"\u76BD>Zh{a3}n;",
+	"\u76BE>D{u2};",
+	"\u76BF>M{i3}n;",
+	"\u76C0>Q{i3};",
+	"\u76C1>Y{i2}ng;",
+	"\u76C2>Y{u2};",
+	"\u76C3>Bei;",
+	"\u76C4>Zhao;",
+	"\u76C5>Zhong;",
+	"\u76C6>P{e2}n;",
+	"\u76C7>H{e2};",
+	"\u76C8>Y{i2}ng;",
+	"\u76C9>H{e2};",
+	"\u76CA>Y{i4};",
+	"\u76CB>Bo;",
+	"\u76CC>W{a3}n;",
+	"\u76CD>H{e2};",
+	"\u76CE>{A4}ng;",
+	"\u76CF>Zh{a3}n;",
+	"\u76D0>Y{a2}n;",
+	"\u76D1>Jian;",
+	"\u76D2>H{e2};",
+	"\u76D3>Yu;",
+	"\u76D4>Kui;",
+	"\u76D5>F{a4}n;",
+	"\u76D6>Ga{i4};",
+	"\u76D7>Da{o4};",
+	"\u76D8>P{a2}n;",
+	"\u76D9>F{u3};",
+	"\u76DA>Qi{u2};",
+	"\u76DB>Sh{e4}ng;",
+	"\u76DC>Da{o4};",
+	"\u76DD>L{u4};",
+	"\u76DE>Zh{a3}n;",
+	"\u76DF>M{e2}ng;",
+	"\u76E0>L{i3};",
+	"\u76E1>J{i4}n;",
+	"\u76E2>X{u4};",
+	"\u76E3>Jian;",
+	"\u76E4>P{a2}n;",
+	"\u76E5>Gu{a4}n;",
+	"\u76E6>An;",
+	"\u76E7>L{u2};",
+	"\u76E8>Sh{u3};",
+	"\u76E9>Zhou;",
+	"\u76EA>D{a4}ng;",
+	"\u76EB>An;",
+	"\u76EC>G{u3};",
+	"\u76ED>L{i4};",
+	"\u76EE>M{u4};",
+	"\u76EF>Ch{e2}ng;",
+	"\u76F0>G{a3}n;",
+	"\u76F1>Xu;",
+	"\u76F2>M{a2}ng;",
+	"\u76F3>M{a2}ng;",
+	"\u76F4>Zh{i2};",
+	"\u76F5>Q{i4};",
+	"\u76F6>Ru{a3}n;",
+	"\u76F7>Ti{a2}n;",
+	"\u76F8>Xiang;",
+	"\u76F9>D{u4}n;",
+	"\u76FA>Xin;",
+	"\u76FB>X{i4};",
+	"\u76FC>P{a4}n;",
+	"\u76FD>Feng;",
+	"\u76FE>D{u4}n;",
+	"\u76FF>M{i2}n;",
+	"\u7700>M{i2}ng;",
+	"\u7701>Sh{e3}ng;",
+	"\u7702>Sh{i4};",
+	"\u7703>Y{u2}n;",
+	"\u7704>Mi{a3}n;",
+	"\u7705>Pan;",
+	"\u7706>F{a3}ng;",
+	"\u7707>Mia{o3};",
+	"\u7708>Dan;",
+	"\u7709>Me{i2};",
+	"\u770A>Ma{o4};",
+	"\u770B>K{a4}n;",
+	"\u770C>Xi{a4}n;",
+	"\u770D>Ou;",
+	"\u770E>Sh{i4};",
+	"\u770F>Yang;",
+	"\u7710>Zheng;",
+	"\u7711>Ya{o3};",
+	"\u7712>Sh{e4}n;",
+	"\u7713>Hu{o4};",
+	"\u7714>D{a4};",
+	"\u7715>Zh{e3}n;",
+	"\u7716>Ku{a4}ng;",
+	"\u7717>Ju;",
+	"\u7718>Sh{e4}n;",
+	"\u7719>Ch{i4};",
+	"\u771A>Sh{e3}ng;",
+	"\u771B>Me{i4};",
+	"\u771C>M{o4};",
+	"\u771D>Zh{u4};",
+	"\u771E>Zhen;",
+	"\u771F>Zhen;",
+	"\u7720>Mi{a2}n;",
+	"\u7721>Di;",
+	"\u7722>Yuan;",
+	"\u7723>Di{e2};",
+	"\u7724>Y{i2};",
+	"\u7725>Z{i4};",
+	"\u7726>Z{i4};",
+	"\u7727>Cha{o3};",
+	"\u7728>Zh{a3};",
+	"\u7729>Xu{a4}n;",
+	"\u772A>B{i3}ng;",
+	"\u772B>M{i3};",
+	"\u772C>L{o2}ng;",
+	"\u772D>Sui;",
+	"\u772E>D{o4}ng;",
+	"\u772F>M{i3};",
+	"\u7730>Di{e2};",
+	"\u7731>Y{i2};",
+	"\u7732>{E4}r;",
+	"\u7733>M{i3}ng;",
+	"\u7734>Xu{a4}n;",
+	"\u7735>Chi;",
+	"\u7736>Ku{a4}ng;",
+	"\u7737>Ju{a4}n;",
+	"\u7738>Mo{u2};",
+	"\u7739>Zh{e4}n;",
+	"\u773A>Tia{o4};",
+	"\u773B>Y{a2}ng;",
+	"\u773C>Y{a3}n;",
+	"\u773D>M{o4};",
+	"\u773E>Zh{o4}ng;",
+	"\u773F>Ma{i4};",
+	"\u7740>Zha{o2};",
+	"\u7741>Zheng;",
+	"\u7742>Me{i2};",
+	"\u7743>J{u4}n;",
+	"\u7744>Sha{o4};",
+	"\u7745>H{a4}n;",
+	"\u7746>Hu{a3}n;",
+	"\u7747>D{i4};",
+	"\u7748>Ch{e3}ng;",
+	"\u7749>Cuo;",
+	"\u774A>Ju{a4}n;",
+	"\u774B>{E2};",
+	"\u774C>W{a3}n;",
+	"\u774D>Xi{a4}n;",
+	"\u774E>Xi;",
+	"\u774F>K{u4}n;",
+	"\u7750>La{i4};",
+	"\u7751>Ji{a3}n;",
+	"\u7752>Sh{a3}n;",
+	"\u7753>Ti{a3}n;",
+	"\u7754>H{u3}n;",
+	"\u7755>W{a3}n;",
+	"\u7756>L{i2}ng;",
+	"\u7757>Sh{i4};",
+	"\u7758>Qi{o2}ng;",
+	"\u7759>Li{e4};",
+	"\u775A>Ya{i2};",
+	"\u775B>Jing;",
+	"\u775C>Zheng;",
+	"\u775D>L{i2};",
+	"\u775E>La{i4};",
+	"\u775F>Su{i4};",
+	"\u7760>Ju{a4}n;",
+	"\u7761>Shu{i4};",
+	"\u7762>Sui;",
+	"\u7763>Du;",
+	"\u7764>B{i4};",
+	"\u7765>B{i4};",
+	"\u7766>M{u4};",
+	"\u7767>Hun;",
+	"\u7768>N{i4};",
+	"\u7769>L{u4};",
+	"\u776A>Y{i4};",
+	"\u776B>Ji{e2};",
+	"\u776C>Ca{i3};",
+	"\u776D>Zho{u3};",
+	"\u776E>Y{u2};",
+	"\u776F>Hun;",
+	"\u7770>M{a4};",
+	"\u7771>Xi{a4};",
+	"\u7772>X{i3}ng;",
+	"\u7773>Xi;",
+	"\u7774>G{u4}n;",
+	"\u7775>Cai;",
+	"\u7776>Ch{u3}n;",
+	"\u7777>Jian;",
+	"\u7778>Me{i4};",
+	"\u7779>D{u3};",
+	"\u777A>Ho{u2};",
+	"\u777B>Xuan;",
+	"\u777C>T{i4};",
+	"\u777D>Ku{i2};",
+	"\u777E>Gao;",
+	"\u777F>Ru{i4};",
+	"\u7780>Mo{u4};",
+	"\u7781>X{u4};",
+	"\u7782>Fa;",
+	"\u7783>Wen;",
+	"\u7784>Mia{o2};",
+	"\u7785>Cho{u3};",
+	"\u7786>Ku{i4};",
+	"\u7787>Mi;",
+	"\u7788>W{e3}ng;",
+	"\u7789>Ko{u4};",
+	"\u778A>D{a4}ng;",
+	"\u778B>Chen;",
+	"\u778C>Ke;",
+	"\u778D>So{u3};",
+	"\u778E>Xia;",
+	"\u778F>Qi{o2}ng;",
+	"\u7790>Ma{o4};",
+	"\u7791>M{i2}ng;",
+	"\u7792>M{a2}n;",
+	"\u7793>Shu{i4};",
+	"\u7794>Z{e2};",
+	"\u7795>Zh{a4}ng;",
+	"\u7796>Y{i4};",
+	"\u7797>Diao;",
+	"\u7798>Ou;",
+	"\u7799>M{o4};",
+	"\u779A>Sh{u4}n;",
+	"\u779B>Cong;",
+	"\u779C>Lou;",
+	"\u779D>Chi;",
+	"\u779E>M{a2}n;",
+	"\u779F>Pia{o3};",
+	"\u77A0>Cheng;",
+	"\u77A1>J{i4};",
+	"\u77A2>M{e2}ng;",
+	"\u77A4>R{u2}n;",
+	"\u77A5>Pie;",
+	"\u77A6>Xi;",
+	"\u77A7>Qia{o2};",
+	"\u77A8>P{u2};",
+	"\u77A9>Zh{u3};",
+	"\u77AA>D{e4}ng;",
+	"\u77AB>Sh{e3}n;",
+	"\u77AC>Sh{u4}n;",
+	"\u77AD>Lia{o3};",
+	"\u77AE>Ch{e4};",
+	"\u77AF>Xi{a2}n;",
+	"\u77B0>K{a4}n;",
+	"\u77B1>Y{e4};",
+	"\u77B2>X{u4};",
+	"\u77B3>T{o2}ng;",
+	"\u77B4>Mo{u2};",
+	"\u77B5>L{i2}n;",
+	"\u77B6>Ku{i4};",
+	"\u77B7>Xi{a2}n;",
+	"\u77B8>Y{e4};",
+	"\u77B9>A{i4};",
+	"\u77BA>Hu{i4};",
+	"\u77BB>Zhan;",
+	"\u77BC>Ji{a3}n;",
+	"\u77BD>G{u3};",
+	"\u77BE>Zha{o4};",
+	"\u77BF>Qu;",
+	"\u77C0>We{i2};",
+	"\u77C1>Cho{u3};",
+	"\u77C2>Sa{o4};",
+	"\u77C3>N{i3}ng;",
+	"\u77C4>Xun;",
+	"\u77C5>Ya{o4};",
+	"\u77C6>Hu{o4};",
+	"\u77C7>M{e2}ng;",
+	"\u77C8>Mi{a2}n;",
+	"\u77C9>Bin;",
+	"\u77CA>Mi{a2}n;",
+	"\u77CB>L{i4};",
+	"\u77CC>Ku{a4}ng;",
+	"\u77CD>Ju{e2};",
+	"\u77CE>Xuan;",
+	"\u77CF>Mi{a2}n;",
+	"\u77D0>Hu{o4};",
+	"\u77D1>L{u2};",
+	"\u77D2>M{e2}ng;",
+	"\u77D3>L{o2}ng;",
+	"\u77D4>Gu{a4}n;",
+	"\u77D5>M{a3}n;",
+	"\u77D6>X{i3};",
+	"\u77D7>Ch{u4};",
+	"\u77D8>T{a3}ng;",
+	"\u77D9>K{a4}n;",
+	"\u77DA>Zh{u3};",
+	"\u77DB>Ma{o2};",
+	"\u77DC>Jin;",
+	"\u77DD>L{i2}n;",
+	"\u77DE>Y{u4};",
+	"\u77DF>Shu{o4};",
+	"\u77E0>C{e4};",
+	"\u77E1>Ju{e2};",
+	"\u77E2>Sh{i3};",
+	"\u77E3>Y{i3};",
+	"\u77E4>Sh{e3}n;",
+	"\u77E5>Zhi;",
+	"\u77E6>Ho{u2};",
+	"\u77E7>Sh{e3}n;",
+	"\u77E8>Y{i3}ng;",
+	"\u77E9>J{u3};",
+	"\u77EA>Zhou;",
+	"\u77EB>Jia{o3};",
+	"\u77EC>Cu{o2};",
+	"\u77ED>Du{a3}n;",
+	"\u77EE>A{i3};",
+	"\u77EF>Jia{o3};",
+	"\u77F0>Zeng;",
+	"\u77F1>Hu{o4};",
+	"\u77F2>Ba{i3};",
+	"\u77F3>Sh{i2};",
+	"\u77F4>D{i4}ng;",
+	"\u77F5>Q{i4};",
+	"\u77F6>Ji;",
+	"\u77F7>Z{i3};",
+	"\u77F8>Gan;",
+	"\u77F9>W{u4};",
+	"\u77FA>Tuo;",
+	"\u77FB>K{u4};",
+	"\u77FC>Qiang;",
+	"\u77FD>X{i4};",
+	"\u77FE>F{a2}n;",
+	"\u77FF>Ku{a4}ng;",
+	"\u7800>D{a4}ng;",
+	"\u7801>M{a3};",
+	"\u7802>Sha;",
+	"\u7803>Dan;",
+	"\u7804>Ju{e2};",
+	"\u7805>L{i4};",
+	"\u7806>Fu;",
+	"\u7807>M{i2}n;",
+	"\u7808>Nu{o3};",
+	"\u7809>Hu{o4};",
+	"\u780A>K{a4}ng;",
+	"\u780B>Zh{i3};",
+	"\u780C>Q{i4};",
+	"\u780D>K{a3}n;",
+	"\u780E>Ji{e4};",
+	"\u780F>Fen;",
+	"\u7810>{E4};",
+	"\u7811>Y{a4};",
+	"\u7812>Pi;",
+	"\u7813>Zh{e2};",
+	"\u7814>Y{a2}n;",
+	"\u7815>Su{i4};",
+	"\u7816>Zhuan;",
+	"\u7817>Che;",
+	"\u7818>D{u4}n;",
+	"\u7819>Pan;",
+	"\u781A>Y{a4}n;",
+	"\u781C>Feng;",
+	"\u781D>F{a2};",
+	"\u781E>M{o4};",
+	"\u781F>Zh{a4};",
+	"\u7820>Qu;",
+	"\u7821>Y{u4};",
+	"\u7822>Lu{o3};",
+	"\u7823>Tu{o2};",
+	"\u7824>Tu{o2};",
+	"\u7825>D{i3};",
+	"\u7826>Zha{i4};",
+	"\u7827>Zhen;",
+	"\u7828>A{i4};",
+	"\u7829>Fe{i4};",
+	"\u782A>M{u3};",
+	"\u782B>Zh{u3};",
+	"\u782C>L{i4};",
+	"\u782D>Bian;",
+	"\u782E>N{u3};",
+	"\u782F>Ping;",
+	"\u7830>Peng;",
+	"\u7831>L{i2}ng;",
+	"\u7832>Pa{o4};",
+	"\u7833>L{e4};",
+	"\u7834>P{o4};",
+	"\u7835>Bo;",
+	"\u7836>P{o4};",
+	"\u7837>Shen;",
+	"\u7838>Z{a2};",
+	"\u7839>Nu{o3};",
+	"\u783A>L{i4};",
+	"\u783B>L{o2}ng;",
+	"\u783C>T{o2}ng;",
+	"\u783E>L{i4};",
+	"\u7840>Ch{u3};",
+	"\u7841>Keng;",
+	"\u7842>Qu{a2}n;",
+	"\u7843>Zhu;",
+	"\u7844>Kuang;",
+	"\u7845>Hu{o4};",
+	"\u7846>{E4};",
+	"\u7847>Na{o2};",
+	"\u7848>Ji{a2};",
+	"\u7849>L{u4};",
+	"\u784A>We{i3};",
+	"\u784B>A{i4};",
+	"\u784C>Lu{o4};",
+	"\u784D>K{e4}n;",
+	"\u784E>X{i2}ng;",
+	"\u784F>Y{a2}n;",
+	"\u7850>T{o2}ng;",
+	"\u7851>Peng;",
+	"\u7852>Xi;",
+	"\u7854>H{o2}ng;",
+	"\u7855>Shu{o4};",
+	"\u7856>Xi{a2};",
+	"\u7857>Qiao;",
+	"\u7859>We{i4};",
+	"\u785A>Qia{o2};",
+	"\u785C>Keng;",
+	"\u785D>Xiao;",
+	"\u785E>Qu{e4};",
+	"\u785F>Ch{a4}n;",
+	"\u7860>L{a3}ng;",
+	"\u7861>H{o2}ng;",
+	"\u7862>Y{u2};",
+	"\u7863>Xiao;",
+	"\u7864>Xi{a2};",
+	"\u7865>M{a3}ng;",
+	"\u7866>L{o4}ng;",
+	"\u7867>I{o3}ng;",
+	"\u7868>Che;",
+	"\u7869>Ch{e4};",
+	"\u786A>{E2};",
+	"\u786B>Li{u2};",
+	"\u786C>Y{i4}ng;",
+	"\u786D>M{a2}ng;",
+	"\u786E>Qu{e4};",
+	"\u786F>Y{a4}n;",
+	"\u7870>Sha;",
+	"\u7871>K{u3}n;",
+	"\u7872>Y{u4};",
+	"\u7875>L{u3};",
+	"\u7876>Ch{e3}n;",
+	"\u7877>Ji{a3}n;",
+	"\u7878>Nu{e4};",
+	"\u7879>Song;",
+	"\u787A>Zhu{o2};",
+	"\u787B>Keng;",
+	"\u787C>P{e2}ng;",
+	"\u787D>Y{a3}n;",
+	"\u787E>Zhu{i4};",
+	"\u787F>Kong;",
+	"\u7880>C{e2}ng;",
+	"\u7881>Q{i2};",
+	"\u7882>Z{o4}ng;",
+	"\u7883>Q{i4}ng;",
+	"\u7884>L{i2}n;",
+	"\u7885>Jun;",
+	"\u7886>Bo;",
+	"\u7887>D{i4}ng;",
+	"\u7888>M{i2}n;",
+	"\u7889>Diao;",
+	"\u788A>Jian;",
+	"\u788B>H{e4};",
+	"\u788C>L{u4};",
+	"\u788D>A{i4};",
+	"\u788E>Su{i4};",
+	"\u788F>Qu{e4};",
+	"\u7890>L{i2}ng;",
+	"\u7891>Bei;",
+	"\u7892>Y{i2}n;",
+	"\u7893>Du{i4};",
+	"\u7894>W{u3};",
+	"\u7895>Q{i2};",
+	"\u7896>L{u4}n;",
+	"\u7897>W{a3}n;",
+	"\u7898>Di{a3}n;",
+	"\u7899>Gang;",
+	"\u789A>Pe{i2};",
+	"\u789B>Q{i4};",
+	"\u789C>Ch{e3}n;",
+	"\u789D>Ru{a3}n;",
+	"\u789E>Y{a2}n;",
+	"\u789F>Di{e2};",
+	"\u78A0>D{i4}ng;",
+	"\u78A1>D{u2};",
+	"\u78A2>Tu{o2};",
+	"\u78A3>Ji{e2};",
+	"\u78A4>Ying;",
+	"\u78A5>Bi{a3}n;",
+	"\u78A6>K{e4};",
+	"\u78A7>B{i4};",
+	"\u78A8>Wei;",
+	"\u78A9>Shu{o4};",
+	"\u78AA>Zhen;",
+	"\u78AB>Du{a4}n;",
+	"\u78AC>Xi{a2};",
+	"\u78AD>D{a4}ng;",
+	"\u78AE>T{i2};",
+	"\u78AF>Na{o3};",
+	"\u78B0>P{e4}ng;",
+	"\u78B1>Ji{a3}n;",
+	"\u78B2>D{i4};",
+	"\u78B3>T{a4}n;",
+	"\u78B4>Ch{a2};",
+	"\u78B6>Q{i4};",
+	"\u78B8>Feng;",
+	"\u78B9>Xu{a4}n;",
+	"\u78BA>Qu{e4};",
+	"\u78BB>Qu{e4};",
+	"\u78BC>M{a3};",
+	"\u78BD>Gong;",
+	"\u78BE>Ni{a4}n;",
+	"\u78BF>S{u4};",
+	"\u78C0>{E2};",
+	"\u78C1>C{i2};",
+	"\u78C2>Li{u4};",
+	"\u78C3>Si;",
+	"\u78C4>T{a2}ng;",
+	"\u78C5>B{a4}ng;",
+	"\u78C6>Hu{a2};",
+	"\u78C7>Pi;",
+	"\u78C8>We{i3};",
+	"\u78C9>S{a3}ng;",
+	"\u78CA>Le{i3};",
+	"\u78CB>Cuo;",
+	"\u78CC>Zhen;",
+	"\u78CD>Xi{a2};",
+	"\u78CE>Qi;",
+	"\u78CF>Li{a2}n;",
+	"\u78D0>P{a2}n;",
+	"\u78D1>We{i4};",
+	"\u78D2>Y{u3}n;",
+	"\u78D3>Dui;",
+	"\u78D4>Zh{e2};",
+	"\u78D5>Ke;",
+	"\u78D6>La;",
+	"\u78D8>Q{i4}ng;",
+	"\u78D9>G{u3}n;",
+	"\u78DA>Zhuan;",
+	"\u78DB>Ch{a2}n;",
+	"\u78DC>Q{i4};",
+	"\u78DD>A{o2};",
+	"\u78DE>Peng;",
+	"\u78DF>L{u4};",
+	"\u78E0>L{u3};",
+	"\u78E1>K{a4}n;",
+	"\u78E2>Qi{a3}ng;",
+	"\u78E3>Ch{e3}n;",
+	"\u78E4>Y{i3}n;",
+	"\u78E5>Le{i3};",
+	"\u78E6>Biao;",
+	"\u78E7>Q{i4};",
+	"\u78E8>M{o2};",
+	"\u78E9>Qi;",
+	"\u78EA>Cui;",
+	"\u78EB>Zong;",
+	"\u78EC>Q{i4}ng;",
+	"\u78ED>Chu{o4};",
+	"\u78EF>Ji;",
+	"\u78F0>Sh{a4}n;",
+	"\u78F1>La{o2};",
+	"\u78F2>Q{u2};",
+	"\u78F3>Zeng;",
+	"\u78F4>D{e4}ng;",
+	"\u78F5>Ji{a4}n;",
+	"\u78F6>X{i4};",
+	"\u78F7>L{i4}n;",
+	"\u78F8>D{i4}ng;",
+	"\u78F9>Di{a4}n;",
+	"\u78FA>Hu{a2}ng;",
+	"\u78FB>P{a2}n;",
+	"\u78FC>Z{a2};",
+	"\u78FD>Qiao;",
+	"\u78FE>Di;",
+	"\u78FF>L{i4};",
+	"\u7901>Jiao;",
+	"\u7903>Zh{a3}ng;",
+	"\u7904>Qia{o2};",
+	"\u7905>Dun;",
+	"\u7906>Xi{a3}n;",
+	"\u7907>Y{u4};",
+	"\u7908>Zhu{i4};",
+	"\u7909>H{e2};",
+	"\u790A>Hu{o4};",
+	"\u790B>Zha{i2};",
+	"\u790C>Le{i4};",
+	"\u790D>K{e3};",
+	"\u790E>Ch{u3};",
+	"\u790F>J{i2};",
+	"\u7910>Qu{e4};",
+	"\u7911>D{a4}ng;",
+	"\u7912>Y{i3};",
+	"\u7913>Jiang;",
+	"\u7914>P{i4};",
+	"\u7915>Pi;",
+	"\u7916>Y{u4};",
+	"\u7917>Pin;",
+	"\u7918>Q{i4};",
+	"\u7919>A{i4};",
+	"\u791A>Ka{i4};",
+	"\u791B>Jian;",
+	"\u791C>Y{u4};",
+	"\u791D>Ru{a3}n;",
+	"\u791E>M{e2}ng;",
+	"\u791F>Pa{o4};",
+	"\u7920>C{i2};",
+	"\u7923>Mi{e4};",
+	"\u7924>C{a3};",
+	"\u7925>Xi{a2}n;",
+	"\u7926>Ku{a4}ng;",
+	"\u7927>Le{i4};",
+	"\u7928>Le{i3};",
+	"\u7929>Zh{i4};",
+	"\u792A>L{i4};",
+	"\u792B>L{i4};",
+	"\u792C>F{a2}n;",
+	"\u792D>Qu{e4};",
+	"\u792E>Pa{o4};",
+	"\u792F>Ying;",
+	"\u7930>L{i4};",
+	"\u7931>L{o2}ng;",
+	"\u7932>L{o2}ng;",
+	"\u7933>M{o4};",
+	"\u7934>B{o2};",
+	"\u7935>Shuang;",
+	"\u7936>Gu{a4}n;",
+	"\u7937>L{a2}n;",
+	"\u7938>Z{a3}n;",
+	"\u7939>Y{a2}n;",
+	"\u793A>Sh{i4};",
+	"\u793B>Shi4zi4p{a2}ng;",
+	"\u793C>L{i3};",
+	"\u793D>R{e2}ng;",
+	"\u793E>Sh{e4};",
+	"\u793F>Yu{e4};",
+	"\u7940>S{i4};",
+	"\u7941>Q{i2};",
+	"\u7942>Ta;",
+	"\u7943>M{a4};",
+	"\u7944>Xi{e4};",
+	"\u7945>Xian;",
+	"\u7946>Xian;",
+	"\u7947>Zhi;",
+	"\u7948>Q{i2};",
+	"\u7949>Zh{i3};",
+	"\u794A>Beng;",
+	"\u794B>Du{i4};",
+	"\u794C>Zh{o4}ng;",
+	"\u794E>Yi;",
+	"\u794F>Sh{i2};",
+	"\u7950>Yo{u4};",
+	"\u7951>Zh{i4};",
+	"\u7952>Tia{o2};",
+	"\u7953>F{u2};",
+	"\u7954>F{u4};",
+	"\u7955>M{i4};",
+	"\u7956>Z{u3};",
+	"\u7957>Zhi;",
+	"\u7958>Su{a4}n;",
+	"\u7959>Me{i4};",
+	"\u795A>Zu{o4};",
+	"\u795B>Qu;",
+	"\u795C>H{u4};",
+	"\u795D>Zh{u4};",
+	"\u795E>Sh{e2}n;",
+	"\u795F>Su{i4};",
+	"\u7960>C{i2};",
+	"\u7961>Cha{i2};",
+	"\u7962>M{i2};",
+	"\u7963>L{uu3};",
+	"\u7964>Y{u3};",
+	"\u7965>Xi{a2}ng;",
+	"\u7966>W{u2};",
+	"\u7967>Tiao;",
+	"\u7968>Pia{o4};",
+	"\u7969>Zhu;",
+	"\u796A>Gu{i3};",
+	"\u796B>Xi{a2};",
+	"\u796C>Zhi;",
+	"\u796D>J{i4};",
+	"\u796E>Ga{o4};",
+	"\u796F>Zhen;",
+	"\u7970>Ga{o4};",
+	"\u7971>Shu{i4};",
+	"\u7972>Jin;",
+	"\u7973>Ch{e3}n;",
+	"\u7974>Gai;",
+	"\u7975>K{u3}n;",
+	"\u7976>D{i4};",
+	"\u7977>Da{o3};",
+	"\u7978>Hu{o4};",
+	"\u7979>Ta{o2};",
+	"\u797A>Q{i2};",
+	"\u797B>G{u4};",
+	"\u797C>Gu{a4}n;",
+	"\u797D>Zu{i4};",
+	"\u797E>L{i2}ng;",
+	"\u797F>L{u4};",
+	"\u7980>B{i3}ng;",
+	"\u7981>J{i4}n;",
+	"\u7982>Da{o3};",
+	"\u7983>Zh{i2};",
+	"\u7984>L{u4};",
+	"\u7985>Sh{a4}n;",
+	"\u7986>Bei;",
+	"\u7987>Zh{e3};",
+	"\u7988>Hui;",
+	"\u7989>Yo{u3};",
+	"\u798A>X{i4};",
+	"\u798B>Yin;",
+	"\u798C>Zi;",
+	"\u798D>Hu{o4};",
+	"\u798E>Zhen;",
+	"\u798F>F{u2};",
+	"\u7990>Yu{a4}n;",
+	"\u7991>W{u2};",
+	"\u7992>Xi{a3}n;",
+	"\u7993>Y{a2}ng;",
+	"\u7994>T{i2};",
+	"\u7995>Yi;",
+	"\u7996>Me{i2};",
+	"\u7997>Si;",
+	"\u7998>D{i4};",
+	"\u799A>Zhu{o2};",
+	"\u799B>Zhen;",
+	"\u799C>Y{o3}ng;",
+	"\u799D>J{i2};",
+	"\u799E>Ga{o4};",
+	"\u799F>T{a2}ng;",
+	"\u79A0>Si;",
+	"\u79A1>M{a4};",
+	"\u79A2>Ta;",
+	"\u79A4>Xuan;",
+	"\u79A5>Q{i2};",
+	"\u79A6>Y{u4};",
+	"\u79A7>Xi;",
+	"\u79A8>Ji;",
+	"\u79A9>S{i4};",
+	"\u79AA>Ch{a2}n;",
+	"\u79AB>T{a3}n;",
+	"\u79AC>Kua{i4};",
+	"\u79AD>Su{i4};",
+	"\u79AE>L{i3};",
+	"\u79AF>N{o2}ng;",
+	"\u79B0>N{i3};",
+	"\u79B1>Da{o3};",
+	"\u79B2>L{i4};",
+	"\u79B3>R{a2}ng;",
+	"\u79B4>Yu{e4};",
+	"\u79B5>T{i2};",
+	"\u79B6>Z{a3}n;",
+	"\u79B7>Le{i4};",
+	"\u79B8>Ro{u2};",
+	"\u79B9>Y{u3};",
+	"\u79BA>Y{u2};",
+	"\u79BB>Chi;",
+	"\u79BC>Xi{e4};",
+	"\u79BD>Q{i2}n;",
+	"\u79BE>H{e2};",
+	"\u79BF>Tu;",
+	"\u79C0>Xi{u4};",
+	"\u79C1>Si;",
+	"\u79C2>R{e2}n;",
+	"\u79C3>Tu;",
+	"\u79C4>Z{i3};",
+	"\u79C5>Ch{a2};",
+	"\u79C6>G{a3}n;",
+	"\u79C7>Y{i4};",
+	"\u79C8>Xian;",
+	"\u79C9>B{i3}ng;",
+	"\u79CA>Ni{a2}n;",
+	"\u79CB>Qiu;",
+	"\u79CC>Qiu;",
+	"\u79CD>Ch{o2}ng;",
+	"\u79CE>F{e2}n;",
+	"\u79CF>Ha{o4};",
+	"\u79D0>Y{u2}n;",
+	"\u79D1>Ke;",
+	"\u79D2>Mia{o3};",
+	"\u79D3>Zhi;",
+	"\u79D4>Geng;",
+	"\u79D5>B{i3};",
+	"\u79D6>Zhi;",
+	"\u79D7>Y{u4};",
+	"\u79D8>M{i4};",
+	"\u79D9>K{u4};",
+	"\u79DA>B{a4}n;",
+	"\u79DB>Pi;",
+	"\u79DC>N{i2};",
+	"\u79DD>L{i4};",
+	"\u79DE>Yo{u2};",
+	"\u79DF>Zu;",
+	"\u79E0>Pi;",
+	"\u79E1>B{a2};",
+	"\u79E2>L{i2}ng;",
+	"\u79E3>M{o4};",
+	"\u79E4>Ch{e4}ng;",
+	"\u79E5>Ni{a2}n;",
+	"\u79E6>Q{i2}n;",
+	"\u79E7>Yang;",
+	"\u79E8>Zu{o2};",
+	"\u79E9>Zh{i4};",
+	"\u79EA>Zhi;",
+	"\u79EB>Sh{u2};",
+	"\u79EC>J{u4};",
+	"\u79ED>Z{i3};",
+	"\u79EE>Hu{o2};",
+	"\u79EF>Ji;",
+	"\u79F0>Cheng;",
+	"\u79F1>T{o2}ng;",
+	"\u79F2>Zh{i4};",
+	"\u79F3>Hu{o2};",
+	"\u79F4>H{e2};",
+	"\u79F5>Yin;",
+	"\u79F6>Zi;",
+	"\u79F7>Zh{i2};",
+	"\u79F8>Jie;",
+	"\u79F9>R{e3}n;",
+	"\u79FA>D{u4};",
+	"\u79FB>Y{i2};",
+	"\u79FC>Zhu;",
+	"\u79FD>Hu{i4};",
+	"\u79FE>N{o2}ng;",
+	"\u79FF>F{u3};",
+	"\u7A00>Xi;",
+	"\u7A01>Ka{o3};",
+	"\u7A02>L{a2}ng;",
+	"\u7A03>Fu;",
+	"\u7A04>Z{e4};",
+	"\u7A05>Shu{i4};",
+	"\u7A06>L{uu3};",
+	"\u7A07>K{u3}n;",
+	"\u7A08>G{a3}n;",
+	"\u7A09>Geng;",
+	"\u7A0A>T{i2};",
+	"\u7A0B>Ch{e2}ng;",
+	"\u7A0C>T{u2};",
+	"\u7A0D>Shao;",
+	"\u7A0E>Shu{i4};",
+	"\u7A0F>Y{a4};",
+	"\u7A10>L{u3}n;",
+	"\u7A11>L{u4};",
+	"\u7A12>G{u4};",
+	"\u7A13>Zu{o2};",
+	"\u7A14>R{e3}n;",
+	"\u7A15>Zh{u4}n;",
+	"\u7A16>B{a4}ng;",
+	"\u7A17>Ba{i4};",
+	"\u7A18>Ji;",
+	"\u7A19>Zh{i2};",
+	"\u7A1A>Zh{i4};",
+	"\u7A1B>K{u3}n;",
+	"\u7A1C>L{e2}ng;",
+	"\u7A1D>P{e2}ng;",
+	"\u7A1E>Ke;",
+	"\u7A1F>B{i3}ng;",
+	"\u7A20>Cho{u2};",
+	"\u7A21>Z{u2};",
+	"\u7A22>Y{u4};",
+	"\u7A23>Su;",
+	"\u7A24>L{uu}{e4};",
+	"\u7A26>Yi;",
+	"\u7A27>X{i4};",
+	"\u7A28>Bian;",
+	"\u7A29>J{i4};",
+	"\u7A2A>F{u4};",
+	"\u7A2B>Bi;",
+	"\u7A2C>Nu{o4};",
+	"\u7A2D>Jie;",
+	"\u7A2E>Zh{o3}ng;",
+	"\u7A2F>Zong;",
+	"\u7A30>Xu;",
+	"\u7A31>Cheng;",
+	"\u7A32>Da{o4};",
+	"\u7A33>W{e3}n;",
+	"\u7A34>Li{a2}n;",
+	"\u7A35>Zi;",
+	"\u7A36>Y{u4};",
+	"\u7A37>J{i4};",
+	"\u7A38>X{u4};",
+	"\u7A39>Zh{e3}n;",
+	"\u7A3A>Zh{i4};",
+	"\u7A3B>Da{o4};",
+	"\u7A3C>Ji{a4};",
+	"\u7A3D>Ji;",
+	"\u7A3E>Ga{o3};",
+	"\u7A3F>Ga{o3};",
+	"\u7A40>G{u3};",
+	"\u7A41>R{o2}ng;",
+	"\u7A42>Su{i4};",
+	"\u7A44>J{i4};",
+	"\u7A45>Kang;",
+	"\u7A46>M{u4};",
+	"\u7A47>Shan;",
+	"\u7A48>M{e2}n;",
+	"\u7A49>Zh{i4};",
+	"\u7A4A>J{i4};",
+	"\u7A4B>L{u4};",
+	"\u7A4C>Su;",
+	"\u7A4D>Ji;",
+	"\u7A4E>Y{i3}ng;",
+	"\u7A4F>W{e3}n;",
+	"\u7A50>Qiu;",
+	"\u7A51>S{e4};",
+	"\u7A53>Y{i4};",
+	"\u7A54>Hu{a2}ng;",
+	"\u7A55>Qi{e4};",
+	"\u7A56>J{i3};",
+	"\u7A57>Su{i4};",
+	"\u7A58>Xiao;",
+	"\u7A59>P{u2};",
+	"\u7A5A>Jiao;",
+	"\u7A5B>Zhuo;",
+	"\u7A5C>T{o2}ng;",
+	"\u7A5E>L{uu3};",
+	"\u7A5F>Su{i4};",
+	"\u7A60>N{o2}ng;",
+	"\u7A61>S{e4};",
+	"\u7A62>Hu{i4};",
+	"\u7A63>R{a2}ng;",
+	"\u7A64>Nu{o4};",
+	"\u7A65>Y{u4};",
+	"\u7A66>Bin;",
+	"\u7A67>J{i4};",
+	"\u7A68>Tu{i2};",
+	"\u7A69>W{e3}n;",
+	"\u7A6A>Cheng;",
+	"\u7A6B>Hu{o4};",
+	"\u7A6C>G{o3}ng;",
+	"\u7A6D>L{uu3};",
+	"\u7A6E>Biao;",
+	"\u7A70>R{a2}ng;",
+	"\u7A71>Zhuo;",
+	"\u7A72>L{i2};",
+	"\u7A73>Z{a4}n;",
+	"\u7A74>Xu{e4};",
+	"\u7A75>Wa;",
+	"\u7A76>Ji{u4};",
+	"\u7A77>Qi{o2}ng;",
+	"\u7A78>X{i4};",
+	"\u7A79>Qiong;",
+	"\u7A7A>Kong;",
+	"\u7A7B>Yu;",
+	"\u7A7C>Sen;",
+	"\u7A7D>J{i3}ng;",
+	"\u7A7E>Ya{o4};",
+	"\u7A7F>Chuan;",
+	"\u7A80>Zhun;",
+	"\u7A81>T{u2};",
+	"\u7A82>La{o2};",
+	"\u7A83>Qi{e4};",
+	"\u7A84>Zha{i3};",
+	"\u7A85>Ya{o3};",
+	"\u7A86>Bi{a3}n;",
+	"\u7A87>Ba{o2};",
+	"\u7A88>Ya{o3};",
+	"\u7A89>B{i3}ng;",
+	"\u7A8A>Wa;",
+	"\u7A8B>Zh{u2};",
+	"\u7A8C>Jia{o4};",
+	"\u7A8D>Qia{o4};",
+	"\u7A8E>Dia{o4};",
+	"\u7A8F>Wu;",
+	"\u7A90>Gui;",
+	"\u7A91>Ya{o2};",
+	"\u7A92>Zh{i4};",
+	"\u7A93>Chuang;",
+	"\u7A94>Ya{o3};",
+	"\u7A95>Tia{o3};",
+	"\u7A96>Jia{o4};",
+	"\u7A97>Chuang;",
+	"\u7A98>Ji{o3}ng;",
+	"\u7A99>Xiao;",
+	"\u7A9A>Ch{e2}ng;",
+	"\u7A9B>Ko{u4};",
+	"\u7A9C>Cu{a4}n;",
+	"\u7A9D>Wo;",
+	"\u7A9E>D{a4}n;",
+	"\u7A9F>Ku;",
+	"\u7AA0>Ke;",
+	"\u7AA1>Zhu{i4};",
+	"\u7AA2>X{u4};",
+	"\u7AA3>S{u4};",
+	"\u7AA4>Guan;",
+	"\u7AA5>Kui;",
+	"\u7AA6>Do{u4};",
+	"\u7AA8>Y{i4}n;",
+	"\u7AA9>Wo;",
+	"\u7AAA>Wa;",
+	"\u7AAB>Y{a4};",
+	"\u7AAC>Y{u2};",
+	"\u7AAD>J{u4};",
+	"\u7AAE>Qi{o2}ng;",
+	"\u7AAF>Ya{o2};",
+	"\u7AB0>Ya{o2};",
+	"\u7AB1>Tia{o4};",
+	"\u7AB2>Cha{o2};",
+	"\u7AB3>Y{u3};",
+	"\u7AB4>Ti{a2}n;",
+	"\u7AB5>Dia{o4};",
+	"\u7AB6>J{u4};",
+	"\u7AB7>Lia{o2};",
+	"\u7AB8>Xi;",
+	"\u7AB9>W{u4};",
+	"\u7ABA>Kui;",
+	"\u7ABB>Chuang;",
+	"\u7ABC>Zhao;",
+	"\u7ABE>Ku{a3}n;",
+	"\u7ABF>L{o2}ng;",
+	"\u7AC0>Cheng;",
+	"\u7AC1>Cu{i4};",
+	"\u7AC2>Pia{o2};",
+	"\u7AC3>Za{o4};",
+	"\u7AC4>Cu{a4}n;",
+	"\u7AC5>Qia{o4};",
+	"\u7AC6>Qi{o2}ng;",
+	"\u7AC7>Do{u4};",
+	"\u7AC8>Za{o4};",
+	"\u7AC9>L{o3}ng;",
+	"\u7ACA>Qi{e4};",
+	"\u7ACB>L{i4};",
+	"\u7ACC>Ch{u4};",
+	"\u7ACD>Shi2gong1sheng;",
+	"\u7ACE>Fo{u4};",
+	"\u7ACF>Qian1gong1sheng;",
+	"\u7AD0>Ch{u4};",
+	"\u7AD1>H{o2}ng;",
+	"\u7AD2>Q{i2};",
+	"\u7AD3>Qian1fen1zhi1yi1gong1sheng;",
+	"\u7AD4>Gong1sheng;",
+	"\u7AD5>Shi2fen1zhi1yi1gong1sheng;",
+	"\u7AD6>Sh{u4};",
+	"\u7AD7>Mia{o4};",
+	"\u7AD8>J{u3};",
+	"\u7AD9>Zh{a4}n;",
+	"\u7ADA>Zh{u4};",
+	"\u7ADB>L{i2}ng;",
+	"\u7ADC>L{o2}ng;",
+	"\u7ADD>B{i4}ng;",
+	"\u7ADE>J{i4}ng;",
+	"\u7ADF>J{i4}ng;",
+	"\u7AE0>Zhang;",
+	"\u7AE1>Yi1gong1sheng1deyi1bai3be{i4};",
+	"\u7AE2>S{i4};",
+	"\u7AE3>J{u4}n;",
+	"\u7AE4>H{o2}ng;",
+	"\u7AE5>T{o2}ng;",
+	"\u7AE6>S{o3}ng;",
+	"\u7AE7>J{i4}ng;",
+	"\u7AE8>Dia{o4};",
+	"\u7AE9>Y{i4};",
+	"\u7AEA>Sh{u4};",
+	"\u7AEB>J{i4}ng;",
+	"\u7AEC>Q{u3};",
+	"\u7AED>Ji{e2};",
+	"\u7AEE>P{i2}ng;",
+	"\u7AEF>Duan;",
+	"\u7AF0>Sha{o2};",
+	"\u7AF1>Zhu{a3}n;",
+	"\u7AF2>C{e2}ng;",
+	"\u7AF3>Deng;",
+	"\u7AF4>Cui;",
+	"\u7AF5>Huai;",
+	"\u7AF6>J{i4}ng;",
+	"\u7AF7>K{a4}n;",
+	"\u7AF8>J{i4}ng;",
+	"\u7AF9>Zh{u2};",
+	"\u7AFA>Zh{u2};",
+	"\u7AFB>L{e4};",
+	"\u7AFC>P{e2}ng;",
+	"\u7AFD>Y{u2};",
+	"\u7AFE>Ch{i2};",
+	"\u7AFF>Gan;",
+	"\u7B00>M{a2}ng;",
+	"\u7B01>Zh{u2};",
+	"\u7B03>D{u3};",
+	"\u7B04>Ji;",
+	"\u7B05>Xia{o2};",
+	"\u7B06>Ba;",
+	"\u7B07>Su{a4}n;",
+	"\u7B08>J{i2};",
+	"\u7B09>Zh{e3}n;",
+	"\u7B0A>Zha{o4};",
+	"\u7B0B>S{u3}n;",
+	"\u7B0C>Y{a2};",
+	"\u7B0D>Zhu{i4};",
+	"\u7B0E>Yu{a2}n;",
+	"\u7B0F>H{u4};",
+	"\u7B10>Gang;",
+	"\u7B11>Xia{o4};",
+	"\u7B12>C{e2}n;",
+	"\u7B13>P{i2};",
+	"\u7B14>B{i3};",
+	"\u7B15>Ji{a3}n;",
+	"\u7B16>Y{i3};",
+	"\u7B17>Dong;",
+	"\u7B18>Shan;",
+	"\u7B19>Sheng;",
+	"\u7B1A>Xi{a2};",
+	"\u7B1B>D{i2};",
+	"\u7B1C>Zh{u2};",
+	"\u7B1D>N{a4};",
+	"\u7B1E>Chi;",
+	"\u7B1F>Gu;",
+	"\u7B20>L{i4};",
+	"\u7B21>Qi{e4};",
+	"\u7B22>M{i3}n;",
+	"\u7B23>Bao;",
+	"\u7B24>Tia{o2};",
+	"\u7B25>S{i4};",
+	"\u7B26>F{u2};",
+	"\u7B27>C{e4};",
+	"\u7B28>B{e4}n;",
+	"\u7B29>Pe{i4};",
+	"\u7B2A>D{a2};",
+	"\u7B2B>Z{i3};",
+	"\u7B2C>D{i4};",
+	"\u7B2D>L{i2}ng;",
+	"\u7B2E>Z{e2};",
+	"\u7B2F>N{u2};",
+	"\u7B30>F{u2};",
+	"\u7B31>Go{u3};",
+	"\u7B32>Fan;",
+	"\u7B33>Jia;",
+	"\u7B34>G{e3};",
+	"\u7B35>F{a4}n;",
+	"\u7B36>Sh{i3};",
+	"\u7B37>Ma{o3};",
+	"\u7B38>P{o3};",
+	"\u7B3A>Jian;",
+	"\u7B3B>Qi{o2}ng;",
+	"\u7B3C>L{o2}ng;",
+	"\u7B3E>Bian;",
+	"\u7B3F>Lu{o4};",
+	"\u7B40>Gu{i4};",
+	"\u7B41>Q{u3};",
+	"\u7B42>Ch{i2};",
+	"\u7B43>Yin;",
+	"\u7B44>Ya{o4};",
+	"\u7B45>Xi{a3}n;",
+	"\u7B46>B{i3};",
+	"\u7B47>Qi{o2}ng;",
+	"\u7B48>Gua;",
+	"\u7B49>D{e3}ng;",
+	"\u7B4A>Jia{o3};",
+	"\u7B4B>Jin;",
+	"\u7B4C>Qu{a2}n;",
+	"\u7B4D>S{u3}n;",
+	"\u7B4E>R{u2};",
+	"\u7B4F>F{a2};",
+	"\u7B50>Kuang;",
+	"\u7B51>Zh{u2};",
+	"\u7B52>T{o3}ng;",
+	"\u7B53>Ji;",
+	"\u7B54>D{a2};",
+	"\u7B55>X{i2}ng;",
+	"\u7B56>C{e4};",
+	"\u7B57>Zh{o4}ng;",
+	"\u7B58>Ko{u4};",
+	"\u7B59>La{i2};",
+	"\u7B5A>B{i4};",
+	"\u7B5B>Shai;",
+	"\u7B5C>Dang;",
+	"\u7B5D>Zheng;",
+	"\u7B5E>C{e4};",
+	"\u7B5F>Fu;",
+	"\u7B60>Y{u2}n;",
+	"\u7B61>T{u2};",
+	"\u7B62>P{a2};",
+	"\u7B63>L{i4};",
+	"\u7B64>L{a2}ng;",
+	"\u7B65>J{u3};",
+	"\u7B66>Gu{a3}n;",
+	"\u7B67>Ji{a3}n;",
+	"\u7B68>H{a2}n;",
+	"\u7B69>T{o2}ng;",
+	"\u7B6A>Xi{a2};",
+	"\u7B6B>Zh{i4};",
+	"\u7B6C>Ch{e2}ng;",
+	"\u7B6D>Su{a4}n;",
+	"\u7B6E>Sh{i4};",
+	"\u7B6F>Zh{u4};",
+	"\u7B70>Zu{o2};",
+	"\u7B71>Xia{o3};",
+	"\u7B72>Shao;",
+	"\u7B73>T{i2}ng;",
+	"\u7B74>C{e4};",
+	"\u7B75>Y{a2}n;",
+	"\u7B76>Ga{o3};",
+	"\u7B77>Kua{i4};",
+	"\u7B78>Gan;",
+	"\u7B79>Cho{u2};",
+	"\u7B7B>G{a4}ng;",
+	"\u7B7C>Y{u2}n;",
+	"\u7B7E>Qian;",
+	"\u7B7F>Xia{o3};",
+	"\u7B80>Ji{a3}n;",
+	"\u7B81>P{u2};",
+	"\u7B82>La{i2};",
+	"\u7B83>Zou;",
+	"\u7B84>B{i4};",
+	"\u7B85>B{i4};",
+	"\u7B86>B{i4};",
+	"\u7B87>G{e4};",
+	"\u7B88>Ch{i2};",
+	"\u7B89>Gua{i3};",
+	"\u7B8A>Yu;",
+	"\u7B8B>Jian;",
+	"\u7B8C>Zha{o4};",
+	"\u7B8D>Gu;",
+	"\u7B8E>Ch{i2};",
+	"\u7B8F>Zheng;",
+	"\u7B90>Jing;",
+	"\u7B91>Sh{a4};",
+	"\u7B92>Zho{u3};",
+	"\u7B93>L{u4};",
+	"\u7B94>B{o2};",
+	"\u7B95>Ji;",
+	"\u7B96>L{i2}n;",
+	"\u7B97>Su{a4}n;",
+	"\u7B98>J{u4}n;",
+	"\u7B99>F{u2};",
+	"\u7B9A>Zh{a2};",
+	"\u7B9B>Gu;",
+	"\u7B9C>Kong;",
+	"\u7B9D>Qi{a2}n;",
+	"\u7B9E>Quan;",
+	"\u7B9F>J{u4}n;",
+	"\u7BA0>Chu{i2};",
+	"\u7BA1>Gu{a3}n;",
+	"\u7BA2>Yuan;",
+	"\u7BA3>C{e4};",
+	"\u7BA4>J{u2};",
+	"\u7BA5>B{o3};",
+	"\u7BA6>Z{e2};",
+	"\u7BA7>Qi{e4};",
+	"\u7BA8>Tu{o4};",
+	"\u7BA9>Lu{o2};",
+	"\u7BAA>Dan;",
+	"\u7BAB>Xiao;",
+	"\u7BAC>Ru{o4};",
+	"\u7BAD>Ji{a4}n;",
+	"\u7BAE>Xuan;",
+	"\u7BAF>Bian;",
+	"\u7BB0>S{u3}n;",
+	"\u7BB1>Xiang;",
+	"\u7BB2>Xi{a3}n;",
+	"\u7BB3>P{i2}ng;",
+	"\u7BB4>Zhen;",
+	"\u7BB5>Sh{e3}ng;",
+	"\u7BB6>H{u2};",
+	"\u7BB7>Shi;",
+	"\u7BB8>Zh{u4};",
+	"\u7BB9>Yue;",
+	"\u7BBA>Ch{u3}n;",
+	"\u7BBB>L{uu4};",
+	"\u7BBC>Wu;",
+	"\u7BBD>D{o3}ng;",
+	"\u7BBE>Xiao;",
+	"\u7BBF>J{i2};",
+	"\u7BC0>Ji{e2};",
+	"\u7BC1>Hu{a2}ng;",
+	"\u7BC2>Xing;",
+	"\u7BC3>Me{i2};",
+	"\u7BC4>F{a4}n;",
+	"\u7BC5>Chu{i2};",
+	"\u7BC6>Zhu{a4}n;",
+	"\u7BC7>Pian;",
+	"\u7BC8>Feng;",
+	"\u7BC9>Zh{u2};",
+	"\u7BCA>H{o2}ng;",
+	"\u7BCB>Qi{e4};",
+	"\u7BCC>Ho{u2};",
+	"\u7BCD>Qiu;",
+	"\u7BCE>Mia{o3};",
+	"\u7BCF>Qi{a4}n;",
+	"\u7BD1>Ku{i4};",
+	"\u7BD3>Lo{u3};",
+	"\u7BD4>Y{u2}n;",
+	"\u7BD5>H{e2};",
+	"\u7BD6>T{a2}ng;",
+	"\u7BD7>Yu{e4};",
+	"\u7BD8>Chou;",
+	"\u7BD9>Gao;",
+	"\u7BDA>Fe{i3};",
+	"\u7BDB>Ru{o4};",
+	"\u7BDC>Zheng;",
+	"\u7BDD>Gou;",
+	"\u7BDE>Ni{e4};",
+	"\u7BDF>Qi{a4}n;",
+	"\u7BE0>Xia{o3};",
+	"\u7BE1>Cu{a4}n;",
+	"\u7BE2>Gong;",
+	"\u7BE3>P{a2}ng;",
+	"\u7BE4>D{u3};",
+	"\u7BE5>L{i4};",
+	"\u7BE6>B{i4};",
+	"\u7BE7>Zhu{o2};",
+	"\u7BE8>Ch{u2};",
+	"\u7BE9>Shai;",
+	"\u7BEA>Ch{i2};",
+	"\u7BEB>Zh{u2};",
+	"\u7BEC>Qiang;",
+	"\u7BED>L{o2}ng;",
+	"\u7BEE>L{a2}n;",
+	"\u7BEF>Jian;",
+	"\u7BF0>B{u4};",
+	"\u7BF1>L{i2};",
+	"\u7BF2>Hu{i4};",
+	"\u7BF3>B{i4};",
+	"\u7BF4>D{i2};",
+	"\u7BF5>Cong;",
+	"\u7BF6>Yan;",
+	"\u7BF7>P{e2}ng;",
+	"\u7BF8>Sen;",
+	"\u7BF9>Zhu{a4}n;",
+	"\u7BFA>Pa{i2};",
+	"\u7BFB>Pia{o4};",
+	"\u7BFC>Dou;",
+	"\u7BFD>Y{u3};",
+	"\u7BFE>Mi{e4};",
+	"\u7BFF>Zhuan;",
+	"\u7C00>Z{e2};",
+	"\u7C01>X{i3};",
+	"\u7C02>Gu{o2};",
+	"\u7C03>Y{i2};",
+	"\u7C04>H{u4};",
+	"\u7C05>Ch{a3}n;",
+	"\u7C06>Ko{u4};",
+	"\u7C07>C{u4};",
+	"\u7C08>P{i2}ng;",
+	"\u7C09>Cho{u4};",
+	"\u7C0A>Ji;",
+	"\u7C0B>Gu{i3};",
+	"\u7C0C>S{u4};",
+	"\u7C0D>Lo{u3};",
+	"\u7C0E>Zh{a4};",
+	"\u7C0F>L{u4};",
+	"\u7C10>Ni{a3}n;",
+	"\u7C11>Suo;",
+	"\u7C12>Cu{a4}n;",
+	"\u7C14>Suo;",
+	"\u7C15>L{e4};",
+	"\u7C16>Du{a4}n;",
+	"\u7C18>Xiao;",
+	"\u7C19>B{o2};",
+	"\u7C1A>M{i4};",
+	"\u7C1B>Si;",
+	"\u7C1C>D{a4}ng;",
+	"\u7C1D>Lia{o2};",
+	"\u7C1E>Dan;",
+	"\u7C1F>Di{a4}n;",
+	"\u7C20>F{u3};",
+	"\u7C21>Ji{a3}n;",
+	"\u7C22>M{i3}n;",
+	"\u7C23>Ku{i4};",
+	"\u7C24>Da{i4};",
+	"\u7C25>Qia{o2};",
+	"\u7C26>Deng;",
+	"\u7C27>Hu{a2}ng;",
+	"\u7C28>S{u3}n;",
+	"\u7C29>La{o2};",
+	"\u7C2A>Zan;",
+	"\u7C2B>Xiao;",
+	"\u7C2C>D{u4};",
+	"\u7C2D>Sh{i4};",
+	"\u7C2E>Zan;",
+	"\u7C30>Pa{i2};",
+	"\u7C32>Pa{i2};",
+	"\u7C33>G{a4}n;",
+	"\u7C34>J{u4};",
+	"\u7C35>D{u4};",
+	"\u7C36>L{u4};",
+	"\u7C37>Y{a2}n;",
+	"\u7C38>B{o4};",
+	"\u7C39>Dang;",
+	"\u7C3A>Sa{i4};",
+	"\u7C3B>Ke;",
+	"\u7C3C>L{o2}ng;",
+	"\u7C3D>Qian;",
+	"\u7C3E>Li{a2}n;",
+	"\u7C3F>B{o2};",
+	"\u7C40>Zho{u4};",
+	"\u7C41>La{i4};",
+	"\u7C43>L{a2}n;",
+	"\u7C44>Ku{i4};",
+	"\u7C45>Y{u2};",
+	"\u7C46>Yu{e4};",
+	"\u7C47>Ha{o2};",
+	"\u7C48>Zhen;",
+	"\u7C49>Ta{i2};",
+	"\u7C4A>T{i4};",
+	"\u7C4B>M{i2};",
+	"\u7C4C>Cho{u2};",
+	"\u7C4D>J{i2};",
+	"\u7C50>T{e2}ng;",
+	"\u7C51>Zhu{a4}n;",
+	"\u7C52>Zho{u4};",
+	"\u7C53>Fan;",
+	"\u7C54>So{u3};",
+	"\u7C55>Zho{u4};",
+	"\u7C57>Zhu{o2};",
+	"\u7C58>T{e2}ng;",
+	"\u7C59>L{u4};",
+	"\u7C5A>L{u2};",
+	"\u7C5B>Jian;",
+	"\u7C5C>Tu{o4};",
+	"\u7C5D>Y{i2}ng;",
+	"\u7C5E>Y{u4};",
+	"\u7C5F>La{i4};",
+	"\u7C60>L{o2}ng;",
+	"\u7C62>Li{a2}n;",
+	"\u7C63>L{a2}n;",
+	"\u7C64>Qian;",
+	"\u7C65>Yu{e4};",
+	"\u7C66>Zhong;",
+	"\u7C67>Q{u2};",
+	"\u7C68>Li{a2}n;",
+	"\u7C69>Bian;",
+	"\u7C6A>Du{a4}n;",
+	"\u7C6B>Zu{a3}n;",
+	"\u7C6C>L{i2};",
+	"\u7C6D>Si;",
+	"\u7C6E>Lu{o2};",
+	"\u7C6F>Y{i2}ng;",
+	"\u7C70>Yu{e4};",
+	"\u7C71>Zhu{o2};",
+	"\u7C72>Xu;",
+	"\u7C73>M{i3};",
+	"\u7C74>D{i2};",
+	"\u7C75>F{a2}n;",
+	"\u7C76>Shen;",
+	"\u7C77>Zh{e2};",
+	"\u7C78>Shen;",
+	"\u7C79>N{uu3};",
+	"\u7C7A>Xi{e2};",
+	"\u7C7B>Le{i4};",
+	"\u7C7C>Xian;",
+	"\u7C7D>Z{i3};",
+	"\u7C7E>N{i2};",
+	"\u7C7F>C{u4}n;",
+	"\u7C81>Qian;",
+	"\u7C83>B{i3};",
+	"\u7C84>B{a3}n;",
+	"\u7C85>W{u4};",
+	"\u7C86>Sha;",
+	"\u7C87>Kang;",
+	"\u7C88>Ro{u3};",
+	"\u7C89>F{e3}n;",
+	"\u7C8A>B{i4};",
+	"\u7C8B>Cu{i4};",
+	"\u7C8D>L{i2};",
+	"\u7C8E>Ch{i3};",
+	"\u7C91>Ba;",
+	"\u7C92>L{i4};",
+	"\u7C93>Gan;",
+	"\u7C94>J{u4};",
+	"\u7C95>P{o4};",
+	"\u7C96>M{o4};",
+	"\u7C97>Cu;",
+	"\u7C98>Ni{a2}n;",
+	"\u7C99>Zho{u4};",
+	"\u7C9A>L{i2};",
+	"\u7C9B>S{u4};",
+	"\u7C9C>Tia{o4};",
+	"\u7C9D>L{i4};",
+	"\u7C9E>Qi;",
+	"\u7C9F>S{u4};",
+	"\u7CA0>H{o2}ng;",
+	"\u7CA1>T{o2}ng;",
+	"\u7CA2>Zi;",
+	"\u7CA3>C{e4};",
+	"\u7CA4>Yu{e4};",
+	"\u7CA5>Zhou;",
+	"\u7CA6>L{i4}n;",
+	"\u7CA7>Zhuang;",
+	"\u7CA8>Ba{i3};",
+	"\u7CAA>F{e4}n;",
+	"\u7CAE>Li{a2}ng;",
+	"\u7CAF>Xi{a4}n;",
+	"\u7CB0>F{u2};",
+	"\u7CB1>Li{a2}ng;",
+	"\u7CB2>C{a4}n;",
+	"\u7CB3>Geng;",
+	"\u7CB4>L{i3};",
+	"\u7CB5>Yu{e4};",
+	"\u7CB6>L{u4};",
+	"\u7CB7>J{u2};",
+	"\u7CB8>Q{i2};",
+	"\u7CB9>Cu{i4};",
+	"\u7CBA>Ba{i4};",
+	"\u7CBB>Zhang;",
+	"\u7CBC>L{i2}n;",
+	"\u7CBD>Z{o4}ng;",
+	"\u7CBE>Jing;",
+	"\u7CBF>Gu{o3};",
+	"\u7CC1>San;",
+	"\u7CC2>S{a3}n;",
+	"\u7CC3>T{a2}ng;",
+	"\u7CC4>Bian;",
+	"\u7CC5>Ro{u3};",
+	"\u7CC6>Mi{a4}n;",
+	"\u7CC7>Ho{u2};",
+	"\u7CC8>X{u3};",
+	"\u7CC9>Z{o4}ng;",
+	"\u7CCA>H{u2};",
+	"\u7CCB>Ji{a4}n;",
+	"\u7CCC>Z{a2}n;",
+	"\u7CCD>C{i2};",
+	"\u7CCE>L{i2};",
+	"\u7CCF>Xi{e4};",
+	"\u7CD0>Fu;",
+	"\u7CD1>N{i4};",
+	"\u7CD2>Be{i4};",
+	"\u7CD3>G{u3};",
+	"\u7CD4>Xi{u3};",
+	"\u7CD5>Gao;",
+	"\u7CD6>T{a2}ng;",
+	"\u7CD7>Qi{u3};",
+	"\u7CD9>Cao;",
+	"\u7CDA>Zhuang;",
+	"\u7CDB>T{a2}ng;",
+	"\u7CDC>M{i2};",
+	"\u7CDD>San;",
+	"\u7CDE>F{e4}n;",
+	"\u7CDF>Zao;",
+	"\u7CE0>Kang;",
+	"\u7CE1>Ji{a4}ng;",
+	"\u7CE2>M{o2};",
+	"\u7CE3>S{a3}n;",
+	"\u7CE4>S{a3}n;",
+	"\u7CE5>Nu{o4};",
+	"\u7CE6>Xi;",
+	"\u7CE7>Li{a2}ng;",
+	"\u7CE8>Ji{a4}ng;",
+	"\u7CE9>Kua{i4};",
+	"\u7CEA>B{o2};",
+	"\u7CEB>Hu{a2}n;",
+	"\u7CED>Z{o4}ng;",
+	"\u7CEE>Xi{a4}n;",
+	"\u7CEF>Nu{o4};",
+	"\u7CF0>Tu{a2}n;",
+	"\u7CF1>Ni{e4};",
+	"\u7CF2>L{i4};",
+	"\u7CF3>Zu{o4};",
+	"\u7CF4>D{i2};",
+	"\u7CF5>Ni{e4};",
+	"\u7CF6>Tia{o4};",
+	"\u7CF7>L{a2}n;",
+	"\u7CF8>M{i4};",
+	"\u7CF9>Jiao3si1p{a2}ng;",
+	"\u7CFA>Jiu;",
+	"\u7CFB>X{i4};",
+	"\u7CFC>Gong;",
+	"\u7CFD>Zh{e3}ng;",
+	"\u7CFE>Jiu1ji{u3};",
+	"\u7CFF>Yo{u4};",
+	"\u7D00>J{i4};",
+	"\u7D01>Ch{a4};",
+	"\u7D02>Zho{u4};",
+	"\u7D03>X{u2}n;",
+	"\u7D04>Yue;",
+	"\u7D05>H{o2}ng;",
+	"\u7D06>Yu;",
+	"\u7D07>H{e2};",
+	"\u7D08>W{a2}n;",
+	"\u7D09>R{e4}n;",
+	"\u7D0A>W{e4}n;",
+	"\u7D0B>W{e2}n;",
+	"\u7D0C>Qi{u2};",
+	"\u7D0D>N{a4};",
+	"\u7D0E>Zi;",
+	"\u7D0F>To{u3};",
+	"\u7D10>Ni{u3};",
+	"\u7D11>Fo{u2};",
+	"\u7D12>Ji{e4};",
+	"\u7D13>Shu;",
+	"\u7D14>Ch{u2}n;",
+	"\u7D15>P{i2};",
+	"\u7D16>Y{i3}n;",
+	"\u7D17>Sha;",
+	"\u7D18>H{o2}ng;",
+	"\u7D19>Zh{i3};",
+	"\u7D1A>J{i2};",
+	"\u7D1B>Fen;",
+	"\u7D1C>Y{u2}n;",
+	"\u7D1D>R{e2}n;",
+	"\u7D1E>D{a3}n;",
+	"\u7D1F>Jin;",
+	"\u7D20>S{u4};",
+	"\u7D21>F{a3}ng;",
+	"\u7D22>Su{o3};",
+	"\u7D23>Cu{i4};",
+	"\u7D24>Ji{u3};",
+	"\u7D25>Zh{a2};",
+	"\u7D27>J{i3}n;",
+	"\u7D28>F{u4};",
+	"\u7D29>Zh{i4};",
+	"\u7D2A>C{i3};",
+	"\u7D2B>Z{i3};",
+	"\u7D2C>Cho{u2};",
+	"\u7D2D>H{o2}ng;",
+	"\u7D2E>Zh{a2};",
+	"\u7D2F>Le{i4};",
+	"\u7D30>X{i4};",
+	"\u7D31>F{u2};",
+	"\u7D32>Xi{e4};",
+	"\u7D33>Shen;",
+	"\u7D34>Be{i4};",
+	"\u7D35>Zh{u4};",
+	"\u7D36>Q{u3};",
+	"\u7D37>L{i2}ng;",
+	"\u7D38>Zh{u4};",
+	"\u7D39>Sha{o4};",
+	"\u7D3A>G{a4}n;",
+	"\u7D3B>Yang;",
+	"\u7D3C>F{u2};",
+	"\u7D3D>Tu{o2};",
+	"\u7D3E>Zh{e3}n;",
+	"\u7D3F>Da{i4};",
+	"\u7D40>Zhu{o2};",
+	"\u7D41>Shi;",
+	"\u7D42>Zhong;",
+	"\u7D43>Xi{a2}n;",
+	"\u7D44>Z{u3};",
+	"\u7D45>Ji{o3}ng;",
+	"\u7D46>B{a4}n;",
+	"\u7D47>J{u4};",
+	"\u7D48>M{o4};",
+	"\u7D49>Sh{u4};",
+	"\u7D4A>Zu{i4};",
+	"\u7D4C>Jing;",
+	"\u7D4D>R{e2}n;",
+	"\u7D4E>H{e4}ng;",
+	"\u7D4F>Xi{e4};",
+	"\u7D50>Ji{e2};",
+	"\u7D51>Zhu;",
+	"\u7D52>Cho{u2};",
+	"\u7D53>Gu{a4};",
+	"\u7D54>Ba{i3};",
+	"\u7D55>Ju{e2};",
+	"\u7D56>Ku{a4}ng;",
+	"\u7D57>H{u2};",
+	"\u7D58>C{i4};",
+	"\u7D59>Geng;",
+	"\u7D5A>Geng;",
+	"\u7D5B>Tao;",
+	"\u7D5C>Xi{e2};",
+	"\u7D5D>K{u4};",
+	"\u7D5E>Jia{o3};",
+	"\u7D5F>Quan;",
+	"\u7D60>Ga{i3};",
+	"\u7D61>Lu{o4};",
+	"\u7D62>Xu{a4}n;",
+	"\u7D63>Bing;",
+	"\u7D64>Xi{a4}n;",
+	"\u7D65>F{u2};",
+	"\u7D66>Ge{i3};",
+	"\u7D67>T{o2}ng;",
+	"\u7D68>R{o2}ng;",
+	"\u7D69>Tia{o4};",
+	"\u7D6A>Yin;",
+	"\u7D6B>Le{i3};",
+	"\u7D6C>Xi{e4};",
+	"\u7D6D>Qu{a4}n;",
+	"\u7D6E>X{u4};",
+	"\u7D6F>L{uu4}n;",
+	"\u7D70>Di{e2};",
+	"\u7D71>T{o3}ng;",
+	"\u7D72>Si;",
+	"\u7D73>Ji{a4}ng;",
+	"\u7D74>Xi{a2}ng;",
+	"\u7D75>Hu{i4};",
+	"\u7D76>Ju{e2};",
+	"\u7D77>Zh{i2};",
+	"\u7D78>Ji{a3}n;",
+	"\u7D79>Ju{a4}n;",
+	"\u7D7A>Chi;",
+	"\u7D7B>Mi{a3}n;",
+	"\u7D7C>Zh{e3}n;",
+	"\u7D7D>L{uu3};",
+	"\u7D7E>Ch{e2}ng;",
+	"\u7D7F>Qi{u2};",
+	"\u7D80>Shu;",
+	"\u7D81>B{a3}ng;",
+	"\u7D82>T{o3}ng;",
+	"\u7D83>Xiao;",
+	"\u7D84>W{a4}n;",
+	"\u7D85>Qin;",
+	"\u7D86>G{e3}ng;",
+	"\u7D87>Xi{u3};",
+	"\u7D88>T{i2};",
+	"\u7D89>Xi{u4};",
+	"\u7D8A>Xi{e2};",
+	"\u7D8B>H{o2}ng;",
+	"\u7D8C>X{i4};",
+	"\u7D8D>F{u2};",
+	"\u7D8E>Ting;",
+	"\u7D8F>Sui;",
+	"\u7D90>Du{i4};",
+	"\u7D91>K{u3}n;",
+	"\u7D92>Fu;",
+	"\u7D93>Jing;",
+	"\u7D94>H{u4};",
+	"\u7D95>Zhi;",
+	"\u7D96>Y{a2}n;",
+	"\u7D97>Ji{o3}ng;",
+	"\u7D98>F{e2}ng;",
+	"\u7D99>J{i4};",
+	"\u7D9C>Z{o4}ng;",
+	"\u7D9D>L{i2}n;",
+	"\u7D9E>Du{o3};",
+	"\u7D9F>L{i4};",
+	"\u7DA0>L{uu4};",
+	"\u7DA1>Li{a2}ng;",
+	"\u7DA2>Cho{u2};",
+	"\u7DA3>Qu{a3}n;",
+	"\u7DA4>Sha{o4};",
+	"\u7DA5>Q{i4};",
+	"\u7DA6>Q{i2};",
+	"\u7DA7>Zh{u3}n;",
+	"\u7DA8>Q{i2};",
+	"\u7DA9>W{a3}n;",
+	"\u7DAA>Qi{a4}n;",
+	"\u7DAB>Xi{a4}n;",
+	"\u7DAC>Sho{u4};",
+	"\u7DAD>We{i2};",
+	"\u7DAE>Q{i3};",
+	"\u7DAF>Ta{o2};",
+	"\u7DB0>W{a3}n;",
+	"\u7DB1>Gang;",
+	"\u7DB2>W{a3}ng;",
+	"\u7DB3>Beng;",
+	"\u7DB4>Zhu{i4};",
+	"\u7DB5>Ca{i3};",
+	"\u7DB6>Gu{o3};",
+	"\u7DB7>Cu{i4};",
+	"\u7DB8>L{u2}n;",
+	"\u7DB9>Li{u3};",
+	"\u7DBA>Q{i3};",
+	"\u7DBB>Zh{a4}n;",
+	"\u7DBC>Bei;",
+	"\u7DBD>Chu{o4};",
+	"\u7DBE>L{i2}ng;",
+	"\u7DBF>Mi{a2}n;",
+	"\u7DC0>Qi;",
+	"\u7DC1>Qi{e4};",
+	"\u7DC2>Tan;",
+	"\u7DC3>Zong;",
+	"\u7DC4>G{u3}n;",
+	"\u7DC5>Zou;",
+	"\u7DC6>Y{i4};",
+	"\u7DC7>Zi;",
+	"\u7DC8>X{i4}ng;",
+	"\u7DC9>Li{a3}ng;",
+	"\u7DCA>J{i3}n;",
+	"\u7DCB>Fei;",
+	"\u7DCC>Ru{i2};",
+	"\u7DCD>M{i2}n;",
+	"\u7DCE>Y{u4};",
+	"\u7DCF>Z{o3}ng;",
+	"\u7DD0>F{a2}n;",
+	"\u7DD1>L{uu4};",
+	"\u7DD2>X{u4};",
+	"\u7DD3>Yingl;",
+	"\u7DD4>Zh{a4}ng;",
+	"\u7DD6>X{u4};",
+	"\u7DD7>Xiang;",
+	"\u7DD8>Jian;",
+	"\u7DD9>K{e4};",
+	"\u7DDA>Xi{a4}n;",
+	"\u7DDB>Ru{a3}n;",
+	"\u7DDC>Mi{a2}n;",
+	"\u7DDD>Q{i4};",
+	"\u7DDE>Du{a4}n;",
+	"\u7DDF>Zh{o4}ng;",
+	"\u7DE0>D{i4};",
+	"\u7DE1>M{i2}n;",
+	"\u7DE2>Mia{o2};",
+	"\u7DE3>Yu{a2}n;",
+	"\u7DE4>Xi{e4};",
+	"\u7DE5>Ba{o3};",
+	"\u7DE6>Si;",
+	"\u7DE7>Qiu;",
+	"\u7DE8>Bian;",
+	"\u7DE9>Hu{a3}n;",
+	"\u7DEA>Geng;",
+	"\u7DEB>Cong;",
+	"\u7DEC>Mi{a3}n;",
+	"\u7DED>We{i4};",
+	"\u7DEE>F{u4};",
+	"\u7DEF>We{i3};",
+	"\u7DF0>Y{u2};",
+	"\u7DF1>Gou;",
+	"\u7DF2>Mia{o3};",
+	"\u7DF3>Xi{e2};",
+	"\u7DF4>Li{a4}n;",
+	"\u7DF5>Zong;",
+	"\u7DF6>Bi{a4}n;",
+	"\u7DF7>Y{u4}n;",
+	"\u7DF8>Yin;",
+	"\u7DF9>T{i2};",
+	"\u7DFA>Gua;",
+	"\u7DFB>Zh{i4};",
+	"\u7DFC>Yun;",
+	"\u7DFD>Cheng;",
+	"\u7DFE>Ch{a2}n;",
+	"\u7DFF>Da{i4};",
+	"\u7E00>Xi{a2};",
+	"\u7E01>Yu{a2}n;",
+	"\u7E02>Z{o3}ng;",
+	"\u7E03>Xu;",
+	"\u7E06>Geng;",
+	"\u7E08>Y{i2}ng;",
+	"\u7E09>J{i4}n;",
+	"\u7E0A>Y{i4};",
+	"\u7E0B>Zhu{i4};",
+	"\u7E0C>N{i4};",
+	"\u7E0D>Bang;",
+	"\u7E0E>G{u3};",
+	"\u7E0F>P{a2}n;",
+	"\u7E10>Zho{u4};",
+	"\u7E11>Jian;",
+	"\u7E12>Cu{o3};",
+	"\u7E13>Qu{a3}n;",
+	"\u7E14>Shu{a3}ng;",
+	"\u7E15>Yun;",
+	"\u7E16>Xi{a2};",
+	"\u7E17>Shuai;",
+	"\u7E18>Xi;",
+	"\u7E19>R{o2}ng;",
+	"\u7E1A>Tao;",
+	"\u7E1B>F{u2};",
+	"\u7E1C>Y{u2}n;",
+	"\u7E1D>Zhen;",
+	"\u7E1E>Ga{o3};",
+	"\u7E1F>R{u4};",
+	"\u7E20>H{u2};",
+	"\u7E21>Za{i3};",
+	"\u7E22>T{e2}ng;",
+	"\u7E23>Xi{a4}n;",
+	"\u7E24>S{u4};",
+	"\u7E25>Zh{e3}n;",
+	"\u7E26>Z{o4}ng;",
+	"\u7E27>Tao;",
+	"\u7E29>Ca{i4};",
+	"\u7E2A>B{i4};",
+	"\u7E2B>F{e2}ng;",
+	"\u7E2C>C{u4};",
+	"\u7E2D>L{i2};",
+	"\u7E2E>Suo;",
+	"\u7E2F>Y{i3}n;",
+	"\u7E30>X{i3};",
+	"\u7E31>Z{o4}ng;",
+	"\u7E32>Le{i2};",
+	"\u7E33>Zhu{a4}n;",
+	"\u7E34>Qian;",
+	"\u7E35>M{a4}n;",
+	"\u7E36>Zh{i2};",
+	"\u7E37>L{uu3};",
+	"\u7E38>M{o4};",
+	"\u7E39>Pia{o3};",
+	"\u7E3A>Li{a2}n;",
+	"\u7E3B>M{i2};",
+	"\u7E3C>Xu{a4}n;",
+	"\u7E3D>Z{o3}ng;",
+	"\u7E3E>Ji;",
+	"\u7E3F>Shan;",
+	"\u7E40>Su{i4};",
+	"\u7E41>F{a2}n;",
+	"\u7E42>Shua{i4};",
+	"\u7E43>Beng;",
+	"\u7E44>Yi;",
+	"\u7E45>Sao;",
+	"\u7E46>Mo{u2};",
+	"\u7E47>Zho{u4};",
+	"\u7E48>Qi{a3}ng;",
+	"\u7E49>H{u2}n;",
+	"\u7E4B>X{i4};",
+	"\u7E4D>Xi{u4};",
+	"\u7E4E>R{a2}n;",
+	"\u7E4F>Xu{a4}n;",
+	"\u7E50>Hu{i4};",
+	"\u7E51>Qiao;",
+	"\u7E52>Zeng;",
+	"\u7E53>Zu{o3};",
+	"\u7E54>Zhi;",
+	"\u7E55>Sh{a4}n;",
+	"\u7E56>S{a3}n;",
+	"\u7E57>L{i2}n;",
+	"\u7E58>Y{u4};",
+	"\u7E59>Fan;",
+	"\u7E5A>Lia{o2};",
+	"\u7E5B>Chu{o4};",
+	"\u7E5C>Zun;",
+	"\u7E5D>Ji{a4}n;",
+	"\u7E5E>Ra{o4};",
+	"\u7E5F>Ch{a3}n;",
+	"\u7E60>Ru{i3};",
+	"\u7E61>Xi{u4};",
+	"\u7E62>Hu{i4};",
+	"\u7E63>Hu{a4};",
+	"\u7E64>Zu{a3}n;",
+	"\u7E65>Xi;",
+	"\u7E66>Qi{a3}ng;",
+	"\u7E68>D{a2};",
+	"\u7E69>Sh{e2}ng;",
+	"\u7E6A>Hu{i4};",
+	"\u7E6B>X{i4};",
+	"\u7E6C>S{e4};",
+	"\u7E6D>Ji{a3}n;",
+	"\u7E6E>Jiang;",
+	"\u7E6F>Hu{a2}n;",
+	"\u7E70>Za{o3};",
+	"\u7E71>Cong;",
+	"\u7E72>Ji{e4};",
+	"\u7E73>Jia{o3};",
+	"\u7E74>B{o4};",
+	"\u7E75>Ch{a2}n;",
+	"\u7E76>Y{i4};",
+	"\u7E77>Na{o2};",
+	"\u7E78>Su{i4};",
+	"\u7E79>Y{i4};",
+	"\u7E7A>Sha{i3};",
+	"\u7E7B>Xu;",
+	"\u7E7C>J{i4};",
+	"\u7E7D>Bin;",
+	"\u7E7E>Qi{a3}n;",
+	"\u7E7F>L{a2}n;",
+	"\u7E80>P{u2};",
+	"\u7E81>Xun;",
+	"\u7E82>Zu{a3}n;",
+	"\u7E83>Q{i2};",
+	"\u7E84>P{e2}ng;",
+	"\u7E85>L{i4};",
+	"\u7E86>M{o4};",
+	"\u7E87>Le{i4};",
+	"\u7E88>Xi{e2};",
+	"\u7E89>Zu{a3}n;",
+	"\u7E8A>Ku{a4}ng;",
+	"\u7E8B>You;",
+	"\u7E8C>X{u4};",
+	"\u7E8D>Le{i2};",
+	"\u7E8E>Xian;",
+	"\u7E8F>Ch{a2}n;",
+	"\u7E91>L{u2};",
+	"\u7E92>Ch{a2}n;",
+	"\u7E93>Ying;",
+	"\u7E94>Ca{i2};",
+	"\u7E95>Xiang;",
+	"\u7E96>Xian;",
+	"\u7E97>Zui;",
+	"\u7E98>Zu{a3}n;",
+	"\u7E99>Lu{o4};",
+	"\u7E9A>X{i3};",
+	"\u7E9B>Da{o4};",
+	"\u7E9C>L{a4}n;",
+	"\u7E9D>Le{i2};",
+	"\u7E9E>Li{a4}n;",
+	"\u7E9F>Si;",
+	"\u7EA0>Jiu;",
+	"\u7EA1>Yu;",
+	"\u7EA2>H{o2}ng;",
+	"\u7EA3>Zho{u4};",
+	"\u7EA4>Xian;",
+	"\u7EA5>H{e2};",
+	"\u7EA6>Yue;",
+	"\u7EA7>J{i2};",
+	"\u7EA8>W{a2}n;",
+	"\u7EA9>Ku{a4}ng;",
+	"\u7EAA>J{i4};",
+	"\u7EAB>R{e4}n;",
+	"\u7EAC>We{i3};",
+	"\u7EAD>Y{u2}n;",
+	"\u7EAE>H{o2}ng;",
+	"\u7EAF>Ch{u2}n;",
+	"\u7EB0>P{i2};",
+	"\u7EB1>Sha;",
+	"\u7EB2>Gang;",
+	"\u7EB3>N{a4};",
+	"\u7EB4>R{e2}n;",
+	"\u7EB5>Z{o4}ng;",
+	"\u7EB6>L{u2}n;",
+	"\u7EB7>Fen;",
+	"\u7EB8>Zh{i3};",
+	"\u7EB9>W{e2}n;",
+	"\u7EBA>F{a3}ng;",
+	"\u7EBB>Zh{u4};",
+	"\u7EBC>Y{i3}n;",
+	"\u7EBD>Ni{u3};",
+	"\u7EBE>Shu;",
+	"\u7EBF>Xi{a4}n;",
+	"\u7EC0>G{a4}n;",
+	"\u7EC1>Xi{e4};",
+	"\u7EC2>F{u2};",
+	"\u7EC3>Li{a4}n;",
+	"\u7EC4>Z{u3};",
+	"\u7EC5>Shen;",
+	"\u7EC6>X{i4};",
+	"\u7EC7>Zhi;",
+	"\u7EC8>Zhong;",
+	"\u7EC9>Zho{u4};",
+	"\u7ECA>B{a4}n;",
+	"\u7ECB>F{u2};",
+	"\u7ECC>Zhu{o2};",
+	"\u7ECD>Sha{o4};",
+	"\u7ECE>Y{i4};",
+	"\u7ECF>Jing;",
+	"\u7ED0>Da{i4};",
+	"\u7ED1>B{a3}ng;",
+	"\u7ED2>R{o2}ng;",
+	"\u7ED3>Ji{e2};",
+	"\u7ED4>K{u4};",
+	"\u7ED5>Ra{o4};",
+	"\u7ED6>Di{e2};",
+	"\u7ED7>H{e4}ng;",
+	"\u7ED8>Hu{i4};",
+	"\u7ED9>Ge{i3};",
+	"\u7EDA>Xu{a4}n;",
+	"\u7EDB>Ji{a4}ng;",
+	"\u7EDC>Lu{o4};",
+	"\u7EDD>Ju{e2};",
+	"\u7EDE>Jia{o3};",
+	"\u7EDF>T{o3}ng;",
+	"\u7EE0>G{e3}ng;",
+	"\u7EE1>Xiao;",
+	"\u7EE2>Ju{a4}n;",
+	"\u7EE3>Xi{u4};",
+	"\u7EE4>X{i4};",
+	"\u7EE5>Sui;",
+	"\u7EE6>Tao;",
+	"\u7EE7>J{i4};",
+	"\u7EE8>T{i2};",
+	"\u7EE9>Ji;",
+	"\u7EEA>X{u4};",
+	"\u7EEB>L{i2}ng;",
+	"\u7EED>X{u4};",
+	"\u7EEE>Q{i3};",
+	"\u7EEF>Fei;",
+	"\u7EF0>Chu{o4};",
+	"\u7EF1>Zh{a3}ng;",
+	"\u7EF2>G{u3}n;",
+	"\u7EF3>Sh{e2}ng;",
+	"\u7EF4>We{i2};",
+	"\u7EF5>Mi{a2}n;",
+	"\u7EF6>Sho{u4};",
+	"\u7EF7>Beng;",
+	"\u7EF8>Cho{u2};",
+	"\u7EF9>Ta{o2};",
+	"\u7EFA>Li{u3};",
+	"\u7EFB>Qu{a3}n;",
+	"\u7EFC>Z{o4}ng;",
+	"\u7EFD>Zh{a4}n;",
+	"\u7EFE>W{a3}n;",
+	"\u7EFF>L{uu4};",
+	"\u7F00>Zhu{i4};",
+	"\u7F01>Zi;",
+	"\u7F02>K{e4};",
+	"\u7F03>Xiang;",
+	"\u7F04>Jian;",
+	"\u7F05>Mi{a3}n;",
+	"\u7F06>L{a4}n;",
+	"\u7F07>T{i2};",
+	"\u7F08>Mia{o3};",
+	"\u7F09>Q{i4};",
+	"\u7F0A>Yun;",
+	"\u7F0B>Hu{i4};",
+	"\u7F0C>Si;",
+	"\u7F0D>Du{o3};",
+	"\u7F0E>Du{a4}n;",
+	"\u7F0F>Bi{a4}n;",
+	"\u7F10>Xi{a4}n;",
+	"\u7F11>Gou;",
+	"\u7F12>Zhu{i4};",
+	"\u7F13>Hu{a3}n;",
+	"\u7F14>D{i4};",
+	"\u7F15>L{uu3};",
+	"\u7F16>Bian;",
+	"\u7F17>M{i2}n;",
+	"\u7F18>Yu{a2}n;",
+	"\u7F19>J{i4}n;",
+	"\u7F1A>F{u2};",
+	"\u7F1B>R{u4};",
+	"\u7F1C>Zhen;",
+	"\u7F1D>F{e2}ng;",
+	"\u7F1E>Shuai;",
+	"\u7F1F>Ga{o3};",
+	"\u7F20>Ch{a2}n;",
+	"\u7F21>L{i2};",
+	"\u7F22>Y{i4};",
+	"\u7F23>Jian;",
+	"\u7F24>Bin;",
+	"\u7F25>Pia{o3};",
+	"\u7F26>M{a4}n;",
+	"\u7F27>Le{i2};",
+	"\u7F28>Ying;",
+	"\u7F29>Suo;",
+	"\u7F2A>Mo{u2};",
+	"\u7F2B>Sao;",
+	"\u7F2C>Xi{e2};",
+	"\u7F2D>Lia{o2};",
+	"\u7F2E>Sh{a4}n;",
+	"\u7F2F>Zeng;",
+	"\u7F30>Jiang;",
+	"\u7F31>Qi{a3}n;",
+	"\u7F32>Za{o3};",
+	"\u7F33>Hu{a2}n;",
+	"\u7F34>Jia{o3};",
+	"\u7F35>Zu{a3}n;",
+	"\u7F36>Fo{u3};",
+	"\u7F37>Xi{e4};",
+	"\u7F38>Gang;",
+	"\u7F39>Fo{u3};",
+	"\u7F3A>Que;",
+	"\u7F3B>Fo{u3};",
+	"\u7F3D>Bo;",
+	"\u7F3E>P{i2}ng;",
+	"\u7F3F>Ho{u4};",
+	"\u7F41>Gang;",
+	"\u7F42>Ying;",
+	"\u7F43>Ying;",
+	"\u7F44>Q{i4}ng;",
+	"\u7F45>Xi{a4};",
+	"\u7F46>Gu{a4}n;",
+	"\u7F47>Zun;",
+	"\u7F48>T{a2}n;",
+	"\u7F4A>Q{i4};",
+	"\u7F4B>W{e4}ng;",
+	"\u7F4C>Ying;",
+	"\u7F4D>Le{i2};",
+	"\u7F4E>T{a2}n;",
+	"\u7F4F>L{u2};",
+	"\u7F50>Gu{a4}n;",
+	"\u7F51>W{a3}ng;",
+	"\u7F52>W{a3}ng;",
+	"\u7F53>Gang;",
+	"\u7F54>W{a3}ng;",
+	"\u7F55>H{a3}n;",
+	"\u7F57>Luo;",
+	"\u7F58>F{u2};",
+	"\u7F59>M{i2};",
+	"\u7F5A>F{a2};",
+	"\u7F5B>Gu;",
+	"\u7F5C>Zh{u3};",
+	"\u7F5D>Ju;",
+	"\u7F5E>Ma{o2};",
+	"\u7F5F>G{u3};",
+	"\u7F60>M{i2}n;",
+	"\u7F61>Gang;",
+	"\u7F62>B{a4};",
+	"\u7F63>Gu{a4};",
+	"\u7F64>T{i2};",
+	"\u7F65>Ju{a4}n;",
+	"\u7F66>Fu;",
+	"\u7F67>L{i2}n;",
+	"\u7F68>Y{a3}n;",
+	"\u7F69>Zha{o4};",
+	"\u7F6A>Zu{i4};",
+	"\u7F6B>Gu{a4};",
+	"\u7F6C>Zhu{o2};",
+	"\u7F6D>Y{u4};",
+	"\u7F6E>Zh{i4};",
+	"\u7F6F>{a3}n;",
+	"\u7F70>F{a2};",
+	"\u7F71>N{a3}n;",
+	"\u7F72>Sh{u3};",
+	"\u7F73>Si;",
+	"\u7F74>P{i2};",
+	"\u7F75>M{a4};",
+	"\u7F76>Li{u3};",
+	"\u7F77>B{a4};",
+	"\u7F78>F{a2};",
+	"\u7F79>L{i2};",
+	"\u7F7A>Chao;",
+	"\u7F7B>We{i4};",
+	"\u7F7C>B{i4};",
+	"\u7F7D>J{i4};",
+	"\u7F7E>Zeng;",
+	"\u7F7F>T{o2}ng;",
+	"\u7F80>Li{u3};",
+	"\u7F81>Ji;",
+	"\u7F82>Ju{a4}n;",
+	"\u7F83>M{i4};",
+	"\u7F84>Zha{o4};",
+	"\u7F85>Lu{o2};",
+	"\u7F86>P{i2};",
+	"\u7F87>Ji;",
+	"\u7F88>Ji;",
+	"\u7F89>Lu{a2}n;",
+	"\u7F8A>Y{a2}ng;",
+	"\u7F8B>Mie;",
+	"\u7F8C>Qiang;",
+	"\u7F8D>T{a4};",
+	"\u7F8E>Me{i3};",
+	"\u7F8F>Y{a2}ng;",
+	"\u7F90>Yo{u3};",
+	"\u7F91>Yo{u3};",
+	"\u7F92>F{e2}n;",
+	"\u7F93>Ba;",
+	"\u7F94>Gao;",
+	"\u7F95>Y{a4}ng;",
+	"\u7F96>G{u3};",
+	"\u7F97>Qiang;",
+	"\u7F98>Zang;",
+	"\u7F99>Gao;",
+	"\u7F9A>L{i2}ng;",
+	"\u7F9B>Y{i4};",
+	"\u7F9C>Zh{u4};",
+	"\u7F9D>Di;",
+	"\u7F9E>Xiu;",
+	"\u7F9F>Qian;",
+	"\u7FA0>Y{i2};",
+	"\u7FA1>Xi{a4}n;",
+	"\u7FA2>R{o2}ng;",
+	"\u7FA3>Q{u2}n;",
+	"\u7FA4>Q{u2}n;",
+	"\u7FA5>Qian;",
+	"\u7FA6>Hu{a2}n;",
+	"\u7FA7>Zui;",
+	"\u7FA8>Xi{a4}n;",
+	"\u7FA9>Y{i4};",
+	"\u7FAB>Qiang;",
+	"\u7FAC>Xi{a2}n;",
+	"\u7FAD>Y{u2};",
+	"\u7FAE>Geng;",
+	"\u7FAF>Ji{e2};",
+	"\u7FB0>Tang;",
+	"\u7FB1>Yu{a2}n;",
+	"\u7FB2>Xi;",
+	"\u7FB3>F{a2}n;",
+	"\u7FB4>Shan;",
+	"\u7FB5>F{e3}n;",
+	"\u7FB6>Shan;",
+	"\u7FB7>Li{a3}n;",
+	"\u7FB8>Le{i2};",
+	"\u7FB9>Geng;",
+	"\u7FBA>No{u2};",
+	"\u7FBB>Qi{a4}ng;",
+	"\u7FBC>Ch{a4}n;",
+	"\u7FBD>Y{u3};",
+	"\u7FBE>G{o4}ng;",
+	"\u7FBF>Y{i4};",
+	"\u7FC0>Ch{o2}ng;",
+	"\u7FC1>Weng;",
+	"\u7FC2>Fen;",
+	"\u7FC3>H{o2}ng;",
+	"\u7FC4>Ch{i4};",
+	"\u7FC5>Ch{i4};",
+	"\u7FC6>Cu{i4};",
+	"\u7FC7>F{u2};",
+	"\u7FC8>Xi{a2};",
+	"\u7FC9>P{e3}n;",
+	"\u7FCA>Y{i4};",
+	"\u7FCB>La;",
+	"\u7FCC>Y{i4};",
+	"\u7FCD>Pi;",
+	"\u7FCE>L{i2}ng;",
+	"\u7FCF>Li{u4};",
+	"\u7FD0>Zh{i4};",
+	"\u7FD1>Q{u2};",
+	"\u7FD2>X{i2};",
+	"\u7FD3>Xi{e2};",
+	"\u7FD4>Xi{a2}ng;",
+	"\u7FD5>X{i4};",
+	"\u7FD6>X{i4};",
+	"\u7FD7>Q{i2};",
+	"\u7FD8>Qia{o2};",
+	"\u7FD9>Hu{i4};",
+	"\u7FDA>Hui;",
+	"\u7FDB>Xiao;",
+	"\u7FDC>S{e4};",
+	"\u7FDD>H{o2}ng;",
+	"\u7FDE>Jiang;",
+	"\u7FDF>D{i2};",
+	"\u7FE0>Cu{i4};",
+	"\u7FE1>Fe{i3};",
+	"\u7FE2>Tao;",
+	"\u7FE3>Sh{a4};",
+	"\u7FE4>Ch{i4};",
+	"\u7FE5>Zh{u4};",
+	"\u7FE6>Ji{a3}n;",
+	"\u7FE7>Xuan;",
+	"\u7FE8>Sh{i4};",
+	"\u7FE9>Pian;",
+	"\u7FEA>Zong;",
+	"\u7FEB>W{a4}n;",
+	"\u7FEC>Hui;",
+	"\u7FED>Ho{u2};",
+	"\u7FEE>H{e2};",
+	"\u7FEF>H{e4};",
+	"\u7FF0>H{a4}n;",
+	"\u7FF1>A{o2};",
+	"\u7FF2>Piao;",
+	"\u7FF3>Y{i4};",
+	"\u7FF4>Li{a2}n;",
+	"\u7FF5>Q{u2};",
+	"\u7FF7>L{i2}n;",
+	"\u7FF8>P{e3}n;",
+	"\u7FF9>Qia{o2};",
+	"\u7FFA>A{o2};",
+	"\u7FFB>Fan;",
+	"\u7FFC>Y{i4};",
+	"\u7FFD>Hu{i4};",
+	"\u7FFE>Xuan;",
+	"\u7FFF>Da{o4};",
+	"\u8000>Ya{o4};",
+	"\u8001>La{o3};",
+	"\u8003>Ka{o3};",
+	"\u8004>Ma{o4};",
+	"\u8005>Zh{e3};",
+	"\u8006>Q{i2};",
+	"\u8007>Go{u3};",
+	"\u8008>Go{u3};",
+	"\u8009>Go{u3};",
+	"\u800A>Di{e4};",
+	"\u800B>Di{e4};",
+	"\u800C>{E2}r;",
+	"\u800D>Shu{a3};",
+	"\u800E>Ru{a3}n;",
+	"\u800F>{E2}r;",
+	"\u8010>Na{i4};",
+	"\u8011>Zhuan;",
+	"\u8012>Le{i3};",
+	"\u8013>Ting;",
+	"\u8014>Z{i3};",
+	"\u8015>Geng;",
+	"\u8016>Cha{o4};",
+	"\u8017>Ha{o4};",
+	"\u8018>Y{u2}n;",
+	"\u8019>P{a2};",
+	"\u801A>Pi;",
+	"\u801B>Ch{i2};",
+	"\u801C>S{i4};",
+	"\u801D>Ch{u2};",
+	"\u801E>Jia;",
+	"\u801F>J{u4};",
+	"\u8020>H{e2};",
+	"\u8021>Ch{u2};",
+	"\u8022>La{o4};",
+	"\u8023>L{u3}n;",
+	"\u8024>J{i2};",
+	"\u8025>T{a3}ng;",
+	"\u8026>O{u3};",
+	"\u8027>Lo{u2};",
+	"\u8028>No{u4};",
+	"\u8029>Gou;",
+	"\u802A>P{a3}ng;",
+	"\u802B>Z{e2};",
+	"\u802C>Lo{u2};",
+	"\u802D>Ji;",
+	"\u802E>La{o4};",
+	"\u802F>Hu{o4};",
+	"\u8030>You;",
+	"\u8031>M{o4};",
+	"\u8032>Hua{i2};",
+	"\u8033>{e3}r;",
+	"\u8034>Zh{e2};",
+	"\u8035>Ting;",
+	"\u8036>Y{e2};",
+	"\u8037>Da;",
+	"\u8038>S{o3}ng;",
+	"\u8039>Q{i2}n;",
+	"\u803A>Y{u2}n;",
+	"\u803B>Ch{i3};",
+	"\u803C>Dan;",
+	"\u803D>Dan;",
+	"\u803E>H{o2}ng;",
+	"\u803F>G{e3}ng;",
+	"\u8040>Zh{i2};",
+	"\u8042>Ni{e4};",
+	"\u8043>Dan;",
+	"\u8044>Zh{e3}n;",
+	"\u8045>Ch{e4};",
+	"\u8046>L{i2}ng;",
+	"\u8047>Zheng;",
+	"\u8048>Yo{u3};",
+	"\u8049>Wa;",
+	"\u804A>Lia{o2};",
+	"\u804B>L{o2}ng;",
+	"\u804C>Zh{i2};",
+	"\u804D>N{i2}ng;",
+	"\u804E>Tiao;",
+	"\u804F>{E2}r;",
+	"\u8050>Y{a4};",
+	"\u8051>Di{e2};",
+	"\u8052>Gua;",
+	"\u8054>Li{a2}n;",
+	"\u8055>Ha{o4};",
+	"\u8056>Sh{e4}ng;",
+	"\u8057>Li{e4};",
+	"\u8058>P{i4}n;",
+	"\u8059>Jing;",
+	"\u805A>J{u4};",
+	"\u805B>B{i4};",
+	"\u805C>D{i3};",
+	"\u805D>Gu{o2};",
+	"\u805E>W{e2}n;",
+	"\u805F>X{u4};",
+	"\u8060>P{i2}ng;",
+	"\u8061>Cong;",
+	"\u8064>T{i2}ng;",
+	"\u8065>Y{u3};",
+	"\u8066>Cong;",
+	"\u8067>Ku{i2};",
+	"\u8069>Ku{i4};",
+	"\u806A>Cong;",
+	"\u806B>Li{a2}n;",
+	"\u806C>W{e3}ng;",
+	"\u806D>Ku{i4};",
+	"\u806E>Li{a2}n;",
+	"\u806F>Li{a2}n;",
+	"\u8070>Cong;",
+	"\u8071>A{o2};",
+	"\u8072>Sheng;",
+	"\u8073>S{o3}ng;",
+	"\u8074>Ting;",
+	"\u8075>Ku{i4};",
+	"\u8076>Ni{e4};",
+	"\u8077>Zh{i2};",
+	"\u8078>Dan;",
+	"\u8079>N{i2}ng;",
+	"\u807A>Qie;",
+	"\u807B>Ji;",
+	"\u807C>Ting;",
+	"\u807D>Ting;",
+	"\u807E>L{o2}ng;",
+	"\u807F>Y{u4};",
+	"\u8080>Y{u4};",
+	"\u8081>Zha{o4};",
+	"\u8082>S{i4};",
+	"\u8083>S{u4};",
+	"\u8084>Y{i4};",
+	"\u8085>S{u4};",
+	"\u8086>S{i4};",
+	"\u8087>Zha{o4};",
+	"\u8088>Zha{o4};",
+	"\u8089>Ro{u4};",
+	"\u808A>Y{i4};",
+	"\u808B>L{e4};",
+	"\u808C>Ji;",
+	"\u808D>Qi{u2};",
+	"\u808E>K{e3}n;",
+	"\u808F>Ca{o4};",
+	"\u8090>Ge;",
+	"\u8091>D{i4};",
+	"\u8092>Hu{a2}n;",
+	"\u8093>Huang;",
+	"\u8094>Y{i3};",
+	"\u8095>R{e4}n;",
+	"\u8096>Xia{o4};",
+	"\u8097>R{u3};",
+	"\u8098>Zho{u3};",
+	"\u8099>Yuan;",
+	"\u809A>D{u4};",
+	"\u809B>Gang;",
+	"\u809C>R{o2}ng;",
+	"\u809D>Gan;",
+	"\u809E>Cha;",
+	"\u809F>W{o4};",
+	"\u80A0>Ch{a2}ng;",
+	"\u80A1>G{u3};",
+	"\u80A2>Zhi;",
+	"\u80A3>H{a2}n;",
+	"\u80A4>Fu;",
+	"\u80A5>Fe{i2};",
+	"\u80A6>F{e2}n;",
+	"\u80A7>Pei;",
+	"\u80A8>P{a4}ng;",
+	"\u80A9>Jian;",
+	"\u80AA>F{a2}ng;",
+	"\u80AB>Zhun;",
+	"\u80AC>Yo{u2};",
+	"\u80AD>N{a4};",
+	"\u80AE>H{a2}ng;",
+	"\u80AF>K{e3}n;",
+	"\u80B0>R{a2}n;",
+	"\u80B1>Gong;",
+	"\u80B2>Y{u4};",
+	"\u80B3>W{e3}n;",
+	"\u80B4>Ya{o2};",
+	"\u80B5>J{i4}n;",
+	"\u80B6>P{i2};",
+	"\u80B7>Qian;",
+	"\u80B8>X{i4};",
+	"\u80B9>Xi;",
+	"\u80BA>Fe{i4};",
+	"\u80BB>K{e3}n;",
+	"\u80BC>J{i3}ng;",
+	"\u80BD>Ta{i4};",
+	"\u80BE>Sh{e4}n;",
+	"\u80BF>Zh{o3}ng;",
+	"\u80C0>Zh{a4}ng;",
+	"\u80C1>Xi{e2};",
+	"\u80C2>Shen;",
+	"\u80C3>We{i4};",
+	"\u80C4>Zho{u4};",
+	"\u80C5>Di{e2};",
+	"\u80C6>D{a3}n;",
+	"\u80C7>Fe{i4};",
+	"\u80C8>B{a2};",
+	"\u80C9>B{o2};",
+	"\u80CA>Q{u2};",
+	"\u80CB>Ti{a2}n;",
+	"\u80CC>Be{i4};",
+	"\u80CD>Gua;",
+	"\u80CE>Tai;",
+	"\u80CF>Z{i3};",
+	"\u80D0>Ku;",
+	"\u80D1>Zhi;",
+	"\u80D2>N{i4};",
+	"\u80D3>P{i2}ng;",
+	"\u80D4>Z{i4};",
+	"\u80D5>F{u4};",
+	"\u80D6>P{a4}ng;",
+	"\u80D7>Zhen;",
+	"\u80D8>Xi{a2}n;",
+	"\u80D9>Zu{o4};",
+	"\u80DA>Pei;",
+	"\u80DB>Ji{a3};",
+	"\u80DC>Sh{e4}ng;",
+	"\u80DD>Zhi;",
+	"\u80DE>Bao;",
+	"\u80DF>M{u3};",
+	"\u80E0>Qu;",
+	"\u80E1>H{u2};",
+	"\u80E2>Ke;",
+	"\u80E3>Y{i3};",
+	"\u80E4>Y{i4}n;",
+	"\u80E5>Xu;",
+	"\u80E6>Yang;",
+	"\u80E7>L{o2}ng;",
+	"\u80E8>D{o4}ng;",
+	"\u80E9>K{a3};",
+	"\u80EA>L{u2};",
+	"\u80EB>J{i4}ng;",
+	"\u80EC>N{u3};",
+	"\u80ED>Yan;",
+	"\u80EE>P{a2}ng;",
+	"\u80EF>Ku{a4};",
+	"\u80F0>Y{i2};",
+	"\u80F1>Guang;",
+	"\u80F2>Gai;",
+	"\u80F3>Ge;",
+	"\u80F4>D{o4}ng;",
+	"\u80F5>Zh{i4};",
+	"\u80F6>Xia{o2};",
+	"\u80F7>Xiong;",
+	"\u80F8>Xiong;",
+	"\u80F9>{E2}r;",
+	"\u80FA>{E4};",
+	"\u80FB>X{i2}ng;",
+	"\u80FC>Pi{a2}n;",
+	"\u80FD>N{e2}ng;",
+	"\u80FE>Z{i4};",
+	"\u80FF>Gui;",
+	"\u8100>Ch{e2}ng;",
+	"\u8101>Tia{o4};",
+	"\u8102>Zhi;",
+	"\u8103>Cu{i4};",
+	"\u8104>Me{i2};",
+	"\u8105>Xi{e2};",
+	"\u8106>Cu{i4};",
+	"\u8107>Xi{e2};",
+	"\u8108>M{o4};",
+	"\u8109>Ma{i4};",
+	"\u810A>J{i2};",
+	"\u810D>Kua{i4};",
+	"\u810E>S{a4};",
+	"\u810F>Zang;",
+	"\u8110>Q{i2};",
+	"\u8111>Na{o3};",
+	"\u8112>M{i3};",
+	"\u8113>N{o2}ng;",
+	"\u8114>Lu{a2}n;",
+	"\u8115>W{a3}n;",
+	"\u8116>B{o2};",
+	"\u8117>W{e3}n;",
+	"\u8118>Gu{a3}n;",
+	"\u8119>Qi{u2};",
+	"\u811A>Jia{o3};",
+	"\u811B>J{i4}ng;",
+	"\u811C>Ro{u2};",
+	"\u811D>Heng;",
+	"\u811E>Cu{o3};",
+	"\u811F>Li{e4};",
+	"\u8120>Shan;",
+	"\u8121>T{i3}ng;",
+	"\u8122>Me{i2};",
+	"\u8123>Ch{u2}n;",
+	"\u8124>Sh{e4}n;",
+	"\u8125>Xi{e2};",
+	"\u8126>De;",
+	"\u8127>Zui;",
+	"\u8128>C{u4};",
+	"\u8129>Xiu;",
+	"\u812A>X{i4}n;",
+	"\u812B>Tuo;",
+	"\u812C>Pao;",
+	"\u812D>Ch{e2}ng;",
+	"\u812E>Ne{i3};",
+	"\u812F>F{u3};",
+	"\u8130>Do{u4};",
+	"\u8131>Tuo;",
+	"\u8132>Nia{o4};",
+	"\u8134>P{i3};",
+	"\u8135>G{u3};",
+	"\u8136>Gua;",
+	"\u8137>L{i4};",
+	"\u8138>Li{a3}n;",
+	"\u8139>Zh{a4}ng;",
+	"\u813A>Cu{i4};",
+	"\u813B>Ji{e2};",
+	"\u813C>Li{a3}ng;",
+	"\u813D>Zhou;",
+	"\u813E>P{i2};",
+	"\u813F>Biao;",
+	"\u8140>L{u2}n;",
+	"\u8141>Pi{a2}n;",
+	"\u8142>Gu{o4};",
+	"\u8143>Ku{i4};",
+	"\u8144>Chu{i2};",
+	"\u8145>D{a4}n;",
+	"\u8146>Ti{a3}n;",
+	"\u8147>Ne{i3};",
+	"\u8148>Jing;",
+	"\u8149>Jie;",
+	"\u814A>L{a4};",
+	"\u814B>Y{i4};",
+	"\u814C>An;",
+	"\u814D>R{e3}n;",
+	"\u814E>Sh{e4}n;",
+	"\u814F>Chu{o4};",
+	"\u8150>F{u3};",
+	"\u8151>F{u3};",
+	"\u8152>Ju;",
+	"\u8153>Fe{i2};",
+	"\u8154>Qiang;",
+	"\u8155>W{a4}n;",
+	"\u8156>D{o4}ng;",
+	"\u8157>P{i2};",
+	"\u8158>Gu{o2};",
+	"\u8159>Zong;",
+	"\u815A>D{i4}ng;",
+	"\u815B>Wu;",
+	"\u815C>Me{i2};",
+	"\u815D>Ru{a3}n;",
+	"\u815E>Zhu{a4}n;",
+	"\u815F>Zh{i4};",
+	"\u8160>Co{u4};",
+	"\u8161>Gua;",
+	"\u8162>O{u3};",
+	"\u8163>D{i4};",
+	"\u8164>An;",
+	"\u8165>Xing;",
+	"\u8166>Na{o3};",
+	"\u8167>Y{u2};",
+	"\u8168>Chu{a3}n;",
+	"\u8169>N{a3}n;",
+	"\u816A>Y{u4}n;",
+	"\u816B>Zh{o3}ng;",
+	"\u816C>Ro{u2};",
+	"\u816D>{E4};",
+	"\u816E>Sai;",
+	"\u816F>T{u2};",
+	"\u8170>Yao;",
+	"\u8171>Ji{a4}n;",
+	"\u8172>We{i3};",
+	"\u8173>Jia{o3};",
+	"\u8174>Y{u2};",
+	"\u8175>Jia;",
+	"\u8176>Du{a4}n;",
+	"\u8177>B{i4};",
+	"\u8178>Ch{a2}ng;",
+	"\u8179>F{u4};",
+	"\u817A>Xi{a4}n;",
+	"\u817B>N{i4};",
+	"\u817C>Mi{a3}n;",
+	"\u817D>W{a4};",
+	"\u817E>T{e2}ng;",
+	"\u817F>Tu{i3};",
+	"\u8180>B{a3}ng;",
+	"\u8181>Qian;",
+	"\u8182>L{uu3};",
+	"\u8183>W{a4};",
+	"\u8184>So{u4};",
+	"\u8185>T{a2}ng;",
+	"\u8186>S{u4};",
+	"\u8187>Zhu{i4};",
+	"\u8188>G{e2};",
+	"\u8189>Y{i4};",
+	"\u818A>B{o2};",
+	"\u818B>Lia{o2};",
+	"\u818C>J{i2};",
+	"\u818D>P{i2};",
+	"\u818E>Xi{e2};",
+	"\u818F>Gao;",
+	"\u8190>L{uu3};",
+	"\u8191>B{i4}n;",
+	"\u8192>Ou;",
+	"\u8193>Ch{a2}ng;",
+	"\u8194>L{u4};",
+	"\u8195>Gu{o2};",
+	"\u8196>Pang;",
+	"\u8197>Chua{i2};",
+	"\u8198>Pia{o3};",
+	"\u8199>Ji{a3}ng;",
+	"\u819A>Fu;",
+	"\u819B>T{a2}ng;",
+	"\u819C>M{o4};",
+	"\u819D>Xi;",
+	"\u819E>Zhuan;",
+	"\u819F>L{uu4};",
+	"\u81A0>Jiao;",
+	"\u81A1>Y{i4}ng;",
+	"\u81A2>L{uu2};",
+	"\u81A3>Zh{i4};",
+	"\u81A5>Chun;",
+	"\u81A6>Li{a3}n;",
+	"\u81A7>T{o2}ng;",
+	"\u81A8>P{e2}ng;",
+	"\u81A9>N{i4};",
+	"\u81AA>Zh{a4};",
+	"\u81AB>Lia{o2};",
+	"\u81AC>Cu{i4};",
+	"\u81AD>Gui;",
+	"\u81AE>Xiao;",
+	"\u81AF>Teng;",
+	"\u81B0>F{a2}n;",
+	"\u81B1>Zh{i2};",
+	"\u81B2>Jiao;",
+	"\u81B3>Sh{a4}n;",
+	"\u81B4>W{u2};",
+	"\u81B5>Cu{i4};",
+	"\u81B6>R{u4}n;",
+	"\u81B7>Xiang;",
+	"\u81B8>Su{i3};",
+	"\u81B9>F{e4}n;",
+	"\u81BA>Ying;",
+	"\u81BB>T{a3}n;",
+	"\u81BC>Zhua;",
+	"\u81BD>D{a3}n;",
+	"\u81BE>Kua{i4};",
+	"\u81BF>N{o2}ng;",
+	"\u81C0>T{u2}n;",
+	"\u81C1>Li{a2}n;",
+	"\u81C2>B{i4};",
+	"\u81C3>Y{o3}ng;",
+	"\u81C4>Ju{e2};",
+	"\u81C5>Ch{u4};",
+	"\u81C6>Y{i4};",
+	"\u81C7>Ju{a3}n;",
+	"\u81C8>L{a4};",
+	"\u81C9>Li{a3}n;",
+	"\u81CA>Sao;",
+	"\u81CB>T{u2}n;",
+	"\u81CC>G{u3};",
+	"\u81CD>Q{i2};",
+	"\u81CE>Cu{i4};",
+	"\u81CF>B{i4}n;",
+	"\u81D0>Xun;",
+	"\u81D1>R{u2};",
+	"\u81D2>Hu{o4};",
+	"\u81D3>Z{a4}ng;",
+	"\u81D4>Xi{a4}n;",
+	"\u81D5>Biao;",
+	"\u81D6>X{i4}ng;",
+	"\u81D7>Kuan;",
+	"\u81D8>L{a4};",
+	"\u81D9>Yan;",
+	"\u81DA>L{u2};",
+	"\u81DB>Hu{o4};",
+	"\u81DC>Zang;",
+	"\u81DD>Lu{o3};",
+	"\u81DE>Q{u2};",
+	"\u81DF>Z{a4}ng;",
+	"\u81E0>Lu{a2}n;",
+	"\u81E1>N{i2};",
+	"\u81E2>Zang;",
+	"\u81E3>Ch{e2}n;",
+	"\u81E4>Qian;",
+	"\u81E5>W{o4};",
+	"\u81E6>Gu{a4}ng;",
+	"\u81E7>Z{a2}ng;",
+	"\u81E8>L{i2}n;",
+	"\u81E9>Gu{a4}ng;",
+	"\u81EA>Z{i4};",
+	"\u81EB>Jia{o3};",
+	"\u81EC>Ni{e4};",
+	"\u81ED>Cho{u4};",
+	"\u81EE>J{i4};",
+	"\u81EF>Gao;",
+	"\u81F0>Cho{u4};",
+	"\u81F1>Mi{a2}n;",
+	"\u81F2>Ni{e4};",
+	"\u81F3>Zh{i4};",
+	"\u81F4>Zh{i4};",
+	"\u81F5>G{e2};",
+	"\u81F6>Ji{a4}n;",
+	"\u81F7>Di{e2};",
+	"\u81F8>Zh{i4};",
+	"\u81F9>Xiu;",
+	"\u81FA>Ta{i2};",
+	"\u81FB>Zhen;",
+	"\u81FC>Ji{u4};",
+	"\u81FD>Xi{a4}n;",
+	"\u81FE>Y{u2};",
+	"\u81FF>Cha;",
+	"\u8200>Ya{o3};",
+	"\u8201>Y{u2};",
+	"\u8202>Chong;",
+	"\u8203>X{i4};",
+	"\u8204>X{i4};",
+	"\u8205>Ji{u4};",
+	"\u8206>Y{u2};",
+	"\u8207>Y{u3};",
+	"\u8208>Xing;",
+	"\u8209>J{u3};",
+	"\u820A>Ji{u4};",
+	"\u820B>X{i4}n;",
+	"\u820C>Sh{e2};",
+	"\u820D>Sh{e4};",
+	"\u820F>Ji{u3};",
+	"\u8210>Sh{i4};",
+	"\u8211>Tan;",
+	"\u8212>Shu;",
+	"\u8213>Sh{i4};",
+	"\u8214>Ti{a3}n;",
+	"\u8215>D{a4}n;",
+	"\u8216>P{u4};",
+	"\u8217>P{u4};",
+	"\u8218>Gu{a3}n;",
+	"\u8219>Hu{a4};",
+	"\u821A>Tan;",
+	"\u821B>Chu{a3}n;",
+	"\u821C>Sh{u4}n;",
+	"\u821D>Xi{a2};",
+	"\u821E>W{u3};",
+	"\u821F>Zhou;",
+	"\u8220>Dao;",
+	"\u8221>Gang;",
+	"\u8222>Shan;",
+	"\u8223>Y{i3};",
+	"\u8225>Pa;",
+	"\u8226>Ta{i4};",
+	"\u8227>F{a2}n;",
+	"\u8228>B{a3}n;",
+	"\u8229>Chu{a2}n;",
+	"\u822A>H{a2}ng;",
+	"\u822B>F{a3}ng;",
+	"\u822C>Ban;",
+	"\u822D>Qu{e4};",
+	"\u822F>Zhong;",
+	"\u8230>Ji{a4}n;",
+	"\u8231>Cang;",
+	"\u8232>L{i2}ng;",
+	"\u8233>Zh{u2};",
+	"\u8234>Z{e2};",
+	"\u8235>Du{o4};",
+	"\u8236>B{o2};",
+	"\u8237>Xi{a2}n;",
+	"\u8238>G{e3};",
+	"\u8239>Chu{a2}n;",
+	"\u823A>Ji{a2};",
+	"\u823B>L{u3};",
+	"\u823C>H{o2}ng;",
+	"\u823D>P{a2}ng;",
+	"\u823E>Xi;",
+	"\u8240>F{u2};",
+	"\u8241>Za{o4};",
+	"\u8242>F{e2}ng;",
+	"\u8243>L{i2};",
+	"\u8244>Shao;",
+	"\u8245>Y{u2};",
+	"\u8246>L{a2}ng;",
+	"\u8247>T{i3}ng;",
+	"\u8249>We{i3};",
+	"\u824A>B{o2};",
+	"\u824B>M{e3}ng;",
+	"\u824C>Ni{a4}n;",
+	"\u824D>Ju;",
+	"\u824E>Hu{a2}ng;",
+	"\u824F>Sho{u3};",
+	"\u8250>Zong;",
+	"\u8251>Bi{a4}n;",
+	"\u8252>Ma{o4};",
+	"\u8253>Di{e2};",
+	"\u8255>B{a4}ng;",
+	"\u8256>Cha;",
+	"\u8257>Y{i4};",
+	"\u8258>Sao;",
+	"\u8259>Cang;",
+	"\u825A>Ca{o2};",
+	"\u825B>Lo{u2};",
+	"\u825C>Da{i4};",
+	"\u825E>Ya{o4};",
+	"\u825F>T{o2}ng;",
+	"\u8261>Dang;",
+	"\u8262>T{a2}n;",
+	"\u8263>L{u3};",
+	"\u8264>Y{i3};",
+	"\u8265>Ji{e4};",
+	"\u8266>Ji{a4}n;",
+	"\u8267>Hu{o4};",
+	"\u8268>M{e2}ng;",
+	"\u8269>Q{i2};",
+	"\u826A>L{u3};",
+	"\u826B>L{u2};",
+	"\u826C>Ch{a2}n;",
+	"\u826D>Shuang;",
+	"\u826E>G{e4}n;",
+	"\u826F>Li{a2}ng;",
+	"\u8270>Jian;",
+	"\u8271>Jian;",
+	"\u8272>S{e4};",
+	"\u8273>Y{a4}n;",
+	"\u8274>F{u2};",
+	"\u8275>P{i2}ng;",
+	"\u8276>Y{a4}n;",
+	"\u8277>Y{a4}n;",
+	"\u8278>Ca{o3};",
+	"\u8279>Cao3zi4to{u2};",
+	"\u827A>Y{i4};",
+	"\u827B>L{e4};",
+	"\u827C>Ting;",
+	"\u827D>Qi{u2};",
+	"\u827E>A{i4};",
+	"\u827F>Na{i3};",
+	"\u8280>Tia{o2};",
+	"\u8281>Jiao;",
+	"\u8282>Ji{e2};",
+	"\u8283>P{e2}ng;",
+	"\u8284>W{a2}n;",
+	"\u8285>Y{i4};",
+	"\u8286>Chai;",
+	"\u8287>Mi{a2}n;",
+	"\u8288>Mie;",
+	"\u8289>Gan;",
+	"\u828A>Qian;",
+	"\u828B>Y{u4};",
+	"\u828C>Y{u4};",
+	"\u828D>Shu{o4};",
+	"\u828E>Qiong;",
+	"\u828F>T{u3};",
+	"\u8290>Xi{a4};",
+	"\u8291>Q{i3};",
+	"\u8292>M{a2}ng;",
+	"\u8293>Z{i3};",
+	"\u8294>Hu{i3};",
+	"\u8295>Sui;",
+	"\u8296>Zh{i4};",
+	"\u8297>Xiang;",
+	"\u8298>Bi;",
+	"\u8299>F{u2};",
+	"\u829A>T{u2}n;",
+	"\u829B>We{i3};",
+	"\u829C>W{u2};",
+	"\u829D>Zhi;",
+	"\u829E>Q{i3};",
+	"\u829F>Shan;",
+	"\u82A0>W{e2}n;",
+	"\u82A1>Qi{a4}n;",
+	"\u82A2>R{e2}n;",
+	"\u82A3>Fo{u3};",
+	"\u82A4>Kou;",
+	"\u82A5>Ji{e4};",
+	"\u82A6>L{u2};",
+	"\u82A7>X{u4};",
+	"\u82A8>J{i2};",
+	"\u82A9>Q{i2}n;",
+	"\u82AA>Q{i2};",
+	"\u82AB>Yu{a2}n;",
+	"\u82AC>Fen;",
+	"\u82AD>Ba;",
+	"\u82AE>Ru{i4};",
+	"\u82AF>Xin;",
+	"\u82B0>J{i4};",
+	"\u82B1>Hua;",
+	"\u82B2>Hua;",
+	"\u82B3>Fang;",
+	"\u82B4>W{u4};",
+	"\u82B5>Ju{e2};",
+	"\u82B6>Gou;",
+	"\u82B7>Zh{i3};",
+	"\u82B8>Y{u2}n;",
+	"\u82B9>Q{i2}n;",
+	"\u82BA>A{o3};",
+	"\u82BB>Ch{u2};",
+	"\u82BC>Ma{o4};",
+	"\u82BD>Y{a2};",
+	"\u82BE>Fe{i4};",
+	"\u82BF>R{e4}ng;",
+	"\u82C0>H{a2}ng;",
+	"\u82C1>Cong;",
+	"\u82C2>Y{i2}n;",
+	"\u82C3>Yo{u3};",
+	"\u82C4>Bi{a4}n;",
+	"\u82C5>Y{i4};",
+	"\u82C7>We{i3};",
+	"\u82C8>L{i4};",
+	"\u82C9>P{i3};",
+	"\u82CA>{E4};",
+	"\u82CB>Xi{a4}n;",
+	"\u82CC>Ch{a2}ng;",
+	"\u82CD>Cang;",
+	"\u82CE>M{e2}ng;",
+	"\u82CF>Su;",
+	"\u82D0>Y{i2};",
+	"\u82D1>Yu{a4}n;",
+	"\u82D2>R{a3}n;",
+	"\u82D3>L{i2}ng;",
+	"\u82D4>Ta{i2};",
+	"\u82D5>Tia{o2};",
+	"\u82D6>D{i3};",
+	"\u82D7>Mia{o2};",
+	"\u82D8>Qi{o3}ng;",
+	"\u82D9>L{i4};",
+	"\u82DA>Y{o4}ng;",
+	"\u82DB>Ke;",
+	"\u82DC>M{u4};",
+	"\u82DD>Pe{i4};",
+	"\u82DE>Bao;",
+	"\u82DF>Go{u3};",
+	"\u82E0>M{i2}n;",
+	"\u82E1>Y{i3};",
+	"\u82E2>Y{i3};",
+	"\u82E3>J{u4};",
+	"\u82E4>P{i3};",
+	"\u82E5>Ru{o4};",
+	"\u82E6>K{u3};",
+	"\u82E7>Zh{u4};",
+	"\u82E8>N{i3};",
+	"\u82E9>B{o2};",
+	"\u82EA>B{i3}ng;",
+	"\u82EB>Shan;",
+	"\u82EC>Qi{u2};",
+	"\u82ED>Ya{o3};",
+	"\u82EE>Xian;",
+	"\u82EF>B{e3}n;",
+	"\u82F0>H{o2}ng;",
+	"\u82F1>Ying;",
+	"\u82F2>Zh{a3};",
+	"\u82F3>Dong;",
+	"\u82F4>Ju;",
+	"\u82F5>Di{e2};",
+	"\u82F6>Ni{e2};",
+	"\u82F7>Gan;",
+	"\u82F8>Hu;",
+	"\u82F9>P{i2}ng;",
+	"\u82FA>Me{i2};",
+	"\u82FB>F{u2};",
+	"\u82FC>Sheng;",
+	"\u82FD>Gu;",
+	"\u82FE>B{i4};",
+	"\u82FF>We{i4};",
+	"\u8300>F{u2};",
+	"\u8301>Zhu{o2};",
+	"\u8302>Ma{o4};",
+	"\u8303>F{a4}n;",
+	"\u8304>Qi{e2};",
+	"\u8305>Ma{o2};",
+	"\u8306>Ma{o3};",
+	"\u8307>B{a2};",
+	"\u8308>Z{i3};",
+	"\u8309>M{o4};",
+	"\u830A>Zi;",
+	"\u830B>D{i3};",
+	"\u830C>Ch{i2};",
+	"\u830D>J{i4};",
+	"\u830E>Jing;",
+	"\u830F>L{o2}ng;",
+	"\u8311>Nia{o3};",
+	"\u8313>Xu{e2};",
+	"\u8314>Y{i2}ng;",
+	"\u8315>Qi{o2}ng;",
+	"\u8316>G{e2};",
+	"\u8317>M{i3}ng;",
+	"\u8318>L{i4};",
+	"\u8319>R{o2}ng;",
+	"\u831A>Y{i4}n;",
+	"\u831B>G{e4}n;",
+	"\u831C>Qi{a4}n;",
+	"\u831D>Cha{i3};",
+	"\u831E>Ch{e2}n;",
+	"\u831F>Y{u4};",
+	"\u8320>Xiu;",
+	"\u8321>Z{i4};",
+	"\u8322>Li{e4};",
+	"\u8323>W{u2};",
+	"\u8324>J{i4};",
+	"\u8325>Kui;",
+	"\u8326>C{e4};",
+	"\u8327>Ch{o2}ng;",
+	"\u8328>C{i2};",
+	"\u8329>Go{u3};",
+	"\u832A>Guang;",
+	"\u832B>M{a2}ng;",
+	"\u832C>Ch{i2};",
+	"\u832D>Jiao;",
+	"\u832E>Jiao;",
+	"\u832F>F{u2};",
+	"\u8330>Y{u2};",
+	"\u8331>Zhu;",
+	"\u8332>Zi;",
+	"\u8333>Jiang;",
+	"\u8334>Hu{i2};",
+	"\u8335>Yin;",
+	"\u8336>Ch{a2};",
+	"\u8337>F{a2};",
+	"\u8338>R{o2}ng;",
+	"\u8339>R{u2};",
+	"\u833A>Chong;",
+	"\u833B>M{a3}ng;",
+	"\u833C>T{o2}ng;",
+	"\u833D>Zh{o4}ng;",
+	"\u833F>Zh{u2};",
+	"\u8340>X{u2}n;",
+	"\u8341>Hu{a2}n;",
+	"\u8342>Kua;",
+	"\u8343>Qu{a2}n;",
+	"\u8344>Gai;",
+	"\u8345>Da;",
+	"\u8346>Jing;",
+	"\u8347>X{i4}ng;",
+	"\u8348>Qu{a4}n;",
+	"\u8349>Ca{o3};",
+	"\u834A>Jing;",
+	"\u834B>{E2}r;",
+	"\u834C>{A4}n;",
+	"\u834D>Shou;",
+	"\u834E>Ch{i2};",
+	"\u834F>R{e3}n;",
+	"\u8350>Ji{a4}n;",
+	"\u8351>T{i2};",
+	"\u8352>Huang;",
+	"\u8353>P{i2}ng;",
+	"\u8354>L{i4};",
+	"\u8355>Jin;",
+	"\u8356>La{o3};",
+	"\u8357>Sh{u4};",
+	"\u8358>Zhuang;",
+	"\u8359>D{a2};",
+	"\u835A>Ji{a2};",
+	"\u835B>Ra{o2};",
+	"\u835C>B{i4};",
+	"\u835D>Z{e2};",
+	"\u835E>Qia{o2};",
+	"\u835F>Hu{i4};",
+	"\u8360>Q{i2};",
+	"\u8361>D{a4}ng;",
+	"\u8363>R{o2}ng;",
+	"\u8364>Hun;",
+	"\u8365>Y{i2}ng;",
+	"\u8366>Lu{o4};",
+	"\u8367>Y{i2}ng;",
+	"\u8368>X{u2}n;",
+	"\u8369>J{i4}n;",
+	"\u836A>Sun;",
+	"\u836B>Y{i4}n;",
+	"\u836C>Ma{i3};",
+	"\u836D>H{o2}ng;",
+	"\u836E>Zho{u4};",
+	"\u836F>Ya{o4};",
+	"\u8370>D{u4};",
+	"\u8371>We{i3};",
+	"\u8372>Ch{u4};",
+	"\u8373>Do{u4};",
+	"\u8374>Fu;",
+	"\u8375>R{e3}n;",
+	"\u8376>Y{i2}n;",
+	"\u8377>H{e2};",
+	"\u8378>B{i2};",
+	"\u8379>B{u4};",
+	"\u837A>Y{u2}n;",
+	"\u837B>D{i2};",
+	"\u837C>T{u2};",
+	"\u837D>Sui;",
+	"\u837E>Sui;",
+	"\u837F>Ch{e2}ng;",
+	"\u8380>Ch{e2}n;",
+	"\u8381>W{u2};",
+	"\u8382>Bi{e2};",
+	"\u8383>Xi;",
+	"\u8384>G{e3}ng;",
+	"\u8385>L{i4};",
+	"\u8386>F{u3};",
+	"\u8387>Zh{u4};",
+	"\u8388>M{o4};",
+	"\u8389>L{i4};",
+	"\u838A>Zhuang;",
+	"\u838B>J{i2};",
+	"\u838C>Du{o2};",
+	"\u838D>Qi{u2};",
+	"\u838E>Sha;",
+	"\u838F>Suo;",
+	"\u8390>Ch{e2}n;",
+	"\u8391>Feng;",
+	"\u8392>J{u3};",
+	"\u8393>Me{i2};",
+	"\u8394>M{e2}ng;",
+	"\u8395>X{i4}ng;",
+	"\u8396>Jing;",
+	"\u8397>Che;",
+	"\u8398>Xin;",
+	"\u8399>Jun;",
+	"\u839A>Y{a2}n;",
+	"\u839B>T{i2}ng;",
+	"\u839C>Dia{o4};",
+	"\u839D>Cu{o4};",
+	"\u839E>W{a3}n;",
+	"\u839F>H{a4}n;",
+	"\u83A0>Yo{u3};",
+	"\u83A1>Cu{o4};",
+	"\u83A2>Ji{a2};",
+	"\u83A3>W{a2}ng;",
+	"\u83A4>Yo{u2};",
+	"\u83A5>Ni{u3};",
+	"\u83A6>Shao;",
+	"\u83A7>Xi{a4}n;",
+	"\u83A8>L{a2}ng;",
+	"\u83A9>F{u2};",
+	"\u83AA>{E2};",
+	"\u83AB>M{o4};",
+	"\u83AC>W{e4}n;",
+	"\u83AD>Ji{e2};",
+	"\u83AE>N{a2}n;",
+	"\u83AF>M{u4};",
+	"\u83B0>K{a3}n;",
+	"\u83B1>La{i2};",
+	"\u83B2>Li{a2}n;",
+	"\u83B3>Sh{i2};",
+	"\u83B4>Wo;",
+	"\u83B6>Li{a3}n;",
+	"\u83B7>Hu{o4};",
+	"\u83B8>Yo{u2};",
+	"\u83B9>Y{i2}ng;",
+	"\u83BA>Ying;",
+	"\u83BC>Ch{u2}n;",
+	"\u83BD>M{a3}ng;",
+	"\u83BE>M{a3}ng;",
+	"\u83BF>C{i4};",
+	"\u83C0>W{a3}n;",
+	"\u83C1>Jing;",
+	"\u83C2>Di;",
+	"\u83C3>Q{u2};",
+	"\u83C4>Dong;",
+	"\u83C5>Jian;",
+	"\u83C6>Zou;",
+	"\u83C7>Gu;",
+	"\u83C8>La;",
+	"\u83C9>L{u4};",
+	"\u83CA>J{u2};",
+	"\u83CB>We{i4};",
+	"\u83CC>J{u4}n;",
+	"\u83CD>Ni{e4};",
+	"\u83CE>Kun;",
+	"\u83CF>H{e2};",
+	"\u83D0>P{u2};",
+	"\u83D1>Zi;",
+	"\u83D2>Ga{o3};",
+	"\u83D3>Gu{o3};",
+	"\u83D4>F{u2};",
+	"\u83D5>L{u2}n;",
+	"\u83D6>Chang;",
+	"\u83D7>Cho{u2};",
+	"\u83D8>Song;",
+	"\u83D9>Chu{i2};",
+	"\u83DA>Zh{a4}n;",
+	"\u83DB>M{e2}n;",
+	"\u83DC>Ca{i4};",
+	"\u83DD>B{a2};",
+	"\u83DE>L{i2};",
+	"\u83DF>T{u4};",
+	"\u83E0>Bo;",
+	"\u83E1>H{a4}n;",
+	"\u83E2>Ba{o4};",
+	"\u83E3>Q{i4}n;",
+	"\u83E4>Ju{a3}n;",
+	"\u83E5>Xi;",
+	"\u83E6>Q{i2}n;",
+	"\u83E7>D{i3};",
+	"\u83E8>Jie;",
+	"\u83E9>P{u2};",
+	"\u83EA>D{a4}ng;",
+	"\u83EB>J{i3}n;",
+	"\u83EC>Zha{o3};",
+	"\u83ED>Ta{i2};",
+	"\u83EE>Geng;",
+	"\u83EF>Hu{a2};",
+	"\u83F0>Gu;",
+	"\u83F1>L{i2}ng;",
+	"\u83F2>Fei;",
+	"\u83F3>Jin;",
+	"\u83F4>An;",
+	"\u83F5>W{a3}ng;",
+	"\u83F6>B{e3}ng;",
+	"\u83F7>Zho{u3};",
+	"\u83F8>Yan;",
+	"\u83F9>Ju;",
+	"\u83FA>Jian;",
+	"\u83FB>L{i3}n;",
+	"\u83FC>T{a3}n;",
+	"\u83FD>Sh{u2};",
+	"\u83FE>Ti{a2}n;",
+	"\u83FF>Da{o4};",
+	"\u8400>H{u3};",
+	"\u8401>Q{i2};",
+	"\u8402>H{e2};",
+	"\u8403>Cu{i4};",
+	"\u8404>Ta{o2};",
+	"\u8405>Chun;",
+	"\u8406>Bei;",
+	"\u8407>Ch{a2}ng;",
+	"\u8408>Hu{a2}n;",
+	"\u8409>Fe{i2};",
+	"\u840A>La{i2};",
+	"\u840B>Qi;",
+	"\u840C>M{e2}ng;",
+	"\u840D>P{i2}ng;",
+	"\u840E>Wei;",
+	"\u840F>D{a4}n;",
+	"\u8410>Sh{a4};",
+	"\u8411>Hu{a2}n;",
+	"\u8412>Y{a3}n;",
+	"\u8413>Y{i2};",
+	"\u8414>Tia{o2};",
+	"\u8415>Q{i2};",
+	"\u8416>W{a3}n;",
+	"\u8417>C{e4};",
+	"\u8418>Na{i4};",
+	"\u841A>Tu{o4};",
+	"\u841B>Jiu;",
+	"\u841C>Tie;",
+	"\u841D>Lu{o2};",
+	"\u8420>M{e2}ng;",
+	"\u8424>Y{i2}ng;",
+	"\u8425>Y{i2}ng;",
+	"\u8426>Y{i2}ng;",
+	"\u8427>Xiao;",
+	"\u8428>S{a4};",
+	"\u8429>Qiu;",
+	"\u842A>Ke;",
+	"\u842B>Xi{a4}ng;",
+	"\u842C>W{a4}n;",
+	"\u842D>Y{u3};",
+	"\u842E>Y{u4};",
+	"\u842F>F{u4};",
+	"\u8430>Li{a4}n;",
+	"\u8431>Xuan;",
+	"\u8432>Yu{a2}n;",
+	"\u8433>N{a2}n;",
+	"\u8434>Z{e2};",
+	"\u8435>Wo;",
+	"\u8436>Ch{u3}n;",
+	"\u8437>Xiao;",
+	"\u8438>Y{u2};",
+	"\u8439>Pian;",
+	"\u843A>Ma{o4};",
+	"\u843B>An;",
+	"\u843C>{E4};",
+	"\u843D>Lu{o4};",
+	"\u843E>Y{i2}ng;",
+	"\u843F>Hu{o2};",
+	"\u8440>Gua;",
+	"\u8441>Jiang;",
+	"\u8442>Mi{a3}n;",
+	"\u8443>Zu{o2};",
+	"\u8444>Zu{o4};",
+	"\u8445>Ju;",
+	"\u8446>Ba{o3};",
+	"\u8447>Ro{u2};",
+	"\u8448>X{i3};",
+	"\u8449>Xi{e2};",
+	"\u844A>An;",
+	"\u844B>Q{u2};",
+	"\u844C>Jian;",
+	"\u844D>F{u2};",
+	"\u844E>L{uu4};",
+	"\u844F>Jing;",
+	"\u8450>P{e2}n;",
+	"\u8451>Feng;",
+	"\u8452>H{o2}ng;",
+	"\u8453>H{o2}ng;",
+	"\u8454>Ho{u2};",
+	"\u8455>Y{a2}n;",
+	"\u8456>T{u2};",
+	"\u8457>Zh{u4};",
+	"\u8458>Zi;",
+	"\u8459>Xiang;",
+	"\u845A>Sh{e4}n;",
+	"\u845B>G{e3};",
+	"\u845C>Ji{e2};",
+	"\u845D>J{i4}ng;",
+	"\u845E>M{i3};",
+	"\u845F>Hu{a2}ng;",
+	"\u8460>Shen;",
+	"\u8461>P{u2};",
+	"\u8462>Ga{i4};",
+	"\u8463>D{o3}ng;",
+	"\u8464>Zho{u4};",
+	"\u8465>Qi{a2}n;",
+	"\u8466>We{i3};",
+	"\u8467>B{o2};",
+	"\u8468>Wei;",
+	"\u8469>Pa;",
+	"\u846A>J{i4};",
+	"\u846B>H{u2};",
+	"\u846C>Z{a4}ng;",
+	"\u846D>Jia;",
+	"\u846E>Du{a4}n;",
+	"\u846F>Ya{o4};",
+	"\u8470>J{u4}n;",
+	"\u8471>Cong;",
+	"\u8472>Qu{a2}n;",
+	"\u8473>Wei;",
+	"\u8474>Xi{a2}n;",
+	"\u8475>Ku{i2};",
+	"\u8476>T{i2}ng;",
+	"\u8477>Hun;",
+	"\u8478>X{i3};",
+	"\u8479>Shi;",
+	"\u847A>Q{i4};",
+	"\u847B>L{a2}n;",
+	"\u847C>Zong;",
+	"\u847D>Yao;",
+	"\u847E>Yuan;",
+	"\u847F>Me{i2};",
+	"\u8480>Yun;",
+	"\u8481>Sh{u4};",
+	"\u8482>D{i4};",
+	"\u8483>Zhu{a4}n;",
+	"\u8484>Guan;",
+	"\u8486>Xue;",
+	"\u8487>Ch{a3}n;",
+	"\u8488>Ka{i3};",
+	"\u8489>Ku{i4};",
+	"\u848B>Ji{a3}ng;",
+	"\u848C>Lo{u2};",
+	"\u848D>We{i2};",
+	"\u848E>Pa{i4};",
+	"\u8490>Sou;",
+	"\u8491>Yin;",
+	"\u8492>Shi;",
+	"\u8493>Ch{u2}n;",
+	"\u8494>Sh{i2};",
+	"\u8495>Yun;",
+	"\u8496>Zhen;",
+	"\u8497>L{a4}ng;",
+	"\u8498>N{u2};",
+	"\u8499>M{e2}ng;",
+	"\u849A>H{e2};",
+    };
+  }
+
+  private String[] getString3() {
+	return new String[] {
+
+	"\u849B>Que;",
+	"\u849C>Su{a4}n;",
+	"\u849D>Yu{a2}n;",
+	"\u849E>L{i4};",
+	"\u849F>J{u3};",
+	"\u84A0>X{i2};",
+	"\u84A1>P{a2}ng;",
+	"\u84A2>Ch{u2};",
+	"\u84A3>X{u2};",
+	"\u84A4>T{u2};",
+	"\u84A5>Li{u2};",
+	"\u84A6>W{o4};",
+	"\u84A7>Zhen;",
+	"\u84A8>Qi{a4}n;",
+	"\u84A9>Zu;",
+	"\u84AA>P{o4};",
+	"\u84AB>Cuo;",
+	"\u84AC>Yuan;",
+	"\u84AD>Ch{u2};",
+	"\u84AE>Y{u4};",
+	"\u84AF>Kua{i3};",
+	"\u84B0>P{a2}n;",
+	"\u84B1>P{u2};",
+	"\u84B2>P{u2};",
+	"\u84B3>N{a4};",
+	"\u84B4>Shu{o4};",
+	"\u84B5>Xi;",
+	"\u84B6>F{e2}n;",
+	"\u84B7>Y{u2}n;",
+	"\u84B8>Zheng;",
+	"\u84B9>Jian;",
+	"\u84BA>J{i2};",
+	"\u84BB>Ru{o4};",
+	"\u84BC>Cang;",
+	"\u84BD>En;",
+	"\u84BE>M{i2};",
+	"\u84BF>Hao;",
+	"\u84C0>Sun;",
+	"\u84C1>Zhen;",
+	"\u84C2>M{i2}ng;",
+	"\u84C3>Sou;",
+	"\u84C4>X{u4};",
+	"\u84C5>Li{u2};",
+	"\u84C6>X{i2};",
+	"\u84C7>G{u3};",
+	"\u84C8>L{a2}ng;",
+	"\u84C9>R{o2}ng;",
+	"\u84CA>W{e3}ng;",
+	"\u84CB>Ga{i4};",
+	"\u84CC>Cu{o4};",
+	"\u84CD>Shi;",
+	"\u84CE>T{a2}ng;",
+	"\u84CF>Lu{o3};",
+	"\u84D0>R{u4};",
+	"\u84D1>Suo;",
+	"\u84D2>Xian;",
+	"\u84D3>Be{i4};",
+	"\u84D4>Ya{o3};",
+	"\u84D5>Gu{i4};",
+	"\u84D6>Bi;",
+	"\u84D7>Z{o3}ng;",
+	"\u84D8>G{u3}n;",
+	"\u84DA>Xiu;",
+	"\u84DB>C{e4};",
+	"\u84DD>L{a2}n;",
+	"\u84DF>J{i4};",
+	"\u84E0>L{i2};",
+	"\u84E1>Can;",
+	"\u84E2>L{a2}ng;",
+	"\u84E3>Y{u4};",
+	"\u84E5>Y{i4}ng;",
+	"\u84E6>M{o4};",
+	"\u84E7>Dia{o4};",
+	"\u84E8>Tiao;",
+	"\u84E9>Ma{o4};",
+	"\u84EA>Tong;",
+	"\u84EB>Zh{u2};",
+	"\u84EC>P{e2}ng;",
+	"\u84ED>An;",
+	"\u84EE>Li{a2}n;",
+	"\u84EF>Cong;",
+	"\u84F0>X{i3};",
+	"\u84F1>P{i2}ng;",
+	"\u84F2>Qiu;",
+	"\u84F3>J{i4}n;",
+	"\u84F4>Ch{u2}n;",
+	"\u84F5>Ji{e2};",
+	"\u84F6>We{i3};",
+	"\u84F7>Tui;",
+	"\u84F8>Ca{o2};",
+	"\u84F9>Y{u3};",
+	"\u84FA>Y{i4};",
+	"\u84FB>J{i2};",
+	"\u84FC>Lia{o3};",
+	"\u84FD>B{i4};",
+	"\u84FE>L{u3};",
+	"\u84FF>S{u4};",
+	"\u8500>B{u4};",
+	"\u8501>Zhang;",
+	"\u8502>Lu{o2};",
+	"\u8503>Ji{a4}ng;",
+	"\u8504>M{a4}n;",
+	"\u8505>Y{a2}n;",
+	"\u8506>L{i2}ng;",
+	"\u8507>J{i4};",
+	"\u8508>Pia{o3};",
+	"\u8509>G{u3}n;",
+	"\u850A>H{a3}n;",
+	"\u850B>D{i2};",
+	"\u850C>S{u4};",
+	"\u850D>L{u4};",
+	"\u850E>Sh{e4};",
+	"\u850F>Shang;",
+	"\u8510>D{i2};",
+	"\u8511>Mi{e4};",
+	"\u8512>Xun;",
+	"\u8513>M{a4}n;",
+	"\u8514>B{o2};",
+	"\u8515>D{i4};",
+	"\u8516>Cu{o2};",
+	"\u8517>Zh{e4};",
+	"\u8518>Sen;",
+	"\u8519>Xu{a4}n;",
+	"\u851A>We{i4};",
+	"\u851B>H{u2};",
+	"\u851C>A{o2};",
+	"\u851D>M{i3};",
+	"\u851E>Lo{u2};",
+	"\u851F>C{u4};",
+	"\u8520>Zhong;",
+	"\u8521>Ca{i4};",
+	"\u8522>P{o2};",
+	"\u8523>Ji{a3}ng;",
+	"\u8524>M{i4};",
+	"\u8525>Cong;",
+	"\u8526>Nia{o3};",
+	"\u8527>Hu{i4};",
+	"\u8528>J{u4}n;",
+	"\u8529>Y{i2}n;",
+	"\u852A>Ji{a4}n;",
+	"\u852B>Yan;",
+	"\u852C>Shu;",
+	"\u852D>Y{i4}n;",
+	"\u852E>Ku{i4};",
+	"\u852F>Ch{e2}n;",
+	"\u8530>H{u4};",
+	"\u8531>Sha;",
+	"\u8532>Ko{u4};",
+	"\u8533>Qi{a4}n;",
+	"\u8534>M{a2};",
+	"\u8535>Zang;",
+	"\u8537>Qi{a2}ng;",
+	"\u8538>Dou;",
+	"\u8539>Li{a4}n;",
+	"\u853A>L{i4}n;",
+	"\u853B>Ko{u4};",
+	"\u853C>A{i3};",
+	"\u853D>B{i4};",
+	"\u853E>L{i2};",
+	"\u853F>We{i2};",
+	"\u8540>J{i2};",
+	"\u8541>X{u2}n;",
+	"\u8542>Sh{e4}ng;",
+	"\u8543>F{a2}n;",
+	"\u8544>M{e2}ng;",
+	"\u8545>O{u3};",
+	"\u8546>Ch{a3}n;",
+	"\u8547>Di{a3}n;",
+	"\u8548>X{u4}n;",
+	"\u8549>Jiao;",
+	"\u854A>Ru{i3};",
+	"\u854B>Ru{i3};",
+	"\u854C>Le{i3};",
+	"\u854D>Y{u2};",
+	"\u854E>Qia{o2};",
+	"\u854F>Ch{u2};",
+	"\u8550>Hu{a2};",
+	"\u8551>Jian;",
+	"\u8552>Ma{i3};",
+	"\u8553>Y{u2}n;",
+	"\u8554>Bao;",
+	"\u8555>Yo{u2};",
+	"\u8556>Q{u2};",
+	"\u8557>L{u4};",
+	"\u8558>Ra{o2};",
+	"\u8559>Hu{i4};",
+	"\u855A>{E4};",
+	"\u855B>T{e2}ng;",
+	"\u855C>Fe{i3};",
+	"\u855D>Ju{e2};",
+	"\u855E>Zu{i4};",
+	"\u855F>F{a4};",
+	"\u8560>R{u2};",
+	"\u8561>F{e2}n;",
+	"\u8562>Ku{i4};",
+	"\u8563>Sh{u4}n;",
+	"\u8564>Ru{i2};",
+	"\u8565>Y{a3};",
+	"\u8566>Xu;",
+	"\u8567>F{u4};",
+	"\u8568>Ju{e2};",
+	"\u8569>D{a4}ng;",
+	"\u856A>W{u2};",
+	"\u856B>T{o2}ng;",
+	"\u856C>Si;",
+	"\u856D>Xiao;",
+	"\u856E>X{i4};",
+	"\u856F>L{o2}ng;",
+	"\u8570>Y{u4}n;",
+	"\u8572>Q{i2};",
+	"\u8573>Jian;",
+	"\u8574>Y{u4}n;",
+	"\u8575>Sun;",
+	"\u8576>L{i2}ng;",
+	"\u8577>Y{u4};",
+	"\u8578>Xi{a2};",
+	"\u8579>Yong;",
+	"\u857A>J{i2};",
+	"\u857B>H{o4}ng;",
+	"\u857C>S{i4};",
+	"\u857D>N{o2}ng;",
+	"\u857E>Le{i3};",
+	"\u857F>Xuan;",
+	"\u8580>Y{u4}n;",
+	"\u8581>Y{u4};",
+	"\u8582>X{i2};",
+	"\u8583>Ha{o4};",
+	"\u8584>B{o2};",
+	"\u8585>Hao;",
+	"\u8586>A{i4};",
+	"\u8587>We{i2};",
+	"\u8588>Hu{i4};",
+	"\u8589>We{i4};",
+	"\u858A>J{i4};",
+	"\u858B>Ci;",
+	"\u858C>Xiang;",
+	"\u858D>Lu{a4}n;",
+	"\u858E>Mi{e4};",
+	"\u858F>Y{i4};",
+	"\u8590>L{e2}ng;",
+	"\u8591>Jiang;",
+	"\u8592>C{a4}n;",
+	"\u8593>Shen;",
+	"\u8594>Qi{a2}ng;",
+	"\u8595>Li{a2}n;",
+	"\u8596>Ke;",
+	"\u8597>Yu{a2}n;",
+	"\u8598>D{a2};",
+	"\u8599>T{i4};",
+	"\u859A>T{a2}ng;",
+	"\u859B>Xie;",
+	"\u859C>B{i4};",
+	"\u859D>Zh{a2}n;",
+	"\u859E>Sun;",
+	"\u859F>Li{a3}n;",
+	"\u85A0>F{a2}n;",
+	"\u85A1>D{i3}ng;",
+	"\u85A2>Jie;",
+	"\u85A3>G{u3};",
+	"\u85A4>Xi{e4};",
+	"\u85A5>Sh{u3};",
+	"\u85A6>Ji{a4}n;",
+	"\u85A7>Ka{o3};",
+	"\u85A8>Hong;",
+	"\u85A9>S{a4};",
+	"\u85AA>Xin;",
+	"\u85AB>Xun;",
+	"\u85AC>Ya{o4};",
+	"\u85AE>So{u3};",
+	"\u85AF>Sh{u3};",
+	"\u85B0>Xun;",
+	"\u85B1>Du{i4};",
+	"\u85B2>P{i2}n;",
+	"\u85B3>We{i3};",
+	"\u85B4>N{e2}ng;",
+	"\u85B5>Cho{u2};",
+	"\u85B6>Ma{i2};",
+	"\u85B7>R{u2};",
+	"\u85B8>Piao;",
+	"\u85B9>Ta{i2};",
+	"\u85BA>Q{i2};",
+	"\u85BB>Za{o3};",
+	"\u85BC>Ch{e2}n;",
+	"\u85BD>Zhen;",
+	"\u85BE>{e3}r;",
+	"\u85BF>N{i3};",
+	"\u85C0>Y{i2}ng;",
+	"\u85C1>Ga{o3};",
+	"\u85C2>C{o4}ng;",
+	"\u85C3>Xiao;",
+	"\u85C4>Q{i2};",
+	"\u85C5>F{a2};",
+	"\u85C6>Ji{a3}n;",
+	"\u85C7>X{u4};",
+	"\u85C8>Kui;",
+	"\u85C9>Ji{e4};",
+	"\u85CA>Bi{a3}n;",
+	"\u85CB>Dia{o4};",
+	"\u85CC>M{i4};",
+	"\u85CD>L{a2}n;",
+	"\u85CE>J{i4}n;",
+	"\u85CF>C{a2}ng;",
+	"\u85D0>Mia{o3};",
+	"\u85D1>Qi{o2}ng;",
+	"\u85D2>Qi{e4};",
+	"\u85D3>Xi{a3}n;",
+	"\u85D5>O{u3};",
+	"\u85D6>Xi{a2}n;",
+	"\u85D7>S{u4};",
+	"\u85D8>L{uu2};",
+	"\u85D9>Y{i4};",
+	"\u85DA>X{u4};",
+	"\u85DB>Xi{e3};",
+	"\u85DC>L{i2};",
+	"\u85DD>Y{i4};",
+	"\u85DE>L{a3};",
+	"\u85DF>Le{i3};",
+	"\u85E0>Xia{o4};",
+	"\u85E1>D{i2};",
+	"\u85E2>Zh{i3};",
+	"\u85E3>Bei;",
+	"\u85E4>T{e2}ng;",
+	"\u85E5>Ya{o4};",
+	"\u85E6>M{o4};",
+	"\u85E7>Hu{a3}n;",
+	"\u85E8>Pia{o3};",
+	"\u85E9>F{a2}n;",
+	"\u85EA>So{u3};",
+	"\u85EB>T{a2}n;",
+	"\u85EC>Tui;",
+	"\u85ED>Qi{o2}ng;",
+	"\u85EE>Qia{o2};",
+	"\u85EF>We{i4};",
+	"\u85F0>Li{u2};",
+	"\u85F1>Hu{i4};",
+	"\u85F3>Ga{o3};",
+	"\u85F4>Y{u4}n;",
+	"\u85F6>L{i4};",
+	"\u85F7>Sh{u3};",
+	"\u85F8>Ch{u2};",
+	"\u85F9>A{i3};",
+	"\u85FA>L{i4}n;",
+	"\u85FB>Za{o3};",
+	"\u85FC>Xuan;",
+	"\u85FD>Ch{e4}n;",
+	"\u85FE>La{i4};",
+	"\u85FF>Hu{o4};",
+	"\u8600>Tu{o4};",
+	"\u8601>W{u4};",
+	"\u8602>Ru{i3};",
+	"\u8603>Ru{i3};",
+	"\u8604>Q{i2};",
+	"\u8605>H{e2}ng;",
+	"\u8606>L{u2};",
+	"\u8607>Su;",
+	"\u8608>Tu{i2};",
+	"\u8609>M{a2}ng;",
+	"\u860A>Y{u4}n;",
+	"\u860B>P{i2}n;",
+	"\u860C>Y{u3};",
+	"\u860D>Xun;",
+	"\u860E>J{i4};",
+	"\u860F>Jiong;",
+	"\u8610>Xian;",
+	"\u8611>M{o2};",
+	"\u8613>Su;",
+	"\u8614>Jiong;",
+	"\u8616>Ni{e4};",
+	"\u8617>B{o4};",
+	"\u8618>R{a2}ng;",
+	"\u8619>Y{i4};",
+	"\u861A>Xi{a3}n;",
+	"\u861B>Y{u2};",
+	"\u861C>J{u2};",
+	"\u861D>Li{a4}n;",
+	"\u861E>Li{a4}n;",
+	"\u861F>Y{i3}n;",
+	"\u8620>Qi{a2}ng;",
+	"\u8621>Ying;",
+	"\u8622>L{o2}ng;",
+	"\u8623>T{o4}ng;",
+	"\u8624>We{i3};",
+	"\u8625>Yu{e4};",
+	"\u8626>L{i2}ng;",
+	"\u8627>Q{u2};",
+	"\u8628>Ya{o2};",
+	"\u8629>F{a2}n;",
+	"\u862A>M{i2};",
+	"\u862B>L{a2}n;",
+	"\u862C>Kui;",
+	"\u862D>L{a2}n;",
+	"\u862E>J{i4};",
+	"\u862F>D{a4}ng;",
+	"\u8631>Le{i4};",
+	"\u8632>Le{i2};",
+	"\u8633>Hu{a3};",
+	"\u8634>Feng;",
+	"\u8635>Zh{i2};",
+	"\u8636>We{i4};",
+	"\u8637>Ku{i2};",
+	"\u8638>Zh{a4}n;",
+	"\u8639>Hua{i4};",
+	"\u863A>L{i2};",
+	"\u863B>J{i4};",
+	"\u863C>M{i2};",
+	"\u863D>Le{i3};",
+	"\u863E>Hua{i4};",
+	"\u863F>Lu{o2};",
+	"\u8640>Ji;",
+	"\u8641>Ku{i2};",
+	"\u8642>L{u4};",
+	"\u8643>Jian;",
+	"\u8646>Le{i2};",
+	"\u8647>Qu{a3}n;",
+	"\u8648>Xiao;",
+	"\u8649>Y{i4};",
+	"\u864A>Lu{a2}n;",
+	"\u864B>M{e2}n;",
+	"\u864C>Bie;",
+	"\u864D>Hu;",
+	"\u864E>H{u3};",
+	"\u864F>L{u3};",
+	"\u8650>N{uu}{e4};",
+	"\u8651>L{uu4};",
+	"\u8652>Si;",
+	"\u8653>Xiao;",
+	"\u8654>Qi{a2}n;",
+	"\u8655>Ch{u4};",
+	"\u8656>Hu;",
+	"\u8657>Xu;",
+	"\u8658>Cu{o2};",
+	"\u8659>F{u2};",
+	"\u865A>Xu;",
+	"\u865B>Xu;",
+	"\u865C>L{u3};",
+	"\u865D>H{u3};",
+	"\u865E>Y{u2};",
+	"\u865F>Ha{o4};",
+	"\u8660>Jia{o3};",
+	"\u8661>J{u4};",
+	"\u8662>Gu{o2};",
+	"\u8663>Ba{o4};",
+	"\u8664>Y{a2}n;",
+	"\u8665>Zh{a4}n;",
+	"\u8666>Zh{a4}n;",
+	"\u8667>Kui;",
+	"\u8668>Ban;",
+	"\u8669>X{i4};",
+	"\u866A>Sh{u2};",
+	"\u866B>Ch{o2}ng;",
+	"\u866C>Qi{u2};",
+	"\u866D>Diao;",
+	"\u866E>Ji;",
+	"\u866F>Qi{u2};",
+	"\u8670>Ch{e2}ng;",
+	"\u8671>Shi;",
+	"\u8673>D{i4};",
+	"\u8674>Zh{e2};",
+	"\u8675>Sh{e2};",
+	"\u8676>Yu;",
+	"\u8677>Gan;",
+	"\u8678>Z{i3};",
+	"\u8679>H{o2}ng;",
+	"\u867A>Hu{i3};",
+	"\u867B>M{e2}ng;",
+	"\u867C>G{e4};",
+	"\u867D>Sui;",
+	"\u867E>Xia;",
+	"\u867F>Cha{i4};",
+	"\u8680>Sh{i2};",
+	"\u8681>Y{i3};",
+	"\u8682>M{a3};",
+	"\u8683>Xi{a4}ng;",
+	"\u8684>Fang;",
+	"\u8685>{E4};",
+	"\u8686>Pa;",
+	"\u8687>Ch{i3};",
+	"\u8688>Qian;",
+	"\u8689>W{e2}n;",
+	"\u868A>W{e2}n;",
+	"\u868B>Ru{i4};",
+	"\u868C>B{a4}ng;",
+	"\u868D>B{i3};",
+	"\u868E>Yu{e4};",
+	"\u868F>Yu{e4};",
+	"\u8690>Jun;",
+	"\u8691>Q{i2};",
+	"\u8692>R{a2}n;",
+	"\u8693>Y{i3}n;",
+	"\u8694>Q{i2};",
+	"\u8695>Ti{a3}n;",
+	"\u8696>Yu{a2}n;",
+	"\u8697>Ju{e2};",
+	"\u8698>Hu{i2};",
+	"\u8699>Q{i2}n;",
+	"\u869A>Q{i2};",
+	"\u869B>Zh{o4}ng;",
+	"\u869C>Y{a2};",
+	"\u869D>C{i4};",
+	"\u869E>M{u4};",
+	"\u869F>W{a2}ng;",
+	"\u86A0>F{e2}n;",
+	"\u86A1>F{e2}n;",
+	"\u86A2>H{a2}ng;",
+	"\u86A3>Gong;",
+	"\u86A4>Za{o3};",
+	"\u86A5>F{u3};",
+	"\u86A6>R{a2}n;",
+	"\u86A7>Ji{e4};",
+	"\u86A8>F{u2};",
+	"\u86A9>Chi;",
+	"\u86AA>Do{u3};",
+	"\u86AB>Pia{o2};",
+	"\u86AC>Xi{a4}n;",
+	"\u86AD>N{i2};",
+	"\u86AE>T{e4};",
+	"\u86AF>Qiu;",
+	"\u86B0>Yo{u2};",
+	"\u86B1>Zh{a4};",
+	"\u86B2>P{i2}ng;",
+	"\u86B3>Ch{i2};",
+	"\u86B4>Yo{u3};",
+	"\u86B5>H{e2};",
+	"\u86B6>Han;",
+	"\u86B7>J{u4};",
+	"\u86B8>L{i4};",
+	"\u86B9>F{u4};",
+	"\u86BA>R{a2}n;",
+	"\u86BB>Zh{a2};",
+	"\u86BC>Go{u3};",
+	"\u86BD>P{i2};",
+	"\u86BE>B{o3};",
+	"\u86BF>Xi{a2}n;",
+	"\u86C0>Zh{u4};",
+	"\u86C1>Diao;",
+	"\u86C2>Bi{e3};",
+	"\u86C3>B{i3}ng;",
+	"\u86C4>Gu;",
+	"\u86C5>R{a2}n;",
+	"\u86C6>Qu;",
+	"\u86C7>Sh{e2};",
+	"\u86C8>Ti{e4};",
+	"\u86C9>L{i2}ng;",
+	"\u86CA>G{u3};",
+	"\u86CB>D{a4}n;",
+	"\u86CC>G{u3};",
+	"\u86CD>Y{i2}ng;",
+	"\u86CE>L{i4};",
+	"\u86CF>Cheng;",
+	"\u86D0>Qu;",
+	"\u86D1>Mo{u2};",
+	"\u86D2>G{e2};",
+	"\u86D3>C{i4};",
+	"\u86D4>Hu{i2};",
+	"\u86D5>Hu{i2};",
+	"\u86D6>M{a2}ng;",
+	"\u86D7>F{u4};",
+	"\u86D8>Y{a2}ng;",
+	"\u86D9>Wa;",
+	"\u86DA>Li{e4};",
+	"\u86DB>Zhu;",
+	"\u86DC>Yi;",
+	"\u86DD>Xi{a2}n;",
+	"\u86DE>Ku{o4};",
+	"\u86DF>Jiao;",
+	"\u86E0>L{i4};",
+	"\u86E1>Y{i4};",
+	"\u86E2>P{i2}ng;",
+	"\u86E3>Ji;",
+	"\u86E4>H{a2};",
+	"\u86E5>Sh{e2};",
+	"\u86E6>Y{i2};",
+	"\u86E7>W{a3}ng;",
+	"\u86E8>M{o4};",
+	"\u86E9>Qi{o2}ng;",
+	"\u86EA>Qi{e4};",
+	"\u86EB>Gu{i3};",
+	"\u86EC>G{o3}ng;",
+	"\u86ED>Zh{i4};",
+	"\u86EE>M{a2}n;",
+	"\u86F0>Zh{i2};",
+	"\u86F1>Ji{a2};",
+	"\u86F2>Ra{o2};",
+	"\u86F3>Si;",
+	"\u86F4>Q{i2};",
+	"\u86F5>Xing;",
+	"\u86F6>Li{e4};",
+	"\u86F7>Qi{u2};",
+	"\u86F8>Shao;",
+	"\u86F9>Y{o3}ng;",
+	"\u86FA>Ji{a2};",
+	"\u86FB>Shu{i4};",
+	"\u86FC>Che;",
+	"\u86FD>Ba{i4};",
+	"\u86FE>{E2};",
+	"\u86FF>H{a4}n;",
+	"\u8700>Sh{u3};",
+	"\u8701>Xu{a2}n;",
+	"\u8702>Feng;",
+	"\u8703>Sh{e4}n;",
+	"\u8704>Zh{e4}n;",
+	"\u8705>F{u3};",
+	"\u8706>Xi{a4}n;",
+	"\u8707>Zh{e2};",
+	"\u8708>W{u2};",
+	"\u8709>F{u2};",
+	"\u870A>L{i2};",
+	"\u870B>L{a2}ng;",
+	"\u870C>B{i4};",
+	"\u870D>Ch{u2};",
+	"\u870E>Yuan;",
+	"\u870F>Yo{u3};",
+	"\u8710>Ji{e2};",
+	"\u8711>D{a4}n;",
+	"\u8712>Y{a2}n;",
+	"\u8713>T{i2}ng;",
+	"\u8714>Di{a4}n;",
+	"\u8715>Shu{i4};",
+	"\u8716>Hu{i2};",
+	"\u8717>Gua;",
+	"\u8718>Zhi;",
+	"\u8719>Song;",
+	"\u871A>Fei;",
+	"\u871B>Ju;",
+	"\u871C>M{i4};",
+	"\u871D>Q{i2};",
+	"\u871E>Q{i2};",
+	"\u871F>Y{u4};",
+	"\u8720>J{u3}n;",
+	"\u8721>Zh{a4};",
+	"\u8722>M{e3}ng;",
+	"\u8723>Qiang;",
+	"\u8724>Si;",
+	"\u8725>Xi;",
+	"\u8726>L{u2}n;",
+	"\u8727>L{i4};",
+	"\u8728>Di{e2};",
+	"\u8729>Tia{o2};",
+	"\u872A>Tao;",
+	"\u872B>Kun;",
+	"\u872C>Gan;",
+	"\u872D>H{a4}n;",
+	"\u872E>Y{u4};",
+	"\u872F>B{a4}ng;",
+	"\u8730>Fe{i2};",
+	"\u8731>P{i2};",
+	"\u8732>We{i3};",
+	"\u8733>Dun;",
+	"\u8734>Y{i4};",
+	"\u8735>Yuan;",
+	"\u8736>S{u4};",
+	"\u8737>Qu{a2}n;",
+	"\u8738>Qi{a3}n;",
+	"\u8739>Ru{i4};",
+	"\u873A>N{i2};",
+	"\u873B>Qing;",
+	"\u873C>We{i4};",
+	"\u873D>Li{a3}ng;",
+	"\u873E>Gu{o3};",
+	"\u873F>Wan;",
+	"\u8740>Dong;",
+	"\u8741>{E4};",
+	"\u8742>B{a3}n;",
+	"\u8743>D{i4};",
+	"\u8744>W{a3}ng;",
+	"\u8745>C{a2}n;",
+	"\u8746>Y{a3}ng;",
+	"\u8747>Y{i2}ng;",
+	"\u8748>Guo;",
+	"\u8749>Ch{a2}n;",
+	"\u874B>L{a4};",
+	"\u874C>Ke;",
+	"\u874D>J{i2};",
+	"\u874E>H{e2};",
+	"\u874F>T{i2}ng;",
+	"\u8750>Ma{i4};",
+	"\u8751>Xu;",
+	"\u8752>Mi{a2}n;",
+	"\u8753>Y{u2};",
+	"\u8754>Jie;",
+	"\u8755>Sh{i2};",
+	"\u8756>Xuan;",
+	"\u8757>Hu{a2}ng;",
+	"\u8758>Y{a3}n;",
+	"\u8759>Bian;",
+	"\u875A>Ro{u2};",
+	"\u875B>Wei;",
+	"\u875C>F{u4};",
+	"\u875D>Yu{a2}n;",
+	"\u875E>Me{i4};",
+	"\u875F>We{i4};",
+	"\u8760>F{u2};",
+	"\u8761>Ru{a3}n;",
+	"\u8762>Xi{e2};",
+	"\u8763>Yo{u2};",
+	"\u8764>Qi{u2};",
+	"\u8765>Ma{o2};",
+	"\u8766>Xia;",
+	"\u8767>Ying;",
+	"\u8768>Shi;",
+	"\u8769>Ch{o2}ng;",
+	"\u876A>Tang;",
+	"\u876B>Zhu;",
+	"\u876C>Zong;",
+	"\u876D>T{i2};",
+	"\u876E>F{u4};",
+	"\u876F>Yu{a2}n;",
+	"\u8770>Hu{i3};",
+	"\u8771>M{e2}ng;",
+	"\u8772>L{a4};",
+	"\u8773>D{u2};",
+	"\u8774>H{u2};",
+	"\u8775>Qiu;",
+	"\u8776>Di{e2};",
+	"\u8777>L{i4};",
+	"\u8778>Gua;",
+	"\u8779>Yun;",
+	"\u877A>J{u3};",
+	"\u877B>N{a3}n;",
+	"\u877C>Lo{u2};",
+	"\u877D>Q{u3}n;",
+	"\u877E>R{o2}ng;",
+	"\u877F>Y{i2}ng;",
+	"\u8780>Jiang;",
+	"\u8782>L{a2}ng;",
+	"\u8783>P{a2}ng;",
+	"\u8784>Si;",
+	"\u8785>Xi;",
+	"\u8786>C{i4};",
+	"\u8787>Xi;",
+	"\u8788>Yu{a2}n;",
+	"\u8789>Weng;",
+	"\u878A>Li{a2}n;",
+	"\u878B>Sou;",
+	"\u878C>Ban;",
+	"\u878D>R{o2}ng;",
+	"\u878E>R{o2}ng;",
+	"\u878F>J{i2};",
+	"\u8790>Wu;",
+	"\u8791>Qi{u4};",
+	"\u8792>H{a4}n;",
+	"\u8793>Q{i2}n;",
+	"\u8794>Y{i2};",
+	"\u8795>Bi;",
+	"\u8796>Hu{a2};",
+	"\u8797>T{a2}ng;",
+	"\u8798>Y{i3};",
+	"\u8799>D{u4};",
+	"\u879A>Na{i4};",
+	"\u879B>H{e2};",
+	"\u879C>H{u2};",
+	"\u879D>Hu{i4};",
+	"\u879E>M{a3};",
+	"\u879F>M{i2}ng;",
+	"\u87A0>Y{i4};",
+	"\u87A1>W{e2}n;",
+	"\u87A2>Y{i2}ng;",
+	"\u87A3>T{e2}ng;",
+	"\u87A4>Y{u3};",
+	"\u87A5>Cang;",
+	"\u87A8>M{a3}n;",
+	"\u87AA>Shang;",
+	"\u87AB>Zhe;",
+	"\u87AC>Ca{o2};",
+	"\u87AD>Chi;",
+	"\u87AE>D{i4};",
+	"\u87AF>A{o2};",
+	"\u87B0>L{u4};",
+	"\u87B1>We{i4};",
+	"\u87B2>Zh{i4};",
+	"\u87B3>T{a2}ng;",
+	"\u87B4>Ch{e2}n;",
+	"\u87B5>Piao;",
+	"\u87B6>Q{u2};",
+	"\u87B7>P{i2};",
+	"\u87B8>Y{u2};",
+	"\u87B9>Ji{a4}n;",
+	"\u87BA>Lu{o2};",
+	"\u87BB>Lo{u2};",
+	"\u87BC>Q{i3}n;",
+	"\u87BD>Zhong;",
+	"\u87BE>Y{i3}n;",
+	"\u87BF>Jiang;",
+	"\u87C0>Shua{i4};",
+	"\u87C1>W{e2}n;",
+	"\u87C2>Jiao;",
+	"\u87C3>W{a4}n;",
+	"\u87C4>Zh{i2};",
+	"\u87C5>Zh{e4};",
+	"\u87C6>M{a2};",
+	"\u87C7>M{a2};",
+	"\u87C8>Guo;",
+	"\u87C9>Li{u2};",
+	"\u87CA>Ma{o2};",
+	"\u87CB>Xi;",
+	"\u87CC>Cong;",
+	"\u87CD>L{i2};",
+	"\u87CE>M{a3}n;",
+	"\u87CF>Xiao;",
+	"\u87D1>Zhang;",
+	"\u87D2>M{a3}ng;",
+	"\u87D3>Xi{a4}ng;",
+	"\u87D4>M{o4};",
+	"\u87D5>Zui;",
+	"\u87D6>Si;",
+	"\u87D7>Qiu;",
+	"\u87D8>T{e4};",
+	"\u87D9>Zh{i2};",
+	"\u87DA>P{e2}ng;",
+	"\u87DB>P{e2}ng;",
+	"\u87DC>Jia{o3};",
+	"\u87DD>Q{u2};",
+	"\u87DE>Bi{e2};",
+	"\u87DF>Lia{o2};",
+	"\u87E0>P{a2}n;",
+	"\u87E1>Gu{i3};",
+	"\u87E2>X{i3};",
+	"\u87E3>J{i3};",
+	"\u87E4>Zhuan;",
+	"\u87E5>Hu{a2}ng;",
+	"\u87E6>Fe{i4};",
+	"\u87E7>La{o2};",
+	"\u87E8>Ju{e2};",
+	"\u87E9>Ju{e2};",
+	"\u87EA>Hu{i4};",
+	"\u87EB>Y{i2}n;",
+	"\u87EC>Ch{a2}n;",
+	"\u87ED>Jiao;",
+	"\u87EE>Sh{a4}n;",
+	"\u87EF>Ra{o2};",
+	"\u87F0>Xiao;",
+	"\u87F1>Mo{u2};",
+	"\u87F2>Ch{o2}ng;",
+	"\u87F3>X{u2}n;",
+	"\u87F4>Si;",
+	"\u87F6>Cheng;",
+	"\u87F7>Dang;",
+	"\u87F8>L{i3};",
+	"\u87F9>Xi{e4};",
+	"\u87FA>Sh{a4}n;",
+	"\u87FB>Y{i3};",
+	"\u87FC>J{i3}ng;",
+	"\u87FD>D{a2};",
+	"\u87FE>Ch{a2}n;",
+	"\u87FF>Q{i4};",
+	"\u8800>Ci;",
+	"\u8801>Xi{a4}ng;",
+	"\u8802>Sh{e4};",
+	"\u8803>Lu{o3};",
+	"\u8804>Q{i2}n;",
+	"\u8805>Y{i2}ng;",
+	"\u8806>Cha{i4};",
+	"\u8807>L{i4};",
+	"\u8808>Z{e2};",
+	"\u8809>Xuan;",
+	"\u880A>Li{a2}n;",
+	"\u880B>Zh{u2};",
+	"\u880C>Z{e2};",
+	"\u880D>Xie;",
+	"\u880E>M{a3}ng;",
+	"\u880F>Xi{e4};",
+	"\u8810>Q{i2};",
+	"\u8811>R{o2}ng;",
+	"\u8812>Ji{a3}n;",
+	"\u8813>M{e3}ng;",
+	"\u8814>Ha{o2};",
+	"\u8815>Ru{a3}n;",
+	"\u8816>Hu{o4};",
+	"\u8817>Zhu{o2};",
+	"\u8818>Ji{e2};",
+	"\u8819>Bin;",
+	"\u881A>H{e4};",
+	"\u881B>Mi{e4};",
+	"\u881C>F{a2}n;",
+	"\u881D>Le{i2};",
+	"\u881E>Ji{e2};",
+	"\u881F>L{a4};",
+	"\u8820>M{i4};",
+	"\u8821>L{i3};",
+	"\u8822>Ch{u3}n;",
+	"\u8823>L{i4};",
+	"\u8824>Qiu;",
+	"\u8825>Ni{e4};",
+	"\u8826>L{u2};",
+	"\u8827>D{u4};",
+	"\u8828>Xiao;",
+	"\u8829>Zhu;",
+	"\u882A>L{o2}ng;",
+	"\u882B>L{i4};",
+	"\u882C>L{o2}ng;",
+	"\u882D>Feng;",
+	"\u882E>Ye;",
+	"\u882F>B{e4}ng;",
+	"\u8830>Sh{a4}ng;",
+	"\u8831>G{u3};",
+	"\u8832>Juan;",
+	"\u8833>Ying;",
+	"\u8835>Xi;",
+	"\u8836>C{a2}n;",
+	"\u8837>Q{u2};",
+	"\u8838>Qu{a2}n;",
+	"\u8839>D{u4};",
+	"\u883A>C{a2}n;",
+	"\u883B>M{a2}n;",
+	"\u883C>Ju{e2};",
+	"\u883D>Ji{e2};",
+	"\u883E>Zh{u2};",
+	"\u883F>Zh{a2};",
+	"\u8840>Xi{e3};",
+	"\u8841>Huang;",
+	"\u8842>Ni{u4};",
+	"\u8843>Pei;",
+	"\u8844>N{uu4};",
+	"\u8845>X{i4}n;",
+	"\u8846>Zh{o4}ng;",
+	"\u8847>M{o4};",
+	"\u8848>{E4}r;",
+	"\u8849>K{e4};",
+	"\u884A>Mi{e4};",
+	"\u884B>X{i4};",
+	"\u884C>X{i2}ng;",
+	"\u884D>Y{a3}n;",
+	"\u884E>K{a4}n;",
+	"\u884F>Yu{a4}n;",
+	"\u8851>L{i2}ng;",
+	"\u8852>Xu{a4}n;",
+	"\u8853>Sh{u4};",
+	"\u8854>Xi{a2}n;",
+	"\u8855>T{o4}ng;",
+	"\u8856>L{o4}ng;",
+	"\u8857>Jie;",
+	"\u8858>Xi{a2}n;",
+	"\u8859>Y{a2};",
+	"\u885A>H{u2};",
+	"\u885B>We{i4};",
+	"\u885C>Da{o4};",
+	"\u885D>Chong;",
+	"\u885E>We{i4};",
+	"\u885F>Da{o4};",
+	"\u8860>Zhun;",
+	"\u8861>H{e2}ng;",
+	"\u8862>Q{u2};",
+	"\u8863>Yi;",
+	"\u8864>Yi1zi4p{a2}ng;",
+	"\u8865>B{u3};",
+	"\u8866>G{a3}n;",
+	"\u8867>Y{u2};",
+	"\u8868>Bia{o3};",
+	"\u8869>Ch{a4};",
+	"\u886A>Y{i3};",
+	"\u886B>Shan;",
+	"\u886C>Ch{e4}n;",
+	"\u886D>Fu;",
+	"\u886E>G{u3}n;",
+	"\u886F>Fen;",
+	"\u8870>Shuai;",
+	"\u8871>Ji{e2};",
+	"\u8872>N{a4};",
+	"\u8873>Zhong;",
+	"\u8874>D{a3}n;",
+	"\u8875>R{i4};",
+	"\u8876>Zh{o4}ng;",
+	"\u8877>Zhong;",
+	"\u8878>Xi{e4};",
+	"\u8879>Q{i2};",
+	"\u887A>Xi{e2};",
+	"\u887B>R{a2}n;",
+	"\u887C>Zhi;",
+	"\u887D>R{e4}n;",
+	"\u887E>Qin;",
+	"\u887F>Jin;",
+	"\u8880>Jun;",
+	"\u8881>Yu{a2}n;",
+	"\u8882>Me{i4};",
+	"\u8883>Cha{i4};",
+	"\u8884>A{o3};",
+	"\u8885>Nia{o3};",
+	"\u8886>Hui;",
+	"\u8887>R{a2}n;",
+	"\u8888>Jia;",
+	"\u8889>Tu{o2};",
+	"\u888A>L{i3}ng;",
+	"\u888B>Da{i4};",
+	"\u888C>Ba{o4};",
+	"\u888D>Pa{o2};",
+	"\u888E>Ya{o4};",
+	"\u888F>Zu{o4};",
+	"\u8890>B{i4};",
+	"\u8891>Sha{o4};",
+	"\u8892>T{a3}n;",
+	"\u8893>J{u3};",
+	"\u8894>H{e4};",
+	"\u8895>Sh{u4};",
+	"\u8896>Xi{u4};",
+	"\u8897>Zh{e3}n;",
+	"\u8898>Y{i2};",
+	"\u8899>P{a4};",
+	"\u889A>Bo;",
+	"\u889B>Di;",
+	"\u889C>W{a4};",
+	"\u889D>F{u4};",
+	"\u889E>G{u3}n;",
+	"\u889F>Zh{i4};",
+	"\u88A0>Zh{i4};",
+	"\u88A1>R{a2}n;",
+	"\u88A2>P{a4}n;",
+	"\u88A3>Y{i4};",
+	"\u88A4>Ma{o4};",
+	"\u88A5>Tuo;",
+	"\u88A6>N{a4};",
+	"\u88A7>Kou;",
+	"\u88A8>Xi{a4}n;",
+	"\u88A9>Chan;",
+	"\u88AA>Qu;",
+	"\u88AB>Be{i4};",
+	"\u88AC>G{u3}n;",
+	"\u88AD>X{i2};",
+	"\u88AF>B{o2};",
+	"\u88B1>F{u2};",
+	"\u88B2>Y{i2};",
+	"\u88B3>Ch{i3};",
+	"\u88B4>K{u4};",
+	"\u88B5>R{e4}n;",
+	"\u88B6>Ji{a4}ng;",
+	"\u88B7>Ji{a2};",
+	"\u88B8>C{u2}n;",
+	"\u88B9>M{o4};",
+	"\u88BA>Ji{e2};",
+	"\u88BB>{E2}r;",
+	"\u88BC>Lu{o4};",
+	"\u88BD>R{u2};",
+	"\u88BE>Zhu;",
+	"\u88BF>Gui;",
+	"\u88C0>Yin;",
+	"\u88C1>Ca{i2};",
+	"\u88C2>Li{e4};",
+	"\u88C5>Zhuang;",
+	"\u88C6>Dang;",
+	"\u88C8>Kun;",
+	"\u88C9>K{e4}n;",
+	"\u88CA>Nia{o3};",
+	"\u88CB>Sh{u4};",
+	"\u88CC>Ji{a2};",
+	"\u88CD>K{u3}n;",
+	"\u88CE>Ch{e2}ng;",
+	"\u88CF>L{i3};",
+	"\u88D0>Juan;",
+	"\u88D1>Shen;",
+	"\u88D2>Po{u2};",
+	"\u88D3>G{e2};",
+	"\u88D4>Y{i4};",
+	"\u88D5>Y{u4};",
+	"\u88D6>Zh{e3}n;",
+	"\u88D7>Li{u2};",
+	"\u88D8>Qi{u2};",
+	"\u88D9>Q{u2}n;",
+	"\u88DA>J{i4};",
+	"\u88DB>Y{i4};",
+	"\u88DC>B{u3};",
+	"\u88DD>Zhuang;",
+	"\u88DE>Shu{i4};",
+	"\u88DF>Sha;",
+	"\u88E0>Q{u2}n;",
+	"\u88E1>L{i3};",
+	"\u88E2>Li{a2}n;",
+	"\u88E3>Li{a4}n;",
+	"\u88E4>K{u4};",
+	"\u88E5>Ji{a3}n;",
+	"\u88E6>Fo{u2};",
+	"\u88E7>Chan;",
+	"\u88E8>B{i4};",
+	"\u88E9>Gun;",
+	"\u88EA>Ta{o2};",
+	"\u88EB>Yu{a4}n;",
+	"\u88EC>L{i2}ng;",
+	"\u88ED>Ch{i3};",
+	"\u88EE>Chang;",
+	"\u88EF>Cho{u2};",
+	"\u88F0>Du{o2};",
+	"\u88F1>Bia{o3};",
+	"\u88F2>Li{a3}ng;",
+	"\u88F3>Ch{a2}ng;",
+	"\u88F4>Pe{i2};",
+	"\u88F5>Pe{i2};",
+	"\u88F6>Fei;",
+	"\u88F7>Yuan;",
+	"\u88F8>Lu{o3};",
+	"\u88F9>Gu{o3};",
+	"\u88FA>Y{a3}n;",
+	"\u88FB>D{u3};",
+	"\u88FC>X{i2};",
+	"\u88FD>Zh{i4};",
+	"\u88FE>Ju;",
+	"\u88FF>Q{i3};",
+	"\u8900>J{i4};",
+	"\u8901>Zh{i2};",
+	"\u8902>Gu{a4};",
+	"\u8903>K{e4}n;",
+	"\u8905>T{i4};",
+	"\u8906>T{i2};",
+	"\u8907>F{u4};",
+	"\u8908>Ch{o2}ng;",
+	"\u8909>Xie;",
+	"\u890A>Bi{a3}n;",
+	"\u890B>Di{e2};",
+	"\u890C>Kun;",
+	"\u890D>Duan;",
+	"\u890E>Xi{u4};",
+	"\u890F>Xi{u4};",
+	"\u8910>H{e2};",
+	"\u8911>Yu{a4}n;",
+	"\u8912>Bao;",
+	"\u8913>Ba{o3};",
+	"\u8914>F{u4};",
+	"\u8915>Y{u2};",
+	"\u8916>Tu{a4}n;",
+	"\u8917>Y{a3}n;",
+	"\u8918>Hui;",
+	"\u8919>Be{i4};",
+	"\u891A>Ch{u3};",
+	"\u891B>L{uu3};",
+	"\u891E>Y{u3}n;",
+	"\u891F>D{a2};",
+	"\u8920>Gou;",
+	"\u8921>Da;",
+	"\u8922>Hua{i2};",
+	"\u8923>R{o2}ng;",
+	"\u8924>Yu{a4}n;",
+	"\u8925>R{u4};",
+	"\u8926>Na{i4};",
+	"\u8927>Ji{o3}ng;",
+	"\u8928>Su{o3};",
+	"\u8929>Ban;",
+	"\u892A>T{u4}n;",
+	"\u892B>Ch{i3};",
+	"\u892C>S{a3}ng;",
+	"\u892D>Nia{o3};",
+	"\u892E>Ying;",
+	"\u892F>Ji{e4};",
+	"\u8930>Qian;",
+	"\u8931>Hua{i2};",
+	"\u8932>K{u4};",
+	"\u8933>Li{a2}n;",
+	"\u8934>Ba{o3};",
+	"\u8935>L{i2};",
+	"\u8936>Zh{e2};",
+	"\u8937>Shi;",
+	"\u8938>L{uu3};",
+	"\u8939>Y{i4};",
+	"\u893A>Di{e2};",
+	"\u893B>Xi{e4};",
+	"\u893C>Xian;",
+	"\u893D>We{i4};",
+	"\u893E>Bia{o3};",
+	"\u893F>Ca{o2};",
+	"\u8940>Ji;",
+	"\u8941>Ji{a3}ng;",
+	"\u8942>Sen;",
+	"\u8943>Bao;",
+	"\u8944>Xiang;",
+	"\u8946>P{u2};",
+	"\u8947>Ji{a3}n;",
+	"\u8948>Zhu{a4}n;",
+	"\u8949>Ji{a4}n;",
+	"\u894A>Zu{i4};",
+	"\u894B>J{i2};",
+	"\u894C>Dan;",
+	"\u894D>Z{a2};",
+	"\u894E>F{a2}n;",
+	"\u894F>B{o2};",
+	"\u8950>Xi{a4}ng;",
+	"\u8951>X{i2}n;",
+	"\u8952>Bi{e2};",
+	"\u8953>Ra{o2};",
+	"\u8954>M{a3}n;",
+	"\u8955>L{a2}n;",
+	"\u8956>A{o3};",
+	"\u8957>Du{o2};",
+	"\u8958>Gu{i4};",
+	"\u8959>Ca{o4};",
+	"\u895A>Su{i4};",
+	"\u895B>N{o2}ng;",
+	"\u895C>Chan;",
+	"\u895D>Li{a4}n;",
+	"\u895E>B{i4};",
+	"\u895F>Jin;",
+	"\u8960>Dang;",
+	"\u8961>Sh{u2};",
+	"\u8962>T{a3}n;",
+	"\u8963>B{i4};",
+	"\u8964>L{a2}n;",
+	"\u8965>P{u2};",
+	"\u8966>R{u2};",
+	"\u8967>Zh{i3};",
+	"\u8969>Sh{u3};",
+	"\u896A>W{a4};",
+	"\u896B>Sh{i4};",
+	"\u896C>Ba{i3};",
+	"\u896D>Xi{e2};",
+	"\u896E>B{o2};",
+	"\u896F>Ch{e4}n;",
+	"\u8970>La{i4};",
+	"\u8971>L{o2}ng;",
+	"\u8972>X{i2};",
+	"\u8973>Xian;",
+	"\u8974>L{a2}n;",
+	"\u8975>Zh{e2};",
+	"\u8976>Da{i4};",
+	"\u8978>Z{a4}n;",
+	"\u8979>Shi;",
+	"\u897A>Ji{a3}n;",
+	"\u897B>P{a4}n;",
+	"\u897C>Y{i4};",
+	"\u897E>Y{a4};",
+	"\u897F>Xi;",
+	"\u8980>Xi;",
+	"\u8981>Ya{o4};",
+	"\u8982>F{e3}ng;",
+	"\u8983>T{a2}n;",
+	"\u8985>Bia{o4};",
+	"\u8986>F{u4};",
+	"\u8987>B{a4};",
+	"\u8988>H{e2};",
+	"\u8989>Ji;",
+	"\u898A>Ji;",
+	"\u898B>Ji{a4}n;",
+	"\u898C>Guan;",
+	"\u898D>Bi{a4}n;",
+	"\u898E>Y{a4}n;",
+	"\u898F>Gui;",
+	"\u8990>Ju{e2};",
+	"\u8991>Pi{a3}n;",
+	"\u8992>Ma{o2};",
+	"\u8993>M{i4};",
+	"\u8994>M{i4};",
+	"\u8995>Mi{e4};",
+	"\u8996>Sh{i4};",
+	"\u8997>Si;",
+	"\u8998>Zhan;",
+	"\u8999>Lu{o2};",
+	"\u899A>Ju{e2};",
+	"\u899B>M{i4};",
+	"\u899C>Tia{o4};",
+	"\u899D>Li{a2}n;",
+	"\u899E>Ya{o4};",
+	"\u899F>Zh{i4};",
+	"\u89A0>Jun;",
+	"\u89A1>X{i2};",
+	"\u89A2>Sh{a3}n;",
+	"\u89A3>Wei;",
+	"\u89A4>X{i4};",
+	"\u89A5>Ti{a3}n;",
+	"\u89A6>Y{u2};",
+	"\u89A7>L{a3}n;",
+	"\u89A8>{E4};",
+	"\u89A9>D{u3};",
+	"\u89AA>Qin;",
+	"\u89AB>P{a3}ng;",
+	"\u89AC>J{i4};",
+	"\u89AD>M{i2}ng;",
+	"\u89AE>Y{i2}ng;",
+	"\u89AF>Go{u4};",
+	"\u89B0>Q{u4};",
+	"\u89B1>Zh{a4}n;",
+	"\u89B2>J{i3}n;",
+	"\u89B3>Guan;",
+	"\u89B4>Deng;",
+	"\u89B5>Ji{a4}n;",
+	"\u89B6>Lu{o2};",
+	"\u89B7>Q{u4};",
+	"\u89B8>Ji{a4}n;",
+	"\u89B9>We{i2};",
+	"\u89BA>Ju{e2};",
+	"\u89BB>Q{u4};",
+	"\u89BC>Lu{o2};",
+	"\u89BD>L{a3}n;",
+	"\u89BE>Sh{e3}n;",
+	"\u89BF>D{i2};",
+	"\u89C0>Guan;",
+	"\u89C1>Ji{a4}n;",
+	"\u89C2>Guan;",
+	"\u89C3>Y{a4}n;",
+	"\u89C4>Gui;",
+	"\u89C5>M{i4};",
+	"\u89C6>Sh{i4};",
+	"\u89C7>Zhan;",
+	"\u89C8>L{a3}n;",
+	"\u89C9>Ju{e2};",
+	"\u89CA>J{i4};",
+	"\u89CB>X{i2};",
+	"\u89CC>D{i2};",
+	"\u89CD>Ti{a3}n;",
+	"\u89CE>Y{u2};",
+	"\u89CF>Go{u4};",
+	"\u89D0>J{i3}n;",
+	"\u89D1>Q{u4};",
+	"\u89D2>Jia{o3};",
+	"\u89D3>Jiu;",
+	"\u89D4>Jin;",
+	"\u89D5>Cu;",
+	"\u89D6>Ju{e2};",
+	"\u89D7>Zh{i4};",
+	"\u89D8>Cha{o4};",
+	"\u89D9>J{i2};",
+	"\u89DA>Gu;",
+	"\u89DB>D{a4}n;",
+	"\u89DC>Zu{i3};",
+	"\u89DD>D{i3};",
+	"\u89DE>Shang;",
+	"\u89DF>Hu{a4};",
+	"\u89E0>Qu{a2}n;",
+	"\u89E1>G{e2};",
+	"\u89E2>Ch{i4};",
+	"\u89E3>Ji{e3};",
+	"\u89E4>Gu{i3};",
+	"\u89E5>Gong;",
+	"\u89E6>H{o2}ng;",
+	"\u89E7>Ji{e3};",
+	"\u89E8>H{u4}n;",
+	"\u89E9>Qi{u2};",
+	"\u89EA>Xing;",
+	"\u89EB>S{u4};",
+	"\u89EC>N{i2};",
+	"\u89ED>Ji;",
+	"\u89EE>L{u4};",
+	"\u89EF>Zh{i4};",
+	"\u89F0>Zha;",
+	"\u89F1>B{i4};",
+	"\u89F2>Xing;",
+	"\u89F3>H{u2};",
+	"\u89F4>Shang;",
+	"\u89F5>Gong;",
+	"\u89F6>Zh{i4};",
+	"\u89F7>Xu{e2};",
+	"\u89F8>Ch{u4};",
+	"\u89F9>Xi;",
+	"\u89FA>Y{i2};",
+	"\u89FB>L{u4};",
+	"\u89FC>Ju{e2};",
+	"\u89FD>Xi;",
+	"\u89FE>Y{a4}n;",
+	"\u89FF>Xi;",
+	"\u8A00>Y{a2}n;",
+	"\u8A01>Yan2zi4p{a2}ng;",
+	"\u8A02>D{i4}ng;",
+	"\u8A03>F{u4};",
+	"\u8A04>Qi{u2};",
+	"\u8A05>Qi{u2};",
+	"\u8A06>Jia{o4};",
+	"\u8A07>Hong;",
+	"\u8A08>J{i4};",
+	"\u8A09>F{a4}n;",
+	"\u8A0A>X{u4}n;",
+	"\u8A0B>Dia{o4};",
+	"\u8A0C>H{o2}ng;",
+	"\u8A0D>Ch{a4};",
+	"\u8A0E>Ta{o3};",
+	"\u8A0F>Xu;",
+	"\u8A10>Ji{e2};",
+	"\u8A11>Y{i2};",
+	"\u8A12>R{e4}n;",
+	"\u8A13>X{u4}n;",
+	"\u8A14>Y{i2}n;",
+	"\u8A15>Sh{a4}n;",
+	"\u8A16>Q{i4};",
+	"\u8A17>Tuo;",
+	"\u8A18>J{i4};",
+	"\u8A19>X{u4}n;",
+	"\u8A1A>Y{i2}n;",
+	"\u8A1B>{E2};",
+	"\u8A1C>Fen;",
+	"\u8A1D>Y{a4};",
+	"\u8A1E>Yao;",
+	"\u8A1F>S{o4}ng;",
+	"\u8A20>Sh{e3}n;",
+	"\u8A21>Y{i2}n;",
+	"\u8A22>Xin;",
+	"\u8A23>Ju{e2};",
+	"\u8A24>Xia{o2};",
+	"\u8A25>N{e4};",
+	"\u8A26>Ch{e2}n;",
+	"\u8A27>Yo{u2};",
+	"\u8A28>Zh{i3};",
+	"\u8A29>Xiong;",
+	"\u8A2A>F{a3}ng;",
+	"\u8A2B>X{i4}n;",
+	"\u8A2C>Chao;",
+	"\u8A2D>Sh{e4};",
+	"\u8A2E>Xian;",
+	"\u8A2F>Sh{a3};",
+	"\u8A30>T{u2}n;",
+	"\u8A31>X{u3};",
+	"\u8A32>Y{i4};",
+	"\u8A33>Y{i4};",
+	"\u8A34>S{u4};",
+	"\u8A35>Chi;",
+	"\u8A36>He;",
+	"\u8A37>Shen;",
+	"\u8A38>H{e2};",
+	"\u8A39>X{u4};",
+	"\u8A3A>Zh{e3}n;",
+	"\u8A3B>Zh{u4};",
+	"\u8A3C>Zh{e4}ng;",
+	"\u8A3D>Go{u4};",
+	"\u8A3E>Z{i3};",
+	"\u8A3F>Z{i3};",
+	"\u8A40>Zhan;",
+	"\u8A41>G{u3};",
+	"\u8A42>F{u4};",
+	"\u8A43>Qu{a3}n;",
+	"\u8A44>Di{e2};",
+	"\u8A45>L{i2}ng;",
+	"\u8A46>D{i3};",
+	"\u8A47>Y{a4}ng;",
+	"\u8A48>L{i4};",
+	"\u8A49>Na{o2};",
+	"\u8A4A>P{a4}n;",
+	"\u8A4B>Zho{u4};",
+	"\u8A4C>G{a4}n;",
+	"\u8A4D>Y{i4};",
+	"\u8A4E>J{u4};",
+	"\u8A4F>A{o4};",
+	"\u8A50>Zh{a4};",
+	"\u8A51>Tu{o2};",
+	"\u8A52>Y{i2};",
+	"\u8A53>Q{u3};",
+	"\u8A54>Zha{o4};",
+	"\u8A55>P{i2}ng;",
+	"\u8A56>B{i4};",
+	"\u8A57>Xi{o4}ng;",
+	"\u8A58>Q{u4};",
+	"\u8A59>B{a2};",
+	"\u8A5A>D{a2};",
+	"\u8A5B>Z{u3};",
+	"\u8A5C>Tao;",
+	"\u8A5D>Zh{u3};",
+	"\u8A5E>C{i2};",
+	"\u8A5F>Zh{e2};",
+	"\u8A60>Y{o3}ng;",
+	"\u8A61>X{u3};",
+	"\u8A62>X{u2}n;",
+	"\u8A63>Y{i4};",
+	"\u8A64>Hu{a3}ng;",
+	"\u8A65>H{e2};",
+	"\u8A66>Sh{i4};",
+	"\u8A67>Ch{a2};",
+	"\u8A68>Jiao;",
+	"\u8A69>Shi;",
+	"\u8A6A>H{e3}n;",
+	"\u8A6B>Ch{a4};",
+	"\u8A6C>Go{u4};",
+	"\u8A6D>Gu{i3};",
+	"\u8A6E>Qu{a2}n;",
+	"\u8A6F>Hu{i4};",
+	"\u8A70>Ji{e2};",
+	"\u8A71>Hu{a4};",
+	"\u8A72>Gai;",
+	"\u8A73>Xi{a2}ng;",
+	"\u8A74>Wei;",
+	"\u8A75>Shen;",
+	"\u8A76>Cho{u2};",
+	"\u8A77>T{o2}ng;",
+	"\u8A78>M{i2};",
+	"\u8A79>Zhan;",
+	"\u8A7A>M{i4}ng;",
+	"\u8A7B>{E4};",
+	"\u8A7C>Hui;",
+	"\u8A7D>Y{a2}n;",
+	"\u8A7E>Xiong;",
+	"\u8A7F>Gu{a4};",
+	"\u8A80>{E4}r;",
+	"\u8A81>B{e3}ng;",
+	"\u8A82>Tia{o3};",
+	"\u8A83>Ch{i3};",
+	"\u8A84>Le{i3};",
+	"\u8A85>Zhu;",
+	"\u8A86>Kuang;",
+	"\u8A87>Kua;",
+	"\u8A88>W{u2};",
+	"\u8A89>Y{u4};",
+	"\u8A8A>T{e2}ng;",
+	"\u8A8B>J{i4};",
+	"\u8A8C>Zh{i4};",
+	"\u8A8D>R{e4}n;",
+	"\u8A8E>S{u4};",
+	"\u8A8F>L{a3}ng;",
+	"\u8A90>{E2};",
+	"\u8A91>Ku{a2}ng;",
+	"\u8A92>{E4};",
+	"\u8A93>Sh{i4};",
+	"\u8A94>T{i3}ng;",
+	"\u8A95>D{a4}n;",
+	"\u8A96>B{o2};",
+	"\u8A97>Ch{a2}n;",
+	"\u8A98>Yo{u4};",
+	"\u8A99>H{e2}ng;",
+	"\u8A9A>Qia{o4};",
+	"\u8A9B>Qin;",
+	"\u8A9C>Shu{a4};",
+	"\u8A9D>An;",
+	"\u8A9E>Y{u3};",
+	"\u8A9F>Xia{o4};",
+	"\u8AA0>Ch{e2}ng;",
+	"\u8AA1>Ji{e4};",
+	"\u8AA2>Xi{a4}n;",
+	"\u8AA3>W{u2};",
+	"\u8AA4>W{u4};",
+	"\u8AA5>Ga{o4};",
+	"\u8AA6>S{o4}ng;",
+	"\u8AA7>P{u3};",
+	"\u8AA8>Hu{i4};",
+	"\u8AA9>J{i4}ng;",
+	"\u8AAA>Shuo;",
+	"\u8AAB>Zh{e4}n;",
+	"\u8AAC>Shuo;",
+	"\u8AAD>D{u2};",
+	"\u8AAF>Ch{a4}ng;",
+	"\u8AB0>Shu{i2};",
+	"\u8AB1>Ji{e2};",
+	"\u8AB2>K{e4};",
+	"\u8AB3>Qu;",
+	"\u8AB4>C{o2}ng;",
+	"\u8AB5>Xia{o2};",
+	"\u8AB6>Su{i4};",
+	"\u8AB7>W{a3}ng;",
+	"\u8AB8>Xu{a2}n;",
+	"\u8AB9>Fe{i3};",
+	"\u8ABA>Chi;",
+	"\u8ABB>T{a4};",
+	"\u8ABC>Y{i2};",
+	"\u8ABD>N{a2};",
+	"\u8ABE>Y{i2}n;",
+	"\u8ABF>Dia{o4};",
+	"\u8AC0>P{i3};",
+	"\u8AC1>Chu{o4};",
+	"\u8AC2>Ch{a3}n;",
+	"\u8AC3>Chen;",
+	"\u8AC4>Zhun;",
+	"\u8AC5>Ji;",
+	"\u8AC6>Qi;",
+	"\u8AC7>T{a2}n;",
+	"\u8AC8>Zhu{i4};",
+	"\u8AC9>We{i3};",
+	"\u8ACA>J{u2};",
+	"\u8ACB>Q{i3}ng;",
+	"\u8ACC>Ji{a4}n;",
+	"\u8ACD>Zheng;",
+	"\u8ACE>Z{e2};",
+	"\u8ACF>Zou;",
+	"\u8AD0>Qian;",
+	"\u8AD1>Zhu{o2};",
+	"\u8AD2>Li{a4}ng;",
+	"\u8AD3>Ji{a4}n;",
+	"\u8AD4>Zh{u4};",
+	"\u8AD5>Ha{o2};",
+	"\u8AD6>L{u4}n;",
+	"\u8AD7>Sh{e3}n;",
+	"\u8AD8>Bia{o3};",
+	"\u8AD9>Hua{i4};",
+	"\u8ADA>Pi{a2}n;",
+	"\u8ADB>Y{u2};",
+	"\u8ADC>Di{e2};",
+	"\u8ADD>X{u3};",
+	"\u8ADE>Pi{a2}n;",
+	"\u8ADF>Sh{i4};",
+	"\u8AE0>Xuan;",
+	"\u8AE1>Sh{i4};",
+	"\u8AE2>H{u4}n;",
+	"\u8AE3>Hu{a4};",
+	"\u8AE4>{E4};",
+	"\u8AE5>Zh{o4}ng;",
+	"\u8AE6>D{i4};",
+	"\u8AE7>Xi{e2};",
+	"\u8AE8>F{u2};",
+	"\u8AE9>P{u3};",
+	"\u8AEA>T{i2}ng;",
+	"\u8AEB>Ji{a4}n;",
+	"\u8AEC>Q{i3};",
+	"\u8AED>Y{u4};",
+	"\u8AEE>Zi;",
+	"\u8AEF>Chu{a2}n;",
+	"\u8AF0>X{i3};",
+	"\u8AF1>Hu{i4};",
+	"\u8AF2>Yin;",
+	"\u8AF3>An;",
+	"\u8AF4>Xi{a2}n;",
+	"\u8AF5>N{a2}n;",
+	"\u8AF6>Ch{e2}n;",
+	"\u8AF7>Feng;",
+	"\u8AF8>Zhu;",
+	"\u8AF9>Y{a2}ng;",
+	"\u8AFA>Y{a4}n;",
+	"\u8AFB>Heng;",
+	"\u8AFC>Xuan;",
+	"\u8AFD>G{e2};",
+	"\u8AFE>Nu{o4};",
+	"\u8AFF>Q{i4};",
+	"\u8B00>Mo{u2};",
+	"\u8B01>Y{e4};",
+	"\u8B02>We{i4};",
+	"\u8B04>T{e2}ng;",
+	"\u8B05>Zou;",
+	"\u8B06>Sh{a4}n;",
+	"\u8B07>Ji{a3}n;",
+	"\u8B08>B{o2};",
+	"\u8B09>K{u4}1;",
+	"\u8B0A>Hu{a3}ng;",
+	"\u8B0B>Hu{o4};",
+	"\u8B0C>Ge;",
+	"\u8B0D>Y{i2}ng;",
+	"\u8B0E>M{i2};",
+	"\u8B0F>Xia{o3};",
+	"\u8B10>M{i4};",
+	"\u8B11>X{i4};",
+	"\u8B12>Qiang;",
+	"\u8B13>Chen;",
+	"\u8B14>N{uu}{e4};",
+	"\u8B15>T{i2};",
+	"\u8B16>S{u4};",
+	"\u8B17>B{a4}ng;",
+	"\u8B18>Ch{i2};",
+	"\u8B19>Qian;",
+	"\u8B1A>Sh{i4};",
+	"\u8B1B>Ji{a3}ng;",
+	"\u8B1C>Yu{a4}n;",
+	"\u8B1D>Xi{e4};",
+	"\u8B1E>Xu{e4};",
+	"\u8B1F>Tao;",
+	"\u8B20>Ya{o2};",
+	"\u8B21>Ya{o2};",
+	"\u8B23>Y{u2};",
+	"\u8B24>Biao;",
+	"\u8B25>C{o4}ng;",
+	"\u8B26>Q{i4}ng;",
+	"\u8B27>L{i2};",
+	"\u8B28>M{o2};",
+	"\u8B29>M{o4};",
+	"\u8B2A>Shang;",
+	"\u8B2B>Zh{e2};",
+	"\u8B2C>Mi{u4};",
+	"\u8B2D>Ji{a3}n;",
+	"\u8B2E>Z{e2};",
+	"\u8B2F>Jie;",
+	"\u8B30>Li{a2}n;",
+	"\u8B31>Lo{u2};",
+	"\u8B32>Can;",
+	"\u8B33>Ou;",
+	"\u8B34>Gu{a4}n;",
+	"\u8B35>X{i2};",
+	"\u8B36>Zhu{o2};",
+	"\u8B37>A{o2};",
+	"\u8B38>A{o2};",
+	"\u8B39>J{i3}n;",
+	"\u8B3A>Zh{e2};",
+	"\u8B3B>Y{i2};",
+	"\u8B3C>H{u4};",
+	"\u8B3D>Ji{a4}ng;",
+	"\u8B3E>M{a2}n;",
+	"\u8B3F>Cha{o2};",
+	"\u8B40>H{a4}n;",
+	"\u8B41>Hu{a2};",
+	"\u8B42>Ch{a3}n;",
+	"\u8B43>Xu;",
+	"\u8B44>Zeng;",
+	"\u8B45>S{e4};",
+	"\u8B46>Xi;",
+	"\u8B47>She;",
+	"\u8B48>Du{i4};",
+	"\u8B49>Zh{e4}ng;",
+	"\u8B4A>Na{o2};",
+	"\u8B4B>L{a2}n;",
+	"\u8B4C>{E2};",
+	"\u8B4D>Y{i4}ng;",
+	"\u8B4E>Ju{e2};",
+	"\u8B4F>Ji;",
+	"\u8B50>Z{u3}n;",
+	"\u8B51>Jia{o3};",
+	"\u8B52>B{o4};",
+	"\u8B53>Hu{i4};",
+	"\u8B54>Zhu{a4}n;",
+	"\u8B55>M{u2};",
+	"\u8B56>Z{e4}n;",
+	"\u8B57>Zh{a2};",
+	"\u8B58>Sh{i4};",
+	"\u8B59>Qia{o2};",
+	"\u8B5A>T{a2}n;",
+	"\u8B5B>Z{e4}n;",
+	"\u8B5C>P{u3};",
+	"\u8B5D>Sh{e2}ng;",
+	"\u8B5E>Xuan;",
+	"\u8B5F>Za{o4};",
+	"\u8B60>Tan;",
+	"\u8B61>D{a3}ng;",
+	"\u8B62>Su{i4};",
+	"\u8B63>Qian;",
+	"\u8B64>Ji;",
+	"\u8B65>Jia{o4};",
+	"\u8B66>J{i3}ng;",
+	"\u8B67>Li{a2}n;",
+	"\u8B68>No{u2};",
+	"\u8B69>Yi;",
+	"\u8B6A>A{i4};",
+	"\u8B6B>Zhan;",
+	"\u8B6C>P{i4};",
+	"\u8B6D>Hu{i3};",
+	"\u8B6E>Hu{a4};",
+	"\u8B6F>Y{i4};",
+	"\u8B70>Y{i4};",
+	"\u8B71>Sh{a4}n;",
+	"\u8B72>R{a4}ng;",
+	"\u8B73>No{u4};",
+	"\u8B74>Qi{a3}n;",
+	"\u8B75>Zhu{i4};",
+	"\u8B76>T{a4};",
+	"\u8B77>H{u4};",
+	"\u8B78>Zhou;",
+	"\u8B79>Ha{o2};",
+	"\u8B7A>Y{e4};",
+	"\u8B7B>Ying;",
+	"\u8B7C>Ji{a4}n;",
+	"\u8B7D>Y{u4};",
+	"\u8B7E>Ji{a3}n;",
+	"\u8B7F>Hu{i4};",
+	"\u8B80>D{u2};",
+	"\u8B81>Zh{e2};",
+	"\u8B82>Xu{a4}n;",
+	"\u8B83>Z{a4}n;",
+	"\u8B84>Le{i3};",
+	"\u8B85>Sh{e3}n;",
+	"\u8B86>We{i4};",
+	"\u8B87>Ch{a3}n;",
+	"\u8B88>L{i4};",
+	"\u8B89>Y{i2};",
+	"\u8B8A>Bi{a4}n;",
+	"\u8B8B>Zh{e2};",
+	"\u8B8C>Y{a4}n;",
+	"\u8B8D>{E4};",
+	"\u8B8E>Cho{u2};",
+	"\u8B8F>We{i4};",
+	"\u8B90>Cho{u2};",
+	"\u8B91>Ya{o4};",
+	"\u8B92>Ch{a2}n;",
+	"\u8B93>R{a4}ng;",
+	"\u8B94>Y{i3}n;",
+	"\u8B95>L{a2}n;",
+	"\u8B96>Ch{e4}n;",
+	"\u8B97>Hu{o4};",
+	"\u8B98>Zh{e2};",
+	"\u8B99>Huan;",
+	"\u8B9A>Z{a4}n;",
+	"\u8B9B>Y{i4};",
+	"\u8B9C>D{a3}ng;",
+	"\u8B9D>Zhan;",
+	"\u8B9E>Y{a4}n;",
+	"\u8B9F>D{u2};",
+	"\u8BA0>Y{a2}n;",
+	"\u8BA1>J{i4};",
+	"\u8BA2>D{i4}ng;",
+	"\u8BA3>F{u4};",
+	"\u8BA4>R{e4}n;",
+	"\u8BA5>Ji;",
+	"\u8BA6>Ji{e2};",
+	"\u8BA7>H{o2}ng;",
+	"\u8BA8>Ta{o3};",
+	"\u8BA9>R{a4}ng;",
+	"\u8BAA>Sh{a4}n;",
+	"\u8BAB>Q{i4};",
+	"\u8BAC>Tuo;",
+	"\u8BAD>X{u4}n;",
+	"\u8BAE>Y{i4};",
+	"\u8BAF>X{u4}n;",
+	"\u8BB0>J{i4};",
+	"\u8BB1>R{e4}n;",
+	"\u8BB2>Ji{a3}ng;",
+	"\u8BB3>Hu{i4};",
+	"\u8BB4>Ou;",
+	"\u8BB5>J{u4};",
+	"\u8BB6>Y{a4};",
+	"\u8BB7>N{e4};",
+	"\u8BB8>X{u3};",
+	"\u8BB9>{E2};",
+	"\u8BBA>L{u4}n;",
+	"\u8BBB>Xiong;",
+	"\u8BBC>S{o4}ng;",
+	"\u8BBD>Feng;",
+	"\u8BBE>Sh{e4};",
+	"\u8BBF>F{a3}ng;",
+	"\u8BC0>Ju{e2};",
+	"\u8BC1>Zh{e4}ng;",
+	"\u8BC2>G{u3};",
+	"\u8BC3>He;",
+	"\u8BC4>P{i2}ng;",
+	"\u8BC5>Z{u3};",
+	"\u8BC6>Sh{i4};",
+	"\u8BC7>Xi{o4}ng;",
+	"\u8BC8>Zh{a4};",
+	"\u8BC9>S{u4};",
+	"\u8BCA>Zh{e3}n;",
+	"\u8BCB>D{i3};",
+	"\u8BCC>Zou;",
+	"\u8BCD>C{i2};",
+	"\u8BCE>Q{u4};",
+	"\u8BCF>Zha{o4};",
+	"\u8BD0>B{i4};",
+	"\u8BD1>Y{i4};",
+	"\u8BD2>Y{i2};",
+	"\u8BD3>Kuang;",
+	"\u8BD4>Le{i3};",
+	"\u8BD5>Sh{i4};",
+	"\u8BD6>Gu{a4};",
+	"\u8BD7>Shi;",
+	"\u8BD8>Ji{e2};",
+	"\u8BD9>Hui;",
+	"\u8BDA>Ch{e2}ng;",
+	"\u8BDB>Zhu;",
+	"\u8BDC>Shen;",
+	"\u8BDD>Hu{a4};",
+	"\u8BDE>D{a4}n;",
+	"\u8BDF>Go{u4};",
+	"\u8BE0>Qu{a2}n;",
+	"\u8BE1>Gu{i3};",
+	"\u8BE2>X{u2}n;",
+	"\u8BE3>Y{i4};",
+	"\u8BE4>Zheng;",
+	"\u8BE5>Gai;",
+	"\u8BE6>Xi{a2}ng;",
+	"\u8BE7>Ch{a4};",
+	"\u8BE8>H{u4}n;",
+	"\u8BE9>X{u3};",
+	"\u8BEA>Zhou;",
+	"\u8BEB>Ji{e4};",
+	"\u8BEC>W{u2};",
+	"\u8BED>Y{u3};",
+	"\u8BEE>Qia{o4};",
+	"\u8BEF>W{u4};",
+	"\u8BF0>Ga{o4};",
+	"\u8BF1>Yo{u4};",
+	"\u8BF2>Hu{i4};",
+	"\u8BF3>Ku{a2}ng;",
+	"\u8BF4>Shuo;",
+	"\u8BF5>S{o4}ng;",
+	"\u8BF6>Ai;",
+	"\u8BF7>Q{i3}ng;",
+	"\u8BF8>Zhu;",
+	"\u8BF9>Zou;",
+	"\u8BFA>Nu{o4};",
+	"\u8BFB>D{u2};",
+	"\u8BFC>Zhu{o2};",
+	"\u8BFD>Fe{i3};",
+	"\u8BFE>K{e4};",
+	"\u8BFF>We{i3};",
+	"\u8C00>Y{u2};",
+	"\u8C01>Shu{i2};",
+	"\u8C02>Sh{e3}n;",
+	"\u8C03>Dia{o4};",
+	"\u8C04>Ch{a3}n;",
+	"\u8C05>Li{a4}ng;",
+	"\u8C06>Zhun;",
+	"\u8C07>Su{i4};",
+	"\u8C08>T{a2}n;",
+	"\u8C09>Sh{e3}n;",
+	"\u8C0A>Y{i2};",
+	"\u8C0B>Mo{u2};",
+	"\u8C0C>Ch{e2}n;",
+	"\u8C0D>Di{e2};",
+	"\u8C0E>Hu{a3}ng;",
+	"\u8C0F>Ji{a4}n;",
+	"\u8C10>Xi{e2};",
+	"\u8C11>N{uu}{e4};",
+	"\u8C12>Y{e4};",
+	"\u8C13>We{i4};",
+	"\u8C14>{E4};",
+	"\u8C15>Y{u4};",
+	"\u8C16>Xuan;",
+	"\u8C17>Ch{a2}n;",
+	"\u8C18>Zi;",
+	"\u8C19>An;",
+	"\u8C1A>Y{a4}n;",
+	"\u8C1B>D{i4};",
+	"\u8C1C>M{i2};",
+	"\u8C1D>Pi{a2}n;",
+	"\u8C1E>X{u3};",
+	"\u8C1F>M{o2};",
+	"\u8C20>D{a3}ng;",
+	"\u8C21>S{u4};",
+	"\u8C22>Xi{e4};",
+	"\u8C23>Ya{o2};",
+	"\u8C24>B{a4}ng;",
+	"\u8C25>Sh{i4};",
+	"\u8C26>Qian;",
+	"\u8C27>M{i4};",
+	"\u8C28>J{i3}n;",
+	"\u8C29>M{a2}n;",
+	"\u8C2A>Zh{e2};",
+	"\u8C2B>Ji{a3}n;",
+	"\u8C2C>Mi{u4};",
+	"\u8C2D>T{a2}n;",
+	"\u8C2E>Z{e4}n;",
+	"\u8C2F>Qia{o2};",
+	"\u8C30>L{a2}n;",
+	"\u8C31>P{u3};",
+	"\u8C32>Ju{e2};",
+	"\u8C33>Y{a4}n;",
+	"\u8C34>Qi{a3}n;",
+	"\u8C35>Zhan;",
+	"\u8C36>Ch{e4}n;",
+	"\u8C37>G{u3};",
+	"\u8C38>Qian;",
+	"\u8C39>H{o2}ng;",
+	"\u8C3A>Xia;",
+	"\u8C3B>Ju{e2};",
+	"\u8C3C>H{o2}ng;",
+	"\u8C3D>Han;",
+	"\u8C3E>Hong;",
+	"\u8C3F>Xi;",
+	"\u8C40>Xi;",
+	"\u8C41>Hu{o4};",
+	"\u8C42>Lia{o2};",
+	"\u8C43>H{a3}n;",
+	"\u8C44>D{u2};",
+	"\u8C45>L{o2}ng;",
+	"\u8C46>Do{u4};",
+	"\u8C47>Jiang;",
+	"\u8C48>Q{i3};",
+	"\u8C49>Sh{i4};",
+	"\u8C4A>L{i3};",
+	"\u8C4B>Deng;",
+	"\u8C4C>Wan;",
+	"\u8C4D>Bi;",
+	"\u8C4E>Sh{u4};",
+	"\u8C4F>Xi{a4}n;",
+	"\u8C50>Feng;",
+	"\u8C51>Zh{i4};",
+	"\u8C52>Zh{i4};",
+	"\u8C53>Y{a4}n;",
+	"\u8C54>Y{a4}n;",
+	"\u8C55>Sh{i3};",
+	"\u8C56>Ch{u4};",
+	"\u8C57>Hui;",
+	"\u8C58>T{u2}n;",
+	"\u8C59>Y{i4};",
+	"\u8C5A>T{u2}n;",
+	"\u8C5B>Y{i4};",
+	"\u8C5C>Jian;",
+	"\u8C5D>Ba;",
+	"\u8C5E>Ho{u4};",
+	"\u8C5F>{E4};",
+	"\u8C60>C{u2};",
+	"\u8C61>Xi{a4}ng;",
+	"\u8C62>Hu{a4}n;",
+	"\u8C63>Jian;",
+	"\u8C64>K{e3}n;",
+	"\u8C65>Gai;",
+	"\u8C66>Q{u2};",
+	"\u8C67>Fu;",
+	"\u8C68>Xi;",
+	"\u8C69>Bin;",
+	"\u8C6A>Ha{o2};",
+	"\u8C6B>Y{u4};",
+	"\u8C6C>Zhu;",
+	"\u8C6D>Jia;",
+	"\u8C6F>Xi;",
+	"\u8C70>B{o2};",
+	"\u8C71>Wen;",
+	"\u8C72>Hu{a2}n;",
+	"\u8C73>Bin;",
+	"\u8C74>D{i2};",
+	"\u8C75>Zong;",
+	"\u8C76>F{e2}n;",
+	"\u8C77>Y{i4};",
+	"\u8C78>Zh{i4};",
+	"\u8C79>Ba{o4};",
+	"\u8C7A>Cha{i2};",
+	"\u8C7B>H{a4}n;",
+	"\u8C7C>P{i2};",
+	"\u8C7D>N{a4};",
+	"\u8C7E>Pi;",
+	"\u8C7F>Go{u3};",
+	"\u8C80>N{a4};",
+	"\u8C81>Yo{u4};",
+	"\u8C82>Diao;",
+	"\u8C83>M{o4};",
+	"\u8C84>S{i4};",
+	"\u8C85>Xiu;",
+	"\u8C86>Hu{a2}n;",
+	"\u8C87>Kun;",
+	"\u8C88>H{e2};",
+	"\u8C89>H{e2};",
+	"\u8C8A>M{o4};",
+	"\u8C8B>H{a4}n;",
+	"\u8C8C>Ma{o4};",
+	"\u8C8D>L{i2};",
+	"\u8C8E>N{i2};",
+	"\u8C8F>B{i3};",
+	"\u8C90>Y{u3};",
+	"\u8C91>Jia;",
+	"\u8C92>Tuan;",
+	"\u8C93>Mao;",
+	"\u8C94>P{i2};",
+	"\u8C95>Xi;",
+	"\u8C96>{E4};",
+	"\u8C97>J{u4};",
+	"\u8C98>M{o4};",
+	"\u8C99>Chu;",
+	"\u8C9A>T{a2}n;",
+	"\u8C9B>Huan;",
+	"\u8C9C>Ju{e2};",
+	"\u8C9D>Be{i4};",
+	"\u8C9E>Zhen;",
+	"\u8C9F>Yu{a2}n;",
+	"\u8CA0>F{u4};",
+	"\u8CA1>Ca{i2};",
+	"\u8CA2>G{o4}ng;",
+	"\u8CA3>T{e4};",
+	"\u8CA4>Y{i2};",
+	"\u8CA5>H{a2}ng;",
+	"\u8CA6>W{a4}n;",
+	"\u8CA7>P{i2}n;",
+	"\u8CA8>Hu{o4};",
+	"\u8CA9>F{a4}n;",
+	"\u8CAA>Tan;",
+	"\u8CAB>Gu{a4}n;",
+	"\u8CAC>Z{e2};",
+	"\u8CAD>Zh{i2};",
+	"\u8CAE>{E4}r;",
+	"\u8CAF>Zh{u3};",
+	"\u8CB0>Sh{i4};",
+	"\u8CB1>B{i4};",
+	"\u8CB2>Zi;",
+	"\u8CB3>{E4}r;",
+	"\u8CB4>Gu{i4};",
+	"\u8CB5>Pi{a3}n;",
+	"\u8CB6>Bi{a3}n;",
+	"\u8CB7>Ma{i3};",
+	"\u8CB8>Da{i4};",
+	"\u8CB9>Sh{e4}ng;",
+	"\u8CBA>Ku{a4}ng;",
+	"\u8CBB>Fe{i4};",
+	"\u8CBC>Tie;",
+	"\u8CBD>Y{i2};",
+	"\u8CBE>Ch{i2};",
+	"\u8CBF>Ma{o4};",
+	"\u8CC0>H{e4};",
+	"\u8CC1>B{i4};",
+	"\u8CC2>L{u4};",
+	"\u8CC3>R{e4}n;",
+	"\u8CC4>Hu{i4};",
+	"\u8CC5>Gai;",
+	"\u8CC6>Pi{a2}n;",
+	"\u8CC7>Zi;",
+	"\u8CC8>Ji{a3};",
+	"\u8CC9>X{u4};",
+	"\u8CCA>Ze{i2};",
+	"\u8CCB>Jia{o3};",
+	"\u8CCC>Ga{i4};",
+	"\u8CCD>Zang;",
+	"\u8CCE>Ji{a4}n;",
+	"\u8CCF>Y{i4}ng;",
+	"\u8CD0>X{u4}n;",
+	"\u8CD1>Zh{e4}n;",
+	"\u8CD2>She;",
+	"\u8CD3>Bin;",
+	"\u8CD4>Bin;",
+	"\u8CD5>Qi{u2};",
+	"\u8CD6>She;",
+	"\u8CD7>Chu{a4}n;",
+	"\u8CD8>Zang;",
+	"\u8CD9>Zhou;",
+	"\u8CDA>La{i4};",
+	"\u8CDB>Z{a4}n;",
+	"\u8CDC>S{i4};",
+	"\u8CDD>Chen;",
+	"\u8CDE>Sh{a3}ng;",
+	"\u8CDF>Ti{a3}n;",
+	"\u8CE0>Pe{i2};",
+	"\u8CE1>Geng;",
+	"\u8CE2>Xi{a2}n;",
+	"\u8CE3>Ma{i4};",
+	"\u8CE4>Ji{a4}n;",
+	"\u8CE5>Su{i4};",
+	"\u8CE6>F{u4};",
+	"\u8CE7>T{a4}n;",
+	"\u8CE8>C{o2}ng;",
+	"\u8CE9>C{o2}ng;",
+	"\u8CEA>Zh{i2};",
+	"\u8CEB>Ji;",
+	"\u8CEC>Zh{a4}ng;",
+	"\u8CED>D{u3};",
+	"\u8CEE>J{i4}n;",
+	"\u8CEF>Xiong;",
+	"\u8CF0>Sh{u3}n;",
+	"\u8CF1>Y{u3}n;",
+	"\u8CF2>Ba{o3};",
+	"\u8CF3>Zai;",
+	"\u8CF4>La{i4};",
+	"\u8CF5>F{e4}ng;",
+	"\u8CF6>C{a4}ng;",
+	"\u8CF7>Ji;",
+	"\u8CF8>Sh{e4}ng;",
+	"\u8CF9>A{i4};",
+	"\u8CFA>Zhu{a4}n;",
+	"\u8CFB>F{u4};",
+	"\u8CFC>Go{u4};",
+	"\u8CFD>Sa{i4};",
+	"\u8CFE>Z{e2};",
+	"\u8CFF>Lia{o2};",
+	"\u8D00>We{i4};",
+	"\u8D01>Ba{i4};",
+	"\u8D02>Ch{e3}n;",
+	"\u8D03>Zhu{a4}n;",
+	"\u8D04>Zh{i4};",
+	"\u8D05>Zhu{i4};",
+	"\u8D06>Biao;",
+	"\u8D07>Yun;",
+	"\u8D08>Z{e4}ng;",
+	"\u8D09>T{a3}n;",
+	"\u8D0A>Z{a4}n;",
+	"\u8D0B>Y{a4}n;",
+	"\u8D0D>Sh{a4}n;",
+	"\u8D0E>W{a4}n;",
+	"\u8D0F>Y{i2}ng;",
+	"\u8D10>J{i4}n;",
+	"\u8D11>G{a3}n;",
+	"\u8D12>Xi{a2}n;",
+	"\u8D13>Zang;",
+	"\u8D14>B{i4};",
+	"\u8D15>D{u2};",
+	"\u8D16>Sh{u2};",
+	"\u8D17>Y{a4}n;",
+	"\u8D19>Xu{a4}n;",
+	"\u8D1A>L{o4}ng;",
+	"\u8D1B>G{a4}n;",
+	"\u8D1C>Zang;",
+	"\u8D1D>Be{i4};",
+	"\u8D1E>Zhen;",
+	"\u8D1F>F{u4};",
+	"\u8D20>Yu{a2}n;",
+	"\u8D21>G{o4}ng;",
+	"\u8D22>Ca{i2};",
+	"\u8D23>Z{e2};",
+	"\u8D24>Xi{a2}n;",
+	"\u8D25>Ba{i4};",
+	"\u8D26>Zh{a4}ng;",
+	"\u8D27>Hu{o4};",
+	"\u8D28>Zh{i2};",
+	"\u8D29>F{a4}n;",
+	"\u8D2A>Tan;",
+	"\u8D2B>P{i2}n;",
+	"\u8D2C>Bi{a3}n;",
+	"\u8D2D>Go{u4};",
+	"\u8D2E>Zh{u3};",
+	"\u8D2F>Gu{a4}n;",
+	"\u8D30>{E4}r;",
+	"\u8D31>Ji{a4}n;",
+	"\u8D32>B{i4};",
+	"\u8D33>Sh{i4};",
+	"\u8D34>Tie;",
+	"\u8D35>Gu{i4};",
+	"\u8D36>Ku{a4}ng;",
+	"\u8D37>Da{i4};",
+	"\u8D38>Ma{o4};",
+	"\u8D39>Fe{i4};",
+	"\u8D3A>H{e4};",
+	"\u8D3B>Y{i2};",
+	"\u8D3C>Ze{i2};",
+	"\u8D3D>Zh{i4};",
+	"\u8D3E>Ji{a3};",
+	"\u8D3F>Hu{i4};",
+	"\u8D40>Zi;",
+	"\u8D41>R{e4}n;",
+	"\u8D42>L{u4};",
+	"\u8D43>Zang;",
+	"\u8D44>Zi;",
+	"\u8D45>Gai;",
+	"\u8D46>J{i4}n;",
+	"\u8D47>Qi{u2};",
+	"\u8D48>Zh{e4}n;",
+	"\u8D49>La{i4};",
+	"\u8D4A>She;",
+	"\u8D4B>F{u4};",
+	"\u8D4C>D{u3};",
+	"\u8D4D>Ji;",
+	"\u8D4E>Sh{u2};",
+	"\u8D4F>Sh{a3}ng;",
+	"\u8D50>S{i4};",
+	"\u8D51>B{i4};",
+	"\u8D52>Zhou;",
+	"\u8D53>Geng;",
+	"\u8D54>Pe{i2};",
+	"\u8D55>T{a4}n;",
+	"\u8D56>La{i4};",
+	"\u8D57>F{e4}ng;",
+	"\u8D58>Zhu{i4};",
+	"\u8D59>F{u4};",
+	"\u8D5A>Zhu{a4}n;",
+	"\u8D5B>Sa{i4};",
+	"\u8D5C>Z{e2};",
+	"\u8D5D>Y{a4}n;",
+	"\u8D5E>Z{a4}n;",
+	"\u8D5F>Yun;",
+	"\u8D60>Z{e4}ng;",
+	"\u8D61>Sh{a4}n;",
+	"\u8D62>Y{i2}ng;",
+	"\u8D63>G{a4}n;",
+	"\u8D64>Ch{i4};",
+	"\u8D65>X{i4};",
+	"\u8D66>Sh{e4};",
+	"\u8D67>N{a3}n;",
+	"\u8D68>Xi{o2}ng;",
+	"\u8D69>X{i4};",
+	"\u8D6A>Cheng;",
+	"\u8D6B>H{e4};",
+	"\u8D6C>Cheng;",
+	"\u8D6D>Zh{e3};",
+	"\u8D6E>Xi{a2};",
+	"\u8D6F>T{a2}ng;",
+	"\u8D70>Zo{u3};",
+	"\u8D71>Zo{u3};",
+	"\u8D72>L{i4};",
+	"\u8D73>Ji{u3};",
+	"\u8D74>F{u4};",
+	"\u8D75>Zha{o4};",
+	"\u8D76>G{a3}n;",
+	"\u8D77>Q{i3};",
+	"\u8D78>Sh{a4}n;",
+	"\u8D79>Qi{o2}ng;",
+	"\u8D7A>Q{i2}n;",
+	"\u8D7B>Xi{a3}n;",
+	"\u8D7C>Ci;",
+	"\u8D7D>Ju{e2};",
+	"\u8D7E>Q{i3}n;",
+	"\u8D7F>Ch{i2};",
+	"\u8D80>Ci;",
+	"\u8D81>Ch{e4}n;",
+	"\u8D82>Ch{e4}n;",
+	"\u8D83>Di{e2};",
+	"\u8D84>Ju;",
+	"\u8D85>Chao;",
+	"\u8D86>Di;",
+	"\u8D87>S{e4};",
+	"\u8D88>Zhan;",
+	"\u8D89>Zh{u2};",
+	"\u8D8A>Yu{e4};",
+	"\u8D8B>Qu;",
+	"\u8D8C>Ji{e2};",
+	"\u8D8D>Ch{i2};",
+	"\u8D8E>Ch{u2};",
+	"\u8D8F>Gua;",
+	"\u8D90>Xu{e4};",
+	"\u8D91>Ci;",
+	"\u8D92>Tia{o2};",
+	"\u8D93>Du{o3};",
+	"\u8D94>Li{e4};",
+	"\u8D95>G{a3}n;",
+	"\u8D96>Suo;",
+	"\u8D97>C{u4};",
+	"\u8D98>X{i2};",
+	"\u8D99>Zha{o4};",
+	"\u8D9A>S{u4};",
+	"\u8D9B>Y{i3}n;",
+	"\u8D9C>J{u2};",
+	"\u8D9D>Ji{a4}n;",
+	"\u8D9E>Qu{e4};",
+	"\u8D9F>T{a4}ng;",
+	"\u8DA0>Chu{o4};",
+	"\u8DA1>Cu{i3};",
+	"\u8DA2>L{u4};",
+	"\u8DA3>Q{u4};",
+	"\u8DA4>D{a4}ng;",
+	"\u8DA5>Qiu;",
+	"\u8DA6>Zi;",
+	"\u8DA7>T{i2};",
+	"\u8DA8>Qu;",
+	"\u8DA9>Ch{i4};",
+	"\u8DAA>Hu{a2}ng;",
+	"\u8DAB>Qia{o2};",
+	"\u8DAC>Qia{o2};",
+	"\u8DAD>Ya{o4};",
+	"\u8DAE>Za{o4};",
+	"\u8DAF>T{i4};",
+	"\u8DB1>Z{a3}n;",
+	"\u8DB2>Z{a3}n;",
+	"\u8DB3>Z{u2};",
+	"\u8DB4>Pa;",
+	"\u8DB5>Ba{o4};",
+	"\u8DB6>K{u4};",
+	"\u8DB7>Ke;",
+	"\u8DB8>D{u3}n;",
+	"\u8DB9>Ju{e2};",
+	"\u8DBA>Fu;",
+	"\u8DBB>Ch{e3}n;",
+	"\u8DBC>Ji{a3}n;",
+	"\u8DBD>F{a4}ng;",
+	"\u8DBE>Zh{i3};",
+	"\u8DBF>S{a4};",
+	"\u8DC0>Yu{e4};",
+	"\u8DC1>P{a2};",
+	"\u8DC2>Q{i2};",
+	"\u8DC3>Yu{e4};",
+	"\u8DC4>Qiang;",
+	"\u8DC5>Tu{o4};",
+	"\u8DC6>Ta{i2};",
+	"\u8DC7>Y{i4};",
+	"\u8DC8>Ni{a3}n;",
+	"\u8DC9>L{i2}ng;",
+	"\u8DCA>Me{i4};",
+	"\u8DCB>B{a2};",
+	"\u8DCC>Die;",
+	"\u8DCD>Ku;",
+	"\u8DCE>Tu{o2};",
+	"\u8DCF>Jia;",
+	"\u8DD0>C{i3};",
+	"\u8DD1>Pa{o3};",
+	"\u8DD2>Qi{a3};",
+	"\u8DD3>Zh{u4};",
+	"\u8DD4>Ju;",
+	"\u8DD5>Di{e2};",
+	"\u8DD6>Zhi;",
+	"\u8DD7>Fu;",
+	"\u8DD8>P{a2}n;",
+	"\u8DD9>J{u3};",
+	"\u8DDA>Shan;",
+	"\u8DDB>B{o3};",
+	"\u8DDC>N{i2};",
+	"\u8DDD>J{u4};",
+	"\u8DDE>L{i4};",
+	"\u8DDF>Gen;",
+	"\u8DE0>Y{i2};",
+	"\u8DE1>Ji;",
+	"\u8DE2>Da{i4};",
+	"\u8DE3>Xi{a3}n;",
+	"\u8DE4>Jiao;",
+	"\u8DE5>Du{o4};",
+	"\u8DE6>Zhu;",
+	"\u8DE7>Zhuan;",
+	"\u8DE8>Ku{a4};",
+	"\u8DE9>Zhua{i3};",
+	"\u8DEA>Gu{i4};",
+	"\u8DEB>Qi{o2}ng;",
+	"\u8DEC>Ku{i3};",
+	"\u8DED>Xi{a2}ng;",
+	"\u8DEE>Ch{i4};",
+	"\u8DEF>L{u4};",
+	"\u8DF0>B{e4}ng;",
+	"\u8DF1>Zh{i4};",
+	"\u8DF2>Ji{a2};",
+	"\u8DF3>Tia{o4};",
+	"\u8DF4>Ca{i3};",
+	"\u8DF5>Ji{a4}n;",
+	"\u8DF6>T{a4};",
+	"\u8DF7>Qiao;",
+	"\u8DF8>B{i4};",
+	"\u8DF9>Xian;",
+	"\u8DFA>Du{o4};",
+	"\u8DFB>Ji;",
+	"\u8DFC>J{u2};",
+	"\u8DFD>J{i4};",
+	"\u8DFE>Sh{u2};",
+	"\u8DFF>T{u2};",
+	"\u8E00>Ch{u4};",
+	"\u8E01>J{i4}ng;",
+	"\u8E02>Ni{e4};",
+	"\u8E03>Xiao;",
+	"\u8E04>B{o2};",
+	"\u8E05>Ch{i4};",
+	"\u8E06>Qun;",
+	"\u8E07>Mo{u3};",
+	"\u8E08>Shu;",
+	"\u8E09>L{a2}ng;",
+	"\u8E0A>Y{o3}ng;",
+	"\u8E0B>Jia{o3};",
+	"\u8E0C>Cho{u2};",
+	"\u8E0D>Qiao;",
+	"\u8E0F>T{a4};",
+	"\u8E10>Ji{a4}n;",
+	"\u8E11>Q{i2};",
+	"\u8E12>Wo;",
+	"\u8E13>We{i3};",
+	"\u8E14>Zhu{o2};",
+	"\u8E15>Ji{e2};",
+	"\u8E16>J{i2};",
+	"\u8E17>Nie;",
+	"\u8E18>J{u2};",
+	"\u8E19>Ju;",
+	"\u8E1A>L{u2}n;",
+	"\u8E1B>L{u4};",
+	"\u8E1C>L{e4}ng;",
+	"\u8E1D>Hua{i2};",
+	"\u8E1E>J{u4};",
+	"\u8E1F>Ch{i2};",
+	"\u8E20>W{a3}n;",
+	"\u8E21>Qu{a2}n;",
+	"\u8E22>Ti;",
+	"\u8E23>B{o2};",
+	"\u8E24>Z{u2};",
+	"\u8E25>Qi{e4};",
+	"\u8E26>J{i3};",
+	"\u8E27>C{u4};",
+	"\u8E28>Zong;",
+	"\u8E29>Ca{i3};",
+	"\u8E2A>Zong;",
+	"\u8E2B>P{e4}ng;",
+	"\u8E2C>Zh{i4};",
+	"\u8E2D>Zheng;",
+	"\u8E2E>Di{a3}n;",
+	"\u8E2F>Zh{i2};",
+	"\u8E30>Y{u2};",
+	"\u8E31>Du{o4};",
+	"\u8E32>D{u4}n;",
+	"\u8E33>Ch{u3}n;",
+	"\u8E34>Y{o3}ng;",
+	"\u8E35>Zh{o3}ng;",
+	"\u8E36>D{i4};",
+	"\u8E37>Zh{e3};",
+	"\u8E38>Ch{e3}n;",
+	"\u8E39>Chua{i4};",
+	"\u8E3A>Ji{a4}n;",
+	"\u8E3B>Gua;",
+	"\u8E3C>T{a2}ng;",
+	"\u8E3D>J{u3};",
+	"\u8E3E>F{u2};",
+	"\u8E3F>Z{u2};",
+	"\u8E40>Di{e2};",
+	"\u8E41>Pi{a2}n;",
+	"\u8E42>Ro{u2};",
+	"\u8E43>Nu{o4};",
+	"\u8E44>T{i2};",
+	"\u8E45>Ch{a3};",
+	"\u8E46>Tu{i3};",
+	"\u8E47>Ji{a3}n;",
+	"\u8E48>Da{o4};",
+	"\u8E49>Cuo;",
+	"\u8E4A>Xi;",
+	"\u8E4B>T{a4};",
+	"\u8E4C>Qiang;",
+	"\u8E4D>Zh{a3}n;",
+	"\u8E4E>Dian;",
+	"\u8E4F>T{i2};",
+	"\u8E50>J{i2};",
+	"\u8E51>Ni{e4};",
+	"\u8E52>M{a2}n;",
+	"\u8E53>Liu;",
+	"\u8E54>Zh{a4}n;",
+	"\u8E55>B{i4};",
+	"\u8E56>Chong;",
+	"\u8E57>L{u4};",
+	"\u8E58>Lia{o2};",
+	"\u8E59>C{u4};",
+	"\u8E5A>Tang;",
+	"\u8E5B>Da{i4};",
+	"\u8E5C>Suo;",
+	"\u8E5D>X{i3};",
+	"\u8E5E>Ku{i3};",
+	"\u8E5F>Ji;",
+	"\u8E60>Zh{i2};",
+	"\u8E61>Qiang;",
+	"\u8E62>D{i2};",
+	"\u8E63>M{a2}n;",
+	"\u8E64>Zong;",
+	"\u8E65>Li{a2}n;",
+	"\u8E66>B{e4}ng;",
+	"\u8E67>Zao;",
+	"\u8E68>Ni{a3}n;",
+	"\u8E69>Bi{e2};",
+	"\u8E6A>Tu{i2};",
+	"\u8E6B>J{u2};",
+	"\u8E6C>D{e4}ng;",
+	"\u8E6D>C{e4}ng;",
+	"\u8E6E>Xian;",
+	"\u8E6F>F{a2}n;",
+	"\u8E70>Ch{u2};",
+	"\u8E71>Zhong;",
+	"\u8E72>Dun;",
+	"\u8E73>Bo;",
+	"\u8E74>C{u4};",
+	"\u8E75>Z{u2};",
+	"\u8E76>Ju{e2};",
+	"\u8E77>Ju{e2};",
+	"\u8E78>L{i4}n;",
+	"\u8E79>T{a4};",
+	"\u8E7A>Qiao;",
+	"\u8E7B>Qiao;",
+	"\u8E7C>P{u2};",
+	"\u8E7D>Liao;",
+	"\u8E7E>Dun;",
+	"\u8E7F>Cuan;",
+	"\u8E80>Ku{a4}ng;",
+	"\u8E81>Za{o4};",
+	"\u8E82>T{a4};",
+	"\u8E83>B{i4};",
+	"\u8E84>B{i4};",
+	"\u8E85>Zh{u2};",
+	"\u8E86>J{u4};",
+	"\u8E87>Ch{u2};",
+	"\u8E88>Qia{o4};",
+	"\u8E89>D{u3}n;",
+	"\u8E8A>Cho{u2};",
+	"\u8E8B>Ji;",
+	"\u8E8C>W{u3};",
+	"\u8E8D>Yu{e4};",
+	"\u8E8E>Ni{a3}n;",
+	"\u8E8F>L{i4}n;",
+	"\u8E90>Li{e4};",
+	"\u8E91>Zh{i2};",
+	"\u8E92>L{i4};",
+	"\u8E93>Zh{i4};",
+	"\u8E94>Ch{a2}n;",
+	"\u8E95>Ch{u2};",
+	"\u8E96>Du{a4}n;",
+	"\u8E97>We{i4};",
+	"\u8E98>L{o2}ng;",
+	"\u8E99>L{i4}n;",
+	"\u8E9A>Xian;",
+	"\u8E9B>We{i4};",
+	"\u8E9C>Zuan;",
+	"\u8E9D>L{a2}n;",
+	"\u8E9E>Xi{e4};",
+	"\u8E9F>R{a2}ng;",
+	"\u8EA0>Xi{e3};",
+	"\u8EA1>Ni{e4};",
+	"\u8EA2>T{a4};",
+	"\u8EA3>Q{u2};",
+	"\u8EA4>Ji{e4};",
+	"\u8EA5>Cuan;",
+	"\u8EA6>Zuan;",
+	"\u8EA7>X{i3};",
+	"\u8EA8>Ku{i2};",
+	"\u8EA9>Ju{e2};",
+	"\u8EAA>L{i4}n;",
+	"\u8EAB>Shen;",
+	"\u8EAC>Gong;",
+	"\u8EAD>Dan;",
+	"\u8EAF>Qu;",
+	"\u8EB0>T{i3};",
+	"\u8EB1>Du{o3};",
+	"\u8EB2>Du{o3};",
+	"\u8EB3>Gong;",
+	"\u8EB4>L{a2}ng;",
+	"\u8EB6>Lu{o3};",
+	"\u8EB7>A{i3};",
+	"\u8EB8>Ji;",
+	"\u8EB9>J{u2};",
+	"\u8EBA>T{a3}ng;",
+	"\u8EBD>Y{a3}n;",
+	"\u8EBF>Kang;",
+	"\u8EC0>Qu;",
+	"\u8EC1>Lo{u2};",
+	"\u8EC2>La{o4};",
+	"\u8EC3>Tu{o3};",
+	"\u8EC4>Zh{i2};",
+	"\u8EC6>T{i3};",
+	"\u8EC7>Da{o4};",
+	"\u8EC9>Y{u4};",
+	"\u8ECA>Che;",
+	"\u8ECB>Y{a4};",
+	"\u8ECC>Gu{i3};",
+	"\u8ECD>Jun;",
+	"\u8ECE>We{i4};",
+	"\u8ECF>Yu{e4};",
+	"\u8ED0>X{i4}n;",
+	"\u8ED1>D{i4};",
+	"\u8ED2>Xuan;",
+	"\u8ED3>F{a4}n;",
+	"\u8ED4>R{e4}n;",
+	"\u8ED5>Shan;",
+	"\u8ED6>Qi{a2}ng;",
+	"\u8ED7>Shu;",
+	"\u8ED8>T{u2}n;",
+	"\u8ED9>Ch{e2}n;",
+	"\u8EDA>Da{i4};",
+	"\u8EDB>{E4};",
+	"\u8EDC>N{a4};",
+	"\u8EDD>Q{i2};",
+	"\u8EDE>Ma{o2};",
+	"\u8EDF>Ru{a3}n;",
+	"\u8EE0>R{e4}n;",
+	"\u8EE1>F{a3}n;",
+	"\u8EE2>Zhu{a3}n;",
+	"\u8EE3>Hong;",
+	"\u8EE4>Hu;",
+	"\u8EE5>Q{u2};",
+	"\u8EE6>Hu{a4}ng;",
+	"\u8EE7>D{i3};",
+	"\u8EE8>L{i2}ng;",
+	"\u8EE9>Da{i4};",
+	"\u8EEA>Ao;",
+	"\u8EEB>Zh{e3}n;",
+	"\u8EEC>F{a4}n;",
+	"\u8EED>Kuang;",
+	"\u8EEE>{a3}ng;",
+	"\u8EEF>Peng;",
+	"\u8EF0>Be{i4};",
+	"\u8EF1>Gu;",
+	"\u8EF2>Ku;",
+	"\u8EF3>Pa{o2};",
+	"\u8EF4>Zh{u4};",
+	"\u8EF5>R{o3}ng;",
+	"\u8EF6>{E4};",
+	"\u8EF7>B{a2};",
+	"\u8EF8>Zho{u2};",
+	"\u8EF9>Zh{i3};",
+	"\u8EFA>Ya{o2};",
+	"\u8EFB>Ke;",
+	"\u8EFC>Y{i4};",
+	"\u8EFD>Qing;",
+	"\u8EFE>Sh{i4};",
+	"\u8EFF>P{i2}ng;",
+	"\u8F00>{E2}r;",
+	"\u8F01>Qi{o2}ng;",
+	"\u8F02>J{u2};",
+	"\u8F03>Jia{o4};",
+	"\u8F04>Guang;",
+	"\u8F05>L{u4};",
+	"\u8F06>Ka{i3};",
+	"\u8F07>Qu{a2}n;",
+	"\u8F08>Zhou;",
+	"\u8F09>Za{i4};",
+	"\u8F0A>Zh{i4};",
+	"\u8F0B>She;",
+	"\u8F0C>Li{a4}ng;",
+	"\u8F0D>Y{u4};",
+	"\u8F0E>Shao;",
+	"\u8F0F>Yo{u2};",
+	"\u8F10>Hu{a3}n;",
+	"\u8F11>Y{u3}n;",
+	"\u8F12>Zh{e2};",
+	"\u8F13>W{a3}n;",
+	"\u8F14>F{u3};",
+	"\u8F15>Qing;",
+	"\u8F16>Zhou;",
+	"\u8F17>N{i2};",
+	"\u8F18>L{i2}ng;",
+	"\u8F19>Zh{e2};",
+	"\u8F1A>Zh{a4}n;",
+	"\u8F1B>Li{a4}ng;",
+	"\u8F1C>Zi;",
+	"\u8F1D>Hui;",
+	"\u8F1E>W{a3}ng;",
+	"\u8F1F>Chu{o4};",
+	"\u8F20>Gu{o3};",
+	"\u8F21>K{a3}n;",
+	"\u8F22>Y{i3};",
+	"\u8F23>P{e2}ng;",
+	"\u8F24>Qi{a4}n;",
+	"\u8F25>G{u3}n;",
+	"\u8F26>Ni{a3}n;",
+	"\u8F27>Pi{a2}n;",
+	"\u8F28>Gu{a3}n;",
+	"\u8F29>Be{i4};",
+	"\u8F2A>L{u2}n;",
+	"\u8F2B>Pa{i2};",
+	"\u8F2C>Li{a2}ng;",
+	"\u8F2D>Ru{a3}n;",
+	"\u8F2E>Ro{u2};",
+	"\u8F2F>J{i2};",
+	"\u8F30>Y{a2}ng;",
+	"\u8F31>Xi{a2}n;",
+	"\u8F32>Chu{a2}n;",
+	"\u8F33>Co{u4};",
+	"\u8F34>Qun;",
+	"\u8F35>G{e2};",
+	"\u8F36>Yo{u2};",
+	"\u8F37>Hong;",
+	"\u8F38>Shu;",
+	"\u8F39>F{u4};",
+	"\u8F3A>Zi;",
+	"\u8F3B>F{u2};",
+	"\u8F3C>Wen;",
+	"\u8F3D>B{e4}n;",
+	"\u8F3E>Zh{a3}n;",
+	"\u8F3F>Y{u2};",
+	"\u8F40>Wen;",
+	"\u8F41>Tao;",
+	"\u8F42>G{u3};",
+	"\u8F43>Zhen;",
+	"\u8F44>Xi{a2};",
+	"\u8F45>Yu{a2}n;",
+	"\u8F46>L{u4};",
+	"\u8F47>Jiu;",
+	"\u8F48>Cha{o2};",
+	"\u8F49>Zhu{a3}n;",
+	"\u8F4A>We{i4};",
+	"\u8F4B>H{u2}n;",
+	"\u8F4D>Ch{e4};",
+	"\u8F4E>Jia{o4};",
+	"\u8F4F>Zh{a4}n;",
+	"\u8F50>P{u2};",
+	"\u8F51>La{o3};",
+	"\u8F52>F{e2}n;",
+	"\u8F53>Fan;",
+	"\u8F54>L{i2}n;",
+	"\u8F55>G{e2};",
+	"\u8F56>S{e4};",
+	"\u8F57>K{a3}n;",
+	"\u8F58>Hu{a4}n;",
+	"\u8F59>Y{i3};",
+	"\u8F5A>J{i2};",
+	"\u8F5B>Du{i4};",
+	"\u8F5C>{E2}r;",
+	"\u8F5D>Y{u2};",
+	"\u8F5E>Xi{a4}n;",
+	"\u8F5F>Hong;",
+	"\u8F60>Le{i3};",
+	"\u8F61>Pe{i4};",
+	"\u8F62>L{i4};",
+	"\u8F63>L{i4};",
+	"\u8F64>L{u2};",
+	"\u8F65>L{i4}n;",
+	"\u8F66>Che;",
+	"\u8F67>Y{a4};",
+	"\u8F68>Gu{i3};",
+	"\u8F69>Xuan;",
+	"\u8F6A>D{i4};",
+	"\u8F6B>R{e4}n;",
+	"\u8F6C>Zhu{a3}n;",
+	"\u8F6D>{E4};",
+	"\u8F6E>L{u2}n;",
+	"\u8F6F>Ru{a3}n;",
+	"\u8F70>Hong;",
+	"\u8F71>Ku;",
+	"\u8F72>Ke;",
+	"\u8F73>L{u2};",
+	"\u8F74>Zho{u2};",
+	"\u8F75>Zh{i3};",
+	"\u8F76>Y{i4};",
+	"\u8F77>Hu;",
+	"\u8F78>Zh{e3}n;",
+	"\u8F79>L{i4};",
+	"\u8F7A>Ya{o2};",
+	"\u8F7B>Qing;",
+	"\u8F7C>Sh{i4};",
+	"\u8F7D>Za{i4};",
+	"\u8F7E>Zh{i4};",
+	"\u8F7F>Jia{o4};",
+	"\u8F80>Zhou;",
+	"\u8F81>Qu{a2}n;",
+	"\u8F82>L{u4};",
+	"\u8F83>Jia{o4};",
+	"\u8F84>Zh{e2};",
+	"\u8F85>F{u3};",
+	"\u8F86>Li{a4}ng;",
+	"\u8F87>Ni{a3}n;",
+	"\u8F88>Be{i4};",
+	"\u8F89>Hui;",
+	"\u8F8A>G{u3}n;",
+	"\u8F8B>W{a3}ng;",
+	"\u8F8C>Li{a2}ng;",
+	"\u8F8D>Chu{o4};",
+	"\u8F8E>Zi;",
+	"\u8F8F>Co{u4};",
+	"\u8F90>F{u2};",
+	"\u8F91>J{i2};",
+	"\u8F92>Wen;",
+	"\u8F93>Shu;",
+	"\u8F94>Pe{i4};",
+	"\u8F95>Yu{a2}n;",
+	"\u8F96>Xi{a2};",
+	"\u8F97>Zh{a3}n;",
+	"\u8F98>L{u4};",
+	"\u8F99>Ch{e4};",
+	"\u8F9A>L{i2}n;",
+	"\u8F9B>Xin;",
+	"\u8F9C>Gu;",
+	"\u8F9D>C{i2};",
+	"\u8F9E>C{i2};",
+	"\u8F9F>P{i4};",
+	"\u8FA0>Zu{i4};",
+	"\u8FA1>Bi{a4}n;",
+	"\u8FA2>L{a4};",
+	"\u8FA3>L{a4};",
+	"\u8FA4>C{i2};",
+	"\u8FA5>Xue;",
+	"\u8FA6>B{a4}n;",
+	"\u8FA7>Bi{a4}n;",
+	"\u8FA8>Bi{a4}n;",
+	"\u8FA9>Bi{a4}n;",
+	"\u8FAB>Bi{a4}n;",
+	"\u8FAC>Ban;",
+	"\u8FAD>C{i2};",
+	"\u8FAE>Bi{a4}n;",
+	"\u8FAF>Bi{a4}n;",
+	"\u8FB0>Ch{e2}n;",
+	"\u8FB1>R{u4};",
+	"\u8FB2>N{o2}ng;",
+	"\u8FB3>N{o2}ng;",
+	"\u8FB4>Zh{e3}n;",
+	"\u8FB5>Chu{o4};",
+	"\u8FB6>Chu{o4};",
+	"\u8FB8>R{e2}ng;",
+	"\u8FB9>Bian;",
+	"\u8FBA>Bian;",
+	"\u8FBD>Lia{o2};",
+	"\u8FBE>D{a2};",
+	"\u8FBF>Chan;",
+	"\u8FC0>Gan;",
+	"\u8FC1>Qian;",
+	"\u8FC2>Yu;",
+	"\u8FC3>Yu;",
+	"\u8FC4>Q{i4};",
+	"\u8FC5>X{u4}n;",
+	"\u8FC6>Y{i3};",
+	"\u8FC7>Gu{o4};",
+	"\u8FC8>Ma{i4};",
+	"\u8FC9>Q{i2};",
+	"\u8FCA>Za;",
+	"\u8FCB>W{a4}ng;",
+	"\u8FCC>Jia;",
+	"\u8FCD>Zhun;",
+	"\u8FCE>Y{i2}ng;",
+	"\u8FCF>T{i4};",
+	"\u8FD0>Y{u4}n;",
+	"\u8FD1>J{i4}n;",
+	"\u8FD2>H{a2}ng;",
+	"\u8FD3>Y{a4};",
+	"\u8FD4>F{a3}n;",
+	"\u8FD5>W{u4};",
+	"\u8FD6>D{a2};",
+	"\u8FD7>{E2};",
+	"\u8FD8>Hu{a2}n;",
+	"\u8FD9>Zh{e4};",
+	"\u8FDB>J{i4}n;",
+	"\u8FDC>Yu{a3}n;",
+	"\u8FDD>We{i2};",
+	"\u8FDE>Li{a2}n;",
+	"\u8FDF>Ch{i2};",
+	"\u8FE0>Ch{e4};",
+	"\u8FE1>N{i4};",
+	"\u8FE2>Tia{o2};",
+	"\u8FE3>Zh{i4};",
+	"\u8FE4>Y{i3};",
+	"\u8FE5>Ji{o3}ng;",
+	"\u8FE6>Jia;",
+	"\u8FE7>Ch{e2}n;",
+	"\u8FE8>Da{i4};",
+	"\u8FE9>{e3}r;",
+	"\u8FEA>D{i2};",
+	"\u8FEB>P{o4};",
+	"\u8FEC>W{a3}ng;",
+	"\u8FED>Di{e2};",
+	"\u8FEE>Z{e2};",
+	"\u8FEF>Ta{o2};",
+	"\u8FF0>Sh{u4};",
+	"\u8FF1>Tu{o2};",
+	"\u8FF3>J{i4}ng;",
+	"\u8FF4>Hu{i2};",
+	"\u8FF5>T{o2}ng;",
+	"\u8FF6>Yo{u4};",
+	"\u8FF7>M{i2};",
+	"\u8FF8>B{e4}ng;",
+	"\u8FF9>Ji;",
+	"\u8FFA>Na{i3};",
+	"\u8FFB>Y{i2};",
+	"\u8FFC>Ji{e2};",
+	"\u8FFD>Zhui;",
+	"\u8FFE>Li{e4};",
+	"\u8FFF>X{u4}n;",
+	"\u9000>Tu{i4};",
+	"\u9001>S{o4}ng;",
+	"\u9002>Gua;",
+	"\u9003>Ta{o2};",
+	"\u9004>P{a2}ng;",
+	"\u9005>Ho{u4};",
+	"\u9006>N{i4};",
+	"\u9007>D{u4}n;",
+	"\u9008>Ji{o3}ng;",
+	"\u9009>Xu{a3}n;",
+	"\u900A>X{u4}n;",
+	"\u900B>Bu;",
+	"\u900C>Yo{u2};",
+	"\u900D>Xiao;",
+	"\u900E>Qi{u2};",
+	"\u900F>To{u4};",
+	"\u9010>Zh{u2};",
+	"\u9011>Qi{u2};",
+	"\u9012>D{i4};",
+	"\u9013>D{i4};",
+	"\u9014>T{u2};",
+	"\u9015>J{i4}ng;",
+	"\u9016>T{i4};",
+	"\u9017>Do{u4};",
+	"\u9018>Y{i3};",
+	"\u9019>Zh{e4};",
+	"\u901A>Tong;",
+	"\u901B>Gu{a4}ng;",
+	"\u901C>W{u4};",
+	"\u901D>Sh{i4};",
+	"\u901E>Ch{e3}ng;",
+	"\u901F>S{u4};",
+	"\u9020>Za{o4};",
+	"\u9021>Qun;",
+	"\u9022>F{e2}ng;",
+	"\u9023>Li{a2}n;",
+	"\u9024>Su{o4};",
+	"\u9025>Hu{i2};",
+	"\u9026>L{i3};",
+	"\u9028>La{i2};",
+	"\u9029>B{e4}n;",
+	"\u902A>Cu{o4};",
+	"\u902B>Ju{e2};",
+	"\u902C>B{e4}ng;",
+	"\u902D>Hu{a4}n;",
+	"\u902E>Da{i4};",
+	"\u902F>L{u4};",
+	"\u9030>Yo{u2};",
+	"\u9031>Zhou;",
+	"\u9032>J{i4}n;",
+	"\u9033>Y{u4};",
+	"\u9034>Chu{o4};",
+	"\u9035>Ku{i2};",
+	"\u9036>Wei;",
+	"\u9037>T{i4};",
+	"\u9038>Y{i4};",
+	"\u9039>D{a2};",
+	"\u903A>Yu{a3}n;",
+	"\u903B>Lu{o2};",
+	"\u903C>Bi;",
+	"\u903D>Nu{o4};",
+	"\u903E>Y{u2};",
+	"\u903F>D{a4}ng;",
+	"\u9040>Su{i2};",
+	"\u9041>D{u4}n;",
+	"\u9042>Su{i4};",
+	"\u9043>Y{a3}n;",
+	"\u9044>Chu{a2}n;",
+	"\u9045>Ch{i2};",
+	"\u9046>T{i2};",
+	"\u9047>Y{u4};",
+	"\u9048>Sh{i2};",
+	"\u9049>Zhen;",
+	"\u904A>Yo{u2};",
+	"\u904B>Y{u4}n;",
+	"\u904C>{E4};",
+	"\u904D>Bi{a4}n;",
+	"\u904E>Gu{o4};",
+	"\u904F>{E4};",
+	"\u9050>Xi{a2};",
+	"\u9051>Hu{a2}ng;",
+	"\u9052>Qi{u2};",
+	"\u9053>Da{o4};",
+	"\u9054>D{a2};",
+	"\u9055>We{i2};",
+	"\u9057>Y{i2};",
+	"\u9058>Go{u4};",
+	"\u9059>Ya{o2};",
+	"\u905A>Ch{u4};",
+	"\u905B>Li{u2};",
+	"\u905C>X{u4}n;",
+	"\u905D>T{a4};",
+	"\u905E>D{i4};",
+	"\u905F>Ch{i2};",
+	"\u9060>Yu{a3}n;",
+	"\u9061>S{u4};",
+	"\u9062>T{a4};",
+	"\u9063>Qi{a3}n;",
+	"\u9065>Ya{o2};",
+	"\u9066>Gu{a4}n;",
+	"\u9067>Zhang;",
+	"\u9068>A{o2};",
+	"\u9069>Sh{i4};",
+	"\u906A>C{e4};",
+	"\u906B>Ch{i4};",
+	"\u906C>S{u4};",
+	"\u906D>Zao;",
+	"\u906E>Zhe;",
+	"\u906F>D{u4}n;",
+	"\u9070>D{i4};",
+	"\u9071>Lo{u2};",
+	"\u9072>Ch{i2};",
+	"\u9073>Cuo;",
+	"\u9074>L{i2}n;",
+	"\u9075>Zun;",
+	"\u9076>Ra{o4};",
+	"\u9077>Qian;",
+	"\u9078>Xu{a3}n;",
+	"\u9079>Y{u4};",
+	"\u907A>Y{i2};",
+	"\u907B>W{u4};",
+	"\u907C>Lia{o2};",
+	"\u907D>J{u4};",
+	"\u907E>Sh{i4};",
+	"\u907F>B{i4};",
+	"\u9080>Yao;",
+	"\u9081>Ma{i4};",
+	"\u9082>Xi{e4};",
+	"\u9083>Su{i4};",
+	"\u9084>Hu{a2}n;",
+	"\u9085>Zhan;",
+	"\u9086>T{e2}ng;",
+	"\u9087>{e3}r;",
+	"\u9088>Mia{o3};",
+	"\u9089>Bian;",
+	"\u908A>Bian;",
+	"\u908B>L{a2};",
+	"\u908C>L{i2};",
+	"\u908D>Yu{a2}n;",
+	"\u908E>Ya{o2};",
+	"\u908F>Lu{o2};",
+	"\u9090>L{i3};",
+	"\u9091>Y{i4};",
+	"\u9092>T{i2}ng;",
+	"\u9093>D{e4}ng;",
+	"\u9094>Q{i3};",
+	"\u9095>Yong;",
+	"\u9096>Shan;",
+	"\u9097>H{a2}n;",
+	"\u9098>Y{u2};",
+	"\u9099>M{a2}ng;",
+	"\u909A>R{u2};",
+	"\u909B>Qi{o2}ng;",
+	"\u909D>Ku{a4}ng;",
+	"\u909E>Fu;",
+	"\u909F>K{a4}ng;",
+	"\u90A0>Bin;",
+	"\u90A1>Fang;",
+	"\u90A2>X{i2}ng;",
+	"\u90A3>N{a4};",
+	"\u90A4>Xin;",
+	"\u90A5>Sh{e3}n;",
+	"\u90A6>Bang;",
+	"\u90A7>Yu{a2}n;",
+	"\u90A8>Cun;",
+	"\u90A9>Hu{o3};",
+	"\u90AA>Xi{e2};",
+	"\u90AB>Bang;",
+	"\u90AC>Wu;",
+	"\u90AD>J{u4};",
+	"\u90AE>Yo{u2};",
+	"\u90AF>H{a2}n;",
+	"\u90B0>Ta{i2};",
+	"\u90B1>Qiu;",
+	"\u90B2>B{i4};",
+	"\u90B3>Pe{i2};",
+	"\u90B4>B{i3}ng;",
+	"\u90B5>Sha{o4};",
+	"\u90B6>Be{i4};",
+	"\u90B7>W{a3};",
+	"\u90B8>D{i3};",
+	"\u90B9>Zou;",
+	"\u90BA>Y{e4};",
+	"\u90BB>L{i2}n;",
+	"\u90BC>Kuang;",
+	"\u90BD>Gui;",
+	"\u90BE>Zhu;",
+	"\u90BF>Shi;",
+	"\u90C0>Ku;",
+	"\u90C1>Y{u4};",
+	"\u90C2>Gai;",
+	"\u90C3>G{e2};",
+	"\u90C4>X{i4};",
+	"\u90C5>Zh{i4};",
+	"\u90C6>J{i2};",
+	"\u90C7>X{u2}n;",
+	"\u90C8>Ho{u4};",
+	"\u90C9>X{i2}ng;",
+	"\u90CA>Jiao;",
+	"\u90CB>X{i2};",
+	"\u90CC>Gui;",
+	"\u90CD>Nu{o2};",
+	"\u90CE>L{a2}ng;",
+	"\u90CF>Ji{a2};",
+	"\u90D0>Kua{i4};",
+	"\u90D1>Zh{e4}ng;",
+	"\u90D3>Y{u4}n;",
+	"\u90D4>Y{a2}n;",
+	"\u90D5>Ch{e2}ng;",
+	"\u90D6>Dou;",
+	"\u90D7>Chi;",
+	"\u90D8>L{uu3};",
+	"\u90D9>F{u3};",
+	"\u90DA>W{u2};",
+	"\u90DB>F{u2};",
+	"\u90DC>Ga{o4};",
+	"\u90DD>Ha{o3};",
+	"\u90DE>L{a2}ng;",
+	"\u90DF>Ji{a2};",
+	"\u90E0>G{e3}ng;",
+	"\u90E1>J{u4}n;",
+	"\u90E2>Y{i3}ng;",
+	"\u90E3>B{o2};",
+	"\u90E4>X{i4};",
+	"\u90E5>Be{i4};",
+	"\u90E6>L{i4};",
+	"\u90E7>Y{u2}n;",
+	"\u90E8>B{u4};",
+	"\u90E9>Xia{o2};",
+	"\u90EA>Qi;",
+	"\u90EB>P{i2};",
+	"\u90EC>Qing;",
+	"\u90ED>Guo;",
+	"\u90EE>Zhou;",
+	"\u90EF>T{a2}n;",
+	"\u90F0>Zou;",
+	"\u90F1>P{i2}ng;",
+	"\u90F2>La{i2};",
+	"\u90F3>N{i2};",
+	"\u90F4>Chen;",
+	"\u90F5>Yo{u2};",
+	"\u90F6>B{u4};",
+	"\u90F7>Xiang;",
+	"\u90F8>Dan;",
+	"\u90F9>J{u2};",
+	"\u90FA>Yong;",
+	"\u90FB>Qiao;",
+	"\u90FC>Yi;",
+	"\u90FD>Du;",
+	"\u90FE>Y{a3}n;",
+	"\u90FF>Me{i2};",
+	"\u9100>Ru{o4};",
+	"\u9101>Be{i4};",
+	"\u9102>{E4};",
+	"\u9103>Y{u2};",
+	"\u9104>Ju{a4}n;",
+	"\u9105>Y{u3};",
+	"\u9106>Y{u4}n;",
+	"\u9107>Ho{u4};",
+	"\u9108>Ku{i2};",
+	"\u9109>Xiang;",
+	"\u910A>Xiang;",
+	"\u910B>Sou;",
+	"\u910C>T{a2}ng;",
+	"\u910D>M{i2}ng;",
+	"\u910E>X{i4};",
+	"\u910F>R{u4};",
+	"\u9110>Ch{u4};",
+	"\u9111>Zi;",
+	"\u9112>Zou;",
+	"\u9113>J{u2};",
+	"\u9114>Wu;",
+	"\u9115>Xiang;",
+	"\u9116>Y{u2}n;",
+	"\u9117>Ha{o4};",
+	"\u9118>Yong;",
+	"\u9119>B{i3};",
+	"\u911A>M{o4};",
+	"\u911B>Cha{o2};",
+	"\u911C>Fu;",
+	"\u911D>Lia{o3};",
+	"\u911E>Y{i2}n;",
+	"\u911F>Zhuan;",
+	"\u9120>H{u4};",
+	"\u9121>Qiao;",
+	"\u9122>Yan;",
+	"\u9123>Zhang;",
+	"\u9124>F{a4}n;",
+	"\u9125>Qiao;",
+	"\u9126>X{u3};",
+	"\u9127>D{e4}ng;",
+	"\u9128>B{i4};",
+	"\u9129>X{i2}n;",
+	"\u912A>B{i4};",
+	"\u912B>C{e2}ng;",
+	"\u912C>We{i2};",
+	"\u912D>Zh{e4}ng;",
+	"\u912E>Ma{o4};",
+	"\u912F>Sh{a4}n;",
+	"\u9130>L{i2}n;",
+	"\u9131>P{o2};",
+	"\u9132>Dan;",
+	"\u9133>M{e2}ng;",
+	"\u9134>Y{e4};",
+	"\u9135>Cao;",
+	"\u9136>Kua{i4};",
+	"\u9137>Feng;",
+	"\u9138>M{e2}ng;",
+	"\u9139>Zou;",
+	"\u913A>Ku{a4}ng;",
+	"\u913B>Li{a2}n;",
+	"\u913C>Z{a4}n;",
+	"\u913D>Ch{a2}n;",
+	"\u913E>You;",
+	"\u913F>Q{i2};",
+	"\u9140>Yan;",
+	"\u9141>Ch{a2}n;",
+	"\u9142>Z{a4}n;",
+	"\u9143>L{i2}ng;",
+	"\u9144>Huan;",
+	"\u9145>Xi;",
+	"\u9146>Feng;",
+	"\u9147>Z{a4}n;",
+	"\u9148>L{i4};",
+	"\u9149>Yo{u3};",
+	"\u914A>D{i3}ng;",
+	"\u914B>Qi{u2};",
+	"\u914C>Zhu{o2};",
+	"\u914D>Pe{i4};",
+	"\u914E>Zho{u4};",
+	"\u914F>Y{i2};",
+	"\u9150>H{a3}ng;",
+	"\u9151>Y{u3};",
+	"\u9152>Ji{u3};",
+	"\u9153>Y{a3}n;",
+	"\u9154>Zu{i4};",
+	"\u9155>Ma{o2};",
+	"\u9156>Dan;",
+	"\u9157>X{u4};",
+	"\u9158>To{u2};",
+	"\u9159>Zhen;",
+	"\u915A>Fen;",
+	"\u915D>Y{u4}n;",
+	"\u915E>Ta{i4};",
+	"\u915F>Tian;",
+	"\u9160>Qi{a3};",
+	"\u9161>Tu{o2};",
+	"\u9162>Zu{o4};",
+	"\u9163>Han;",
+	"\u9164>Gu;",
+	"\u9165>Su;",
+	"\u9166>P{o4};",
+	"\u9167>Cho{u2};",
+	"\u9168>Za{i4};",
+	"\u9169>M{i2}ng;",
+	"\u916A>Lu{o4};",
+	"\u916B>Chu{o4};",
+	"\u916C>Cho{u2};",
+	"\u916D>Yo{u4};",
+	"\u916E>T{o2}ng;",
+	"\u916F>Zh{i3};",
+	"\u9170>Xian;",
+	"\u9171>Ji{a4}ng;",
+	"\u9172>Ch{e2}ng;",
+	"\u9173>Y{i4}n;",
+	"\u9174>T{u2};",
+	"\u9175>Xia{o4};",
+	"\u9176>Me{i2};",
+	"\u9177>K{u4};",
+	"\u9178>Suan;",
+	"\u9179>Le{i4};",
+	"\u917A>P{u2};",
+	"\u917B>Zu{i4};",
+	"\u917C>Ha{i3};",
+	"\u917D>Y{a4}n;",
+	"\u917E>X{i3};",
+	"\u917F>Ni{a4}ng;",
+	"\u9180>We{i2};",
+	"\u9181>L{u4};",
+	"\u9182>L{a3}n;",
+	"\u9183>Yan;",
+	"\u9184>Ta{o2};",
+	"\u9185>Pei;",
+	"\u9186>Zh{a3}n;",
+	"\u9187>Ch{u2}n;",
+	"\u9188>T{a2}n;",
+	"\u9189>Zu{i4};",
+	"\u918A>Chu{o4};",
+	"\u918B>C{u4};",
+	"\u918C>Kun;",
+	"\u918D>T{i2};",
+	"\u918E>Mi{a2}n;",
+	"\u918F>Du;",
+	"\u9190>H{u2};",
+	"\u9191>X{u3};",
+	"\u9192>X{i3}ng;",
+	"\u9193>T{a3}n;",
+	"\u9194>Jiu;",
+	"\u9195>Ch{u2}n;",
+	"\u9196>Y{u4}n;",
+	"\u9197>P{o4};",
+	"\u9198>K{e4};",
+	"\u9199>Sou;",
+	"\u919A>M{i2};",
+	"\u919B>Qu{a2}n;",
+	"\u919C>Cho{u3};",
+	"\u919D>Cu{o2};",
+	"\u919E>Y{u4}n;",
+	"\u919F>Y{o4}ng;",
+	"\u91A0>{A4}ng;",
+	"\u91A1>Zh{a4};",
+	"\u91A2>Ha{i3};",
+	"\u91A3>T{a2}ng;",
+	"\u91A4>Ji{a4}ng;",
+	"\u91A5>Pia{o3};",
+	"\u91A6>Sh{a3}n;",
+	"\u91A7>Y{u4};",
+	"\u91A8>L{i2};",
+	"\u91A9>Za{o2};",
+	"\u91AA>La{o2};",
+	"\u91AB>Yi;",
+	"\u91AC>Ji{a4}ng;",
+	"\u91AD>Pu;",
+	"\u91AE>Jia{o4};",
+	"\u91AF>Xi;",
+	"\u91B0>T{a2}n;",
+	"\u91B1>P{o4};",
+	"\u91B2>N{o2}ng;",
+	"\u91B3>Y{i4};",
+	"\u91B4>L{i3};",
+	"\u91B5>J{u4};",
+	"\u91B6>Jia{o4};",
+	"\u91B7>Y{i4};",
+	"\u91B8>Ni{a4}ng;",
+	"\u91B9>R{u2};",
+	"\u91BA>Xun;",
+	"\u91BB>Cho{u2};",
+	"\u91BC>Y{a4}n;",
+	"\u91BD>L{i2}ng;",
+	"\u91BE>M{i2};",
+	"\u91BF>M{i2};",
+	"\u91C0>Ni{a4}ng;",
+	"\u91C1>X{i4}n;",
+	"\u91C2>Jia{o4};",
+	"\u91C3>X{i3};",
+	"\u91C4>M{i2};",
+	"\u91C5>Y{a4}n;",
+	"\u91C6>Bi{a4}n;",
+	"\u91C7>Ca{i3};",
+	"\u91C8>Sh{i4};",
+	"\u91C9>Yo{u4};",
+	"\u91CA>Sh{i4};",
+	"\u91CB>Sh{i4};",
+	"\u91CC>L{i3};",
+	"\u91CD>Zh{o4}ng;",
+	"\u91CE>Y{e3};",
+	"\u91CF>Li{a4}ng;",
+	"\u91D0>L{i2};",
+	"\u91D1>Jin;",
+	"\u91D2>Jin1zi4p{a2}ng;",
+	"\u91D3>Qi{u2};",
+	"\u91D4>Y{i3};",
+	"\u91D5>Dia{o3};",
+	"\u91D6>Dao;",
+	"\u91D7>Zhao;",
+	"\u91D8>Ding;",
+	"\u91D9>P{o4};",
+	"\u91DA>Qi{u2};",
+	"\u91DB>H{e2};",
+	"\u91DC>F{u3};",
+	"\u91DD>Zhen;",
+	"\u91DE>Zh{i2};",
+	"\u91DF>Ba;",
+	"\u91E0>Lu{a4}n;",
+	"\u91E1>F{u3};",
+	"\u91E2>Na{i2};",
+	"\u91E3>Dia{o4};",
+	"\u91E4>Sh{a4}n;",
+	"\u91E5>Qia{o3};",
+	"\u91E6>Ko{u4};",
+	"\u91E7>Chu{a4}n;",
+	"\u91E8>Z{i3};",
+	"\u91E9>F{a2}n;",
+	"\u91EA>Y{u2};",
+	"\u91EB>Hu{a2};",
+	"\u91EC>H{a4}n;",
+	"\u91ED>Gong;",
+	"\u91EE>Q{i2};",
+	"\u91EF>M{a2}ng;",
+	"\u91F0>R{i4};",
+	"\u91F1>D{i4};",
+	"\u91F2>S{i4};",
+	"\u91F3>X{i4};",
+	"\u91F4>Y{i4};",
+	"\u91F5>Chai;",
+	"\u91F6>Shi;",
+	"\u91F7>T{u3};",
+	"\u91F8>X{i4};",
+	"\u91F9>N{uu3};",
+	"\u91FA>Qian;",
+	"\u91FC>Ji{a4}n;",
+	"\u91FD>Pi;",
+	"\u91FE>Y{e2};",
+	"\u91FF>Y{i2}n;",
+	"\u9200>B{a3};",
+	"\u9201>Fang;",
+	"\u9202>Ch{e2}n;",
+	"\u9203>X{i2}ng;",
+	"\u9204>To{u3};",
+	"\u9205>Yu{e4};",
+	"\u9206>Y{a2}n;",
+	"\u9207>Fu;",
+	"\u9208>Pi;",
+	"\u9209>N{a4};",
+	"\u920A>Xin;",
+	"\u920B>{E2};",
+	"\u920C>Ju{e2};",
+	"\u920D>D{u4}n;",
+	"\u920E>Gou;",
+	"\u920F>Y{i3}n;",
+	"\u9210>Qi{a2}n;",
+	"\u9211>B{a3}n;",
+	"\u9212>J{i2};",
+	"\u9213>R{e2}n;",
+	"\u9214>Chao;",
+	"\u9215>Ni{u3};",
+	"\u9216>Fen;",
+	"\u9217>Y{u3}n;",
+	"\u9218>J{i3};",
+	"\u9219>Q{i2}n;",
+	"\u921A>P{i2};",
+	"\u921B>Guo;",
+	"\u921C>H{o2}ng;",
+	"\u921D>Y{i2}n;",
+	"\u921E>Jun;",
+	"\u921F>Shi;",
+	"\u9220>Y{i4};",
+	"\u9221>Zhong;",
+	"\u9222>Nie;",
+	"\u9223>Ga{i4};",
+	"\u9224>R{i4};",
+	"\u9225>Hu{o2};",
+	"\u9226>Ta{i4};",
+	"\u9227>K{a4}ng;",
+	"\u922C>Du{o2};",
+	"\u922D>Zi;",
+	"\u922E>N{i3};",
+	"\u922F>T{u2};",
+	"\u9230>Sh{i4};",
+	"\u9231>M{i2}n;",
+	"\u9232>Gu;",
+	"\u9233>E;",
+	"\u9234>L{i2}ng;",
+	"\u9235>B{i4}ng;",
+	"\u9236>Y{i2};",
+	"\u9237>Gu;",
+	"\u9238>B{a2};",
+	"\u9239>Pi;",
+	"\u923A>Y{u4};",
+	"\u923B>S{i4};",
+	"\u923C>Zu{o2};",
+	"\u923D>B{u4};",
+	"\u923E>Yo{u2};",
+	"\u923F>Di{a4}n;",
+	"\u9240>Ji{a3};",
+	"\u9241>Zhen;",
+	"\u9242>Sh{i3};",
+	"\u9243>Sh{i4};",
+	"\u9244>Ti{e3};",
+	"\u9245>J{u4};",
+	"\u9246>Zhan;",
+	"\u9247>Shi;",
+	"\u9248>Sh{e2};",
+	"\u9249>Xu{a4}n;",
+	"\u924A>Zhao;",
+	"\u924B>Ba{o4};",
+	"\u924C>H{e2};",
+	"\u924D>B{i4};",
+	"\u924E>Sheng;",
+	"\u924F>Ch{u2};",
+	"\u9250>Sh{i2};",
+	"\u9251>B{o2};",
+	"\u9252>Zh{u4};",
+	"\u9253>Ch{i4};",
+	"\u9254>Za;",
+	"\u9255>Po;",
+	"\u9256>T{o2}ng;",
+	"\u9257>Qi{a2}n;",
+	"\u9258>F{u2};",
+	"\u9259>Zha{i3};",
+	"\u925A>Li{u3};",
+	"\u925B>Qian;",
+	"\u925C>F{u2};",
+	"\u925D>L{i4};",
+	"\u925E>Yu{e4};",
+	"\u925F>Pi;",
+	"\u9260>Yang;",
+	"\u9261>B{a4}n;",
+	"\u9262>Bo;",
+	"\u9263>Ji{e2};",
+	"\u9264>Gou;",
+	"\u9265>Sh{u4};",
+	"\u9266>Zheng;",
+	"\u9267>M{u3};",
+	"\u9268>N{i3};",
+	"\u9269>Nie;",
+	"\u926A>D{i4};",
+	"\u926B>Jia;",
+	"\u926C>M{u4};",
+	"\u926D>D{a4}n;",
+	"\u926E>Shen;",
+	"\u926F>Y{i3};",
+	"\u9270>Si;",
+	"\u9271>Ku{a4}ng;",
+	"\u9272>K{a3};",
+	"\u9273>Be{i3};",
+	"\u9274>Ji{a4}n;",
+	"\u9275>T{o2}ng;",
+	"\u9276>X{i2}ng;",
+	"\u9277>H{o2}ng;",
+	"\u9278>Jia{o3};",
+	"\u9279>Ch{i3};",
+	"\u927A>{E4}r;",
+	"\u927B>G{e4};",
+	"\u927C>B{i3}ng;",
+	"\u927D>Sh{i4};",
+	"\u927E>Mo{u2};",
+	"\u927F>Ji{a2};",
+	"\u9280>Y{i2}n;",
+	"\u9281>Jun;",
+	"\u9282>Zhou;",
+	"\u9283>Ch{o4}ng;",
+	"\u9284>Sh{a4}ng;",
+	"\u9285>T{o2}ng;",
+	"\u9286>M{o4};",
+	"\u9287>Le{i4};",
+	"\u9288>Ji;",
+	"\u9289>Y{u4};",
+	"\u928A>X{u4};",
+	"\u928B>R{e2}n;",
+	"\u928C>Z{u4}n;",
+	"\u928D>Zh{i4};",
+	"\u928E>Qiong;",
+	"\u928F>Sh{a4}n;",
+	"\u9290>Ch{i4};",
+	"\u9291>Xi{a3}n;",
+	"\u9292>X{i2}ng;",
+	"\u9293>Qu{a2}n;",
+	"\u9294>Pi;",
+	"\u9295>Ti{e3};",
+	"\u9296>Zhu;",
+	"\u9297>Ho{u2};",
+	"\u9298>M{i2}ng;",
+	"\u9299>Ku{a3};",
+	"\u929A>Ya{o2};",
+	"\u929B>Xian;",
+	"\u929C>Xi{a2}n;",
+	"\u929D>Xiu;",
+	"\u929E>Jun;",
+	"\u929F>Cha;",
+	"\u92A0>La{o3};",
+	"\u92A1>J{i2};",
+	"\u92A2>P{i3};",
+	"\u92A3>R{u3};",
+	"\u92A4>M{i3};",
+	"\u92A5>Y{i3};",
+	"\u92A6>Yin;",
+	"\u92A7>Guang;",
+	"\u92A8>An;",
+	"\u92A9>Diou;",
+	"\u92AA>Yo{u3};",
+	"\u92AB>S{e4};",
+	"\u92AC>Ka{o4};",
+	"\u92AD>Qi{a2}n;",
+	"\u92AE>Lu{a2}n;",
+	"\u92B0>Ai;",
+	"\u92B1>Dia{o4};",
+	"\u92B2>H{a4}n;",
+	"\u92B3>Ru{i4};",
+	"\u92B4>Sh{i4};",
+	"\u92B5>Keng;",
+	"\u92B6>Qi{u2};",
+	"\u92B7>Xiao;",
+	"\u92B8>Zh{e2};",
+	"\u92B9>Xi{u4};",
+	"\u92BA>Z{a4}ng;",
+	"\u92BB>T{i4};",
+	"\u92BC>Cu{o4};",
+	"\u92BD>Gua;",
+	"\u92BE>G{o3}ng;",
+	"\u92BF>Zhong;",
+	"\u92C0>Do{u4};",
+	"\u92C1>L{uu3};",
+	"\u92C2>Me{i2};",
+	"\u92C3>L{a2}ng;",
+	"\u92C4>W{a3}n;",
+	"\u92C5>Xin;",
+	"\u92C6>Y{u2}n;",
+	"\u92C7>Be{i4};",
+	"\u92C8>W{u4};",
+	"\u92C9>S{u4};",
+	"\u92CA>Y{u4};",
+	"\u92CB>Ch{a2}n;",
+	"\u92CC>T{i3}ng;",
+	"\u92CD>B{o2};",
+	"\u92CE>H{a4}n;",
+	"\u92CF>Ji{a2};",
+	"\u92D0>H{o2}ng;",
+	"\u92D1>Cuan;",
+	"\u92D2>Feng;",
+	"\u92D3>Chan;",
+	"\u92D4>W{a3}n;",
+	"\u92D5>Zh{i4};",
+	"\u92D6>Si;",
+	"\u92D7>Xuan;",
+	"\u92D8>W{u2};",
+	"\u92D9>W{u2};",
+	"\u92DA>Tia{o2};",
+	"\u92DB>G{o3}ng;",
+	"\u92DC>Zhu{o2};",
+	"\u92DD>L{uu}{e4};",
+	"\u92DE>X{i2}ng;",
+	"\u92DF>Qian;",
+	"\u92E0>Sh{e4}n;",
+	"\u92E1>H{a2}n;",
+	"\u92E2>L{uu}{e4};",
+	"\u92E3>Xi{e2};",
+	"\u92E4>Ch{u2};",
+	"\u92E5>Zh{e4}ng;",
+	"\u92E6>J{u2};",
+	"\u92E7>Xi{a4}n;",
+	"\u92E8>Ti{e3};",
+	"\u92E9>M{a2}ng;",
+	"\u92EA>Pu;",
+	"\u92EB>L{i2};",
+	"\u92EC>P{a4}n;",
+	"\u92ED>Ru{i4};",
+	"\u92EE>Ch{e2}ng;",
+	"\u92EF>Ga{o4};",
+	"\u92F0>L{i3};",
+	"\u92F1>T{e4};",
+	"\u92F3>Zh{u4};",
+	"\u92F5>Tu;",
+	"\u92F6>Li{u3};",
+	"\u92F7>Zu{i4};",
+	"\u92F8>J{u4};",
+	"\u92F9>Ch{a3}ng;",
+	"\u92FA>Yuan;",
+	"\u92FB>Ji{a4}n;",
+	"\u92FC>Gang;",
+	"\u92FD>Dia{o4};",
+	"\u92FE>Ta{o2};",
+	"\u92FF>Ch{a2}ng;",
+	"\u9300>L{u2}n;",
+	"\u9301>Ku{a3};",
+	"\u9302>L{i2}ng;",
+	"\u9303>Bei;",
+	"\u9304>L{u4};",
+	"\u9305>L{i2};",
+	"\u9306>Qiang;",
+	"\u9307>Po{u2};",
+	"\u9308>Ju{a4}n;",
+	"\u9309>M{i2}n;",
+	"\u930A>Zu{i4};",
+	"\u930B>P{e2}ng;",
+	"\u930C>{A4}n;",
+	"\u930D>P{i2};",
+	"\u930E>Xi{a4}n;",
+	"\u930F>Y{a4};",
+	"\u9310>Zhui;",
+	"\u9311>Le{i4};",
+	"\u9312>A;",
+	"\u9313>Kong;",
+	"\u9314>T{a4};",
+	"\u9315>Kun;",
+	"\u9316>D{u3};",
+	"\u9317>We{i4};",
+	"\u9318>Chu{i2};",
+	"\u9319>Zi;",
+	"\u931A>Zheng;",
+	"\u931B>Ben;",
+	"\u931C>Nie;",
+	"\u931D>C{o2}ng;",
+	"\u931E>Q{u2}n;",
+	"\u931F>T{a2}n;",
+	"\u9320>D{i4}ng;",
+	"\u9321>Q{i2};",
+	"\u9322>Qi{a2}n;",
+	"\u9323>Zhu{o2};",
+	"\u9324>Q{i2};",
+	"\u9325>Y{u4};",
+	"\u9326>J{i3}n;",
+	"\u9327>Gu{a3}n;",
+	"\u9328>Ma{o2};",
+	"\u9329>Chang;",
+	"\u932A>Ti{a3}n;",
+	"\u932B>X{i2};",
+	"\u932C>Li{a4}n;",
+	"\u932D>Ta{o2};",
+	"\u932E>G{u4};",
+	"\u932F>Cu{o4};",
+	"\u9330>Sh{u4};",
+	"\u9331>Zhen;",
+	"\u9332>L{u4};",
+	"\u9333>M{e3}ng;",
+	"\u9334>L{u4};",
+	"\u9335>Hua;",
+	"\u9336>Bia{o3};",
+	"\u9337>G{a2};",
+	"\u9338>La{i2};",
+	"\u9339>K{e3}n;",
+	"\u933C>Na{i4};",
+	"\u933D>W{a3}n;",
+	"\u933E>Z{a4}n;",
+	"\u9340>D{e2};",
+	"\u9341>Xian;",
+	"\u9343>Huo;",
+	"\u9344>Li{a4}ng;",
+	"\u9346>M{e2}n;",
+	"\u9347>Ka{i3};",
+	"\u9348>Ying;",
+	"\u9349>Di;",
+	"\u934A>Li{a4}n;",
+	"\u934B>Guo;",
+	"\u934C>Xi{a3}n;",
+	"\u934D>D{u4};",
+	"\u934E>T{u2};",
+	"\u934F>We{i2};",
+	"\u9350>Cong;",
+	"\u9351>F{u4};",
+	"\u9352>Ro{u2};",
+	"\u9353>J{i2};",
+	"\u9354>{E4};",
+	"\u9355>Ro{u2};",
+	"\u9356>Ch{e3}n;",
+	"\u9357>T{i2};",
+	"\u9358>Zh{a2};",
+	"\u9359>H{o4}ng;",
+	"\u935A>Y{a2}ng;",
+	"\u935B>Du{a4}n;",
+	"\u935C>Xia;",
+	"\u935D>Y{u2};",
+	"\u935E>Keng;",
+	"\u935F>Xing;",
+	"\u9360>Hu{a2}ng;",
+	"\u9361>We{i3};",
+	"\u9362>F{u4};",
+	"\u9363>Zhao;",
+	"\u9364>Ch{a2};",
+	"\u9365>Qi{e4};",
+	"\u9366>Sh{e2};",
+	"\u9367>Hong;",
+	"\u9368>Ku{i2};",
+	"\u9369>Ti{a3}n;",
+	"\u936A>Mo{u2};",
+	"\u936B>Qiao;",
+	"\u936C>Qiao;",
+	"\u936D>Ho{u2};",
+	"\u936E>Tou;",
+	"\u936F>Cong;",
+	"\u9370>Hu{a2}n;",
+	"\u9371>Y{e4};",
+	"\u9372>M{i2}n;",
+	"\u9373>Ji{a4}n;",
+	"\u9374>Duan;",
+	"\u9375>Ji{a4}n;",
+	"\u9376>Song;",
+	"\u9377>Kui;",
+	"\u9378>H{u2};",
+	"\u9379>Xuan;",
+	"\u937A>Du{o3};",
+	"\u937B>Ji{e2};",
+	"\u937C>Zhen;",
+	"\u937D>Bian;",
+	"\u937E>Zhong;",
+	"\u937F>Zi;",
+	"\u9380>Xiu;",
+	"\u9381>Y{e2};",
+	"\u9382>Me{i3};",
+	"\u9383>Pa{i4};",
+	"\u9384>Ai;",
+	"\u9385>Ji{e4};",
+	"\u9387>Me{i2};",
+	"\u9388>Chuo;",
+	"\u9389>T{a4};",
+	"\u938A>B{a4}ng;",
+	"\u938B>Xi{a2};",
+	"\u938C>Li{a2}n;",
+	"\u938D>Su{o3};",
+	"\u938E>X{i4};",
+	"\u938F>Li{u2};",
+	"\u9390>Z{u2};",
+	"\u9391>Y{e4};",
+	"\u9392>No{u4};",
+	"\u9393>Weng;",
+	"\u9394>R{o2}ng;",
+	"\u9395>T{a2}ng;",
+	"\u9396>Su{o3};",
+	"\u9397>Qiang;",
+	"\u9398>G{e2};",
+	"\u9399>Shu{o4};",
+	"\u939A>Chu{i2};",
+	"\u939B>B{o2};",
+	"\u939C>P{a2}n;",
+	"\u939D>S{a4};",
+	"\u939E>B{i4};",
+	"\u939F>S{a3}ng;",
+	"\u93A0>Gang;",
+	"\u93A1>Zi;",
+	"\u93A2>W{u4};",
+	"\u93A3>Y{i4}ng;",
+	"\u93A4>Hu{a3}ng;",
+	"\u93A5>Tia{o2};",
+	"\u93A6>Li{u2};",
+	"\u93A7>Ka{i3};",
+	"\u93A8>S{u3}n;",
+	"\u93A9>Sha;",
+	"\u93AA>Sou;",
+	"\u93AB>W{a4}n;",
+	"\u93AC>Ha{o4};",
+	"\u93AD>Zh{e4}n;",
+	"\u93AE>Zh{e4}n;",
+	"\u93AF>Lu{o3};",
+	"\u93B0>Y{i4};",
+	"\u93B1>Yu{a2}n;",
+	"\u93B2>T{a3}ng;",
+	"\u93B3>Ni{e4};",
+	"\u93B4>X{i2};",
+	"\u93B5>Jia;",
+	"\u93B6>Ge;",
+	"\u93B7>M{a3};",
+	"\u93B8>Juan;",
+	"\u93BB>Su{o3};",
+	"\u93BF>N{a2};",
+	"\u93C0>L{u3};",
+	"\u93C1>Su{o3};",
+	"\u93C2>Ou;",
+	"\u93C3>Z{u2};",
+	"\u93C4>Tu{a2}n;",
+	"\u93C5>Xiu;",
+	"\u93C6>Gu{a4}n;",
+	"\u93C7>Xu{a4}n;",
+	"\u93C8>Li{a4}n;",
+	"\u93C9>Sho{u4};",
+	"\u93CA>A{o2};",
+	"\u93CB>M{a3}n;",
+	"\u93CC>M{o4};",
+	"\u93CD>Lu{o2};",
+	"\u93CE>B{i4};",
+	"\u93CF>We{i4};",
+	"\u93D0>Li{u2};",
+	"\u93D1>D{i2};",
+	"\u93D2>Qiao;",
+	"\u93D3>Cong;",
+	"\u93D4>Y{i2};",
+	"\u93D5>L{u4};",
+	"\u93D6>A{o2};",
+	"\u93D7>Keng;",
+	"\u93D8>Qiang;",
+	"\u93D9>Cui;",
+	"\u93DA>Q{i4};",
+	"\u93DB>Ch{a2}ng;",
+	"\u93DC>Tang;",
+	"\u93DD>M{a4}n;",
+	"\u93DE>Yong;",
+	"\u93DF>Ch{a3}n;",
+	"\u93E0>Feng;",
+	"\u93E1>J{i4}ng;",
+	"\u93E2>Biao;",
+	"\u93E3>Sh{u4};",
+	"\u93E4>Lo{u4};",
+	"\u93E5>Xi{u4};",
+	"\u93E6>Cong;",
+	"\u93E7>L{o2}ng;",
+	"\u93E8>Z{a4}n;",
+	"\u93E9>Ji{a4}n;",
+	"\u93EA>Ca{o2};",
+	"\u93EB>L{i2};",
+	"\u93EC>Xi{a4};",
+	"\u93ED>Xi;",
+	"\u93EE>Kang;",
+	"\u93F0>B{e4}ng;",
+	"\u93F3>Zheng;",
+	"\u93F4>L{u4};",
+	"\u93F5>Hu{a2};",
+	"\u93F6>J{i2};",
+	"\u93F7>P{u2};",
+	"\u93F8>Hu{i4};",
+	"\u93F9>Qiang;",
+	"\u93FA>Po;",
+	"\u93FB>L{i2}n;",
+	"\u93FC>Su{o3};",
+	"\u93FD>Xi{u4};",
+	"\u93FE>S{a3}n;",
+	"\u93FF>Cheng;",
+	"\u9400>Ku{i4};",
+	"\u9401>Si;",
+	"\u9402>Li{u4};",
+	"\u9403>Na{o2};",
+	"\u9404>H{e2}ng;",
+	"\u9405>Pi{e3};",
+	"\u9406>Su{i4};",
+	"\u9407>F{a2}n;",
+	"\u9408>Qia{o2};",
+	"\u9409>Quan;",
+	"\u940A>Y{a2}ng;",
+	"\u940B>T{a4}ng;",
+	"\u940C>Xi{a4}ng;",
+	"\u940D>Ju{e2};",
+	"\u940E>Jiao;",
+	"\u940F>Zun;",
+	"\u9410>Lia{o2};",
+	"\u9411>Ji{e2};",
+	"\u9412>La{o2};",
+	"\u9413>Du{i4};",
+	"\u9414>T{a2}n;",
+	"\u9415>Zan;",
+	"\u9416>Ji;",
+	"\u9417>Ji{a3}n;",
+	"\u9418>Zhong;",
+	"\u9419>Deng;",
+	"\u941A>Y{a4};",
+	"\u941B>Y{i4}ng;",
+	"\u941C>Du{i4};",
+	"\u941D>Ju{e2};",
+	"\u941E>No{u4};",
+	"\u941F>T{i4};",
+	"\u9420>P{u3};",
+	"\u9421>Ti{e3};",
+	"\u9424>D{i3}ng;",
+	"\u9425>Sh{a4}n;",
+	"\u9426>Kai;",
+	"\u9427>Ji{a3}n;",
+	"\u9428>Fe{i4};",
+	"\u9429>Su{i4};",
+	"\u942A>L{u3};",
+	"\u942B>Juan;",
+	"\u942C>Hu{i4};",
+	"\u942D>Y{u4};",
+	"\u942E>Li{a2}n;",
+	"\u942F>Zhu{o2};",
+	"\u9430>Qiao;",
+	"\u9431>Qian;",
+	"\u9432>Zhu{o2};",
+	"\u9433>Le{i2};",
+	"\u9434>B{i4};",
+	"\u9435>Ti{e3};",
+	"\u9436>Hu{a2}n;",
+	"\u9437>Y{e4};",
+	"\u9438>Du{o2};",
+	"\u9439>Gu{o3};",
+	"\u943A>Dang;",
+	"\u943B>J{u4};",
+	"\u943C>F{e2}n;",
+	"\u943D>D{a2};",
+	"\u943E>Be{i4};",
+	"\u943F>Y{i4};",
+	"\u9440>A{i4};",
+	"\u9441>Zong;",
+	"\u9442>X{u4}n;",
+	"\u9443>Dia{o4};",
+	"\u9444>Zh{u4};",
+	"\u9445>H{e2}ng;",
+	"\u9446>Zhu{i4};",
+	"\u9447>Ji;",
+	"\u9448>Nie;",
+	"\u9449>T{a4};",
+	"\u944A>Hu{o4};",
+	"\u944B>Q{i4}ng;",
+	"\u944C>Bin;",
+	"\u944D>Ying;",
+	"\u944E>Ku{i4};",
+	"\u944F>N{i2}ng;",
+	"\u9450>Xu;",
+	"\u9451>Ji{a4}n;",
+	"\u9452>Ji{a4}n;",
+	"\u9454>Ch{a3};",
+	"\u9455>Zh{i4};",
+	"\u9456>Mi{e4};",
+	"\u9457>L{i2};",
+	"\u9458>Le{i2};",
+	"\u9459>Ji;",
+	"\u945A>Zu{a4}n;",
+	"\u945B>Ku{a4}ng;",
+	"\u945C>Sh{a4}ng;",
+	"\u945D>P{e2}ng;",
+	"\u945E>L{a4};",
+	"\u945F>D{u2};",
+	"\u9460>Shu{o4};",
+	"\u9461>Chu{o4};",
+	"\u9462>L{uu4};",
+	"\u9463>Biao;",
+	"\u9464>Ba{o4};",
+	"\u9465>L{u3};",
+	"\u9468>L{o2}ng;",
+	"\u9469>{E4};",
+	"\u946A>L{u2};",
+	"\u946B>Xin;",
+	"\u946C>Ji{a4}n;",
+	"\u946D>L{a4}n;",
+	"\u946E>B{o2};",
+	"\u946F>Jian;",
+	"\u9470>Ya{o4};",
+	"\u9471>Ch{a2}n;",
+	"\u9472>Xiang;",
+	"\u9473>Ji{a4}n;",
+	"\u9474>Xi;",
+	"\u9475>Gu{a4}n;",
+	"\u9476>C{a2}ng;",
+	"\u9477>Ni{e4};",
+	"\u9478>Le{i3};",
+	"\u9479>Cu{a4}n;",
+	"\u947A>Q{u2};",
+	"\u947B>P{a4}n;",
+	"\u947C>Lu{o2};",
+	"\u947D>Zu{a4}n;",
+	"\u947E>Lu{a2}n;",
+	"\u947F>Za{o2};",
+	"\u9480>Ni{e4};",
+	"\u9481>Ju{e2};",
+	"\u9482>T{a3}ng;",
+	"\u9483>Sh{u3};",
+	"\u9484>L{a2}n;",
+	"\u9485>Jin;",
+	"\u9486>Qi{u2};",
+	"\u9487>Y{i3};",
+	"\u9488>Zhen;",
+	"\u9489>Ding;",
+	"\u948A>Zhao;",
+	"\u948B>P{o4};",
+	"\u948C>Dia{o3};",
+	"\u948D>T{u3};",
+	"\u948E>Qian;",
+	"\u948F>Chu{a4}n;",
+	"\u9490>Sh{a4}n;",
+	"\u9491>J{i2};",
+	"\u9492>F{a2}n;",
+	"\u9493>Dia{o4};",
+	"\u9494>M{e2}n;",
+	"\u9495>N{uu3};",
+	"\u9496>X{i2};",
+	"\u9497>Chai;",
+	"\u9498>X{i2}ng;",
+	"\u9499>Ga{i4};",
+	"\u949A>B{u4};",
+	"\u949B>Ta{i4};",
+	"\u949C>J{u4};",
+	"\u949D>D{u4}n;",
+	"\u949E>Chao;",
+	"\u949F>Zhong;",
+	"\u94A0>N{a4};",
+	"\u94A1>Be{i4};",
+	"\u94A2>Gang;",
+	"\u94A3>B{a3}n;",
+	"\u94A4>Qi{a2}n;",
+	"\u94A5>Ya{o4};",
+	"\u94A6>Qin;",
+	"\u94A7>Jun;",
+	"\u94A8>W{u4};",
+	"\u94A9>Gou;",
+	"\u94AA>K{a4}ng;",
+	"\u94AB>Fang;",
+	"\u94AC>Hu{o2};",
+	"\u94AD>To{u3};",
+	"\u94AE>Ni{u3};",
+	"\u94AF>B{a3};",
+	"\u94B0>Y{u4};",
+	"\u94B1>Qi{a2}n;",
+	"\u94B2>Zheng;",
+	"\u94B3>Qi{a2}n;",
+	"\u94B4>Gu;",
+	"\u94B5>Bo;",
+	"\u94B6>E;",
+	"\u94B7>Po;",
+	"\u94B8>B{u4};",
+	"\u94B9>B{a2};",
+	"\u94BA>Yu{e4};",
+	"\u94BB>Zu{a4}n;",
+	"\u94BC>M{u4};",
+	"\u94BD>D{a4}n;",
+	"\u94BE>Ji{a3};",
+	"\u94BF>Di{a4}n;",
+	"\u94C0>Yo{u2};",
+	"\u94C1>Ti{e3};",
+	"\u94C2>B{o2};",
+	"\u94C3>L{i2}ng;",
+	"\u94C4>Shu{o4};",
+	"\u94C5>Qian;",
+	"\u94C6>Li{u3};",
+	"\u94C7>Ba{o4};",
+	"\u94C8>Sh{i4};",
+	"\u94C9>Xu{a4}n;",
+	"\u94CA>Sh{e2};",
+	"\u94CB>B{i4};",
+	"\u94CC>N{i3};",
+	"\u94CD>Pi;",
+	"\u94CE>Du{o2};",
+	"\u94CF>X{i2}ng;",
+	"\u94D0>Ka{o4};",
+	"\u94D1>La{o3};",
+	"\u94D2>{E4}r;",
+	"\u94D3>M{a2}ng;",
+	"\u94D4>Y{a4};",
+	"\u94D5>Yo{u3};",
+	"\u94D6>Ch{e2}ng;",
+	"\u94D7>Ji{a2};",
+	"\u94D8>Y{e2};",
+	"\u94D9>Na{o2};",
+	"\u94DA>Zh{i4};",
+	"\u94DB>Dang;",
+	"\u94DC>T{o2}ng;",
+	"\u94DD>L{uu3};",
+	"\u94DE>Dia{o4};",
+	"\u94DF>Yin;",
+	"\u94E0>Ka{i3};",
+	"\u94E1>Zh{a2};",
+	"\u94E2>Zhu;",
+	"\u94E3>Xi{a3}n;",
+	"\u94E4>T{i3}ng;",
+	"\u94E5>Diu;",
+	"\u94E6>Xian;",
+	"\u94E7>Hu{a2};",
+	"\u94E8>Qu{a2}n;",
+	"\u94E9>Sha;",
+	"\u94EA>Ji{a2};",
+	"\u94EB>Ya{o2};",
+	"\u94EC>G{e4};",
+	"\u94ED>M{i2}ng;",
+	"\u94EE>Zheng;",
+	"\u94EF>S{e4};",
+	"\u94F0>Jia{o3};",
+	"\u94F1>Y{i3};",
+	"\u94F2>Ch{a3}n;",
+	"\u94F3>Ch{o4}ng;",
+	"\u94F4>T{a4}ng;",
+	"\u94F5>An;",
+	"\u94F6>Y{i2}n;",
+	"\u94F7>R{u3};",
+	"\u94F8>Zh{u4};",
+	"\u94F9>La{o2};",
+	"\u94FA>Pu;",
+	"\u94FB>W{u2};",
+	"\u94FC>La{i2};",
+	"\u94FD>T{e4};",
+	"\u94FE>Li{a4}n;",
+	"\u94FF>Keng;",
+	"\u9500>Xiao;",
+	"\u9501>Su{o3};",
+	"\u9502>L{i3};",
+	"\u9503>Zh{e4}ng;",
+	"\u9504>Ch{u2};",
+	"\u9505>Guo;",
+	"\u9506>Ga{o4};",
+	"\u9507>Ti{e3};",
+	"\u9508>Xi{u4};",
+	"\u9509>Cu{o4};",
+	"\u950A>L{uu}{e4};",
+	"\u950B>Feng;",
+	"\u950C>Xin;",
+	"\u950D>Li{u3};",
+	"\u950E>Kai;",
+	"\u950F>Ji{a3}n;",
+	"\u9510>Ru{i4};",
+	"\u9511>T{i4};",
+	"\u9512>L{a2}ng;",
+	"\u9513>Qian;",
+	"\u9514>J{u2};",
+	"\u9515>A;",
+	"\u9516>Qiang;",
+	"\u9517>Du{o3};",
+	"\u9518>Ti{a3}n;",
+	"\u9519>Cu{o4};",
+	"\u951A>Ma{o2};",
+	"\u951B>Ben;",
+	"\u951C>Q{i2};",
+	"\u951D>D{e2};",
+	"\u951E>Ku{a3};",
+	"\u951F>Kun;",
+	"\u9520>Chang;",
+	"\u9521>X{i2};",
+	"\u9522>G{u4};",
+	"\u9523>Lu{o2};",
+	"\u9524>Chu{i2};",
+	"\u9525>Zhui;",
+	"\u9526>J{i3}n;",
+	"\u9527>Zh{i4};",
+	"\u9528>Xian;",
+	"\u9529>Ju{a4}n;",
+	"\u952A>Huo;",
+	"\u952B>Po{u2};",
+	"\u952C>T{a2}n;",
+	"\u952D>D{i4}ng;",
+	"\u952E>Ji{a4}n;",
+	"\u952F>J{u4};",
+	"\u9530>M{e3}ng;",
+	"\u9531>Zi;",
+	"\u9532>Qi{e4};",
+	"\u9533>Ying;",
+	"\u9534>Ka{i3};",
+	"\u9535>Qiang;",
+	"\u9536>Song;",
+	"\u9537>{E4};",
+	"\u9538>Ch{a2};",
+	"\u9539>Qiao;",
+	"\u953A>Zhong;",
+	"\u953B>Du{a4}n;",
+	"\u953C>Sou;",
+	"\u953D>Hu{a2}ng;",
+	"\u953E>Hu{a2}n;",
+	"\u953F>Ai;",
+	"\u9540>D{u4};",
+	"\u9541>Me{i3};",
+	"\u9542>Lo{u4};",
+	"\u9543>Zi;",
+	"\u9544>Fe{i4};",
+	"\u9545>Me{i2};",
+	"\u9546>M{o4};",
+	"\u9547>Zh{e4}n;",
+	"\u9548>B{o2};",
+	"\u9549>G{e2};",
+	"\u954A>Ni{e4};",
+	"\u954B>T{a3}ng;",
+	"\u954C>Juan;",
+	"\u954D>Ni{e4};",
+	"\u954E>N{a2};",
+	"\u954F>Li{u2};",
+	"\u9550>Ha{o4};",
+	"\u9551>B{a4}ng;",
+	"\u9552>Y{i4};",
+	"\u9553>Jia;",
+	"\u9554>Bin;",
+	"\u9555>R{o2}ng;",
+	"\u9556>Biao;",
+	"\u9557>Tang;",
+	"\u9558>M{a4}n;",
+	"\u9559>Lu{o2};",
+	"\u955A>B{e4}ng;",
+	"\u955B>Yong;",
+	"\u955C>J{i4}ng;",
+	"\u955D>D{i2};",
+	"\u955E>Z{u2};",
+	"\u955F>Xu{a4}n;",
+	"\u9560>Li{u2};",
+	"\u9561>T{a2}n;",
+	"\u9562>Ju{e2};",
+	"\u9563>Lia{o2};",
+	"\u9564>P{u2};",
+	"\u9565>L{u3};",
+	"\u9566>Du{i4};",
+	"\u9567>L{a4}n;",
+	"\u9568>P{u3};",
+	"\u9569>Cu{a4}n;",
+	"\u956A>Qiang;",
+	"\u956B>Deng;",
+	"\u956C>Hu{o4};",
+	"\u956D>Le{i2};",
+	"\u956E>Hu{a2}n;",
+	"\u956F>Zhu{o2};",
+	"\u9570>Li{a2}n;",
+	"\u9571>Y{i4};",
+	"\u9572>Ch{a3};",
+	"\u9573>Biao;",
+	"\u9574>L{a4};",
+	"\u9575>Ch{a2}n;",
+	"\u9576>Xiang;",
+	"\u9577>Ch{a2}ng;",
+	"\u9578>Ch{a2}ng;",
+	"\u9579>Ji{u3};",
+	"\u957A>A{o3};",
+	"\u957B>Di{e2};",
+	"\u957C>Qu;",
+	"\u957D>Lia{o3};",
+	"\u957E>M{i2};",
+	"\u957F>Ch{a2}ng;",
+	"\u9580>M{e2}n;",
+	"\u9581>M{a4};",
+	"\u9582>Shuan;",
+	"\u9583>Sh{a3}n;",
+	"\u9584>Hu{o4};",
+	"\u9585>M{e2}n;",
+	"\u9586>Y{a4}n;",
+	"\u9587>B{i4};",
+	"\u9588>H{a4}n;",
+	"\u9589>B{i4};",
+	"\u958B>Kai;",
+	"\u958C>K{a4}ng;",
+	"\u958D>Beng;",
+	"\u958E>H{o2}ng;",
+	"\u958F>R{u4}n;",
+	"\u9590>S{a4}n;",
+	"\u9591>Xi{a2}n;",
+	"\u9592>Xi{a2}n;",
+	"\u9593>Jian;",
+	"\u9594>M{i3}n;",
+	"\u9595>Xia;",
+	"\u9597>Do{u4};",
+	"\u9598>Zh{a2};",
+	"\u9599>Na{o4};",
+	"\u959A>Jian;",
+	"\u959B>Peng;",
+	"\u959C>Xi{a3};",
+	"\u959D>L{i2}ng;",
+	"\u959E>Bi{a4}n;",
+	"\u959F>B{i4};",
+	"\u95A0>R{u4}n;",
+	"\u95A1>H{e2};",
+	"\u95A2>Guan;",
+	"\u95A3>G{e2};",
+	"\u95A4>G{e2};",
+	"\u95A5>F{a2};",
+	"\u95A6>Ch{u4};",
+	"\u95A7>H{o4}ng;",
+	"\u95A8>Gui;",
+	"\u95A9>M{i3}n;",
+	"\u95AB>K{u3}n;",
+	"\u95AC>L{a3}ng;",
+	"\u95AD>L{uu2};",
+	"\u95AE>T{i2}ng;",
+	"\u95AF>Sh{a4};",
+	"\u95B0>J{u2};",
+	"\u95B1>Yu{e4};",
+	"\u95B2>Yu{e4};",
+	"\u95B3>Ch{a3}n;",
+	"\u95B4>Q{u4};",
+	"\u95B5>L{i4}n;",
+	"\u95B6>Chang;",
+	"\u95B7>Sha{i4};",
+	"\u95B8>K{u3}n;",
+	"\u95B9>Yan;",
+	"\u95BA>M{i2}n;",
+	"\u95BB>Y{a2}n;",
+	"\u95BC>{E4};",
+	"\u95BD>Hun;",
+	"\u95BE>Y{u4};",
+	"\u95BF>W{e2}n;",
+	"\u95C0>Xi{a4}ng;",
+	"\u95C1>Bao;",
+	"\u95C2>Xi{a4}ng;",
+	"\u95C3>Q{u4};",
+	"\u95C4>Ya{o3};",
+	"\u95C5>W{e2}n;",
+	"\u95C6>B{a3}n;",
+	"\u95C7>{A4}n;",
+	"\u95C8>We{i2};",
+	"\u95C9>Yin;",
+	"\u95CA>Ku{o4};",
+	"\u95CB>Qu{e4};",
+	"\u95CC>L{a2}n;",
+	"\u95CD>Du;",
+	"\u95D0>Ti{a2}n;",
+	"\u95D1>Ni{e4};",
+	"\u95D2>T{a4};",
+	"\u95D3>Ka{i3};",
+	"\u95D4>H{e2};",
+	"\u95D5>Qu{e4};",
+	"\u95D6>Chu{a3}ng;",
+	"\u95D7>Guan;",
+	"\u95D8>Do{u4};",
+	"\u95D9>Q{i3};",
+	"\u95DA>Kui;",
+	"\u95DB>T{a2}ng;",
+	"\u95DC>Guan;",
+	"\u95DD>Pia{o2};",
+	"\u95DE>K{a4}n;",
+	"\u95DF>X{i4};",
+	"\u95E0>Hu{i4};",
+	"\u95E1>Ch{a3}n;",
+	"\u95E2>P{i4};",
+	"\u95E3>D{a4}ng;",
+	"\u95E4>Hu{a2}n;",
+	"\u95E5>T{a4};",
+	"\u95E6>W{e2}n;",
+	"\u95E8>M{e2}n;",
+	"\u95E9>Shuan;",
+	"\u95EA>Sh{a3}n;",
+	"\u95EB>Y{a4}n;",
+	"\u95EC>H{a4}n;",
+	"\u95ED>B{i4};",
+	"\u95EE>W{e4}n;",
+	"\u95EF>Chu{a3}ng;",
+	"\u95F0>R{u4}n;",
+	"\u95F1>We{i2};",
+	"\u95F2>Xi{a2}n;",
+	"\u95F3>H{o2}ng;",
+	"\u95F4>Jian;",
+	"\u95F5>M{i3}n;",
+	"\u95F6>K{a4}ng;",
+	"\u95F7>M{e4}n;",
+	"\u95F8>Zh{a2};",
+	"\u95F9>Na{o4};",
+	"\u95FA>Gui;",
+	"\u95FB>W{e2}n;",
+	"\u95FC>T{a4};",
+	"\u95FD>M{i3}n;",
+	"\u95FE>L{uu2};",
+	"\u95FF>Ka{i3};",
+	"\u9600>F{a2};",
+	"\u9601>G{e2};",
+	"\u9602>H{e2};",
+	"\u9603>K{u3}n;",
+	"\u9604>Jiu;",
+	"\u9605>Yu{e4};",
+	"\u9606>L{a3}ng;",
+	"\u9607>Du;",
+	"\u9608>Y{u4};",
+	"\u9609>Yan;",
+	"\u960A>Chang;",
+	"\u960B>X{i4};",
+	"\u960C>W{e2}n;",
+	"\u960D>Hun;",
+	"\u960E>Y{a2}n;",
+	"\u960F>{E4};",
+	"\u9610>Ch{a3}n;",
+	"\u9611>L{a2}n;",
+	"\u9612>Q{u4};",
+	"\u9613>Hu{i4};",
+	"\u9614>Ku{o4};",
+	"\u9615>Qu{e4};",
+	"\u9616>G{e2};",
+	"\u9617>Ti{a2}n;",
+	"\u9618>T{a4};",
+	"\u9619>Qu{e4};",
+	"\u961A>K{a4}n;",
+	"\u961B>Hu{a2}n;",
+	"\u961C>F{u4};",
+	"\u961D>F{u4};",
+	"\u961E>L{e4};",
+	"\u961F>Du{i4};",
+	"\u9620>X{i4}n;",
+	"\u9621>Qian;",
+	"\u9622>W{u4};",
+	"\u9623>Y{i4};",
+	"\u9624>Tu{o2};",
+	"\u9625>Yin;",
+	"\u9626>Y{a2}ng;",
+	"\u9627>Do{u3};",
+	"\u9628>{E4};",
+	"\u9629>Sheng;",
+	"\u962A>B{a3}n;",
+	"\u962B>Pe{i2};",
+	"\u962C>Keng;",
+	"\u962D>Y{u3}n;",
+	"\u962E>Ru{a3}n;",
+	"\u962F>Zh{i3};",
+	"\u9630>P{i2};",
+	"\u9631>J{i3}ng;",
+	"\u9632>F{a2}ng;",
+	"\u9633>Y{a2}ng;",
+	"\u9634>Yin;",
+	"\u9635>Zh{e4}n;",
+	"\u9636>Jie;",
+	"\u9637>Cheng;",
+	"\u9638>{E4};",
+	"\u9639>Qu;",
+	"\u963A>D{i3};",
+	"\u963B>Z{u3};",
+	"\u963C>Zu{o4};",
+	"\u963D>Di{a4}n;",
+	"\u963E>L{i3}ng;",
+	"\u963F>A;",
+	"\u9640>Tu{o2};",
+	"\u9641>Tu{o2};",
+	"\u9642>Po;",
+	"\u9643>B{i3}ng;",
+	"\u9644>F{u4};",
+	"\u9645>J{i4};",
+	"\u9646>L{u4};",
+	"\u9647>L{o3}ng;",
+	"\u9648>Ch{e2}n;",
+	"\u9649>X{i2}ng;",
+	"\u964A>Du{o4};",
+	"\u964B>Lo{u4};",
+	"\u964C>M{o4};",
+	"\u964D>Ji{a4}ng;",
+	"\u964E>Shu;",
+	"\u964F>Du{o4};",
+	"\u9650>Xi{a4}n;",
+	"\u9651>{E2}r;",
+	"\u9652>Gu{i3};",
+	"\u9653>Yu;",
+	"\u9654>Gai;",
+	"\u9655>Sh{a3}n;",
+	"\u9656>X{u4}n;",
+	"\u9657>Qia{o4};",
+	"\u9658>X{i2}ng;",
+	"\u9659>Ch{u2}n;",
+	"\u965A>F{u4};",
+	"\u965B>B{i4};",
+	"\u965C>Xi{a2};",
+	"\u965D>Sh{a3}n;",
+	"\u965E>Sheng;",
+	"\u965F>Zh{i4};",
+	"\u9660>Pu;",
+	"\u9661>Do{u3};",
+	"\u9662>Yu{a4}n;",
+	"\u9663>Zh{e4}n;",
+	"\u9664>Ch{u2};",
+	"\u9665>Xi{a4}n;",
+	"\u9667>Ni{e4};",
+	"\u9668>Y{u3}n;",
+	"\u9669>Xi{a3}n;",
+	"\u966A>Pe{i2};",
+	"\u966B>Pe{i2};",
+	"\u966C>Zou;",
+	"\u966D>Yi;",
+	"\u966E>Du{i3};",
+	"\u966F>L{u2}n;",
+	"\u9670>Yin;",
+	"\u9671>Ju;",
+	"\u9672>Chu{i2};",
+	"\u9673>Ch{e2}n;",
+	"\u9674>P{i2};",
+	"\u9675>L{i2}ng;",
+	"\u9676>Ta{o2};",
+	"\u9677>Xi{a4}n;",
+	"\u9678>L{u4};",
+	"\u9679>Sheng;",
+	"\u967A>Xi{a3}n;",
+	"\u967B>Yin;",
+	"\u967C>Zh{u3};",
+	"\u967D>Y{a2}ng;",
+	"\u967E>R{e2}ng;",
+	"\u967F>Sh{a3}n;",
+	"\u9680>Ch{o2}ng;",
+	"\u9681>Y{a4}n;",
+	"\u9682>Yin;",
+	"\u9683>Y{u2};",
+	"\u9684>T{i2};",
+	"\u9685>Y{u2};",
+	"\u9686>L{o2}ng;",
+	"\u9687>Wei;",
+	"\u9688>Wei;",
+	"\u9689>Ni{e4};",
+	"\u968A>Du{i4};",
+	"\u968B>Su{i2};",
+	"\u968C>{a3}n;",
+	"\u968D>Hu{a2}ng;",
+	"\u968E>Jie;",
+	"\u968F>Su{i2};",
+	"\u9690>Y{i3}n;",
+	"\u9691>Gai;",
+	"\u9692>Y{a3}n;",
+	"\u9693>Hui;",
+	"\u9694>G{e2};",
+	"\u9695>Y{u3}n;",
+	"\u9696>W{u4};",
+	"\u9697>We{i3};",
+	"\u9698>A{i4};",
+	"\u9699>X{i4};",
+	"\u969A>T{a2}ng;",
+	"\u969B>J{i4};",
+	"\u969C>Zh{a4}ng;",
+	"\u969D>Da{o3};",
+	"\u969E>A{o2};",
+	"\u969F>X{i4};",
+	"\u96A0>Y{i3}n;",
+	"\u96A2>Ra{o4};",
+	"\u96A3>L{i2}n;",
+	"\u96A4>Tu{i2};",
+	"\u96A5>D{e4}ng;",
+	"\u96A6>P{i3};",
+	"\u96A7>Su{i4};",
+	"\u96A8>Su{i2};",
+	"\u96A9>Y{u4};",
+	"\u96AA>Xi{a3}n;",
+	"\u96AB>Fen;",
+	"\u96AC>N{i3};",
+	"\u96AD>{E2}r;",
+	"\u96AE>Ji;",
+	"\u96AF>Da{o3};",
+	"\u96B0>X{i2};",
+	"\u96B1>Y{i3}n;",
+	"\u96B2>{E2};",
+	"\u96B3>Hui;",
+	"\u96B4>L{o3}ng;",
+	"\u96B5>Xi;",
+	"\u96B6>L{i4};",
+	"\u96B7>L{i4};",
+	"\u96B8>L{i4};",
+	"\u96B9>Zhui;",
+	"\u96BA>H{e4};",
+	"\u96BB>Zhi;",
+	"\u96BC>Zh{u3}n;",
+	"\u96BD>J{u4}n;",
+	"\u96BE>N{a2}n;",
+	"\u96BF>Y{i4};",
+	"\u96C0>Qu{e4};",
+	"\u96C1>Y{a4}n;",
+	"\u96C2>Qi{a2}n;",
+	"\u96C3>Y{a3};",
+	"\u96C4>Xi{o2}ng;",
+	"\u96C5>Y{a3};",
+	"\u96C6>J{i2};",
+	"\u96C7>G{u4};",
+	"\u96C8>Hu{a2}n;",
+	"\u96C9>Zh{i4};",
+	"\u96CA>Go{u4};",
+	"\u96CB>J{u4}n;",
+	"\u96CC>C{i2};",
+	"\u96CD>Yong;",
+	"\u96CE>Ju;",
+	"\u96CF>Ch{u2};",
+	"\u96D0>Hu;",
+	"\u96D1>Z{a2};",
+	"\u96D2>Lu{o4};",
+	"\u96D3>Y{u2};",
+	"\u96D4>Cho{u2};",
+	"\u96D5>Diao;",
+	"\u96D6>Sui;",
+	"\u96D7>H{a4}n;",
+	"\u96D8>Hu{o4};",
+	"\u96D9>Shuang;",
+	"\u96DA>Gu{a4}n;",
+	"\u96DB>Ch{u2};",
+	"\u96DC>Z{a2};",
+	"\u96DD>Yong;",
+	"\u96DE>Ji;",
+	"\u96DF>Xi;",
+	"\u96E0>Cho{u2};",
+	"\u96E1>Li{u4};",
+	"\u96E2>L{i2};",
+	"\u96E3>N{a2}n;",
+	"\u96E4>Xu{e2};",
+	"\u96E5>Z{a2};",
+	"\u96E6>J{i2};",
+	"\u96E7>J{i2};",
+	"\u96E8>Y{u3};",
+	"\u96E9>Y{u2};",
+	"\u96EA>Xu{e3};",
+	"\u96EB>N{a3};",
+	"\u96EC>Fo{u3};",
+	"\u96ED>S{e4};",
+	"\u96EE>M{u4};",
+	"\u96EF>W{e2}n;",
+	"\u96F0>Fen;",
+	"\u96F1>P{a2}ng;",
+	"\u96F2>Y{u2}n;",
+	"\u96F3>L{i4};",
+	"\u96F4>L{i4};",
+	"\u96F5>{a3}ng;",
+	"\u96F6>L{i2}ng;",
+	"\u96F7>Le{i2};",
+	"\u96F8>{A2}n;",
+	"\u96F9>Ba{o2};",
+	"\u96FA>M{e2}ng;",
+	"\u96FB>Di{a4}n;",
+	"\u96FC>D{a4}ng;",
+	"\u96FD>X{i2}ng;",
+	"\u96FE>W{u4};",
+	"\u96FF>Zha{o4};",
+	"\u9700>Xu;",
+	"\u9701>J{i4};",
+	"\u9702>M{u4};",
+	"\u9703>Ch{e2}n;",
+	"\u9704>Xiao;",
+	"\u9705>Zh{a2};",
+	"\u9706>T{i2}ng;",
+	"\u9707>Zh{e4}n;",
+	"\u9708>Pe{i4};",
+	"\u9709>Me{i2};",
+	"\u970A>L{i2}ng;",
+	"\u970B>Qi;",
+	"\u970C>Chou;",
+	"\u970D>Hu{o4};",
+	"\u970E>Sh{a4};",
+	"\u970F>Fei;",
+	"\u9710>Weng;",
+	"\u9711>Zhan;",
+	"\u9712>Yin;",
+	"\u9713>N{i2};",
+	"\u9714>Cho{u4};",
+	"\u9715>T{u2}n;",
+	"\u9716>L{i2}n;",
+	"\u9718>D{o4}ng;",
+	"\u9719>Ying;",
+	"\u971A>W{u4};",
+	"\u971B>L{i2}ng;",
+	"\u971C>Shuang;",
+	"\u971D>L{i2}ng;",
+	"\u971E>Xi{a2};",
+	"\u971F>H{o2}ng;",
+	"\u9720>Yin;",
+	"\u9721>M{o4};",
+	"\u9722>Ma{i4};",
+	"\u9723>Y{u3}n;",
+	"\u9724>Li{u4};",
+	"\u9725>M{e4}ng;",
+	"\u9726>Bin;",
+	"\u9727>W{u4};",
+	"\u9728>We{i4};",
+	"\u9729>Hu{o4};",
+	"\u972A>Y{i2}n;",
+	"\u972B>X{i2};",
+	"\u972C>Y{i4};",
+	"\u972D>A{i3};",
+	"\u972E>D{a4}n;",
+	"\u972F>D{e4}ng;",
+	"\u9730>Xi{a4}n;",
+	"\u9731>Y{u4};",
+	"\u9732>L{u4};",
+	"\u9733>L{o2}ng;",
+	"\u9734>Da{i4};",
+	"\u9735>J{i2};",
+	"\u9736>P{a2}ng;",
+	"\u9737>Y{a2}ng;",
+	"\u9738>B{a4};",
+	"\u9739>Pi;",
+	"\u973A>We{i2};",
+	"\u973C>X{i3};",
+	"\u973D>J{i4};",
+	"\u973E>Ma{i2};",
+	"\u973F>M{e4}ng;",
+	"\u9740>M{e2}ng;",
+	"\u9741>Le{i2};",
+	"\u9742>L{i4};",
+	"\u9743>Hu{o4};",
+	"\u9744>A{i3};",
+	"\u9745>Fe{i4};",
+	"\u9746>Da{i4};",
+	"\u9747>L{o2}ng;",
+	"\u9748>L{i2}ng;",
+	"\u9749>A{i4};",
+	"\u974A>Feng;",
+	"\u974B>L{i4};",
+	"\u974C>Ba{o3};",
+	"\u974E>H{e4};",
+	"\u974F>H{e4};",
+	"\u9750>B{i4}ng;",
+	"\u9751>Qing;",
+	"\u9752>Qing;",
+	"\u9753>J{i4}ng;",
+	"\u9754>Tian;",
+	"\u9755>Zhen;",
+	"\u9756>J{i4}ng;",
+	"\u9757>Ch{e4}ng;",
+	"\u9758>Q{i4}ng;",
+	"\u9759>J{i4}ng;",
+	"\u975A>J{i4}ng;",
+	"\u975B>Di{a4}n;",
+	"\u975C>J{i4}ng;",
+	"\u975D>Tian;",
+	"\u975E>Fei;",
+	"\u975F>Fei;",
+	"\u9760>Ka{o4};",
+	"\u9761>M{i3};",
+	"\u9762>Mi{a4}n;",
+	"\u9763>Mi{a4}n;",
+	"\u9764>Pa{o4};",
+	"\u9765>Y{e4};",
+	"\u9766>Ti{a3}n;",
+	"\u9767>Hu{i4};",
+	"\u9768>Y{e4};",
+	"\u9769>G{e2};",
+	"\u976A>Ding;",
+	"\u976B>Cha;",
+	"\u976C>Jian;",
+	"\u976D>R{e4}n;",
+	"\u976E>D{i2};",
+	"\u976F>D{u4};",
+	"\u9770>W{u4};",
+	"\u9771>R{e4}n;",
+	"\u9772>Q{i2}n;",
+	"\u9773>J{i4}n;",
+	"\u9774>Xue;",
+	"\u9775>Ni{u3};",
+	"\u9776>B{a3};",
+	"\u9777>Y{i3}n;",
+	"\u9778>S{a3};",
+	"\u9779>N{a4};",
+	"\u977A>M{o4};",
+	"\u977B>Z{u3};",
+	"\u977C>D{a2};",
+	"\u977D>B{a4}n;",
+	"\u977E>Y{i4};",
+	"\u977F>Ya{o4};",
+	"\u9780>Ta{o2};",
+	"\u9781>Tu{o2};",
+	"\u9782>Ji{a2};",
+	"\u9783>H{o2}ng;",
+	"\u9784>Pa{o2};",
+	"\u9785>Y{a3}ng;",
+	"\u9787>Yin;",
+	"\u9788>Ji{a2};",
+	"\u9789>Ta{o2};",
+	"\u978A>J{i2};",
+	"\u978B>Xi{e2};",
+	"\u978C>An;",
+	"\u978D>An;",
+	"\u978E>H{e2}n;",
+	"\u978F>G{o3}ng;",
+	"\u9791>D{a2};",
+	"\u9792>Qiao;",
+	"\u9793>Ting;",
+	"\u9794>W{a3}n;",
+	"\u9795>Y{i4}ng;",
+	"\u9796>Sui;",
+	"\u9797>Tia{o2};",
+	"\u9798>Qia{o4};",
+	"\u9799>Xu{a4}n;",
+	"\u979A>K{o4}ng;",
+	"\u979B>B{e3}ng;",
+	"\u979C>T{a4};",
+	"\u979D>Zh{a3}ng;",
+	"\u979E>B{i3}ng;",
+	"\u979F>Ku{o4};",
+	"\u97A0>J{u2};",
+	"\u97A1>L{a1};",
+	"\u97A2>Xi{e4};",
+	"\u97A3>Ro{u2};",
+	"\u97A4>Bang;",
+	"\u97A5>Y{i4};",
+	"\u97A6>Qiu;",
+	"\u97A7>Qiu;",
+	"\u97A8>H{e2};",
+	"\u97A9>Xia{o4};",
+	"\u97AA>M{u4};",
+	"\u97AB>J{u2};",
+	"\u97AC>Jian;",
+	"\u97AD>Bian;",
+	"\u97AE>Di;",
+	"\u97AF>Jian;",
+	"\u97B1>Tao;",
+	"\u97B2>Gou;",
+	"\u97B3>T{a4};",
+	"\u97B4>Be{i4};",
+	"\u97B5>Xi{e2};",
+	"\u97B6>P{a2}n;",
+	"\u97B7>G{e2};",
+	"\u97B8>B{i4};",
+	"\u97B9>Ku{o4};",
+	"\u97BA>Tang;",
+	"\u97BB>Lo{u2};",
+	"\u97BC>Gu{i4};",
+	"\u97BD>Qia{o2};",
+	"\u97BE>Xue;",
+	"\u97BF>Ji;",
+	"\u97C0>Jian;",
+	"\u97C1>Jiang;",
+	"\u97C2>Ch{a4}n;",
+	"\u97C3>D{a2};",
+	"\u97C4>Hu{o4};",
+	"\u97C5>Xi{a3}n;",
+	"\u97C6>Qian;",
+	"\u97C7>D{u2};",
+	"\u97C8>W{a4};",
+	"\u97C9>Jian;",
+	"\u97CA>L{a2}n;",
+	"\u97CB>We{i2};",
+	"\u97CC>R{e4}n;",
+	"\u97CD>F{u2};",
+	"\u97CE>Me{i4};",
+	"\u97CF>Ju{a4}n;",
+	"\u97D0>G{e2};",
+	"\u97D1>We{i3};",
+	"\u97D2>Qia{o4};",
+	"\u97D3>H{a2}n;",
+	"\u97D4>Ch{a4}ng;",
+	"\u97D6>Ro{u2};",
+	"\u97D7>X{u4}n;",
+	"\u97D8>Sh{e4};",
+	"\u97D9>We{i3};",
+	"\u97DA>G{e2};",
+	"\u97DB>Be{i4};",
+	"\u97DC>Tao;",
+	"\u97DD>Gou;",
+	"\u97DE>Y{u4}n;",
+	"\u97E0>B{i4};",
+	"\u97E1>We{i3};",
+	"\u97E2>Hu{i4};",
+	"\u97E3>D{u2};",
+	"\u97E4>W{a4};",
+	"\u97E5>D{u2};",
+	"\u97E6>We{i2};",
+	"\u97E7>R{e4}n;",
+	"\u97E8>F{u2};",
+	"\u97E9>H{a2}n;",
+	"\u97EA>We{i3};",
+	"\u97EB>Y{u4}n;",
+	"\u97EC>Tao;",
+	"\u97ED>Ji{u3};",
+	"\u97EE>Ji{u3};",
+	"\u97EF>Xian;",
+	"\u97F0>Xi{e4};",
+	"\u97F1>Xian;",
+	"\u97F2>Ji;",
+	"\u97F3>Yin;",
+	"\u97F4>Z{a2};",
+	"\u97F5>Y{u4}n;",
+	"\u97F6>Sha{o2};",
+	"\u97F7>L{e4};",
+	"\u97F8>P{e2}ng;",
+	"\u97F9>H{e2}ng;",
+	"\u97FA>Ying;",
+	"\u97FB>Y{u4}n;",
+	"\u97FC>P{e2}ng;",
+	"\u97FD>Yin;",
+	"\u97FE>Yin;",
+	"\u97FF>Xi{a3}ng;",
+	"\u9800>H{u4};",
+	"\u9801>Y{e4};",
+	"\u9802>D{i3}ng;",
+	"\u9803>Q{i3}ng;",
+	"\u9804>P{a4}n;",
+	"\u9805>Xi{a4}ng;",
+	"\u9806>Sh{u4}n;",
+	"\u9807>Han;",
+	"\u9808>Xu;",
+	"\u9809>Y{i2};",
+	"\u980A>X{u4};",
+	"\u980B>G{u4};",
+	"\u980C>S{o4}ng;",
+	"\u980D>Ku{i3};",
+	"\u980E>Q{i2};",
+	"\u980F>H{a2}ng;",
+	"\u9810>Y{u4};",
+	"\u9811>W{a2}n;",
+	"\u9812>Ban;",
+	"\u9813>D{u4}n;",
+	"\u9814>D{i2};",
+	"\u9815>Dan;",
+	"\u9816>P{a4}n;",
+	"\u9817>P{o3};",
+	"\u9818>L{i3}ng;",
+	"\u9819>C{e4};",
+	"\u981A>J{i3}ng;",
+	"\u981B>Le{i3};",
+	"\u981C>H{e2};",
+	"\u981D>Qiao;",
+	"\u981E>{E4};",
+	"\u981F>{E2};",
+	"\u9820>We{i3};",
+	"\u9821>Ji{e2};",
+	"\u9822>Gua;",
+	"\u9823>Sh{e3}n;",
+	"\u9824>Y{i2};",
+	"\u9825>Sh{e3}n;",
+	"\u9826>Ha{i2};",
+	"\u9827>Dui;",
+	"\u9828>Pian;",
+	"\u9829>Ping;",
+	"\u982A>Le{i4};",
+	"\u982B>F{u3};",
+	"\u982C>Ji{a2};",
+	"\u982D>To{u2};",
+	"\u982E>Hu{i4};",
+	"\u982F>Ku{i2};",
+	"\u9830>Ji{a2};",
+	"\u9831>L{e4};",
+	"\u9832>Ti{a1}n;",
+	"\u9833>Cheng;",
+	"\u9834>Y{i3}ng;",
+	"\u9835>Jun;",
+	"\u9836>H{u2};",
+	"\u9837>H{a4}n;",
+	"\u9838>J{i3}ng;",
+	"\u9839>Tu{i2};",
+	"\u983A>Tu{i2};",
+	"\u983B>P{i2}n;",
+	"\u983C>La{i4};",
+	"\u983D>Tu{i2};",
+	"\u983E>Zi;",
+	"\u983F>Zi;",
+	"\u9840>Chu{i2};",
+	"\u9841>D{i4}ng;",
+	"\u9842>La{i4};",
+	"\u9843>Y{a2}n;",
+	"\u9844>H{a4}n;",
+	"\u9845>Jian;",
+	"\u9846>Ke;",
+	"\u9847>Cu{i4};",
+	"\u9848>Ji{o3}ng;",
+	"\u9849>Qin;",
+	"\u984A>Y{i2};",
+	"\u984B>Sai;",
+	"\u984C>T{i2};",
+	"\u984D>{E2};",
+	"\u984E>{E4};",
+	"\u984F>Y{a2}n;",
+	"\u9850>H{u2}n;",
+	"\u9851>K{a3}n;",
+	"\u9852>Y{o2}ng;",
+	"\u9853>Zhuan;",
+	"\u9854>Y{a2}n;",
+	"\u9855>Xi{a3}n;",
+	"\u9856>X{i4}n;",
+	"\u9857>Y{i3};",
+	"\u9858>Yu{a4}n;",
+	"\u9859>S{a3}ng;",
+	"\u985A>Dian;",
+	"\u985B>Dian;",
+	"\u985C>Ji{a3}ng;",
+	"\u985D>Ku;",
+	"\u985E>Le{i4};",
+	"\u985F>Lia{o2};",
+	"\u9860>Pia{o4};",
+	"\u9861>Y{i4};",
+	"\u9862>M{a2}n;",
+	"\u9863>Qi;",
+	"\u9864>Ra{o4};",
+	"\u9865>Ha{o4};",
+	"\u9866>Qia{o2};",
+	"\u9867>G{u4};",
+	"\u9868>X{u4}n;",
+	"\u9869>Qian;",
+	"\u986A>Hui;",
+	"\u986B>Zh{a4}n;",
+	"\u986C>R{u2};",
+	"\u986D>Hong;",
+	"\u986E>Bin;",
+	"\u986F>Xi{a3}n;",
+	"\u9870>P{i2}n;",
+	"\u9871>L{u2};",
+	"\u9872>L{a3}n;",
+	"\u9873>Ni{e4};",
+	"\u9874>Qu{a2}n;",
+	"\u9875>Y{e4};",
+	"\u9876>D{i3}ng;",
+	"\u9877>Q{i3}ng;",
+	"\u9878>Han;",
+	"\u9879>Xi{a4}ng;",
+	"\u987A>Sh{u4}n;",
+	"\u987B>Xu;",
+	"\u987C>X{u4};",
+	"\u987D>W{a2}n;",
+	"\u987E>G{u4};",
+	"\u987F>D{u4}n;",
+	"\u9880>Q{i2};",
+	"\u9881>Ban;",
+	"\u9882>S{o4}ng;",
+	"\u9883>H{a2}ng;",
+	"\u9884>Y{u4};",
+	"\u9885>L{u2};",
+	"\u9886>L{i3}ng;",
+	"\u9887>P{o3};",
+	"\u9888>J{i3}ng;",
+	"\u9889>Ji{e2};",
+	"\u988A>Ji{a2};",
+	"\u988B>Ti{a1}n;",
+	"\u988C>H{a4}n;",
+	"\u988D>Y{i3}ng;",
+	"\u988E>Ji{o3}ng;",
+	"\u988F>Ha{i2};",
+	"\u9890>Y{i2};",
+	"\u9891>P{i2}n;",
+	"\u9892>Hu{i4};",
+	"\u9893>Tu{i2};",
+	"\u9894>H{a4}n;",
+	"\u9895>Y{i3}ng;",
+	"\u9896>Y{i3}ng;",
+	"\u9897>Ke;",
+	"\u9898>T{i2};",
+	"\u9899>Y{o2}ng;",
+	"\u989A>{E4};",
+	"\u989B>Zhuan;",
+	"\u989C>Y{a2}n;",
+	"\u989D>{E2};",
+	"\u989E>Ni{e4};",
+	"\u989F>M{a2}n;",
+	"\u98A0>Dian;",
+	"\u98A1>S{a3}ng;",
+	"\u98A2>Ha{o4};",
+	"\u98A3>Le{i4};",
+	"\u98A4>Zh{a4}n;",
+	"\u98A5>R{u2};",
+	"\u98A6>P{i2}n;",
+	"\u98A7>Qu{a2}n;",
+	"\u98A8>Feng;",
+	"\u98A9>Biao;",
+	"\u98AB>F{u2};",
+	"\u98AC>Xia;",
+	"\u98AD>Zh{a3}n;",
+	"\u98AE>Biao;",
+	"\u98AF>S{a4};",
+	"\u98B0>B{a2};",
+	"\u98B1>Ta{i2};",
+	"\u98B2>Li{e4};",
+	"\u98B3>Gua;",
+	"\u98B4>Xu{a4}n;",
+	"\u98B5>Sha{o4};",
+	"\u98B6>J{u4};",
+	"\u98B7>Bi;",
+	"\u98B8>Si;",
+	"\u98B9>We{i3};",
+	"\u98BA>Y{a2}ng;",
+	"\u98BB>Ya{o2};",
+	"\u98BC>Sou;",
+	"\u98BD>Ka{i3};",
+	"\u98BE>Sao;",
+	"\u98BF>F{a2}n;",
+	"\u98C0>Li{u2};",
+	"\u98C1>X{i2};",
+	"\u98C2>Lia{o2};",
+	"\u98C3>Piao;",
+	"\u98C4>Piao;",
+	"\u98C5>Li{u2};",
+	"\u98C6>Biao;",
+	"\u98C7>Biao;",
+	"\u98C8>Bia{o3};",
+	"\u98C9>Lia{o2};",
+	"\u98CB>S{e4};",
+	"\u98CC>Feng;",
+	"\u98CD>Biao;",
+	"\u98CE>Feng;",
+	"\u98CF>Y{a2}ng;",
+	"\u98D0>Zh{a3}n;",
+	"\u98D1>Biao;",
+	"\u98D2>S{a4};",
+	"\u98D3>J{u4};",
+	"\u98D4>Si;",
+	"\u98D5>Sou;",
+	"\u98D6>Ya{o2};",
+	"\u98D7>Li{u2};",
+	"\u98D8>Piao;",
+	"\u98D9>Biao;",
+	"\u98DA>Biao;",
+	"\u98DB>Fei;",
+	"\u98DC>Fan;",
+	"\u98DD>Fei;",
+	"\u98DE>Fei;",
+	"\u98DF>Sh{i2};",
+	"\u98E0>Sh{i2};",
+	"\u98E1>Can;",
+	"\u98E2>Ji;",
+	"\u98E3>D{i4}ng;",
+	"\u98E4>S{i4};",
+	"\u98E5>Tuo;",
+	"\u98E6>Zhan;",
+	"\u98E7>Sun;",
+	"\u98E8>Xi{a3}ng;",
+	"\u98E9>T{u2}n;",
+	"\u98EA>R{e4}n;",
+	"\u98EB>Y{u4};",
+	"\u98EC>Ju{a4}n;",
+	"\u98ED>Ch{i4};",
+	"\u98EE>Y{i3}n;",
+	"\u98EF>F{a4}n;",
+	"\u98F0>F{a4}n;",
+	"\u98F1>Sun;",
+	"\u98F2>Y{i3}n;",
+	"\u98F3>Zh{u4};",
+	"\u98F4>Y{i2};",
+	"\u98F5>Zha{i3};",
+	"\u98F6>B{i4};",
+	"\u98F7>Ji{e3};",
+	"\u98F8>Tao;",
+	"\u98F9>Li{u3};",
+	"\u98FA>C{i2};",
+	"\u98FB>Ti{e4};",
+	"\u98FC>S{i4};",
+	"\u98FD>Ba{o3};",
+	"\u98FE>Sh{i4};",
+	"\u98FF>Du{o4};",
+	"\u9900>Ha{i4};",
+	"\u9901>R{e4}n;",
+	"\u9902>Ti{a3}n;",
+	"\u9903>Jia{o3};",
+	"\u9904>Ji{a2};",
+	"\u9905>B{i3}ng;",
+	"\u9906>Ya{o2};",
+	"\u9907>T{o2}ng;",
+	"\u9908>C{i2};",
+	"\u9909>Xi{a3}ng;",
+	"\u990A>Y{a3}ng;",
+	"\u990B>Y{a3}ng;",
+	"\u990C>{e3}r;",
+	"\u990D>Y{a4}n;",
+	"\u990E>L{e1};",
+	"\u990F>Yi;",
+	"\u9910>Can;",
+	"\u9911>B{o2};",
+	"\u9912>Ne{i3};",
+	"\u9913>{E4};",
+	"\u9914>Bu;",
+	"\u9915>J{u4}n;",
+	"\u9916>Do{u4};",
+	"\u9917>S{u4};",
+	"\u9918>Y{u2};",
+	"\u9919>Sh{i4};",
+	"\u991A>Ya{o2};",
+	"\u991B>H{u2}n;",
+	"\u991C>Gu{o3};",
+	"\u991D>Sh{i4};",
+	"\u991E>Ji{a4}n;",
+	"\u991F>Zhu{i4};",
+	"\u9920>B{i3}ng;",
+	"\u9921>Xi{a4}n;",
+	"\u9922>B{u4};",
+	"\u9923>Y{e4};",
+	"\u9924>T{a2}n;",
+	"\u9925>Fe{i3};",
+	"\u9926>Zhang;",
+	"\u9927>We{i4};",
+	"\u9928>Gu{a3}n;",
+	"\u9929>{E4};",
+	"\u992A>Nu{a3}n;",
+	"\u992B>H{u2}n;",
+	"\u992C>H{u2};",
+	"\u992D>Hu{a2}ng;",
+	"\u992E>Ti{e4};",
+	"\u992F>Hu{i4};",
+	"\u9930>Jian;",
+	"\u9931>Ho{u2};",
+	"\u9932>H{e2};",
+	"\u9933>X{i2}ng;",
+	"\u9934>Fen;",
+	"\u9935>We{i4};",
+	"\u9936>G{u3};",
+	"\u9937>Cha;",
+	"\u9938>S{o4}ng;",
+	"\u9939>T{a2}ng;",
+	"\u993A>B{o2};",
+	"\u993B>Gao;",
+	"\u993C>X{i4};",
+	"\u993D>Ku{i4};",
+	"\u993E>Li{u4};",
+	"\u993F>Sou;",
+	"\u9940>Ta{o2};",
+	"\u9941>Y{e4};",
+	"\u9942>Y{u2}n;",
+	"\u9943>M{o2};",
+	"\u9944>T{a2}ng;",
+	"\u9945>M{a2}n;",
+	"\u9946>B{i4};",
+	"\u9947>Y{u4};",
+	"\u9948>Xiu;",
+	"\u9949>J{i3}n;",
+	"\u994A>S{a3}n;",
+	"\u994B>Ku{i4};",
+	"\u994C>Zhu{a4}n;",
+	"\u994D>Sh{a4}n;",
+	"\u994E>Ch{i4};",
+	"\u994F>D{a4}n;",
+	"\u9950>Y{i4};",
+	"\u9951>Ji;",
+	"\u9952>Ra{o2};",
+	"\u9953>Cheng;",
+	"\u9954>Yong;",
+	"\u9955>Tao;",
+	"\u9956>Hu{i4};",
+	"\u9957>Xi{a3}ng;",
+	"\u9958>Zhan;",
+	"\u9959>Fen;",
+	"\u995A>Ha{i4};",
+	"\u995B>M{e2}ng;",
+	"\u995C>Y{a4}n;",
+	"\u995D>M{o2};",
+	"\u995E>Ch{a2}n;",
+	"\u995F>Xi{a3}ng;",
+	"\u9960>Lu{o2};",
+	"\u9961>Zu{a4}n;",
+	"\u9962>N{a3}ng;",
+	"\u9963>Sh{i2};",
+	"\u9964>D{i4}ng;",
+	"\u9965>Ji;",
+	"\u9966>Tuo;",
+	"\u9967>X{i2}ng;",
+	"\u9968>T{u2}n;",
+	"\u9969>X{i4};",
+	"\u996A>R{e4}n;",
+	"\u996B>Y{u4};",
+	"\u996C>Ch{i4};",
+	"\u996D>F{a4}n;",
+	"\u996E>Y{i3}n;",
+	"\u996F>Ji{a4}n;",
+	"\u9970>Sh{i4};",
+	"\u9971>Ba{o3};",
+	"\u9972>S{i4};",
+	"\u9973>Du{o4};",
+	"\u9974>Y{i2};",
+	"\u9975>{e3}r;",
+	"\u9976>Ra{o2};",
+	"\u9977>Xi{a3}ng;",
+	"\u9978>Ji{a2};",
+	"\u9979>L{e1};",
+	"\u997A>Jia{o3};",
+	"\u997B>Yi;",
+	"\u997C>B{i3}ng;",
+	"\u997D>B{o2};",
+	"\u997E>Do{u4};",
+	"\u997F>{E4};",
+	"\u9980>Y{u2};",
+	"\u9981>Ne{i3};",
+	"\u9982>J{u4}n;",
+	"\u9983>Gu{o3};",
+	"\u9984>H{u2}n;",
+	"\u9985>Xi{a4}n;",
+	"\u9986>Gu{a3}n;",
+	"\u9987>Cha;",
+	"\u9988>Ku{i4};",
+	"\u9989>G{u3};",
+	"\u998A>Sou;",
+	"\u998B>Ch{a2}n;",
+	"\u998C>Y{e4};",
+	"\u998D>M{o2};",
+	"\u998E>B{o2};",
+	"\u998F>Li{u4};",
+	"\u9990>Xiu;",
+	"\u9991>J{i3}n;",
+	"\u9992>M{a2}n;",
+	"\u9993>S{a3}n;",
+	"\u9994>Zhu{a4}n;",
+	"\u9995>N{a3}ng;",
+	"\u9996>Sho{u3};",
+	"\u9997>Ku{i2};",
+	"\u9998>Gu{o2};",
+	"\u9999>Xiang;",
+	"\u999A>F{e2}n;",
+	"\u999B>B{a2};",
+	"\u999C>N{i3};",
+	"\u999D>B{i4};",
+	"\u999E>B{o2};",
+	"\u999F>T{u2};",
+	"\u99A0>Han;",
+	"\u99A1>Fei;",
+	"\u99A2>Jian;",
+	"\u99A3>An;",
+	"\u99A4>A{i3};",
+	"\u99A5>F{u4};",
+	"\u99A6>Xian;",
+	"\u99A7>Wen;",
+	"\u99A8>Xin;",
+	"\u99A9>F{e2}n;",
+	"\u99AA>Bin;",
+	"\u99AB>Xing;",
+	"\u99AC>M{a3};",
+	"\u99AD>Y{u4};",
+	"\u99AE>F{e2}ng;",
+	"\u99AF>H{a4}n;",
+	"\u99B0>D{i4};",
+	"\u99B1>Tu{o2};",
+	"\u99B2>Tuo;",
+	"\u99B3>Ch{i2};",
+	"\u99B4>X{u2}n;",
+	"\u99B5>Zh{u4};",
+	"\u99B6>Zhi;",
+	"\u99B7>Pe{i4};",
+	"\u99B8>X{i4}n;",
+	"\u99B9>R{i4};",
+	"\u99BA>S{a4};",
+	"\u99BB>Y{i3}n;",
+	"\u99BC>W{e2}n;",
+	"\u99BD>Zh{i2};",
+	"\u99BE>D{a4}n;",
+	"\u99BF>L{uu2};",
+	"\u99C0>Yo{u2};",
+	"\u99C1>B{o2};",
+	"\u99C2>Ba{o3};",
+	"\u99C3>Kua{i4};",
+	"\u99C4>Tu{o2};",
+	"\u99C5>Y{i4};",
+	"\u99C6>Qu;",
+	"\u99C8>Qu;",
+	"\u99C9>Jiong;",
+	"\u99CA>B{o3};",
+	"\u99CB>Zhao;",
+	"\u99CC>Yuan;",
+	"\u99CD>Peng;",
+	"\u99CE>Zho{u4};",
+	"\u99CF>J{u4};",
+	"\u99D0>Zh{u4};",
+	"\u99D1>N{u2};",
+	"\u99D2>Ju;",
+	"\u99D3>P{i2};",
+	"\u99D4>Z{a3}ng;",
+	"\u99D5>Ji{a4};",
+	"\u99D6>L{i2}ng;",
+	"\u99D7>Zhen;",
+	"\u99D8>Ta{i2};",
+	"\u99D9>F{u4};",
+	"\u99DA>Y{a3}ng;",
+	"\u99DB>Sh{i3};",
+	"\u99DC>B{i4};",
+	"\u99DD>Tu{o2};",
+	"\u99DE>Tu{o2};",
+	"\u99DF>S{i4};",
+	"\u99E0>Li{u2};",
+	"\u99E1>M{a4};",
+	"\u99E2>Pi{a2}n;",
+	"\u99E3>Ta{o2};",
+	"\u99E4>Zh{i4};",
+	"\u99E5>R{o2}ng;",
+	"\u99E6>T{e2}ng;",
+	"\u99E7>D{o4}ng;",
+	"\u99E8>X{u2}n;",
+	"\u99E9>Qu{a2}n;",
+	"\u99EA>Shen;",
+	"\u99EB>Jiong;",
+	"\u99EC>{e3}r;",
+	"\u99ED>Ha{i4};",
+	"\u99EE>B{o2};",
+	"\u99EF>Zhu;",
+	"\u99F0>Yin;",
+	"\u99F1>Lu{o4};",
+	"\u99F3>D{a4}n;",
+	"\u99F4>Xi{e4};",
+	"\u99F5>Li{u2};",
+	"\u99F6>J{u2};",
+	"\u99F7>S{o3}ng;",
+	"\u99F8>Qin;",
+	"\u99F9>M{a2}ng;",
+	"\u99FA>Li{a2}ng;",
+	"\u99FB>H{a4}n;",
+	"\u99FC>T{u2};",
+	"\u99FD>Xu{a4}n;",
+	"\u99FE>Tu{i4};",
+	"\u99FF>J{u4}n;",
+	"\u9A00>{E2};",
+	"\u9A01>Ch{e3}ng;",
+	"\u9A02>Xin;",
+	"\u9A03>A{i2};",
+	"\u9A04>L{u4};",
+	"\u9A05>Zhui;",
+	"\u9A06>Zhou;",
+	"\u9A07>Sh{e3};",
+	"\u9A08>Pi{a2}n;",
+	"\u9A09>Kun;",
+	"\u9A0A>Ta{o2};",
+	"\u9A0B>La{i2};",
+	"\u9A0C>Zong;",
+	"\u9A0D>K{e4};",
+	"\u9A0E>Q{i2};",
+	"\u9A0F>Q{i2};",
+	"\u9A10>Y{a4}n;",
+	"\u9A11>Fei;",
+	"\u9A12>Sao;",
+	"\u9A13>Y{a3}n;",
+	"\u9A14>Ji{e2};",
+	"\u9A15>Ya{o3};",
+	"\u9A16>W{u4};",
+	"\u9A17>Pi{a4}n;",
+	"\u9A18>Cong;",
+	"\u9A19>Pi{a4}n;",
+	"\u9A1A>Qi{a2}n;",
+	"\u9A1B>Fei;",
+	"\u9A1C>Hu{a2}ng;",
+	"\u9A1D>Jian;",
+	"\u9A1E>Hu{o4};",
+	"\u9A1F>Y{u4};",
+	"\u9A20>T{i2};",
+	"\u9A21>Qu{a2}n;",
+	"\u9A22>Xi{a2};",
+	"\u9A23>Zong;",
+	"\u9A24>Ku{i2};",
+	"\u9A25>Ro{u2};",
+	"\u9A26>Si;",
+	"\u9A27>Gua;",
+	"\u9A28>Tu{o2};",
+	"\u9A29>Ku{i4};",
+	"\u9A2A>Sou;",
+	"\u9A2B>Qian;",
+	"\u9A2C>Ch{e2}ng;",
+	"\u9A2D>Zh{i4};",
+	"\u9A2E>Li{u2};",
+	"\u9A2F>P{a2}ng;",
+	"\u9A30>T{e2}ng;",
+	"\u9A31>Xi;",
+	"\u9A32>Ca{o3};",
+	"\u9A33>D{u2};",
+	"\u9A34>Y{a4}n;",
+	"\u9A35>Yu{a2}n;",
+	"\u9A36>Zou;",
+	"\u9A37>Sao;",
+	"\u9A38>Sh{a4}n;",
+	"\u9A39>L{i2};",
+	"\u9A3A>Zh{i4};",
+	"\u9A3B>Shu{a3}ng;",
+	"\u9A3C>L{u4};",
+	"\u9A3D>X{i2};",
+	"\u9A3E>Lu{o2};",
+	"\u9A3F>Zhang;",
+	"\u9A40>M{o4};",
+	"\u9A41>A{o2};",
+	"\u9A42>Can;",
+	"\u9A43>Pia{o4};",
+	"\u9A44>Cong;",
+	"\u9A45>Qu;",
+	"\u9A46>B{i4};",
+	"\u9A47>Zh{i4};",
+	"\u9A48>Y{u4};",
+	"\u9A49>Xu;",
+	"\u9A4A>Hu{a2};",
+	"\u9A4B>Bo;",
+	"\u9A4C>S{u4};",
+	"\u9A4D>Xiao;",
+	"\u9A4E>L{i2}n;",
+	"\u9A4F>Ch{a3}n;",
+	"\u9A50>Dun;",
+	"\u9A51>Li{u2};",
+	"\u9A52>Tu{o2};",
+	"\u9A53>Zeng;",
+	"\u9A54>T{a2}n;",
+	"\u9A55>Jiao;",
+	"\u9A56>Ti{e3};",
+	"\u9A57>Y{a4}n;",
+	"\u9A58>Lu{o2};",
+	"\u9A59>Zhan;",
+	"\u9A5A>Jing;",
+	"\u9A5B>Y{i4};",
+	"\u9A5C>Y{e4};",
+	"\u9A5D>Tuo;",
+	"\u9A5E>Bin;",
+	"\u9A5F>Zo{u4};",
+	"\u9A60>Y{a4}n;",
+	"\u9A61>P{e2}ng;",
+	"\u9A62>L{uu2};",
+	"\u9A63>T{e2}ng;",
+	"\u9A64>Xiang;",
+	"\u9A65>J{i4};",
+	"\u9A66>Shuang;",
+	"\u9A67>J{u2};",
+	"\u9A68>Xi;",
+	"\u9A69>Huan;",
+	"\u9A6A>L{i2};",
+	"\u9A6B>Biao;",
+	"\u9A6C>M{a3};",
+	"\u9A6D>Y{u4};",
+	"\u9A6E>Tu{o2};",
+	"\u9A6F>X{u2}n;",
+	"\u9A70>Ch{i2};",
+	"\u9A71>Qu;",
+	"\u9A72>R{i4};",
+	"\u9A73>B{o2};",
+	"\u9A74>L{uu2};",
+	"\u9A75>Z{a3}ng;",
+	"\u9A76>Sh{i3};",
+	"\u9A77>S{i4};",
+	"\u9A78>F{u4};",
+	"\u9A79>Ju;",
+	"\u9A7A>Zou;",
+	"\u9A7B>Zh{u4};",
+	"\u9A7C>Tu{o2};",
+	"\u9A7D>N{u2};",
+	"\u9A7E>Ji{a4};",
+	"\u9A7F>Y{i4};",
+	"\u9A80>Ta{i2};",
+	"\u9A81>Xiao;",
+	"\u9A82>M{a4};",
+	"\u9A83>Yin;",
+	"\u9A84>Jiao;",
+	"\u9A85>Hu{a2};",
+	"\u9A86>Lu{o4};",
+	"\u9A87>Ha{i4};",
+	"\u9A88>Pi{a2}n;",
+	"\u9A89>Biao;",
+	"\u9A8A>L{i2};",
+	"\u9A8B>Ch{e3}ng;",
+	"\u9A8C>Y{a4}n;",
+	"\u9A8D>Xin;",
+	"\u9A8E>Qin;",
+	"\u9A8F>J{u4}n;",
+	"\u9A90>Q{i2};",
+	"\u9A91>Q{i2};",
+	"\u9A92>K{e4};",
+	"\u9A93>Zhui;",
+	"\u9A94>Zong;",
+	"\u9A95>S{u4};",
+	"\u9A96>Can;",
+	"\u9A97>Pi{a4}n;",
+	"\u9A98>Zh{i4};",
+	"\u9A99>Ku{i2};",
+	"\u9A9A>Sao;",
+	"\u9A9B>W{u4};",
+	"\u9A9C>A{o2};",
+	"\u9A9D>Li{u2};",
+	"\u9A9E>Qian;",
+	"\u9A9F>Sh{a4}n;",
+	"\u9AA0>Pia{o4};",
+	"\u9AA1>Lu{o2};",
+	"\u9AA2>Cong;",
+	"\u9AA3>Ch{a3}n;",
+	"\u9AA4>Zo{u4};",
+	"\u9AA5>J{i4};",
+	"\u9AA6>Shuang;",
+	"\u9AA7>Xiang;",
+	"\u9AA8>G{u3};",
+	"\u9AA9>We{i3};",
+	"\u9AAA>We{i3};",
+	"\u9AAB>We{i3};",
+	"\u9AAC>Y{u2};",
+	"\u9AAD>G{a4}n;",
+	"\u9AAE>Y{i4};",
+	"\u9AAF>Ang;",
+	"\u9AB0>To{u2};",
+	"\u9AB1>Xi{e4};",
+	"\u9AB2>Bao;",
+	"\u9AB3>B{i4};",
+	"\u9AB4>Chi;",
+	"\u9AB5>T{i3};",
+	"\u9AB6>D{i3};",
+	"\u9AB7>Ku;",
+	"\u9AB8>Ha{i2};",
+	"\u9AB9>Qiao;",
+	"\u9ABA>Go{u4};",
+	"\u9ABB>Ku{a4};",
+	"\u9ABC>G{e2};",
+	"\u9ABD>Tu{i3};",
+	"\u9ABE>G{e3}ng;",
+	"\u9ABF>Pi{a2}n;",
+	"\u9AC0>B{i4};",
+	"\u9AC1>Ke;",
+	"\u9AC2>K{a4};",
+	"\u9AC3>Y{u2};",
+	"\u9AC4>Su{i3};",
+	"\u9AC5>Lo{u2};",
+	"\u9AC6>B{o2};",
+	"\u9AC7>Xiao;",
+	"\u9AC8>P{a2}ng;",
+	"\u9AC9>Bo;",
+	"\u9ACA>Ci;",
+	"\u9ACB>Kuan;",
+	"\u9ACC>B{i4}n;",
+	"\u9ACD>M{o2};",
+	"\u9ACE>Lia{o2};",
+	"\u9ACF>Lo{u2};",
+	"\u9AD0>Na{o2};",
+	"\u9AD1>D{u2};",
+	"\u9AD2>Zang;",
+	"\u9AD3>Su{i3};",
+	"\u9AD4>T{i3};",
+	"\u9AD5>B{i4}n;",
+	"\u9AD6>Kuan;",
+	"\u9AD7>L{u2};",
+	"\u9AD8>Gao;",
+	"\u9AD9>Gao;",
+	"\u9ADA>Qia{o4};",
+	"\u9ADB>Kao;",
+	"\u9ADC>Qiao;",
+	"\u9ADD>La{o4};",
+	"\u9ADE>Za{o4};",
+	"\u9ADF>Biao;",
+	"\u9AE0>Kun;",
+	"\u9AE1>Kun;",
+	"\u9AE2>T{i4};",
+	"\u9AE3>F{a3}ng;",
+	"\u9AE4>Xiu;",
+	"\u9AE5>R{a2}n;",
+	"\u9AE6>Ma{o2};",
+	"\u9AE7>D{a4}n;",
+	"\u9AE8>Kun;",
+	"\u9AE9>B{i4}n;",
+	"\u9AEA>F{a4};",
+	"\u9AEB>Tia{o2};",
+	"\u9AEC>Peng;",
+	"\u9AED>Zi;",
+	"\u9AEE>F{a3};",
+	"\u9AEF>R{a2}n;",
+	"\u9AF0>T{i4};",
+	"\u9AF1>Pa{o4};",
+	"\u9AF2>Pi;",
+	"\u9AF3>Ma{o2};",
+	"\u9AF4>F{u2};",
+	"\u9AF5>{E2}r;",
+	"\u9AF6>R{o2}ng;",
+	"\u9AF7>Qu;",
+	"\u9AF8>Gong;",
+	"\u9AF9>Xiu;",
+	"\u9AFA>Gu{a4};",
+	"\u9AFB>J{i4};",
+	"\u9AFC>P{e2}ng;",
+	"\u9AFD>Zhua;",
+	"\u9AFE>Shao;",
+	"\u9AFF>Sha;",
+	"\u9B00>T{i4};",
+	"\u9B01>L{i4};",
+	"\u9B02>B{i4}n;",
+	"\u9B03>Zong;",
+	"\u9B04>T{i4};",
+	"\u9B05>P{e2}ng;",
+	"\u9B06>Song;",
+	"\u9B07>Zheng;",
+	"\u9B08>Qu{a2}n;",
+	"\u9B09>Zong;",
+	"\u9B0A>Sh{u4}n;",
+	"\u9B0B>Jian;",
+	"\u9B0C>Du{o3};",
+	"\u9B0D>H{u2};",
+	"\u9B0E>L{a4};",
+	"\u9B0F>Jiu;",
+	"\u9B10>Q{i2};",
+	"\u9B11>Li{a2}n;",
+	"\u9B12>Zh{e3}n;",
+	"\u9B13>B{i4}n;",
+	"\u9B14>P{e2}ng;",
+	"\u9B15>M{o4};",
+	"\u9B16>San;",
+	"\u9B17>M{a4}n;",
+	"\u9B18>M{a2}n;",
+	"\u9B19>Seng;",
+	"\u9B1A>Xu;",
+	"\u9B1B>Li{e4};",
+	"\u9B1C>Qian;",
+	"\u9B1D>Qian;",
+	"\u9B1E>N{o2}ng;",
+	"\u9B1F>Hu{a2}n;",
+	"\u9B20>Kua{i4};",
+	"\u9B21>N{i2}ng;",
+	"\u9B22>B{i4}n;",
+	"\u9B23>Li{e4};",
+	"\u9B24>R{a2}ng;",
+	"\u9B25>Do{u4};",
+	"\u9B26>Do{u4};",
+	"\u9B27>Na{o4};",
+	"\u9B28>Hong;",
+	"\u9B29>X{i4};",
+	"\u9B2A>Do{u4};",
+	"\u9B2B>H{a3}n;",
+	"\u9B2C>Do{u4};",
+	"\u9B2D>Do{u4};",
+	"\u9B2E>Jiu;",
+	"\u9B2F>Ch{a4}ng;",
+	"\u9B30>Y{u4};",
+	"\u9B31>Y{u4};",
+	"\u9B32>L{i4};",
+	"\u9B33>Ju{a4}n;",
+	"\u9B34>F{u3};",
+	"\u9B35>Qi{a2}n;",
+	"\u9B36>Gui;",
+	"\u9B37>Zong;",
+	"\u9B38>Li{u4};",
+	"\u9B39>Gui;",
+	"\u9B3A>Shang;",
+	"\u9B3B>Y{u4};",
+	"\u9B3C>Gu{i3};",
+	"\u9B3D>Me{i4};",
+	"\u9B3E>J{i4};",
+	"\u9B3F>Q{i2};",
+	"\u9B40>Ji{e4};",
+	"\u9B41>Ku{i2};",
+	"\u9B42>H{u2}n;",
+	"\u9B43>B{a2};",
+	"\u9B44>P{o4};",
+	"\u9B45>Me{i4};",
+	"\u9B46>X{u4};",
+	"\u9B47>Y{a3}n;",
+	"\u9B48>Xiao;",
+	"\u9B49>Li{a3}ng;",
+	"\u9B4A>Y{u4};",
+	"\u9B4B>Tu{i2};",
+	"\u9B4C>Qi;",
+	"\u9B4D>W{a3}ng;",
+	"\u9B4E>Li{a3}ng;",
+	"\u9B4F>We{i4};",
+	"\u9B50>Jian;",
+	"\u9B51>Chi;",
+	"\u9B52>Piao;",
+	"\u9B53>B{i4};",
+	"\u9B54>M{o2};",
+	"\u9B55>J{i3};",
+	"\u9B56>Xu;",
+	"\u9B57>Cho{u3};",
+	"\u9B58>Y{a3}n;",
+	"\u9B59>Zh{a3}n;",
+	"\u9B5A>Y{u2};",
+	"\u9B5B>Dao;",
+	"\u9B5C>R{e2}n;",
+	"\u9B5D>J{i4};",
+	"\u9B5F>Gong;",
+	"\u9B60>Tu{o2};",
+	"\u9B61>Dia{o4};",
+	"\u9B62>J{i3};",
+	"\u9B63>X{u4};",
+	"\u9B64>{E2};",
+	"\u9B65>{E4};",
+	"\u9B66>Sha;",
+	"\u9B67>H{a2}ng;",
+	"\u9B68>T{u2}n;",
+	"\u9B69>M{o4};",
+	"\u9B6A>Ji{e4};",
+	"\u9B6B>Sh{e3}n;",
+	"\u9B6C>F{a3}n;",
+	"\u9B6D>Yu{a2}n;",
+	"\u9B6E>B{i2};",
+	"\u9B6F>L{u3};",
+	"\u9B70>W{e2}n;",
+	"\u9B71>H{u2};",
+	"\u9B72>L{u2};",
+	"\u9B73>Z{a2};",
+	"\u9B74>F{a2}ng;",
+	"\u9B75>F{e2}n;",
+	"\u9B76>N{a4};",
+	"\u9B77>Yo{u2};",
+	"\u9B7A>H{e2};",
+	"\u9B7B>Xi{a2};",
+	"\u9B7C>Qu;",
+	"\u9B7D>Han;",
+	"\u9B7E>P{i2};",
+	"\u9B7F>L{i2}ng;",
+	"\u9B80>Tu{o2};",
+	"\u9B81>Bo;",
+	"\u9B82>Qi{u2};",
+	"\u9B83>P{i2}ng;",
+	"\u9B84>F{u2};",
+	"\u9B85>B{i4};",
+	"\u9B86>J{i4};",
+	"\u9B87>We{i4};",
+	"\u9B88>Ju;",
+	"\u9B89>Diao;",
+	"\u9B8A>B{o2};",
+	"\u9B8B>Yo{u2};",
+	"\u9B8C>G{u3}n;",
+	"\u9B8D>Pi;",
+	"\u9B8E>Ni{a2}n;",
+	"\u9B8F>Xing;",
+	"\u9B90>Ta{i2};",
+	"\u9B91>Ba{o4};",
+	"\u9B92>F{u4};",
+	"\u9B93>Zh{a3};",
+	"\u9B94>J{u4};",
+	"\u9B95>Gu;",
+	"\u9B99>T{a4};",
+	"\u9B9A>Ji{e2};",
+	"\u9B9B>Sh{u4};",
+	"\u9B9C>Ho{u4};",
+	"\u9B9D>Xi{a3}ng;",
+	"\u9B9E>{E2}r;",
+	"\u9B9F>{A4}n;",
+	"\u9BA0>We{i2};",
+	"\u9BA1>Tiao;",
+	"\u9BA2>Zhu;",
+	"\u9BA3>Y{i4}n;",
+	"\u9BA4>Li{e4};",
+	"\u9BA5>Lu{o4};",
+	"\u9BA6>T{o2}ng;",
+	"\u9BA7>Y{i2};",
+	"\u9BA8>Q{i2};",
+	"\u9BA9>B{i4}ng;",
+	"\u9BAA>We{i3};",
+	"\u9BAB>Jia{o3};",
+	"\u9BAC>B{u4};",
+	"\u9BAD>Gui;",
+	"\u9BAE>Xian;",
+	"\u9BAF>G{e2};",
+	"\u9BB0>Hu{i2};",
+	"\u9BB3>Ka{o3};",
+	"\u9BB5>Du{o2};",
+	"\u9BB6>Jun;",
+	"\u9BB7>T{i2};",
+	"\u9BB8>M{a3}n;",
+	"\u9BB9>Xiao;",
+	"\u9BBA>Z{a3};",
+	"\u9BBB>Sha;",
+	"\u9BBC>Qin;",
+	"\u9BBD>Y{u2};",
+	"\u9BBE>Ne{i3};",
+	"\u9BBF>Zh{e2};",
+	"\u9BC0>G{u3}n;",
+	"\u9BC1>G{e3}ng;",
+	"\u9BC2>Su;",
+	"\u9BC3>W{u2};",
+	"\u9BC4>Qi{u2};",
+	"\u9BC5>T{i2}ng;",
+	"\u9BC6>F{u3};",
+	"\u9BC7>W{a3}n;",
+	"\u9BC8>Yo{u2};",
+	"\u9BC9>L{i3};",
+	"\u9BCA>Sha;",
+	"\u9BCB>Sha;",
+	"\u9BCC>Ga{o4};",
+	"\u9BCD>M{e2}ng;",
+	"\u9BD2>Y{o3}ng;",
+	"\u9BD3>N{i2};",
+	"\u9BD4>Zi;",
+	"\u9BD5>Q{i2};",
+	"\u9BD6>Qing;",
+	"\u9BD7>Xi{a3}ng;",
+	"\u9BD8>Ne{i3};",
+	"\u9BD9>Ch{u2}n;",
+	"\u9BDA>J{i4};",
+	"\u9BDB>Diao;",
+	"\u9BDC>Qi{e4};",
+	"\u9BDD>G{u4};",
+	"\u9BDE>Zho{u3};",
+	"\u9BDF>Dong;",
+	"\u9BE0>La{i2};",
+	"\u9BE1>Fei;",
+	"\u9BE2>N{i2};",
+	"\u9BE3>Y{i4};",
+	"\u9BE4>Kun;",
+	"\u9BE5>L{u4};",
+	"\u9BE6>Ji{u4};",
+	"\u9BE7>Chang;",
+	"\u9BE8>Jing;",
+	"\u9BE9>L{u2}n;",
+	"\u9BEA>L{i2}ng;",
+	"\u9BEB>Zou;",
+	"\u9BEC>L{i2};",
+	"\u9BED>M{e3}ng;",
+	"\u9BEE>Zong;",
+	"\u9BEF>Zh{i4};",
+	"\u9BF0>Ni{a2}n;",
+	"\u9BF4>Shi;",
+	"\u9BF5>Shen;",
+	"\u9BF6>H{u3}n;",
+	"\u9BF7>Sh{i4};",
+	"\u9BF8>Ho{u2};",
+	"\u9BF9>Xing;",
+	"\u9BFA>Zhu;",
+	"\u9BFB>L{a4};",
+	"\u9BFC>Zong;",
+	"\u9BFD>J{i4};",
+	"\u9BFE>Bian;",
+	"\u9BFF>Bian;",
+	"\u9C00>Hu{a4}n;",
+	"\u9C01>Qu{a2}n;",
+	"\u9C02>Z{e2};",
+	"\u9C03>Wei;",
+	"\u9C04>Wei;",
+	"\u9C05>Y{u2};",
+	"\u9C06>Qun;",
+	"\u9C07>Ro{u2};",
+	"\u9C08>Di{e2};",
+	"\u9C09>Hu{a2}ng;",
+	"\u9C0A>Li{a4}n;",
+	"\u9C0B>Y{a3}n;",
+	"\u9C0C>Qi{u2};",
+	"\u9C0D>Qiu;",
+	"\u9C0E>Ji{a4}n;",
+	"\u9C0F>B{i4};",
+	"\u9C10>{E4};",
+	"\u9C11>Y{a2}ng;",
+	"\u9C12>F{u4};",
+	"\u9C13>Sai;",
+	"\u9C14>Ji{a3}n;",
+	"\u9C15>Xi{a2};",
+	"\u9C16>Tu{o3};",
+	"\u9C17>H{u2};",
+	"\u9C19>Ru{o4};",
+	"\u9C1B>Wen;",
+	"\u9C1C>Jian;",
+	"\u9C1D>Ha{o4};",
+	"\u9C1E>Wu;",
+	"\u9C1F>F{a2}ng;",
+	"\u9C20>Sao;",
+	"\u9C21>Li{u2};",
+	"\u9C22>M{a3};",
+	"\u9C23>Sh{i2};",
+	"\u9C24>Shi;",
+	"\u9C25>Y{i2}n;",
+	"\u9C26>Z;",
+	"\u9C27>T{e2}ng;",
+	"\u9C28>T{a4};",
+	"\u9C29>Ya{o2};",
+	"\u9C2A>G{e2};",
+	"\u9C2B>R{o2}ng;",
+	"\u9C2C>Qi{a2}n;",
+	"\u9C2D>Q{i2};",
+	"\u9C2E>Wen;",
+	"\u9C2F>Ru{o4};",
+	"\u9C31>Li{a2}n;",
+	"\u9C32>A{o2};",
+	"\u9C33>L{e4};",
+	"\u9C34>Hui;",
+	"\u9C35>M{i3}n;",
+	"\u9C36>J{i4};",
+	"\u9C37>Tia{o2};",
+	"\u9C38>Qu;",
+	"\u9C39>Jian;",
+	"\u9C3A>Sao;",
+	"\u9C3B>M{a2}n;",
+	"\u9C3C>X{i2};",
+	"\u9C3D>Qi{u2};",
+	"\u9C3E>Bia{o4};",
+	"\u9C3F>Ji;",
+	"\u9C40>J{i4};",
+	"\u9C41>Zh{u2};",
+	"\u9C42>Jiang;",
+	"\u9C43>Qiu;",
+	"\u9C44>Zhuan;",
+	"\u9C45>Y{o2}ng;",
+	"\u9C46>Zhang;",
+	"\u9C47>Kang;",
+	"\u9C48>Xu{e3};",
+	"\u9C49>Bie;",
+	"\u9C4A>Ju{e2};",
+	"\u9C4B>Qu;",
+	"\u9C4C>Xi{a4}ng;",
+	"\u9C4D>Bo;",
+	"\u9C4E>Jiao;",
+	"\u9C4F>X{u2}n;",
+	"\u9C50>S{u4};",
+	"\u9C51>Hu{a2}ng;",
+	"\u9C52>Z{u4}n;",
+	"\u9C53>Sh{a4}n;",
+	"\u9C54>Sh{a4}n;",
+	"\u9C55>Fan;",
+	"\u9C56>Ju{e2};",
+	"\u9C57>L{i2}n;",
+	"\u9C58>X{u2}n;",
+	"\u9C59>Mia{o2};",
+	"\u9C5A>X{i3};",
+	"\u9C5D>F{e4}n;",
+	"\u9C5E>Guan;",
+	"\u9C5F>Ho{u4};",
+	"\u9C60>Kua{i4};",
+	"\u9C61>Ze{i2};",
+	"\u9C62>Sao;",
+	"\u9C63>Zhan;",
+	"\u9C64>G{a3}n;",
+	"\u9C65>Gu{i4};",
+	"\u9C66>Sh{e2}ng;",
+	"\u9C67>L{i3};",
+	"\u9C68>Ch{a2}ng;",
+	"\u9C6C>R{u2};",
+	"\u9C6D>J{i4};",
+	"\u9C6E>X{u4};",
+	"\u9C6F>Hu{o4};",
+	"\u9C71>L{i4};",
+	"\u9C72>Li{e4};",
+	"\u9C73>L{i4};",
+	"\u9C74>Mi{e4};",
+	"\u9C75>Zhen;",
+	"\u9C76>Xi{a3}ng;",
+	"\u9C77>{E4};",
+	"\u9C78>L{u2};",
+	"\u9C79>Gu{a4}n;",
+	"\u9C7A>L{i2};",
+	"\u9C7B>Xian;",
+	"\u9C7C>Y{u2};",
+	"\u9C7D>Dao;",
+	"\u9C7E>J{i3};",
+	"\u9C7F>Yo{u2};",
+	"\u9C80>T{u2}n;",
+	"\u9C81>L{u3};",
+	"\u9C82>F{a2}ng;",
+	"\u9C83>Ba;",
+	"\u9C84>H{e2};",
+	"\u9C85>Bo;",
+	"\u9C86>P{i2}ng;",
+	"\u9C87>Ni{a2}n;",
+	"\u9C88>L{u2};",
+	"\u9C89>Yo{u2};",
+	"\u9C8A>Zh{a3};",
+	"\u9C8B>F{u4};",
+	"\u9C8C>B{o2};",
+	"\u9C8D>Ba{o4};",
+	"\u9C8E>Ho{u4};",
+	"\u9C8F>Pi;",
+	"\u9C90>Ta{i2};",
+	"\u9C91>Gui;",
+	"\u9C92>Ji{e2};",
+	"\u9C93>Ka{o3};",
+	"\u9C94>We{i3};",
+	"\u9C95>{E2}r;",
+	"\u9C96>T{o2}ng;",
+	"\u9C97>Z{e2};",
+	"\u9C98>Ho{u4};",
+	"\u9C99>Kua{i4};",
+	"\u9C9A>J{i4};",
+	"\u9C9B>Jia{o3};",
+	"\u9C9C>Xian;",
+	"\u9C9D>Z{a3};",
+	"\u9C9E>Xi{a3}ng;",
+	"\u9C9F>X{u2}n;",
+	"\u9CA0>G{e3}ng;",
+	"\u9CA1>L{i2};",
+	"\u9CA2>Li{a2}n;",
+	"\u9CA3>Jian;",
+	"\u9CA4>L{i3};",
+	"\u9CA5>Sh{i2};",
+	"\u9CA6>Tia{o2};",
+	"\u9CA7>G{u3}n;",
+	"\u9CA8>Sha;",
+	"\u9CA9>W{a3}n;",
+	"\u9CAA>Jun;",
+	"\u9CAB>J{i4};",
+	"\u9CAC>Y{o3}ng;",
+	"\u9CAD>Qing;",
+	"\u9CAE>L{i2}ng;",
+	"\u9CAF>Q{i2};",
+	"\u9CB0>Zou;",
+	"\u9CB1>Fei;",
+	"\u9CB2>Kun;",
+	"\u9CB3>Chang;",
+	"\u9CB4>G{u4};",
+	"\u9CB5>N{i2};",
+	"\u9CB6>Ni{a2}n;",
+	"\u9CB7>Diao;",
+	"\u9CB8>Jing;",
+	"\u9CB9>Shen;",
+	"\u9CBA>Shi;",
+	"\u9CBB>Zi;",
+	"\u9CBC>F{e4}n;",
+	"\u9CBD>Di{e2};",
+	"\u9CBE>B{i4};",
+	"\u9CBF>Ch{a2}ng;",
+	"\u9CC0>Sh{i4};",
+	"\u9CC1>Wen;",
+	"\u9CC2>Wei;",
+	"\u9CC3>Sai;",
+	"\u9CC4>{E4};",
+	"\u9CC5>Qiu;",
+	"\u9CC6>F{u4};",
+	"\u9CC7>Hu{a2}ng;",
+	"\u9CC8>Qu{a2}n;",
+	"\u9CC9>Jiang;",
+	"\u9CCA>Bian;",
+	"\u9CCB>Sao;",
+	"\u9CCC>A{o2};",
+	"\u9CCD>Q{i2};",
+	"\u9CCE>T{a4};",
+	"\u9CCF>Y{i2}n;",
+	"\u9CD0>Ya{o2};",
+	"\u9CD1>F{a2}ng;",
+	"\u9CD2>Jian;",
+	"\u9CD3>L{e4};",
+	"\u9CD4>Bia{o4};",
+	"\u9CD5>Xu{e3};",
+	"\u9CD6>Bie;",
+	"\u9CD7>M{a2}n;",
+	"\u9CD8>M{i3}n;",
+	"\u9CD9>Y{o2}ng;",
+	"\u9CDA>We{i4};",
+	"\u9CDB>X{i2};",
+	"\u9CDC>Ju{e2};",
+	"\u9CDD>Sh{a4}n;",
+	"\u9CDE>L{i2}n;",
+	"\u9CDF>Z{u4}n;",
+	"\u9CE0>Hu{o4};",
+	"\u9CE1>G{a3}n;",
+	"\u9CE2>L{i3};",
+	"\u9CE3>Zhan;",
+	"\u9CE4>Gu{a3}n;",
+	"\u9CE5>Nia{o3};",
+	"\u9CE6>Y{i3};",
+	"\u9CE7>F{u2};",
+	"\u9CE8>L{i4};",
+	"\u9CE9>Jiu;",
+	"\u9CEA>B{u3};",
+	"\u9CEB>Y{a4}n;",
+	"\u9CEC>F{u2};",
+	"\u9CED>Diao;",
+	"\u9CEE>Ji;",
+	"\u9CEF>F{e4}ng;",
+	"\u9CF1>Gan;",
+	"\u9CF2>Shi;",
+	"\u9CF3>F{e4}ng;",
+	"\u9CF4>M{i2}ng;",
+	"\u9CF5>Ba{o3};",
+	"\u9CF6>Yuan;",
+	"\u9CF7>Zhi;",
+	"\u9CF8>H{u4};",
+	"\u9CF9>Q{i2}n;",
+	"\u9CFA>Fu;",
+	"\u9CFB>Fen;",
+	"\u9CFC>W{e2}n;",
+	"\u9CFD>Jian;",
+	"\u9CFE>Shi;",
+	"\u9CFF>Y{u4};",
+	"\u9D00>Fo{u3};",
+	"\u9D01>Yiao;",
+	"\u9D02>Ju{e4};",
+	"\u9D03>Ju{e2};",
+	"\u9D04>Pi;",
+	"\u9D05>Huan;",
+	"\u9D06>Zh{e4}n;",
+	"\u9D07>Ba{o3};",
+	"\u9D08>Y{a4}n;",
+	"\u9D09>Ya;",
+	"\u9D0A>Zh{e4}ng;",
+	"\u9D0B>Fang;",
+	"\u9D0C>F{e4}ng;",
+	"\u9D0D>W{e2}n;",
+	"\u9D0E>Ou;",
+	"\u9D0F>T{e4};",
+	"\u9D10>Jia;",
+	"\u9D11>N{u2};",
+	"\u9D12>L{i2}ng;",
+	"\u9D13>Mi{e4};",
+	"\u9D14>F{u2};",
+	"\u9D15>Tu{o2};",
+	"\u9D16>W{e2}n;",
+	"\u9D17>L{i4};",
+	"\u9D18>Bi{a4}n;",
+	"\u9D19>Zh{i4};",
+	"\u9D1A>Ge;",
+	"\u9D1B>Yuan;",
+	"\u9D1C>Zi;",
+	"\u9D1D>Q{u2};",
+	"\u9D1E>Xiao;",
+	"\u9D1F>Zhi;",
+	"\u9D20>D{a4}n;",
+	"\u9D21>Ju;",
+	"\u9D22>Yo{u4};",
+	"\u9D23>Gu;",
+	"\u9D24>Zhong;",
+	"\u9D25>Y{u4};",
+	"\u9D26>Yang;",
+	"\u9D27>R{o4}ng;",
+	"\u9D28>Ya;",
+	"\u9D29>Ti{e3};",
+	"\u9D2A>Y{u4};",
+	"\u9D2C>Ying;",
+	"\u9D2D>Zhui;",
+	"\u9D2E>Wu;",
+	"\u9D2F>{E2}r;",
+	"\u9D30>Gua;",
+	"\u9D31>A{i4};",
+	"\u9D32>Zhi;",
+	"\u9D33>Y{a4}n;",
+	"\u9D34>H{e2}ng;",
+	"\u9D35>Jiao;",
+	"\u9D36>J{i2};",
+	"\u9D37>Li{e4};",
+	"\u9D38>Zhu;",
+	"\u9D39>R{e2}n;",
+	"\u9D3A>Y{i2};",
+	"\u9D3B>H{o2}ng;",
+	"\u9D3C>Lu{o4};",
+	"\u9D3D>R{u2};",
+	"\u9D3E>Mo{u2};",
+	"\u9D3F>Ge;",
+	"\u9D40>R{e4}n;",
+	"\u9D41>Jiao;",
+	"\u9D42>Xiu;",
+	"\u9D43>Zhou;",
+	"\u9D44>Zhi;",
+	"\u9D45>Lu{o4};",
+	"\u9D49>Lu{a2}n;",
+	"\u9D4A>Ji{a2};",
+	"\u9D4B>J{i4};",
+	"\u9D4C>Y{u2};",
+	"\u9D4D>Huan;",
+	"\u9D4E>Tu{o3};",
+	"\u9D4F>Bu;",
+	"\u9D50>W{u2};",
+	"\u9D51>Juan;",
+	"\u9D52>Y{u4};",
+	"\u9D53>B{o2};",
+	"\u9D54>X{u4}n;",
+	"\u9D55>X{u4}n;",
+	"\u9D56>B{i4};",
+	"\u9D57>Xi;",
+	"\u9D58>J{u4}n;",
+	"\u9D59>J{u2};",
+	"\u9D5A>T{u2};",
+	"\u9D5B>Jing;",
+	"\u9D5C>T{i2};",
+	"\u9D5D>{E2};",
+	"\u9D5E>{E2};",
+	"\u9D5F>Ku{a2}ng;",
+	"\u9D60>H{u2};",
+	"\u9D61>W{u3};",
+	"\u9D62>Shen;",
+	"\u9D63>La{i4};",
+	"\u9D66>L{u4};",
+	"\u9D67>P{i2}ng;",
+	"\u9D68>Shu;",
+	"\u9D69>F{u2};",
+	"\u9D6A>An;",
+	"\u9D6B>Zha{o4};",
+	"\u9D6C>P{e2}ng;",
+	"\u9D6D>Q{i2}n;",
+	"\u9D6E>Qian;",
+	"\u9D6F>Bei;",
+	"\u9D70>Diao;",
+	"\u9D71>L{u4};",
+	"\u9D72>Qu{e4};",
+	"\u9D73>Jian;",
+	"\u9D74>J{u2};",
+	"\u9D75>T{u4};",
+	"\u9D76>Ya;",
+	"\u9D77>Yuan;",
+	"\u9D78>Q{i2};",
+	"\u9D79>L{i2};",
+	"\u9D7A>Y{e4};",
+	"\u9D7B>Zhui;",
+	"\u9D7C>Kong;",
+	"\u9D7D>Zhu{i4};",
+	"\u9D7E>Kun;",
+	"\u9D7F>Sheng;",
+	"\u9D80>Q{i2};",
+	"\u9D81>Jing;",
+	"\u9D82>Y{i4};",
+	"\u9D83>Y{i4};",
+	"\u9D84>Jing;",
+	"\u9D85>Zi;",
+	"\u9D86>La{i2};",
+	"\u9D87>Dong;",
+	"\u9D88>Qi;",
+	"\u9D89>Ch{u2}n;",
+	"\u9D8A>Geng;",
+	"\u9D8B>Ju;",
+	"\u9D8C>Qu;",
+	"\u9D8F>Ji;",
+	"\u9D90>Sh{u4};",
+	"\u9D92>Ch{i4};",
+	"\u9D93>Mia{o2};",
+	"\u9D94>Ro{u2};",
+	"\u9D95>An;",
+	"\u9D96>Qiu;",
+	"\u9D97>T{i2};",
+	"\u9D98>H{u2};",
+	"\u9D99>T{i2};",
+	"\u9D9A>{E4};",
+	"\u9D9B>Jie;",
+	"\u9D9C>Ma{o2};",
+	"\u9D9D>F{u2};",
+	"\u9D9E>Chun;",
+	"\u9D9F>T{u2};",
+	"\u9DA0>Y{a3}n;",
+	"\u9DA1>H{e2};",
+	"\u9DA2>Yu{a2}n;",
+	"\u9DA3>Pian;",
+	"\u9DA4>Y{u4}n;",
+	"\u9DA5>Me{i2};",
+	"\u9DA6>H{u2};",
+	"\u9DA7>Ying;",
+	"\u9DA8>D{u4}n;",
+	"\u9DA9>M{u4};",
+	"\u9DAA>J{u2};",
+	"\u9DAC>Cang;",
+	"\u9DAD>F{a3}ng;",
+	"\u9DAE>G{u4};",
+	"\u9DAF>Ying;",
+	"\u9DB0>Yu{a2}n;",
+	"\u9DB1>Xuan;",
+	"\u9DB2>Weng;",
+	"\u9DB3>Shi;",
+	"\u9DB4>H{e4};",
+	"\u9DB5>Ch{u2};",
+	"\u9DB6>T{a2}ng;",
+	"\u9DB7>Xi{a4};",
+	"\u9DB8>Ru{o4};",
+	"\u9DB9>Li{u2};",
+	"\u9DBA>J{i2};",
+	"\u9DBB>G{u2};",
+	"\u9DBC>Jian;",
+	"\u9DBD>Zh{u3}n;",
+	"\u9DBE>H{a4}n;",
+	"\u9DBF>Zi;",
+	"\u9DC0>Zi;",
+	"\u9DC1>N{i4};",
+	"\u9DC2>Ya{o4};",
+	"\u9DC3>Y{a4}n;",
+	"\u9DC4>Ji;",
+	"\u9DC5>L{i4};",
+	"\u9DC6>Ti{a2}n;",
+	"\u9DC7>Ko{u4};",
+	"\u9DC8>Ti;",
+	"\u9DC9>Ti;",
+	"\u9DCA>N{i4};",
+	"\u9DCB>T{u2};",
+	"\u9DCC>M{a3};",
+	"\u9DCD>Jiao;",
+	"\u9DCE>Gao;",
+	"\u9DCF>Ti{a2}n;",
+	"\u9DD0>Ch{e2}n;",
+	"\u9DD1>L{i4};",
+	"\u9DD2>Zhuan;",
+	"\u9DD3>Zh{e4};",
+	"\u9DD4>A{o2};",
+	"\u9DD5>Ya{o3};",
+	"\u9DD6>Yi;",
+	"\u9DD7>Ou;",
+	"\u9DD8>Ch{i4};",
+	"\u9DD9>Zh{i4};",
+	"\u9DDA>Lia{o2};",
+	"\u9DDB>R{o2}ng;",
+	"\u9DDC>Lo{u2};",
+	"\u9DDD>B{i4};",
+	"\u9DDE>Shuang;",
+	"\u9DDF>Zhu{o2};",
+	"\u9DE0>Y{u2};",
+	"\u9DE1>W{u2};",
+	"\u9DE2>Ju{e2};",
+	"\u9DE3>Y{i2}n;",
+	"\u9DE4>Qu{a2}n;",
+	"\u9DE5>Si;",
+	"\u9DE6>Jiao;",
+	"\u9DE7>Y{i4};",
+	"\u9DE8>Hua;",
+	"\u9DE9>B{i4};",
+	"\u9DEA>Ying;",
+	"\u9DEB>S{u4};",
+	"\u9DEC>Hu{a2}ng;",
+	"\u9DED>F{a2}n;",
+	"\u9DEE>Jiao;",
+	"\u9DEF>Lia{o2};",
+	"\u9DF0>Y{a4}n;",
+	"\u9DF1>Kao;",
+	"\u9DF2>Ji{u4};",
+	"\u9DF3>Xi{a2}n;",
+	"\u9DF4>Xi{a2}n;",
+	"\u9DF5>T{u2};",
+	"\u9DF6>Ma{i3};",
+	"\u9DF7>Zun;",
+	"\u9DF8>Y{u4};",
+	"\u9DF9>Ying;",
+	"\u9DFA>L{u4};",
+	"\u9DFB>Tu{a2}n;",
+	"\u9DFC>Xi{a2}n;",
+	"\u9DFD>Xu{e2};",
+	"\u9DFE>Y{i4};",
+	"\u9DFF>P{i4};",
+	"\u9E00>Sh{u2};",
+	"\u9E01>Lu{o2};",
+	"\u9E02>Qi;",
+	"\u9E03>Y{i2};",
+	"\u9E04>J{i2};",
+	"\u9E05>Zh{e2};",
+	"\u9E06>Y{u2};",
+	"\u9E07>Zhan;",
+	"\u9E08>Y{e4};",
+	"\u9E09>Y{a2}ng;",
+	"\u9E0A>P{i4};",
+	"\u9E0B>N{i2}ng;",
+	"\u9E0C>Hu{o4};",
+	"\u9E0D>M{i2};",
+	"\u9E0E>Ying;",
+	"\u9E0F>M{e2}ng;",
+	"\u9E10>D{i2};",
+	"\u9E11>Yu{e4};",
+	"\u9E12>Y{u2};",
+	"\u9E13>Le{i3};",
+	"\u9E14>Ba{o4};",
+	"\u9E15>L{u2};",
+	"\u9E16>H{e4};",
+	"\u9E17>L{o2}ng;",
+	"\u9E18>Shuang;",
+	"\u9E19>Yu{e4};",
+	"\u9E1A>Ying;",
+	"\u9E1B>Gu{a4}n;",
+	"\u9E1C>Q{u2};",
+	"\u9E1D>L{i2};",
+	"\u9E1E>Lu{a2}n;",
+	"\u9E1F>Nia{o3};",
+	"\u9E20>Jiu;",
+	"\u9E21>Ji;",
+	"\u9E22>Yuan;",
+	"\u9E23>M{i2}ng;",
+	"\u9E24>Shi;",
+	"\u9E25>Ou;",
+	"\u9E26>Ya;",
+	"\u9E27>Cang;",
+	"\u9E28>Ba{o3};",
+	"\u9E29>Zh{e4}n;",
+	"\u9E2A>Gu;",
+	"\u9E2B>Dong;",
+	"\u9E2C>L{u2};",
+	"\u9E2D>Ya;",
+	"\u9E2E>Xiao;",
+	"\u9E2F>Yang;",
+	"\u9E30>L{i2}ng;",
+	"\u9E31>Zhi;",
+	"\u9E32>Q{u2};",
+	"\u9E33>Yuan;",
+	"\u9E34>Xu{e2};",
+	"\u9E35>Tu{o2};",
+	"\u9E36>Si;",
+	"\u9E37>Zh{i4};",
+	"\u9E38>{E2}r;",
+	"\u9E39>Gua;",
+	"\u9E3A>Xiu;",
+	"\u9E3B>H{e2}ng;",
+	"\u9E3C>Zhou;",
+	"\u9E3D>Ge;",
+	"\u9E3E>Lu{a2}n;",
+	"\u9E3F>H{o2}ng;",
+	"\u9E40>W{u2};",
+	"\u9E41>B{o2};",
+	"\u9E42>L{i2};",
+	"\u9E43>Juan;",
+	"\u9E44>H{u2};",
+	"\u9E45>{E2};",
+	"\u9E46>Y{u4};",
+	"\u9E47>Xi{a2}n;",
+	"\u9E48>T{i2};",
+	"\u9E49>W{u3};",
+	"\u9E4A>Qu{e4};",
+	"\u9E4B>Mia{o2};",
+	"\u9E4C>An;",
+	"\u9E4D>Kun;",
+	"\u9E4E>Bei;",
+	"\u9E4F>P{e2}ng;",
+	"\u9E50>Qian;",
+	"\u9E51>Ch{u2}n;",
+	"\u9E52>Geng;",
+	"\u9E53>Yuan;",
+	"\u9E54>S{u4};",
+	"\u9E55>H{u2};",
+	"\u9E56>H{e2};",
+	"\u9E57>{E4};",
+	"\u9E58>G{u2};",
+	"\u9E59>Qiu;",
+	"\u9E5A>Zi;",
+	"\u9E5B>Me{i2};",
+	"\u9E5C>M{u4};",
+	"\u9E5D>N{i4};",
+	"\u9E5E>Ya{o4};",
+	"\u9E5F>Weng;",
+	"\u9E60>Li{u2};",
+	"\u9E61>J{i2};",
+	"\u9E62>N{i4};",
+	"\u9E63>Jian;",
+	"\u9E64>H{e4};",
+	"\u9E65>Yi;",
+	"\u9E66>Ying;",
+	"\u9E67>Zh{e4};",
+	"\u9E68>Lia{o2};",
+	"\u9E69>Lia{o2};",
+	"\u9E6A>Jiao;",
+	"\u9E6B>Ji{u4};",
+	"\u9E6C>Y{u4};",
+	"\u9E6D>L{u4};",
+	"\u9E6E>Xu{a2}n;",
+	"\u9E6F>Zhan;",
+	"\u9E70>Ying;",
+	"\u9E71>Hu{o4};",
+	"\u9E72>M{e2}ng;",
+	"\u9E73>Gu{a4}n;",
+	"\u9E74>Shuang;",
+	"\u9E75>L{u3};",
+	"\u9E76>Jin;",
+	"\u9E77>L{i2}ng;",
+	"\u9E78>Ji{a3}n;",
+	"\u9E79>Xi{a2}n;",
+	"\u9E7A>Cu{o2};",
+	"\u9E7B>Ji{a3}n;",
+	"\u9E7C>Ji{a3}n;",
+	"\u9E7D>Y{a2}n;",
+	"\u9E7E>Cu{o2};",
+	"\u9E7F>L{u4};",
+	"\u9E80>You;",
+	"\u9E81>Cu;",
+	"\u9E82>J{i3};",
+	"\u9E83>Biao;",
+	"\u9E84>Cu;",
+	"\u9E85>Biao;",
+	"\u9E86>Zh{u4};",
+	"\u9E87>Jun;",
+	"\u9E88>Zh{u3};",
+	"\u9E89>Jian;",
+	"\u9E8A>M{i2};",
+	"\u9E8B>M{i2};",
+	"\u9E8C>W{u2};",
+	"\u9E8D>Li{u2};",
+	"\u9E8E>Ch{e2}n;",
+	"\u9E8F>Jun;",
+	"\u9E90>L{i2}n;",
+	"\u9E91>N{i2};",
+	"\u9E92>Q{i2};",
+	"\u9E93>L{u4};",
+	"\u9E94>Ji{u4};",
+	"\u9E95>Jun;",
+	"\u9E96>Jing;",
+	"\u9E97>L{i4};",
+	"\u9E98>Xiang;",
+	"\u9E99>Y{a2}n;",
+	"\u9E9A>Jia;",
+	"\u9E9B>M{i2};",
+	"\u9E9C>L{i4};",
+	"\u9E9D>Sh{e4};",
+	"\u9E9E>Zhang;",
+	"\u9E9F>L{i2}n;",
+	"\u9EA0>Jing;",
+	"\u9EA1>Ji;",
+	"\u9EA2>L{i2}ng;",
+	"\u9EA3>Y{a2}n;",
+	"\u9EA4>Cu;",
+	"\u9EA5>Ma{i4};",
+	"\u9EA6>Ma{i4};",
+	"\u9EA7>Ge;",
+	"\u9EA8>Cha{o3};",
+	"\u9EA9>Fu;",
+	"\u9EAA>Mi{a3}n;",
+	"\u9EAB>Mi{a3}n;",
+	"\u9EAC>Fu;",
+	"\u9EAD>Pa{o4};",
+	"\u9EAE>Q{u4};",
+	"\u9EAF>Q{u2};",
+	"\u9EB0>Mo{u2};",
+	"\u9EB1>Fu;",
+	"\u9EB2>Xi{a4}n;",
+	"\u9EB3>La{i2};",
+	"\u9EB4>Q{u2};",
+	"\u9EB5>Mi{a4}n;",
+	"\u9EB7>Feng;",
+	"\u9EB8>Fu;",
+	"\u9EB9>Q{u2};",
+	"\u9EBA>Mi{a4}n;",
+	"\u9EBB>M{a2};",
+	"\u9EBC>M{o1};",
+	"\u9EBD>M{o1};",
+	"\u9EBE>Hui;",
+	"\u9EC0>Zou;",
+	"\u9EC1>Nen;",
+	"\u9EC2>F{e2}n;",
+	"\u9EC3>Hu{a2}ng;",
+	"\u9EC4>Hu{a2}ng;",
+	"\u9EC5>Jin;",
+	"\u9EC6>Guang;",
+	"\u9EC7>Tian;",
+	"\u9EC8>To{u3};",
+	"\u9EC9>H{e2}ng;",
+	"\u9ECA>Xi;",
+	"\u9ECB>Ku{a3}ng;",
+	"\u9ECC>H{e2}ng;",
+	"\u9ECD>Sh{u3};",
+	"\u9ECE>L{i2};",
+	"\u9ECF>Ni{a2}n;",
+	"\u9ED0>Chi;",
+	"\u9ED1>Hei;",
+	"\u9ED2>Hei;",
+	"\u9ED3>Y{i4};",
+	"\u9ED4>Qi{a2}n;",
+	"\u9ED5>Dan;",
+	"\u9ED6>X{i4};",
+	"\u9ED7>Tu{a3}n;",
+	"\u9ED8>M{o4};",
+	"\u9ED9>M{o4};",
+	"\u9EDA>Qi{a2}n;",
+	"\u9EDB>Da{i4};",
+	"\u9EDC>Ch{u4};",
+	"\u9EDD>Yo{u3};",
+	"\u9EDE>Di{a3}n;",
+	"\u9EDF>Yi;",
+	"\u9EE0>Xi{a2};",
+	"\u9EE1>Y{a3}n;",
+	"\u9EE2>Qu;",
+	"\u9EE3>Me{i3};",
+	"\u9EE4>Y{a3}n;",
+	"\u9EE5>Jing;",
+	"\u9EE6>Y{u4};",
+	"\u9EE7>L{i2};",
+	"\u9EE8>D{a3}ng;",
+	"\u9EE9>D{u2};",
+	"\u9EEA>C{a3}n;",
+	"\u9EEB>Yin;",
+	"\u9EEC>{A4}n;",
+	"\u9EED>Yan;",
+	"\u9EEE>T{a3}n;",
+	"\u9EEF>{A4}n;",
+	"\u9EF0>Zh{e3}n;",
+	"\u9EF1>Da{i4};",
+	"\u9EF2>C{a3}n;",
+	"\u9EF3>Yi;",
+	"\u9EF4>Me{i2};",
+	"\u9EF5>D{a3}n;",
+	"\u9EF6>Y{a3}n;",
+	"\u9EF7>D{u2};",
+	"\u9EF8>L{u2};",
+	"\u9EF9>Zh{i3};",
+	"\u9EFA>F{e3}n;",
+	"\u9EFB>F{u4};",
+	"\u9EFC>F{u3};",
+	"\u9EFD>M{i3}n;",
+	"\u9EFE>M{i3}n;",
+	"\u9EFF>Yu{a2}n;",
+	"\u9F00>C{u4};",
+	"\u9F01>Q{u4};",
+	"\u9F02>Cha{o2};",
+	"\u9F03>Wa;",
+	"\u9F04>Zhu;",
+	"\u9F05>Zhi;",
+	"\u9F06>M{a2}ng;",
+	"\u9F07>A{o2};",
+	"\u9F08>Bie;",
+	"\u9F09>Tu{o2};",
+	"\u9F0A>B{i4};",
+	"\u9F0B>Yu{a2}n;",
+	"\u9F0C>Cha{o2};",
+	"\u9F0D>Tu{o2};",
+	"\u9F0E>D{i3}ng;",
+	"\u9F0F>M{i4};",
+	"\u9F10>Na{i4};",
+	"\u9F11>D{i3}ng;",
+	"\u9F12>Zi;",
+	"\u9F13>G{u3};",
+	"\u9F14>G{u3};",
+	"\u9F15>Dong;",
+	"\u9F16>F{e2}n;",
+	"\u9F17>Ta{o2};",
+	"\u9F18>Yuan;",
+	"\u9F19>P{i2};",
+	"\u9F1A>Chang;",
+	"\u9F1B>Gao;",
+	"\u9F1C>Q{i4};",
+	"\u9F1D>Yuan;",
+	"\u9F1E>Tang;",
+	"\u9F1F>Teng;",
+	"\u9F20>Sh{u3};",
+	"\u9F21>Sh{u3};",
+	"\u9F22>F{e2}n;",
+	"\u9F23>Fe{i4};",
+	"\u9F24>W{e2}n;",
+	"\u9F25>B{a2};",
+	"\u9F26>Diao;",
+	"\u9F27>Tu{o2};",
+	"\u9F28>T{o2}ng;",
+	"\u9F29>Q{u2};",
+	"\u9F2A>Sheng;",
+	"\u9F2B>Sh{i2};",
+	"\u9F2C>Yo{u4};",
+	"\u9F2D>Sh{i2};",
+	"\u9F2E>T{i2}ng;",
+	"\u9F2F>W{u2};",
+	"\u9F30>Ni{a4}n;",
+	"\u9F31>Jing;",
+	"\u9F32>H{u2}n;",
+	"\u9F33>J{u2};",
+	"\u9F34>Y{a3}n;",
+	"\u9F35>T{u2};",
+	"\u9F36>T{i2};",
+	"\u9F37>Xi;",
+	"\u9F38>Xi{a3}n;",
+	"\u9F39>Y{a3}n;",
+	"\u9F3A>Le{i2};",
+	"\u9F3B>B{i2};",
+	"\u9F3C>Ya{o3};",
+	"\u9F3D>Qi{u2};",
+	"\u9F3E>Han;",
+	"\u9F3F>Wu;",
+	"\u9F40>W{u4};",
+	"\u9F41>Ho{u2};",
+	"\u9F42>X{i4};",
+	"\u9F43>G{e2};",
+	"\u9F44>Zha;",
+	"\u9F45>Xi{u4};",
+	"\u9F46>W{e4}ng;",
+	"\u9F47>Zha;",
+	"\u9F48>N{o2}ng;",
+	"\u9F49>N{a4}ng;",
+	"\u9F4A>Q{i2};",
+	"\u9F4B>Zhai;",
+	"\u9F4C>J{i4};",
+	"\u9F4D>Zi;",
+	"\u9F4E>Ji;",
+	"\u9F4F>Ji;",
+	"\u9F50>Q{i2};",
+	"\u9F51>Ji;",
+	"\u9F52>Ch{i3};",
+	"\u9F53>Ch{e4}n;",
+	"\u9F54>Ch{e4}n;",
+	"\u9F55>H{e2};",
+	"\u9F56>Y{a2};",
+	"\u9F57>K{e3}n;",
+	"\u9F58>Xi{e4};",
+	"\u9F59>Pa{o2};",
+	"\u9F5A>Cu{o4};",
+	"\u9F5B>Sh{i4};",
+	"\u9F5C>Zi;",
+	"\u9F5D>Chi;",
+	"\u9F5E>Ni{a4}n;",
+	"\u9F5F>J{u3};",
+	"\u9F60>Tia{o2};",
+	"\u9F61>L{i2}ng;",
+	"\u9F62>L{i2}ng;",
+	"\u9F63>Chu;",
+	"\u9F64>Qu{a2}n;",
+	"\u9F65>Xi{e4};",
+	"\u9F66>K{e3}n;",
+	"\u9F67>Ni{e4};",
+	"\u9F68>Ji{u4};",
+	"\u9F69>Ya{o3};",
+	"\u9F6A>Chu{o4};",
+	"\u9F6B>K{u3}n;",
+	"\u9F6C>Y{u3};",
+	"\u9F6D>Ch{u3};",
+	"\u9F6E>Y{i3};",
+	"\u9F6F>N{i2};",
+	"\u9F70>Cu{o4};",
+	"\u9F71>Zou;",
+	"\u9F72>Q{u3};",
+	"\u9F73>N{e3}n;",
+	"\u9F74>Xi{a3}n;",
+	"\u9F75>O{u2};",
+	"\u9F76>{E4};",
+	"\u9F77>W{o4};",
+	"\u9F78>Y{i4};",
+	"\u9F79>Chuo;",
+	"\u9F7A>Zou;",
+	"\u9F7B>Dian;",
+	"\u9F7C>Ch{u3};",
+	"\u9F7D>J{i4}n;",
+	"\u9F7E>Y{a4};",
+	"\u9F7F>Ch{i3};",
+	"\u9F80>Ch{e4}n;",
+	"\u9F81>H{e2};",
+	"\u9F82>K{e3}n;",
+	"\u9F83>J{u3};",
+	"\u9F84>L{i2}ng;",
+	"\u9F85>Pa{o2};",
+	"\u9F86>Tia{o2};",
+	"\u9F87>Zi;",
+	"\u9F88>K{e3}n;",
+	"\u9F89>Y{u3};",
+	"\u9F8A>Chu{o4};",
+	"\u9F8B>Q{u3};",
+	"\u9F8C>W{o4};",
+	"\u9F8D>L{o2}ng;",
+	"\u9F8E>P{a2}ng;",
+	"\u9F8F>Gong;",
+	"\u9F90>P{a2}ng;",
+	"\u9F91>Y{a3}n;",
+	"\u9F92>L{o2}ng;",
+	"\u9F93>L{o2}ng;",
+	"\u9F94>Gong;",
+	"\u9F95>Kan;",
+	"\u9F96>T{a4};",
+	"\u9F97>L{i2}ng;",
+	"\u9F98>T{a4};",
+	"\u9F99>L{o2}ng;",
+	"\u9F9A>Gong;",
+	"\u9F9B>Kan;",
+	"\u9F9C>Gui;",
+	"\u9F9D>Qiu;",
+	"\u9F9E>Bie;",
+	"\u9F9F>Gui;",
+	"\u9FA0>Yu{e4};",
+	"\u9FA1>Chu{i4};",
+	"\u9FA2>H{e2};",
+	"\u9FA3>Ju{e2};",
+	"\u9FA4>Xi{e2};",
+	"\u9FA5>Y{u4};",
+	"\uF90E>L{a4};",
+	"\uFA0C>W{u4};",
+	"\uFA0D>Hu{o4};",
+	"\uFA10>Zh{o3}ng;",
+	"\uFA12>Q{i2}ng;",
+	"\uFA15>Xi;",
+	"\uFA16>Zhu;",
+	"\uFA17>Y{i4};",
+	"\uFA18>L{i3};",
+	"\uFA19>Sh{e2}n;",
+	"\uFA1A>Xi{a2}ng;",
+	"\uFA1B>F{u2};",
+	"\uFA1C>J{i4}ng;",
+	"\uFA1D>Jing;",
+	"\uFA1E>Y{u3};",
+	"\uFA22>Zhu;",
+	"\uFA25>Y{i4};",
+	"\uFA26>Du;",
+	"\uFA2A>F{a4}n;",
+	"\uFA2B>S{i4};",
+	"\uFA2C>Gu{a3}n;",
+	"\uFA2D>H{e4};",
+    };
+  }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Kanji_English.java b/src/com/ibm/text/resources/TransliterationRule_Kanji_English.java
new file mode 100755
index 0000000..3759dc2
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Kanji_English.java
@@ -0,0 +1,6374 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Kanji_English.java,v $ 
+ * $Date: 2000/03/10 04:07:30 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+import java.util.ListResourceBundle;
+public class TransliterationRule_Kanji_English extends ListResourceBundle {
+ public Object[][] getContents() {
+  return new Object[][] {
+   {"Rule", new String[] {
+      "\u4E01>'[male adult]'",
+      "\u4E03>'[seven]'",
+      "\u4E07>'[ten thousand]'",
+      "\u4E08>'[unit of length equal 3.3 meters]'",
+      "\u4E09>'[three]'",
+      "\u4E0A>'[top]'",
+      "\u4E0B>'[under]'",
+      "\u4E0D>'[no]'",
+      "\u4E0E>'[and]'",
+      "\u4E10>'[beggar]'",
+      "\u4E11>'[clown]'",
+      "\u4E14>'[moreover]'",
+      "\u4E15>'[great]'",
+      "\u4E16>'[generation]'",
+      "\u4E17>'[thirty]'",
+      "\u4E18>'[hill]'",
+      "\u4E19>'[third of heavenly stems]'",
+      "\u4E1E>'[assist]'",
+      "\u4E21>'[two]'",
+      "\u4E26>'[equal to]'",
+      "\u4E2A>'[numerary adjunct]'",
+      "\u4E2D>'[central]'",
+      "\u4E31>'[child''s hairstyle bound in two tufts]'",
+      "\u4E32>'[string]'",
+      "\u4E36>'[dot]'",
+      "\u4E38>'[small round object]'",
+      "\u4E39>'[cinnabar (native HgS)]'",
+      "\u4E3B>'[master]'",
+      "\u4E3C>'[bowl of food]'",
+      "\u4E3F>'[line]'",
+      "\u4E42>'[govern]'",
+      "\u4E43>'[then]'",
+      "\u4E45>'[long time (ago)]'",
+      "\u4E4B>'[''s (marks preceding phrase as modifier of following phrase)]'",
+      "\u4E4D>'[suddenly]'",
+      "\u4E4E>'[interrogative or exclamatory final particle]'",
+      "\u4E4F>'[lack]'",
+      "\u4E55>'[tiger]'",
+      "\u4E56>'[rebel]'",
+      "\u4E57>'[ride]'",
+      "\u4E58>'[ride]'",
+      "\u4E59>'[second heaven''s stem]'",
+      "\u4E5D>'[nine]'",
+      "\u4E5E>'[beg]'",
+      "\u4E5F>'[also]'",
+      "\u4E62>'[lid]'",
+      "\u4E71>'[confusion]'",
+      "\u4E73>'[breast]'",
+      "\u4E7E>'[dry]'",
+      "\u4E80>'[turtle or tortoise]'",
+      "\u4E82>'[confusion]'",
+      "\u4E85>'[hook]'",
+      "\u4E86>'[to finish]'",
+      "\u4E88>'[I]'",
+      "\u4E89>'[dispute]'",
+      "\u4E8A>'[affair]'",
+      "\u4E8B>'[affair]'",
+      "\u4E8C>'[two]'",
+      "\u4E8E>'[in]'",
+      "\u4E91>'[say]'",
+      "\u4E92>'[mutually]'",
+      "\u4E94>'[five]'",
+      "\u4E95>'[well]'",
+      "\u4E98>'[extend across]'",
+      "\u4E99>'[extend across]'",
+      "\u4E9B>'[little]'",
+      "\u4E9C>'[asia]'",
+      "\u4E9E>'[asia]'",
+      "\u4E9F>'[urgently]'",
+      "\u4EA0>'[head]'",
+      "\u4EA1>'[death]'",
+      "\u4EA2>'[high]'",
+      "\u4EA4>'[mix]'",
+      "\u4EA5>'[last of 12 earth branches]'",
+      "\u4EA6>'[also]'",
+      "\u4EA8>'[smoothly]'",
+      "\u4EAB>'[enjoy]'",
+      "\u4EAC>'[capital city]'",
+      "\u4EAD>'[pavilion]'",
+      "\u4EAE>'[bright]'",
+      "\u4EB0>'[capital city]'",
+      "\u4EB3>'[name of district in Anhui]'",
+      "\u4EB6>'[sincere]'",
+      "\u4EBA>'[man]'",
+      "\u4EC0>'[file of ten soldiers]'",
+      "\u4EC1>'[humaneness]'",
+      "\u4EC2>'[surplus or excess]'",
+      "\u4EC4>'[slanting]'",
+      "\u4EC6>'[fall forward]'",
+      "\u4EC7>'[enemy]'",
+      "\u4ECA>'[now]'",
+      "\u4ECB>'[forerunner]'",
+      "\u4ECD>'[yet]'",
+      "\u4ECE>'[from]'",
+      "\u4ECF>'[buddha]'",
+      "\u4ED4>'[small thing]'",
+      "\u4ED5>'[official]'",
+      "\u4ED6>'[other]'",
+      "\u4ED7>'[rely upon]'",
+      "\u4ED8>'[give]'",
+      "\u4ED9>'[Taoist super-being]'",
+      "\u4EDD>'[together]'",
+      "\u4EDE>'[ancient unit of measure (8 feet)]'",
+      "\u4EDF>'[one thousand]'",
+      "\u4EE3>'[replace]'",
+      "\u4EE4>'[command]'",
+      "\u4EE5>'[by means of]'",
+      "\u4EED>'[ancient unit of measure (8 feet)]'",
+      "\u4EEE>'[falsehood]'",
+      "\u4EF0>'[raise the head to look]'",
+      "\u4EF2>'[middle brother]'",
+      "\u4EF6>'[numerary adjunct for article]'",
+      "\u4EF7>'[price]'",
+      "\u4EFB>'[trust to]'",
+      "\u4F01>'[plan a project]'",
+      "\u4F09>'[compare]'",
+      "\u4F0A>'[third person pronoun]'",
+      "\u4F0D>'[five]'",
+      "\u4F0E>'[talent]'",
+      "\u4F0F>'[crouch]'",
+      "\u4F10>'[cut down]'",
+      "\u4F11>'[rest]'",
+      "\u4F1A>'[assemble]'",
+      "\u4F1C>'[deputy]'",
+      "\u4F1D>'[summon]'",
+      "\u4F2F>'[older brother]'",
+      "\u4F30>'[merchant]'",
+      "\u4F34>'[companion]'",
+      "\u4F36>'[lonely]'",
+      "\u4F38>'[extend]'",
+      "\u4F3A>'[serve]'",
+      "\u4F3C>'[resemble]'",
+      "\u4F3D>'[transcription of sanskrit gha in buddhist texts ('\u00ebm\u00e2\u00e6 \"samgha\"')]'",
+      "\u4F43>'[tenant farmer]'",
+      "\u4F46>'[only]'",
+      "\u4F47>'[wait]'",
+      "\u4F4D>'[throne]'",
+      "\u4F4E>'[low]'",
+      "\u4F4F>'[reside]'",
+      "\u4F50>'[assist]'",
+      "\u4F51>'[help]'",
+      "\u4F53>'[body]'",
+      "\u4F55>'[what]'",
+      "\u4F57>'[other]'",
+      "\u4F59>'[I]'",
+      "\u4F5A>'[indulge in pleasures]'",
+      "\u4F5B>'[buddha (contraction of MC 'bhi\u00eatdha')]'",
+      "\u4F5C>'[make]'",
+      "\u4F5D>'[rickets]'",
+      "\u4F5E>'[flattery]'",
+      "\u4F69>'[belt ornament]'",
+      "\u4F6F>'[pretend]'",
+      "\u4F70>'[hundred]'",
+      "\u4F73>'[good]'",
+      "\u4F75>'[combine]'",
+      "\u4F76>'[strong]'",
+      "\u4F7B>'[frivolous]'",
+      "\u4F7C>'[beautiful]'",
+      "\u4F7F>'[cause]'",
+      "\u4F83>'[upright and strong]'",
+      "\u4F86>'[come]'",
+      "\u4F88>'[luxurious]'",
+      "\u4F8B>'[precedent]'",
+      "\u4F8D>'[serve]'",
+      "\u4F8F>'[small]'",
+      "\u4F91>'[help]'",
+      "\u4F96>'[logical reasons]'",
+      "\u4F98>'[disappointed]'",
+      "\u4F9B>'[supply]'",
+      "\u4F9D>'[rely on]'",
+      "\u4FA0>'[chivalrous person]'",
+      "\u4FA1>'[price]'",
+      "\u4FAB>'[flattery]'",
+      "\u4FAD>'[complete]'",
+      "\u4FAE>'[insult]'",
+      "\u4FAF>'[marquis]'",
+      "\u4FB5>'[invade]'",
+      "\u4FB6>'[companion]'",
+      "\u4FBF>'[convenience]'",
+      "\u4FC2>'[bind]'",
+      "\u4FC3>'[urge]'",
+      "\u4FC4>'[sudden(ly)]'",
+      "\u4FCA>'[talented]'",
+      "\u4FCE>'[chopping board or block]'",
+      "\u4FD0>'[smooth]'",
+      "\u4FD1>'[wooden figure buried with dead]'",
+      "\u4FD4>'[like]'",
+      "\u4FD7>'[social customs]'",
+      "\u4FD8>'[prisoner of war]'",
+      "\u4FDA>'[rustic]'",
+      "\u4FDB>'[make effort]'",
+      "\u4FDD>'[protect]'",
+      "\u4FDF>'[wait for]'",
+      "\u4FE1>'[trust]'",
+      "\u4FE3>'[big]'",
+      //"\u4FE3>'[big]'",
+      "\u4FE5>'[rickshaw]'",
+      "\u4FEE>'[study]'",
+      "\u4FEF>'[bow down]'",
+      "\u4FF3>'[actor]'",
+      "\u4FF5>'[divide]'",
+      "\u4FF6>'[start]'",
+      "\u4FF8>'[wages]'",
+      "\u4FFA>'[personal pronoun]'",
+      "\u4FFE>'[so that]'",
+      "\u5005>'[deputy]'",
+      "\u5006>'[clever]'",
+      "\u5009>'[granary]'",
+      "\u500B>'[numerary adjunct]'",
+      "\u500D>'[times]'",
+      "\u500F>'[hastily]'",
+      "\u5011>'[adjunct pronoun indicate plural]'",
+      "\u5012>'[fall over]'",
+      "\u5014>'[stubborn]'",
+      "\u5016>'[lucky]'",
+      "\u5019>'[wait]'",
+      "\u501A>'[rely on]'",
+      "\u501F>'[borrow]'",
+      "\u5021>'[guide]'",
+      "\u5023>'[imitate]'",
+      "\u5024>'[price]'",
+      "\u5025>'[boorish]'",
+      "\u5026>'[be tired of]'",
+      "\u5028>'[arrogant]'",
+      "\u5029>'[beautiful]'",
+      "\u502A>'[feeble]'",
+      "\u502B>'[normal human relationships]'",
+      "\u502C>'[noticeable]'",
+      "\u502D>'[dwarf]'",
+      "\u5036>'[all]'",
+      "\u5039>'[temperate]'",
+      "\u5043>'[cease]'",
+      "\u5047>'[falsehood]'",
+      "\u5048>'[brave]'",
+      "\u5049>'[great]'",
+      "\u504F>'[inclined one side]'",
+      "\u5050>'[false]'",
+      "\u5055>'[together]'",
+      "\u5056>'[rip up]'",
+      "\u505A>'[work]'",
+      "\u505C>'[stop]'",
+      "\u5065>'[strong]'",
+      "\u506C>'[urgent]'",
+      "\u5072>'[talented]'",
+      "\u5074>'[side]'",
+      "\u5075>'[spy]'",
+      "\u5076>'[accidentally]'",
+      "\u5078>'[to steal]'",
+      "\u507D>'[false]'",
+      "\u5080>'[great]'",
+      "\u5085>'[tutor]'",
+      "\u508D>'[by side of]'",
+      "\u5091>'[hero]'",
+      "\u5098>'[umbrella]'",
+      "\u5099>'[prepare]'",
+      "\u509A>'[imitate]'",
+      "\u50AC>'[press]'",
+      "\u50AD>'[hire]'",
+      "\u50B2>'[proud]'",
+      "\u50B3>'[summon]'",
+      "\u50B4>'[humpback]'",
+      "\u50B5>'[debt]'",
+      "\u50B7>'[wound]'",
+      "\u50BE>'[upset]'",
+      "\u50C2>'[humpback]'",
+      "\u50C5>'[only]'",
+      "\u50C9>'[all]'",
+      "\u50CA>'[Taoist super-being]'",
+      "\u50CD>'[labor]'",
+      "\u50CF>'[picture]'",
+      "\u50D1>'[sojourn]'",
+      "\u50D5>'[slave]'",
+      "\u50D6>'[joy]'",
+      "\u50DA>'[companion]'",
+      "\u50DE>'[false]'",
+      "\u50E3>'[assume]'",
+      "\u50E5>'[be lucky]'",
+      "\u50E7>'[buddhist priest]'",
+      "\u50ED>'[assume]'",
+      "\u50EE>'[page]'",
+      "\u50F5>'[stiff and motionless]'",
+      "\u50F9>'[price]'",
+      "\u50FB>'[out-of-the-way]'",
+      "\u5100>'[ceremony]'",
+      "\u5101>'[outstanding]'",
+      "\u5102>'[I]'",
+      "\u5104>'[hundred million]'",
+      "\u5109>'[temperate]'",
+      "\u5112>'[confucian scholar]'",
+      "\u5114>'[companion]'",
+      "\u5115>'[a company]'",
+      //"\u5115>'[a company]'",
+      "\u5118>'[utmost]'",
+      //"\u5118>'[utmost]'",
+      "\u511F>'[repay]'",
+      "\u5121>'[puppet]'",
+      "\u512A>'[superior]'",
+      "\u5132>'[save money]'",
+      "\u5137>'[spouse]'",
+      "\u513A>'[rich]'",
+      "\u513B>'[if]'",
+      "\u513C>'[grave]'",
+      "\u513F>'[son]'",
+      "\u5140>'[to cut off the feet]'",
+      "\u5141>'[to grant]'",
+      "\u5143>'[first]'",
+      "\u5144>'[elder brother]'",
+      "\u5145>'[fill]'",
+      "\u5146>'[omen]'",
+      "\u5147>'[atrocious]'",
+      "\u5148>'[first]'",
+      "\u5149>'[light]'",
+      "\u514B>'[gram]'",
+      "\u514C>'[cash]'",
+      "\u514D>'[spare]'",
+      "\u514E>'[rabbit]'",
+      "\u5150>'[son]'",
+      "\u5152>'[son]'",
+      "\u5154>'[rabbit]'",
+      "\u515A>'[political party]'",
+      "\u515C>'[pouch]'",
+      "\u5162>'[fearful]'",
+      "\u5165>'[enter]'",
+      "\u5168>'[maintain]'",
+      "\u5169>'[two]'",
+      "\u516A>'[surname]'",
+      "\u516B>'[eight]'",
+      "\u516C>'[fair]'",
+      "\u516D>'[number six]'",
+      "\u516E>'[exclamatory particle]'",
+      "\u5171>'[together with]'",
+      "\u5175>'[soldier]'",
+      "\u5176>'[his]'",
+      "\u5177>'[tool]'",
+      "\u5178>'[law]'",
+      "\u517C>'[unite]'",
+      "\u5180>'[hope for]'",
+      "\u5182>'[wide]'",
+      "\u5185>'[inside]'",
+      "\u5186>'[yen]'",
+      "\u5189>'[tender]'",
+      "\u518A>'[book]'",
+      "\u518C>'[book]'",
+      "\u518D>'[again]'",
+      "\u518F>'[[not found in dictionary]]'",
+      "\u5190>'[risk]'",
+      "\u5191>'[helmet]'",
+      "\u5192>'[risk]'",
+      "\u5193>'[a secluded place]'",
+      "\u5195>'[crown]'",
+      "\u5196>'[cover]'",
+      "\u5197>'[excessive]'",
+      "\u5199>'[write]'",
+      "\u51A0>'[cap]'",
+      "\u51A2>'[burial mound]'",
+      "\u51A4>'[grievance]'",
+      "\u51A5>'[dark]'",
+      "\u51A6>'[bandits]'",
+      "\u51A8>'[abundant]'",
+      "\u51A9>'[write]'",
+      "\u51AA>'[cover-cloth]'",
+      "\u51AB>'[ice]'",
+      "\u51AC>'[winter]'",
+      "\u51B0>'[ice]'",
+      "\u51B1>'[freezing]'",
+      "\u51B2>'[soar]'",
+      "\u51B3>'[decide]'",
+      "\u51B4>'[freezing]'",
+      "\u51B5>'[condition]'",
+      "\u51B6>'[smelt]'",
+      "\u51B7>'[cold]'",
+      "\u51BD>'[cold and raw]'",
+      "\u51C4>'[bitter cold]'",
+      "\u51C5>'[dried up]'",
+      "\u51C6>'[approve]'",
+      "\u51C9>'[cool]'",
+      "\u51CB>'[be withered]'",
+      "\u51CC>'[pure]'",
+      "\u51CD>'[freeze]'",
+      "\u51D6>'[rule]'",
+      "\u51DB>'[to shiver with cold or fear]'",
+      "\u51DC>'[shiver with cold or fear]'",
+      "\u51DD>'[coagulate]'",
+      "\u51E0>'[small table]'",
+      "\u51E1>'[all]'",
+      "\u51E6>'[place]'",
+      "\u51E7>'[kite]'",
+      "\u51E9>'[wintry wind]'",
+      "\u51EA>'[calm]'",
+      "\u51ED>'[lean on]'",
+      "\u51F0>'[female phoenix]'",
+      "\u51F1>'[triumphant]'",
+      "\u51F5>'[receptacle]'",
+      "\u51F6>'[culprit]'",
+      "\u51F8>'[protrude]'",
+      "\u51F9>'[concave]'",
+      "\u51FA>'[go out]'",
+      "\u51FD>'[correspondence]'",
+      "\u51FE>'[correspondence]'",
+      "\u5200>'[knife]'",
+      "\u5203>'[edged tool]'",
+      "\u5204>'[edged tool]'",
+      "\u5206>'[divide]'",
+      "\u5207>'[cut]'",
+      "\u5208>'[cut off]'",
+      "\u520A>'[publication]'",
+      "\u520B>'[publication]'",
+      "\u520E>'[behead]'",
+      "\u5211>'[punishment]'",
+      "\u5214>'[scoop out]'",
+      "\u5217>'[line]'",
+      "\u521D>'[beginning]'",
+      "\u5224>'[judge]'",
+      "\u5225>'[separate]'",
+      "\u5227>'[disaster]'",
+      "\u5229>'[gains]'",
+      "\u522A>'[to cut]'",
+      "\u522E>'[shave]'",
+      "\u5230>'[go to]'",
+      "\u5233>'[cut out]'",
+      "\u5236>'[system]'",
+      "\u5237>'[brush]'",
+      "\u5238>'[certificate]'",
+      "\u5239>'[temple]'",
+      "\u523A>'[stab]'",
+      "\u523B>'[carve]'",
+      "\u5243>'[shave]'",
+      "\u5244>'[cut throat]'",
+      "\u5247>'[rule]'",
+      "\u524A>'[scrape off]'",
+      "\u524B>'[subdue]'",
+      "\u524C>'[slash]'",
+      "\u524D>'[in front]'",
+      "\u524F>'[establish]'",
+      "\u5254>'[pick out]'",
+      "\u5256>'[split in two]'",
+      "\u525B>'[hard]'",
+      "\u525E>'[carving or engraving knife]'",
+      "\u5263>'[sword]'",
+      "\u5264>'[medicinal preparation]'",
+      "\u5265>'[peel]'",
+      "\u5269>'[leftovers]'",
+      "\u526A>'[scissors]'",
+      "\u526F>'[assist]'",
+      "\u5270>'[leftovers]'",
+      "\u5271>'[sword]'",
+      "\u5272>'[cut]'",
+      "\u5273>'[brief note]'",
+      "\u5274>'[sharpen]'",
+      "\u5275>'[establish]'",
+      "\u527D>'[rob]'",
+      "\u527F>'[destroy]'",
+      "\u5283>'[divide]'",
+      "\u5287>'[theatrical plays]'",
+      "\u5288>'[cut apart]'",
+      "\u5289>'[surname]'",
+      "\u528D>'[sword]'",
+      "\u5291>'[medicinal preparation]'",
+      "\u5292>'[sword]'",
+      "\u5294>'[sword]'",
+      "\u529B>'[power]'",
+      "\u529F>'[achievement]'",
+      "\u52A0>'[add to]'",
+      "\u52A3>'[bad]'",
+      "\u52A9>'[help]'",
+      "\u52AA>'[exert]'",
+      "\u52AB>'[take by force]'",
+      "\u52AC>'[be diligent]'",
+      "\u52AD>'[encourage]'",
+      "\u52B1>'[strive]'",
+      "\u52B4>'[labor]'",
+      "\u52B5>'[certificate]'",
+      "\u52B9>'[efficacious]'",
+      "\u52BC>'[be discreet]'",
+      "\u52BE>'[examine into]'",
+      "\u52C1>'[strong]'",
+      "\u52C3>'[suddenly]'",
+      "\u52C5>'[imperial degree]'",
+      "\u52C7>'[brave]'",
+      "\u52C9>'[endeavor]'",
+      "\u52CD>'[strong]'",
+      "\u52D2>'[strangle]'",
+      "\u52D5>'[move]'",
+      "\u52D7>'[enjoin]'",
+      "\u52D8>'[investigate]'",
+      "\u52D9>'[affairs]'",
+      "\u52DD>'[victory]'",
+      "\u52DE>'[labor]'",
+      "\u52DF>'[levy]'",
+      "\u52E0>'[join forces]'",
+      "\u52E2>'[power]'",
+      "\u52E3>'[achievements]'",
+      "\u52E4>'[industrious]'",
+      "\u52E6>'[destroy]'",
+      "\u52E7>'[recommend]'",
+      "\u52F2>'[meritorious deed]'",
+      "\u52F3>'[meritorious deed]'",
+      "\u52F5>'[strive]'",
+      "\u52F8>'[recommend]'",
+      "\u52F9>'[wrap]'",
+      "\u52FA>'[spoon]'",
+      "\u52FE>'[hook]'",
+      "\u52FF>'[must not]'",
+      "\u5301>'[Japanese unit of weight (1/1000 of a kan)]'",
+      "\u5302>'[fragrance]'",
+      "\u5305>'[wrap]'",
+      "\u5306>'[hastily]'",
+      "\u5308>'[breast]'",
+      "\u530D>'[crawl]'",
+      "\u530F>'[gourd]'",
+      "\u5310>'[fall prostrate]'",
+      "\u5315>'[spoon]'",
+      "\u5316>'[change]'",
+      "\u5317>'[north]'",
+      "\u5319>'[spoon]'",
+      "\u531A>'[box]'",
+      "\u531D>'[full circle]'",
+      "\u5320>'[craftsman]'",
+      "\u5321>'[correct]'",
+      "\u5323>'[small box]'",
+      "\u532A>'[bandits]'",
+      "\u532F>'[concourse]'",
+      "\u5331>'[to lack]'",
+      "\u5333>'[ladies toilet case with mirror]'",
+      "\u5338>'[box]'",
+      "\u5339>'[bolt of cloth]'",
+      "\u533A>'[area]'",
+      "\u533B>'[cure]'",
+      "\u533F>'[hide]'",
+      "\u5340>'[area]'",
+      "\u5341>'[ten]'",
+      "\u5343>'[thousand]'",
+      "\u5345>'[thirty]'",
+      "\u5346>'[soldier]'",
+      "\u5347>'[arise]'",
+      "\u5348>'[noon]'",
+      "\u5349>'[general term for plants]'",
+      "\u534A>'[half]'",
+      "\u534D>'[swastika - fourth of auspicious]'",
+      "\u5351>'[humble]'",
+      "\u5352>'[soldier]'",
+      "\u5353>'[profound]'",
+      "\u5354>'[be united]'",
+      "\u5357>'[south]'",
+      //"\u5357>'[south]'",
+      "\u535A>'[gamble]'",
+      "\u535C>'[fortune telling]'",
+      "\u535E>'[be impatient]'",
+      "\u5360>'[divine]'",
+      "\u5366>'[fortune telling]'",
+      "\u5369>'[seal]'",
+      "\u536E>'[measuring cup]'",
+      "\u536F>'[4th of Earth Branches]'",
+      "\u5370>'[print]'",
+      "\u5371>'[dangerous]'",
+      "\u5373>'[promptly]'",
+      "\u5374>'[still]'",
+      "\u5375>'[egg]'",
+      "\u5377>'[scroll]'",
+      "\u5378>'[lay down]'",
+      "\u537B>'[still]'",
+      "\u537F>'[noble]'",
+      "\u5382>'[factory]'",
+      "\u5384>'[adversity]'",
+      "\u5396>'[bulky]'",
+      "\u5398>'[thousandth part of tael]'",
+      "\u539A>'[thick]'",
+      "\u539F>'[source]'",
+      "\u53A0>'[mingle with]'",
+      "\u53A5>'[personal pronoun - he]'",
+      "\u53A6>'[big building]'",
+      "\u53A8>'[kitchen]'",
+      "\u53A9>'[stable]'",
+      "\u53AD>'[dislike]'",
+      "\u53AE>'[servant]'",
+      "\u53B0>'[factory]'",
+      "\u53B3>'[strict]'",
+      "\u53B6>'[private]'",
+      "\u53BB>'[go away]'",
+      "\u53C2>'[take part in]'",
+      "\u53C3>'[take part in]'",
+      "\u53C8>'[and]'",
+      "\u53C9>'[crotch]'",
+      "\u53CA>'[extend]'",
+      "\u53CB>'[friend]'",
+      "\u53CC>'[set of two]'",
+      "\u53CD>'[reverse]'",
+      "\u53CE>'[gather together]'",
+      "\u53D4>'[father''s younger brother]'",
+      "\u53D6>'[take]'",
+      "\u53D7>'[receive]'",
+      "\u53D9>'[express]'",
+      "\u53DB>'[rebel]'",
+      "\u53DF>'[old man]'",
+      "\u53E1>'[astute]'",
+      "\u53E2>'[bush]'",
+      "\u53E3>'[mouth]'",
+      "\u53E4>'[old]'",
+      "\u53E5>'[sentence]'",
+      "\u53E8>'[talkative]'",
+      "\u53E9>'[knock]'",
+      "\u53EA>'[only]'",
+      "\u53EB>'[cry]'",
+      "\u53EC>'[imperial decree]'",
+      "\u53ED>'[trumpet]'",
+      "\u53EE>'[exhort or enjoin repeatedly]'",
+      "\u53EF>'[may]'",
+      "\u53F0>'[platform]'",
+      "\u53F1>'[scold]'",
+      "\u53F2>'[history]'",
+      "\u53F3>'[right]'",
+      "\u53F6>'[to harmonize]'",
+      "\u53F7>'[mark]'",
+      "\u53F8>'[take charge of]'",
+      //"\u53F9>'[sigh]'",
+      "\u5401>'['interjection \"Alas!\"']'",
+      "\u5403>'[eat]'",
+      "\u5404>'[each]'",
+      "\u5408>'[combine]'",
+      "\u5409>'[lucky]'",
+      "\u540A>'[condole]'",
+      "\u540B>'[inch]'",
+      "\u540C>'[same]'",
+      "\u540D>'[name]'",
+      "\u540E>'[queen]'",
+      "\u540F>'[government official]'",
+      "\u5410>'[vomit]'",
+      "\u5411>'[toward]'",
+      "\u541B>'[sovereign]'",
+      "\u541D>'[stingy]'",
+      "\u541F>'[sing]'",
+      "\u5420>'[bark]'",
+      "\u5426>'[not]'",
+      "\u5429>'[order]'",
+      "\u542B>'[hold in mouth]'",
+      "\u542C>'[hear]'",
+      "\u542D>'[throat]'",
+      "\u542E>'[suck with mouth]'",
+      "\u5436>'[raise voice]'",
+      "\u5438>'[inhale]'",
+      "\u5439>'[blow]'",
+      "\u543B>'[kiss]'",
+      "\u543C>'[roar]'",
+      "\u543D>'['\"OM\"']'",
+      "\u543E>'[i]'",
+      "\u5440>'[particle used express surprise]'",
+      "\u5442>'[surname]'",
+      "\u5446>'[dull]'",
+      "\u5448>'[submit]'",
+      "\u5449>'[one of warring states]'",
+      "\u544A>'[tell]'",
+      "\u544E>'[foot]'",
+      "\u5451>'[swallow]'",
+      //"\u545C>'[sound of crying]'",
+      "\u5468>'[zhou dynasty]'",
+      "\u546A>'[curse]'",
+      //"\u5470>'[................................]'",
+      "\u5471>'[wail]'",
+      "\u5473>'[taste]'",
+      "\u5475>'[scold]'",
+      "\u5476>'[talkative]'",
+      "\u5477>'[suck]'",
+      "\u547B>'[groan]'",
+      "\u547C>'[breathe sigh]'",
+      "\u547D>'[life]'",
+      "\u5480>'[suck]'",
+      "\u5484>'[noise of rage]'",
+      "\u5486>'[roar]'",
+      "\u548B>'[why? how? what?]'",
+      "\u548C>'[harmony]'",
+      "\u548E>'[fault]'",
+      "\u548F>'[sing song or poem]'",
+      "\u5490>'[instruct]'",
+      "\u5492>'[curse]'",
+      "\u54A2>'[sound]'",
+      "\u54A4>'[scold]'",
+      "\u54A5>'[sound of cat]'",
+      "\u54A8>'[inquire]'",
+      "\u54AB>'[foot measure of Zhou dynasty]'",
+      "\u54AC>'[bite]'",
+      "\u54AF>'[final particle]'",
+      "\u54B2>'[smile]'",
+      "\u54B3>'[cough]'",
+      "\u54B8>'[together]'",
+      "\u54BC>'[chat]'",
+      "\u54BD>'[throat]'",
+      "\u54BE>'[a noise]'",
+      "\u54C0>'[sad]'",
+      "\u54C1>'[article]'",
+      "\u54C2>'[smile]'",
+      "\u54C4>'[coax]'",
+      "\u54C7>'[vomit]'",
+      "\u54C8>'[sound of laughter]'",
+      "\u54C9>'[final exclamatory particle]'",
+      //"\u54D7>'[rushing sound]'",
+      "\u54E1>'[member]'",
+      "\u54E2>'[syllable]'",
+      "\u54E5>'[elder brother]'",
+      "\u54E6>'[oh? really? is that so?]'",
+      "\u54E8>'[whistle]'",
+      "\u54E9>'[mile]'",
+      "\u54ED>'[weep]'",
+      "\u54EE>'[cough]'",
+      "\u54F2>'[wise]'",
+      "\u54FA>'[chew food]'",
+      "\u54FD>'[choke]'",
+      "\u5504>'[final particle of assertion pathaka]'",
+      "\u5506>'[make mischief]'",
+      "\u5507>'[lips]'",
+      "\u550F>'[weep or sob]'",
+      "\u5510>'[tang dynasty]'",
+      "\u5514>'[hold in mouth]'",
+      "\u5516>'[dumb]'",
+      "\u552E>'[sell]'",
+      "\u552F>'[only]'",
+      "\u5531>'[sing]'",
+      "\u5533>'[cry of bird]'",
+      "\u5538>'[recite]'",
+      "\u5539>'[to smile at]'",
+      "\u553E>'[spit]'",
+      "\u5540>'[gnaw]'",
+      "\u5544>'[to peck]'",
+      //"\u5544>'[to peck]'",
+      "\u5546>'[commerce]'",
+      "\u554C>'[animal disease]'",
+      "\u554F>'[ask (about)]'",
+      "\u5553>'[open]'",
+      "\u5556>'[eat]'",
+      "\u5557>'[eat]'",
+      "\u555C>'[sip]'",
+      //"\u555C>'[sip]'",
+      "\u5563>'[hold in mouth]'",
+      "\u557B>'[only]'",
+      "\u557C>'[weep]'",
+      "\u557E>'[wailing of child]'",
+      "\u5580>'[vomit]'",
+      "\u5583>'[keep talking]'",
+      "\u5584>'[good]'",
+      "\u5587>'[horn]'",
+      "\u5589>'[throat]'",
+      "\u558A>'[shout]'",
+      "\u558B>'[nag]'",
+      "\u5598>'[pant]'",
+      "\u5599>'[beak]'",
+      "\u559A>'[call]'",
+      "\u559C>'[like]'",
+      "\u559D>'[drink]'",
+      "\u559E>'[chirping of insects]'",
+      "\u559F>'[heave sigh]'",
+      "\u55A7>'[lively]'",
+      "\u55A8>'[wail]'",
+      "\u55A9>'[metaphor]'",
+      "\u55AA>'[mourning]'",
+      "\u55AB>'[eat]'",
+      "\u55AC>'[tall]'",
+      "\u55AE>'[single]'",
+      "\u55B0>'[to eat]'",
+      "\u55B6>'[encampment]'",
+      "\u55C4>'[hoarse of voice]'",
+      "\u55C5>'[smell]'",
+      "\u55C7>'[miserly]'",
+      "\u55D4>'[be angry at]'",
+      "\u55DA>'[sound of crying]'",
+      "\u55DC>'[be fond of]'",
+      "\u55DF>'[sigh]'",
+      "\u55E3>'[to connect]'",
+      "\u55E4>'[laugh at]'",
+      "\u55F7>'[loud clamor]'",
+      "\u55F9>'[chatter]'",
+      "\u55FD>'[cough]'",
+      "\u55FE>'[to set a dog on]'",
+      "\u5606>'[sigh]'",
+      "\u5609>'[excellent]'",
+      "\u5614>'[vomit]'",
+      "\u5616>'[interjection of approval or admi]'",
+      "\u5617>'[taste]'",
+      "\u5618>'[exhale]'",
+      "\u561B>'[final exclamatory particle]'",
+      "\u5629>'[rushing sound]'",
+      "\u562F>'[roar]'",
+      "\u5631>'[order]'",
+      "\u5632>'[ridicule]'",
+      "\u5634>'[mouth]'",
+      "\u5636>'[neighing of a horse]'",
+      "\u5638>'[unclear]'",
+      "\u5642>'[meet]'",
+      "\u564C>'[scold]'",
+      "\u564E>'[choke]'",
+      "\u5650>'[receptacle]'",
+      "\u565B>'[bite]'",
+      "\u5664>'[close]'",
+      "\u5668>'[receptacle]'",
+      "\u566A>'[be noisy]'",
+      "\u566B>'[belch]'",
+      "\u566C>'[bite]'",
+      "\u5674>'[spurt]'",
+      "\u5678>'[metric ton]'",
+      "\u567A>'[story]'",
+      "\u5680>'[enjoin]'",
+      "\u5686>'[give forth sound]'",
+      "\u5687>'[scare]'",
+      "\u568A>'[to pant]'",
+      "\u568F>'[sneeze]'",
+      "\u5694>'[sneeze]'",
+      //"\u569C>'[be silent]'",
+      "\u56A2>'[bag]'",
+      "\u56A5>'[swallow]'",
+      "\u56AE>'[guide]'",
+      "\u56B4>'[strict]'",
+      "\u56B6>'[seek friends]'",
+      "\u56BC>'[prattle]'",
+      "\u56C0>'[sing]'",
+      "\u56C1>'[move lip when speaking]'",
+      "\u56C2>'[be noisy]'",
+      //"\u56C2>'[be noisy]'",
+      "\u56C8>'[talk in one''s sleep]'",
+      //"\u56CD>'[double happiness]'",
+      "\u56D1>'[order]'",
+      "\u56D3>'[gnaw]'",
+      "\u56D7>'[erect]'",
+      "\u56D8>'[return]'",
+      "\u56DA>'[prisoner]'",
+      "\u56DB>'[four]'",
+      "\u56DE>'[return]'",
+      "\u56E0>'[cause]'",
+      "\u56E3>'[sphere]'",
+      "\u56EE>'[inveigle]'",
+      "\u56F0>'[surround]'",
+      "\u56F2>'[surround]'",
+      "\u56F3>'[diagram]'",
+      "\u56F9>'[prison]'",
+      "\u56FA>'[become solid]'",
+      "\u56FD>'[nation]'",
+      "\u56FF>'[pen up]'",
+      "\u5700>'[nation]'",
+      "\u5703>'[garden]'",
+      "\u5704>'[prison]'",
+      "\u5708>'[to circle]'",
+      "\u5709>'[stable]'",
+      "\u570B>'[nation]'",
+      "\u570D>'[surround]'",
+      "\u570F>'[to circle]'",
+      "\u5712>'[garden]'",
+      "\u5713>'[circle]'",
+      "\u5716>'[diagram]'",
+      "\u5718>'[sphere]'",
+      "\u571C>'[circle]'",
+      "\u571F>'[soil]'",
+      "\u5726>'[(kokuji) water gate]'",
+      //"\u5726>'[(kokuji) water gate]'",
+      "\u5728>'[be at]'",
+      "\u572D>'[jade pointed at top]'",
+      "\u5730>'[earth]'",
+      //"\u5733>'[furrow in field]'",
+      //"\u5733>'[furrow in field]'",
+      "\u573B>'[border]'",
+      "\u5740>'[site]'",
+      "\u5742>'[hillside]'",
+      "\u5747>'[equal]'",
+      "\u574A>'[neighborhood]'",
+      "\u574E>'[pit]'",
+      "\u574F>'[rotten]'",
+      "\u5750>'[sit]'",
+      "\u5751>'[pit]'",
+      "\u5761>'[slope]'",
+      "\u5764>'[earth]'",
+      "\u5766>'[flat]'",
+      "\u5769>'[earthenware]'",
+      "\u576A>'[level ground]'",
+      "\u577F>'[mound]'",
+      "\u5782>'[let down]'",
+      //"\u5786>'[black clods of earth]'",
+      //"\u5789>'[................................]'",
+      "\u578B>'[pattern]'",
+      "\u5793>'[border]'",
+      "\u57A0>'[boundary]'",
+      "\u57A2>'[dirt]'",
+      "\u57A3>'[low wall]'",
+      "\u57A4>'[ant-hill]'",
+      //"\u57A9>'[holy]'",
+      //"\u57AE>'[be defeated]'",
+      //"\u57B2>'[high and dry place]'",
+      "\u57C0>'[let down]'",
+      "\u57C3>'[fine dust]'",
+      "\u57C6>'[stony]'",
+      "\u57CB>'[bury]'",
+      "\u57CE>'[castle]'",
+      "\u57D2>'[enclosure]'",
+      "\u57D3>'[enclosure]'",
+      "\u57D4>'[plain]'",
+      //"\u57D4>'[plain]'",
+      "\u57DC>'[open country]'",
+      "\u57DF>'[district]'",
+      "\u57E0>'[port city]'",
+      //"\u57E3>'[................................]'",
+      "\u57F4>'[soil with large clay content]'",
+      "\u57F7>'[hold in hand]'",
+      "\u57F9>'[bank up with dirt]'",
+      "\u57FA>'[foundation]'",
+      "\u57FC>'[headland]'",
+      "\u5800>'[cave]'",
+      "\u5802>'[hall]'",
+      "\u5805>'[hard]'",
+      "\u5806>'[heap]'",
+      "\u580A>'[white earth]'",
+      "\u580B>'[bury]'",
+      "\u5815>'[fall]'",
+      "\u5819>'[bury]'",
+      "\u581D>'[crucible]'",
+      "\u5821>'[fort]'",
+      "\u5824>'[dike]'",
+      "\u582A>'[adequately capable of]'",
+      "\u582F>'[a legendary ancient emperor-sage]'",
+      "\u5830>'[dam]'",
+      "\u5831>'[report]'",
+      "\u5834>'[open space]'",
+      "\u5835>'[wall]'",
+      "\u583A>'[person''s name]'",
+      "\u583D>'[mound]'",
+      "\u5840>'[wall]'",
+      "\u5841>'[rampart]'",
+      "\u584A>'[piece]'",
+      "\u584B>'[grave]'",
+      "\u5851>'[model in clay]'",
+      "\u5852>'[roost]'",
+      "\u5854>'[tower]'",
+      "\u5857>'[smear]'",
+      "\u5858>'[pond]'",
+      "\u5859>'[truly]'",
+      "\u585A>'[cemetery]'",
+      "\u585E>'[stop up]'",
+      "\u5862>'[entrenchment]'",
+      "\u5869>'[salt]'",
+      "\u586B>'[fill in]'",
+      //"\u586D>'[[not found in any dictionary]]'",
+      "\u5872>'[open space]'",
+      "\u5875>'[dust]'",
+      "\u5879>'[moat]'",
+      "\u587E>'[village school]'",
+      "\u5883>'[boundery]'",
+      "\u5885>'[villa]'",
+      "\u5893>'[grave]'",
+      "\u5897>'[increase]'",
+      "\u589C>'[fall down]'",
+      "\u589F>'[high mound]'",
+      "\u58A8>'[ink]'",
+      "\u58AB>'[cup]'",
+      "\u58AE>'[fall]'",
+      "\u58B3>'[grave]'",
+      //"\u58B3>'[grave]'",
+      //"\u58B3>'[grave]'",
+      "\u58BA>'[4 walls]'",
+      "\u58BB>'[wall]'",
+      "\u58BE>'[cultivate]'",
+      "\u58C1>'[partition wall]'",
+      "\u58C5>'[to obstruct]'",
+      "\u58C7>'[altar]'",
+      "\u58CA>'[bad]'",
+      "\u58CC>'[soil]'",
+      "\u58D1>'[bed of torrent]'",
+      "\u58D3>'[press]'",
+      "\u58D5>'[trench]'",
+      //"\u58D6>'[open space along water]'",
+      "\u58D8>'[rampart]'",
+      "\u58D9>'[tomb]'",
+      "\u58DC>'[earthen jar or jug]'",
+      "\u58DE>'[bad]'",
+      "\u58DF>'[grave]'",
+      "\u58E4>'[soil]'",
+      //"\u58E5>'[................................]'",
+      "\u58EB>'[scholar]'",
+      "\u58EC>'[ninth of ten celestial stems]'",
+      "\u58EE>'[big]'",
+      "\u58EF>'[big]'",
+      "\u58F0>'[sound]'",
+      "\u58F1>'[number one]'",
+      "\u58F2>'[sell]'",
+      "\u58F7>'[jar]'",
+      "\u58F9>'[number one]'",
+      "\u58FA>'[jar]'",
+      "\u58FB>'[son-in-law]'",
+      "\u58FC>'[palace corridor or passageway]'",
+      "\u58FD>'[old age]'",
+      "\u5902>'[go]'",
+      "\u5909>'[change]'",
+      "\u590A>'[Radical No. 35]'",
+      "\u590F>'[summer]'",
+      "\u5910>'[long]'",
+      "\u5915>'[evening]'",
+      "\u5916>'[out]'",
+      "\u5918>'[4th of Earth Branches]'",
+      "\u5919>'[early in morning]'",
+      "\u591A>'[much]'",
+      "\u591B>'[much]'",
+      "\u591C>'[night]'",
+      "\u5922>'[dream]'",
+      "\u5925>'[companion]'",
+      "\u5927>'[big]'",
+      "\u5929>'[sky]'",
+      "\u592A>'[very]'",
+      "\u592B>'[man]'",
+      "\u592C>'[parted]'",
+      "\u592D>'[young]'",
+      "\u592E>'[center]'",
+      "\u5931>'[lose]'",
+      "\u5932>'[advance quickly]'",
+      "\u5937>'[ancient barbarian tribes]'",
+      "\u5938>'[extravagant]'",
+      "\u593E>'[be wedged or inserted between]'",
+      "\u5944>'[ere long]'",
+      "\u5947>'[strange]'",
+      "\u5948>'[but]'",
+      "\u5949>'[offer]'",
+      "\u594E>'[stride of man]'",
+      "\u594F>'[memorialize emperor]'",
+      "\u5950>'[be numerous]'",
+      "\u5951>'[deed]'",
+      "\u5954>'[run fast]'",
+      "\u5955>'[in sequence]'",
+      "\u5957>'[case]'",
+      "\u5958>'[large]'",
+      "\u595A>'[where? what? how? why?]'",
+      "\u5960>'[pay respect]'",
+      "\u5962>'[extravagant]'",
+      "\u5965>'[mysterious]'",
+      "\u5967>'[mysterious]'",
+      "\u5968>'[prize]'",
+      "\u5969>'[lady''s vanity case]'",
+      "\u596A>'[take by force]'",
+      "\u596C>'[prize]'",
+      "\u596E>'[strive]'",
+      "\u5973>'[woman]'",
+      "\u5974>'[slave]'",
+      "\u5978>'[crafty]'",
+      "\u597D>'[good]'",
+      "\u5981>'[act as go-between]'",
+      "\u5982>'[if]'",
+      "\u5983>'[wife]'",
+      "\u5984>'[absurd]'",
+      "\u598A>'[conceive]'",
+      "\u598D>'[beautiful]'",
+      "\u5993>'[prostitute]'",
+      "\u5996>'[strange]'",
+      "\u5999>'[mysterious]'",
+      //"\u5999>'[mysterious]'",
+      "\u599D>'[adorn oneself]'",
+      "\u59A3>'[one''s deceased mother]'",
+      "\u59A5>'[satisfactory]'",
+      "\u59A8>'[interfere with]'",
+      "\u59AC>'[jealous]'",
+      "\u59B2>'[concubine of last ruler of shang]'",
+      "\u59B9>'[younger sister]'",
+      "\u59BB>'[wife]'",
+      "\u59BE>'[concubine]'",
+      "\u59C6>'[child''s governess]'",
+      "\u59C9>'[elder sister]'",
+      "\u59CB>'[begin]'",
+      "\u59D0>'[elder sister]'",
+      "\u59D1>'[father''s sister]'",
+      "\u59D3>'[one''s family name]'",
+      "\u59D4>'[appoint]'",
+      "\u59D9>'[conceive]'",
+      "\u59DA>'[handsome]'",
+      "\u59DC>'[surname]'",
+      "\u59E5>'[maternal grandmother]'",
+      "\u59E6>'[adultery]'",
+      "\u59E8>'[mother/wife''s sister]'",
+      "\u59EA>'[niece]'",
+      "\u59EB>'[beauty]'",
+      //"\u59F1>'[beautiful]'",
+      "\u59FB>'[relatives by marriage]'",
+      "\u59FF>'[one''s manner]'",
+      "\u5A01>'[pomp]'",
+      "\u5A03>'[baby]'",
+      "\u5A09>'[beautiful]'",
+      "\u5A11>'[dance]'",
+      "\u5A18>'[mother]'",
+      //"\u5A1A>'[................................]'",
+      "\u5A1C>'[elegant]'",
+      "\u5A1F>'[beautiful]'",
+      "\u5A20>'[pregnant]'",
+      "\u5A25>'[be beautiful]'",
+      "\u5A29>'[give birth child]'",
+      "\u5A2F>'[pleasure]'",
+      "\u5A35>'[star]'",
+      "\u5A36>'[marry]'",
+      "\u5A3C>'[prostitute]'",
+      "\u5A40>'[be beautiful]'",
+      "\u5A41>'[surname]'",
+      "\u5A46>'[old woman]'",
+      "\u5A49>'[amiable]'",
+      "\u5A5A>'[get married]'",
+      "\u5A62>'[servant girl]'",
+      "\u5A66>'[married women]'",
+      "\u5A6A>'[covet]'",
+      "\u5A6C>'[obscene]'",
+      "\u5A7F>'[son-in-law]'",
+      "\u5A92>'[go-between]'",
+      "\u5A9A>'[charming]'",
+      "\u5A9B>'[beauty]'",
+      "\u5ABC>'[old woman]'",
+      "\u5ABD>'[mother]'",
+      "\u5ABE>'[marry]'",
+      "\u5AC1>'[marry]'",
+      "\u5AC2>'[sister-in-law]'",
+      "\u5AC9>'[jealousy]'",
+      "\u5ACB>'[slender and delicate]'",
+      "\u5ACC>'[hate]'",
+      "\u5AD0>'[frolic]'",
+      "\u5AD6>'[patronize prostitutes]'",
+      "\u5AD7>'[old woman]'",
+      "\u5AE1>'[legal wife]'",
+      "\u5AE3>'[charming]'",
+      "\u5AE6>'[name of a moon goddess]'",
+      "\u5AE9>'[soft]'",
+      "\u5AFA>'[refined]'",
+      "\u5AFB>'[elegant]'",
+      "\u5B09>'[enjoy]'",
+      "\u5B0B>'[beautiful]'",
+      "\u5B0C>'[seductive and loveable]'",
+      "\u5B16>'[favorite]'",
+      "\u5B22>'[troubled]'",
+      "\u5B2A>'[court lady]'",
+      "\u5B2C>'[mistress]'",
+      "\u5B30>'[baby]'",
+      "\u5B32>'[frolic]'",
+      //"\u5B34>'[to win]'",
+      "\u5B3E>'[lazy]'",
+      "\u5B40>'[widow]'",
+      "\u5B43>'[troubled]'",
+      "\u5B45>'[slender]'",
+      "\u5B50>'[offspring]'",
+      "\u5B51>'[remaining]'",
+      "\u5B54>'[opening]'",
+      "\u5B55>'[be pregnant]'",
+      "\u5B57>'[letter]'",
+      "\u5B58>'[exist]'",
+      "\u5B5A>'[brood over eggs]'",
+      "\u5B5B>'[comet]'",
+      "\u5B5C>'[be as diligent as possible]'",
+      "\u5B5D>'[filial piety]'",
+      "\u5B5F>'[first in series]'",
+      "\u5B63>'[quarter of year]'",
+      "\u5B64>'[orphan]'",
+      "\u5B65>'[one''s children]'",
+      "\u5B66>'[learning]'",
+      "\u5B69>'[baby]'",
+      "\u5B6B>'[grandchild]'",
+      "\u5B70>'[who? which? what? which one?]'",
+      "\u5B71>'[weak]'",
+      "\u5B73>'[breed in large numbers]'",
+      "\u5B75>'[sit on eggs]'",
+      "\u5B78>'[learning]'",
+      "\u5B7A>'[child]'",
+      "\u5B80>'[roof]'",
+      "\u5B83>'[it]'",
+      "\u5B85>'[residence]'",
+      "\u5B87>'[house]'",
+      "\u5B88>'[defend]'",
+      "\u5B89>'[peaceful]'",
+      "\u5B8B>'[Song dynasty]'",
+      "\u5B8C>'[complete]'",
+      "\u5B8D>'[flesh]'",
+      "\u5B8F>'[wide]'",
+      "\u5B95>'[stone quarry]'",
+      "\u5B97>'[lineage]'",
+      "\u5B98>'[official]'",
+      "\u5B99>'[time as concept]'",
+      "\u5B9A>'[decide]'",
+      "\u5B9B>'[seem]'",
+      "\u5B9C>'[suitable]'",
+      "\u5B9D>'[treasure]'",
+      "\u5B9F>'[real]'",
+      "\u5BA2>'[guest]'",
+      "\u5BA3>'[declare]'",
+      "\u5BA4>'[room]'",
+      "\u5BA5>'[forgive]'",
+      "\u5BA6>'[officialdom]'",
+      "\u5BAE>'[palace]'",
+      "\u5BB0>'[to slaughter]'",
+      "\u5BB3>'[injure]'",
+      "\u5BB4>'[entertain]'",
+      "\u5BB5>'[night]'",
+      "\u5BB6>'[house]'",
+      "\u5BB8>'[imperial]'",
+      "\u5BB9>'[looks]'",
+      "\u5BBF>'[stop]'",
+      "\u5BC2>'[still]'",
+      "\u5BC3>'[grievance]'",
+      "\u5BC4>'[send]'",
+      "\u5BC5>'[respect]'",
+      "\u5BC6>'[dense]'",
+      "\u5BC7>'[bandits]'",
+      //"\u5BC9>'[................................]'",
+      "\u5BCC>'[abundant]'",
+      "\u5BD0>'[sleep]'",
+      "\u5BD2>'[cold]'",
+      "\u5BD3>'[residence]'",
+      "\u5BD4>'[real]'",
+      "\u5BDB>'[broad]'",
+      "\u5BDD>'[sleep]'",
+      "\u5BDE>'[silent]'",
+      "\u5BDF>'[examine]'",
+      "\u5BE1>'[widowed]'",
+      "\u5BE2>'[sleep]'",
+      "\u5BE4>'[few]'",
+      "\u5BE5>'[few]'",
+      "\u5BE6>'[real]'",
+      "\u5BE7>'[repose]'",
+      "\u5BE8>'[stockade]'",
+      "\u5BE9>'[examine]'",
+      "\u5BEB>'[write]'",
+      "\u5BEE>'[shanty]'",
+      "\u5BF0>'[great domain]'",
+      "\u5BF3>'[treasure]'",
+      "\u5BF5>'[favorite]'",
+      "\u5BF6>'[treasure]'",
+      "\u5BF8>'[inch]'",
+      "\u5BFA>'[court]'",
+      "\u5BFE>'[correct]'",
+      "\u5BFF>'[old age]'",
+      "\u5C01>'[letter]'",
+      "\u5C02>'[monopolize]'",
+      "\u5C04>'[shoot]'",
+      "\u5C05>'[subdue]'",
+      "\u5C06>'[will]'",
+      "\u5C07>'[will]'",
+      "\u5C08>'[monopolize]'",
+      "\u5C09>'[officer]'",
+      "\u5C0A>'[respect]'",
+      "\u5C0B>'[seek]'",
+      "\u5C0D>'[correct]'",
+      "\u5C0E>'[direct]'",
+      "\u5C0F>'[small]'",
+      "\u5C11>'[few]'",
+      "\u5C13>'[you]'",
+      "\u5C16>'[sharp]'",
+      "\u5C1A>'[still]'",
+      "\u5C20>'[very few]'",
+      "\u5C22>'[weak]'",
+      "\u5C24>'[especially]'",
+      "\u5C28>'[shaggy haired dog]'",
+      "\u5C2D>'[a legendary ancient emperor-sage]'",
+      "\u5C31>'[just]'",
+      "\u5C38>'[corpse]'",
+      "\u5C39>'[govern]'",
+      "\u5C3A>'['chinese measure approx. \"foot\"']'",
+      "\u5C3B>'[end of spine]'",
+      "\u5C3C>'[buddhist nun]'",
+      "\u5C3D>'[exhaust]'",
+      "\u5C3E>'[tail]'",
+      "\u5C3F>'[urine]'",
+      "\u5C40>'[bureau]'",
+      "\u5C41>'[break wind]'",
+      "\u5C45>'[live]'",
+      "\u5C46>'[numerary adjunct for time]'",
+      "\u5C48>'[bend]'",
+      "\u5C4A>'[numerary adjunct for time]'",
+      "\u5C4B>'[house]'",
+      "\u5C4D>'[corpse]'",
+      "\u5C4E>'[excrement]'",
+      "\u5C4F>'[folding screen]'",
+      "\u5C50>'[wooden shoes]'",
+      "\u5C51>'[bits]'",
+      "\u5C53>'[gigantic strength]'",
+      "\u5C55>'[open]'",
+      "\u5C5E>'[class]'",
+      "\u5C60>'[butcher]'",
+      "\u5C61>'[frequently]'",
+      "\u5C64>'[storey]'",
+      "\u5C65>'[footwear]'",
+      "\u5C6C>'[class]'",
+      "\u5C6E>'[sprout]'",
+      "\u5C6F>'[village]'",
+      "\u5C71>'[mountain]'",
+      "\u5C76>'[lofty]'",
+      "\u5C79>'[to rise high]'",
+      "\u5C8C>'[perilous]'",
+      "\u5C90>'[high]'",
+      "\u5C91>'[steep]'",
+      "\u5C94>'[diverge]'",
+      "\u5CA1>'[ridge or crest of hill]'",
+      "\u5CA8>'[uneven]'",
+      "\u5CA9>'[cliff]'",
+      "\u5CAB>'[mountain peak]'",
+      "\u5CAC>'[cape]'",
+      "\u5CB1>'[daishan one of five sacred mount]'",
+      "\u5CB3>'[mountain peak]'",
+      //"\u5CB6>'[................................]'",
+      "\u5CB7>'[min mountain]'",
+      "\u5CB8>'[bank]'",
+      //"\u5CBA>'[mountain ridge]'",
+      //"\u5CBA>'[mountain ridge]'",
+      "\u5CBE>'[mountain pass (korean)]'",
+      //"\u5CC4>'[range of peaks]'",
+      "\u5CC7>'[cave]'",
+      "\u5CD9>'[stand erect]'",
+      "\u5CE0>'[mountain pass]'",
+      "\u5CE1>'[gorge]'",
+      "\u5CE8>'[lofty]'",
+      "\u5CE9>'[lofty]'",
+      "\u5CEA>'[valley]'",
+      "\u5CED>'[steep]'",
+      "\u5CEF>'[peak]'",
+      "\u5CF0>'[peak]'",
+      "\u5CF6>'[island]'",
+      //"\u5CFA>'[................................]'",
+      "\u5CFB>'[high]'",
+      "\u5CFD>'[gorge]'",
+      "\u5D07>'[esteem]'",
+      "\u5D0B>'[flowery]'",
+      "\u5D0E>'[rough]'",
+      "\u5D11>'[Kunlun mountains in Jiang Su province.]'",
+      "\u5D14>'[high]'",
+      "\u5D15>'[cliff]'",
+      "\u5D16>'[cliff]'",
+      "\u5D17>'[post]'",
+      "\u5D18>'[kunlun mountains in jiangsu]'",
+      "\u5D19>'[kunlun mountains in jiangsu]'",
+      "\u5D1A>'[hilly]'",
+      "\u5D1B>'[towering]'",
+      "\u5D1F>'[cliffs]'",
+      "\u5D22>'[high]'",
+      "\u5D29>'[rupture]'",
+      "\u5D4B>'[omei mountain in sichuan]'",
+      "\u5D4C>'[inlay]'",
+      "\u5D4E>'[mountain recess]'",
+      "\u5D50>'[mountain mist]'",
+      "\u5D52>'[cliff]'",
+      "\u5D5C>'[rough]'",
+      "\u5D69>'[high]'",
+      "\u5D6C>'[high]'",
+      "\u5D6F>'[high]'",
+      "\u5D73>'[high]'",
+      "\u5D76>'[low part of a mountain]'",
+      "\u5D82>'[cliff]'",
+      "\u5D84>'[high]'",
+      "\u5D87>'[steep]'",
+      "\u5D8B>'[island]'",
+      "\u5D8C>'[island]'",
+      //"\u5D90>'[................................]'",
+      "\u5D9D>'[path leading up a mountain]'",
+      "\u5DA2>'[high or tall]'",
+      //"\u5DAC>'[................................]'",
+      "\u5DAE>'[high]'",
+      "\u5DB7>'[range of mountains in hunan prov]'",
+      "\u5DBA>'[mountain ridge]'",
+      "\u5DBC>'[island]'",
+      "\u5DBD>'[mountain peak]'",
+      "\u5DC9>'[steep]'",
+      "\u5DCC>'[cliff]'",
+      "\u5DCD>'[high]'",
+      "\u5DD2>'[mountain range]'",
+      "\u5DD3>'[summit of mountain]'",
+      "\u5DD6>'[cliff]'",
+      "\u5DDB>'[river]'",
+      "\u5DDD>'[stream]'",
+      "\u5DDE>'[administrative division]'",
+      "\u5DE1>'[patrol]'",
+      "\u5DE3>'[nest]'",
+      "\u5DE5>'[labor]'",
+      "\u5DE6>'[left]'",
+      "\u5DE7>'[skillful]'",
+      "\u5DE8>'[large]'",
+      "\u5DEB>'[wizard]'",
+      "\u5DEE>'[differ]'",
+      "\u5DF1>'[self]'",
+      "\u5DF2>'[already]'",
+      "\u5DF3>'[sixth of twelve branches]'",
+      "\u5DF4>'[greatly desire]'",
+      "\u5DF5>'[measuring cup]'",
+      "\u5DF7>'[alley]'",
+      "\u5DFB>'[scroll]'",
+      "\u5DFD>'[5th of the 8 trigrams]'",
+      "\u5DFE>'[kerchief]'",
+      "\u5E02>'[market]'",
+      "\u5E03>'[cotton cloth]'",
+      "\u5E06>'[sail]'",
+      "\u5E0B>'[paper]'",
+      "\u5E0C>'[rare]'",
+      "\u5E11>'[a treasury]'",
+      "\u5E16>'[invitation card]'",
+      "\u5E19>'[book cover]'",
+      "\u5E1A>'[broom]'",
+      "\u5E1B>'[silks]'",
+      "\u5E1D>'[supreme ruler]'",
+      "\u5E25>'[commander]'",
+      "\u5E2B>'[teacher]'",
+      "\u5E2D>'[seat]'",
+      "\u5E2F>'[belt]'",
+      "\u5E30>'[return]'",
+      "\u5E33>'[tent]'",
+      "\u5E36>'[belt]'",
+      "\u5E37>'[tent]'",
+      "\u5E38>'[common]'",
+      "\u5E3D>'[hat]'",
+      "\u5E40>'[picture]'",
+      "\u5E43>'[curtain that forms wall]'",
+      "\u5E44>'[tent]'",
+      "\u5E45>'[piece]'",
+      "\u5E47>'[help]'",
+      "\u5E4C>'[curtain]'",
+      "\u5E4E>'[cover-cloth]'",
+      "\u5E54>'[curtain]'",
+      "\u5E55>'[curtain]'",
+      "\u5E57>'[women''s headgear]'",
+      "\u5E5F>'[flag]'",
+      "\u5E61>'[pennant]'",
+      "\u5E62>'[carriage curtain]'",
+      "\u5E63>'[currency]'",
+      "\u5E64>'[evil]'",
+      "\u5E72>'[oppose]'",
+      "\u5E73>'[flat]'",
+      "\u5E74>'[year]'",
+      "\u5E75>'[even level. to raise in both hands]'",
+      "\u5E76>'[combine]'",
+      "\u5E78>'[luck(ily)]'",
+      "\u5E79>'[trunk of tree or of human body]'",
+      "\u5E7A>'[one]'",
+      "\u5E7B>'[illusion]'",
+      "\u5E7C>'[infant]'",
+      "\u5E7D>'[quiet]'",
+      "\u5E7E>'[how many? how much? (a)few]'",
+      "\u5E7F>'[wide]'",
+      "\u5E81>'[hall]'",
+      "\u5E83>'[broad]'",
+      "\u5E84>'[village]'",
+      "\u5E87>'[cover]'",
+      "\u5E8A>'[bed]'",
+      "\u5E8F>'[series]'",
+      "\u5E95>'[bottom]'",
+      "\u5E96>'[kitchen]'",
+      "\u5E97>'[shop]'",
+      "\u5E9A>'[seventh of ten cyclical stems]'",
+      "\u5E9C>'[prefecture]'",
+      "\u5EA0>'[village school]'",
+      "\u5EA6>'[degree]'",
+      "\u5EA7>'[seat]'",
+      "\u5EAB>'[armory]'",
+      "\u5EAD>'[courtyard]'",
+      "\u5EB5>'[buddhist monastery or nunnery]'",
+      "\u5EB6>'[numerous]'",
+      "\u5EB7>'[peaceful]'",
+      "\u5EB8>'[usual]'",
+      "\u5EC1>'[toilet]'",
+      "\u5EC2>'[side-room]'",
+      "\u5EC3>'[abrogate]'",
+      "\u5EC8>'[big building]'",
+      "\u5EC9>'[upright]'",
+      "\u5ECA>'[corridor]'",
+      "\u5ECF>'[stable]'",
+      "\u5ED0>'[stable]'",
+      "\u5ED3>'[broad]'",
+      "\u5ED6>'[surname]'",
+      "\u5EDA>'[kitchen]'",
+      "\u5EDB>'[store]'",
+      "\u5EDD>'[servant]'",
+      "\u5EDF>'[temple]'",
+      "\u5EE0>'[factory]'",
+      "\u5EE1>'[corridor]'",
+      "\u5EE2>'[abrogate]'",
+      "\u5EE3>'[broad]'",
+      "\u5EE8>'[government office]'",
+      "\u5EE9>'[granary]'",
+      "\u5EEC>'[hut]'",
+      "\u5EF0>'[hall]'",
+      "\u5EF1>'[harmonious]'",
+      "\u5EF3>'[hall]'",
+      "\u5EF4>'[go]'",
+      "\u5EF6>'[delay]'",
+      "\u5EF7>'[court]'",
+      "\u5EF8>'[enlighten]'",
+      "\u5EFA>'[build]'",
+      "\u5EFB>'[circle around]'",
+      "\u5EFC>'[then]'",
+      "\u5EFE>'[two hands]'",
+      "\u5EFF>'[twenty]'",
+      "\u5F01>'[conical cap worn under zhou dyna]'",
+      "\u5F03>'[reject]'",
+      "\u5F04>'[do]'",
+      "\u5F09>'[large]'",
+      "\u5F0A>'[evil]'",
+      "\u5F0B>'[catch]'",
+      "\u5F0C>'[number one]'",
+      "\u5F0D>'[number two]'",
+      "\u5F0F>'[style]'",
+      "\u5F10>'[number two]'",
+      "\u5F11>'[to kill one''s superior]'",
+      "\u5F13>'[bow]'",
+      "\u5F14>'[condole]'",
+      "\u5F15>'[pull]'",
+      "\u5F16>'[phonetic for \"te\" (Japanese)]'",
+      "\u5F17>'[not]'",
+      "\u5F18>'[enlarge]'",
+      "\u5F1B>'[loosen]'",
+      "\u5F1F>'[young brother]'",
+      "\u5F25>'[extensive]'",
+      "\u5F26>'[string]'",
+      "\u5F27>'[wooden bow]'",
+      "\u5F29>'[cross-bow]'",
+      "\u5F2D>'[stop]'",
+      "\u5F2F>'[bend]'",
+      "\u5F31>'[weak]'",
+      "\u5F35>'[stretch]'",
+      "\u5F37>'[strong]'",
+      "\u5F38>'[bow stretched full]'",
+      "\u5F3C>'[aid]'",
+      //"\u5F3C>'[aid]'",
+      //"\u5F41>'[................................]'",
+      "\u5F48>'[pellet]'",
+      "\u5F4A>'[stubborn]'",
+      "\u5F4C>'[extensive]'",
+      "\u5F4E>'[bend]'",
+      "\u5F51>'[snout]'",
+      "\u5F53>'[bear]'",
+      "\u5F56>'[a hog]'",
+      "\u5F57>'[broomstick]'",
+      "\u5F59>'[collect]'",
+      "\u5F5C>'[yi]'",
+      "\u5F5D>'[yi]'",
+      "\u5F61>'[hair]'",
+      "\u5F62>'[form]'",
+      "\u5F66>'[elegant]'",
+      "\u5F69>'[hue]'",
+      "\u5F6A>'[tiger]'",
+      "\u5F6B>'[carve]'",
+      "\u5F6C>'[cultivated]'",
+      "\u5F6D>'[name of ancient country]'",
+      "\u5F70>'[clear]'",
+      "\u5F71>'[shadow]'",
+      "\u5F73>'[step with left foot]'",
+      "\u5F77>'[like]'",
+      "\u5F79>'[service]'",
+      "\u5F7C>'[that]'",
+      "\u5F7F>'[resembling]'",
+      "\u5F80>'[go]'",
+      "\u5F81>'[invade]'",
+      "\u5F82>'[go]'",
+      "\u5F83>'[go]'",
+      "\u5F84>'[narrow path]'",
+      "\u5F85>'[treat]'",
+      "\u5F87>'[comply with]'",
+      "\u5F88>'[very]'",
+      "\u5F8A>'[linger]'",
+      "\u5F8B>'[statute]'",
+      "\u5F8C>'[behind]'",
+      "\u5F90>'[slowly]'",
+      "\u5F91>'[narrow path]'",
+      "\u5F92>'[disciple]'",
+      "\u5F93>'[from]'",
+      "\u5F97>'[obtain]'",
+      "\u5F98>'[walk back and forth]'",
+      "\u5F99>'[move one''s abode]'",
+      "\u5F9E>'[from]'",
+      "\u5FA0>'[induce]'",
+      "\u5FA1>'[drive]'",
+      "\u5FA8>'[doubtful]'",
+      "\u5FA9>'[return]'",
+      "\u5FAA>'[obey]'",
+      "\u5FAD>'[conscript labor]'",
+      "\u5FAE>'[small]'",
+      "\u5FB3>'[virtue]'",
+      "\u5FB4>'[summon]'",
+      "\u5FB9>'[penetrate]'",
+      "\u5FBC>'[frontier]'",
+      "\u5FBD>'[a badge]'",
+      "\u5FC3>'[heart]'",
+      "\u5FC5>'[surely]'",
+      "\u5FCC>'[jealous]'",
+      "\u5FCD>'[endure]'",
+      "\u5FD6>'[guess]'",
+      "\u5FD7>'[purpose]'",
+      "\u5FD8>'[forget]'",
+      "\u5FD9>'[busy]'",
+      "\u5FDC>'[should]'",
+      "\u5FDD>'[disgrace]'",
+      "\u5FE0>'[loyalty]'",
+      "\u5FE4>'[insubordinate]'",
+      "\u5FEB>'[rapid]'",
+      "\u5FF0>'[suffer]'",
+      "\u5FF1>'[truth]'",
+      "\u5FF5>'[think of]'",
+      "\u5FF8>'[blush]'",
+      "\u5FFB>'[delightful]'",
+      "\u5FFD>'[suddenly]'",
+      "\u5FFF>'[get angry]'",
+      "\u600E>'[what? why? how?]'",
+      "\u600F>'[discontented]'",
+      //"\u6010>'[................................]'",
+      "\u6012>'[anger]'",
+      "\u6015>'[fear]'",
+      "\u6016>'[terror]'",
+      "\u6019>'[rely on]'",
+      "\u601B>'[grieved]'",
+      "\u601C>'[pity]'",
+      "\u601D>'[think]'",
+      "\u6020>'[idle]'",
+      "\u6021>'[harmony]'",
+      "\u6025>'[quick]'",
+      "\u6026>'[eager]'",
+      "\u6027>'[nature]'",
+      "\u6028>'[hatred]'",
+      "\u6029>'[shy]'",
+      "\u602A>'[strange]'",
+      "\u602B>'[sorry]'",
+      "\u602F>'[lacking in courage]'",
+      "\u6031>'[hastily]'",
+      "\u603A>'[to endure]'",
+      "\u6041>'[that]'",
+      "\u6042>'[careful]'",
+      "\u6043>'[rely on]'",
+      "\u6046>'[constant]'",
+      "\u604A>'[be united]'",
+      "\u604B>'[love]'",
+      "\u604D>'[seemingly]'",
+      "\u6050>'[fear]'",
+      "\u6052>'[constant]'",
+      "\u6055>'[forgive]'",
+      "\u6059>'[illness]'",
+      "\u605A>'[anger]'",
+      "\u605F>'[scared]'",
+      "\u6060>'[strange]'",
+      "\u6062>'[restore]'",
+      "\u6063>'[indulge oneself]'",
+      "\u6064>'[show pity]'",
+      "\u6065>'[shame]'",
+      "\u6068>'[hatred]'",
+      "\u6069>'[kindness]'",
+      "\u606A>'[respectful]'",
+      "\u606B>'[in pain]'",
+      "\u606C>'[quiet]'",
+      "\u606D>'[respectful]'",
+      "\u606F>'[rest]'",
+      "\u6070>'[just]'",
+      "\u6075>'[favor]'",
+      //"\u6076>'[evil]'",
+      "\u6081>'[irritable]'",
+      "\u6083>'[sincere]'",
+      "\u6084>'[silent]'",
+      "\u6089>'[know]'",
+      "\u608B>'[stingy]'",
+      "\u608C>'[brotherly]'",
+      "\u608D>'[courageous]'",
+      "\u6092>'[sorrowful]'",
+      "\u6094>'[repent]'",
+      "\u6096>'[be contradictory to]'",
+      //"\u6096>'[be contradictory to]'",
+      "\u609A>'[be afraid]'",
+      "\u609B>'[repent]'",
+      "\u609F>'[apprehend]'",
+      "\u60A0>'[long]'",
+      "\u60A3>'[suffer]'",
+      "\u60A6>'[pleased]'",
+      "\u60A7>'[smooth]'",
+      "\u60A9>'[angered]'",
+      "\u60AA>'[evil]'",
+      "\u60B2>'[sorrow]'",
+      "\u60B3>'[ethics]'",
+      "\u60B4>'[suffer]'",
+      "\u60B5>'[disappointed]'",
+      "\u60B6>'[gloomy]'",
+      "\u60B8>'[fearful]'",
+      "\u60BC>'[grieve]'",
+      "\u60BD>'[sorrowful]'",
+      "\u60C5>'[feeling]'",
+      "\u60C6>'[distressed]'",
+      "\u60C7>'[be kind]'",
+      "\u60D1>'[confuse]'",
+      "\u60D3>'[careful]'",
+      "\u60D8>'[disconcerted]'",
+      "\u60DA>'[absent-minded]'",
+      "\u60DC>'[pity]'",
+      "\u60DF>'[but]'",
+      "\u60E0>'[favor]'",
+      "\u60E1>'[evil]'",
+      "\u60E3>'[overall [questionable variant]]'",
+      "\u60E7>'[fear]'",
+      "\u60E8>'[sad]'",
+      "\u60F0>'[indolent]'",
+      "\u60F1>'[angered]'",
+      "\u60F3>'[think]'",
+      "\u60F4>'[afraid]'",
+      "\u60F6>'[fearful]'",
+      "\u60F7>'[wriggle]'",
+      "\u60F9>'[irritate]'",
+      "\u60FA>'[intelligent]'",
+      "\u60FB>'[feel anguish]'",
+      "\u6100>'[change one''s countenance]'",
+      "\u6101>'[anxiety]'",
+      "\u6103>'[relax]'",
+      "\u6106>'[fault]'",
+      "\u6108>'[more and more]'",
+      "\u6109>'[pleasant]'",
+      "\u610D>'[pity]'",
+      "\u610E>'[obstinate]'",
+      "\u610F>'[thought]'",
+      "\u6115>'[startled]'",
+      "\u611A>'[stupid]'",
+      "\u611B>'[love]'",
+      "\u611F>'[feel]'",
+      "\u6121>'[absent-minded]'",
+      "\u6127>'[ashamed]'",
+      "\u6128>'[sincerity]'",
+      "\u612C>'[accuse]'",
+      "\u6134>'[sad]'",
+      "\u613C>'[act with care]'",
+      "\u613D>'[gamble]'",
+      "\u613E>'[anger]'",
+      "\u613F>'[sincere]'",
+      "\u6142>'[urge]'",
+      "\u6144>'[shiver]'",
+      "\u6147>'[careful]'",
+      "\u6148>'[kind]'",
+      "\u614A>'[to resent]'",
+      "\u614B>'[manner]'",
+      "\u614C>'[nervous]'",
+      "\u614D>'[angry]'",
+      "\u614E>'[act with care]'",
+      //"\u6153>'[................................]'",
+      "\u6155>'[long for]'",
+      "\u6158>'[sad]'",
+      "\u6159>'[ashamed]'",
+      "\u615A>'[ashamed]'",
+      "\u615D>'[do evil in secret]'",
+      "\u615F>'[sadness]'",
+      "\u6162>'[slow(ly)]'",
+      "\u6163>'[habit]'",
+      "\u6165>'[sincere]'",
+      "\u6167>'[bright]'",
+      "\u6168>'[sigh]'",
+      "\u616B>'[to alarm]'",
+      "\u616E>'[be concerned]'",
+      //"\u616F>'[................................]'",
+      "\u6170>'[comfort]'",
+      "\u6171>'[sad]'",
+      "\u6173>'[miserly]'",
+      "\u6174>'[fear]'",
+      "\u6175>'[indolent]'",
+      "\u6176>'[congratulate]'",
+      "\u6177>'[ardent]'",
+      "\u617E>'[lust]'",
+      "\u6182>'[sad]'",
+      "\u6187>'[rest]'",
+      "\u618A>'[tired]'",
+      "\u618E>'[hate]'",
+      "\u6190>'[pity]'",
+      "\u6191>'[lean on]'",
+      "\u6194>'[be worn-out]'",
+      "\u6196>'[cautious]'",
+      "\u6199>'[like]'",
+      "\u619A>'[dread]'",
+      "\u61A4>'[resent]'",
+      "\u61A7>'[irresolute]'",
+      "\u61A9>'[rest]'",
+      "\u61AB>'[pity]'",
+      "\u61AC>'[rouse]'",
+      "\u61AE>'[regretful]'",
+      "\u61B2>'[constitution]'",
+      "\u61B6>'[remember]'",
+      "\u61BA>'[peace]'",
+      "\u61BE>'[regret]'",
+      "\u61C3>'[courteous]'",
+      "\u61C6>'[anxious]'",
+      "\u61C7>'[sincere]'",
+      "\u61C8>'[idle]'",
+      "\u61C9>'[should]'",
+      "\u61CA>'[vexed]'",
+      "\u61CB>'[splendid]'",
+      "\u61CC>'[enjoy]'",
+      "\u61CD>'[be afraid of]'",
+      "\u61D0>'[bosom]'",
+      "\u61E3>'[be sick at heart]'",
+      "\u61E6>'[weak]'",
+      "\u61F2>'[punish]'",
+      "\u61F4>'[regret]'",
+      "\u61F6>'[lazy]'",
+      "\u61F7>'[bosom]'",
+      "\u61F8>'[hang]'",
+      "\u61FA>'[regret]'",
+      "\u61FC>'[fear]'",
+      "\u61FD>'[happy]'",
+      "\u61FE>'[afraid]'",
+      "\u61FF>'[virtuous]'",
+      "\u6200>'[love]'",
+      "\u6208>'[halberd]'",
+      "\u6209>'[a battle-axe]'",
+      "\u620A>'[fifth of ten celestial stems]'",
+      "\u620C>'[eleventh of terrestrial branches]'",
+      "\u620D>'[defend borders]'",
+      "\u620E>'[arms]'",
+      "\u6210>'[completed]'",
+      "\u6211>'[our]'",
+      "\u6212>'[warn]'",
+      "\u6214>'[small]'",
+      "\u6216>'[or]'",
+      "\u621A>'[relative]'",
+      "\u621B>'[lance]'",
+      "\u621D>'[pirate]'",
+      "\u621E>'[lance]'",
+      "\u621F>'[halberd with crescent blade]'",
+      "\u6221>'[subjugate]'",
+      "\u6226>'[war]'",
+      "\u622A>'[cut off]'",
+      "\u622E>'[kill]'",
+      "\u622F>'[theatrical play]'",
+      "\u6230>'[war]'",
+      "\u6232>'[theatrical play]'",
+      "\u6233>'[prick]'",
+      "\u6234>'[wear on top]'",
+      "\u6238>'[door]'",
+      "\u623B>'[perverse]'",
+      "\u623F>'[house]'",
+      "\u6240>'[place]'",
+      "\u6241>'[flat]'",
+      "\u6247>'[fan]'",
+      "\u6248>'[escort]'",
+      "\u6249>'[door panel]'",
+      "\u624B>'[hand]'",
+      "\u624D>'[talent]'",
+      "\u624E>'[pull up]'",
+      "\u6253>'[strike]'",
+      "\u6255>'[shake off]'",
+      "\u6258>'[hold up with palm]'",
+      "\u625B>'[carry on shoulders]'",
+      "\u625E>'[ward off]'",
+      "\u6260>'[pick up with fork or pincers]'",
+      "\u6263>'[knock]'",
+      "\u6268>'[pick up with fork or pincers]'",
+      "\u626E>'[dress up]'",
+      "\u6271>'[collect]'",
+      "\u6276>'[support]'",
+      "\u6279>'[comment]'",
+      "\u627C>'[grasp]'",
+      "\u627E>'[search]'",
+      "\u627F>'[inherit]'",
+      "\u6280>'[skill]'",
+      //"\u6282>'[................................]'",
+      "\u6283>'[to clap hands]'",
+      "\u6284>'[copy]'",
+      "\u6289>'[choose]'",
+      "\u628A>'[hold]'",
+      "\u6291>'[press down]'",
+      "\u6292>'[express]'",
+      "\u6293>'[scratch]'",
+      "\u6294>'[take or hold up in both hands]'",
+      "\u6295>'[throw]'",
+      "\u6296>'[tremble]'",
+      "\u6297>'[resist]'",
+      "\u6298>'[break off]'",
+      "\u629B>'[throw (away)]'",
+      "\u629C>'[uproot]'",
+      "\u629E>'[select]'",
+      "\u62AB>'[wear]'",
+      "\u62AC>'[lift]'",
+      "\u62B1>'[embrace]'",
+      "\u62B5>'[resist]'",
+      "\u62B9>'[smear]'",
+      "\u62BB>'[pull]'",
+      "\u62BC>'[mortgage]'",
+      "\u62BD>'[draw out]'",
+      "\u62C2>'[shake off]'",
+      "\u62C5>'[carry]'",
+      "\u62C6>'[break up]'",
+      "\u62C7>'[thumb]'",
+      "\u62C8>'[pick up with fingers]'",
+      "\u62C9>'[pull]'",
+      "\u62CA>'[slap]'",
+      "\u62CC>'[mix]'",
+      "\u62CD>'[clap]'",
+      "\u62CF>'[take]'",
+      "\u62D0>'[kidnap]'",
+      "\u62D1>'[to clamp]'",
+      "\u62D2>'[ward off with hand]'",
+      "\u62D3>'[expand]'",
+      "\u62D4>'[uproot]'",
+      "\u62D7>'[obstinate]'",
+      "\u62D8>'[restrain]'",
+      "\u62D9>'[stupid]'",
+      "\u62DB>'[beckon]'",
+      "\u62DC>'[do obeisance]'",
+      "\u62DD>'[do obeisance]'",
+      "\u62E0>'[occupy]'",
+      "\u62E1>'[expand]'",
+      "\u62EC>'[include]'",
+      "\u62ED>'[wipe away stains with cloth]'",
+      "\u62EE>'[laboring hard]'",
+      "\u62EF>'[help]'",
+      "\u62F1>'[fold hands on breast]'",
+      "\u62F3>'[fist]'",
+      //"\u62F4>'[bind with rope]'",
+      "\u62F6>'[press]'",
+      "\u62F7>'[torture and interrogate]'",
+      "\u62FE>'[pick up]'",
+      "\u62FF>'[take]'",
+      "\u6301>'[sustain]'",
+      "\u6302>'[hang]'",
+      "\u6307>'[finger]'",
+      "\u6308>'[assist]'",
+      "\u6309>'[put hand on]'",
+      "\u630C>'[fight]'",
+      "\u6311>'[load carried on shoulders]'",
+      "\u6319>'[raise]'",
+      "\u631F>'[clasp under arm]'",
+      //"\u6325>'[direct]'",
+      "\u6328>'[near]'",
+      "\u632B>'[push down]'",
+      "\u632F>'[raise]'",
+      "\u633A>'[stand upright]'",
+      "\u633D>'[pull]'",
+      "\u633E>'[clasp under arm]'",
+      "\u633F>'[insert]'",
+      "\u6349>'[grasp]'",
+      "\u634C>'[break open]'",
+      "\u634D>'[ward off]'",
+      "\u634F>'[pick with fingers]'",
+      "\u6350>'[contribute]'",
+      "\u6355>'[arrest]'",
+      "\u6357>'[make progress]'",
+      "\u635C>'[search]'",
+      "\u6367>'[hold up in two hands]'",
+      "\u6368>'[discard]'",
+      "\u6369>'[twist with hands]'",
+      "\u636B>'[stoke]'",
+      "\u636E>'[occupy]'",
+      "\u6372>'[curl]'",
+      "\u6376>'[strike with stick]'",
+      "\u6377>'[win]'",
+      "\u637A>'[press down heavily with fringers]'",
+      "\u637B>'[twist with fingers]'",
+      "\u6380>'[lift]'",
+      "\u6383>'[sweep]'",
+      "\u6388>'[give to]'",
+      "\u6389>'[turn]'",
+      "\u638C>'[palm of hand]'",
+      "\u638E>'[drag aside]'",
+      "\u638F>'[take out]'",
+      "\u6392>'[row]'",
+      "\u6396>'[stick in]'",
+      "\u6398>'[dig]'",
+      "\u639B>'[hang]'",
+      //"\u639F>'[................................]'",
+      "\u63A0>'[rob]'",
+      "\u63A1>'[gather]'",
+      "\u63A2>'[find]'",
+      "\u63A3>'[drag]'",
+      "\u63A5>'[receive]'",
+      "\u63A7>'[accuse]'",
+      "\u63A8>'[push]'",
+      "\u63A9>'[cover]'",
+      "\u63AA>'[place]'",
+      "\u63AB>'[be on night watch]'",
+      "\u63AC>'[grasp with both hands]'",
+      //"\u63B1>'[pickpocket]'",
+      "\u63B4>'[box one''s ears]'",
+      //"\u63B4>'[box one''s ears]'",
+      "\u63BB>'[scratch lightly]'",
+      "\u63BE>'[a general designation of officials]'",
+      "\u63C0>'[choose]'",
+      "\u63C3>'[shear]'",
+      "\u63C4>'[lift]'",
+      "\u63C6>'[prime minister]'",
+      "\u63C9>'[rub]'",
+      "\u63CF>'[copy]'",
+      "\u63D0>'[hold in hand]'",
+      "\u63D2>'[insert]'",
+      "\u63D6>'[salute]'",
+      "\u63DA>'[scatter]'",
+      "\u63DB>'[change]'",
+      "\u63E1>'[grasp]'",
+      "\u63E3>'[put things under clothes]'",
+      "\u63E9>'[rub and wipe]'",
+      "\u63EE>'[direct]'",
+      "\u63F4>'[aid]'",
+      "\u63F6>'[make fun of]'",
+      "\u63FA>'[wag]'",
+      "\u6406>'[pull]'",
+      "\u640D>'[diminish]'",
+      "\u640F>'[seize]'",
+      "\u6413>'[trample]'",
+      "\u6416>'[wag]'",
+      "\u6417>'[hull]'",
+      "\u641C>'[search]'",
+      "\u6426>'[grasp]'",
+      "\u6428>'[rub]'",
+      "\u642C>'[transfer]'",
+      "\u642D>'[join together]'",
+      "\u6434>'[extract]'",
+      "\u6436>'[plunder]'",
+      "\u643A>'[lead by hand]'",
+      "\u643E>'[press]'",
+      "\u6442>'[take in]'",
+      "\u644E>'[to strangle]'",
+      "\u6458>'[pluck]'",
+      "\u6467>'[destroy]'",
+      "\u6469>'[rub]'",
+      "\u646F>'[sincere]'",
+      "\u6476>'[roll around with hand]'",
+      "\u6478>'[gently touch with hand]'",
+      "\u647A>'[fold]'",
+      "\u6483>'[strike]'",
+      "\u6488>'[scoop out of water]'",
+      "\u6492>'[release]'",
+      "\u6493>'[scratch]'",
+      "\u6495>'[rip]'",
+      "\u649A>'[twirl in fingers]'",
+      "\u649E>'[knock against]'",
+      "\u64A4>'[omit]'",
+      "\u64A5>'[move]'",
+      "\u64A9>'[lift up]'",
+      "\u64AB>'[pat]'",
+      "\u64AD>'[sow]'",
+      "\u64AE>'[little bit]'",
+      "\u64B0>'[compose]'",
+      "\u64B2>'[pound]'",
+      "\u64B9>'[disturb]'",
+      "\u64BB>'[flog]'",
+      "\u64BC>'[move]'",
+      "\u64C1>'[embrace]'",
+      "\u64C2>'[rub]'",
+      "\u64C5>'[monopolize]'",
+      "\u64C7>'[select]'",
+      "\u64CD>'[conduct]'",
+      "\u64D2>'[catch]'",
+      "\u64D4>'[carry]'",
+      "\u64D8>'[thumb]'",
+      "\u64DA>'[occupy]'",
+      "\u64E0>'[crowd]'",
+      "\u64E1>'[carry]'",
+      "\u64E2>'[pull up]'",
+      "\u64E3>'[hull]'",
+      "\u64E6>'[wipe]'",
+      "\u64E7>'[raise]'",
+      "\u64EC>'[draft]'",
+      "\u64EF>'[exclude]'",
+      "\u64F1>'[place]'",
+      "\u64F2>'[throw]'",
+      "\u64F4>'[expand]'",
+      //"\u64F6>'[................................]'",
+      "\u64FA>'[put]'",
+      "\u64FD>'[tickle]'",
+      "\u64FE>'[disturb]'",
+      "\u6500>'[climb]'",
+      "\u6505>'[save]'",
+      "\u6518>'[seize]'",
+      "\u651C>'[lead by hand]'",
+      "\u651D>'[take in]'",
+      "\u6523>'[tangled]'",
+      "\u6524>'[spread out]'",
+      "\u652A>'[disturb]'",
+      "\u652B>'[snatch away]'",
+      "\u652C>'[grasp]'",
+      "\u652F>'[disperse]'",
+      "\u6534>'[rap]'",
+      "\u6535>'[rap]'",
+      "\u6536>'[gather together]'",
+      "\u6537>'[examine]'",
+      "\u6538>'[distant]'",
+      "\u6539>'[change]'",
+      "\u653B>'[attack]'",
+      "\u653E>'[put]'",
+      "\u653F>'[government]'",
+      "\u6545>'[ancient]'",
+      "\u6548>'[result]'",
+      "\u654D>'[express]'",
+      "\u654F>'[fast]'",
+      "\u6551>'[save]'",
+      "\u6555>'[an imperial order or decree]'",
+      "\u6556>'[ramble]'",
+      "\u6557>'[be defeated]'",
+      "\u6558>'[express]'",
+      "\u6559>'[teach]'",
+      "\u655D>'[break]'",
+      "\u655E>'[roomy]'",
+      "\u6562>'[dare]'",
+      "\u6563>'[scatter]'",
+      "\u6566>'[esteem]'",
+      "\u656C>'[respect]'",
+      "\u6570>'[number]'",
+      "\u6572>'[strike]'",
+      "\u6574>'[orderly]'",
+      "\u6575>'[enemy]'",
+      "\u6577>'[spread]'",
+      "\u6578>'[number]'",
+      "\u6582>'[draw back]'",
+      "\u6583>'[kill]'",
+      "\u6587>'[literature]'",
+      "\u6588>'[learning]'",
+      "\u6589>'[even]'",
+      "\u658C>'[refined]'",
+      "\u658E>'[vegetarian diet]'",
+      "\u6590>'[graceful]'",
+      "\u6591>'[mottled]'",
+      "\u6597>'[chinese peck]'",
+      "\u6599>'[consider]'",
+      "\u659B>'[dry measure 10 or 5 times of dou]'",
+      "\u659C>'[slanting]'",
+      "\u659F>'[pour wine or tea into cup]'",
+      "\u65A1>'[revolve]'",
+      "\u65A4>'[catty]'",
+      "\u65A5>'[scold]'",
+      "\u65A7>'[axe]'",
+      "\u65AB>'[cut]'",
+      "\u65AC>'[cut]'",
+      "\u65AD>'[sever]'",
+      "\u65AF>'[this]'",
+      "\u65B0>'[new]'",
+      "\u65B7>'[sever]'",
+      "\u65B9>'[square]'",
+      "\u65BC>'[in]'",
+      "\u65BD>'[grant]'",
+      "\u65C1>'[side]'",
+      "\u65C3>'[silk banner with bent pole]'",
+      "\u65C4>'[a kind of ancient flag]'",
+      "\u65C5>'[trip]'",
+      "\u65C6>'[flag ornament]'",
+      "\u65CB>'[revolve]'",
+      "\u65CC>'[banner or flag adorned with feat]'",
+      "\u65CF>'[family clan]'",
+      "\u65D2>'[fringes of pearls on crowns]'",
+      "\u65D7>'[banner]'",
+      "\u65D9>'[a pennant]'",
+      "\u65DB>'[a pennant]'",
+      "\u65E0>'[negative]'",
+      "\u65E1>'[choke on something eaten]'",
+      "\u65E2>'[already]'",
+      "\u65E5>'[sun]'",
+      "\u65E6>'[dawn]'",
+      "\u65E7>'[old]'",
+      "\u65E8>'[purpose]'",
+      "\u65E9>'[early]'",
+      "\u65EC>'[ten-day period]'",
+      "\u65ED>'[rising sun]'",
+      "\u65F1>'[drought]'",
+      "\u65FA>'[prosper]'",
+      "\u65FB>'[heaven]'",
+      "\u6602>'[rise]'",
+      "\u6603>'[afternoon]'",
+      "\u6606>'[elder brother]'",
+      "\u6607>'[rise]'",
+      "\u660A>'[summer time]'",
+      "\u660C>'[light of sun]'",
+      "\u660E>'[bright]'",
+      "\u660F>'[dusk]'",
+      "\u6613>'[change]'",
+      "\u6614>'[formerly]'",
+      "\u661C>'[to open out]'",
+      "\u661F>'[star]'",
+      "\u6620>'[project]'",
+      "\u6625>'[spring]'",
+      "\u6627>'[obscure]'",
+      "\u6628>'[yesterday]'",
+      "\u662D>'[bright]'",
+      "\u662F>'[indeed]'",
+      "\u6634>'[one of the 28 constellations]'",
+      "\u6635>'[intimate]'",
+      "\u6636>'[a long day. bright. extended. clear]'",
+      "\u663C>'[daytime]'",
+      "\u663F>'[extensive]'",
+      "\u6641>'[morning]'",
+      "\u6642>'[time]'",
+      "\u6643>'[bright]'",
+      "\u6644>'[bright]'",
+      "\u6649>'[advance]'",
+      "\u664B>'[advance]'",
+      "\u664F>'[peaceful]'",
+      "\u6652>'[dry in sun]'",
+      "\u665D>'[daytime]'",
+      "\u665E>'[dry]'",
+      "\u665F>'[clear]'",
+      "\u6662>'[light of stars]'",
+      "\u6664>'[have interview with]'",
+      "\u6666>'[dark]'",
+      "\u6667>'[daybreak]'",
+      "\u6668>'[early morning]'",
+      "\u6669>'[night]'",
+      "\u666E>'[universal]'",
+      "\u666F>'[scenery]'",
+      "\u6670>'[clear]'",
+      "\u6674>'[clear weather]'",
+      "\u6676>'[crystal]'",
+      "\u667A>'[wisdom]'",
+      "\u6681>'[dawn]'",
+      //"\u6682>'[temporary]'",
+      "\u6684>'[warm]'",
+      "\u6687>'[leisure]'",
+      "\u6688>'[halo in sky]'",
+      "\u6689>'[sunshine]'",
+      "\u668E>'[sun beginning decline]'",
+      "\u6691>'[hot]'",
+      "\u6696>'[warm]'",
+      "\u6697>'[dark]'",
+      "\u6698>'[rising sun]'",
+      "\u669D>'[dark]'",
+      "\u66A2>'[smoothly]'",
+      "\u66A6>'[calendar]'",
+      "\u66AB>'[temporary]'",
+      "\u66AE>'[evening]'",
+      "\u66B4>'[violent]'",
+      "\u66B8>'[bright]'",
+      "\u66B9>'[rise]'",
+      "\u66BC>'[take fleeting glance at]'",
+      "\u66BE>'[morning sun]'",
+      "\u66C1>'[and]'",
+      "\u66C4>'[bright]'",
+      "\u66C7>'[become cloudy]'",
+      "\u66C9>'[dawn]'",
+      "\u66D6>'[obscure]'",
+      "\u66D9>'[bright]'",
+      "\u66DA>'[twilight just before sun rises]'",
+      "\u66DC>'[glorious]'",
+      "\u66DD>'[sun]'",
+      "\u66E0>'[extensive]'",
+      "\u66E6>'[sunlight]'",
+      "\u66E9>'[in ancient times]'",
+      "\u66F0>'[say]'",
+      "\u66F2>'[crooked]'",
+      "\u66F3>'[trail]'",
+      "\u66F4>'[more]'",
+      "\u66F5>'[trail]'",
+      "\u66F7>'[why? what? where?]'",
+      "\u66F8>'[book]'",
+      "\u66F9>'[ministry officials]'",
+      "\u66FC>'[long]'",
+      "\u66FD>'[already]'",
+      "\u66FE>'[already]'",
+      "\u66FF>'[change]'",
+      "\u6700>'[most]'",
+      "\u6703>'[assemble]'",
+      "\u6708>'[moon]'",
+      "\u6709>'[have]'",
+      "\u670B>'[friend]'",
+      "\u670D>'[clothes]'",
+      "\u670F>'[light of crescent moon]'",
+      "\u6714>'[first day of lunar month]'",
+      "\u6715>'['pronoun \"i\"']'",
+      "\u6716>'[clear]'",
+      "\u6717>'[clear]'",
+      "\u671B>'[look at or forward]'",
+      "\u671D>'[dynasty]'",
+      "\u671E>'[full year]'",
+      "\u671F>'[period of time]'",
+      "\u6726>'[condition or appearance of moon]'",
+      "\u6727>'[condition or appearance of moon]'",
+      "\u6728>'[tree]'",
+      "\u672A>'[not yet]'",
+      "\u672B>'[final]'",
+      "\u672C>'[root]'",
+      "\u672D>'[letter]'",
+      "\u672E>'[skill]'",
+      "\u6731>'[cinnabar]'",
+      "\u6734>'[simple]'",
+      "\u6736>'[cluster of flowers]'",
+      //"\u6736>'[cluster of flowers]'",
+      //"\u6736>'[cluster of flowers]'",
+      "\u673A>'[desk]'",
+      "\u673D>'[decayed]'",
+      "\u673F>'[stab]'",
+      //"\u6740>'[kill]'",
+      "\u6746>'[pole]'",
+      "\u6749>'[various species of pine and fir]'",
+      "\u674E>'[plum]'",
+      "\u674F>'[apricot]'",
+      "\u6750>'[material]'",
+      "\u6751>'[village]'",
+      "\u6753>'[handle of cup]'",
+      "\u6756>'[cane]'",
+      "\u6759>'[a tiny wooden post]'",
+      "\u675C>'[stop]'",
+      "\u675E>'[willow]'",
+      "\u675F>'[bind]'",
+      "\u6760>'[lever]'",
+      "\u6761>'[clause]'",
+      "\u6762>'[woodworker]'",
+      //"\u6762>'[woodworker]'",
+      "\u6764>'[type of oak]'",
+      "\u6765>'[come]'",
+      "\u676A>'[tip of twig]'",
+      "\u676D>'[cross stream]'",
+      "\u676F>'[cup]'",
+      "\u6770>'[hero]'",
+      "\u6771>'[east]'",
+      "\u6772>'[bright sun]'",
+      "\u6773>'[obscure]'",
+      "\u6775>'[pestle]'",
+      "\u6777>'[loquat]'",
+      "\u677C>'[shuttle of loom]'",
+      "\u677E>'[pine tree]'",
+      "\u677F>'[plank]'",
+      //"\u6785>'[................................]'",
+      "\u6787>'[loquat]'",
+      "\u6789>'[useless]'",
+      "\u678B>'[sandalwood]'",
+      "\u678C>'[variety of elm with small seeds]'",
+      "\u6790>'[split wood]'",
+      "\u6795>'[pillow]'",
+      "\u6797>'[forest]'",
+      "\u679A>'[stalk of shrub]'",
+      "\u679C>'[fruit]'",
+      "\u679D>'[branches]'",
+      //"\u679F>'[wood streaks]'",
+      //"\u679F>'[wood streaks]'",
+      "\u67A2>'[door hinge]'",
+      //"\u67A6>'[................................]'",
+      "\u67A9>'[pine tree]'",
+      "\u67AF>'[dried out]'",
+      "\u67B3>'[trifoliate orange]'",
+      "\u67B4>'[cane]'",
+      "\u67B6>'[rack]'",
+      "\u67B7>'[cangue scaffold]'",
+      "\u67B8>'[kind of aspen found in sichuan]'",
+      "\u67B9>'[drumstick]'",
+      "\u67C1>'[large tie-beams]'",
+      "\u67C4>'[handle]'",
+      //"\u67C6>'[................................]'",
+      //"\u67C8>'[container]'",
+      "\u67CE>'[calyx of flower]'",
+      "\u67CF>'[cypress]'",
+      "\u67D0>'[certain thing or person]'",
+      "\u67D1>'[tangerine]'",
+      "\u67D3>'[dye]'",
+      "\u67D4>'[soft]'",
+      "\u67D8>'[a thorny tree]'",
+      "\u67DA>'[pumelo]'",
+      "\u67DD>'[watchman''s rattle]'",
+      "\u67DE>'[oak]'",
+      "\u67E2>'[root]'",
+      "\u67E4>'[hawthorn]'",
+      //"\u67E7>'[................................]'",
+      "\u67E9>'[coffin which contains corpse]'",
+      "\u67EC>'[letter]'",
+      "\u67EE>'[flat pieces of wood]'",
+      "\u67EF>'[axe-handle]'",
+      "\u67F1>'[pillar]'",
+      "\u67F3>'[willow tree]'",
+      "\u67F4>'[firewood]'",
+      "\u67F5>'[fence]'",
+      "\u67FB>'[investigate]'",
+      "\u67FE>'[straight grain]'",
+      "\u67FF>'[persimmon]'",
+      "\u6802>'[a kind of evergreen tree]'",
+      "\u6803>'[type of oak]'",
+      "\u6804>'[glory]'",
+      "\u6813>'[wooden peg]'",
+      "\u6816>'[perch]'",
+      "\u6817>'[chestnut tree]'",
+      "\u681E>'[publication]'",
+      "\u6821>'[school]'",
+      "\u6822>'[cypress]'",
+      "\u6829>'[species of oak]'",
+      "\u682A>'[numerary adjunct for trees]'",
+      "\u682B>'[fence]'",
+      "\u6832>'[mangrove]'",
+      "\u6834>'[sandalwood]'",
+      "\u6838>'[seed]'",
+      "\u6839>'[root]'",
+      "\u683C>'[pattern]'",
+      "\u683D>'[cultivate]'",
+      "\u6840>'[chicken roost]'",
+      "\u6841>'[cross-beams of roof]'",
+      "\u6842>'[cassia or cinnamon]'",
+      "\u6843>'[peach]'",
+      "\u6846>'[frame]'",
+      "\u6848>'[table]'",
+      //"\u684D>'[................................]'",
+      "\u684E>'[fetters]'",
+      "\u6850>'[name applied various trees]'",
+      "\u6851>'[mulberry tree]'",
+      "\u6853>'[variety of tree]'",
+      "\u6854>'[chinese bellflower]'",
+      //"\u6859>'[................................]'",
+      "\u685C>'[cherry]'",
+      "\u685D>'[................]'",
+      //"\u685D>'[................]'",
+      "\u6863>'[shelf]'",
+      "\u6867>'[chinese cypress]'",
+      "\u6874>'[raft]'",
+      "\u6876>'[pail]'",
+      "\u6877>'[rafter]'",
+      //"\u687E>'[................................]'",
+      "\u687F>'[pole]'",
+      "\u6881>'[bridge]'",
+      "\u6883>'[a club]'",
+      "\u6885>'[plums]'",
+      "\u688D>'[tree name]'",
+      "\u688F>'[handcuffs]'",
+      "\u6893>'[catalpa ovata]'",
+      "\u6894>'[gardenia]'",
+      "\u6897>'[stem of flower]'",
+      //"\u6898>'[bamboo tube]'",
+      "\u689D>'[clause]'",
+      "\u689F>'[owl thus]'",
+      "\u68A0>'[small beam supporting rafters at]'",
+      "\u68A2>'[pointed tip of something long like a branch]'",
+      "\u68A6>'[dream]'",
+      "\u68A7>'[sterculia platanifolia]'",
+      "\u68A8>'[pear]'",
+      "\u68AD>'[weaver''s shuttle]'",
+      "\u68AF>'[ladder]'",
+      "\u68B0>'[weapons]'",
+      "\u68B1>'[doorsill]'",
+      "\u68B3>'[comb]'",
+      "\u68B5>'[buddhist]'",
+      "\u68B6>'[oar]'",
+      "\u68B9>'[the areca-nut]'",
+      //"\u68B9>'[the areca-nut]'",
+      "\u68BC>'[block of wood]'",
+      "\u68C4>'[reject]'",
+      //"\u68C6>'[................................]'",
+      "\u68C9>'[cotton]'",
+      "\u68CA>'[chess]'",
+      "\u68CB>'[chess]'",
+      "\u68CD>'[stick]'",
+      "\u68D2>'[stick]'",
+      //"\u68D4>'[................................]'",
+      "\u68D5>'[hemp palm]'",
+      "\u68D7>'[date tree]'",
+      "\u68D8>'[jujube tree]'",
+      "\u68DA>'[tent]'",
+      "\u68DF>'[main beams supporting house]'",
+      "\u68E0>'[crab apple tree]'",
+      //"\u68E1>'[................................]'",
+      "\u68E3>'[kerria japonica plant]'",
+      "\u68E7>'[warehouse]'",
+      "\u68EE>'[forest]'",
+      "\u68EF>'[jujube tree]'",
+      "\u68F2>'[perch]'",
+      "\u68F9>'[oar]'",
+      "\u68FA>'[coffin]'",
+      "\u6900>'[bowl]'",
+      "\u6901>'[outer-coffin]'",
+      "\u6904>'[to graft]'",
+      "\u6905>'[chair]'",
+      "\u6908>'[cedar]'",
+      "\u690B>'[fruit]'",
+      "\u690C>'[instrument]'",
+      "\u690D>'[plant]'",
+      "\u690E>'[hammer]'",
+      "\u690F>'[the forking branch of a tree]'",
+      "\u6912>'[pepper]'",
+      //"\u6913>'[strike]'",
+      //"\u691A>'[................................]'",
+      "\u691B>'[type of birch]'",
+      "\u691C>'[check]'",
+      //"\u6921>'[................................]'",
+      //"\u6922>'[................................]'",
+      //"\u6923>'[................................]'",
+      //"\u6925>'[................................]'",
+      //"\u6926>'[................................]'",
+      //"\u6928>'[................................]'",
+      "\u692A>'[machilus nanmu]'",
+      "\u6930>'[palm tree]'",
+      "\u6934>'[poplar]'",
+      "\u6936>'[palm tree]'",
+      "\u6939>'[a chopping board]'",
+      "\u693D>'[beams]'",
+      "\u693F>'[father]'",
+      "\u694A>'[willow]'",
+      "\u6953>'[maple tree]'",
+      "\u6954>'[wedge]'",
+      "\u6955>'[oval-shaped]'",
+      "\u6959>'[name of plant]'",
+      "\u695A>'[name of feudal state]'",
+      //"\u695C>'[................................]'",
+      "\u695D>'[melia japonica]'",
+      "\u695E>'[used for ceylon in buddhist text]'",
+      "\u6960>'[name of tree]'",
+      "\u6961>'[elm tree]'",
+      "\u6962>'[tinder]'",
+      "\u696A>'[small dish]'",
+      "\u696B>'[oar]'",
+      "\u696D>'[profession]'",
+      "\u696E>'[mulberry]'",
+      "\u696F>'[shield]'",
+      "\u6973>'[plums]'",
+      //"\u6974>'[................................]'",
+      "\u6975>'[extreme]'",
+      "\u6977>'[model style of chinese writing]'",
+      "\u6978>'[mallotus japonicus]'",
+      "\u6979>'[column]'",
+      "\u697C>'[building of two or more stories]'",
+      "\u697D>'[happy]'",
+      //"\u697D>'[happy]'",
+      //"\u6980>'[[not found in dictionary]]'",
+      "\u6982>'[generally]'",
+      //"\u6989>'[type of elm]'",
+      "\u698E>'[small evergreen shrub]'",
+      //"\u6991>'[................................]'",
+      "\u6994>'[betel-nut tree]'",
+      "\u6995>'[banyan tree]'",
+      "\u699B>'[hazelnut]'",
+      "\u699C>'[placard]'",
+      //"\u69A0>'[................................]'",
+      "\u69A7>'[type of yew]'",
+      "\u69AE>'[glory]'",
+      "\u69B1>'[rafter]'",
+      "\u69B2>'[pillar]'",
+      "\u69B4>'[pomegranate]'",
+      "\u69BB>'[cot]'",
+      "\u69BE>'[pieces of wood]'",
+      "\u69BF>'[alder]'",
+      "\u69C1>'[wither]'",
+      "\u69C3>'[tray]'",
+      "\u69C7>'[tip of a tree]'",
+      "\u69CA>'[spear]'",
+      "\u69CB>'[frame]'",
+      "\u69CC>'[hammer]'",
+      "\u69CD>'[spear]'",
+      "\u69CE>'[raft]'",
+      "\u69D0>'[locust tree]'",
+      "\u69D3>'[lever]'",
+      "\u69D8>'[shape]'",
+      //"\u69D8>'[shape]'",
+      //"\u69DB>'[threshold]'",
+      //"\u69DB>'[threshold]'",
+      "\u69E7>'[wooden tablet]'",
+      "\u69E8>'[outer-coffin]'",
+      //"\u69EB>'[................................]'",
+      "\u69ED>'[maple]'",
+      "\u69F2>'[type of oak]'",
+      "\u69F9>'[spar]'",
+      "\u69FB>'[zelkova tree]'",
+      "\u69FD>'[trough]'",
+      "\u69FF>'[hibiscus]'",
+      "\u6A02>'[happy]'",
+      "\u6A05>'[fir tree]'",
+      "\u6A0A>'[a railing]'",
+      "\u6A0B>'[tree name]'",
+      //"\u6A0C>'[................................]'",
+      //"\u6A12>'[................................]'",
+      "\u6A13>'[building of two or more stories]'",
+      //"\u6A13>'[building of two or more stories]'",
+      "\u6A17>'[kind of tree with useless timber]'",
+      "\u6A19>'[mark]'",
+      "\u6A1B>'[bending branches]'",
+      "\u6A1E>'[door hinge]'",
+      "\u6A1F>'[camphor tree]'",
+      "\u6A21>'[model]'",
+      //"\u6A22>'[................................]'",
+      "\u6A23>'[shape]'",
+      "\u6A29>'[power]'",
+      "\u6A2A>'[across]'",
+      //"\u6A2A>'[across]'",
+      //"\u6A2A>'[across]'",
+      "\u6A35>'[woodcutter]'",
+      "\u6A36>'[c]'",
+      "\u6A38>'[simple]'",
+      "\u6A39>'[tree]'",
+      "\u6A3A>'[type of birch]'",
+      "\u6A3D>'[goblet]'",
+      "\u6A44>'[olive]'",
+      "\u6A47>'[a sledge for transportation]'",
+      "\u6A48>'[bent or twisted piece of wood]'",
+      "\u6A4B>'[bridge]'",
+      "\u6A58>'[orange]'",
+      "\u6A59>'[orange]'",
+      "\u6A5F>'[machine]'",
+      "\u6A61>'[chestnut oak]'",
+      "\u6A62>'[oval-shaped]'",
+      "\u6A66>'[tree]'",
+      //"\u6A71>'[cabinet]'",
+      //"\u6A75>'[wood placed under roof tiles]'",
+      //"\u6A7F>'[................................]'",
+      "\u6A80>'[sandalwood]'",
+      "\u6A84>'[call arms]'",
+      "\u6A8D>'[ilex]'",
+      "\u6A8E>'[small red apple]'",
+      "\u6A90>'[eaves of house]'",
+      "\u6A97>'[tree]'",
+      "\u6A9C>'[chinese cypress]'",
+      "\u6AA0>'[stand for lamp]'",
+      "\u6AA2>'[check]'",
+      "\u6AA3>'[mast]'",
+      "\u6AAA>'[chestnut-leaved oak]'",
+      "\u6AAC>'[type of locust oracacia]'",
+      "\u6AAE>'[block of wood]'",
+      "\u6AB3>'[betelnut]'",
+      "\u6AB8>'[lemon]'",
+      "\u6ABB>'[threshold]'",
+      //"\u6AC1>'[................................]'",
+      "\u6AC2>'[oar]'",
+      "\u6AC3>'[cupboard]'",
+      //"\u6AD1>'[................................]'",
+      "\u6AD3>'[oar]'",
+      "\u6ADA>'[palm]'",
+      "\u6ADB>'[comb out]'",
+      "\u6ADE>'[citrus]'",
+      "\u6ADF>'[chestnut-leaved oak]'",
+      "\u6AE8>'[supporting block]'",
+      "\u6AEA>'[type of oak]'",
+      "\u6AFA>'[carved or patterned window sills]'",
+      "\u6AFB>'[cherry]'",
+      "\u6B04>'[railing]'",
+      "\u6B05>'[zelkova]'",
+      "\u6B0A>'[power]'",
+      "\u6B12>'[name of tree]'",
+      "\u6B16>'[olive]'",
+      "\u6B1D>'[luxuriant]'",
+      //"\u6B1E>'[the lattice of a window a sill]'",
+      "\u6B20>'[owe]'",
+      "\u6B21>'[order]'",
+      "\u6B23>'[happy]'",
+      "\u6B27>'[translit.: europe]'",
+      "\u6B32>'[desire]'",
+      "\u6B37>'[sob]'",
+      "\u6B38>'[sighs]'",
+      "\u6B39>'[fierce dog]'",
+      "\u6B3A>'[cheat]'",
+      "\u6B3D>'[respect]'",
+      "\u6B3E>'[item]'",
+      "\u6B43>'[smear one''s mouth with blood of a victim when taking an oath]'",
+      "\u6B47>'[rest]'",
+      "\u6B49>'[deficient]'",
+      "\u6B4C>'[song]'",
+      "\u6B4E>'[sigh]'",
+      "\u6B50>'[translit.: europe]'",
+      "\u6B53>'[happy]'",
+      "\u6B54>'[blow through nose]'",
+      "\u6B59>'[to suck]'",
+      "\u6B5B>'[draw back]'",
+      "\u6B5F>'[final particle used express ques]'",
+      "\u6B61>'[happy]'",
+      "\u6B62>'[stop]'",
+      "\u6B63>'[right]'",
+      "\u6B64>'[this]'",
+      "\u6B66>'[military]'",
+      "\u6B69>'[step]'",
+      "\u6B6A>'[slant]'",
+      "\u6B6F>'[teeth]'",
+      "\u6B73>'[year]'",
+      "\u6B74>'[take place]'",
+      "\u6B78>'[return]'",
+      "\u6B79>'[bad]'",
+      "\u6B7B>'[die]'",
+      "\u6B7F>'[die]'",
+      "\u6B80>'[die young]'",
+      "\u6B83>'[misfortune]'",
+      "\u6B84>'[to end]'",
+      "\u6B86>'[dangerous]'",
+      "\u6B89>'[die for cause]'",
+      "\u6B8A>'[different]'",
+      "\u6B8B>'[injure]'",
+      "\u6B8D>'[to starve to death]'",
+      "\u6B95>'[[not found in dictionary]]'",
+      "\u6B96>'[breed]'",
+      "\u6B98>'[injure]'",
+      "\u6B9E>'[die]'",
+      "\u6BA4>'[die young]'",
+      "\u6BAA>'[die]'",
+      "\u6BAB>'[utmost]'",
+      "\u6BAF>'[encoffin]'",
+      "\u6BB1>'[annihilate]'",
+      "\u6BB2>'[annihilate]'",
+      "\u6BB3>'[name of old weapon]'",
+      "\u6BB4>'[beat]'",
+      "\u6BB5>'[section]'",
+      "\u6BB7>'[many]'",
+      "\u6BBA>'[kill]'",
+      "\u6BBB>'[casing]'",
+      "\u6BBC>'[casing]'",
+      "\u6BBF>'[hall]'",
+      "\u6BC0>'[destroy]'",
+      "\u6BC5>'[resolute]'",
+      "\u6BC6>'[beat]'",
+      "\u6BCB>'[do not]'",
+      "\u6BCD>'[mother]'",
+      "\u6BCE>'[every]'",
+      "\u6BD2>'[poison]'",
+      "\u6BD3>'[give birth to]'",
+      "\u6BD4>'[compare]'",
+      "\u6BD8>'[help]'",
+      "\u6BDB>'[hair]'",
+      //"\u6BDF>'[................................]'",
+      "\u6BEB>'[fine hair]'",
+      "\u6BEC>'[ball]'",
+      "\u6BEF>'[rug]'",
+      "\u6BF3>'[fine hair or fur on animals]'",
+      "\u6C08>'[felt]'",
+      "\u6C0F>'[clan]'",
+      "\u6C11>'[people]'",
+      "\u6C13>'[people]'",
+      "\u6C14>'[steam]'",
+      "\u6C17>'[air]'",
+      "\u6C1B>'[gas]'",
+      "\u6C23>'[air]'",
+      "\u6C24>'[hanging fog]'",
+      "\u6C34>'[water]'",
+      "\u6C37>'[ice]'",
+      "\u6C38>'[long]'",
+      "\u6C3E>'[overflow]'",
+      "\u6C40>'[sandbar]'",
+      "\u6C41>'[juice]'",
+      "\u6C42>'[seek]'",
+      "\u6C4E>'[float]'",
+      "\u6C50>'[night tides]'",
+      "\u6C55>'[basket for catching fish]'",
+      "\u6C57>'[perspiration]'",
+      "\u6C5A>'[filthy]'",
+      "\u6C5D>'[you]'",
+      "\u6C5E>'[element mercury]'",
+      "\u6C5F>'[large river]'",
+      "\u6C60>'[pool]'",
+      //"\u6C62>'[................................]'",
+      "\u6C68>'[Mi(luo) river in hunan province where Qu Yuan drowned himself]'",
+      "\u6C6A>'[vast]'",
+      "\u6C70>'[excessive]'",
+      "\u6C72>'[draw water from well]'",
+      //"\u6C72>'[draw water from well]'",
+      "\u6C7A>'[decide]'",
+      "\u6C7D>'[steam]'",
+      "\u6C7E>'[river in shanxi province]'",
+      "\u6C81>'[soak into]'",
+      "\u6C82>'[river in southeast shandong flow]'",
+      "\u6C83>'[water]'",
+      "\u6C88>'[sink]'",
+      "\u6C8C>'[chaotic]'",
+      "\u6C8D>'[freezing]'",
+      "\u6C90>'[bathe]'",
+      "\u6C92>'[not]'",
+      "\u6C93>'[connected]'",
+      "\u6C96>'[pour]'",
+      "\u6C99>'[sand]'",
+      "\u6C9A>'[islet in stream]'",
+      "\u6C9B>'[abundant]'",
+      "\u6CA1>'[not]'",
+      "\u6CA2>'[marsh]'",
+      "\u6CAB>'[froth]'",
+      "\u6CAE>'[stop]'",
+      "\u6CB1>'[rivers]'",
+      "\u6CB3>'[river]'",
+      "\u6CB8>'[boil]'",
+      "\u6CB9>'[oil]'",
+      "\u6CBA>'[turbulent]'",
+          "\u6CBB>'[govern]'",
+      "\u6CBC>'[lake]'",
+      "\u6CBD>'[buy and sell]'",
+      "\u6CBE>'[moisten]'",
+      "\u6CBF>'[follow course]'",
+      "\u6CC1>'[condition]'",
+      "\u6CC4>'[leak]'",
+      "\u6CC5>'[swim]'",
+      "\u6CC9>'[spring]'",
+      "\u6CCA>'[anchor vessel]'",
+      "\u6CCC>'[to seep out]'",
+      "\u6CD3>'[clear]'",
+      "\u6CD5>'[law]'",
+      "\u6CD7>'[mucous]'",
+      "\u6CD9>'[roar]'",
+      "\u6CDB>'[drift]'",
+      "\u6CDD>'[go upstream]'",
+      "\u6CE1>'[bubbles]'",
+      "\u6CE2>'[waves]'",
+      "\u6CE3>'[cry]'",
+      "\u6CE5>'[mud]'",
+      "\u6CE8>'[concentrate]'",
+      "\u6CEA>'[tears]'",
+      "\u6CEF>'[destroy]'",
+      "\u6CF0>'[great]'",
+      "\u6CF1>'[great]'",
+      "\u6CF3>'[dive]'",
+      "\u6D0B>'[ocean]'",
+      "\u6D0C>'[clear]'",
+      "\u6D12>'[sprinkle]'",
+      "\u6D17>'[wash]'",
+      "\u6D19>'[name of a river in shandong]'",
+      "\u6D1B>'[river in shaanxi province]'",
+      "\u6D1E>'[cave]'",
+      "\u6D1F>'[snivel]'",
+      "\u6D25>'[ferry]'",
+      "\u6D29>'[leak]'",
+      "\u6D2A>'[vast]'",
+      "\u6D2B>'[to ditch]'",
+      "\u6D32>'[continent]'",
+      "\u6D33>'[damp]'",
+      "\u6D35>'[true]'",
+      "\u6D36>'[the rush of water]'",
+      "\u6D38>'[sparkle]'",
+      "\u6D3B>'[live]'",
+      "\u6D3D>'[spread]'",
+      "\u6D3E>'[school of thought]'",
+      "\u6D41>'[flow]'",
+      "\u6D44>'[pure]'",
+      "\u6D45>'[shallow]'",
+      "\u6D59>'[zhejiang province]'",
+      "\u6D5A>'[dredge]'",
+      "\u6D5C>'[creek]'",
+      "\u6D63>'[to wash]'",
+      "\u6D64>'[beating of ocean]'",
+      "\u6D66>'[bank of river]'",
+      "\u6D69>'[great]'",
+      "\u6D6A>'[wave]'",
+      "\u6D6C>'[nautical mile]'",
+      "\u6D6E>'[float]'",
+      "\u6D74>'[bathe]'",
+      "\u6D77>'[sea]'",
+      "\u6D78>'[soak]'",
+      "\u6D79>'[saturate]'",
+      "\u6D85>'[blacken]'",
+      "\u6D88>'[vanish]'",
+      "\u6D8C>'[surge up]'",
+      "\u6D8E>'[saliva]'",
+      "\u6D93>'[brook]'",
+      "\u6D95>'[tear]'",
+      "\u6D99>'[tears]'",
+      "\u6D9B>'[large waves]'",
+      "\u6D9C>'[ditch]'",
+      "\u6DAF>'[shore]'",
+      "\u6DB2>'[sap]'",
+      "\u6DB5>'[soak]'",
+      "\u6DB8>'[dried up]'",
+      "\u6DBC>'[cool]'",
+      "\u6DC0>'[shallow water]'",
+      "\u6DC5>'[water used wash rice]'",
+      "\u6DC6>'[confused]'",
+      "\u6DC7>'[river in henan province]'",
+      "\u6DCB>'[drip]'",
+      "\u6DCC>'[trickle]'",
+      "\u6DD1>'[good]'",
+      "\u6DD2>'[bitter cold]'",
+      //"\u6DD5>'[................................]'",
+      "\u6DD8>'[wash in sieve]'",
+      "\u6DD9>'[gurgling sound of water]'",
+      "\u6DDE>'[name of a river in Jiangsu]'",
+      "\u6DE1>'[weak]'",
+      "\u6DE4>'[mud]'",
+      "\u6DE6>'[river in jiangxi province: water]'",
+      "\u6DE8>'[pure]'",
+      "\u6DEA>'[be lost]'",
+      "\u6DEB>'[obscene]'",
+      "\u6DEC>'[temper]'",
+      "\u6DEE>'[river in anhui province]'",
+      "\u6DF1>'[deep]'",
+      "\u6DF3>'[cyanogen]'",
+      "\u6DF5>'[gulf]'",
+      "\u6DF7>'[mix]'",
+      "\u6DF9>'[drown]'",
+      "\u6DFA>'[shallow]'",
+      "\u6DFB>'[append]'",
+      "\u6E05>'[clear]'",
+      "\u6E07>'[thirsty]'",
+      "\u6E08>'[help]'",
+      "\u6E09>'[ford stream]'",
+      "\u6E0A>'[surge up]'",
+      "\u6E0B>'[astringent]'",
+      "\u6E13>'[mountain stream]'",
+      "\u6E15>'[surge up]'",
+      "\u6E19>'[scatter]'",
+      "\u6E1A>'[small sand bank]'",
+      "\u6E1B>'[decrease]'",
+      "\u6E1D>'[change]'",
+      "\u6E1F>'[(of water) not flowing]'",
+      "\u6E20>'[ditch]'",
+      "\u6E21>'[cross]'",
+      "\u6E23>'[refuse]'",
+      "\u6E24>'[swelling]'",
+      "\u6E25>'[moisten]'",
+      "\u6E26>'[swirl]'",
+      "\u6E29>'[lukewarm]'",
+      "\u6E2B>'[beating of ocean]'",
+      "\u6E2C>'[measure]'",
+      "\u6E2D>'[name of a river in shaanxi]'",
+      "\u6E2E>'[river in shandong province]'",
+      "\u6E2F>'[port]'",
+      "\u6E38>'[swim]'",
+      "\u6E3A>'[endlessly long]'",
+      "\u6E3E>'[muddy]'",
+      "\u6E43>'[sound of waves]'",
+      "\u6E4A>'[piece together]'",
+      "\u6E4D>'[rapid water current]'",
+      "\u6E4E>'[flushed with drink]'",
+      "\u6E56>'[lake]'",
+      "\u6E58>'[hunan province]'",
+      "\u6E5B>'[deep]'",
+      "\u6E5F>'[river in qinghai province]'",
+      "\u6E67>'[well up]'",
+      "\u6E6B>'[a small pond]'",
+      "\u6E6E>'[bury]'",
+      "\u6E6F>'[hot water]'",
+      "\u6E72>'[flow]'",
+      //"\u6E73>'[[not found in dictionary]]'",
+      "\u6E7E>'[bay]'",
+      "\u6E7F>'[wet]'",
+      //"\u6E7F>'[wet]'",
+      //"\u6E7F>'[wet]'",
+      "\u6E8C>'[pour]'",
+      "\u6E8F>'[pool]'",
+      "\u6E90>'[spring]'",
+      "\u6E96>'[rule]'",
+      "\u6E98>'[abruptly]'",
+      "\u6E9C>'[slide]'",
+      "\u6E9D>'[ditch]'",
+      "\u6E9F>'[drizzling rain]'",
+      "\u6EA2>'[overflow]'",
+      "\u6EA5>'[big]'",
+      "\u6EAA>'[mountain stream]'",
+      "\u6EAF>'[go upstream]'",
+      "\u6EB2>'[urinate]'",
+      "\u6EB6>'[melt]'",
+      "\u6EB7>'[privy]'",
+      "\u6EBA>'[drown]'",
+      "\u6EBD>'[moist]'",
+      "\u6EC2>'[torrential]'",
+      "\u6EC4>'[blue]'",
+      "\u6EC5>'[extinguish]'",
+      "\u6EC9>'[deep]'",
+      "\u6ECB>'[grow]'",
+      "\u6ECC>'[wash]'",
+      "\u6ED1>'[slip]'",
+      "\u6ED3>'[sediment]'",
+      "\u6ED4>'[overflow]'",
+      "\u6ED5>'[<arch> county in shandong province]'",
+      "\u6EDD>'[raining]'",
+      "\u6EDE>'[block up]'",
+      "\u6EEC>'[shanghai]'",
+      "\u6EEF>'[block up]'",
+      "\u6EF2>'[soak through]'",
+      "\u6EF4>'[drip]'",
+      "\u6EF7>'[thick gravy]'",
+      "\u6EF8>'[riverbank]'",
+      "\u6EFE>'[turn]'",
+      "\u6EFF>'[fill]'",
+      "\u6F01>'[to fish]'",
+      "\u6F02>'[float]'",
+      "\u6F06>'[varnish]'",
+      "\u6F09>'[filter]'",
+      "\u6F0F>'[leak]'",
+      "\u6F11>'[water]'",
+      "\u6F13>'[river in guangxi province]'",
+      "\u6F14>'[perform]'",
+      "\u6F15>'[transport by water]'",
+      "\u6F20>'[desert]'",
+      "\u6F22>'[chinese people]'",
+      "\u6F23>'[flowing water]'",
+      "\u6F2B>'[overflow of water]'",
+      "\u6F2C>'[soak]'",
+      "\u6F31>'[gargle]'",
+      "\u6F32>'[rise in price]'",
+      "\u6F38>'[gradually]'",
+      "\u6F3E>'[overflow]'",
+      "\u6F3F>'[any thick fluid]'",
+      "\u6F41>'[river in anhui]'",
+      "\u6F45>'[pour]'",
+      "\u6F54>'[clean]'",
+      "\u6F58>'[surname]'",
+      "\u6F5B>'[hide]'",
+      "\u6F5C>'[hide]'",
+      "\u6F5F>'[land inundated with salt from ti]'",
+      "\u6F64>'[soft]'",
+      "\u6F66>'[to flood]'",
+      "\u6F6D>'[deep pool]'",
+      "\u6F6E>'[tide]'",
+      "\u6F6F>'[steep bank by stream]'",
+      "\u6F70>'[flooding river]'",
+      "\u6F74>'[pond]'",
+      "\u6F78>'[weep]'",
+      "\u6F7A>'[sound of flowing water]'",
+      "\u6F7C>'[high]'",
+      "\u6F80>'[astringent]'",
+      "\u6F81>'[astringent]'",
+      "\u6F82>'[clear and still water]'",
+      "\u6F84>'[purify water by allowing sedimen]'",
+      "\u6F86>'[spray]'",
+      "\u6F8E>'[splatter]'",
+      "\u6F91>'[slide]'",
+      "\u6F97>'[brook]'",
+      "\u6FA1>'[wash]'",
+      "\u6FA3>'[cleanse]'",
+      "\u6FA4>'[marsh]'",
+      //"\u6FAA>'[................................]'",
+      "\u6FB1>'[sediment]'",
+      "\u6FB3>'[inlet]'",
+      "\u6FB9>'[calm]'",
+      "\u6FC0>'[arouse]'",
+      "\u6FC1>'[muddy]'",
+      "\u6FC2>'[waterfall]'",
+      "\u6FC3>'[thick]'",
+      "\u6FC6>'[river bank]'",
+      "\u6FD4>'[many]'",
+      "\u6FD5>'[wet]'",
+      "\u6FD8>'[mud]'",
+      "\u6FDB>'[drizzling]'",
+      "\u6FDF>'[help]'",
+      "\u6FE0>'[moat]'",
+      "\u6FE1>'[immerse]'",
+      "\u6FE4>'[large waves]'",
+      "\u6FEB>'[flood]'",
+      "\u6FEC>'[dredge]'",
+      "\u6FEE>'[county in Henan province]'",
+      "\u6FEF>'[wash out]'",
+      "\u6FF1>'[beach]'",
+      "\u6FF3>'[hide]'",
+      "\u6FF6>'[broad]'",
+      "\u6FFA>'[sprinkle]'",
+      "\u6FFE>'[strain out]'",
+      "\u7001>'[waves]'",
+      "\u7009>'[drain off]'",
+      "\u700B>'[juice]'",
+      "\u700F>'[clear]'",
+      "\u7011>'[waterfall]'",
+      "\u7015>'[approach]'",
+      "\u7018>'[river in jiangxi province]'",
+      "\u701A>'[vast]'",
+      "\u701B>'[sea]'",
+      "\u701D>'[trickle]'",
+      "\u701E>'[pool in a river]'",
+      "\u701F>'[sound of beating wind and rain]'",
+      "\u7026>'[pond]'",
+      "\u7027>'[raining]'",
+      "\u702C>'[swift current]'",
+      "\u7030>'[overflow]'",
+      "\u7032>'[waves]'",
+      "\u703E>'[overflowing]'",
+      "\u704C>'[pour]'",
+      "\u7051>'[sprinkle]'",
+      "\u7058>'[bank]'",
+      "\u7063>'[bay]'",
+      "\u706B>'[fire]'",
+      "\u706F>'[lantern]'",
+      "\u7070>'[ashes]'",
+      "\u7078>'[cauterize with moxa]'",
+      "\u707C>'[burn]'",
+      "\u707D>'[calamity]'",
+      "\u7089>'[fireplace]'",
+      "\u708A>'[cook]'",
+      "\u708E>'[flame]'",
+      "\u7092>'[fry]'",
+      "\u7099>'[roast]'",
+      "\u70AC>'[torch]'",
+      "\u70AD>'[charcoal]'",
+      "\u70AE>'[large gun]'",
+      "\u70AF>'[bright]'",
+      "\u70B3>'[bright]'",
+      "\u70B8>'[fry in oil]'",
+      "\u70B9>'[dot]'",
+      "\u70BA>'[do]'",
+      "\u70C8>'[fiery]'",
+      "\u70CB>'[boast]'",
+      "\u70CF>'[crow]'",
+      "\u70D9>'[brand]'",
+      "\u70DD>'[rise]'",
+      "\u70DF>'[smoke]'",
+      "\u70F1>'[bright]'",
+      "\u70F9>'[boil]'",
+      "\u70FD>'[signal fire]'",
+      "\u7109>'[thereupon]'",
+      "\u7114>'[flame]'",
+      "\u7119>'[dry over slow fire]'",
+      "\u711A>'[burn]'",
+      "\u711C>'[fire]'",
+      "\u7121>'[negative]'",
+      "\u7126>'[burned]'",
+      "\u7136>'[yes]'",
+      "\u713C>'[burn]'",
+      "\u7149>'[smelt]'",
+      "\u714C>'[bright]'",
+      "\u714E>'[fry in fat or oil]'",
+      "\u7155>'[bright]'",
+      "\u7156>'[warm]'",
+      "\u7159>'[smoke]'",
+      "\u7162>'[alone]'",
+      "\u7164>'[coal]'",
+      "\u7165>'[shining]'",
+      "\u7166>'[kind]'",
+      "\u7167>'[shine]'",
+      "\u7169>'[bother]'",
+      "\u716C>'[roast]'",
+      "\u716E>'[cook]'",
+      "\u717D>'[stir up]'",
+      "\u7184>'[put out]'",
+      "\u7188>'[bright]'",
+      "\u718A>'[bear]'",
+      "\u718F>'[smoke]'",
+      "\u7194>'[melt]'",
+      //"\u7195>'[................................]'",
+      "\u7199>'[bright]'",
+      "\u719F>'[well cooked]'",
+      "\u71A8>'[iron]'",
+      "\u71AC>'[cook down]'",
+      "\u71B1>'[hot]'",
+      "\u71B9>'[dim light]'",
+      "\u71BE>'[burning hot]'",
+      "\u71C3>'[burn]'",
+      "\u71C8>'[lantern]'",
+      "\u71C9>'[heat with fire]'",
+      "\u71CE>'[burn]'",
+      "\u71D0>'[phosphorus]'",
+      "\u71D2>'[burn]'",
+      "\u71D4>'[to roast]'",
+      "\u71D5>'[swallow (bird)]'",
+      //"\u71D7>'[................................]'",
+      "\u71DF>'[encampment]'",
+      "\u71E0>'[warm]'",
+      "\u71E5>'[dry]'",
+      "\u71E6>'[vivid]'",
+      "\u71E7>'[flintstone]'",
+      "\u71EC>'[burn down]'",
+      "\u71ED>'[candle]'",
+      "\u71EE>'[harmonize]'",
+      //"\u71F5>'[................................]'",
+      "\u71F9>'[fire]'",
+      "\u71FB>'[smoke]'",
+      "\u71FC>'[cinders]'",
+      "\u71FF>'[shine]'",
+      "\u7206>'[crackle]'",
+      "\u720D>'[shine]'",
+      "\u7210>'[fireplace]'",
+      "\u721B>'[rotten]'",
+      "\u7228>'[oven]'",
+      "\u722A>'[claw]'",
+      "\u722C>'[crawl]'",
+      "\u722D>'[dispute]'",
+      "\u7230>'[lead on to]'",
+      "\u7232>'[do]'",
+      "\u7235>'[feudal title or rank]'",
+      "\u7236>'[father]'",
+      "\u723A>'[father]'",
+      "\u723B>'[diagrams for divination]'",
+      "\u723C>'[chopping board or block]'",
+      "\u723D>'[happy]'",
+      "\u723E>'[you]'",
+      "\u723F>'[half of tree trunk]'",
+      "\u7240>'[bed]'",
+      "\u7246>'[wall]'",
+      "\u7247>'[slice]'",
+      "\u7248>'[printing blocks]'",
+      "\u724B>'[memorandum]'",
+      "\u724C>'[signboard]'",
+      "\u7252>'[documents]'",
+      "\u7258>'[writing tablet]'",
+      "\u7259>'[tooth]'",
+      "\u725B>'[cow]'",
+      "\u725D>'[female of species]'",
+      "\u725F>'[make]'",
+      "\u7261>'[male of animals]'",
+      "\u7262>'[prison]'",
+      "\u7267>'[tend cattle]'",
+      "\u7269>'[thing]'",
+      "\u7272>'[sacrificial animal]'",
+      "\u7274>'[gore]'",
+      "\u7279>'[special]'",
+      "\u727D>'[drag]'",
+      "\u727E>'[to oppose]'",
+      "\u7280>'[rhinoceros]'",
+      "\u7281>'[plow]'",
+      "\u7282>'[plow]'",
+      "\u7287>'[run fast]'",
+      "\u7292>'[entertain victorious soldiers]'",
+      "\u7296>'[brindled ox]'",
+      "\u72A0>'[sacrifice]'",
+      "\u72A2>'[calf]'",
+      "\u72A7>'[sacrifice]'",
+      "\u72AC>'[dog]'",
+      "\u72AF>'[commit crime]'",
+      "\u72B2>'[wolf]'",
+      "\u72B6>'[form]'",
+      "\u72B9>'[like]'",
+      "\u72C2>'[insane]'",
+      "\u72C3>'[to covet]'",
+      "\u72C4>'[tribe from northern china]'",
+      "\u72C6>'[pekinese dog]'",
+      "\u72CE>'[be familiar with]'",
+      "\u72D0>'[species of fox]'",
+      "\u72D2>'[baboon]'",
+      "\u72D7>'[dog]'",
+      "\u72D9>'[ape]'",
+      //"\u72DB>'[................................]'",
+      "\u72E0>'[vicious]'",
+      "\u72E1>'[cunning]'",
+      "\u72E2>'[animal name]'",
+      "\u72E9>'[winter hunting]'",
+      "\u72EC>'[alone]'",
+      "\u72ED>'[narrow]'",
+      "\u72F7>'[rash]'",
+      "\u72F8>'[fox]'",
+      "\u72F9>'[narrow]'",
+      "\u72FC>'[wolf]'",
+      "\u72FD>'[legendary animal with short fore]'",
+      "\u730A>'[lion]'",
+      "\u7316>'[mad]'",
+      "\u7317>'[exclamation of admiration]'",
+      "\u731B>'[violent]'",
+      "\u731C>'[guess]'",
+      "\u731D>'[abruptly]'",
+      "\u731F>'[hunt]'",
+      "\u7325>'[vulgar]'",
+      "\u7329>'[species of orangutan]'",
+      "\u732A>'[pig]'",
+      "\u732B>'[cat]'",
+      "\u732E>'[offer]'",
+      //"\u732F>'[................................]'",
+      "\u7334>'[monkey]'",
+      "\u7336>'[like]'",
+      "\u7337>'[plan]'",
+      "\u733E>'[crafty]'",
+      "\u733F>'[ape]'",
+      "\u7344>'[prison]'",
+      "\u7345>'[lion]'",
+      "\u734E>'[prize]'",
+      "\u734F>'[the panther]'",
+      "\u7357>'[unruly]'",
+      "\u7363>'[beast]'",
+      "\u7368>'[alone]'",
+      "\u736A>'[sly]'",
+      "\u7370>'[ferocious appearance]'",
+      "\u7372>'[obtain]'",
+      "\u7375>'[hunt]'",
+      "\u7378>'[beast]'",
+      "\u737A>'[otter]'",
+      "\u737B>'[offer]'",
+      "\u7384>'[deep]'",
+      "\u7387>'[to lead]'",
+      "\u7389>'[jade]'",
+      "\u738B>'[king]'",
+      "\u7396>'[black-colored jade]'",
+      "\u73A9>'[play with]'",
+      "\u73B2>'[tinkling of jade]'",
+      "\u73B3>'[tortoise shell]'",
+      "\u73BB>'[glass]'",
+      "\u73C0>'[amber]'",
+      "\u73C2>'[inferior kind of jade]'",
+      "\u73C8>'[ornament attached woman''s hairpi]'",
+      "\u73CA>'[coral]'",
+      "\u73CD>'[precious]'",
+      "\u73CE>'[precious]'",
+      "\u73DE>'[kind of necklace]'",
+      "\u73E0>'[precious stone]'",
+      "\u73E5>'[ear ornament]'",
+      "\u73EA>'[jade table conferred upon feudal]'",
+      "\u73ED>'[class]'",
+      "\u73EE>'[jade ornament]'",
+      "\u73F1>'[necklace made of precious stones]'",
+      //"\u73F8>'[................................]'",
+      "\u73FE>'[appear]'",
+      "\u7403>'[ball]'",
+      "\u7405>'[variety of white carnelian]'",
+      "\u7406>'[reason]'",
+      "\u7409>'[sparkling stone]'",
+      "\u7422>'[polish jade]'",
+      "\u7425>'[jewel in shape of tiger]'",
+      "\u7432>'[necklace]'",
+      "\u7433>'[beautiful jade]'",
+      "\u7434>'[chinese lute or guitar]'",
+      "\u7435>'[guitar-like instrument]'",
+      "\u7436>'[guitar-like instrument]'",
+      "\u743A>'[enamel]'",
+      "\u743F>'[bright]'",
+      "\u7441>'[fine piece of jade]'",
+      "\u7455>'[flaw in gem]'",
+      "\u7459>'[agate]'",
+      "\u745A>'[coral]'",
+      "\u745B>'[luster of gem]'",
+      "\u745C>'[flawless gem or jewel]'",
+      "\u745E>'[felicitous omen]'",
+      "\u745F>'[large stringed musical instrument]'",
+      "\u7460>'[precious stone]'",
+      "\u7463>'[fragments]'",
+      "\u7464>'[precious jade]'",
+      "\u7469>'[lustre of gems]'",
+      "\u746A>'[agate]'",
+      "\u746F>'[kind of white cornelian]'",
+      "\u7470>'[extraordinary]'",
+      "\u7473>'[luster of gem]'",
+      "\u7476>'[precious jade]'",
+      "\u747E>'[brilliance of gems]'",
+      "\u7483>'[glass]'",
+      "\u748B>'[jade plaything]'",
+      "\u749E>'[unpolished gem]'",
+      "\u74A2>'[precious stone]'",
+      "\u74A7>'[piece of jade with hole in it]'",
+      "\u74B0>'[jade ring or bracelet]'",
+      "\u74BD>'[imperial signet]'",
+      "\u74CA>'[jade]'",
+      "\u74CF>'[gem cut like dragon]'",
+      "\u74D4>'[necklace made of precious stones]'",
+      "\u74DC>'[melon]'",
+      "\u74E0>'[bottle gourd]'",
+      "\u74E2>'[ladle made from dried gourd]'",
+      "\u74E3>'[petal]'",
+      "\u74E6>'[tile]'",
+      "\u74E7>'[decagram]'",
+      "\u74E9>'[kilowatt]'",
+      "\u74EE>'[earthen jar]'",
+      "\u74F0>'[[not found in dictionary]]'",
+      "\u74F1>'[milligram]'",
+      //"\u74F2>'[................................]'",
+      "\u74F6>'[jug]'",
+      "\u74F7>'[crockery]'",
+      "\u74F8>'[hectogram]'",
+      "\u7503>'[brick wall of a well]'",
+      "\u7504>'[examine]'",
+      "\u7505>'[centigram]'",
+      "\u750C>'[bowl]'",
+      "\u750D>'[rafters supporting roof tiles]'",
+      "\u750E>'[brick]'",
+      "\u7511>'[boiler for steaming rice]'",
+      "\u7513>'[glazed tiles]'",
+      "\u7515>'[earthen jar]'",
+      "\u7518>'[sweetness]'",
+      "\u751A>'[great extent]'",
+      "\u751C>'[sweet]'",
+      "\u751E>'[taste]'",
+      "\u751F>'[life]'",
+      "\u7523>'[give birth]'",
+      "\u7525>'[sister''s child]'",
+      "\u7526>'[be reborn]'",
+      "\u7528>'[use]'",
+      "\u752B>'[begin]'",
+      "\u752C>'[path]'",
+      "\u7530>'[field]'",
+      "\u7531>'[cause]'",
+      "\u7532>'[armor]'",
+      "\u7533>'[to state to a superior]'",
+      "\u7537>'[male]'",
+      "\u7538>'[suburbs of capital]'",
+      "\u753A>'[raised path between fields]'",
+      "\u753B>'[painting]'",
+      "\u753C>'[raised path between fields]'",
+      "\u7544>'[stop]'",
+      "\u7546>'[chinese land measure]'",
+      //"\u7549>'[................................]'",
+      "\u754A>'[plow]'",
+      "\u754B>'[till land]'",
+      "\u754C>'[boundary]'",
+      //"\u754D>'[................................]'",
+      "\u754F>'[fear]'",
+      "\u7551>'[dry (as opposed to rice) field]'",
+      "\u7554>'[boundary path dividing fields]'",
+      "\u7559>'[stop]'",
+      "\u755A>'[straw basket]'",
+      "\u755B>'[border]'",
+      "\u755C>'[livestock]'",
+      "\u755D>'[chinese land measure]'",
+      "\u7560>'[garden]'",
+      "\u7562>'[end]'",
+      "\u7564>'[place for worshipping the haven]'",
+      "\u7565>'[approximately]'",
+      "\u7566>'[sections in vegetable farm]'",
+      "\u7567>'[approximately]'",
+      //"\u7569>'[................................]'",
+      "\u756A>'[take turns]'",
+      "\u756B>'[delineate]'",
+      //"\u756D>'[................................]'",
+      "\u7570>'[different]'",
+      "\u7573>'[repeat]'",
+      "\u7574>'[farmland]'",
+      "\u7576>'[bear]'",
+      "\u7577>'[raised path between fields]'",
+      "\u7578>'[odd]'",
+      "\u757F>'[imperial domain]'",
+      "\u7582>'[repeat]'",
+      "\u7586>'[boundary]'",
+      "\u7587>'[farmland]'",
+      "\u7589>'[repeat]'",
+      "\u758A>'[repeat]'",
+      "\u758B>'[roll]'",
+      "\u758E>'[neglect]'",
+      "\u758F>'[neglect]'",
+      "\u7591>'[doubt]'",
+      "\u7594>'[carbuncle]'",
+      "\u759A>'[chronic disease]'",
+      "\u759D>'[hernia]'",
+      "\u75A3>'[wart]'",
+      "\u75A5>'[scabies]'",
+      "\u75AB>'[epidemic]'",
+      "\u75B1>'[acne]'",
+      "\u75B2>'[feel tired]'",
+      "\u75B3>'[childhood diseases]'",
+      "\u75B5>'[flaw]'",
+      "\u75B8>'[jaundice]'",
+      "\u75B9>'[measles]'",
+      "\u75BC>'[aches]'",
+      "\u75BD>'[ulcer]'",
+      "\u75BE>'[illness]'",
+      "\u75C2>'[scab]'",
+      "\u75C3>'[indigestion]'",
+      "\u75C5>'[illness]'",
+      "\u75C7>'[disease]'",
+      "\u75CA>'[be healed]'",
+      "\u75CD>'[wound]'",
+      "\u75D2>'[itch]'",
+      "\u75D4>'[hemorrhoids]'",
+      "\u75D5>'[scar]'",
+      "\u75D8>'[smallpox]'",
+      "\u75D9>'[convulsions]'",
+      "\u75DB>'[pain]'",
+      "\u75DE>'[dyspepsia]'",
+      "\u75E2>'[dysentry]'",
+      "\u75E3>'[spots]'",
+      "\u75E9>'[thin]'",
+      "\u75F0>'[phlegm]'",
+      "\u75F2>'[pock-marked]'",
+      "\u75F3>'[pock-marked]'",
+      "\u75F4>'[foolish]'",
+      "\u75FA>'[paralysis]'",
+      "\u75FC>'[chronic disease]'",
+      "\u75FE>'[chronic illness]'",
+      "\u75FF>'[paralysis]'",
+      "\u7601>'[feel tired]'",
+      "\u7609>'[get well]'",
+      "\u760B>'[crazy]'",
+      "\u760D>'[ulcers]'",
+      "\u761F>'[epidemic]'",
+      "\u7620>'[thin]'",
+      "\u7621>'[tumor]'",
+      "\u7622>'[scar]'",
+      "\u7624>'[tumor]'",
+      "\u7627>'[intermittent fever]'",
+      "\u7630>'[scrofula]'",
+      "\u7634>'[malaria pestilential vapors]'",
+      "\u763B>'[fistula]'",
+      "\u7642>'[be healed]'",
+      "\u7646>'[consumption]'",
+      "\u7647>'[epilepsy]'",
+      "\u7648>'[abrogate]'",
+      "\u764C>'[cancer]'",
+      "\u7652>'[get well]'",
+      "\u7656>'[craving]'",
+      "\u7658>'[sore]'",
+      "\u765C>'[erythema]'",
+      "\u7661>'[silly]'",
+      "\u7662>'[itch]'",
+      "\u7667>'[scrofulous lumps or swellings]'",
+      "\u7668>'[quickly]'",
+      "\u7669>'[leprosy]'",
+      "\u766A>'[spasms]'",
+      "\u766C>'[ringworms]'",
+      "\u7670>'[carbuncle]'",
+      "\u7672>'[crazy]'",
+      "\u7676>'[legs]'",
+      "\u7678>'[last of ten celestial stems]'",
+      "\u767A>'[issue]'",
+      "\u767B>'[rise]'",
+      "\u767C>'[issue]'",
+      "\u767D>'[white]'",
+      "\u767E>'[one hundred]'",
+      "\u7680>'[kernel]'",
+      "\u7683>'[countenance]'",
+      "\u7684>'[possessive]'",
+      "\u7686>'[all]'",
+      "\u7687>'[royal]'",
+      "\u7688>'[follow]'",
+      "\u768B>'[the high land along a river]'",
+      "\u768E>'[white]'",
+      "\u7690>'[the high land along a river]'",
+      "\u7693>'[bright]'",
+      "\u7696>'[anhui province]'",
+      "\u7699>'[white]'",
+      "\u769A>'[brilliant white]'",
+      "\u76AE>'[skin]'",
+      "\u76B0>'[pimples]'",
+      "\u76B4>'[chapped]'",
+      "\u76B7>'[drum]'",
+      "\u76B8>'[crack]'",
+      "\u76B9>'[crack]'",
+      "\u76BA>'[wrinkles]'",
+      "\u76BF>'[shallow container]'",
+      "\u76C2>'[basin]'",
+      "\u76C3>'[glass]'",
+      "\u76C6>'[basin]'",
+      "\u76C8>'[fill]'",
+      "\u76CA>'[profit]'",
+      "\u76CD>'[what? why not? correspond]'",
+      "\u76D2>'[small box or case]'",
+      "\u76D6>'[cover]'",
+      "\u76D7>'[rob]'",
+      "\u76DB>'[abundant]'",
+      "\u76DC>'[rob]'",
+      "\u76DE>'[small cup or container]'",
+      "\u76DF>'[swear]'",
+      "\u76E1>'[exhaust]'",
+      "\u76E3>'[supervise]'",
+      "\u76E4>'[tray]'",
+      "\u76E5>'[wash]'",
+      "\u76E7>'[cottage]'",
+      "\u76EA>'[to toss about]'",
+      "\u76EE>'[eye]'",
+      "\u76F2>'[blind]'",
+      "\u76F4>'[straight]'",
+      "\u76F8>'[mutual]'",
+      "\u76FB>'[glare]'",
+      "\u76FE>'[shield]'",
+      "\u7701>'[province]'",
+      "\u7704>'[to look askance]'",
+      "\u7707>'[blind in one eye]'",
+      "\u7708>'[gloat]'",
+      "\u7709>'[eyebrows]'",
+      "\u770B>'[look]'",
+      "\u770C>'[county]'",
+      "\u771B>'[dim]'",
+      //"\u771E>'[real]'",
+      "\u771F>'[real]'",
+      "\u7720>'[close eyes]'",
+      //"\u7724>'[................................]'",
+      "\u7725>'[eye sockets]'",
+      "\u7726>'[corner of the eyes]'",
+      "\u7729>'[confuse]'",
+      "\u7737>'[take interest in]'",
+      "\u7738>'[pupil of eye]'",
+      "\u773A>'[look at]'",
+      "\u773C>'[eye]'",
+      "\u7740>'[make move]'",
+      "\u7747>'[look at]'",
+      "\u775A>'[corner of eye]'",
+      "\u775B>'[eyeball]'",
+      "\u7761>'[sleep]'",
+      "\u7763>'[supervise]'",
+      "\u7765>'[look askance at]'",
+      "\u7766>'[friendly]'",
+      "\u7768>'[look askance at]'",
+      "\u776B>'[eyelashes]'",
+      "\u7779>'[look at]'",
+      "\u777E>'[testicle]'",
+      "\u777F>'[shrewd]'",
+      "\u778B>'[glare with anger]'",
+      "\u778E>'[blind]'",
+      "\u7791>'[close eyes]'",
+      "\u779E>'[deceive]'",
+      "\u77A0>'[look at]'",
+      "\u77A5>'[take fleeting glance at]'",
+      "\u77AC>'[wink]'",
+      "\u77AD>'[bright]'",
+      "\u77B0>'[watch]'",
+      "\u77B3>'[pupil of eye]'",
+      "\u77B6>'[dim]'",
+      //"\u77B6>'[dim]'",
+      "\u77BB>'[look]'",
+      "\u77BC>'[eyelid]'",
+      "\u77BD>'[blind]'",
+      "\u77BF>'[surname]'",
+      "\u77C7>'[stupid]'",
+      "\u77CD>'[look about in firght or alarm]'",
+      "\u77D7>'[straight]'",
+      "\u77DA>'[watch carefully]'",
+      "\u77DB>'[spear]'",
+      "\u77DC>'[pity]'",
+      "\u77E2>'[arrow]'",
+      "\u77E3>'[particle of completed action]'",
+      "\u77E5>'[know]'",
+      "\u77E7>'[much more]'",
+      "\u77E9>'[carpenter''s square]'",
+      "\u77ED>'[short]'",
+      "\u77EE>'[short]'",
+      "\u77EF>'[correct]'",
+      "\u77F3>'[stone]'",
+      "\u77FC>'[stone bridge]'",
+      "\u7802>'[sand]'",
+      "\u780C>'[stone steps]'",
+      "\u7812>'[arsenic]'",
+      "\u7814>'[grind]'",
+      "\u7815>'[break]'",
+      "\u7820>'[rocky]'",
+      "\u7825>'[whetstone]'",
+      "\u7826>'[stockade]'",
+      "\u7827>'[anvil]'",
+      "\u7832>'[gun]'",
+      "\u7834>'[break]'",
+      "\u783A>'[whetstone]'",
+      "\u783F>'[mine]'",
+      "\u7845>'[silicon]'",
+      "\u785D>'[saltpeter]'",
+      "\u786B>'[sulfur]'",
+      "\u786C>'[hard]'",
+      "\u786F>'[inkstone]'",
+      //"\u7872>'[................................]'",
+      //"\u7874>'[................................]'",
+      "\u787C>'[borax]'",
+      "\u7881>'[chess]'",
+      "\u7886>'[arrow-tip]'",
+      "\u7887>'[anchor]'",
+      "\u788C>'[rough]'",
+      "\u788D>'[obstruct]'",
+      "\u788E>'[break]'",
+      "\u7891>'[stone tablet]'",
+      "\u7893>'[pestle]'",
+      //"\u7895>'[................................]'",
+      "\u7897>'[bowl]'",
+      "\u789A>'[suburb]'",
+      "\u78A3>'[stone tablet]'",
+      "\u78A7>'[jade]'",
+      "\u78A9>'[great]'",
+      "\u78AA>'[stone slab used for washing clot]'",
+      "\u78AF>'[agate]'",
+      //"\u78B5>'[................................]'",
+      "\u78BA>'[sure]'",
+      "\u78BC>'[number]'",
+      "\u78BE>'[roller]'",
+      "\u78C1>'[magnetic]'",
+      "\u78C5>'[pound]'",
+      //"\u78C6>'[................................]'",
+      "\u78CA>'[pile of rocks or stones]'",
+      "\u78CB>'[polish]'",
+      "\u78D0>'[large rock]'",
+      "\u78D1>'[stone mill]'",
+      "\u78D4>'[downward stroke slanting righ]'",
+      "\u78DA>'[tile]'",
+      "\u78E7>'[sand and gravel]'",
+      "\u78E8>'[grind]'",
+      "\u78EC>'[musical instrument]'",
+      "\u78EF>'[jetty]'",
+      "\u78F4>'[steps on ledge]'",
+      "\u78FD>'[barren land]'",
+      "\u7901>'[reef]'",
+      //"\u7907>'[................................]'",
+      "\u790E>'[foundation stone]'",
+      //"\u790E>'[foundation stone]'",
+      //"\u7912>'[................................]'",
+      "\u7919>'[obstruct]'",
+      "\u7926>'[mine]'",
+      "\u792A>'[whetstone]'",
+      "\u792B>'[gravel]'",
+      "\u792C>'[alum]'",
+      "\u793A>'[show]'",
+      "\u793C>'[social custom]'",
+      "\u793E>'[god of the soil and altars to him]'",
+      "\u7940>'[to sacrifice]'",
+      "\u7941>'[pray]'",
+      "\u7947>'[only]'",
+      "\u7948>'[pray]'",
+      "\u7949>'[happiness]'",
+      "\u7950>'[divine intervention]'",
+      "\u7953>'[exorcise]'",
+      "\u7955>'[mysterious]'",
+      "\u7956>'[ancestor]'",
+      "\u7957>'[respect]'",
+      "\u795A>'[throne]'",
+      "\u795D>'[pray for happiness or blessings]'",
+      "\u795E>'[spirit]'",
+      "\u795F>'[evil spirit]'",
+      "\u7960>'[ancestral temple]'",
+      "\u7962>'[one''s deceased father]'",
+      "\u7965>'[good luck]'",
+      "\u7968>'[slip of paper or bamboo]'",
+      "\u796D>'[sacrifice to]'",
+      "\u7977>'[pray]'",
+      "\u797A>'[good luck]'",
+      "\u797F>'[blessing]'",
+      "\u7980>'[report to]'",
+      "\u7981>'[restrict]'",
+      "\u7984>'[blessing]'",
+      "\u7985>'[meditation]'",
+      "\u798A>'[semi-annual ceremony of purifica]'",
+      "\u798D>'[misfortune]'",
+      "\u798E>'[lucky]'",
+      "\u798F>'[happiness]'",
+      "\u799D>'[[not found in dictionary]]'",
+      "\u79A6>'[defend]'",
+      "\u79A7>'[happiness]'",
+      "\u79AA>'[meditation]'",
+      "\u79AE>'[social custom]'",
+      "\u79B0>'[one''s deceased father]'",
+      "\u79B3>'[pray or sacrifice]'",
+      "\u79B9>'[legendary hsia dynasty founder]'",
+      "\u79BA>'[district]'",
+      "\u79BD>'[birds]'",
+      "\u79BE>'[grain still on stalk]'",
+      "\u79BF>'[bald]'",
+      "\u79C0>'[ear of grain]'",
+      "\u79C1>'[private]'",
+      "\u79C9>'[grasp]'",
+      "\u79CB>'[autumn]'",
+      "\u79D1>'[section]'",
+      "\u79D2>'[beard of grain or corn]'",
+      "\u79D5>'[empty grain or rice husk]'",
+      "\u79D8>'[secret]'",
+      "\u79DF>'[rent]'",
+      //"\u79E1>'[................................]'",
+      "\u79E3>'[fodder]'",
+      "\u79E4>'[balance]'",
+      "\u79E6>'[feudal state of qin]'",
+      "\u79E7>'[rice seedlings]'",
+      "\u79E9>'[order]'",
+      "\u79EC>'[black millet]'",
+      "\u79F0>'[call]'",
+      "\u79FB>'[change place]'",
+      "\u7A00>'[rare]'",
+      "\u7A08>'[stalk of grain]'",
+      "\u7A0B>'[journey]'",
+      "\u7A0D>'[little]'",
+      "\u7A0E>'[taxes]'",
+      "\u7A14>'[ripe grain]'",
+      "\u7A17>'[darnels]'",
+      //"\u7A18>'[................................]'",
+      "\u7A19>'[grain ready for grinding]'",
+      "\u7A1A>'[young]'",
+      "\u7A1C>'[corner]'",
+      "\u7A1F>'[report to]'",
+      "\u7A20>'[dense]'",
+      "\u7A2E>'[seed]'",
+      "\u7A31>'[call]'",
+      "\u7A32>'[rice growing in field]'",
+      "\u7A37>'[god of cereals]'",
+      "\u7A3B>'[rice growing in field]'",
+      "\u7A3C>'[sow grain]'",
+      "\u7A3D>'[examine]'",
+      "\u7A3E>'[draft]'",
+      "\u7A3F>'[draft]'",
+      "\u7A40>'[corn]'",
+      "\u7A42>'[ear of grain]'",
+      //"\u7A43>'[................................]'",
+      "\u7A46>'[majestic]'",
+      "\u7A49>'[young grain]'",
+      "\u7A4D>'[accumulate]'",
+      "\u7A4E>'[rice tassel]'",
+      //"\u7A4E>'[rice tassel]'",
+      "\u7A50>'[fall]'",
+      "\u7A57>'[ear of grain]'",
+      "\u7A61>'[farm]'",
+      "\u7A62>'[dirty]'",
+      "\u7A63>'[stalks of grain]'",
+      "\u7A69>'[stable]'",
+      "\u7A6B>'[harvest]'",
+      "\u7A70>'[stalks of grain]'",
+      "\u7A74>'[cave]'",
+      "\u7A76>'[examine]'",
+      "\u7A79>'[high and vast]'",
+      "\u7A7A>'[empty]'",
+      "\u7A7D>'[hole]'",
+      "\u7A7F>'[penetrate]'",
+      "\u7A81>'[suddenly]'",
+      "\u7A83>'[secretly]'",
+      "\u7A84>'[narrow]'",
+      "\u7A88>'[obscure]'",
+      "\u7A92>'[stop up]'",
+      "\u7A93>'[window]'",
+      "\u7A95>'[slender]'",
+      "\u7A96>'[pit]'",
+      "\u7A97>'[window]'",
+      "\u7A98>'[embrassassed]'",
+      "\u7A9F>'[hole]'",
+      "\u7AA9>'[nest]'",
+      "\u7AAA>'[hollow]'",
+      "\u7AAE>'[poor]'",
+      "\u7AAF>'[kiln]'",
+      "\u7AB0>'[kiln]'",
+      "\u7AB6>'[poor]'",
+      "\u7ABA>'[peep]'",
+      "\u7ABF>'[mine shaft]'",
+      "\u7AC3>'[furnace]'",
+      "\u7AC4>'[run away]'",
+      "\u7AC5>'[hole]'",
+      "\u7AC7>'[surname]'",
+      "\u7AC8>'[furnace]'",
+      "\u7ACA>'[secretly]'",
+      "\u7ACB>'[stand]'",
+      "\u7ACD>'[decaliter]'",
+      "\u7ACF>'[kiloliter]'",
+      "\u7AD2>'[strange]'",
+      "\u7AD3>'[milliliter]'",
+      "\u7AD5>'[deciliter]'",
+      "\u7AD9>'[stand up]'",
+      "\u7ADA>'[stand and wait for long time]'",
+      "\u7ADC>'[dragon]'",
+      "\u7ADD>'[combine]'",
+      "\u7ADF>'[finally]'",
+      "\u7AE0>'[composition]'",
+      "\u7AE1>'[hectoliter]'",
+      "\u7AE2>'[wait for]'",
+      "\u7AE3>'[terminate]'",
+      "\u7AE5>'[child]'",
+      "\u7AE6>'[revere]'",
+      "\u7AEA>'[perpendicular]'",
+      "\u7AED>'[put forth great effort]'",
+      "\u7AEF>'[end]'",
+      "\u7AF0>'[centiliter]'",
+      "\u7AF6>'[contend]'",
+      "\u7AF8>'[contend]'",
+      "\u7AF9>'[bamboo]'",
+      "\u7AFA>'[india]'",
+      "\u7AFF>'[bamboo pole]'",
+      //"\u7B02>'[................................]'",
+      "\u7B04>'[hairpin]'",
+      "\u7B06>'[bamboo fence]'",
+      "\u7B08>'[bamboo box used carry books]'",
+      "\u7B0A>'[ladle]'",
+      "\u7B0B>'[bamboo shoots]'",
+      "\u7B0F>'[tablet held by someone having au]'",
+      "\u7B11>'[smile]'",
+      //"\u7B18>'[................................]'",
+      "\u7B19>'[small gourd-shaped musical instrument]'",
+      "\u7B1B>'[bamboo flute]'",
+      "\u7B1E>'[bamboo rod used for beatings]'",
+      "\u7B20>'[bamboo hat]'",
+      "\u7B25>'[a hamper]'",
+      "\u7B26>'[i.d. tag]'",
+      "\u7B28>'[foolish]'",
+      "\u7B2C>'[sequence]'",
+      "\u7B33>'[a reed leaf whistle]'",
+      "\u7B35>'[a bamboo form]'",
+      //"\u7B36>'[................................]'",
+      "\u7B39>'[small bamboo]'",
+      "\u7B45>'[bamboo brush]'",
+      "\u7B46>'[writing brush]'",
+      "\u7B48>'[arrow end]'",
+      "\u7B49>'[rank]'",
+      "\u7B4B>'[muscles]'",
+      "\u7B4C>'[bamboo fish trap]'",
+      "\u7B4D>'[bamboo shoot]'",
+      "\u7B4F>'[raft]'",
+      "\u7B50>'[bamboo basket or chest]'",
+      "\u7B51>'[ancient lute]'",
+      "\u7B52>'[thick piece of bamboo]'",
+      "\u7B54>'[answer]'",
+      "\u7B56>'[scheme]'",
+      "\u7B5D>'[stringed musical instrument]'",
+      "\u7B65>'[round-shaped bamboo basket for]'",
+      "\u7B67>'[bamboo water pipe]'",
+      "\u7B6C>'[reed of a loom]'",
+      "\u7B6E>'[divination with stalks of plants]'",
+      "\u7B70>'[cable]'",
+      "\u7B71>'[dwarf bamboo]'",
+      "\u7B74>'[type of grass used in divination]'",
+      "\u7B75>'[bamboo mat]'",
+      "\u7B7A>'[bamboo basket or chest]'",
+      "\u7B86>'[fine-toothed comb]'",
+      "\u7B87>'[numerary adjunct]'",
+      "\u7B8B>'[note]'",
+      "\u7B8D>'[hoop]'",
+      "\u7B8F>'[stringed musical instrument]'",
+      "\u7B92>'[broom]'",
+      "\u7B94>'[reed screen]'",
+      "\u7B95>'[sieve]'",
+      "\u7B97>'[count]'",
+      "\u7B98>'[fine bamboo]'",
+      "\u7B99>'[quiver]'",
+      "\u7B9A>'[brief note]'",
+      "\u7B9C>'[ancient string music instrument]'",
+      "\u7B9D>'[tweezers]'",
+      //"\u7B9F>'[................................]'",
+      "\u7BA1>'[pipe]'",
+      "\u7BAA>'[small bamboo basket for holding]'",
+      "\u7BAD>'[arrow]'",
+      "\u7BB1>'[case]'",
+      "\u7BB4>'[needle]'",
+      "\u7BB8>'[chopsticks]'",
+      "\u7BC0>'[knot]'",
+      "\u7BC1>'[bamboo grove]'",
+      "\u7BC4>'[pattern]'",
+      "\u7BC6>'[seal script]'",
+      "\u7BC7>'[chapter]'",
+      "\u7BC9>'[build]'",
+      "\u7BCB>'[ratton box]'",
+      "\u7BCC>'[ancient music instrument]'",
+      "\u7BCF>'[inlay]'",
+      "\u7BDD>'[bamboo basket]'",
+      "\u7BE0>'[dwarf bamboo]'",
+      "\u7BE4>'[deep]'",
+      "\u7BE5>'[bulgle]'",
+      "\u7BE6>'[fine-toothed comb]'",
+      "\u7BE9>'[sieve]'",
+      "\u7BED>'[cage]'",
+      "\u7BF3>'[wicker]'",
+      //"\u7BF6>'[................................]'",
+      "\u7BF7>'[awning]'",
+      "\u7C00>'[bed mat]'",
+      "\u7C07>'[swarm]'",
+      "\u7C0D>'[bamboo basket]'",
+      "\u7C11>'[a coir raincoat]'",
+      "\u7C12>'[usurp]'",
+      //"\u7C13>'[................................]'",
+      "\u7C14>'[a coir raincoat]'",
+      //"\u7C17>'[................................]'",
+      "\u7C1F>'[bamboo mat]'",
+      "\u7C21>'[simple]'",
+      "\u7C23>'[bamboo basket for carrying earth]'",
+      "\u7C27>'[reed of woodwind instrument]'",
+      "\u7C2A>'[hairpin]'",
+      "\u7C2B>'[musical instrument like pan-pipes]'",
+      "\u7C37>'[eaves of house]'",
+      "\u7C38>'[winnower]'",
+      "\u7C3D>'[sign]'",
+      "\u7C3E>'[a blind]'",
+      "\u7C3F>'[register]'",
+      "\u7C40>'[recite]'",
+      "\u7C43>'[basket]'",
+      "\u7C4C>'[chip]'",
+      "\u7C4D>'[record]'",
+      "\u7C4F>'[flag]'",
+      "\u7C50>'[climbing plants]'",
+      "\u7C54>'[bamboo basket]'",
+      "\u7C56>'[tally]'",
+      "\u7C58>'[climbing plants]'",
+      "\u7C5F>'[bamboo flute]'",
+      "\u7C60>'[cage]'",
+      "\u7C64>'[tally]'",
+      "\u7C65>'[key]'",
+      "\u7C6C>'[bamboo or wooden fence]'",
+      "\u7C73>'[hulled or husked uncooked rice]'",
+      "\u7C75>'[dm]'",
+      "\u7C7E>'[unhulled rice]'",
+      "\u7C81>'[km]'",
+      "\u7C82>'[surname]'",
+      "\u7C83>'[empty husks of grain]'",
+      "\u7C89>'[powder]'",
+      "\u7C8B>'[pure]'",
+      "\u7C8D>'[mm]'",
+      //"\u7C90>'[................................]'",
+      "\u7C92>'[grain]'",
+      "\u7C95>'[lees]'",
+      "\u7C97>'[rough]'",
+      "\u7C98>'[viscous]'",
+      "\u7C9B>'[pay respects]'",
+      "\u7C9F>'[unhusked millet]'",
+      //"\u7CA1>'[................................]'",
+      "\u7CA2>'[grain offered in ritual sacrific]'",
+      "\u7CA4>'[Guangdong and Guangxi provinces]'",
+      "\u7CA5>'[rice gruel]'",
+      "\u7CA7>'[toilet]'",
+      "\u7CA8>'[hm]'",
+      //"\u7CAB>'[................................]'",
+      //"\u7CAD>'[................................]'",
+      "\u7CAE>'[food]'",
+      "\u7CB1>'[better varieties of millet]'",
+      "\u7CB2>'[polish]'",
+      "\u7CB3>'[non-glutinous rice]'",
+      "\u7CB9>'[pure]'",
+      "\u7CBD>'[dumpling made of glutinous rice]'",
+      "\u7CBE>'[essence]'",
+      //"\u7CC0>'[................................]'",
+      //"\u7CC2>'[................................]'",
+      "\u7CC5>'[blend]'",
+      "\u7CCA>'[paste]'",
+      "\u7CCE>'[mm]'",
+      "\u7CD2>'[food for a journey]'",
+      "\u7CD6>'[sugar]'",
+      //"\u7CD8>'[................................]'",
+      "\u7CDC>'[rice gruel]'",
+      "\u7CDE>'[manure]'",
+      "\u7CDF>'[sediment]'",
+      "\u7CE0>'[chaff]'",
+      "\u7CE2>'[rice snacks]'",
+      "\u7CE7>'[food]'",
+      "\u7CEF>'[glutinous rice]'",
+      "\u7CF2>'[unpolished rice]'",
+      "\u7CF4>'[purchase grains]'",
+      "\u7CF6>'[sell grains]'",
+      "\u7CF8>'[silk]'",
+      "\u7CFA>'[to collaborate]'",
+      "\u7CFB>'[system]'",
+      "\u7CFE>'[investigate]'",
+      "\u7D00>'[record]'",
+      "\u7D02>'[name of an emperor]'",
+      "\u7D04>'[treaty]'",
+      "\u7D05>'[red]'",
+      "\u7D06>'[bend]'",
+      "\u7D0A>'[confused]'",
+      "\u7D0B>'[line]'",
+      "\u7D0D>'[admit]'",
+      "\u7D10>'[knot]'",
+      "\u7D14>'[pure]'",
+      "\u7D15>'[spoiled silk]'",
+      "\u7D17>'[gauze]'",
+      "\u7D18>'[string]'",
+      "\u7D19>'[paper]'",
+      "\u7D1A>'[level]'",
+      "\u7D1B>'[in disorder]'",
+      "\u7D1C>'[confused]'",
+      "\u7D20>'[white (silk)]'",
+      "\u7D21>'[spin]'",
+      "\u7D22>'[large rope]'",
+      "\u7D2B>'[purple]'",
+      "\u7D2C>'[kind of thin silk]'",
+      "\u7D2E>'[tie]'",
+      "\u7D2F>'[tired]'",
+      "\u7D30>'[fine]'",
+      "\u7D32>'[bridle]'",
+      "\u7D33>'[girdle]'",
+      "\u7D35>'[ramie]'",
+      "\u7D39>'[continue]'",
+      "\u7D3A>'[dark blue color]'",
+      "\u7D3F>'[cheat]'",
+      "\u7D42>'[end]'",
+      "\u7D43>'[string on musical instrument]'",
+      "\u7D44>'[class]'",
+      "\u7D45>'[unlined garment]'",
+      "\u7D46>'[loop]'",
+      //"\u7D4B>'[................................]'",
+      "\u7D4C>'[classic works]'",
+      "\u7D4E>'[baste]'",
+      "\u7D4F>'[rope]'",
+      "\u7D50>'[knot]'",
+      "\u7D56>'[fine silks]'",
+      "\u7D5B>'[silk braid]'",
+      "\u7D5E>'[twist]'",
+      "\u7D61>'[enmesh]'",
+      "\u7D62>'[variegated]'",
+      "\u7D63>'[to baste for sewing]'",
+      "\u7D66>'[give]'",
+      "\u7D68>'[silk]'",
+      "\u7D6E>'[waste cotton]'",
+      "\u7D71>'[govern]'",
+      "\u7D72>'[silk]'",
+      "\u7D73>'[deep red]'",
+      "\u7D75>'[draw]'",
+      "\u7D76>'[cut]'",
+      "\u7D79>'[kind of thick stiff silk]'",
+      //"\u7D7D>'[................................]'",
+      "\u7D89>'[embroider]'",
+      "\u7D8F>'[soothe]'",
+      "\u7D93>'[classic works]'",
+      "\u7D99>'[continue]'",
+      "\u7D9A>'[continue]'",
+      //"\u7D9B>'[................................]'",
+      "\u7D9C>'[arrange threads for weaving]'",
+      //"\u7D9F>'[................................]'",
+      "\u7DA2>'[silk cloth]'",
+      "\u7DA3>'[affectionate]'",
+      "\u7DAB>'[line]'",
+      "\u7DAC>'[silk ribbon attached as a seal]'",
+      "\u7DAD>'[maintain]'",
+      "\u7DAE>'[embroidered banner]'",
+      "\u7DAF>'[braid]'",
+      "\u7DB0>'[to string together]'",
+      "\u7DB1>'[heavy rope]'",
+      "\u7DB2>'[net]'",
+      "\u7DB4>'[patch together]'",
+      "\u7DB5>'[varicolored silk]'",
+      "\u7DB8>'[green silk thread or tassel]'",
+      "\u7DBA>'[fine thin silk]'",
+      "\u7DBB>'[ripped seam]'",
+      "\u7DBD>'[graceful]'",
+      "\u7DBE>'[thin silk]'",
+      "\u7DBF>'[cotton wad]'",
+      "\u7DC7>'[black silk]'",
+      "\u7DCA>'[tense]'",
+      "\u7DCB>'[scarlet]'",
+      "\u7DCF>'[collect]'",
+      "\u7DD1>'[green]'",
+      "\u7DD2>'[end of thread]'",
+      //"\u7DD5>'[................................]'",
+      "\u7DD8>'[seal]'",
+      "\u7DDA>'[thread]'",
+      "\u7DDC>'[cotton wad]'",
+      "\u7DDD>'[to sew in close stitches]'",
+      "\u7DDE>'[satin]'",
+      "\u7DE0>'[tie]'",
+      "\u7DE1>'[fishing-line]'",
+      "\u7DE4>'[cord]'",
+      "\u7DE8>'[knit]'",
+      "\u7DE9>'[slow]'",
+      "\u7DEC>'[distant]'",
+      "\u7DEF>'[woof]'",
+      "\u7DF2>'[indistinct]'",
+      "\u7DF4>'[practice]'",
+      "\u7DFB>'[delicate]'",
+      "\u7E01>'[hem]'",
+      "\u7E04>'[rope]'",
+      //"\u7E04>'[rope]'",
+      "\u7E09>'[red silk]'",
+      "\u7E0A>'[hang]'",
+      "\u7E0B>'[climd down rope]'",
+      //"\u7E11>'[fine silk]'",
+      "\u7E1B>'[to tie]'",
+      "\u7E1E>'[white raw silk]'",
+      "\u7E1F>'[decorative]'",
+      "\u7E21>'[matter]'",
+      "\u7E22>'[bind]'",
+      "\u7E23>'[county]'",
+      "\u7E26>'[indulge in]'",
+      "\u7E2B>'[sew]'",
+      "\u7E2E>'[contract]'",
+      "\u7E31>'[indulge in]'",
+      "\u7E32>'[chain or rope used bind criminal]'",
+      "\u7E35>'[plain silk]'",
+      "\u7E37>'[thread]'",
+      "\u7E39>'[light blue silk]'",
+      //"\u7E3A>'[................................]'",
+      "\u7E3B>'[halter for ox]'",
+      "\u7E3D>'[collect]'",
+      "\u7E3E>'[spin]'",
+      "\u7E41>'[complicated]'",
+      "\u7E43>'[bind]'",
+      "\u7E46>'[wind around]'",
+      "\u7E4A>'[fine]'",
+      "\u7E4B>'[attach]'",
+      "\u7E4D>'[embroider]'",
+      "\u7E54>'[weave]'",
+      "\u7E55>'[repair]'",
+      "\u7E56>'[umbrella]'",
+      "\u7E59>'[interpret]'",
+      "\u7E5A>'[wind round]'",
+      //"\u7E5D>'[................................]'",
+      "\u7E5E>'[entwine]'",
+      "\u7E66>'[string of copper coins]'",
+      //"\u7E67>'[................................]'",
+      "\u7E69>'[rope]'",
+      "\u7E6A>'[draw]'",
+      "\u7E6D>'[cocoon]'",
+      "\u7E70>'[to reel silk from cocoons]'",
+      "\u7E79>'[unravel or unreel silk]'",
+      "\u7E7B>'[fine silk guaze]'",
+      "\u7E7C>'[continue]'",
+      "\u7E7D>'[flourishing]'",
+      //"\u7E7F>'[................................]'",
+      "\u7E82>'[edit]'",
+      //"\u7E83>'[................................]'",
+      "\u7E88>'[patterned silk]'",
+      //"\u7E89>'[................................]'",
+      "\u7E8C>'[continue]'",
+      "\u7E8E>'[fine]'",
+      "\u7E8F>'[wrap]'",
+      //"\u7E90>'[................................]'",
+      "\u7E92>'[wrap]'",
+      "\u7E93>'[chin strap]'",
+      "\u7E94>'[talent]'",
+      "\u7E96>'[fine]'",
+      "\u7E9B>'[a banner]'",
+      "\u7E9C>'[hawser]'",
+      "\u7F36>'[earthen crock or jar]'",
+      "\u7F38>'[earthen jug]'",
+      "\u7F3A>'[be short of]'",
+      "\u7F45>'[crack]'",
+      "\u7F4C>'[long necked jar or bottle]'",
+      "\u7F4D>'[large earthenware wine jar]'",
+      "\u7F4E>'[an earthenware jar]'",
+      "\u7F50>'[jar]'",
+      "\u7F51>'[net]'",
+      "\u7F54>'[net]'",
+      "\u7F55>'[rare]'",
+      "\u7F58>'[screen used in ancient times]'",
+      "\u7F5F>'[net]'",
+      "\u7F60>'[animal trap]'",
+      //"\u7F67>'[................................]'",
+      "\u7F68>'[medical compress]'",
+      "\u7F69>'[basket for catching fish]'",
+      "\u7F6A>'[crime]'",
+      "\u7F6B>'[hinder]'",
+      "\u7F6E>'[place]'",
+      "\u7F70>'[penalty]'",
+      "\u7F72>'[public office]'",
+      "\u7F75>'[accuse]'",
+      "\u7F77>'[cease]'",
+      "\u7F78>'[penalty]'",
+      "\u7F79>'[sorrow]'",
+      //"\u7F82>'[................................]'",
+      "\u7F83>'[cover-cloth]'",
+      "\u7F85>'[net for catching birds]'",
+      "\u7F86>'[brown bear]'",
+      "\u7F87>'[inn]'",
+      "\u7F88>'[halter]'",
+      "\u7F8A>'[sheep]'",
+      "\u7F8C>'[qiang nationality]'",
+      "\u7F8E>'[beautiful]'",
+      "\u7F94>'[lamb]'",
+      "\u7F9A>'[species of antelope]'",
+      "\u7F9D>'[ram]'",
+      "\u7F9E>'[disgrace]'",
+      "\u7FA3>'[group]'",
+      "\u7FA4>'[group]'",
+      "\u7FA8>'[envy]'",
+      "\u7FA9>'[right conduct]'",
+      "\u7FAE>'[soup]'",
+      "\u7FAF>'[wether]'",
+      "\u7FB2>'[ancient emperor]'",
+      "\u7FB6>'[rank odor]'",
+      "\u7FB8>'[weak]'",
+      "\u7FB9>'[soup]'",
+      "\u7FBD>'[feather]'",
+      "\u7FC1>'[old man]'",
+      "\u7FC5>'[wings]'",
+      "\u7FC6>'[color green]'",
+      "\u7FCA>'[flying]'",
+      "\u7FCC>'[bright]'",
+      "\u7FD2>'[practice]'",
+      "\u7FD4>'[soar]'",
+      "\u7FD5>'[agree]'",
+      "\u7FE0>'[color green]'",
+      "\u7FE1>'[kingfisher]'",
+      "\u7FE6>'[scissors]'",
+      "\u7FE9>'[fly]'",
+      "\u7FEB>'[careless]'",
+      "\u7FF0>'[writing brush]'",
+      "\u7FF3>'[shade]'",
+      "\u7FF9>'[turn up]'",
+      "\u7FFB>'[flip over]'",
+      "\u7FFC>'[wings]'",
+      "\u8000>'[shine]'",
+      "\u8001>'[old]'",
+      "\u8003>'[examine]'",
+      "\u8004>'[elderly person]'",
+      "\u8005>'[that which]'",
+      "\u8006>'[man of sixty]'",
+      "\u800B>'[aged]'",
+      "\u800C>'[and]'",
+      "\u8010>'[endure]'",
+      "\u8012>'[handle of plow]'",
+      "\u8015>'[plow]'",
+      "\u8017>'[consume]'",
+      "\u8018>'[weed]'",
+      "\u8019>'[rake]'",
+      "\u801C>'[spade-shaped tool]'",
+      "\u8021>'[hoe]'",
+      "\u8028>'[hoe]'",
+      "\u8033>'[ear]'",
+      "\u8036>'[used in transliteration]'",
+      "\u803B>'[shame]'",
+      "\u803D>'[indulge in]'",
+      "\u803F>'[bright]'",
+      "\u8046>'[listen]'",
+      "\u804A>'[somewhat]'",
+      "\u8052>'[clamor]'",
+      "\u8056>'[holy]'",
+      "\u8058>'[engage]'",
+      "\u805A>'[assemble]'",
+      "\u805E>'[hear]'",
+      "\u805F>'[son-in-law]'",
+      "\u8061>'[intelligent]'",
+      //"\u8062>'[................................]'",
+      "\u8068>'[connect]'",
+      "\u806F>'[connect]'",
+      "\u8070>'[intelligent]'",
+      "\u8072>'[sound]'",
+      "\u8073>'[urge on]'",
+      "\u8074>'[hear]'",
+      "\u8076>'[whisper]'",
+      "\u8077>'[duty]'",
+      "\u8079>'[earwax]'",
+      "\u807D>'[hear]'",
+      "\u807E>'[deaf]'",
+      "\u807F>'[writing brush]'",
+      "\u8084>'[learn]'",
+      "\u8085>'[pay respects]'",
+      "\u8086>'[indulge]'",
+      "\u8087>'[begin]'",
+      "\u8089>'[flesh]'",
+      "\u808B>'[ribs]'",
+      "\u808C>'[muscle tissue]'",
+      "\u8093>'[region between heart and diaphragm]'",
+      "\u8096>'[look like]'",
+      "\u8098>'[elbow]'",
+      "\u809A>'[belly]'",
+      "\u809B>'[anus]'",
+      "\u809D>'[liver]'",
+      "\u80A1>'[thighs]'",
+      "\u80A2>'[human limbs]'",
+      "\u80A5>'[fat]'",
+      "\u80A9>'[shoulders]'",
+      "\u80AA>'[animal fat]'",
+      "\u80AC>'[wart]'",
+      "\u80AD>'[fat]'",
+      "\u80AF>'[willing]'",
+      "\u80B1>'[forearm]'",
+      "\u80B2>'[produce]'",
+      "\u80B4>'[cooked or prepared meat]'",
+      "\u80BA>'[lungs]'",
+      "\u80C3>'[stomach]'",
+      "\u80C4>'[helmet]'",
+      "\u80C6>'[gall bladder]'",
+      "\u80CC>'[back]'",
+      "\u80CE>'[unborn child]'",
+      "\u80D6>'[fat]'",
+      "\u80D9>'[food offered in sacrificial serv]'",
+      "\u80DA>'[embryo]'",
+      "\u80DB>'[the shoulder]'",
+      "\u80DD>'[callous]'",
+      "\u80DE>'[womb]'",
+      "\u80E1>'[recklessly]'",
+      "\u80E4>'[heir]'",
+      "\u80E5>'[all]'",
+      "\u80EF>'[pelvis]'",
+      "\u80F1>'[bladder]'",
+      "\u80F4>'[the large intestine]'",
+      "\u80F8>'[breast]'",
+      "\u80FC>'[callus]'",
+      "\u80FD>'[be able]'",
+      "\u8102>'[fat]'",
+      "\u8105>'[ribs]'",
+      "\u8106>'[crisp]'",
+      "\u8107>'[ribs]'",
+      "\u8108>'[blood vessels]'",
+      "\u8109>'[blood vessels]'",
+      "\u810A>'[spine]'",
+      "\u811A>'[leg]'",
+      "\u811B>'[shinbone]'",
+      "\u8123>'[lips]'",
+      "\u8129>'[dried meat (used as teachers payment in ancient times)]'",
+      "\u812F>'[dried meat]'",
+      "\u8131>'[take off]'",
+      "\u8133>'[brain]'",
+      "\u8139>'[swell]'",
+      "\u813E>'[spleen]'",
+      "\u8146>'[prosperous]'",
+      "\u814B>'[armpit]'",
+      "\u814E>'[kidneys]'",
+      "\u8150>'[rot]'",
+      "\u8151>'[bowels]'",
+      "\u8153>'[calf]'",
+      "\u8154>'[chest cavity]'",
+      "\u8155>'[wrist]'",
+      "\u815F>'[vagina]'",
+      "\u8165>'[raw meat]'",
+      "\u8166>'[brain]'",
+      "\u816B>'[swell]'",
+      "\u816E>'[lower part of face]'",
+      "\u8170>'[waist]'",
+      "\u8171>'[tendons]'",
+      "\u8174>'[fat]'",
+      "\u8178>'[intestines]'",
+      "\u8179>'[stomach]'",
+      "\u817A>'[gland]'",
+      "\u817F>'[legs]'",
+      "\u8180>'[upper arm]'",
+      "\u8182>'[backbone]'",
+      "\u8183>'[fat]'",
+      "\u8188>'[diaphragm]'",
+      "\u818A>'[shoulders]'",
+      "\u818F>'[grease]'",
+      "\u8193>'[intestines]'",
+      "\u8195>'[hollow]'",
+      "\u819A>'[skin]'",
+      "\u819C>'[membrane]'",
+      "\u819D>'[knee]'",
+      "\u81A0>'[glue]'",
+      "\u81A3>'[vagina]'",
+      //"\u81A4>'[................................]'",
+      "\u81A8>'[swell]'",
+      "\u81A9>'[greasy]'",
+      "\u81B0>'[cook meat for sacrifice or offer]'",
+      "\u81B3>'[meals]'",
+      "\u81B5>'[pancreas]'",
+      //"\u81B8>'[................................]'",
+      "\u81BA>'[breast]'",
+      "\u81BD>'[gall bladder]'",
+      "\u81BE>'[minced meat or fish]'",
+      "\u81BF>'[pus]'",
+      "\u81C0>'[buttocks]'",
+      "\u81C2>'[arm]'",
+      "\u81C6>'[chest]'",
+      "\u81C8>'[year end sacrifice]'",
+      "\u81C9>'[face]'",
+      "\u81CD>'[abdominal area of crab]'",
+      "\u81D1>'[soft]'",
+      "\u81D3>'[internal organs]'",
+      "\u81D8>'[year end sacrifice]'",
+      "\u81D9>'[rouge]'",
+      "\u81DA>'[arrange in order]'",
+      "\u81DF>'[internal organs]'",
+      "\u81E0>'[small lump of meat]'",
+      "\u81E3>'[minister]'",
+      "\u81E5>'[lie down]'",
+      "\u81E7>'[good]'",
+      "\u81E8>'[draw near]'",
+      "\u81EA>'[self]'",
+      "\u81ED>'[smell]'",
+      "\u81F3>'[reach]'",
+      "\u81F4>'[send]'",
+      "\u81FA>'[tower]'",
+      "\u81FB>'[reach]'",
+      "\u81FC>'[mortar]'",
+      "\u81FE>'[moment]'",
+      "\u8201>'[carry on one''s shoulder]'",
+      "\u8202>'[grind in mortar]'",
+      "\u8205>'[mother''s brother]'",
+      "\u8207>'[and]'",
+      "\u8208>'[thrive]'",
+      "\u8209>'[raise]'",
+      "\u820A>'[old]'",
+      "\u820C>'[tongue]'",
+      "\u820D>'[house]'",
+      "\u820E>'[house]'",
+      "\u8210>'[lick with tongue]'",
+      "\u8212>'[open up]'",
+      "\u8216>'[store]'",
+      "\u8217>'[store]'",
+      "\u8218>'[a mansion]'",
+      "\u821B>'[oppose]'",
+      "\u821C>'[legendary ruler]'",
+      "\u821E>'[dance]'",
+      "\u821F>'[boat]'",
+      "\u8229>'[boat]'",
+      "\u822A>'[sail]'",
+      "\u822B>'[fancy boat]'",
+      "\u822C>'[sort]'",
+      "\u822E>'[bow or prow of boat]'",
+      "\u8233>'[stern of ship]'",
+      "\u8235>'[rudder]'",
+      "\u8236>'[large]'",
+      "\u8237>'[sides of boat]'",
+      "\u8238>'[large boat]'",
+      "\u8239>'[ship]'",
+      "\u8240>'[[not found in dictionary]]'",
+      "\u8247>'[small boat]'",
+      "\u8258>'[counter for ships]'",
+      "\u8259>'[hold of ship]'",
+      "\u825A>'[ship]'",
+      //"\u825D>'[................................]'",
+      "\u825F>'[ancient warship]'",
+      "\u8262>'[a mast]'",
+      "\u8264>'[to moor a boat to the bank]'",
+      "\u8266>'[warship]'",
+      "\u8268>'[long and narrow war-boat]'",
+      "\u826A>'[oar]'",
+      "\u826B>'[bow or prow of boat]'",
+      "\u826E>'[seventh of eight diagrams]'",
+      "\u826F>'[good]'",
+      "\u8271>'[difficult]'",
+      "\u8272>'[color]'",
+      "\u8276>'[beautiful]'",
+      "\u8277>'[beautiful]'",
+      "\u8278>'[grass]'",
+      "\u827E>'[artemisia]'",
+      "\u828B>'[taro]'",
+      "\u828D>'[peony]'",
+      "\u8292>'[miscanthus sinensis]'",
+      "\u8299>'[hibiscus]'",
+      "\u829D>'[purplish mushroom thought promot]'",
+      "\u829F>'[mow]'",
+      "\u82A5>'[mustard plant]'",
+      "\u82A6>'[rushes]'",
+      "\u82AB>'[daphne genkwa]'",
+      "\u82AC>'[fragrance]'",
+      "\u82AD>'[plantain or banana palm]'",
+      "\u82AF>'[pith from rush (juncus effusus)]'",
+      "\u82B1>'[flower]'",
+      "\u82B3>'[fragrant]'",
+      "\u82B8>'[rue]'",
+      "\u82B9>'[celery]'",
+      "\u82BB>'[mow]'",
+      "\u82BD>'[bud]'",
+      "\u82C5>'[cut off]'",
+      "\u82D1>'[pasture]'",
+      "\u82D2>'[lush]'",
+      "\u82D3>'[fungus]'",
+      "\u82D4>'[moss]'",
+      "\u82D7>'[sprouts]'",
+      "\u82D9>'[pigsty]'",
+      "\u82DB>'[small]'",
+      "\u82DC>'[clover]'",
+      "\u82DE>'[variety of rush]'",
+      "\u82DF>'[careless]'",
+      "\u82E1>'[barley]'",
+      "\u82E3>'[kind of lettuce]'",
+      "\u82E5>'[if]'",
+      "\u82E6>'[bitter]'",
+      "\u82E7>'[china grass]'",
+      "\u82EB>'[rush or straw matting]'",
+      "\u82F1>'[petal]'",
+      //"\u82F3>'[................................]'",
+      "\u82F4>'[sackcloth]'",
+      "\u82F9>'[artemisia]'",
+      "\u82FA>'[berries]'",
+      "\u82FB>'[kind of herb]'",
+      "\u8302>'[thick]'",
+      "\u8303>'[surname]'",
+      "\u8304>'[eggplant]'",
+      "\u8305>'[reeds]'",
+      "\u8306>'[species of grass]'",
+      "\u8309>'[white jasmine]'",
+      "\u830E>'[stem]'",
+      "\u8316>'[allium victorialis]'",
+      "\u8317>'[tea]'",
+      //"\u8317>'[tea]'",
+      "\u831C>'[madder]'",
+      //"\u8323>'[................................]'",
+      "\u8328>'[caltrop]'",
+      "\u832B>'[vast]'",
+      "\u832F>'[china root]'",
+      "\u8331>'[dogwood]'",
+      "\u8332>'[now]'",
+      "\u8334>'[fennel]'",
+      "\u8335>'[cushion]'",
+      "\u8336>'[tea]'",
+      "\u8338>'[soft]'",
+      "\u8339>'[roots]'",
+      "\u8340>'[surname]'",
+      "\u8345>'[answer: small bean]'",
+      "\u8349>'[grass]'",
+      "\u834A>'[thorns]'",
+      "\u834F>'[beans]'",
+      "\u8350>'[repeat]'",
+      "\u8352>'[wasteland]'",
+      "\u8358>'[village]'",
+      "\u8373>'[beans]'",
+      //"\u8375>'[................................]'",
+      "\u8377>'[lotus]'",
+      "\u837B>'[reed]'",
+      "\u837C>'[bitter vegetable]'",
+      "\u8385>'[attend]'",
+      //"\u8387>'[................................]'",
+      "\u8389>'[white jasmine]'",
+      "\u838A>'[village]'",
+      "\u838E>'[kind of sedge grass]'",
+      "\u8393>'[moss]'",
+      "\u8396>'[stem]'",
+      "\u839A>'[bamboo mat]'",
+      "\u839E>'[smiling]'",
+      //"\u839F>'[................................]'",
+      "\u83A0>'[weeds]'",
+      "\u83A2>'[pods of leguminous plants]'",
+      "\u83A8>'[herb]'",
+      "\u83AA>'[artemisia]'",
+      "\u83AB>'[do not]'",
+      "\u83B1>'[goosefoot]'",
+      "\u83B5>'[dodder]'",
+      "\u83BD>'[thicket]'",
+      "\u83C1>'[flower of leek family]'",
+      "\u83C5>'[coarse grass]'",
+      "\u83CA>'[chrysanthemum]'",
+      "\u83CC>'[mushroom]'",
+      "\u83CE>'[beautiful jade]'",
+      "\u83D3>'[fruits]'",
+      "\u83D6>'[iris]'",
+      "\u83D8>'[celery]'",
+      "\u83DC>'[vegetables]'",
+      "\u83DF>'[dodder]'",
+      "\u83E0>'[spinach and similar greens]'",
+      "\u83E9>'[herb]'",
+      "\u83EB>'[celery]'",
+      "\u83EF>'[flowery]'",
+      "\u83F0>'[wild rice]'",
+      "\u83F1>'[water-chestnut]'",
+      "\u83F2>'[fragrant]'",
+      "\u83F4>'[small buddhist monastery]'",
+      //"\u83F7>'[................................]'",
+      "\u83FB>'[artemisia]'",
+      "\u83FD>'[beans and peas]'",
+      "\u8403>'[dense]'",
+      "\u8404>'[grapes]'",
+      "\u8407>'[averrhora carambola]'",
+      "\u840B>'[luxuriant foliage]'",
+      "\u840C>'[bud]'",
+      "\u840D>'[duckweed]'",
+      "\u840E>'[wither]'",
+      //"\u8413>'[................................]'",
+      "\u8420>'[bud]'",
+      //"\u8422>'[................................]'",
+      "\u8429>'[scandent hop]'",
+      //"\u842A>'[................................]'",
+      "\u842C>'[ten thousand]'",
+      "\u8431>'[day-lily]'",
+      "\u8435>'[lettuce]'",
+      "\u8438>'[dogwood]'",
+      "\u843C>'[calyx of flower]'",
+      "\u843D>'[fall]'",
+      "\u8446>'[reserve]'",
+      "\u8449>'[leaf]'",
+      //"\u844E>'[................................]'",
+      "\u8457>'[manifest]'",
+      "\u845B>'[edible bean]'",
+      "\u8461>'[grapes]'",
+      "\u8462>'[cover]'",
+      "\u8463>'[direct]'",
+      "\u8466>'[reed]'",
+      "\u8469>'[flowers]'",
+      "\u846B>'[bottle-gourd]'",
+      "\u846C>'[bury]'",
+      "\u846D>'[bulrush]'",
+      //"\u846D>'[bulrush]'",
+      "\u846F>'[leaf of angelica plant]'",
+      "\u8471>'[scallions]'",
+      "\u8475>'[sunflower]'",
+      "\u8477>'[meat diet]'",
+      "\u8479>'[kind of chrysanthemum]'",
+      "\u847A>'[thatch]'",
+      "\u8482>'[peduncle or stem of plants]'",
+      //"\u8484>'[................................]'",
+      "\u848B>'[surname]'",
+      "\u8490>'[collect]'",
+      "\u8494>'[transplant]'",
+      "\u8499>'[cover]'",
+      "\u849C>'[garlic]'",
+      "\u849F>'[betel pepper]'",
+      "\u84A1>'[burdock]'",
+      "\u84AD>'[to cutgrass]'",
+      "\u84B2>'[type of rush]'",
+      "\u84B8>'[steam]'",
+      "\u84B9>'[reed]'",
+      "\u84BB>'[rushes]'",
+      "\u84BC>'[blue]'",
+      "\u84BF>'[mugwort]'",
+      "\u84C1>'[abundant]'",
+      "\u84C4>'[store]'",
+      "\u84C6>'[straw mat]'",
+      "\u84C9>'[hibiscus]'",
+      "\u84CA>'[luxuriant vegetation]'",
+      "\u84CB>'[cover]'",
+      "\u84CD>'[milfoil]'",
+      "\u84D0>'[straw bed mat]'",
+      "\u84D1>'[rain coat made of straw]'",
+      "\u84D6>'[castor-oil plant]'",
+      //"\u84D9>'[................................]'",
+      "\u84DA>'[oxalic (used in compounds)]'",
+      "\u84EC>'[type of raspberry]'",
+      "\u84EE>'[lotus]'",
+      "\u84F4>'[edible water plant]'",
+      "\u84FC>'[smartweed]'",
+      "\u84FF>'[clover]'",
+      "\u8500>'[screen]'",
+      "\u8506>'[water-chestnut]'",
+      "\u8511>'[disdain]'",
+      "\u8513>'[creeping plants]'",
+      "\u8514>'[radish]'",
+      "\u8515>'[peduncle or stem of plants]'",
+      "\u8517>'[sugar cane]'",
+      "\u8518>'[ginsen]'",
+      "\u851A>'[luxuriant]'",
+      "\u851F>'[frame on which silkworms spin]'",
+      "\u8521>'[surname]'",
+      "\u8526>'[parasitic plants]'",
+      "\u852C>'[vegetables]'",
+      "\u852D>'[shade]'",
+      "\u8535>'[hide]'",
+      "\u853D>'[cover]'",
+      //"\u8540>'[................................]'",
+      "\u8541>'[nettle]'",
+      "\u8543>'[foreign things]'",
+      "\u8548>'[mushrooms]'",
+      "\u8549>'[banana]'",
+      "\u854A>'[unopened flowers]'",
+      "\u854B>'[unopened flowers]'",
+      "\u854E>'[buckwheat]'",
+      "\u8555>'[caryopteris divaricata]'",
+      //"\u8557>'[................................]'",
+      "\u8558>'[fuel]'",
+      "\u855A>'[calyx of flower]'",
+      "\u8563>'[hibiscus]'",
+      "\u8568>'[pteris aquilina]'",
+      "\u8569>'[pond]'",
+      "\u856A>'[luxurious growth of weeds]'",
+      "\u856D>'[common artemisia]'",
+      "\u8577>'[yam]'",
+      "\u857E>'[buds]'",
+      "\u8580>'[the hippuris or mare''s tail plant]'",
+      "\u8584>'[thin]'",
+      "\u8587>'[osmunda regalis]'",
+      "\u8588>'[luxuriant]'",
+      "\u858A>'[circium]'",
+      "\u8590>'[spinach]'",
+      "\u8591>'[ginger]'",
+      "\u8594>'[rose]'",
+      "\u8597>'[garden]'",
+      "\u8599>'[weed]'",
+      "\u859B>'[kind of marsh grass]'",
+      "\u859C>'[evergreen shrubs]'",
+      "\u85A4>'[allium bakeri]'",
+      "\u85A6>'[offer]'",
+      "\u85A8>'[death of prince]'",
+      "\u85A9>'['transliteration of\"sat\" of boddhisattva etc.']'",
+      "\u85AA>'[fuel]'",
+      "\u85AB>'[a medicinal herb]'",
+      "\u85AC>'[drugs]'",
+      "\u85AE>'[marsh]'",
+      "\u85AF>'[yam]'",
+      "\u85B9>'[cyperus rotundus]'",
+      "\u85BA>'[water-chestnuts]'",
+      "\u85C1>'[straw]'",
+      "\u85C9>'[mat]'",
+      "\u85CD>'[blue]'",
+      "\u85CF>'[hide]'",
+      "\u85D0>'[disregard]'",
+      "\u85D5>'[lotus root]'",
+      "\u85DC>'[chenopodium album]'",
+      "\u85DD>'[art]'",
+      "\u85E4>'[rattan]'",
+      "\u85E5>'[drugs]'",
+      "\u85E9>'[fence]'",
+      "\u85EA>'[marsh]'",
+      "\u85F7>'[yam]'",
+      "\u85F9>'[lush]'",
+      "\u85FA>'[rush used in making mats]'",
+      "\u85FB>'[splendid]'",
+      "\u85FE>'[shade]'",
+      "\u8602>'[stamen or pistil]'",
+      "\u8606>'[rushes]'",
+      "\u8607>'[thyme]'",
+      "\u860A>'[collect]'",
+      "\u860B>'[apple]'",
+      "\u8613>'[thyme]'",
+      "\u8616>'[stump]'",
+      "\u8617>'[stump]'",
+      "\u861A>'[moss]'",
+      "\u8622>'[tall grass]'",
+      "\u862D>'[orchid]'",
+      "\u862F>'[to toss about]'",
+      //"\u862F>'[to toss about]'",
+      "\u863F>'[type of creeping plant]'",
+      "\u864D>'[tiger]'",
+      "\u864E>'[tiger]'",
+      "\u8650>'[cruel]'",
+      "\u8654>'[act with reverence]'",
+      "\u8655>'[place]'",
+      "\u865A>'[false]'",
+      "\u865C>'[capture]'",
+      "\u865E>'[concerned about]'",
+      "\u865F>'[mark]'",
+      "\u8667>'[lose]'",
+      "\u866B>'[insects]'",
+      "\u8671>'[louse]'",
+      "\u8679>'[rainbow]'",
+      "\u867B>'[horsefly]'",
+      "\u868A>'[mosquito]'",
+      "\u868B>'[gnat]'",
+      "\u868C>'[oysters]'",
+      "\u8693>'[earthworm]'",
+      "\u8695>'[silkworms]'",
+      "\u86A3>'[centipede]'",
+      "\u86A4>'[flea]'",
+      "\u86A9>'[worm]'",
+      "\u86AA>'[tadpole]'",
+      "\u86AB>'[abalone]'",
+      "\u86AF>'[earthworm]'",
+      "\u86B0>'[millipede]'",
+      "\u86B6>'[kind of clam]'",
+      "\u86C4>'[mole cricket]'",
+      "\u86C6>'[maggots]'",
+      "\u86C7>'[snake]'",
+      "\u86C9>'[dragonfly]'",
+      "\u86CB>'[eggs]'",
+      "\u86CD>'[glow-worm]'",
+      "\u86CE>'[oyster]'",
+      "\u86D4>'[tapeworm]'",
+      "\u86D9>'[frog]'",
+      "\u86DB>'[spider]'",
+      "\u86DE>'[snail]'",
+      "\u86DF>'[scaly dragon with four legs]'",
+      "\u86E4>'[clam]'",
+      "\u86E9>'[cricket]'",
+      //"\u86E9>'[cricket]'",
+      "\u86ED>'[leech]'",
+      "\u86EE>'[barbarians]'",
+      "\u86EF>'[shrimp]'",
+      "\u86F8>'[long legged spider]'",
+      "\u86F9>'[chrysalis]'",
+      "\u86FB>'[molt]'",
+      "\u86FE>'[moth]'",
+      "\u8700>'[name of an ancient state]'",
+      "\u8702>'[bee]'",
+      "\u8703>'[marine monster which can change its shape]'",
+      "\u8706>'[a variety of bivalves]'",
+      "\u8708>'[centipede]'",
+      "\u8709>'[mayfly]'",
+      "\u870A>'[clam]'",
+      "\u870D>'[toad]'",
+      "\u8711>'[egg]'",
+      "\u8712>'[millipede]'",
+      "\u8718>'[spider]'",
+      "\u871A>'[cockroach]'",
+      "\u871C>'[honey]'",
+      "\u8725>'[lizard]'",
+      "\u8729>'[cicada]'",
+      "\u8734>'[lizard]'",
+      "\u8737>'[creep like worm]'",
+      "\u873B>'[dragonfly]'",
+      "\u873F>'[creep]'",
+      "\u8749>'[cicada]'",
+      "\u874B>'[wax]'",
+      "\u874C>'[tadpole]'",
+      "\u874E>'[scorpion]'",
+      "\u8753>'[snail]'",
+      "\u8755>'[nibble away]'",
+      "\u8757>'[kind of locust]'",
+      "\u8759>'[bat]'",
+      "\u875F>'[hedgehog]'",
+      "\u8760>'[kind of bat]'",
+      "\u8763>'[mayfly]'",
+      "\u8766>'[shrimp]'",
+      "\u8768>'[louse]'",
+      //"\u8768>'[louse]'",
+      "\u876E>'[venomous snake]'",
+      "\u8774>'[butterfly]'",
+      "\u8776>'[butterfly]'",
+      "\u8778>'[snail]'",
+      "\u877F>'[flies]'",
+      "\u8782>'[mantis]'",
+      "\u878D>'[melt]'",
+      "\u879F>'[kind of caterpillar]'",
+      "\u87A2>'[glow-worm]'",
+      "\u87AB>'[poison]'",
+      "\u87AF>'[nippers]'",
+      "\u87B3>'[mantis]'",
+      "\u87BA>'[spiral shell]'",
+      "\u87BB>'[gryllotalpa africana]'",
+      "\u87BD>'[katydid]'",
+      "\u87C0>'[cricket]'",
+      "\u87C4>'[to hibernate]'",
+      "\u87C6>'[frog]'",
+      "\u87C7>'[frog]'",
+      "\u87CB>'[cricket]'",
+      //"\u87CB>'[cricket]'",
+      "\u87D2>'[python]'",
+      "\u87E0>'[coil]'",
+      "\u87EF>'[worms]'",
+      "\u87F2>'[worms]'",
+      "\u87F6>'[razor clam]'",
+      "\u87F7>'[mantis]'",
+      "\u87F9>'[crab]'",
+      "\u87FB>'[ants]'",
+      "\u87FE>'[toad]'",
+      "\u8805>'[flies]'",
+      "\u880D>'[scorpion]'",
+      "\u880E>'[python]'",
+      "\u880F>'[crab]'",
+      "\u8811>'[lizard]'",
+      "\u8815>'[eumenes polifomis]'",
+      "\u8816>'[measuring worm]'",
+      "\u8821>'[wood-boring insect]'",
+      "\u8822>'[wriggle]'",
+      "\u8823>'[oyster]'",
+      "\u8827>'[moth]'",
+      "\u8831>'[posion]'",
+      "\u8836>'[silkworms]'",
+      "\u8839>'[moth]'",
+      "\u883B>'[barbarians]'",
+      "\u8840>'[blood]'",
+      "\u8842>'[to be defeated]'",
+      "\u8844>'[epistaxis]'",
+      "\u8846>'[multitude]'",
+      "\u884C>'[go]'",
+      "\u884D>'[overflow]'",
+      "\u8852>'[brag]'",
+      "\u8853>'[art]'",
+      "\u8857>'[street]'",
+      "\u8859>'[public office]'",
+      "\u885B>'[guard]'",
+      "\u885D>'[rush against]'",
+      "\u885E>'[guard]'",
+      "\u8861>'[measure]'",
+      "\u8862>'[highway]'",
+      "\u8863>'[clothes]'",
+      "\u8868>'[show]'",
+      "\u886B>'[shirt]'",
+      "\u8870>'[decline]'",
+      "\u8872>'[mend]'",
+      "\u8875>'[chemise]'",
+      "\u8877>'[heart]'",
+      "\u887D>'[lapel]'",
+      "\u887E>'[coverlet]'",
+      "\u887F>'[collar or lapel of garment]'",
+      "\u8881>'[robe]'",
+      "\u8882>'[sleeves]'",
+      "\u8888>'[buddhist cassock]'",
+      "\u888B>'[pocket]'",
+      "\u888D>'[long gown]'",
+      "\u8892>'[strip]'",
+      "\u8896>'[sleeve]'",
+      "\u8897>'[unlined garments]'",
+      //"\u8899>'[................................]'",
+      "\u889E>'[ceremonial dress worn by emperor]'",
+      "\u88A2>'[robe]'",
+      "\u88A4>'[longitude]'",
+      "\u88AB>'['passive indicator \"by\"']'",
+      //"\u88AE>'[................................]'",
+      //"\u88B0>'[................................]'",
+      "\u88B1>'[piece of cloth used wrap bundles]'",
+      "\u88B4>'[pants]'",
+      "\u88B5>'[lapel]'",
+      "\u88B7>'[lined garment]'",
+      "\u88BF>'[gown]'",
+      "\u88C1>'[cut out]'",
+      "\u88C2>'[split]'",
+      //"\u88C2>'[split]'",
+      //"\u88C2>'[split]'",
+      "\u88C5>'[dress]'",
+      "\u88CF>'[inside]'",
+      "\u88D4>'[progeny]'",
+      "\u88D5>'[abundant]'",
+      "\u88D8>'[fur garments]'",
+      "\u88D9>'[skirt]'",
+      "\u88DC>'[mend]'",
+      "\u88DD>'[dress]'",
+      "\u88DF>'[a cassock or robe of a monk]'",
+      "\u88E1>'[inside]'",
+      "\u88E8>'[aid]'",
+      "\u88F2>'[waistcoat]'",
+      "\u88F3>'[clothes]'",
+      "\u88F4>'[surname]'",
+      "\u88F8>'[bare]'",
+      "\u88F9>'[wrap]'",
+      "\u88FC>'[to take off one''s top]'",
+      "\u88FD>'[make]'",
+      "\u88FE>'[lapel]'",
+      "\u8902>'[jacket]'",
+      //"\u8903>'[a seam in a garment]'",
+      "\u8907>'[repeat]'",
+      "\u890A>'[cramped]'",
+      "\u890C>'[trousers]'",
+      "\u8910>'[coarse woolen cloth]'",
+      "\u8912>'[praise]'",
+      "\u8913>'[swaddling cloth]'",
+      "\u891D>'[unlined garment]'",
+      //"\u891E>'[................................]'",
+      "\u8925>'[mattress]'",
+      "\u892A>'[strip]'",
+      "\u892B>'[strip]'",
+      "\u8936>'[pleat]'",
+      "\u8938>'[lapel]'",
+      "\u893B>'[dirty]'",
+      "\u8941>'[swaddling clothes]'",
+      "\u8943>'[commend]'",
+      "\u8944>'[aid]'",
+      "\u894C>'[unlined garment]'",
+      "\u894D>'[mixed]'",
+      "\u8956>'[outer garments]'",
+      "\u895E>'[fold]'",
+      "\u895F>'[lapel]'",
+      "\u8960>'[crotch or seat of pants]'",
+      "\u8964>'[ragged]'",
+      "\u8966>'[short coat]'",
+      "\u896A>'[socks]'",
+      "\u896D>'[tuck up hem of garment and wrap]'",
+      "\u896F>'[underwear]'",
+      "\u8972>'[raid]'",
+      "\u8974>'[a one piece garment]'",
+      //"\u8976>'[ignorant]'",
+      "\u897E>'[cover]'",
+      "\u897F>'[west(ern)]'",
+      "\u8981>'[necessary]'",
+      "\u8983>'[reach to]'",
+      "\u8986>'[cover]'",
+      "\u8987>'[rule by might rather than right]'",
+      "\u8988>'[investigate]'",
+      "\u898A>'[halter]'",
+      "\u898B>'[see]'",
+      "\u898F>'[rules]'",
+      "\u8993>'[seek]'",
+      "\u8996>'[look at]'",
+      "\u8997>'[peek]'",
+      "\u8998>'[peek]'",
+      "\u899A>'[wake up from sleep]'",
+      "\u89A1>'[wizard]'",
+      "\u89A6>'[desire strongly]'",
+      "\u89A7>'[look at]'",
+      "\u89A9>'[see]'",
+      "\u89AA>'[relatives]'",
+      "\u89AC>'[covet]'",
+      "\u89AF>'[meet or see unexpectedly]'",
+      "\u89B2>'[have imperial audience]'",
+      "\u89B3>'[see]'",
+      "\u89BA>'[wake up from sleep]'",
+      "\u89BD>'[look at]'",
+      "\u89BF>'[see]'",
+      "\u89C0>'[see]'",
+      "\u89D2>'[horn]'",
+      "\u89DA>'[jug]'",
+      "\u89DC>'[beak]'",
+      "\u89DD>'[gore]'",
+      "\u89E3>'[loosen]'",
+      "\u89E6>'[butt]'",
+      "\u89E7>'[loosen]'",
+      "\u89F4>'[wine vessel]'",
+      "\u89F8>'[touch]'",
+      "\u8A00>'[words]'",
+      "\u8A02>'[draw up agreement]'",
+      "\u8A03>'[obituary]'",
+      "\u8A08>'[plan]'",
+      "\u8A0A>'[inquire]'",
+      "\u8A0C>'[confusion]'",
+      "\u8A0E>'[ask for]'",
+      "\u8A10>'[expose other''s secrets]'",
+      "\u8A13>'[teach]'",
+      "\u8A16>'[finish]'",
+      "\u8A17>'[entrust]'",
+      "\u8A18>'[record]'",
+      "\u8A1B>'[swindle]'",
+      "\u8A1D>'[express surprise]'",
+      "\u8A1F>'[accuse]'",
+      "\u8A23>'[take leave of]'",
+      "\u8A25>'[slow of speech]'",
+      "\u8A2A>'[visit]'",
+      "\u8A2D>'[build]'",
+      "\u8A31>'[allow]'",
+      "\u8A33>'[translate]'",
+      "\u8A34>'[accuse]'",
+      "\u8A36>'[scold loudly]'",
+      "\u8A3A>'[examine patient]'",
+      "\u8A3B>'[explain]'",
+      "\u8A3C>'[prove]'",
+      "\u8A41>'[exegesis]'",
+      "\u8A46>'[slander]'",
+      "\u8A48>'[scold]'",
+      "\u8A50>'[cheat]'",
+      "\u8A51>'[cheat]'",
+      "\u8A52>'[bequeath]'",
+      "\u8A54>'[decree]'",
+      "\u8A55>'[appraise]'",
+      "\u8A5B>'[curse]'",
+      "\u8A5E>'[words]'",
+      "\u8A60>'[sing]'",
+      "\u8A62>'[inquire into]'",
+      "\u8A63>'[reach]'",
+      "\u8A66>'[test]'",
+      "\u8A69>'[poetry]'",
+      "\u8A6B>'[be surprised]'",
+      "\u8A6C>'[abuse]'",
+      "\u8A6D>'[deceive]'",
+      "\u8A6E>'[explain]'",
+      "\u8A70>'[question]'",
+      "\u8A71>'[speech]'",
+      "\u8A72>'[should]'",
+      "\u8A73>'[detailed]'",
+      "\u8A7C>'[tease]'",
+      "\u8A82>'[tempt]'",
+      "\u8A84>'[eulogize]'",
+      "\u8A85>'[execute]'",
+      "\u8A87>'[exaggerate]'",
+      "\u8A89>'[fame]'",
+      "\u8A8C>'[write down]'",
+      "\u8A8D>'[recognize]'",
+      "\u8A91>'[deceive]'",
+      "\u8A93>'[swear]'",
+      "\u8A95>'[bear children]'",
+      "\u8A98>'[persuade]'",
+      "\u8A9A>'[criticize]'",
+      "\u8A9E>'[language]'",
+      "\u8AA0>'[sincere]'",
+      "\u8AA1>'[warn]'",
+      "\u8AA3>'[make false accusation]'",
+      "\u8AA4>'[err]'",
+      "\u8AA5>'[inform]'",
+      "\u8AA6>'[recite]'",
+      "\u8AA8>'[teach]'",
+      "\u8AAC>'[speak]'",
+      "\u8AAD>'[read]'",
+      "\u8AB0>'[who? whom? whose? anyone?]'",
+      "\u8AB2>'[lesson]'",
+      "\u8AB9>'[slander]'",
+      "\u8ABC>'[friendship]'",
+      "\u8ABF>'[transfer]'",
+      "\u8AC2>'[flatter]'",
+      "\u8AC4>'[patient]'",
+      "\u8AC7>'[talk]'",
+      "\u8ACB>'[ask]'",
+      "\u8ACC>'[remonstrate]'",
+      "\u8ACD>'[to expostulate]'",
+      "\u8ACF>'[consult]'",
+      "\u8AD2>'[excuse]'",
+      "\u8AD6>'[debate]'",
+      "\u8ADA>'[(kokuji) command]'",
+      "\u8ADB>'[flatter]'",
+      "\u8ADC>'[intelligence report]'",
+      "\u8ADE>'[brag]'",
+      "\u8AE0>'[noisy]'",
+      "\u8AE1>'[posthumous name]'",
+      "\u8AE2>'[jokes]'",
+      "\u8AE4>'[honest speech]'",
+      "\u8AE6>'[careful]'",
+      "\u8AE7>'[harmonize]'",
+      "\u8AEB>'[remonstrate]'",
+      "\u8AED>'[proclaim]'",
+      "\u8AEE>'[consult]'",
+      "\u8AF1>'[conceal]'",
+      "\u8AF3>'[versed in]'",
+      "\u8AF7>'[recite]'",
+      "\u8AF8>'[several]'",
+      "\u8AFA>'[proverb]'",
+      "\u8AFE>'[promise]'",
+      "\u8B00>'[plan]'",
+      "\u8B01>'[visit]'",
+      "\u8B02>'[say]'",
+      "\u8B04>'[copy]'",
+      "\u8B07>'[stutter]'",
+      "\u8B0C>'[slander]'",
+      "\u8B0E>'[riddle]'",
+      "\u8B10>'[calm]'",
+      "\u8B14>'[jeer]'",
+      "\u8B16>'[rise up]'",
+      "\u8B17>'[slander]'",
+      "\u8B19>'[humble]'",
+      "\u8B1A>'[to confer posthumous titles]'",
+      "\u8B1B>'[explain]'",
+      "\u8B1D>'[thank]'",
+      "\u8B20>'[sing]'",
+      "\u8B21>'[sing]'",
+      "\u8B26>'[t speak softly]'",
+      "\u8B28>'[scheme]'",
+      "\u8B2B>'[charge]'",
+      "\u8B2C>'[error]'",
+      "\u8B33>'[sing]'",
+      "\u8B39>'[prudent]'",
+      "\u8B3E>'[deceive]'",
+      "\u8B41>'[noise]'",
+      "\u8B49>'[proof]'",
+      "\u8B4C>'[false]'",
+      "\u8B4E>'[cunning]'",
+      "\u8B4F>'[ridicule]'",
+      "\u8B56>'[to slander]'",
+      "\u8B58>'[recognize]'",
+      "\u8B5A>'[surname]'",
+      "\u8B5B>'[to slander]'",
+      "\u8B5C>'[register]'",
+      "\u8B5F>'[clamor]'",
+      "\u8B66>'[guard]'",
+      "\u8B6B>'[talkative]'",
+      "\u8B6C>'[metaphor]'",
+      "\u8B6F>'[translate]'",
+      "\u8B70>'[consult]'",
+      //"\u8B71>'[................................]'",
+      "\u8B72>'[allow]'",
+      "\u8B74>'[reprimand]'",
+      "\u8B77>'[protect]'",
+      "\u8B7D>'[fame]'",
+      "\u8B80>'[read]'",
+      "\u8B83>'[praise]'",
+      "\u8B8A>'[change]'",
+      "\u8B8C>'[feast]'",
+      "\u8B8E>'[enemy]'",
+      "\u8B90>'[enemy]'",
+      "\u8B92>'[slander]'",
+      "\u8B93>'[allow]'",
+      "\u8B96>'[prophecy]'",
+      "\u8B99>'[cheer]'",
+      "\u8B9A>'[praise]'",
+      "\u8C37>'[valley]'",
+      "\u8C3A>'[the mouth of a valley]'",
+      "\u8C3F>'[valley]'",
+      "\u8C41>'[open up]'",
+      "\u8C46>'[beans]'",
+      "\u8C48>'[how? what?]'",
+      "\u8C4A>'[abundant]'",
+      "\u8C4C>'[peas]'",
+      "\u8C4E>'[vertical]'",
+      "\u8C50>'[abundant]'",
+      "\u8C55>'[pigs]'",
+      "\u8C5A>'[small pig]'",
+      "\u8C61>'[elephant]'",
+      "\u8C62>'[domestic animals]'",
+      "\u8C6A>'[brave]'",
+      "\u8C6B>'[relaxed]'",
+      "\u8C6C>'[pig]'",
+      "\u8C78>'[radical 153]'",
+      "\u8C79>'[leopard]'",
+      "\u8C7A>'[wolf]'",
+      "\u8C7C>'[fox]'",
+      "\u8C82>'[marten]'",
+      "\u8C85>'[brave]'",
+      "\u8C89>'[badger]'",
+      "\u8C8A>'[leopard]'",
+      "\u8C8C>'[countenance]'",
+      "\u8C8D>'[a fox-like animal]'",
+      "\u8C8E>'[lion]'",
+      "\u8C94>'[fox]'",
+      "\u8C98>'[the panther]'",
+      "\u8C9D>'[sea shell]'",
+      "\u8C9E>'[virtuous]'",
+      "\u8CA0>'[load]'",
+      "\u8CA1>'[wealth]'",
+      "\u8CA2>'[offer tribute]'",
+      "\u8CA7>'[poor]'",
+      "\u8CA8>'[goods]'",
+      "\u8CA9>'[peddler]'",
+      "\u8CAA>'[greedy]'",
+      "\u8CAB>'[string of 1000 coins]'",
+      "\u8CAC>'[one''s responsibility]'",
+      "\u8CAD>'[matter]'",
+      "\u8CAE>'[number two]'",
+      "\u8CAF>'[store]'",
+      "\u8CB0>'[borrow]'",
+      "\u8CB2>'[property]'",
+      "\u8CB3>'[number two]'",
+      "\u8CB4>'[expensive]'",
+      "\u8CB6>'[decrease]'",
+      "\u8CB7>'[buy]'",
+      "\u8CB8>'[lend]'",
+      "\u8CBB>'[expenses]'",
+      "\u8CBC>'[paste to]'",
+      "\u8CBD>'[give to]'",
+      "\u8CBF>'[trade]'",
+      "\u8CC0>'[congratulate]'",
+      "\u8CC1>'[forge ahead]'",
+      "\u8CC2>'[bribe]'",
+      "\u8CC3>'[rent]'",
+      "\u8CC4>'[bribe]'",
+      "\u8CC7>'[property]'",
+      "\u8CC8>'[surname]'",
+      "\u8CCA>'[thief]'",
+      "\u8CCD>'[booty]'",
+      "\u8CCE>'[mean]'",
+      "\u8CD1>'[relieve]'",
+      "\u8CD3>'[guest]'",
+      "\u8CDA>'[give]'",
+      "\u8CDB>'[help]'",
+      "\u8CDC>'[give]'",
+      "\u8CDE>'[reward]'",
+      "\u8CE0>'[indemnify]'",
+      "\u8CE2>'[virtuous]'",
+      "\u8CE3>'[sell]'",
+      "\u8CE4>'[mean]'",
+      "\u8CE6>'[tax]'",
+      "\u8CEA>'[matter]'",
+      "\u8CED>'[bet]'",
+      "\u8CFA>'[make money]'",
+      "\u8CFB>'[gift of money help pay funeral]'",
+      "\u8CFC>'[buy]'",
+      "\u8CFD>'[compete]'",
+      "\u8D04>'[gift superior]'",
+      "\u8D05>'[unnecessary]'",
+      "\u8D07>'[affable]'",
+      "\u8D08>'[give present]'",
+      "\u8D0A>'[help]'",
+      "\u8D0B>'[false]'",
+      "\u8D0D>'[support]'",
+      "\u8D0F>'[win]'",
+      "\u8D10>'[farewell present]'",
+      "\u8D13>'[booty]'",
+      "\u8D14>'[strong]'",
+      "\u8D16>'[buy]'",
+      "\u8D64>'[red]'",
+      "\u8D66>'[forgive]'",
+      "\u8D67>'[blush]'",
+      "\u8D6B>'[bright]'",
+      "\u8D6D>'[reddish brown]'",
+      "\u8D70>'[walk]'",
+      "\u8D71>'[walk]'",
+      "\u8D73>'[grand]'",
+      "\u8D74>'[go to]'",
+      "\u8D77>'[rise]'",
+      "\u8D81>'[take advantage of]'",
+      "\u8D85>'[jump over]'",
+      "\u8D8A>'[exceed]'",
+      "\u8D99>'[surname]'",
+      "\u8DA3>'[what attracts one''s attention]'",
+      "\u8DA8>'[hasten]'",
+      "\u8DB3>'[foot]'",
+      "\u8DBA>'[sit cross-legged]'",
+      "\u8DBE>'[toe]'",
+      "\u8DC2>'[creeping]'",
+      "\u8DCB>'[go by foot]'",
+      "\u8DCC>'[stumble]'",
+      "\u8DCF>'[sit cross-legged]'",
+      "\u8DD6>'[sole (of the foot)]'",
+      "\u8DDA>'[stagger]'",
+      "\u8DDB>'[lame]'",
+      "\u8DDD>'[distance]'",
+      "\u8DDF>'[heel]'",
+      "\u8DE1>'[search]'",
+      "\u8DE3>'[bare footed]'",
+      "\u8DE8>'[straddle]'",
+      "\u8DEA>'[kneel]'",
+      "\u8DEB>'[sound of footsteps]'",
+      "\u8DEF>'[road]'",
+      "\u8DF3>'[jump]'",
+      "\u8DF5>'[trample]'",
+      "\u8DFC>'[bent]'",
+      //"\u8DFF>'[................................]'",
+      "\u8E08>'[neglect]'",
+      "\u8E09>'[hop]'",
+      "\u8E0A>'[leap]'",
+      "\u8E0F>'[step on]'",
+      "\u8E10>'[trample]'",
+      "\u8E1D>'[ankle]'",
+      "\u8E1E>'[crouch]'",
+      "\u8E1F>'[hesitate]'",
+      "\u8E2A>'[footprints]'",
+      "\u8E30>'[exceed]'",
+      "\u8E34>'[leap]'",
+      "\u8E35>'[heel]'",
+      "\u8E42>'[trample under foot]'",
+      "\u8E44>'[hoof]'",
+      "\u8E47>'[lame]'",
+      "\u8E48>'[stamp feet]'",
+      "\u8E49>'[error]'",
+      "\u8E4A>'[footpath]'",
+      "\u8E4C>'[walk rapidly]'",
+      "\u8E50>'[take short steps]'",
+      "\u8E55>'[clear way]'",
+      "\u8E59>'[urgent]'",
+      "\u8E5F>'[trace]'",
+      "\u8E60>'[step on]'",
+      "\u8E63>'[to jump over]'",
+      "\u8E64>'[footprints]'",
+      "\u8E72>'[squat]'",
+      "\u8E74>'[kick]'",
+      "\u8E76>'[stumble]'",
+      "\u8E7C>'[webbed feet of waterfowl]'",
+      "\u8E81>'[tense]'",
+      "\u8E84>'[cripple]'",
+      "\u8E85>'[walk carefully]'",
+      "\u8E87>'[hesitate]'",
+      "\u8E8A>'[hesitate]'",
+      "\u8E8B>'[ascend]'",
+      "\u8E8D>'[skip]'",
+      "\u8E91>'[waver]'",
+      "\u8E93>'[stumble]'",
+      "\u8E94>'[follow in]'",
+      "\u8E99>'[trample down]'",
+      "\u8EA1>'[tread]'",
+      "\u8EAA>'[trample down]'",
+      "\u8EAB>'[body]'",
+      "\u8EAC>'[body]'",
+      "\u8EAF>'[body]'",
+      "\u8EB0>'[body]'",
+      "\u8EB1>'[hide]'",
+      //"\u8EBA>'[lie down]'",
+      //"\u8EC4>'[to govern]'",
+      "\u8EC6>'[body]'",
+      //"\u8EC6>'[body]'",
+      "\u8ECA>'[cart]'",
+      "\u8ECB>'[crush by weight]'",
+      "\u8ECC>'[track]'",
+      "\u8ECD>'[army]'",
+      "\u8ED2>'[carriage]'",
+      "\u8EDB>'[yoke]'",
+      "\u8EDF>'[soft]'",
+      "\u8EE2>'[shift]'",
+      "\u8EE3>'[rumble]'",
+      "\u8EEB>'[cross board at rear of carriage]'",
+      "\u8EF8>'[axle]'",
+      "\u8EFB>'[axle]'",
+      "\u8EFC>'[rush forth]'",
+      "\u8EFD>'[light]'",
+      "\u8EFE>'[horizontal wooden bar in front of a sedan chair]'",
+      "\u8F03>'[compare]'",
+      "\u8F05>'[chariot]'",
+      "\u8F09>'[load]'",
+      "\u8F0A>'[low rear portion of cart]'",
+      "\u8F0C>'[numerary adjunct for vehicles]'",
+      "\u8F12>'[sides of chariot where weapons]'",
+      "\u8F13>'[mourn]'",
+      "\u8F14>'[cheek bone]'",
+      "\u8F15>'[light]'",
+      "\u8F19>'[sides of chariot were weapons]'",
+      "\u8F1B>'[numerary adjunct for vehicles]'",
+      "\u8F1C>'[supply cart]'",
+      "\u8F1D>'[brightness]'",
+      "\u8F1F>'[stop]'",
+      "\u8F26>'[hand-cart]'",
+      "\u8F29>'[generation]'",
+      "\u8F2A>'[wheel]'",
+      "\u8F2F>'[gather up]'",
+      "\u8F33>'[hubs of wheel]'",
+      "\u8F38>'[transport]'",
+      "\u8F39>'[two pieces of wood underneath ca]'",
+      "\u8F3B>'[spokes of wheel]'",
+      "\u8F3E>'[turn over]'",
+      "\u8F3F>'[cart]'",
+      "\u8F42>'[hub of wheel]'",
+      "\u8F44>'[linchpin of wheel]'",
+      "\u8F45>'[axle]'",
+      "\u8F46>'[windlass]'",
+      "\u8F49>'[shift]'",
+      "\u8F4C>'[sled]'",
+      "\u8F4D>'[wagon ruts]'",
+      "\u8F4E>'[sedan-chair]'",
+      "\u8F57>'[fail]'",
+      "\u8F5C>'[hearse]'",
+      "\u8F5F>'[rumble]'",
+      "\u8F61>'[bridle of horse]'",
+      "\u8F62>'[run over something with vehicle]'",
+      //"\u8F63>'[................................]'",
+      "\u8F64>'[pulley]'",
+      "\u8F9B>'[bitter]'",
+      "\u8F9C>'[crime]'",
+      "\u8F9E>'[words]'",
+      "\u8F9F>'[law]'",
+      "\u8FA3>'[peppery]'",
+      "\u8FA7>'[manage]'",
+      "\u8FA8>'[distinguish]'",
+      "\u8FAD>'[words]'",
+      "\u8FAE>'[braid]'",
+      "\u8FAF>'[dispute]'",
+      "\u8FB0>'[early morning]'",
+      "\u8FB1>'[humiliate]'",
+      "\u8FB2>'[agriculture]'",
+      "\u8FB7>'[smooth]'",
+      "\u8FBA>'[edge]'",
+      "\u8FBB>'[crossroads]'",
+      "\u8FBC>'[crowd into]'",
+      "\u8FBF>'[follow]'",
+      "\u8FC2>'[doctrinaire]'",
+      "\u8FC4>'[extend]'",
+      "\u8FC5>'[quick]'",
+      "\u8FCE>'[receive]'",
+      "\u8FD1>'[near]'",
+      "\u8FD4>'[return]'",
+      "\u8FDA>'[very]'",
+      "\u8FE2>'[far]'",
+      "\u8FE5>'[distant]'",
+      "\u8FE6>'[character for transliteration]'",
+      "\u8FE9>'[be near]'",
+      "\u8FEA>'[enlighten]'",
+      "\u8FEB>'[coerce]'",
+      "\u8FED>'[repeatedly]'",
+      "\u8FEF>'[escape]'",
+      "\u8FF0>'[narrate]'",
+      "\u8FF4>'[revolve]'",
+      "\u8FF7>'[bewitch]'",
+      "\u8FF8>'[gush out]'",
+      "\u8FF9>'[traces]'",
+      "\u8FFA>'[then]'",
+      "\u8FFD>'[pursue]'",
+      "\u9000>'[step back]'",
+      "\u9001>'[see off]'",
+      "\u9003>'[escape]'",
+      "\u9005>'[meet unexpectedly]'",
+      "\u9006>'[disobey]'",
+      "\u900B>'[flee]'",
+      "\u900D>'[ramble]'",
+      "\u900E>'[strong]'",
+      "\u900F>'[penetrate]'",
+      "\u9010>'[chase]'",
+      "\u9011>'[collect]'",
+      "\u9013>'[hand over]'",
+      "\u9014>'[way]'",
+      "\u9015>'[pass by]'",
+      "\u9016>'[far]'",
+      "\u9017>'[tempt]'",
+      "\u9019>'[this]'",
+      "\u901A>'[pass through]'",
+      "\u901D>'[pass away]'",
+      "\u901E>'[indulge oneself]'",
+      "\u901F>'[quick]'",
+      "\u9020>'[construct]'",
+      "\u9021>'[retreat]'",
+      "\u9022>'[come upon]'",
+      "\u9023>'[join]'",
+      //"\u9026>'[meandering]'",
+      "\u902E>'[seize]'",
+      "\u9031>'[week]'",
+      "\u9032>'[advance]'",
+      "\u9035>'[thoroughfare]'",
+      "\u9036>'[winding]'",
+      "\u9038>'[flee]'",
+      "\u9039>'[arrive at]'",
+      "\u903C>'[compel]'",
+      "\u903E>'[go over]'",
+      "\u9041>'[hide]'",
+      "\u9042>'[comply with]'",
+      "\u9045>'[late]'",
+      "\u9047>'[meet]'",
+      "\u9049>'[spy]'",
+      "\u904A>'[wander]'",
+      "\u904B>'[luck]'",
+      "\u904D>'[everywhere]'",
+      "\u904E>'[pass]'",
+      "\u904F>'[stop]'",
+      "\u9050>'[afar]'",
+      "\u9051>'[leisure]'",
+      "\u9052>'[strong]'",
+      "\u9053>'[path]'",
+      "\u9054>'[arrive at]'",
+      "\u9055>'[disobey]'",
+      //"\u9055>'[disobey]'",
+      "\u9058>'[to meet]'",
+      "\u9059>'[far away]'",
+      "\u905C>'[humble]'",
+      "\u905E>'[hand over]'",
+      "\u9060>'[distant]'",
+      "\u9061>'[go upstream]'",
+      "\u9063>'[send]'",
+      "\u9065>'[far away]'",
+      "\u9068>'[ramble]'",
+      "\u9069>'[match]'",
+      "\u906D>'[come across]'",
+      "\u906E>'[cover]'",
+      "\u906F>'[deceive]'",
+      "\u9072>'[late]'",
+      "\u9075>'[obey]'",
+      "\u9076>'[entwine]'",
+      "\u9077>'[move]'",
+      "\u9078>'[choose]'",
+      "\u907A>'[lose]'",
+      "\u907C>'[distant]'",
+      "\u907D>'[suddenly]'",
+      "\u907F>'[avoid]'",
+      "\u9080>'[invite]'",
+      "\u9081>'[take a big stride]'",
+      "\u9082>'[unexpected meeting]'",
+      "\u9083>'[profound]'",
+      "\u9084>'[still]'",
+      "\u9087>'[be near]'",
+      "\u9089>'[edge]'",
+      "\u908A>'[edge]'",
+      "\u908F>'[patrol]'",
+      "\u9091>'[area]'",
+      "\u90A3>'[that]'",
+      "\u90A6>'[nation]'",
+      "\u90A8>'[village]'",
+      "\u90AA>'[wrong]'",
+      "\u90AF>'[city in hebei province]'",
+      "\u90B1>'[surname]'",
+      "\u90B5>'[surname]'",
+      "\u90B8>'[official residence]'",
+      "\u90C1>'[sweet smelling]'",
+      "\u90CA>'[suburbs]'",
+      "\u90CE>'[gentleman]'",
+      "\u90DB>'[outer walls of city]'",
+      "\u90E1>'[administrative division]'",
+      "\u90E2>'[state in today''s hubei province]'",
+      "\u90E4>'[crack]'",
+      "\u90E8>'[part]'",
+      "\u90ED>'[outer part (of a city)]'",
+      "\u90F5>'[postal]'",
+      "\u90F7>'[country]'",
+      "\u90FD>'[metropolis]'",
+      "\u9102>'[hubei province]'",
+      "\u9112>'[name of an ancient state]'",
+      "\u9119>'[mean]'",
+      "\u912D>'[state in today''s henan]'",
+      "\u9130>'[neighbor]'",
+      "\u9132>'[county in hebei proincev]'",
+      "\u9149>'[tenth in series of twelve cyclic]'",
+      "\u914A>'[drunk]'",
+      "\u914B>'[chief of tribe]'",
+      "\u914C>'[serve wine]'",
+      "\u914D>'[match]'",
+      "\u914E>'[double-fermented wine]'",
+      "\u9152>'[wine]'",
+      "\u9154>'[intoxicated]'",
+      "\u9156>'[wine with bird poison added]'",
+      //"\u9158>'[................................]'",
+      "\u9162>'[toast one''s host with wine]'",
+      "\u9163>'[enjoy intoxicants]'",
+      "\u9165>'[butter]'",
+      "\u9169>'[drunk]'",
+      "\u916A>'[cream]'",
+      "\u916C>'[toast]'",
+      "\u9172>'[hangover]'",
+      //"\u9172>'[hangover]'",
+      "\u9175>'[yeast]'",
+      "\u9177>'[strong]'",
+      "\u9178>'[tart]'",
+      //"\u9181>'[a kind of green-colored wine]'",
+      "\u9187>'[rich]'",
+      "\u9189>'[intoxicated]'",
+      "\u918B>'[vinegar]'",
+      "\u918D>'[essential oil of butter]'",
+      "\u9190>'[purest cream]'",
+      "\u9192>'[wake up]'",
+      "\u9197>'[to brew for the second time]'",
+      "\u919C>'[ugly looking]'",
+      "\u91A2>'[minced pickled meat]'",
+      "\u91A4>'[any jam-like or paste-like food]'",
+      "\u91AA>'[unclear wine]'",
+      "\u91AB>'[cure]'",
+      "\u91AF>'[vinegar]'",
+      "\u91B4>'[sweet wine]'",
+      "\u91B5>'[contribute for drinks]'",
+      "\u91B8>'[brew]'",
+      "\u91BA>'[get drunk]'",
+      "\u91C0>'[brew]'",
+      "\u91C1>'[smear with blood in sacrifice]'",
+      "\u91C6>'[distinguish]'",
+      "\u91C7>'[collect]'",
+      "\u91C8>'[interprete]'",
+      "\u91C9>'[glaze]'",
+      "\u91CB>'[interprete]'",
+      "\u91CC>'[unit of distance]'",
+      "\u91CD>'[heavy]'",
+      "\u91CE>'[open country]'",
+      "\u91CF>'[measure]'",
+      "\u91D0>'[manage]'",
+      "\u91D1>'[gold]'",
+      "\u91D6>'[knife]'",
+      "\u91D8>'[nail]'",
+      //"\u91DB>'[................................]'",
+      "\u91DC>'[cauldron]'",
+      "\u91DD>'[needle]'",
+      //"\u91DF>'[................................]'",
+      "\u91E1>'[cauldron]'",
+      "\u91E3>'[fish]'",
+      "\u91E6>'[button]'",
+      "\u91E7>'[bracelet]'",
+      "\u91F5>'[ornamental hairpin]'",
+      //"\u91F6>'[................................]'",
+      "\u91FC>'[sword]'",
+      //"\u91FF>'[................................]'",
+      "\u920D>'[blunt]'",
+      "\u920E>'[hook]'",
+      "\u9211>'[plate]'",
+      "\u9214>'[paper money]'",
+      "\u9215>'[button]'",
+      "\u921E>'[unit of measure equivalent thirt]'",
+      "\u9229>'[fireplace]'",
+      "\u922C>'[bell]'",
+      "\u9234>'[bell]'",
+      "\u9237>'[cobalt]'",
+      "\u923F>'[hairpin]'",
+      "\u9244>'[iron]'",
+      "\u9245>'[steel]'",
+      "\u9248>'[thallium]'",
+      "\u9249>'[device for carrying a tripod]'",
+      "\u924B>'[carpenter''s plane]'",
+      //"\u9250>'[................................]'",
+      "\u9257>'[pincers]'",
+      "\u925A>'[rivet]'",
+      "\u925B>'[lead plumbum]'",
+      "\u925E>'[broad-axe]'",
+      "\u9262>'[earthenware basin]'",
+      "\u9264>'[hook]'",
+      "\u9266>'[kind of gong used in ancient tim]'",
+      "\u9271>'[mine]'",
+      "\u927E>'[spear]'",
+      "\u9280>'[silver]'",
+      "\u9283>'[ancient weapon]'",
+      "\u9285>'[copper]'",
+      "\u9291>'[mill]'",
+      "\u9293>'[weigh]'",
+      "\u9295>'[iron]'",
+      "\u9296>'[unit of weight]'",
+      "\u9298>'[inscribe]'",
+      "\u929A>'[large hoe]'",
+      "\u929B>'[sharp]'",
+      "\u929C>'[bit]'",
+      "\u92AD>'[money]'",
+      "\u92B7>'[melt]'",
+      "\u92B9>'[rust]'",
+      "\u92CF>'[tongs]'",
+      "\u92D2>'[point of spear]'",
+      "\u92E4>'[hoe]'",
+      "\u92E9>'[point of sword]'",
+      "\u92EA>'[spread out]'",
+      "\u92ED>'[sharp]'",
+      "\u92F2>'[rivet]'",
+      "\u92F3>'[melt]'",
+      "\u92F8>'[a saw]'",
+      //"\u92FA>'[................................]'",
+      "\u92FC>'[steel]'",
+      "\u9306>'[the color of a mineral]'",
+      "\u930F>'[soft steel]'",
+      "\u9310>'[gimlet]'",
+      "\u9318>'[balance weight on scale]'",
+      "\u9319>'[8 oz]'",
+      "\u931A>'[clanging sound]'",
+      "\u9320>'[spindle]'",
+      "\u9322>'[money]'",
+      //"\u9323>'[................................]'",
+      "\u9326>'[brocade]'",
+      "\u9328>'[anchor]'",
+      "\u932B>'[tin]'",
+      "\u932C>'[smelt metals]'",
+      "\u932E>'[run metal into cracks]'",
+      "\u932F>'[error]'",
+      "\u9332>'[copy]'",
+      //"\u9335>'[................................]'",
+      //"\u933A>'[................................]'",
+      //"\u933B>'[................................]'",
+      //"\u9344>'[................................]'",
+      "\u934B>'[cooking-pot]'",
+      "\u934D>'[plate]'",
+      "\u9354>'[high]'",
+      //"\u9356>'[................................]'",
+      "\u935B>'[forge metal]'",
+      //"\u935C>'[................................]'",
+      "\u9360>'[weapon]'",
+      "\u936C>'[shovel]'",
+      "\u936E>'[brass]'",
+      "\u9375>'[door bolt]'",
+      "\u937C>'[needle]'",
+      "\u937E>'[cup]'",
+      "\u938C>'[sickle]'",
+      "\u9394>'[fuse]'",
+      "\u9396>'[lock]'",
+      "\u9397>'[rifle]'",
+      "\u939A>'[hammer]'",
+      "\u93A7>'[armor]'",
+      "\u93AC>'[stove]'",
+      "\u93AD>'[town]'",
+      "\u93AE>'[town]'",
+      "\u93B0>'[measure of weight for gold]'",
+      //"\u93B9>'[................................]'",
+      "\u93C3>'[arrowhead]'",
+      "\u93C8>'[chain]'",
+      "\u93D0>'[pure gold]'",
+      "\u93D1>'[dysprosium the barb of an arrow]'",
+      "\u93D6>'[fight end]'",
+      "\u93D7>'[strike]'",
+      "\u93D8>'[tinkle]'",
+      "\u93DD>'[trowel]'",
+      "\u93E1>'[mirror]'",
+      "\u93E4>'[carve]'",
+      "\u93E5>'[rust]'",
+      "\u93E8>'[engraving tool]'",
+      "\u9403>'[cymbals]'",
+      "\u9407>'[vanadium]'",
+      "\u9410>'[fetters]'",
+      "\u9413>'[ferrule]'",
+      "\u9414>'[dagger]'",
+      "\u9418>'[clock]'",
+      "\u9419>'[lamp]'",
+      "\u941A>'[soft steel]'",
+      "\u9421>'[iron]'",
+      "\u942B>'[engraving tool]'",
+      "\u9435>'[iron]'",
+      "\u9436>'[metal ring]'",
+      "\u9438>'[bell]'",
+      "\u943A>'[frying pan]'",
+      //"\u9441>'[................................]'",
+      "\u9444>'[melt]'",
+      "\u9451>'[mirror]'",
+      "\u9452>'[mirror]'",
+      "\u9453>'[spear]'",
+      "\u945A>'[drill]'",
+      "\u945B>'[mine]'",
+      "\u945E>'[solder]'",
+      "\u9460>'[melt]'",
+      "\u9462>'[file]'",
+      "\u946A>'[fireplace]'",
+      "\u9470>'[key]'",
+      "\u9475>'[jar]'",
+      "\u9477>'[tweezers]'",
+      "\u947C>'[gong]'",
+      "\u947D>'[drill]'",
+      "\u947E>'[bells hung on horse]'",
+      "\u947F>'[chisel]'",
+      "\u9481>'[a mattock]'",
+      "\u9577>'[long]'",
+      "\u9580>'[gate]'",
+      "\u9582>'[bolt]'",
+      "\u9583>'[flash]'",
+      "\u9587>'[shut]'",
+      "\u9589>'[shut]'",
+      //"\u9589>'[shut]'",
+      "\u958B>'[open]'",
+      "\u958F>'[intercalary]'",
+      "\u9591>'[fence]'",
+      "\u9593>'[interval]'",
+      "\u9594>'[mourn]'",
+      //"\u9594>'[mourn]'",
+      "\u9598>'[sluice]'",
+      "\u9599>'[quarrel]'",
+      "\u95A0>'[intercalary]'",
+      "\u95A2>'[frontier pass]'",
+      "\u95A3>'[chamber]'",
+      "\u95A4>'[small side door]'",
+      "\u95A5>'[powerful and influential group]'",
+      "\u95A7>'[boisterous]'",
+      "\u95A8>'[small entrance]'",
+      "\u95AD>'[village of twenty-five families]'",
+      "\u95B2>'[examine]'",
+      "\u95B9>'[castrate]'",
+      "\u95BB>'[village gate]'",
+      "\u95BC>'[block]'",
+      "\u95BE>'[threshold]'",
+      "\u95C3>'[alone]'",
+      "\u95C7>'[close]'",
+      "\u95CA>'[broad]'",
+      "\u95CC>'[door screen]'",
+      "\u95CD>'[tower over city gate]'",
+      "\u95D4>'[close]'",
+      "\u95D5>'[watch tower]'",
+      "\u95D6>'[rush in]'",
+      "\u95D8>'[struggle]'",
+      "\u95DC>'[frontier pass]'",
+      "\u95E1>'[explain]'",
+      "\u95E2>'[open]'",
+      "\u95E5>'[door]'",
+      "\u961C>'[mound]'",
+      "\u9621>'[footpaths between fields]'",
+      "\u9628>'[in distress]'",
+      "\u962A>'[hillside farmland]'",
+      "\u962E>'[ancient musical instrument: surname]'",
+      "\u962F>'[foundation]'",
+      "\u9632>'[defend]'",
+      "\u963B>'[impede]'",
+      "\u963F>'[prefix to name]'",
+      "\u9640>'[steep bank]'",
+      "\u9642>'[dam]'",
+      "\u9644>'[adhere to]'",
+      "\u964B>'[narrow]'",
+      "\u964C>'[foot path between rice fields]'",
+      "\u964D>'[descend]'",
+      //"\u964D>'[descend]'",
+      "\u9650>'[boundary]'",
+      "\u965B>'[steps leading throne]'",
+      "\u965C>'[narrow]'",
+      "\u965D>'[mountain pass]'",
+      "\u965E>'[promote]'",
+      "\u965F>'[climb]'",
+      "\u9662>'[courtyard]'",
+      "\u9663>'[column]'",
+      "\u9664>'[eliminate]'",
+      "\u9665>'[submerge]'",
+      //"\u9665>'[submerge]'",
+      "\u966A>'[accompany]'",
+      "\u966C>'[corner]'",
+      "\u9670>'['\"female\" principle']'",
+      "\u9672>'[frontier]'",
+      "\u9673>'[exhibit]'",
+      "\u9675>'[hill]'",
+      "\u9676>'[pottery]'",
+      "\u9677>'[submerge]'",
+      "\u9678>'[land]'",
+      "\u967A>'[narrow pass]'",
+      "\u967D>'['\"male\" principle']'",
+      "\u9685>'[corner]'",
+      "\u9686>'[prosperous]'",
+      "\u9688>'[cove]'",
+      "\u968A>'[team]'",
+      "\u968B>'[Sui dynasty]'",
+      "\u968D>'[dry ditch]'",
+      "\u968E>'[stairs]'",
+      "\u968F>'[follow]'",
+      "\u9694>'[separate]'",
+      "\u9695>'[fall]'",
+      "\u9697>'[high]'",
+      "\u9698>'[narrow]'",
+      "\u9699>'[crack]'",
+      "\u969B>'[border]'",
+      "\u969C>'[separate]'",
+      //"\u969C>'[separate]'",
+      "\u96A3>'[neighbor]'",
+      "\u96A7>'[tunnel]'",
+      "\u96A8>'[follow]'",
+      "\u96AA>'[narrow pass]'",
+      "\u96B0>'[low]'",
+      "\u96B1>'[hide]'",
+      "\u96B2>'[stallion]'",
+      "\u96B4>'[mountain located between shaanxi]'",
+      "\u96B6>'[subservient]'",
+      "\u96B7>'[be subservient to]'",
+      "\u96B8>'[be subservient to]'",
+      "\u96B9>'[bird]'",
+      "\u96BB>'[single]'",
+      "\u96BC>'[aquiline (nose)]'",
+      "\u96C0>'[sparrow]'",
+      "\u96C1>'[wild goose]'",
+      "\u96C4>'[male of species]'",
+      "\u96C5>'[elegant]'",
+      "\u96C6>'[assemble]'",
+      "\u96C7>'[employ]'",
+      "\u96C9>'[pheasant]'",
+      "\u96CB>'[superior]'",
+      "\u96CC>'[female]'",
+      "\u96CD>'[harmony]'",
+      "\u96CE>'[osprey]'",
+      "\u96D1>'[mixed]'",
+      "\u96D5>'[engrave]'",
+      "\u96D6>'[although]'",
+      "\u96D9>'[set of two]'",
+      "\u96DB>'[chick]'",
+      "\u96DC>'[mixed]'",
+      "\u96E2>'[leave]'",
+      "\u96E3>'[difficult]'",
+      "\u96E8>'[rain]'",
+      "\u96EA>'[snow]'",
+      //"\u96EB>'[................................]'",
+      "\u96F0>'[atmosphere]'",
+      "\u96F2>'[clouds]'",
+      "\u96F6>'[zero]'",
+      "\u96F7>'[thunder]'",
+      "\u96F9>'[hail]'",
+      "\u96FB>'[electricity]'",
+      "\u9700>'[need]'",
+      "\u9704>'[sky]'",
+      "\u9706>'[a sudden peal of thunder]'",
+      "\u9707>'[shake]'",
+      "\u9708>'[torrential rains]'",
+      "\u970A>'[spirit]'",
+      "\u970D>'[quickly]'",
+      "\u970E>'[light rain]'",
+      "\u970F>'[falling of snow and rain]'",
+      "\u9711>'[be moistened]'",
+      "\u9713>'[rainbow]'",
+      "\u9716>'[long spell of rain]'",
+      "\u9719>'[sleet]'",
+      "\u971C>'[frost]'",
+      "\u971E>'[rosy clouds]'",
+      "\u9724>'[drip]'",
+      "\u9727>'[fog]'",
+      "\u972A>'[long and heavy rain]'",
+      "\u9730>'[hail]'",
+      "\u9732>'[dew]'",
+      "\u9738>'[rule by might rather than right]'",
+      "\u9739>'[thunder]'",
+      "\u973D>'[clear up after rain cease be ang]'",
+      "\u973E>'[misty]'",
+      "\u9742>'[thunderclap]'",
+      "\u9744>'[cloudy sky]'",
+      "\u9746>'[cloudy sky]'",
+      "\u9748>'[spirit]'",
+      "\u9749>'[cloudy sky]'",
+      "\u9752>'[blue]'",
+      "\u9756>'[pacify]'",
+      "\u9759>'[quiet]'",
+      "\u975C>'[quiet]'",
+      "\u975E>'[not]'",
+      "\u9760>'[lean on]'",
+      "\u9761>'[divide]'",
+      "\u9762>'[face]'",
+      //"\u9764>'[................................]'",
+      "\u9766>'[timid]'",
+      "\u9768>'[dimples]'",
+      "\u9769>'[leather]'",
+      "\u976B>'[strong and pliable]'",
+      "\u976D>'[strong and pliable]'",
+      "\u9771>'[strong and pliable]'",
+      "\u9774>'[boots]'",
+      //"\u9779>'[................................]'",
+      "\u977A>'[stocking]'",
+      "\u977C>'[tartars]'",
+      //"\u9781>'[................................]'",
+      "\u9784>'[to work hides]'",
+      "\u9785>'[leather strap over horse''s neck]'",
+      //"\u9785>'[leather strap over horse''s neck]'",
+      "\u978B>'[shoes]'",
+      "\u978D>'[saddle]'",
+      "\u978F>'[bind]'",
+      //"\u978F>'[bind]'",
+      "\u9798>'[scabbard]'",
+      //"\u979C>'[................................]'",
+      "\u97A0>'[bow]'",
+      "\u97A3>'[tan]'",
+      "\u97A6>'[leather stap]'",
+      "\u97A8>'[tribe]'",
+      "\u97AB>'[interrogate]'",
+      "\u97AD>'[whip]'",
+      //"\u97B3>'[................................]'",
+      "\u97B4>'[saddle up horse]'",
+      "\u97C3>'[tatars]'",
+      "\u97C6>'[swing]'",
+      "\u97C8>'[socks]'",
+      "\u97CB>'[tanned leather]'",
+      "\u97D3>'[fence]'",
+      "\u97DC>'[sheath]'",
+      "\u97ED>'[scallion]'",
+      "\u97EE>'[scallion]'",
+      "\u97F2>'[break or smash into pieces]'",
+      "\u97F3>'[sound]'",
+      "\u97F5>'[rhyme]'",
+      "\u97F6>'[music of emperor Shun]'",
+      "\u97FB>'[rhyme]'",
+      "\u97FF>'[make sound]'",
+      "\u9801>'[page]'",
+      "\u9802>'[top]'",
+      "\u9803>'[moment]'",
+      "\u9805>'[neck]'",
+      "\u9806>'[obey]'",
+      "\u9808>'[must]'",
+      "\u980C>'[laud]'",
+      "\u980F>'[fly down or downward]'",
+      "\u9810>'[prepare]'",
+      "\u9811>'[obstinate]'",
+      "\u9812>'[confer]'",
+      "\u9813>'[pause]'",
+      "\u9817>'[lean one side]'",
+      "\u9818>'[neck]'",
+      "\u981A>'[neck]'",
+      "\u9821>'[fly upward]'",
+      "\u9824>'[cheeks]'",
+      "\u982C>'[cheeks]'",
+      "\u982D>'[head]'",
+      "\u9834>'[rice tassel]'",
+      "\u9837>'[chin]'",
+      "\u9838>'[neck]'",
+      "\u983B>'[frequently]'",
+      "\u983C>'[rely]'",
+      "\u983D>'[ruined]'",
+      "\u9846>'[grain]'",
+      "\u984B>'[lower part of face]'",
+      "\u984C>'[forehead]'",
+      "\u984D>'[forehead]'",
+      "\u984E>'[jaw]'",
+      "\u984F>'[face]'",
+      "\u9854>'[face]'",
+      "\u9855>'[manifest]'",
+      "\u9858>'[desire]'",
+      "\u985B>'[top]'",
+      "\u985E>'[class]'",
+      "\u9867>'[look back]'",
+      "\u986B>'[shiver]'",
+      "\u986F>'[manifest]'",
+      "\u9870>'[frown]'",
+      "\u9871>'[skull]'",
+      "\u9873>'[the temporal bone]'",
+      "\u9874>'[cheek bones]'",
+      "\u98A8>'[wind]'",
+      //"\u98A8>'[wind]'",
+      "\u98AF>'[sound of wind]'",
+      "\u98B1>'[taiphoon]'",
+      "\u98B6>'[cyclone]'",
+      "\u98C3>'[whirlwind]'",
+      "\u98C4>'[whirlwind]'",
+      "\u98C6>'[whirlwind]'",
+      "\u98DB>'[fly]'",
+      "\u98DC>'[flip over]'",
+      "\u98DF>'[eat]'",
+      "\u98E2>'[hunger]'",
+      "\u98E9>'[stuffed dumplings]'",
+      "\u98EB>'[surfeited]'",
+      "\u98ED>'[order]'",
+      "\u98EE>'[drink]'",
+      "\u98EF>'[cooked rice]'",
+      "\u98F2>'[drink]'",
+      "\u98F4>'[sweet-meats]'",
+      "\u98FC>'[raise animals]'",
+      "\u98FD>'[eat heartily]'",
+      "\u98FE>'[decorate]'",
+      "\u9903>'[stuffed dumplings]'",
+      "\u9905>'[rice-cakes]'",
+      "\u9909>'[rations and pay for soldiers]'",
+      "\u990A>'[raise]'",
+      "\u990C>'[bait]'",
+      "\u9910>'[eat]'",
+      "\u9912>'[hungry]'",
+      "\u9913>'[be hungry]'",
+      "\u9914>'[eat]'",
+      "\u9918>'[surplus]'",
+      //"\u991D>'[................................]'",
+      "\u991E>'[farewell party]'",
+      "\u9920>'[rice-cakes]'",
+      "\u9921>'[pastry filling]'",
+      "\u9924>'[incite]'",
+      "\u9928>'[public building]'",
+      "\u992C>'[porridge]'",
+      "\u992E>'[a legendary animal]'",
+      "\u993D>'[make present of food]'",
+      "\u993E>'[distill]'",
+      //"\u9941>'[carry meal to workers in field]'",
+      "\u9945>'[steamed bread]'",
+      "\u9949>'[time of famine or crop failure]'",
+      "\u994B>'[offer food superior]'",
+      "\u994C>'[feed]'",
+      "\u9950>'[spoiled]'",
+      "\u9951>'[starve]'",
+      "\u9952>'[bountiful]'",
+      "\u9955>'[gluttonous]'",
+      "\u9957>'[host banquet]'",
+      "\u9996>'[head]'",
+      "\u9997>'[cheekbone]'",
+      "\u9998>'[cut off left ear]'",
+      "\u9999>'[fragrant]'",
+      "\u99A5>'[fragrance]'",
+      "\u99A8>'[fragrant]'",
+      "\u99AC>'[horse]'",
+      "\u99AD>'[drive]'",
+      "\u99AE>'[surname]'",
+      "\u99B3>'[go quickly or swiftly]'",
+      "\u99B4>'[tame]'",
+      //"\u99BC>'[................................]'",
+      "\u99C1>'[varicolored]'",
+      //"\u99C3>'[gallop]'",
+      "\u99C5>'[relay station]'",
+      "\u99C6>'[spur horse on]'",
+      "\u99C8>'[spur horse on]'",
+      "\u99D0>'[to be stationed at]'",
+      "\u99D1>'[tired]'",
+      "\u99D2>'[colt]'",
+      "\u99D5>'[drive]'",
+      "\u99D8>'[tired]'",
+      "\u99DB>'[sail]'",
+      "\u99DD>'[camel]'",
+      "\u99DF>'[team of four horses]'",
+      "\u99E2>'[team of horses]'",
+      "\u99ED>'[terrify]'",
+      "\u99EE>'[a kind of fierce animal]'",
+      "\u99F1>'[white horse w. black mane]'",
+      //"\u99F1>'[white horse w. black mane]'",
+      "\u99F8>'[galloping]'",
+      //"\u99FB>'[................................]'",
+      "\u99FF>'[excellent horse]'",
+      "\u9A01>'[gallop horse]'",
+      "\u9A05>'[piebald horse]'",
+      "\u9A0E>'[ride horseback]'",
+      "\u9A0F>'[piebald horse]'",
+      "\u9A12>'[harass]'",
+      "\u9A13>'[test]'",
+      "\u9A19>'[swindle]'",
+      "\u9A28>'[dappled]'",
+      "\u9A2B>'[raise]'",
+      "\u9A30>'[fly]'",
+      "\u9A37>'[harass]'",
+      "\u9A3E>'[mule]'",
+      "\u9A40>'[suddenly]'",
+      "\u9A42>'[two outside ones in three horse]'",
+      "\u9A43>'[charger]'",
+      "\u9A45>'[spur horse on]'",
+      "\u9A4D>'[excellent horse]'",
+      "\u9A55>'[spirited horse]'",
+      "\u9A57>'[test]'",
+      "\u9A5A>'[frighten]'",
+      "\u9A5B>'[relay station]'",
+      "\u9A5F>'[procedure]'",
+      "\u9A62>'[donkey]'",
+      "\u9A64>'[gallop about with head uplifted]'",
+      "\u9A65>'[thoroughbred horse]'",
+      "\u9A69>'[happy]'",
+      "\u9A6A>'[pure black horse]'",
+      "\u9A6B>'[horses]'",
+      "\u9AA8>'[bone]'",
+      "\u9AAD>'[shin bone]'",
+      "\u9AB0>'[die]'",
+      "\u9AB8>'[skelton]'",
+      "\u9ABC>'[bone]'",
+      "\u9AC0>'[buttocks]'",
+      "\u9AC4>'[bone marrow]'",
+      "\u9ACF>'[skull]'",
+      "\u9AD1>'[skull]'",
+      "\u9AD3>'[bone marrow]'",
+      "\u9AD4>'[body]'",
+      "\u9AD8>'[high]'",
+      "\u9ADE>'[high]'",
+      "\u9ADF>'[hair]'",
+      "\u9AE2>'[wig]'",
+      "\u9AE3>'[similar to]'",
+      "\u9AE6>'[flowing hair of young child]'",
+      "\u9AEA>'[hair]'",
+      "\u9AEB>'[children''s hair style]'",
+      "\u9AED>'[mustache]'",
+      "\u9AEE>'[hair]'",
+      "\u9AEF>'[beard]'",
+      //"\u9AF1>'[................................]'",
+      "\u9AF4>'[disheveled hair]'",
+      //"\u9AF7>'[................................]'",
+      "\u9AFB>'[hair rolled up in a bun]'",
+      "\u9B06>'[lax]'",
+      "\u9B18>'[beautiful hair]'",
+      "\u9B1A>'[beard]'",
+      "\u9B1F>'[dress hair in coiled knot]'",
+      "\u9B22>'[hair on temples]'",
+      "\u9B23>'[horse''s mane]'",
+      "\u9B25>'[struggle]'",
+      "\u9B27>'[quarrel]'",
+      "\u9B28>'[boisterous]'",
+      "\u9B29>'[feud]'",
+      "\u9B2A>'[struggle]'",
+      "\u9B2E>'[lots (to be drawn)]'",
+      "\u9B2F>'[sacrificial wine]'",
+      "\u9B31>'[luxuriant]'",
+      "\u9B32>'[type of caldron]'",
+      "\u9B3B>'[sell]'",
+      "\u9B3C>'[ghost]'",
+      "\u9B41>'[chief]'",
+      "\u9B42>'[soul]'",
+      "\u9B43>'[drought demon]'",
+      "\u9B44>'[vigor]'",
+      "\u9B45>'[kind of forest demon]'",
+      "\u9B4D>'[demons]'",
+      "\u9B4E>'[a kind of monster]'",
+      "\u9B4F>'[kingdom of wei]'",
+      "\u9B51>'[a montain demon resembling tiger]'",
+      "\u9B54>'[demon]'",
+      "\u9B58>'[nightmare]'",
+      "\u9B5A>'[fish]'",
+      "\u9B6F>'[foolish]'",
+      "\u9B74>'[bream]'",
+      //"\u9B81>'[the bonito]'",
+      "\u9B8E>'[sheatfish]'",
+      "\u9B91>'[abalone]'",
+      "\u9B92>'[carp]'",
+      "\u9B93>'[minced and salted fish]'",
+      //"\u9B93>'[minced and salted fish]'",
+      //"\u9B93>'[minced and salted fish]'",
+      "\u9B9F>'[anglerfish]'",
+      "\u9BA0>'[a kind of shad with a head like a sturgeon]'",
+      //"\u9BA8>'[................................]'",
+      "\u9BAA>'[kind of sturgeon]'",
+      "\u9BAB>'[shark]'",
+      "\u9BAD>'[salmon]'",
+      "\u9BAE>'[fresh]'",
+      //"\u9BB4>'[................................]'",
+      //"\u9BB9>'[................................]'",
+      "\u9BC0>'[giant fish]'",
+      "\u9BC6>'[the skate or ray]'",
+      "\u9BC9>'[carp]'",
+      "\u9BCA>'[shark]'",
+      "\u9BCF>'[a dialect........ name of fish]'",
+      //"\u9BD1>'[................................]'",
+      //"\u9BD2>'[................................]'",
+      "\u9BD4>'[mullet]'",
+      "\u9BD6>'[mackerel]'",
+      "\u9BDB>'[pagrosomus major]'",
+      "\u9BE1>'[herring]'",
+      "\u9BE2>'[cryptobranchus japonicus]'",
+      //"\u9BE3>'[................................]'",
+      "\u9BE4>'[spawn]'",
+      "\u9BE8>'[whale]'",
+      "\u9BF0>'[sheat]'",
+      //"\u9BF1>'[................................]'",
+      //"\u9BF1>'[................................]'",
+      //"\u9BF1>'[................................]'",
+      //"\u9C04>'[................................]'",
+      //"\u9C06>'[................................]'",
+      "\u9C08>'[flatfish]'",
+      "\u9C09>'[sturgeon]'",
+      //"\u9C0A>'[................................]'",
+      "\u9C0C>'[loach]'",
+      "\u9C0D>'[loach]'",
+      "\u9C10>'[alligator]'",
+      "\u9C12>'[abalone]'",
+      "\u9C13>'[fish gills]'",
+      //"\u9C14>'[................................]'",
+      "\u9C15>'[shrimp]'",
+      "\u9C1B>'[sardine]'",
+      //"\u9C21>'[................................]'",
+      //"\u9C24>'[................................]'",
+      "\u9C25>'[huge fish]'",
+      "\u9C2D>'[fin]'",
+      "\u9C2E>'[sardine]'",
+      //"\u9C2F>'[................................]'",
+      //"\u9C2F>'[................................]'",
+      "\u9C32>'[huge sea turtle]'",
+      "\u9C39>'[skipjack]'",
+      //"\u9C3A>'[................................]'",
+      "\u9C3B>'[eel]'",
+      "\u9C3E>'[swimming bladder of fish]'",
+      //"\u9C46>'[................................]'",
+      "\u9C47>'[anglerfish]'",
+      "\u9C48>'[codfish]'",
+      "\u9C52>'[barbel]'",
+      "\u9C57>'[fish scales]'",
+      //"\u9C58>'[sturgeon]'",
+      "\u9C60>'[minced fish]'",
+      "\u9C67>'[snakehead]'",
+      //"\u9C76>'[................................]'",
+      "\u9C78>'[sea perch]'",
+      "\u9CE5>'[bird]'",
+      "\u9CE7>'[wild duck]'",
+      "\u9CE9>'[pigeon]'",
+      "\u9CEB>'[wild goose]'",
+      "\u9CEC>'[wild duck]'",
+      //"\u9CF0>'[................................]'",
+      "\u9CF3>'[male phoenix]'",
+      "\u9CF4>'[cry of bird or animal]'",
+      "\u9CF6>'[kite]'",
+      "\u9D03>'[shrike]'",
+      "\u9D06>'[bird resembling secretary falcon]'",
+      "\u9D07>'[bustard]'",
+      "\u9D08>'[wild goose]'",
+      "\u9D09>'[crow]'",
+      "\u9D0E>'[seagull]'",
+      "\u9D12>'[species of lark]'",
+      "\u9D15>'[ostrich]'",
+      "\u9D1B>'[male mandarin duck]'",
+      "\u9D1F>'[kite]'",
+      "\u9D23>'[species of taiwan pigeon]'",
+      "\u9D26>'[female mandarin duck]'",
+      "\u9D28>'[duck]'",
+      "\u9D2A>'[swoop]'",
+      "\u9D2B>'[a snipe]'",
+      "\u9D2C>'[oriole]'",
+      "\u9D3B>'[species of wild swan]'",
+      //"\u9D3E>'[................................]'",
+      "\u9D3F>'[pigeon]'",
+      //"\u9D41>'[................................]'",
+      "\u9D44>'[kite]'",
+      //"\u9D44>'[kite]'",
+      //"\u9D44>'[kite]'",
+      //"\u9D50>'[................................]'",
+      "\u9D51>'[cuckoo]'",
+      "\u9D59>'[a shrike]'",
+      "\u9D5C>'[pelican]'",
+      "\u9D5D>'[goose]'",
+      "\u9D5E>'[goose]'",
+      "\u9D60>'[target]'",
+      "\u9D61>'[species of parrot]'",
+      //"\u9D61>'[species of parrot]'",
+      "\u9D6C>'[fabulous bird of enormous size]'",
+      "\u9D6F>'[bird]'",
+      "\u9D72>'[magpie]'",
+      //"\u9D7A>'[................................]'",
+      "\u9D87>'[thrush]'",
+      "\u9D89>'[quail]'",
+      "\u9D8F>'[chicken]'",
+      "\u9D9A>'[osprey]'",
+      //"\u9DA4>'[................................]'",
+      "\u9DA9>'[duck]'",
+      "\u9DAB>'[thrush]'",
+      "\u9DAF>'[oriole]'",
+      //"\u9DB1>'[soar]'",
+      "\u9DB4>'[crane]'",
+      "\u9DB8>'[[not found in any dictionary]]'",
+      "\u9DBA>'[wagtail]'",
+      "\u9DBB>'[a kind of pigeon]'",
+      "\u9DC1>'[fishhawk bow or prow]'",
+      "\u9DC2>'[sparrow hawk]'",
+      "\u9DC4>'[chicken]'",
+      "\u9DC6>'[bird name]'",
+      "\u9DCF>'[bird name]'",
+      "\u9DD3>'[partridge]'",
+      "\u9DD9>'[hawk]'",
+      "\u9DE6>'[wren]'",
+      //"\u9DEB>'[turquoise kingfisher]'",
+      "\u9DEF>'[wren]'",
+      "\u9DF2>'[condor]'",
+      "\u9DF8>'[snipe]'",
+      "\u9DF9>'[eagle]'",
+      "\u9DFA>'[heron]'",
+      "\u9DFD>'[oriental bullfinch]'",
+      "\u9E1A>'[species of parrot]'",
+      "\u9E1B>'[crane]'",
+      "\u9E1E>'[fabulous bird]'",
+      "\u9E75>'[saline soil]'",
+      "\u9E78>'[alkaline]'",
+      "\u9E79>'[salty]'",
+      "\u9E7D>'[salt]'",
+      "\u9E7F>'[deer]'",
+      "\u9E81>'[rough]'",
+      "\u9E88>'[species of deer]'",
+      "\u9E8B>'[elk]'",
+      "\u9E8C>'[stag]'",
+      "\u9E91>'[fawn]'",
+      "\u9E92>'[legendary auspicious animal]'",
+      "\u9E93>'[foot of hill]'",
+      "\u9E95>'[muntjac deer]'",
+      "\u9E97>'[beautiful]'",
+      "\u9E9D>'[musk deer]'",
+      "\u9E9F>'[female of chinese unicorn]'",
+      "\u9EA5>'[wheat]'",
+      "\u9EA6>'[wheat]'",
+      "\u9EA9>'[bran]'",
+      "\u9EAA>'[flour]'",
+      //"\u9EAB>'[flour]'",
+      "\u9EB8>'[bran]'",
+      "\u9EB9>'[yeast]'",
+      "\u9EBA>'[flour]'",
+      "\u9EBB>'[hemp]'",
+      "\u9EBC>'[interrogative final particle]'",
+      "\u9EBE>'[pennant]'",
+      "\u9EBF>'[I]'",
+      "\u9EC4>'[yellow]'",
+      "\u9ECC>'[school]'",
+      "\u9ECD>'[glutinous millet]'",
+      "\u9ECE>'[surname]'",
+      "\u9ECF>'[stick to]'",
+      "\u9ED0>'[stick]'",
+      "\u9ED2>'[black]'",
+      "\u9ED4>'[black]'",
+      "\u9ED8>'[silent]'",
+      "\u9ED9>'[silent]'",
+      "\u9EDB>'[blacken eyebrows]'",
+      "\u9EDC>'[dismiss]'",
+      "\u9EDD>'[black]'",
+      "\u9EDE>'[dot]'",
+      "\u9EE0>'[sly]'",
+      "\u9EE5>'[tattooing face]'",
+      "\u9EE8>'[political party]'",
+      "\u9EEF>'[dark]'",
+      "\u9EF4>'[mold]'",
+      "\u9EF6>'[mole]'",
+      "\u9EF7>'[dishonor]'",
+      "\u9EF9>'[embroidery]'",
+      "\u9EFB>'[special pattern of embroidery]'",
+      "\u9EFC>'[embroidered official or sacrific]'",
+      "\u9EFD>'[to strive]'",
+      "\u9F07>'[huge sea turtle]'",
+      "\u9F08>'[fresh water turtle]'",
+      "\u9F0E>'[large]'",
+      "\u9F13>'[drum]'",
+      "\u9F15>'[rattle of drums]'",
+      "\u9F20>'[rat]'",
+      "\u9F21>'[rat]'",
+      "\u9F2C>'[weasel]'",
+      "\u9F3B>'[nose]'",
+      "\u9F3E>'[snore loudly]'",
+      "\u9F4A>'[even]'",
+      "\u9F4B>'[vegetarian diet]'",
+      "\u9F4E>'[take in both hands and offer to]'",
+      "\u9F4F>'[break or smash into pieces]'",
+      "\u9F52>'[teeth]'",
+      "\u9F54>'[lose baby teeth and get adult te]'",
+      "\u9F5F>'[irregular teeth]'",
+      "\u9F60>'[lose baby teeth and get adult teeth]'",
+      "\u9F61>'[age]'",
+      "\u9F62>'[age]'",
+      "\u9F63>'[act]'",
+      "\u9F66>'[gums]'",
+      "\u9F67>'[bite]'",
+      "\u9F6A>'[narrow]'",
+      "\u9F6C>'[uneven teeth]'",
+      "\u9F72>'[tooth decay]'",
+      "\u9F76>'[palate]'",
+      "\u9F77>'[narrow]'",
+      "\u9F8D>'[dragon]'",
+      "\u9F95>'[niche]'",
+      "\u9F9C>'[turtle or tortoise]'",
+      "\u9F9D>'[autumn]'",
+      "\u9FA0>'[flute]'",
+}}};}}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Kanji_OnRomaji.java b/src/com/ibm/text/resources/TransliterationRule_Kanji_OnRomaji.java
new file mode 100755
index 0000000..a596ec0
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Kanji_OnRomaji.java
@@ -0,0 +1,6225 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Kanji_OnRomaji.java,v $ 
+ * $Date: 2000/03/10 04:07:30 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+import java.util.ListResourceBundle;
+public class TransliterationRule_Kanji_OnRomaji extends ListResourceBundle {
+ public Object[][] getContents() {
+  return new Object[][] {
+   {"Rule", new String[] {
+	"\u4E01>Tei;",
+	"\u4E03>Shichi;",
+	"\u4E07>Man;",
+	"\u4E08>Jou;",
+	"\u4E09>San;",
+	"\u4E0A>Jou;",
+	"\u4E0B>Ka;",
+	"\u4E0D>Fu;",
+	"\u4E0E>Yo;",
+	"\u4E10>Kai;",
+	"\u4E11>Chuu;",
+	"\u4E14>Sha;",
+	"\u4E15>Hi;",
+	"\u4E16>Se;",
+	"\u4E17>Sei;",
+	"\u4E18>Kyuu;",
+	"\u4E19>Hei;",
+	"\u4E1E>Shou;",
+	"\u4E21>Ryou;",
+	"\u4E26>Hei;",
+	"\u4E2A>Ka;",
+	"\u4E2D>Chuu;",
+	"\u4E31>Kan;",
+	"\u4E32>Sen;",
+	"\u4E36>Chu;",
+	"\u4E38>Gan;",
+	"\u4E39>Tan;",
+	"\u4E3B>Shu;",
+	"\u4E3C>Sei;",
+	"\u4E3F>Hetsu;",
+	"\u4E42>Gai;",
+	"\u4E43>Dai;",
+	"\u4E45>Kyuu;",
+	"\u4E4B>Shi;",
+	"\u4E4D>Saku;",
+	"\u4E4E>Ko;",
+	"\u4E4F>Bou;",
+	"\u4E55>Ko;",
+	"\u4E56>Kai;",
+	"\u4E57>Jou;",
+	"\u4E58>Jou;",
+	"\u4E59>Otsu;",
+	"\u4E5D>Kyuu;",
+	"\u4E5E>Kotsu;",
+	"\u4E5F>Ya;",
+	"\u4E62>Gai;",
+	"\u4E71>Ran;",
+	"\u4E73>Nyuu;",
+	"\u4E7E>Kan;",
+	"\u4E80>Ki;",
+	"\u4E82>Ran;",
+	"\u4E85>Ketsu;",
+	"\u4E86>Ryou;",
+	"\u4E88>Yo;",
+	"\u4E89>Sou;",
+	"\u4E8A>Ji;",
+	"\u4E8B>Ji;",
+	"\u4E8C>Ni;",
+	"\u4E8E>U;",
+	"\u4E91>Un;",
+	"\u4E92>Go;",
+	"\u4E94>Go;",
+	"\u4E95>Sei;",
+	"\u4E98>Sen;",
+	"\u4E99>Kou;",
+	"\u4E9B>Sa;",
+	"\u4E9C>A;",
+	"\u4E9E>A;",
+	"\u4E9F>Kyoku;",
+	"\u4EA0>Tou;",
+	"\u4EA1>Bou;",
+	"\u4EA2>Kou;",
+	"\u4EA4>Kou;",
+	"\u4EA5>Gai;",
+	"\u4EA6>Eki;",
+	"\u4EA8>Kyou;",
+	"\u4EAB>Kyou;",
+	"\u4EAC>Kyou;",
+	"\u4EAD>Tei;",
+	"\u4EAE>Ryou;",
+	"\u4EB0>Kei;",
+	"\u4EB3>Haku;",
+	"\u4EB6>Tan;",
+	"\u4EBA>Jin;",
+	"\u4EC0>Shuu;",
+	"\u4EC1>Jin;",
+	"\u4EC2>Roku;",
+	"\u4EC4>Soku;",
+	"\u4EC6>Fu;",
+	"\u4EC7>Kyuu;",
+	"\u4ECA>Kon;",
+	"\u4ECB>Kai;",
+	"\u4ECD>Jou;",
+	"\u4ECE>Juu;",
+	"\u4ECF>Butsu;",
+	"\u4ED4>Shi;",
+	"\u4ED5>Shi;",
+	"\u4ED6>Ta;",
+	"\u4ED7>Jou;",
+	"\u4ED8>Fu;",
+	"\u4ED9>Sen;",
+	"\u4EDD>Dou;",
+	"\u4EDE>Jin;",
+	"\u4EDF>Sen;",
+	"\u4EE3>Dai;",
+	"\u4EE4>Rei;",
+	"\u4EE5>I;",
+	"\u4EED>Jin;",
+	"\u4EEE>Ka;",
+	"\u4EF0>Gyou;",
+	"\u4EF2>Chuu;",
+	"\u4EF6>Ken;",
+	"\u4EF7>Kai;",
+	"\u4EFB>Nin;",
+	"\u4F01>Ki;",
+	"\u4F09>Kou;",
+	"\u4F0A>I;",
+	"\u4F0D>Go;",
+	"\u4F0E>Ki;",
+	"\u4F0F>Fuku;",
+	"\u4F10>Batsu;",
+	"\u4F11>Kyuu;",
+	"\u4F1A>Kai;",
+	"\u4F1C>Sai;",
+	"\u4F1D>Den;",
+	"\u4F2F>Haku;",
+	"\u4F30>Ko;",
+	"\u4F34>Han;",
+	"\u4F36>Rei;",
+	"\u4F38>Shin;",
+	"\u4F3A>Shi;",
+	"\u4F3C>Ji;",
+	"\u4F3D>Kya;",
+	"\u4F43>Ten;",
+	"\u4F46>Tan;",
+	"\u4F47>Cho;",
+	"\u4F4D>I;",
+	"\u4F4E>Tei;",
+	"\u4F4F>Juu;",
+	"\u4F50>Sa;",
+	"\u4F51>Yuu;",
+	"\u4F53>Tei;",
+	"\u4F55>Ka;",
+	"\u4F57>Ta;",
+	"\u4F59>Yo;",
+	"\u4F5A>Itsu;",
+	"\u4F5B>Butsu;",
+	"\u4F5C>Saku;",
+	"\u4F5D>Kou;",
+	"\u4F5E>Nei;",
+	"\u4F69>Hai;",
+	"\u4F6F>You;",
+	"\u4F70>Haku;",
+	"\u4F73>Ka;",
+	"\u4F75>Hei;",
+	"\u4F76>Kitsu;",
+	"\u4F7B>Chou;",
+	"\u4F7C>Kou;",
+	"\u4F7F>Shi;",
+	"\u4F83>Kan;",
+	"\u4F86>Rai;",
+	"\u4F88>Shi;",
+	"\u4F8B>Rei;",
+	"\u4F8D>Ji;",
+	"\u4F8F>Shu;",
+	"\u4F91>Yuu;",
+	"\u4F96>Ron;",
+	"\u4F98>Ta;",
+	"\u4F9B>Kyou;",
+	"\u4F9D>I;",
+	"\u4FA0>Kyou;",
+	"\u4FA1>Ka;",
+	"\u4FAB>Nei;",
+	"\u4FAD>Jin;",
+	"\u4FAE>Bu;",
+	"\u4FAF>Kou;",
+	"\u4FB5>Shin;",
+	"\u4FB6>Ryo;",
+	"\u4FBF>Ben;",
+	"\u4FC2>Kei;",
+	"\u4FC3>Soku;",
+	"\u4FC4>Ga;",
+	"\u4FCA>Shun;",
+	"\u4FCE>Sho;",
+	"\u4FD0>Ri;",
+	"\u4FD1>You;",
+	"\u4FD4>Ken;",
+	"\u4FD7>Zoku;",
+	"\u4FD8>Fu;",
+	"\u4FDA>Ri;",
+	"\u4FDB>Ben;",
+	"\u4FDD>Ho;",
+	"\u4FDF>Shi;",
+	"\u4FE1>Shin;",
+	"\u4FEE>Shuu;",
+	"\u4FEF>Fu;",
+	"\u4FF3>Hai;",
+	"\u4FF5>Hyou;",
+	"\u4FF6>Shuku;",
+	"\u4FF8>Hou;",
+	"\u4FFA>En;",
+	"\u4FFE>Hi;",
+	"\u5005>Sai;",
+	"\u5006>Ryou;",
+	"\u5009>Sou;",
+	"\u500B>Ko;",
+	"\u500D>Bai;",
+	"\u500F>Shuku;",
+	"\u5011>Mon;",
+	"\u5012>Tou;",
+	"\u5014>Kutsu;",
+	"\u5016>Kou;",
+	"\u5019>Kou;",
+	"\u501A>I;",
+	"\u501F>Shaku;",
+	"\u5021>Shou;",
+	"\u5023>Hou;",
+	"\u5024>Chi;",
+	"\u5025>Kou;",
+	"\u5026>Ken;",
+	"\u5028>Kyo;",
+	"\u5029>Sen;",
+	"\u502A>Gei;",
+	"\u502B>Rin;",
+	"\u502C>Taku;",
+	"\u502D>I;",
+	"\u5036>Ku;",
+	"\u5039>Ken;",
+	"\u5043>En;",
+	"\u5047>Ka;",
+	"\u5048>Ketsu;",
+	"\u5049>I;",
+	"\u504F>Hen;",
+	"\u5050>Gan;",
+	"\u5055>Kai;",
+	"\u5056>Sha;",
+	"\u505A>Saku;",
+	"\u505C>Tei;",
+	"\u5065>Ken;",
+	"\u506C>Sou;",
+	"\u5072>Shi;",
+	"\u5074>Soku;",
+	"\u5075>Tei;",
+	"\u5076>Guu;",
+	"\u5078>Chuu;",
+	"\u507D>Gi;",
+	"\u5080>Kai;",
+	"\u5085>Fu;",
+	"\u508D>Bou;",
+	"\u5091>Ketsu;",
+	"\u5098>San;",
+	"\u5099>Bi;",
+	"\u509A>Kou;",
+	"\u50AC>Sai;",
+	"\u50AD>You;",
+	"\u50B2>Gou;",
+	"\u50B3>Den;",
+	"\u50B4>U;",
+	"\u50B5>Sai;",
+	"\u50B7>Shou;",
+	"\u50BE>Kei;",
+	"\u50C2>Rou;",
+	"\u50C5>Kin;",
+	"\u50C9>Sen;",
+	"\u50CA>Sen;",
+	"\u50CD>Dou;",
+	"\u50CF>Zou;",
+	"\u50D1>Kyou;",
+	"\u50D5>Boku;",
+	"\u50D6>Ki;",
+	"\u50DA>Ryou;",
+	"\u50DE>Gi;",
+	"\u50E3>Sen;",
+	"\u50E5>Kyou;",
+	"\u50E7>Sou;",
+	"\u50ED>Sen;",
+	"\u50EE>Dou;",
+	"\u50F5>Kyou;",
+	"\u50F9>Ka;",
+	"\u50FB>Heki;",
+	"\u5100>Gi;",
+	"\u5101>Shun;",
+	"\u5102>Dou;",
+	"\u5104>Oku;",
+	"\u5109>Ken;",
+	"\u5112>Ju;",
+	"\u5114>Chuu;",
+	"\u5115>Sei;",
+	"\u5116>Ran;",
+	"\u5118>Jin;",
+	"\u511A>Bou;",
+	"\u511F>Shou;",
+	"\u5121>Rai;",
+	"\u512A>Yuu;",
+	"\u5132>Cho;",
+	"\u5137>Rei;",
+	"\u513A>Da;",
+	"\u513B>Tou;",
+	"\u513C>Gen;",
+	"\u513F>Jin;",
+	"\u5140>Kotsu;",
+	"\u5141>In;",
+	"\u5143>Gen;",
+	"\u5144>Kei;",
+	"\u5145>Juu;",
+	"\u5146>Chou;",
+	"\u5147>Kyou;",
+	"\u5148>Sen;",
+	"\u5149>Kou;",
+	"\u514B>Koku;",
+	"\u514C>Da;",
+	"\u514D>Men;",
+	"\u514E>To;",
+	"\u5150>Ji;",
+	"\u5152>Ji;",
+	"\u5154>To;",
+	"\u515A>Tou;",
+	"\u515C>Tou;",
+	"\u5162>Kyou;",
+	"\u5165>Nyuu;",
+	"\u5168>Zen;",
+	"\u5169>Ryou;",
+	"\u516A>Yu;",
+	"\u516B>Hachi;",
+	"\u516C>Kou;",
+	"\u516D>Roku;",
+	"\u516E>Kei;",
+	"\u5171>Kyou;",
+	"\u5175>Hei;",
+	"\u5176>Ki;",
+	"\u5177>Gu;",
+	"\u5178>Ten;",
+	"\u517C>Ken;",
+	"\u5180>Ki;",
+	"\u5182>Kei;",
+	"\u5185>Dai;",
+	"\u5186>En;",
+	"\u5189>Nen;",
+	"\u518A>Satsu;",
+	"\u518C>Satsu;",
+	"\u518D>Sai;",
+	"\u518F>Kei;",
+	"\u5190>Bou;",
+	"\u5191>Chuu;",
+	"\u5192>Bou;",
+	"\u5193>Kou;",
+	"\u5195>Ben;",
+	"\u5196>Beki;",
+	"\u5197>Jou;",
+	"\u5199>Sha;",
+	"\u51A0>Kan;",
+	"\u51A2>Chou;",
+	"\u51A4>En;",
+	"\u51A5>Mei;",
+	"\u51A6>Kou;",
+	"\u51A8>Fu;",
+	"\u51A9>Sha;",
+	"\u51AA>Beki;",
+	"\u51AB>Hyou;",
+	"\u51AC>Tou;",
+	"\u51B0>Hyou;",
+	"\u51B1>Go;",
+	"\u51B2>Chuu;",
+	"\u51B3>Ketsu;",
+	"\u51B4>Go;",
+	"\u51B5>Kyou;",
+	"\u51B6>Ya;",
+	"\u51B7>Rei;",
+	"\u51BD>Retsu;",
+	"\u51C4>Sei;",
+	"\u51C5>Ko;",
+	"\u51C6>Jun;",
+	"\u51C9>Ryou;",
+	"\u51CB>Chou;",
+	"\u51CC>Ryou;",
+	"\u51CD>Tou;",
+	"\u51D6>Jun;",
+	"\u51DB>Rin;",
+	"\u51DC>Rin;",
+	"\u51DD>Gyou;",
+	"\u51E0>Ki;",
+	"\u51E1>Bon;",
+	"\u51E6>Sho;",
+	"\u51ED>Hyou;",
+	"\u51F0>Kou;",
+	"\u51F1>Gai;",
+	"\u51F5>Kan;",
+	"\u51F6>Kyou;",
+	"\u51F8>Totsu;",
+	"\u51F9>Ou;",
+	"\u51FA>Shutsu;",
+	"\u51FD>Kan;",
+	"\u51FE>Kan;",
+	"\u5200>Tou;",
+	"\u5203>Jin;",
+	"\u5204>Jin;",
+	"\u5206>Bun;",
+	"\u5207>Setsu;",
+	"\u5208>Gai;",
+	"\u520A>Kan;",
+	"\u520B>Sen;",
+	"\u520E>Fun;",
+	"\u5211>Kei;",
+	"\u5214>Ketsu;",
+	"\u5217>Retsu;",
+	"\u521D>Sho;",
+	"\u5224>Han;",
+	"\u5225>Betsu;",
+	"\u5227>Gou;",
+	"\u5229>Ri;",
+	"\u522A>San;",
+	"\u522E>Katsu;",
+	"\u5230>Tou;",
+	"\u5233>Ko;",
+	"\u5236>Sei;",
+	"\u5237>Satsu;",
+	"\u5238>Ken;",
+	"\u5239>Satsu;",
+	"\u523A>Shi;",
+	"\u523B>Koku;",
+	"\u5243>Tei;",
+	"\u5244>Kei;",
+	"\u5247>Soku;",
+	"\u524A>Saku;",
+	"\u524B>Koku;",
+	"\u524C>Ratsu;",
+	"\u524D>Zen;",
+	"\u524F>Sou;",
+	"\u5254>Teki;",
+	"\u5256>Bou;",
+	"\u525B>Gou;",
+	"\u525E>Ki;",
+	"\u5263>Ken;",
+	"\u5264>Zai;",
+	"\u5265>Haku;",
+	"\u5269>Jou;",
+	"\u526A>Sen;",
+	"\u526F>Fuku;",
+	"\u5270>Jou;",
+	"\u5271>Ken;",
+	"\u5272>Katsu;",
+	"\u5273>Tou;",
+	"\u5274>Gai;",
+	"\u5275>Sou;",
+	"\u527D>Hyou;",
+	"\u527F>Shou;",
+	"\u5283>Kaku;",
+	"\u5287>Geki;",
+	"\u5288>Heki;",
+	"\u5289>Ru;",
+	"\u528D>Ken;",
+	"\u5291>Zai;",
+	"\u5292>Ken;",
+	"\u5294>Ken;",
+	"\u529B>Ryoku;",
+	"\u529F>Kou;",
+	"\u52A0>Ka;",
+	"\u52A3>Retsu;",
+	"\u52A9>Jo;",
+	"\u52AA>Do;",
+	"\u52AB>Gou;",
+	"\u52AC>Ku;",
+	"\u52AD>Shou;",
+	"\u52B1>Rei;",
+	"\u52B4>Rou;",
+	"\u52B5>Ken;",
+	"\u52B9>Kou;",
+	"\u52BC>Katsu;",
+	"\u52BE>Gai;",
+	"\u52C1>Kei;",
+	"\u52C3>Botsu;",
+	"\u52C5>Choku;",
+	"\u52C7>Yuu;",
+	"\u52C9>Ben;",
+	"\u52CD>Kei;",
+	"\u52D2>Roku;",
+	"\u52D5>Dou;",
+	"\u52D7>Bou;",
+	"\u52D8>Kan;",
+	"\u52D9>Mu;",
+	"\u52DD>Shou;",
+	"\u52DE>Rou;",
+	"\u52DF>Bo;",
+	"\u52E0>Riku;",
+	"\u52E2>Sei;",
+	"\u52E3>Seki;",
+	"\u52E4>Kin;",
+	"\u52E6>Sou;",
+	"\u52E7>Kan;",
+	"\u52F2>Kun;",
+	"\u52F3>Kun;",
+	"\u52F5>Rei;",
+	"\u52F8>Kan;",
+	"\u52F9>Hou;",
+	"\u52FA>Shaku;",
+	"\u52FE>Kou;",
+	"\u52FF>Butsu;",
+	"\u5305>Hou;",
+	"\u5306>Sou;",
+	"\u5308>Kyou;",
+	"\u530D>Ho;",
+	"\u530F>Hou;",
+	"\u5310>Hoku;",
+	"\u5315>Hi;",
+	"\u5316>Ka;",
+	"\u5317>Hoku;",
+	"\u5319>Shi;",
+	"\u531A>Hou;",
+	"\u531D>Sou;",
+	"\u5320>Shou;",
+	"\u5321>Kyou;",
+	"\u5323>Kou;",
+	"\u532A>Hi;",
+	"\u532F>Wai;",
+	"\u5331>Ki;",
+	"\u5333>Ren;",
+	"\u5338>Kei;",
+	"\u5339>Hitsu;",
+	"\u533A>Ku;",
+	"\u533B>I;",
+	"\u533F>Toku;",
+	"\u5340>Ku;",
+	"\u5341>Juu;",
+	"\u5343>Sen;",
+	"\u5345>Sou;",
+	"\u5346>Sotsu;",
+	"\u5347>Shou;",
+	"\u5348>Go;",
+	"\u5349>Ki;",
+	"\u534A>Han;",
+	"\u534D>Ban;",
+	"\u5351>Hi;",
+	"\u5352>Sotsu;",
+	"\u5353>Taku;",
+	"\u5354>Kyou;",
+	"\u5357>Nan;",
+	"\u5358>Tan;",
+	"\u535A>Haku;",
+	"\u535C>Boku;",
+	"\u535E>Hen;",
+	"\u5360>Sen;",
+	"\u5366>Ka;",
+	"\u5369>Setsu;",
+	"\u536E>Shi;",
+	"\u536F>Bou;",
+	"\u5370>In;",
+	"\u5371>Ki;",
+	"\u5373>Soku;",
+	"\u5374>Kyaku;",
+	"\u5375>Ran;",
+	"\u5377>Kan;",
+	"\u5378>Sha;",
+	"\u537B>Kyaku;",
+	"\u537F>Kyou;",
+	"\u5382>Kan;",
+	"\u5384>Yaku;",
+	"\u5396>Bou;",
+	"\u5398>Rin;",
+	"\u539A>Kou;",
+	"\u539F>Gen;",
+	"\u53A0>Shi;",
+	"\u53A5>Ketsu;",
+	"\u53A6>Ka;",
+	"\u53A8>Zu;",
+	"\u53A9>Kyuu;",
+	"\u53AD>En;",
+	"\u53AE>Shi;",
+	"\u53B0>Shou;",
+	"\u53B3>Gen;",
+	"\u53B6>Shi;",
+	"\u53BB>Kyo;",
+	"\u53C2>San;",
+	"\u53C3>San;",
+	"\u53C8>Yuu;",
+	"\u53C9>Sha;",
+	"\u53CA>Kyuu;",
+	"\u53CB>Yuu;",
+	"\u53CC>Sou;",
+	"\u53CD>Han;",
+	"\u53CE>Shuu;",
+	"\u53D4>Shuku;",
+	"\u53D6>Shu;",
+	"\u53D7>Ju;",
+	"\u53D9>Jo;",
+	"\u53DB>Han;",
+	"\u53DF>Sou;",
+	"\u53E1>Ei;",
+	"\u53E2>Sou;",
+	"\u53E3>Kou;",
+	"\u53E4>Ko;",
+	"\u53E5>Ku;",
+	"\u53E8>Tou;",
+	"\u53E9>Kou;",
+	"\u53EA>Shi;",
+	"\u53EB>Kyou;",
+	"\u53EC>Shou;",
+	"\u53ED>Hatsu;",
+	"\u53EE>Tei;",
+	"\u53EF>Ka;",
+	"\u53F0>Dai;",
+	"\u53F1>Shitsu;",
+	"\u53F2>Shi;",
+	"\u53F3>U;",
+	"\u53F6>Kyou;",
+	"\u53F7>Gou;",
+	"\u53F8>Shi;",
+	"\u5401>Ku;",
+	"\u5403>Kitsu;",
+	"\u5404>Kaku;",
+	"\u5408>Gou;",
+	"\u5409>Kichi;",
+	"\u540A>Chou;",
+	"\u540B>Sun;",
+	"\u540C>Dou;",
+	"\u540D>Mei;",
+	"\u540E>Kou;",
+	"\u540F>Ri;",
+	"\u5410>To;",
+	"\u5411>Kou;",
+	"\u541B>Kun;",
+	"\u541D>Rin;",
+	"\u541F>Gin;",
+	"\u5420>Hai;",
+	"\u5426>Hi;",
+	"\u5429>Fun;",
+	"\u542B>Gan;",
+	"\u542C>Kin;",
+	"\u542D>Kou;",
+	"\u542E>Sen;",
+	"\u5436>Totsu;",
+	"\u5438>Kyuu;",
+	"\u5439>Sui;",
+	"\u543B>Fun;",
+	"\u543C>Kou;",
+	"\u543D>In;",
+	"\u543E>Go;",
+	"\u5440>Ga;",
+	"\u5442>Ryo;",
+	"\u5446>Bou;",
+	"\u5448>Tei;",
+	"\u5449>Go;",
+	"\u544A>Koku;",
+	"\u544E>Seki;",
+	"\u5451>Don;",
+	"\u545F>Gen;",
+	"\u5468>Shuu;",
+	"\u546A>Ju;",
+	"\u5470>Shi;",
+	"\u5471>Ko;",
+	"\u5473>Mi;",
+	"\u5475>Ka;",
+	"\u5476>Do;",
+	"\u5477>Kou;",
+	"\u547B>Shin;",
+	"\u547C>Ko;",
+	"\u547D>Mei;",
+	"\u5480>So;",
+	"\u5484>Totsu;",
+	"\u5486>Hou;",
+	"\u548B>Saku;",
+	"\u548C>Wa;",
+	"\u548E>Kyuu;",
+	"\u548F>Ei;",
+	"\u5490>Ho;",
+	"\u5492>Shu;",
+	"\u54A2>Gaku;",
+	"\u54A4>Ta;",
+	"\u54A5>Ki;",
+	"\u54A8>Shi;",
+	"\u54AB>Shi;",
+	"\u54AC>Kou;",
+	"\u54AF>Kaku;",
+	"\u54B2>Shou;",
+	"\u54B3>Gai;",
+	"\u54B8>Kan;",
+	"\u54BC>Ka;",
+	"\u54BD>In;",
+	"\u54BE>Rou;",
+	"\u54C0>Ai;",
+	"\u54C1>Hin;",
+	"\u54C2>Shin;",
+	"\u54C4>Kou;",
+	"\u54C7>Ai;",
+	"\u54C8>Gou;",
+	"\u54C9>Sai;",
+	"\u54E1>In;",
+	"\u54E2>Rou;",
+	"\u54E5>Ka;",
+	"\u54E6>Ga;",
+	"\u54E8>Shou;",
+	"\u54E9>Ri;",
+	"\u54ED>Koku;",
+	"\u54EE>Kou;",
+	"\u54F2>Tetsu;",
+	"\u54FA>Ho;",
+	"\u54FD>Kou;",
+	"\u5504>Bai;",
+	"\u5506>Sa;",
+	"\u5507>Shin;",
+	"\u550F>Ki;",
+	"\u5510>Tou;",
+	"\u5514>Go;",
+	"\u5516>A;",
+	"\u552E>Shuu;",
+	"\u552F>Yui;",
+	"\u5531>Shou;",
+	"\u5533>Rei;",
+	"\u5538>Ten;",
+	"\u5539>Yo;",
+	"\u553E>Da;",
+	"\u5540>Gai;",
+	"\u5544>Taku;",
+	"\u5545>Taku;",
+	"\u5546>Shou;",
+	"\u554C>Kou;",
+	"\u554F>Mon;",
+	"\u5553>Kei;",
+	"\u5556>Tan;",
+	"\u5557>Tan;",
+	"\u555C>Setsu;",
+	"\u555D>Ka;",
+	"\u5563>Kan;",
+	"\u557B>Shi;",
+	"\u557C>Tei;",
+	"\u557E>Shuu;",
+	"\u5580>Kaku;",
+	"\u5583>Nan;",
+	"\u5584>Zen;",
+	"\u5587>Ratsu;",
+	"\u5589>Kou;",
+	"\u558A>Kan;",
+	"\u558B>Chou;",
+	"\u5598>Zen;",
+	"\u5599>Kai;",
+	"\u559A>Kan;",
+	"\u559C>Ki;",
+	"\u559D>Katsu;",
+	"\u559E>Soku;",
+	"\u559F>Ki;",
+	"\u55A7>Ken;",
+	"\u55A8>Ryou;",
+	"\u55A9>Yu;",
+	"\u55AA>Sou;",
+	"\u55AB>Kitsu;",
+	"\u55AC>Kyou;",
+	"\u55AE>Tan;",
+	"\u55B6>Ei;",
+	"\u55C4>Sa;",
+	"\u55C5>Kyuu;",
+	"\u55C7>Shoku;",
+	"\u55D4>Shin;",
+	"\u55DA>O;",
+	"\u55DC>Shi;",
+	"\u55DF>Sa;",
+	"\u55E3>Shi;",
+	"\u55E4>Shi;",
+	"\u55F7>Gou;",
+	"\u55F9>Ren;",
+	"\u55FD>Soku;",
+	"\u55FE>Sou;",
+	"\u5606>Tan;",
+	"\u5609>Ka;",
+	"\u5614>Ou;",
+	"\u5616>Saku;",
+	"\u5617>Shou;",
+	"\u5618>Kyo;",
+	"\u561B>Ma;",
+	"\u5629>Ka;",
+	"\u562F>Shou;",
+	"\u5631>Shoku;",
+	"\u5632>Tou;",
+	"\u5634>Shi;",
+	"\u5636>Sei;",
+	"\u5638>Bu;",
+	"\u5642>Son;",
+	"\u564C>Sou;",
+	"\u564E>Itsu;",
+	"\u5650>Ki;",
+	"\u565B>Gou;",
+	"\u5664>Kin;",
+	"\u5668>Ki;",
+	"\u566A>Sou;",
+	"\u566B>I;",
+	"\u566C>Zei;",
+	"\u5674>Fun;",
+	"\u5678>Ton;",
+	"\u5680>Dei;",
+	"\u5686>Kou;",
+	"\u5687>Kaku;",
+	"\u568A>Hi;",
+	"\u568F>Tei;",
+	"\u5694>Tei;",
+	"\u56A0>Ryuu;",
+	"\u56A2>Nou;",
+	"\u56A5>En;",
+	"\u56AE>Kou;",
+	"\u56B4>Gen;",
+	"\u56B6>Ou;",
+	"\u56BC>Shaku;",
+	"\u56C0>Ten;",
+	"\u56C1>Shou;",
+	"\u56C2>Gou;",
+	"\u56C3>Sou;",
+	"\u56C8>Gei;",
+	"\u56CE>So;",
+	"\u56D1>Shoku;",
+	"\u56D3>Ketsu;",
+	"\u56D7>I;",
+	"\u56D8>Kai;",
+	"\u56DA>Shuu;",
+	"\u56DB>Shi;",
+	"\u56DE>Kai;",
+	"\u56E0>In;",
+	"\u56E3>Dan;",
+	"\u56EE>Ka;",
+	"\u56F0>Kon;",
+	"\u56F2>I;",
+	"\u56F3>To;",
+	"\u56F9>Rei;",
+	"\u56FA>Ko;",
+	"\u56FD>Koku;",
+	"\u56FF>Yuu;",
+	"\u5700>Koku;",
+	"\u5703>Ho;",
+	"\u5704>Gyo;",
+	"\u5708>Ken;",
+	"\u5709>Gyo;",
+	"\u570B>Koku;",
+	"\u570D>I;",
+	"\u570F>Ken;",
+	"\u5712>En;",
+	"\u5713>En;",
+	"\u5716>To;",
+	"\u5718>Dan;",
+	"\u571C>Kan;",
+	"\u571F>Do;",
+	"\u5727>Atsu;",
+	"\u5728>Zai;",
+	"\u572D>Kei;",
+	"\u5730>Chi;",
+	"\u573B>Ki;",
+	"\u5740>Shi;",
+	"\u5742>Han;",
+	"\u5747>Kin;",
+	"\u574A>Bou;",
+	"\u574E>Kan;",
+	"\u574F>Hai;",
+	"\u5750>Za;",
+	"\u5751>Kou;",
+	"\u5761>Ha;",
+	"\u5764>Kon;",
+	"\u5766>Tan;",
+	"\u5769>Kan;",
+	"\u576A>Hei;",
+	"\u577F>Fu;",
+	"\u5782>Sui;",
+	"\u5788>Tai;",
+	"\u5789>Hou;",
+	"\u578B>Kei;",
+	"\u5793>Gai;",
+	"\u57A0>Gin;",
+	"\u57A2>Kou;",
+	"\u57A3>En;",
+	"\u57A4>Tetsu;",
+	"\u57C0>Sui;",
+	"\u57C3>Ai;",
+	"\u57C6>Kaku;",
+	"\u57CB>Mai;",
+	"\u57CE>Jou;",
+	"\u57D2>Rachi;",
+	"\u57D3>Rachi;",
+	"\u57D4>Ho;",
+	"\u57DC>Sho;",
+	"\u57DF>Iki;",
+	"\u57E0>Fu;",
+	"\u57E3>Sai;",
+	"\u57F4>Shoku;",
+	"\u57F7>Shitsu;",
+	"\u57F9>Bai;",
+	"\u57FA>Ki;",
+	"\u57FC>Ki;",
+	"\u5800>Kutsu;",
+	"\u5802>Dou;",
+	"\u5805>Ken;",
+	"\u5806>Tai;",
+	"\u580A>A;",
+	"\u580B>Hou;",
+	"\u5815>Da;",
+	"\u5819>In;",
+	"\u581D>Ka;",
+	"\u5821>Hou;",
+	"\u5824>Tei;",
+	"\u582A>Kan;",
+	"\u582F>Gyou;",
+	"\u5830>En;",
+	"\u5831>Hou;",
+	"\u5834>Jou;",
+	"\u5835>To;",
+	"\u583A>Kai;",
+	"\u583D>Kou;",
+	"\u5841>Rui;",
+	"\u584A>Kai;",
+	"\u584B>Ei;",
+	"\u5851>So;",
+	"\u5852>Shi;",
+	"\u5854>Tou;",
+	"\u5857>To;",
+	"\u5858>Tou;",
+	"\u5859>Kaku;",
+	"\u585A>Chou;",
+	"\u585E>Soku;",
+	"\u5862>O;",
+	"\u5869>En;",
+	"\u586B>Ten;",
+	"\u5872>Jou;",
+	"\u5875>Jin;",
+	"\u5879>Zan;",
+	"\u587E>Juku;",
+	"\u5883>Kyou;",
+	"\u5885>Sho;",
+	"\u5893>Bo;",
+	"\u5897>Zou;",
+	"\u589C>Tsui;",
+	"\u589F>Kyo;",
+	"\u58A8>Boku;",
+	"\u58AB>Shun;",
+	"\u58AE>Da;",
+	"\u58B3>Fun;",
+	"\u58B8>Sho;",
+	"\u58BA>Ou;",
+	"\u58BB>Shou;",
+	"\u58BE>Kon;",
+	"\u58C1>Heki;",
+	"\u58C5>You;",
+	"\u58C7>Dan;",
+	"\u58CA>Kai;",
+	"\u58CC>Jou;",
+	"\u58D1>Gaku;",
+	"\u58D3>Atsu;",
+	"\u58D5>Gou;",
+	"\u58D8>Rui;",
+	"\u58D9>Kou;",
+	"\u58DC>Tan;",
+	"\u58DE>Kai;",
+	"\u58DF>Ryou;",
+	"\u58E4>Jou;",
+	"\u58E5>Ten;",
+	"\u58EB>Shi;",
+	"\u58EC>Jin;",
+	"\u58EE>Sou;",
+	"\u58EF>Sou;",
+	"\u58F0>Sei;",
+	"\u58F1>Ichi;",
+	"\u58F2>Bai;",
+	"\u58F7>Ko;",
+	"\u58F9>Ichi;",
+	"\u58FA>Ko;",
+	"\u58FB>Sei;",
+	"\u58FC>Kon;",
+	"\u58FD>Ju;",
+	"\u5902>Chi;",
+	"\u5909>Hen;",
+	"\u590A>Sui;",
+	"\u590F>Ka;",
+	"\u5910>Kei;",
+	"\u5915>Seki;",
+	"\u5916>Gai;",
+	"\u5918>Bou;",
+	"\u5919>Shuku;",
+	"\u591A>Ta;",
+	"\u591B>Ta;",
+	"\u591C>Ya;",
+	"\u5922>Mu;",
+	"\u5925>Ka;",
+	"\u5927>Tai;",
+	"\u5929>Ten;",
+	"\u592A>Ta;",
+	"\u592B>Fu;",
+	"\u592C>Ketsu;",
+	"\u592D>You;",
+	"\u592E>Ou;",
+	"\u5931>Shitsu;",
+	"\u5932>Tou;",
+	"\u5937>I;",
+	"\u5938>Ko;",
+	"\u593E>Kou;",
+	"\u5944>En;",
+	"\u5947>Ki;",
+	"\u5948>Na;",
+	"\u5949>Hou;",
+	"\u594E>Kei;",
+	"\u594F>Sou;",
+	"\u5950>Kan;",
+	"\u5951>Setsu;",
+	"\u5954>Hon;",
+	"\u5955>Eki;",
+	"\u5957>Tou;",
+	"\u5958>Jou;",
+	"\u595A>Kei;",
+	"\u5960>Ten;",
+	"\u5962>Sha;",
+	"\u5965>Ou;",
+	"\u5967>Ou;",
+	"\u5968>Shou;",
+	"\u5969>Ren;",
+	"\u596A>Datsu;",
+	"\u596C>Shou;",
+	"\u596E>Fun;",
+	"\u5973>Jo;",
+	"\u5974>Do;",
+	"\u5978>Kan;",
+	"\u597D>Kou;",
+	"\u5981>Shaku;",
+	"\u5982>Jo;",
+	"\u5983>Hi;",
+	"\u5984>Bou;",
+	"\u598A>Nin;",
+	"\u598D>Ken;",
+	"\u5993>Ki;",
+	"\u5996>You;",
+	"\u5999>Myou;",
+	"\u599B>Shi;",
+	"\u599D>Sou;",
+	"\u59A3>Hi;",
+	"\u59A5>Da;",
+	"\u59A8>Bou;",
+	"\u59AC>To;",
+	"\u59B2>Datsu;",
+	"\u59B9>Mai;",
+	"\u59BB>Sai;",
+	"\u59BE>Shou;",
+	"\u59C6>Bo;",
+	"\u59C9>Shi;",
+	"\u59CB>Shi;",
+	"\u59D0>So;",
+	"\u59D1>Ko;",
+	"\u59D3>Sei;",
+	"\u59D4>I;",
+	"\u59D9>Nin;",
+	"\u59DA>You;",
+	"\u59DC>Kyou;",
+	"\u59E5>Bo;",
+	"\u59E6>Kan;",
+	"\u59E8>I;",
+	"\u59EA>Tetsu;",
+	"\u59EB>Ki;",
+	"\u59F6>Ou;",
+	"\u59FB>In;",
+	"\u59FF>Shi;",
+	"\u5A01>I;",
+	"\u5A03>A;",
+	"\u5A09>Hei;",
+	"\u5A11>Sha;",
+	"\u5A18>Jou;",
+	"\u5A1A>Nan;",
+	"\u5A1C>Da;",
+	"\u5A1F>Ken;",
+	"\u5A20>Shin;",
+	"\u5A25>Ga;",
+	"\u5A29>Ben;",
+	"\u5A2F>Go;",
+	"\u5A35>Shu;",
+	"\u5A36>Shu;",
+	"\u5A3C>Shou;",
+	"\u5A40>A;",
+	"\u5A41>Rou;",
+	"\u5A46>Ba;",
+	"\u5A49>En;",
+	"\u5A5A>Kon;",
+	"\u5A62>Hi;",
+	"\u5A66>Fu;",
+	"\u5A6A>Ran;",
+	"\u5A6C>In;",
+	"\u5A7F>Sei;",
+	"\u5A92>Bai;",
+	"\u5A9A>Bi;",
+	"\u5A9B>En;",
+	"\u5ABC>Ou;",
+	"\u5ABD>Bo;",
+	"\u5ABE>Kou;",
+	"\u5AC1>Ka;",
+	"\u5AC2>Sou;",
+	"\u5AC9>Shitsu;",
+	"\u5ACB>Jou;",
+	"\u5ACC>Ken;",
+	"\u5AD0>Jou;",
+	"\u5AD6>Hyou;",
+	"\u5AD7>Ou;",
+	"\u5AE1>Chaku;",
+	"\u5AE3>En;",
+	"\u5AE6>Kou;",
+	"\u5AE9>Don;",
+	"\u5AFA>Kan;",
+	"\u5AFB>Kan;",
+	"\u5B09>Ki;",
+	"\u5B0B>Sen;",
+	"\u5B0C>Kyou;",
+	"\u5B16>Hei;",
+	"\u5B22>Jou;",
+	"\u5B2A>Hin;",
+	"\u5B2C>Shu;",
+	"\u5B30>Ei;",
+	"\u5B32>Jou;",
+	"\u5B3E>Ran;",
+	"\u5B40>Sou;",
+	"\u5B43>Jou;",
+	"\u5B45>Sen;",
+	"\u5B50>Shi;",
+	"\u5B51>Getsu;",
+	"\u5B54>Kou;",
+	"\u5B55>You;",
+	"\u5B57>Ji;",
+	"\u5B58>Son;",
+	"\u5B5A>Fu;",
+	"\u5B5B>Botsu;",
+	"\u5B5C>Shi;",
+	"\u5B5D>Kou;",
+	"\u5B5F>Mou;",
+	"\u5B63>Ki;",
+	"\u5B64>Ko;",
+	"\u5B65>Do;",
+	"\u5B66>Gaku;",
+	"\u5B69>Kai;",
+	"\u5B6B>Son;",
+	"\u5B70>Juku;",
+	"\u5B71>Sen;",
+	"\u5B73>Shi;",
+	"\u5B75>Fu;",
+	"\u5B78>Gaku;",
+	"\u5B7A>Ju;",
+	"\u5B80>Ben;",
+	"\u5B83>Ta;",
+	"\u5B85>Taku;",
+	"\u5B87>U;",
+	"\u5B88>Shu;",
+	"\u5B89>An;",
+	"\u5B8B>Sou;",
+	"\u5B8C>Kan;",
+	"\u5B8D>Niku;",
+	"\u5B8F>Kou;",
+	"\u5B95>Tou;",
+	"\u5B97>Shuu;",
+	"\u5B98>Kan;",
+	"\u5B99>Chuu;",
+	"\u5B9A>Tei;",
+	"\u5B9B>En;",
+	"\u5B9C>Gi;",
+	"\u5B9D>Hou;",
+	"\u5B9F>Jitsu;",
+	"\u5BA2>Kyaku;",
+	"\u5BA3>Sen;",
+	"\u5BA4>Shitsu;",
+	"\u5BA5>Yuu;",
+	"\u5BA6>Kan;",
+	"\u5BAE>Kyuu;",
+	"\u5BB0>Sai;",
+	"\u5BB3>Gai;",
+	"\u5BB4>En;",
+	"\u5BB5>Shou;",
+	"\u5BB6>Ka;",
+	"\u5BB8>Shin;",
+	"\u5BB9>You;",
+	"\u5BBF>Shuku;",
+	"\u5BC2>Jaku;",
+	"\u5BC3>En;",
+	"\u5BC4>Ki;",
+	"\u5BC5>In;",
+	"\u5BC6>Mitsu;",
+	"\u5BC7>Kou;",
+	"\u5BC9>Kaku;",
+	"\u5BCC>Fu;",
+	"\u5BD0>Bi;",
+	"\u5BD2>Kan;",
+	"\u5BD3>Guu;",
+	"\u5BD4>Shoku;",
+	"\u5BDB>Kan;",
+	"\u5BDD>Shin;",
+	"\u5BDE>Baku;",
+	"\u5BDF>Satsu;",
+	"\u5BE1>Ka;",
+	"\u5BE2>Shin;",
+	"\u5BE4>Go;",
+	"\u5BE5>Ryou;",
+	"\u5BE6>Jitsu;",
+	"\u5BE7>Nei;",
+	"\u5BE8>Sai;",
+	"\u5BE9>Shin;",
+	"\u5BEB>Sha;",
+	"\u5BEE>Ryou;",
+	"\u5BF0>Kan;",
+	"\u5BF3>Hou;",
+	"\u5BF5>Chou;",
+	"\u5BF6>Hou;",
+	"\u5BF8>Sun;",
+	"\u5BFA>Ji;",
+	"\u5BFE>Tai;",
+	"\u5BFF>Ju;",
+	"\u5C01>Fuu;",
+	"\u5C02>Sen;",
+	"\u5C04>Sha;",
+	"\u5C05>Koku;",
+	"\u5C06>Shou;",
+	"\u5C07>Shou;",
+	"\u5C08>Sen;",
+	"\u5C09>I;",
+	"\u5C0A>Son;",
+	"\u5C0B>Jin;",
+	"\u5C0D>Tai;",
+	"\u5C0E>Dou;",
+	"\u5C0F>Shou;",
+	"\u5C11>Shou;",
+	"\u5C13>Ji;",
+	"\u5C16>Sen;",
+	"\u5C1A>Shou;",
+	"\u5C20>Sen;",
+	"\u5C22>Ou;",
+	"\u5C24>Yuu;",
+	"\u5C28>Bou;",
+	"\u5C2D>Gyou;",
+	"\u5C31>Shuu;",
+	"\u5C38>Shi;",
+	"\u5C39>In;",
+	"\u5C3A>Shaku;",
+	"\u5C3B>Kou;",
+	"\u5C3C>Ni;",
+	"\u5C3D>Jin;",
+	"\u5C3E>Bi;",
+	"\u5C3F>Nyou;",
+	"\u5C40>Kyoku;",
+	"\u5C41>Hi;",
+	"\u5C45>Kyo;",
+	"\u5C46>Kai;",
+	"\u5C48>Kutsu;",
+	"\u5C4A>Kai;",
+	"\u5C4B>Oku;",
+	"\u5C4D>Shi;",
+	"\u5C4E>Shi;",
+	"\u5C4F>Hei;",
+	"\u5C50>Geki;",
+	"\u5C51>Setsu;",
+	"\u5C53>Ki;",
+	"\u5C55>Ten;",
+	"\u5C5E>Zoku;",
+	"\u5C60>To;",
+	"\u5C61>Ru;",
+	"\u5C64>Sou;",
+	"\u5C65>Ri;",
+	"\u5C6C>Zoku;",
+	"\u5C6E>Sa;",
+	"\u5C6F>Ton;",
+	"\u5C71>San;",
+	"\u5C79>Kitsu;",
+	"\u5C8C>Kyuu;",
+	"\u5C90>Ki;",
+	"\u5C91>Shin;",
+	"\u5C94>Sa;",
+	"\u5CA1>Kou;",
+	"\u5CA8>So;",
+	"\u5CA9>Gan;",
+	"\u5CAB>Shuu;",
+	"\u5CAC>Kou;",
+	"\u5CB1>Tai;",
+	"\u5CB3>Gaku;",
+	"\u5CB6>Haku;",
+	"\u5CB7>Bin;",
+	"\u5CB8>Gan;",
+	"\u5CBB>Ji;",
+	"\u5CBE>Sen;",
+	"\u5CC7>Kou;",
+	"\u5CD9>Ji;",
+	"\u5CE1>Kyou;",
+	"\u5CE8>Ga;",
+	"\u5CE9>Ga;",
+	"\u5CEA>Yoku;",
+	"\u5CED>Shou;",
+	"\u5CEF>Hou;",
+	"\u5CF0>Hou;",
+	"\u5CF6>Tou;",
+	"\u5CFA>Kou;",
+	"\u5CFB>Shun;",
+	"\u5CFD>Kyou;",
+	"\u5D07>Suu;",
+	"\u5D0B>Ka;",
+	"\u5D0E>Ki;",
+	"\u5D11>Kon;",
+	"\u5D14>Sai;",
+	"\u5D15>Gai;",
+	"\u5D16>Gai;",
+	"\u5D17>Kou;",
+	"\u5D18>Ron;",
+	"\u5D19>Ron;",
+	"\u5D1A>Ryou;",
+	"\u5D1B>Kutsu;",
+	"\u5D1F>Gin;",
+	"\u5D22>Sou;",
+	"\u5D29>Hou;",
+	"\u5D4B>Bi;",
+	"\u5D4C>Kan;",
+	"\u5D4E>Guu;",
+	"\u5D50>Ran;",
+	"\u5D52>Gan;",
+	"\u5D5C>Ki;",
+	"\u5D69>Suu;",
+	"\u5D6C>Kai;",
+	"\u5D6F>Sa;",
+	"\u5D73>Sa;",
+	"\u5D82>Shou;",
+	"\u5D84>San;",
+	"\u5D87>Ku;",
+	"\u5D8B>Tou;",
+	"\u5D8C>Tou;",
+	"\u5D90>Ryuu;",
+	"\u5D9D>Tou;",
+	"\u5DA2>Gyou;",
+	"\u5DAC>Gi;",
+	"\u5DAE>Ken;",
+	"\u5DB7>Gi;",
+	"\u5DBA>Rei;",
+	"\u5DBC>Sho;",
+	"\u5DBD>Gaku;",
+	"\u5DC9>San;",
+	"\u5DCC>Gan;",
+	"\u5DCD>Gi;",
+	"\u5DD2>Ran;",
+	"\u5DD3>Ten;",
+	"\u5DD6>Gan;",
+	"\u5DDB>Sen;",
+	"\u5DDD>Sen;",
+	"\u5DDE>Shuu;",
+	"\u5DE1>Jun;",
+	"\u5DE3>Sou;",
+	"\u5DE5>Kou;",
+	"\u5DE6>Sa;",
+	"\u5DE7>Kou;",
+	"\u5DE8>Kyo;",
+	"\u5DEB>Fu;",
+	"\u5DEE>Shi;",
+	"\u5DF1>Ki;",
+	"\u5DF2>I;",
+	"\u5DF3>Shi;",
+	"\u5DF4>Ha;",
+	"\u5DF5>Shi;",
+	"\u5DF7>Kou;",
+	"\u5DFB>Kan;",
+	"\u5DFD>Son;",
+	"\u5DFE>Kin;",
+	"\u5E02>Shi;",
+	"\u5E03>Fu;",
+	"\u5E06>Han;",
+	"\u5E0B>Shi;",
+	"\u5E0C>Ki;",
+	"\u5E11>Do;",
+	"\u5E16>Jou;",
+	"\u5E19>Chitsu;",
+	"\u5E1A>Sou;",
+	"\u5E1B>Haku;",
+	"\u5E1D>Tei;",
+	"\u5E25>Sotsu;",
+	"\u5E2B>Shi;",
+	"\u5E2D>Seki;",
+	"\u5E2F>Tai;",
+	"\u5E30>Ki;",
+	"\u5E33>Chou;",
+	"\u5E36>Tai;",
+	"\u5E37>I;",
+	"\u5E38>Jou;",
+	"\u5E3D>Bou;",
+	"\u5E40>Tei;",
+	"\u5E43>I;",
+	"\u5E44>Aku;",
+	"\u5E45>Fuku;",
+	"\u5E47>Hou;",
+	"\u5E4C>Kou;",
+	"\u5E4E>Beki;",
+	"\u5E54>Ban;",
+	"\u5E55>Maku;",
+	"\u5E57>Kaku;",
+	"\u5E5F>Shi;",
+	"\u5E61>Han;",
+	"\u5E62>Tou;",
+	"\u5E63>Hei;",
+	"\u5E64>Hei;",
+	"\u5E72>Kan;",
+	"\u5E73>Hei;",
+	"\u5E74>Nen;",
+	"\u5E75>Ken;",
+	"\u5E76>Hei;",
+	"\u5E78>Kou;",
+	"\u5E79>Kan;",
+	"\u5E7A>You;",
+	"\u5E7B>Gen;",
+	"\u5E7C>You;",
+	"\u5E7D>Yuu;",
+	"\u5E7E>Ki;",
+	"\u5E7F>Gen;",
+	"\u5E81>Chou;",
+	"\u5E83>Kou;",
+	"\u5E84>Sou;",
+	"\u5E87>Hi;",
+	"\u5E8A>Shou;",
+	"\u5E8F>Jo;",
+	"\u5E95>Tei;",
+	"\u5E96>Hou;",
+	"\u5E97>Ten;",
+	"\u5E9A>Kou;",
+	"\u5E9C>Fu;",
+	"\u5EA0>Shou;",
+	"\u5EA6>Taku;",
+	"\u5EA7>Za;",
+	"\u5EAB>Ko;",
+	"\u5EAD>Tei;",
+	"\u5EB5>An;",
+	"\u5EB6>Sho;",
+	"\u5EB7>Kou;",
+	"\u5EB8>You;",
+	"\u5EC1>Shi;",
+	"\u5EC2>Shou;",
+	"\u5EC3>Hai;",
+	"\u5EC8>Ka;",
+	"\u5EC9>Ren;",
+	"\u5ECA>Rou;",
+	"\u5ED0>Kyuu;",
+	"\u5ED3>Kaku;",
+	"\u5ED6>Ryou;",
+	"\u5EDA>Zu;",
+	"\u5EDB>Ten;",
+	"\u5EDD>Shi;",
+	"\u5EDF>Byou;",
+	"\u5EE0>Shou;",
+	"\u5EE1>Bu;",
+	"\u5EE2>Hai;",
+	"\u5EE3>Kou;",
+	"\u5EE8>Kai;",
+	"\u5EE9>Rin;",
+	"\u5EEC>Ryo;",
+	"\u5EF0>Chou;",
+	"\u5EF1>You;",
+	"\u5EF3>Chou;",
+	"\u5EF4>In;",
+	"\u5EF6>En;",
+	"\u5EF7>Tei;",
+	"\u5EF8>Teki;",
+	"\u5EFA>Ken;",
+	"\u5EFB>Kai;",
+	"\u5EFC>Dai;",
+	"\u5EFE>Kyou;",
+	"\u5EFF>Juu;",
+	"\u5F01>Ben;",
+	"\u5F03>Ki;",
+	"\u5F04>Rou;",
+	"\u5F09>Jou;",
+	"\u5F0A>Hei;",
+	"\u5F0B>Yoku;",
+	"\u5F0C>Itsu;",
+	"\u5F0D>Ni;",
+	"\u5F0F>Shiki;",
+	"\u5F10>Ni;",
+	"\u5F11>Shi;",
+	"\u5F13>Kyuu;",
+	"\u5F14>Chou;",
+	"\u5F15>In;",
+	"\u5F17>Futsu;",
+	"\u5F18>Kou;",
+	"\u5F1B>Shi;",
+	"\u5F1F>Tei;",
+	"\u5F25>Mi;",
+	"\u5F26>Gen;",
+	"\u5F27>Ko;",
+	"\u5F29>Do;",
+	"\u5F2D>Bi;",
+	"\u5F2F>Wan;",
+	"\u5F31>Jaku;",
+	"\u5F35>Chou;",
+	"\u5F37>Kyou;",
+	"\u5F38>Hou;",
+	"\u5F3C>Hitsu;",
+	"\u5F3E>Dan;",
+	"\u5F41>Sei;",
+	"\u5F48>Dan;",
+	"\u5F4A>Kyou;",
+	"\u5F4C>Bi;",
+	"\u5F4E>Wan;",
+	"\u5F51>Kei;",
+	"\u5F53>Tou;",
+	"\u5F56>Tan;",
+	"\u5F57>Sui;",
+	"\u5F59>I;",
+	"\u5F5C>I;",
+	"\u5F5D>I;",
+	"\u5F61>San;",
+	"\u5F62>Kei;",
+	"\u5F66>Gen;",
+	"\u5F69>Sai;",
+	"\u5F6A>Hyou;",
+	"\u5F6B>Chou;",
+	"\u5F6C>Hin;",
+	"\u5F6D>Hou;",
+	"\u5F70>Shou;",
+	"\u5F71>Ei;",
+	"\u5F73>Teki;",
+	"\u5F77>Hou;",
+	"\u5F79>Yaku;",
+	"\u5F7C>Hi;",
+	"\u5F7F>Futsu;",
+	"\u5F80>Ou;",
+	"\u5F81>Sei;",
+	"\u5F82>So;",
+	"\u5F83>Ou;",
+	"\u5F84>Kei;",
+	"\u5F85>Tai;",
+	"\u5F87>Shun;",
+	"\u5F88>Kon;",
+	"\u5F8A>Kai;",
+	"\u5F8B>Ritsu;",
+	"\u5F8C>Go;",
+	"\u5F90>Jo;",
+	"\u5F91>Kei;",
+	"\u5F92>To;",
+	"\u5F93>Juu;",
+	"\u5F97>Toku;",
+	"\u5F98>Hai;",
+	"\u5F99>Shi;",
+	"\u5F9E>Juu;",
+	"\u5FA0>Rai;",
+	"\u5FA1>Gyo;",
+	"\u5FA8>Kou;",
+	"\u5FA9>Fuku;",
+	"\u5FAA>Jun;",
+	"\u5FAD>You;",
+	"\u5FAE>Bi;",
+	"\u5FB3>Toku;",
+	"\u5FB4>Chou;",
+	"\u5FB9>Tetsu;",
+	"\u5FBC>Kyou;",
+	"\u5FBD>Ki;",
+	"\u5FC3>Shin;",
+	"\u5FC5>Hitsu;",
+	"\u5FCC>Ki;",
+	"\u5FCD>Nin;",
+	"\u5FD6>Son;",
+	"\u5FD7>Shi;",
+	"\u5FD8>Bou;",
+	"\u5FD9>Bou;",
+	"\u5FDC>Ou;",
+	"\u5FDD>Ten;",
+	"\u5FE0>Chuu;",
+	"\u5FE4>Go;",
+	"\u5FEB>Kai;",
+	"\u5FF0>Sui;",
+	"\u5FF1>Shin;",
+	"\u5FF5>Nen;",
+	"\u5FF8>Jiku;",
+	"\u5FFB>Kin;",
+	"\u5FFD>Kotsu;",
+	"\u5FFF>Fun;",
+	"\u600E>Shin;",
+	"\u600F>You;",
+	"\u6010>Kou;",
+	"\u6012>Do;",
+	"\u6015>Ha;",
+	"\u6016>Fu;",
+	"\u6019>Ko;",
+	"\u601B>Datsu;",
+	"\u601C>Rei;",
+	"\u601D>Shi;",
+	"\u6020>Tai;",
+	"\u6021>I;",
+	"\u6025>Kyuu;",
+	"\u6026>Hou;",
+	"\u6027>Sei;",
+	"\u6028>En;",
+	"\u6029>Ji;",
+	"\u602A>Kai;",
+	"\u602B>Futsu;",
+	"\u602F>Kyou;",
+	"\u6031>Sou;",
+	"\u6041>In;",
+	"\u6042>Jun;",
+	"\u6043>Ji;",
+	"\u6046>Kou;",
+	"\u604A>Kyou;",
+	"\u604B>Ren;",
+	"\u604D>Kou;",
+	"\u6050>Kyou;",
+	"\u6052>Kou;",
+	"\u6055>Jo;",
+	"\u6059>You;",
+	"\u605A>I;",
+	"\u605F>Kyou;",
+	"\u6060>Kai;",
+	"\u6062>Kai;",
+	"\u6063>Shi;",
+	"\u6064>Jutsu;",
+	"\u6065>Chi;",
+	"\u6068>Kon;",
+	"\u6069>On;",
+	"\u606A>Kaku;",
+	"\u606B>Dou;",
+	"\u606C>Ten;",
+	"\u606D>Kyou;",
+	"\u606F>Soku;",
+	"\u6070>Kou;",
+	"\u6075>Kei;",
+	"\u6077>Kyuu;",
+	"\u6081>En;",
+	"\u6083>Kon;",
+	"\u6084>Shou;",
+	"\u6089>Shitsu;",
+	"\u608B>Rin;",
+	"\u608C>Tei;",
+	"\u608D>Kan;",
+	"\u6092>Yuu;",
+	"\u6094>Kai;",
+	"\u6096>Hai;",
+	"\u6097>Ban;",
+	"\u609A>Shou;",
+	"\u609B>Sen;",
+	"\u609F>Go;",
+	"\u60A0>Yuu;",
+	"\u60A3>Kan;",
+	"\u60A6>Etsu;",
+	"\u60A7>Ri;",
+	"\u60A9>Nou;",
+	"\u60AA>Aku;",
+	"\u60B2>Hi;",
+	"\u60B3>Toku;",
+	"\u60B4>Sui;",
+	"\u60B5>Chou;",
+	"\u60B6>Mon;",
+	"\u60B8>Ki;",
+	"\u60BC>Tou;",
+	"\u60BD>Sei;",
+	"\u60C5>Jou;",
+	"\u60C6>Chuu;",
+	"\u60C7>Ton;",
+	"\u60D1>Waku;",
+	"\u60D3>Ken;",
+	"\u60D8>Bou;",
+	"\u60DA>Kotsu;",
+	"\u60DC>Seki;",
+	"\u60DF>I;",
+	"\u60E0>Kei;",
+	"\u60E1>O;",
+	"\u60E3>Sou;",
+	"\u60E7>Ku;",
+	"\u60E8>San;",
+	"\u60F0>Da;",
+	"\u60F1>Nou;",
+	"\u60F3>Sou;",
+	"\u60F4>Zui;",
+	"\u60F6>Kou;",
+	"\u60F7>Shun;",
+	"\u60F9>Ja;",
+	"\u60FA>Sei;",
+	"\u60FB>Soku;",
+	"\u6100>Shou;",
+	"\u6101>Shuu;",
+	"\u6103>Ken;",
+	"\u6106>Ken;",
+	"\u6108>Yu;",
+	"\u6109>Yu;",
+	"\u610D>Bin;",
+	"\u610E>Hyoku;",
+	"\u610F>I;",
+	"\u6115>Gaku;",
+	"\u611A>Gu;",
+	"\u611B>Ai;",
+	"\u611F>Kan;",
+	"\u6121>Sou;",
+	"\u6127>Ki;",
+	"\u6128>Kaku;",
+	"\u612C>So;",
+	"\u6134>Sou;",
+	"\u613C>Shin;",
+	"\u613D>Haku;",
+	"\u613E>Ki;",
+	"\u613F>Gen;",
+	"\u6142>You;",
+	"\u6144>Ritsu;",
+	"\u6147>In;",
+	"\u6148>Ji;",
+	"\u614A>Ken;",
+	"\u614B>Tai;",
+	"\u614C>Kou;",
+	"\u614D>Un;",
+	"\u614E>Shin;",
+	"\u6153>Hyou;",
+	"\u6155>Bo;",
+	"\u6158>San;",
+	"\u6159>Zan;",
+	"\u615A>Zan;",
+	"\u615D>Toku;",
+	"\u615F>Dou;",
+	"\u6162>Man;",
+	"\u6163>Kan;",
+	"\u6165>Zou;",
+	"\u6167>Kei;",
+	"\u6168>Gai;",
+	"\u616B>Shou;",
+	"\u616E>Ryo;",
+	"\u616F>Shou;",
+	"\u6170>I;",
+	"\u6171>Tan;",
+	"\u6173>Kan;",
+	"\u6174>Shou;",
+	"\u6175>You;",
+	"\u6176>Kei;",
+	"\u6177>Kou;",
+	"\u617E>Yoku;",
+	"\u6182>Yuu;",
+	"\u6187>Kei;",
+	"\u618A>Hai;",
+	"\u618E>Zou;",
+	"\u6190>Ren;",
+	"\u6191>Hyou;",
+	"\u6194>Shou;",
+	"\u6196>Gin;",
+	"\u6199>Ki;",
+	"\u619A>Tan;",
+	"\u61A4>Fun;",
+	"\u61A7>Dou;",
+	"\u61A9>Kei;",
+	"\u61AB>Bin;",
+	"\u61AC>Kei;",
+	"\u61AE>Bu;",
+	"\u61B2>Ken;",
+	"\u61B6>Oku;",
+	"\u61BA>Tan;",
+	"\u61BE>Kan;",
+	"\u61C3>Kin;",
+	"\u61C6>Sou;",
+	"\u61C7>Kon;",
+	"\u61C8>Kai;",
+	"\u61C9>You;",
+	"\u61CA>Ou;",
+	"\u61CB>Bou;",
+	"\u61CC>Eki;",
+	"\u61CD>Rin;",
+	"\u61D0>Kai;",
+	"\u61E3>Mon;",
+	"\u61E6>Da;",
+	"\u61F2>Chou;",
+	"\u61F4>Zan;",
+	"\u61F6>Ran;",
+	"\u61F7>Kai;",
+	"\u61F8>Ken;",
+	"\u61FA>Zan;",
+	"\u61FC>Ku;",
+	"\u61FD>Kan;",
+	"\u61FE>Shou;",
+	"\u61FF>I;",
+	"\u6200>Ren;",
+	"\u6208>Ka;",
+	"\u6209>Etsu;",
+	"\u620A>Bo;",
+	"\u620C>Jutsu;",
+	"\u620D>Ju;",
+	"\u620E>Juu;",
+	"\u6210>Sei;",
+	"\u6211>Ga;",
+	"\u6212>Kai;",
+	"\u6214>San;",
+	"\u6216>Waku;",
+	"\u621A>Seki;",
+	"\u621B>Katsu;",
+	"\u621D>Zoku;",
+	"\u621E>Katsu;",
+	"\u621F>Geki;",
+	"\u6221>Kan;",
+	"\u6226>Sen;",
+	"\u622A>Setsu;",
+	"\u622E>Riku;",
+	"\u622F>Gi;",
+	"\u6230>Sen;",
+	"\u6232>Gi;",
+	"\u6233>Taku;",
+	"\u6234>Tai;",
+	"\u6238>Ko;",
+	"\u623B>Rei;",
+	"\u623F>Bou;",
+	"\u6240>Sho;",
+	"\u6241>Hen;",
+	"\u6247>Sen;",
+	"\u6248>Ko;",
+	"\u6249>Hi;",
+	"\u624B>Shu;",
+	"\u624D>Sai;",
+	"\u624E>Satsu;",
+	"\u6253>Da;",
+	"\u6255>Futsu;",
+	"\u6258>Taku;",
+	"\u625B>Kou;",
+	"\u625E>Kan;",
+	"\u6260>Sa;",
+	"\u6263>Kou;",
+	"\u626E>Fun;",
+	"\u6271>Sou;",
+	"\u6276>Fu;",
+	"\u6279>Hi;",
+	"\u627C>Aku;",
+	"\u627E>Ka;",
+	"\u627F>Shou;",
+	"\u6280>Gi;",
+	"\u6282>Kyou;",
+	"\u6283>Ben;",
+	"\u6284>Shou;",
+	"\u6289>Ketsu;",
+	"\u628A>Ha;",
+	"\u6291>Yoku;",
+	"\u6292>Jo;",
+	"\u6293>Sou;",
+	"\u6294>Hou;",
+	"\u6295>Tou;",
+	"\u6296>Tou;",
+	"\u6297>Kou;",
+	"\u6298>Setsu;",
+	"\u629B>Hou;",
+	"\u629C>Batsu;",
+	"\u629E>Taku;",
+	"\u62AB>Hi;",
+	"\u62AC>Tai;",
+	"\u62B1>Hou;",
+	"\u62B5>Tei;",
+	"\u62B9>Matsu;",
+	"\u62BB>Shin;",
+	"\u62BC>Ou;",
+	"\u62BD>Chuu;",
+	"\u62C2>Futsu;",
+	"\u62C5>Tan;",
+	"\u62C6>Taku;",
+	"\u62C7>Bo;",
+	"\u62C8>Den;",
+	"\u62C9>Ratsu;",
+	"\u62CA>Fu;",
+	"\u62CC>Han;",
+	"\u62CD>Haku;",
+	"\u62CF>Da;",
+	"\u62D0>Kai;",
+	"\u62D1>Kan;",
+	"\u62D2>Kyo;",
+	"\u62D3>Taku;",
+	"\u62D4>Batsu;",
+	"\u62D7>Ou;",
+	"\u62D8>Kou;",
+	"\u62D9>Setsu;",
+	"\u62DB>Shou;",
+	"\u62DC>Hai;",
+	"\u62DD>Hai;",
+	"\u62E0>Kyo;",
+	"\u62E1>Kaku;",
+	"\u62EC>Katsu;",
+	"\u62ED>Shiki;",
+	"\u62EE>Kitsu;",
+	"\u62EF>Jou;",
+	"\u62F1>Kyou;",
+	"\u62F3>Ken;",
+	"\u62F5>Son;",
+	"\u62F6>Satsu;",
+	"\u62F7>Gou;",
+	"\u62FE>Shuu;",
+	"\u62FF>Da;",
+	"\u6301>Ji;",
+	"\u6302>Kei;",
+	"\u6307>Shi;",
+	"\u6308>Ketsu;",
+	"\u6309>An;",
+	"\u630C>Kaku;",
+	"\u6311>Chou;",
+	"\u6319>Kyo;",
+	"\u631F>Kyou;",
+	"\u6327>Ku;",
+	"\u6328>Ai;",
+	"\u632B>Za;",
+	"\u632F>Shin;",
+	"\u633A>Tei;",
+	"\u633D>Ban;",
+	"\u633E>Kyou;",
+	"\u633F>Sou;",
+	"\u6349>Soku;",
+	"\u634C>Hatsu;",
+	"\u634D>Kan;",
+	"\u634F>Detsu;",
+	"\u6350>En;",
+	"\u6355>Ho;",
+	"\u6357>Ho;",
+	"\u635C>Sou;",
+	"\u6367>Hou;",
+	"\u6368>Sha;",
+	"\u6369>Retsu;",
+	"\u636B>Mon;",
+	"\u636E>Kyo;",
+	"\u6372>Ken;",
+	"\u6376>Sui;",
+	"\u6377>Shou;",
+	"\u637A>Natsu;",
+	"\u637B>Nen;",
+	"\u6380>Kin;",
+	"\u6383>Sou;",
+	"\u6388>Ju;",
+	"\u6389>Tou;",
+	"\u638C>Shou;",
+	"\u638E>Ki;",
+	"\u638F>Tou;",
+	"\u6392>Hai;",
+	"\u6396>Eki;",
+	"\u6398>Kutsu;",
+	"\u639B>Ka;",
+	"\u639F>Tou;",
+	"\u63A0>Ryaku;",
+	"\u63A1>Sai;",
+	"\u63A2>Tan;",
+	"\u63A3>Sei;",
+	"\u63A5>Setsu;",
+	"\u63A7>Kou;",
+	"\u63A8>Sui;",
+	"\u63A9>En;",
+	"\u63AA>So;",
+	"\u63AB>Sou;",
+	"\u63AC>Kiku;",
+	"\u63B2>Kei;",
+	"\u63B4>Kaku;",
+	"\u63BB>Sou;",
+	"\u63BE>En;",
+	"\u63C0>Kan;",
+	"\u63C3>Sen;",
+	"\u63C4>Yu;",
+	"\u63C6>Ki;",
+	"\u63C9>Juu;",
+	"\u63CF>Byou;",
+	"\u63D0>Tei;",
+	"\u63D2>Sou;",
+	"\u63D6>Yuu;",
+	"\u63DA>You;",
+	"\u63DB>Kan;",
+	"\u63E1>Aku;",
+	"\u63E3>Shi;",
+	"\u63E9>Kai;",
+	"\u63EE>Ki;",
+	"\u63F4>En;",
+	"\u63F6>Ya;",
+	"\u63FA>You;",
+	"\u6406>Kou;",
+	"\u640D>Son;",
+	"\u640F>Haku;",
+	"\u6413>Sa;",
+	"\u6416>You;",
+	"\u6417>Tou;",
+	"\u641C>Sou;",
+	"\u6426>Jaku;",
+	"\u6428>Tou;",
+	"\u642C>Han;",
+	"\u642D>Tou;",
+	"\u6434>Ken;",
+	"\u6436>Shou;",
+	"\u643A>Kei;",
+	"\u643E>Saku;",
+	"\u6442>Setsu;",
+	"\u644E>Kyuu;",
+	"\u6458>Teki;",
+	"\u6467>Sai;",
+	"\u6469>Ma;",
+	"\u646F>Shi;",
+	"\u6476>Tan;",
+	"\u6478>Mo;",
+	"\u647A>Shou;",
+	"\u6483>Geki;",
+	"\u6488>Rou;",
+	"\u6492>San;",
+	"\u6493>Dou;",
+	"\u6495>Sei;",
+	"\u649A>Nen;",
+	"\u649E>Shu;",
+	"\u64A4>Tetsu;",
+	"\u64A5>Hatsu;",
+	"\u64A9>Ryou;",
+	"\u64AB>Bu;",
+	"\u64AD>Ha;",
+	"\u64AE>Satsu;",
+	"\u64B0>San;",
+	"\u64B2>Boku;",
+	"\u64B9>Kaku;",
+	"\u64BB>Tachi;",
+	"\u64BC>Kan;",
+	"\u64C1>You;",
+	"\u64C2>Rai;",
+	"\u64C5>Sen;",
+	"\u64C7>Taku;",
+	"\u64CD>Sou;",
+	"\u64D2>Kin;",
+	"\u64D4>Tan;",
+	"\u64D8>Haku;",
+	"\u64DA>Kyo;",
+	"\u64E0>Sei;",
+	"\u64E1>Tai;",
+	"\u64E2>Teki;",
+	"\u64E3>Tou;",
+	"\u64E6>Satsu;",
+	"\u64E7>Kyo;",
+	"\u64EC>Gi;",
+	"\u64EF>Hin;",
+	"\u64F1>Kaku;",
+	"\u64F2>Teki;",
+	"\u64F4>Kaku;",
+	"\u64F6>Sen;",
+	"\u64FA>Hai;",
+	"\u64FD>Ryaku;",
+	"\u64FE>Jou;",
+	"\u6500>Han;",
+	"\u6505>San;",
+	"\u6518>Jou;",
+	"\u651C>Kei;",
+	"\u651D>Setsu;",
+	"\u6523>Ren;",
+	"\u6524>Tan;",
+	"\u652A>Kaku;",
+	"\u652B>Kaku;",
+	"\u652C>Ran;",
+	"\u652F>Shi;",
+	"\u6534>Hoku;",
+	"\u6535>Boku;",
+	"\u6536>Shuu;",
+	"\u6537>Kou;",
+	"\u6538>Yuu;",
+	"\u6539>Kai;",
+	"\u653B>Kou;",
+	"\u653E>Hou;",
+	"\u653F>Sei;",
+	"\u6545>Ko;",
+	"\u6548>Kou;",
+	"\u654D>Jo;",
+	"\u654F>Bin;",
+	"\u6551>Kyuu;",
+	"\u6555>Choku;",
+	"\u6556>Gou;",
+	"\u6557>Hai;",
+	"\u6558>Jo;",
+	"\u6559>Kyou;",
+	"\u655D>Hei;",
+	"\u655E>Shou;",
+	"\u6562>Kan;",
+	"\u6563>San;",
+	"\u6566>Ton;",
+	"\u656C>Kei;",
+	"\u6570>Suu;",
+	"\u6572>Kou;",
+	"\u6574>Sei;",
+	"\u6575>Teki;",
+	"\u6577>Fu;",
+	"\u6578>Suu;",
+	"\u6582>Ren;",
+	"\u6583>Hei;",
+	"\u6587>Bun;",
+	"\u6588>Gaku;",
+	"\u6589>Sei;",
+	"\u658C>Hin;",
+	"\u658E>Sai;",
+	"\u6590>Hi;",
+	"\u6591>Han;",
+	"\u6597>To;",
+	"\u6599>Ryou;",
+	"\u659B>Koku;",
+	"\u659C>Sha;",
+	"\u659F>Shin;",
+	"\u65A1>Atsu;",
+	"\u65A4>Kin;",
+	"\u65A5>Seki;",
+	"\u65A7>Fu;",
+	"\u65AB>Shaku;",
+	"\u65AC>Zan;",
+	"\u65AD>Dan;",
+	"\u65AF>Shi;",
+	"\u65B0>Shin;",
+	"\u65B7>Dan;",
+	"\u65B9>Hou;",
+	"\u65BC>O;",
+	"\u65BD>Shi;",
+	"\u65C1>Hou;",
+	"\u65C3>Sen;",
+	"\u65C4>Bou;",
+	"\u65C5>Ryo;",
+	"\u65C6>Hai;",
+	"\u65CB>Sen;",
+	"\u65CC>Sei;",
+	"\u65CF>Zoku;",
+	"\u65D2>Ryuu;",
+	"\u65D7>Ki;",
+	"\u65D9>Han;",
+	"\u65DB>Han;",
+	"\u65E0>Bu;",
+	"\u65E1>Ki;",
+	"\u65E2>Ki;",
+	"\u65E5>Nichi;",
+	"\u65E6>Tan;",
+	"\u65E7>Kyuu;",
+	"\u65E8>Shi;",
+	"\u65E9>Sou;",
+	"\u65EC>Jun;",
+	"\u65ED>Kyoku;",
+	"\u65F1>Kan;",
+	"\u65FA>Ou;",
+	"\u65FB>Bin;",
+	"\u6602>Kou;",
+	"\u6603>Soku;",
+	"\u6606>Kon;",
+	"\u6607>Shou;",
+	"\u660A>Kou;",
+	"\u660C>Shou;",
+	"\u660E>Mei;",
+	"\u660F>Kon;",
+	"\u6613>Eki;",
+	"\u6614>Seki;",
+	"\u661C>You;",
+	"\u661F>Sei;",
+	"\u6620>Ei;",
+	"\u6625>Shun;",
+	"\u6627>Mai;",
+	"\u6628>Saku;",
+	"\u662D>Shou;",
+	"\u662F>Ze;",
+	"\u6634>Bou;",
+	"\u6635>Jitsu;",
+	"\u6636>Chou;",
+	"\u663C>Chuu;",
+	"\u663F>Kou;",
+	"\u6641>Chou;",
+	"\u6642>Ji;",
+	"\u6643>Kou;",
+	"\u6644>Kou;",
+	"\u6649>Shin;",
+	"\u664B>Shin;",
+	"\u664F>An;",
+	"\u6652>Sai;",
+	"\u665D>Chuu;",
+	"\u665E>Ki;",
+	"\u665F>Sei;",
+	"\u6662>Setsu;",
+	"\u6664>Go;",
+	"\u6666>Kai;",
+	"\u6667>Kou;",
+	"\u6668>Shin;",
+	"\u6669>Ban;",
+	"\u666E>Fu;",
+	"\u666F>Kei;",
+	"\u6670>Seki;",
+	"\u6674>Sei;",
+	"\u6676>Shou;",
+	"\u667A>Chi;",
+	"\u6681>Gyou;",
+	"\u6683>Hi;",
+	"\u6684>Ken;",
+	"\u6687>Ka;",
+	"\u6688>Un;",
+	"\u6689>Ki;",
+	"\u668E>Ei;",
+	"\u6691>Sho;",
+	"\u6696>Dan;",
+	"\u6697>An;",
+	"\u6698>You;",
+	"\u669D>Mei;",
+	"\u66A2>Chou;",
+	"\u66A6>Reki;",
+	"\u66AB>Zan;",
+	"\u66AE>Bo;",
+	"\u66B4>Bou;",
+	"\u66B8>Ryou;",
+	"\u66B9>Sen;",
+	"\u66BC>Hetsu;",
+	"\u66BE>Ton;",
+	"\u66C1>Ki;",
+	"\u66C4>You;",
+	"\u66C7>Don;",
+	"\u66C9>Gyou;",
+	"\u66D6>Ai;",
+	"\u66D9>Sho;",
+	"\u66DA>Bou;",
+	"\u66DC>You;",
+	"\u66DD>Baku;",
+	"\u66E0>Kou;",
+	"\u66E6>Gi;",
+	"\u66E9>Dou;",
+	"\u66F0>Etsu;",
+	"\u66F2>Kyoku;",
+	"\u66F3>Ei;",
+	"\u66F4>Kou;",
+	"\u66F5>Ei;",
+	"\u66F7>Katsu;",
+	"\u66F8>Sho;",
+	"\u66F9>Sou;",
+	"\u66FC>Ban;",
+	"\u66FD>Zo;",
+	"\u66FE>So;",
+	"\u66FF>Tai;",
+	"\u6700>Sai;",
+	"\u6703>Kai;",
+	"\u6708>Getsu;",
+	"\u6709>Yuu;",
+	"\u670B>Hou;",
+	"\u670D>Fuku;",
+	"\u670F>Hi;",
+	"\u6714>Saku;",
+	"\u6715>Chin;",
+	"\u6716>Rou;",
+	"\u6717>Rou;",
+	"\u671B>Bou;",
+	"\u671D>Chou;",
+	"\u671E>Ki;",
+	"\u671F>Ki;",
+	"\u6726>Bou;",
+	"\u6727>Rou;",
+	"\u6728>Boku;",
+	"\u672A>Mi;",
+	"\u672B>Matsu;",
+	"\u672C>Hon;",
+	"\u672D>Satsu;",
+	"\u672E>Jutsu;",
+	"\u6731>Shu;",
+	"\u6734>Boku;",
+	"\u6736>Da;",
+	"\u6737>Tou;",
+	"\u6738>Ryoku;",
+	"\u673A>Ki;",
+	"\u673D>Kyuu;",
+	"\u673F>Shi;",
+	"\u6746>Kan;",
+	"\u6749>San;",
+	"\u674E>Ri;",
+	"\u674F>Kyou;",
+	"\u6750>Zai;",
+	"\u6751>Son;",
+	"\u6753>Hyou;",
+	"\u6756>Jou;",
+	"\u6759>Yoku;",
+	"\u675C>Do;",
+	"\u675E>Ko;",
+	"\u675F>Soku;",
+	"\u6760>Kou;",
+	"\u6761>Jou;",
+	"\u6765>Rai;",
+	"\u676A>Byou;",
+	"\u676D>Kou;",
+	"\u676F>Hai;",
+	"\u6770>Ketsu;",
+	"\u6771>Tou;",
+	"\u6772>Kou;",
+	"\u6773>You;",
+	"\u6775>Sho;",
+	"\u6777>Ha;",
+	"\u677C>Cho;",
+	"\u677E>Shou;",
+	"\u677F>Han;",
+	"\u6785>Kei;",
+	"\u6787>Hi;",
+	"\u6789>Ou;",
+	"\u678B>Hou;",
+	"\u678C>Fun;",
+	"\u6790>Seki;",
+	"\u6795>Chin;",
+	"\u6797>Rin;",
+	"\u679A>Mai;",
+	"\u679C>Ka;",
+	"\u679D>Shi;",
+	"\u67A2>Suu;",
+	"\u67A6>Ro;",
+	"\u67A9>Shou;",
+	"\u67AF>Ko;",
+	"\u67B3>Ki;",
+	"\u67B4>Kai;",
+	"\u67B6>Ka;",
+	"\u67B7>Ka;",
+	"\u67B8>Ku;",
+	"\u67B9>Hou;",
+	"\u67C1>Ta;",
+	"\u67C4>Hei;",
+	"\u67C6>Rou;",
+	"\u67CA>Shuu;",
+	"\u67CE>Fu;",
+	"\u67CF>Haku;",
+	"\u67D0>Bou;",
+	"\u67D1>Kan;",
+	"\u67D3>Sen;",
+	"\u67D4>Nyuu;",
+	"\u67D8>Sha;",
+	"\u67DA>Yuu;",
+	"\u67DD>Taku;",
+	"\u67DE>Saku;",
+	"\u67E2>Tei;",
+	"\u67E4>Sa;",
+	"\u67E7>Ko;",
+	"\u67E9>Kyuu;",
+	"\u67EC>Kan;",
+	"\u67EE>Totsu;",
+	"\u67EF>Ka;",
+	"\u67F1>Chuu;",
+	"\u67F3>Ryuu;",
+	"\u67F4>Sai;",
+	"\u67F5>Saku;",
+	"\u67FB>Sa;",
+	"\u67FE>Kyuu;",
+	"\u67FF>Shi;",
+	"\u6804>Ei;",
+	"\u6813>Sen;",
+	"\u6816>Sei;",
+	"\u6817>Ritsu;",
+	"\u681E>Kan;",
+	"\u6821>Kou;",
+	"\u6822>Haku;",
+	"\u6829>Ku;",
+	"\u682A>Chu;",
+	"\u682B>Son;",
+	"\u6832>Gou;",
+	"\u6834>Sen;",
+	"\u6838>Kaku;",
+	"\u6839>Kon;",
+	"\u683C>Kou;",
+	"\u683D>Sai;",
+	"\u6840>Ketsu;",
+	"\u6841>Kou;",
+	"\u6842>Kei;",
+	"\u6843>Tou;",
+	"\u6846>Kyou;",
+	"\u6848>An;",
+	"\u684D>Ko;",
+	"\u684E>Shitsu;",
+	"\u6850>Dou;",
+	"\u6851>Sou;",
+	"\u6853>Kan;",
+	"\u6854>Kitsu;",
+	"\u6859>U;",
+	"\u685C>Ou;",
+	"\u685F>San;",
+	"\u6863>Tou;",
+	"\u6867>Kai;",
+	"\u6874>Fu;",
+	"\u6876>Tou;",
+	"\u6877>Kaku;",
+	"\u687E>Kun;",
+	"\u687F>Kan;",
+	"\u6881>Ryou;",
+	"\u6883>Tei;",
+	"\u6885>Bai;",
+	"\u688D>Sou;",
+	"\u688F>Koku;",
+	"\u6893>Shi;",
+	"\u6894>Shi;",
+	"\u6897>Kou;",
+	"\u689B>Da;",
+	"\u689D>Jou;",
+	"\u689F>Kyou;",
+	"\u68A0>Ryo;",
+	"\u68A2>Shou;",
+	"\u68A6>Mu;",
+	"\u68A7>Go;",
+	"\u68A8>Ri;",
+	"\u68AD>Sa;",
+	"\u68AF>Tei;",
+	"\u68B0>Kai;",
+	"\u68B1>Kon;",
+	"\u68B3>So;",
+	"\u68B5>Fuu;",
+	"\u68B6>Bi;",
+	"\u68B9>Bin;",
+	"\u68BC>Tou;",
+	"\u68C4>Ki;",
+	"\u68C6>Rin;",
+	"\u68C9>Men;",
+	"\u68CA>Ki;",
+	"\u68CB>Ki;",
+	"\u68CD>Kon;",
+	"\u68D2>Bou;",
+	"\u68D4>Kon;",
+	"\u68D5>Shu;",
+	"\u68D7>Sou;",
+	"\u68D8>Kyoku;",
+	"\u68DA>Hou;",
+	"\u68DF>Tou;",
+	"\u68E0>Tou;",
+	"\u68E1>Kou;",
+	"\u68E3>Tei;",
+	"\u68E7>San;",
+	"\u68EE>Shin;",
+	"\u68EF>Jin;",
+	"\u68F2>Sei;",
+	"\u68F9>Tou;",
+	"\u68FA>Kan;",
+	"\u6900>Wan;",
+	"\u6901>Kaku;",
+	"\u6904>Setsu;",
+	"\u6905>I;",
+	"\u6908>Kiku;",
+	"\u690B>Ryou;",
+	"\u690C>Kou;",
+	"\u690D>Shoku;",
+	"\u690E>Tsui;",
+	"\u690F>A;",
+	"\u6912>Shou;",
+	"\u691C>Ken;",
+	"\u6922>Kai;",
+	"\u6926>Ken;",
+	"\u6930>Ya;",
+	"\u6934>Tan;",
+	"\u6936>Shu;",
+	"\u6939>Chin;",
+	"\u693D>Ten;",
+	"\u693F>Chin;",
+	"\u694A>You;",
+	"\u6953>Fuu;",
+	"\u6954>Setsu;",
+	"\u6955>Da;",
+	"\u6959>Bou;",
+	"\u695A>So;",
+	"\u695C>Ko;",
+	"\u695D>Ren;",
+	"\u695E>Rou;",
+	"\u6960>Nan;",
+	"\u6961>Yu;",
+	"\u6962>Shuu;",
+	"\u696A>You;",
+	"\u696B>Shuu;",
+	"\u696D>Gyou;",
+	"\u696E>Cho;",
+	"\u696F>Jun;",
+	"\u6973>Bai;",
+	"\u6974>Tei;",
+	"\u6975>Goku;",
+	"\u6977>Kai;",
+	"\u6978>Shuu;",
+	"\u6979>Ei;",
+	"\u697C>Rou;",
+	"\u697D>Gaku;",
+	"\u6982>Gai;",
+	"\u698E>Ka;",
+	"\u6991>Fu;",
+	"\u6994>Rou;",
+	"\u6995>You;",
+	"\u699B>Shin;",
+	"\u699C>Bou;",
+	"\u69A0>Bei;",
+	"\u69A7>Hi;",
+	"\u69AE>Ei;",
+	"\u69B1>Sui;",
+	"\u69B2>Otsu;",
+	"\u69B4>Ryuu;",
+	"\u69BB>Tou;",
+	"\u69BE>Kotsu;",
+	"\u69BF>Ki;",
+	"\u69C1>Kou;",
+	"\u69C3>Han;",
+	"\u69C7>Ten;",
+	"\u69CA>Saku;",
+	"\u69CB>Kou;",
+	"\u69CC>Tsui;",
+	"\u69CD>Sou;",
+	"\u69CE>Sa;",
+	"\u69D0>Kai;",
+	"\u69D3>Kou;",
+	"\u69D8>You;",
+	"\u69D9>Ten;",
+	"\u69DD>Tou;",
+	"\u69DE>Rou;",
+	"\u69E7>San;",
+	"\u69E8>Kaku;",
+	"\u69EB>Tan;",
+	"\u69ED>Shuku;",
+	"\u69F2>Koku;",
+	"\u69F9>Kou;",
+	"\u69FB>Ki;",
+	"\u69FD>Sou;",
+	"\u69FF>Kin;",
+	"\u6A02>Gaku;",
+	"\u6A05>Shou;",
+	"\u6A0A>Han;",
+	"\u6A0B>Tou;",
+	"\u6A0C>Kan;",
+	"\u6A12>Mitsu;",
+	"\u6A13>Rou;",
+	"\u6A14>Sou;",
+	"\u6A17>Cho;",
+	"\u6A19>Hyou;",
+	"\u6A1B>Kyuu;",
+	"\u6A1E>Suu;",
+	"\u6A1F>Shou;",
+	"\u6A21>Mo;",
+	"\u6A22>Boku;",
+	"\u6A23>You;",
+	"\u6A29>Ken;",
+	"\u6A2A>Ou;",
+	"\u6A35>Shou;",
+	"\u6A36>Sai;",
+	"\u6A38>Boku;",
+	"\u6A39>Ju;",
+	"\u6A3A>Ka;",
+	"\u6A3D>Son;",
+	"\u6A44>Kan;",
+	"\u6A47>Zei;",
+	"\u6A48>Dou;",
+	"\u6A4B>Kyou;",
+	"\u6A58>Kitsu;",
+	"\u6A59>Tou;",
+	"\u6A5F>Ki;",
+	"\u6A61>Shou;",
+	"\u6A62>Da;",
+	"\u6A66>Tou;",
+	"\u6A78>Shou;",
+	"\u6A7F>Kyou;",
+	"\u6A80>Tan;",
+	"\u6A84>Geki;",
+	"\u6A8D>Yoku;",
+	"\u6A8E>Go;",
+	"\u6A90>En;",
+	"\u6A97>Haku;",
+	"\u6A9C>Kai;",
+	"\u6AA0>Kei;",
+	"\u6AA2>Ken;",
+	"\u6AA3>Shou;",
+	"\u6AAA>Reki;",
+	"\u6AAC>Bou;",
+	"\u6AAE>Tou;",
+	"\u6AB3>Bin;",
+	"\u6AB8>Nei;",
+	"\u6ABB>Kan;",
+	"\u6AC1>Mitsu;",
+	"\u6AC2>Tou;",
+	"\u6AC3>Ki;",
+	"\u6AD1>Rai;",
+	"\u6AD3>Ro;",
+	"\u6ADA>Ryo;",
+	"\u6ADB>Shitsu;",
+	"\u6ADE>En;",
+	"\u6ADF>Reki;",
+	"\u6AE8>Ro;",
+	"\u6AEA>Reki;",
+	"\u6AFA>Rei;",
+	"\u6AFB>Ou;",
+	"\u6B04>Ran;",
+	"\u6B05>Kyo;",
+	"\u6B0A>Ken;",
+	"\u6B12>Ran;",
+	"\u6B16>Ran;",
+	"\u6B1D>Utsu;",
+	"\u6B20>Ketsu;",
+	"\u6B21>Ji;",
+	"\u6B23>Gon;",
+	"\u6B27>Ou;",
+	"\u6B32>Yoku;",
+	"\u6B37>Ki;",
+	"\u6B38>Ai;",
+	"\u6B39>I;",
+	"\u6B3A>Gi;",
+	"\u6B3D>Kin;",
+	"\u6B3E>Kan;",
+	"\u6B43>Sou;",
+	"\u6B47>Ketsu;",
+	"\u6B49>Ken;",
+	"\u6B4C>Ka;",
+	"\u6B4E>Tan;",
+	"\u6B50>Ou;",
+	"\u6B53>Kan;",
+	"\u6B54>Kyo;",
+	"\u6B59>Kyuu;",
+	"\u6B5B>Kan;",
+	"\u6B5F>Yo;",
+	"\u6B61>Kan;",
+	"\u6B62>Shi;",
+	"\u6B63>Sei;",
+	"\u6B64>Shi;",
+	"\u6B66>Bu;",
+	"\u6B69>Ho;",
+	"\u6B6A>Wai;",
+	"\u6B6F>Shi;",
+	"\u6B73>Sei;",
+	"\u6B74>Reki;",
+	"\u6B78>Ki;",
+	"\u6B79>Gatsu;",
+	"\u6B7B>Shi;",
+	"\u6B7F>Botsu;",
+	"\u6B80>You;",
+	"\u6B83>You;",
+	"\u6B84>Ten;",
+	"\u6B86>Tai;",
+	"\u6B89>Jun;",
+	"\u6B8A>Shu;",
+	"\u6B8B>Zan;",
+	"\u6B8D>Hyou;",
+	"\u6B95>Fuu;",
+	"\u6B96>Shoku;",
+	"\u6B98>Zan;",
+	"\u6B9E>In;",
+	"\u6BA4>Shou;",
+	"\u6BAA>Ei;",
+	"\u6BAB>Tan;",
+	"\u6BAF>Hin;",
+	"\u6BB1>Sen;",
+	"\u6BB2>Sen;",
+	"\u6BB3>Shu;",
+	"\u6BB4>Ou;",
+	"\u6BB5>Dan;",
+	"\u6BB7>In;",
+	"\u6BBA>Satsu;",
+	"\u6BBB>Kaku;",
+	"\u6BBC>Kaku;",
+	"\u6BBF>Ten;",
+	"\u6BC0>Ki;",
+	"\u6BC5>Ki;",
+	"\u6BC6>Ou;",
+	"\u6BCB>Bu;",
+	"\u6BCD>Bo;",
+	"\u6BCE>Mai;",
+	"\u6BD2>Doku;",
+	"\u6BD3>Iku;",
+	"\u6BD4>Hi;",
+	"\u6BD8>Hi;",
+	"\u6BDB>Mou;",
+	"\u6BEB>Kou;",
+	"\u6BEC>Kyuu;",
+	"\u6BEF>Tan;",
+	"\u6BF3>Zei;",
+	"\u6C08>Sen;",
+	"\u6C0F>Shi;",
+	"\u6C11>Min;",
+	"\u6C13>Bou;",
+	"\u6C14>Ki;",
+	"\u6C17>Ki;",
+	"\u6C1B>Fun;",
+	"\u6C23>Ki;",
+	"\u6C24>In;",
+	"\u6C34>Sui;",
+	"\u6C37>Hyou;",
+	"\u6C38>Ei;",
+	"\u6C3E>Han;",
+	"\u6C40>Tei;",
+	"\u6C41>Juu;",
+	"\u6C42>Kyuu;",
+	"\u6C4E>Han;",
+	"\u6C50>Seki;",
+	"\u6C55>San;",
+	"\u6C57>Kan;",
+	"\u6C5A>O;",
+	"\u6C5D>Jo;",
+	"\u6C5E>Kou;",
+	"\u6C5F>Kou;",
+	"\u6C60>Chi;",
+	"\u6C68>Beki;",
+	"\u6C6A>Ou;",
+	"\u6C70>Ta;",
+	"\u6C72>Kyuu;",
+	"\u6C73>Hen;",
+	"\u6C7A>Ketsu;",
+	"\u6C7D>Ki;",
+	"\u6C7E>Fun;",
+	"\u6C81>Shin;",
+	"\u6C82>Ki;",
+	"\u6C83>Yoku;",
+	"\u6C88>Chin;",
+	"\u6C8C>Ton;",
+	"\u6C8D>Go;",
+	"\u6C90>Boku;",
+	"\u6C92>Botsu;",
+	"\u6C93>Tou;",
+	"\u6C96>Chuu;",
+	"\u6C99>Sa;",
+	"\u6C9A>Shi;",
+	"\u6C9B>Hai;",
+	"\u6CA1>Botsu;",
+	"\u6CA2>Taku;",
+	"\u6CAB>Matsu;",
+	"\u6CAE>Sho;",
+	"\u6CB1>Ta;",
+	"\u6CB3>Ka;",
+	"\u6CB8>Futsu;",
+	"\u6CB9>Yu;",
+	"\u6CBA>Ten;",
+	"\u6CBB>Ji;",
+	"\u6CBC>Shou;",
+	"\u6CBD>Ko;",
+	"\u6CBE>Ten;",
+	"\u6CBF>En;",
+	"\u6CC1>Kyou;",
+	"\u6CC4>Ei;",
+	"\u6CC5>Shuu;",
+	"\u6CC9>Sen;",
+	"\u6CCA>Haku;",
+	"\u6CCC>Hitsu;",
+	"\u6CD3>Ou;",
+	"\u6CD5>Hou;",
+	"\u6CD7>Shi;",
+	"\u6CD9>Hou;",
+	"\u6CDB>Han;",
+	"\u6CDD>So;",
+	"\u6CE1>Hou;",
+	"\u6CE2>Ha;",
+	"\u6CE3>Kyuu;",
+	"\u6CE5>Dei;",
+	"\u6CE8>Chuu;",
+	"\u6CEA>Rui;",
+	"\u6CEF>Bin;",
+	"\u6CF0>Tai;",
+	"\u6CF1>Ou;",
+	"\u6CF3>Ei;",
+	"\u6D0B>You;",
+	"\u6D0C>Retsu;",
+	"\u6D12>Sei;",
+	"\u6D17>Sen;",
+	"\u6D19>Shu;",
+	"\u6D1B>Raku;",
+	"\u6D1E>Dou;",
+	"\u6D1F>I;",
+	"\u6D25>Shin;",
+	"\u6D29>Ei;",
+	"\u6D2A>Kou;",
+	"\u6D2B>Kyoku;",
+	"\u6D32>Shuu;",
+	"\u6D33>Jo;",
+	"\u6D35>Shun;",
+	"\u6D36>Kyou;",
+	"\u6D38>Kou;",
+	"\u6D3B>Katsu;",
+	"\u6D3D>Kou;",
+	"\u6D3E>Ha;",
+	"\u6D41>Ryuu;",
+	"\u6D44>Jou;",
+	"\u6D45>Sen;",
+	"\u6D59>Setsu;",
+	"\u6D5A>Shun;",
+	"\u6D5C>Hin;",
+	"\u6D63>Kan;",
+	"\u6D64>Kou;",
+	"\u6D66>Ho;",
+	"\u6D69>Kou;",
+	"\u6D6A>Rou;",
+	"\u6D6C>Ri;",
+	"\u6D6E>Fu;",
+	"\u6D74>Yoku;",
+	"\u6D77>Kai;",
+	"\u6D78>Shin;",
+	"\u6D79>Shou;",
+	"\u6D85>Netsu;",
+	"\u6D88>Shou;",
+	"\u6D8C>Yuu;",
+	"\u6D8E>Sen;",
+	"\u6D93>Ken;",
+	"\u6D95>Tei;",
+	"\u6D99>Rui;",
+	"\u6D9B>Tou;",
+	"\u6D9C>Toku;",
+	"\u6DAF>Gai;",
+	"\u6DB2>Eki;",
+	"\u6DB5>Kan;",
+	"\u6DB8>Ko;",
+	"\u6DBC>Ryou;",
+	"\u6DC0>Ten;",
+	"\u6DC5>Seki;",
+	"\u6DC6>Kou;",
+	"\u6DC7>Ki;",
+	"\u6DCB>Rin;",
+	"\u6DCC>Shou;",
+	"\u6DD1>Shuku;",
+	"\u6DD2>Sei;",
+	"\u6DD5>Riku;",
+	"\u6DD8>Tou;",
+	"\u6DD9>Sou;",
+	"\u6DDE>Shou;",
+	"\u6DE1>Tan;",
+	"\u6DE4>Yo;",
+	"\u6DE6>Kan;",
+	"\u6DE8>Jou;",
+	"\u6DEA>Rin;",
+	"\u6DEB>In;",
+	"\u6DEC>Sai;",
+	"\u6DEE>Wai;",
+	"\u6DF1>Shin;",
+	"\u6DF3>Shun;",
+	"\u6DF5>En;",
+	"\u6DF7>Kon;",
+	"\u6DF9>En;",
+	"\u6DFA>Sen;",
+	"\u6DFB>Ten;",
+	"\u6E05>Sei;",
+	"\u6E07>Katsu;",
+	"\u6E08>Sai;",
+	"\u6E09>Shou;",
+	"\u6E0A>En;",
+	"\u6E0B>Juu;",
+	"\u6E13>Kei;",
+	"\u6E15>En;",
+	"\u6E19>Kan;",
+	"\u6E1A>Sho;",
+	"\u6E1B>Gen;",
+	"\u6E1D>Yu;",
+	"\u6E1F>Tei;",
+	"\u6E20>Kyo;",
+	"\u6E21>To;",
+	"\u6E23>Sa;",
+	"\u6E24>Botsu;",
+	"\u6E25>Aku;",
+	"\u6E26>Ka;",
+	"\u6E29>On;",
+	"\u6E2B>Setsu;",
+	"\u6E2C>Soku;",
+	"\u6E2D>I;",
+	"\u6E2E>Ka;",
+	"\u6E2F>Kou;",
+	"\u6E38>Yuu;",
+	"\u6E3A>Byou;",
+	"\u6E3E>Kon;",
+	"\u6E43>Hai;",
+	"\u6E4A>Sou;",
+	"\u6E4D>Tan;",
+	"\u6E4E>Ben;",
+	"\u6E56>Ko;",
+	"\u6E58>Shou;",
+	"\u6E5B>Tan;",
+	"\u6E5F>Kou;",
+	"\u6E67>Yuu;",
+	"\u6E6B>Shou;",
+	"\u6E6E>In;",
+	"\u6E6F>Tou;",
+	"\u6E72>Kan;",
+	"\u6E76>Sen;",
+	"\u6E7E>Wan;",
+	"\u6E7F>Shitsu;",
+	"\u6E80>Man;",
+	"\u6E82>Ratsu;",
+	"\u6E8C>Hatsu;",
+	"\u6E8F>Tou;",
+	"\u6E90>Gen;",
+	"\u6E96>Jun;",
+	"\u6E98>Kou;",
+	"\u6E9C>Ryuu;",
+	"\u6E9D>Kou;",
+	"\u6E9F>Mei;",
+	"\u6EA2>Itsu;",
+	"\u6EA5>Ho;",
+	"\u6EAA>Kei;",
+	"\u6EAF>So;",
+	"\u6EB2>Sou;",
+	"\u6EB6>You;",
+	"\u6EB7>Kon;",
+	"\u6EBA>Deki;",
+	"\u6EBD>Joku;",
+	"\u6EC2>Bou;",
+	"\u6EC4>Sou;",
+	"\u6EC5>Metsu;",
+	"\u6EC9>Kou;",
+	"\u6ECB>Ji;",
+	"\u6ECC>Deki;",
+	"\u6ED1>Katsu;",
+	"\u6ED3>Sai;",
+	"\u6ED4>Tou;",
+	"\u6ED5>Tou;",
+	"\u6EDD>Sou;",
+	"\u6EDE>Tai;",
+	"\u6EEC>Ko;",
+	"\u6EEF>Tai;",
+	"\u6EF2>Shin;",
+	"\u6EF4>Teki;",
+	"\u6EF7>Ro;",
+	"\u6EF8>Ko;",
+	"\u6EFE>Kon;",
+	"\u6EFF>Man;",
+	"\u6F01>Ryou;",
+	"\u6F02>Hyou;",
+	"\u6F06>Shitsu;",
+	"\u6F09>Roku;",
+	"\u6F0F>Rou;",
+	"\u6F11>Gai;",
+	"\u6F13>Ri;",
+	"\u6F14>En;",
+	"\u6F15>Sou;",
+	"\u6F20>Baku;",
+	"\u6F22>Kan;",
+	"\u6F23>Ran;",
+	"\u6F2B>Man;",
+	"\u6F2C>Shi;",
+	"\u6F31>Sou;",
+	"\u6F32>Chou;",
+	"\u6F38>Zen;",
+	"\u6F3E>You;",
+	"\u6F3F>Shou;",
+	"\u6F41>Ei;",
+	"\u6F45>Kan;",
+	"\u6F54>Ketsu;",
+	"\u6F58>Han;",
+	"\u6F5B>Sen;",
+	"\u6F5C>Sen;",
+	"\u6F5F>Seki;",
+	"\u6F64>Jun;",
+	"\u6F66>Rou;",
+	"\u6F6D>Tan;",
+	"\u6F6E>Chou;",
+	"\u6F6F>Jin;",
+	"\u6F70>Kai;",
+	"\u6F74>Cho;",
+	"\u6F78>San;",
+	"\u6F7A>San;",
+	"\u6F7C>Dou;",
+	"\u6F80>Juu;",
+	"\u6F81>Juu;",
+	"\u6F82>Chou;",
+	"\u6F84>Chou;",
+	"\u6F86>Gyou;",
+	"\u6F8E>Hou;",
+	"\u6F91>Ryuu;",
+	"\u6F97>Kan;",
+	"\u6FA1>Sou;",
+	"\u6FA3>Kan;",
+	"\u6FA4>Taku;",
+	"\u6FAA>Rei;",
+	"\u6FB1>Ten;",
+	"\u6FB3>Iku;",
+	"\u6FB9>Tan;",
+	"\u6FC0>Geki;",
+	"\u6FC1>Daku;",
+	"\u6FC2>Ren;",
+	"\u6FC3>Nou;",
+	"\u6FC6>Fun;",
+	"\u6FD4>Dei;",
+	"\u6FD5>Shitsu;",
+	"\u6FD8>Nei;",
+	"\u6FDF>Sai;",
+	"\u6FE0>Gou;",
+	"\u6FE1>Ju;",
+	"\u6FE4>Tou;",
+	"\u6FEB>Ran;",
+	"\u6FEC>Shun;",
+	"\u6FEE>Hoku;",
+	"\u6FEF>Taku;",
+	"\u6FF1>Hin;",
+	"\u6FF3>Sen;",
+	"\u6FF6>Katsu;",
+	"\u6FFA>Sen;",
+	"\u6FFE>Ryo;",
+	"\u7001>You;",
+	"\u7009>Sha;",
+	"\u700B>Shin;",
+	"\u700F>Ryuu;",
+	"\u7011>Baku;",
+	"\u7015>Hin;",
+	"\u7018>Ro;",
+	"\u701A>Kan;",
+	"\u701B>Ei;",
+	"\u701D>Reki;",
+	"\u701E>Jou;",
+	"\u701F>Shou;",
+	"\u7026>Cho;",
+	"\u7027>Sou;",
+	"\u702C>Rai;",
+	"\u7030>Bi;",
+	"\u7032>Ren;",
+	"\u703E>Ran;",
+	"\u704C>Kan;",
+	"\u7051>Sai;",
+	"\u7058>Dan;",
+	"\u7063>Wan;",
+	"\u706B>Ka;",
+	"\u706F>Tou;",
+	"\u7070>Kai;",
+	"\u7078>Kyuu;",
+	"\u707C>Shaku;",
+	"\u707D>Sai;",
+	"\u7089>Ro;",
+	"\u708A>Sui;",
+	"\u708E>En;",
+	"\u7092>Sou;",
+	"\u7099>Sha;",
+	"\u70AC>Ko;",
+	"\u70AD>Tan;",
+	"\u70AE>Hou;",
+	"\u70AF>Kei;",
+	"\u70B3>Hei;",
+	"\u70B8>Saku;",
+	"\u70B9>Ten;",
+	"\u70BA>I;",
+	"\u70C8>Retsu;",
+	"\u70CB>Kou;",
+	"\u70CF>U;",
+	"\u70D9>Raku;",
+	"\u70DD>Jou;",
+	"\u70DF>En;",
+	"\u70F1>Kei;",
+	"\u70F9>Hou;",
+	"\u70FD>Hou;",
+	"\u7109>En;",
+	"\u7114>En;",
+	"\u7119>Hou;",
+	"\u711A>Fun;",
+	"\u711C>Kon;",
+	"\u7121>Mu;",
+	"\u7126>Shou;",
+	"\u7136>Zen;",
+	"\u713C>Shou;",
+	"\u7149>Ren;",
+	"\u714C>Kou;",
+	"\u714E>Sen;",
+	"\u7155>Ki;",
+	"\u7156>Dan;",
+	"\u7159>En;",
+	"\u7162>Kei;",
+	"\u7164>Bai;",
+	"\u7165>Kan;",
+	"\u7166>Ku;",
+	"\u7167>Shou;",
+	"\u7169>Han;",
+	"\u716C>You;",
+	"\u716E>Sha;",
+	"\u717D>Sen;",
+	"\u7184>Soku;",
+	"\u7188>Ki;",
+	"\u718A>Yuu;",
+	"\u718F>Kun;",
+	"\u7194>You;",
+	"\u7195>Kou;",
+	"\u7199>Ki;",
+	"\u719F>Juku;",
+	"\u71A8>I;",
+	"\u71AC>Gou;",
+	"\u71B1>Netsu;",
+	"\u71B9>Ki;",
+	"\u71BE>Shi;",
+	"\u71C3>Nen;",
+	"\u71C8>Tou;",
+	"\u71C9>Ton;",
+	"\u71CE>Ryou;",
+	"\u71D0>Rin;",
+	"\u71D2>Shou;",
+	"\u71D4>Han;",
+	"\u71D5>En;",
+	"\u71D7>Ran;",
+	"\u71DF>Ei;",
+	"\u71E0>Iku;",
+	"\u71E5>Sou;",
+	"\u71E6>San;",
+	"\u71E7>Sui;",
+	"\u71EC>Ki;",
+	"\u71ED>Shoku;",
+	"\u71EE>Shou;",
+	"\u71F5>Tatsu;",
+	"\u71F9>Sen;",
+	"\u71FB>Kun;",
+	"\u71FC>Jin;",
+	"\u71FF>You;",
+	"\u7206>Baku;",
+	"\u720D>Shaku;",
+	"\u7210>Ro;",
+	"\u721B>Ran;",
+	"\u7228>San;",
+	"\u722A>Sou;",
+	"\u722C>Ha;",
+	"\u722D>Sou;",
+	"\u7230>En;",
+	"\u7232>I;",
+	"\u7235>Shaku;",
+	"\u7236>Fu;",
+	"\u723A>Ya;",
+	"\u723B>Kou;",
+	"\u723C>Sho;",
+	"\u723D>Sou;",
+	"\u723E>Ji;",
+	"\u723F>Shou;",
+	"\u7240>Sou;",
+	"\u7246>Shou;",
+	"\u7247>Hen;",
+	"\u7248>Han;",
+	"\u724B>Sen;",
+	"\u724C>Hai;",
+	"\u7252>Chou;",
+	"\u7258>Toku;",
+	"\u7259>Ga;",
+	"\u725B>Gyuu;",
+	"\u725D>Hin;",
+	"\u725F>Bou;",
+	"\u7261>Bo;",
+	"\u7262>Rou;",
+	"\u7267>Boku;",
+	"\u7269>Motsu;",
+	"\u7272>Sei;",
+	"\u7274>Tei;",
+	"\u7279>Toku;",
+	"\u727D>Ken;",
+	"\u727E>Go;",
+	"\u7280>Sei;",
+	"\u7281>Ri;",
+	"\u7282>Ri;",
+	"\u7287>Hon;",
+	"\u7292>Kou;",
+	"\u7296>Raku;",
+	"\u72A0>Gi;",
+	"\u72A2>Toku;",
+	"\u72A7>Gi;",
+	"\u72AC>Ken;",
+	"\u72AF>Han;",
+	"\u72B2>Sai;",
+	"\u72B6>Jou;",
+	"\u72B9>Yuu;",
+	"\u72C2>Kyou;",
+	"\u72C3>Juu;",
+	"\u72C4>Teki;",
+	"\u72C6>Chuu;",
+	"\u72CE>Kou;",
+	"\u72D0>Ko;",
+	"\u72D2>Hi;",
+	"\u72D7>Kou;",
+	"\u72D9>Sho;",
+	"\u72DB>Haku;",
+	"\u72E0>Gan;",
+	"\u72E1>Kou;",
+	"\u72E2>Kaku;",
+	"\u72E9>Shu;",
+	"\u72EC>Doku;",
+	"\u72ED>Kyou;",
+	"\u72F7>Ken;",
+	"\u72F8>Ri;",
+	"\u72F9>Kyou;",
+	"\u72FC>Rou;",
+	"\u72FD>Hai;",
+	"\u730A>Gei;",
+	"\u7316>Shou;",
+	"\u7317>I;",
+	"\u731B>Mou;",
+	"\u731C>Sai;",
+	"\u731D>Sotsu;",
+	"\u731F>Ryou;",
+	"\u7325>Wai;",
+	"\u7329>Sei;",
+	"\u732A>Cho;",
+	"\u732B>Byou;",
+	"\u732E>Ken;",
+	"\u732F>Tan;",
+	"\u7334>Kou;",
+	"\u7336>Yuu;",
+	"\u7337>Yuu;",
+	"\u733E>Katsu;",
+	"\u733F>En;",
+	"\u7344>Goku;",
+	"\u7345>Shi;",
+	"\u734E>Shou;",
+	"\u734F>Baku;",
+	"\u7357>Ketsu;",
+	"\u7363>Juu;",
+	"\u7368>Doku;",
+	"\u736A>Kai;",
+	"\u7370>Dou;",
+	"\u7372>Kaku;",
+	"\u7375>Ryou;",
+	"\u7378>Juu;",
+	"\u737A>Datsu;",
+	"\u737B>Ken;",
+	"\u7384>Gen;",
+	"\u7387>Ritsu;",
+	"\u7389>Gyoku;",
+	"\u738B>Ou;",
+	"\u7396>Kyuu;",
+	"\u73A9>Gan;",
+	"\u73B2>Rei;",
+	"\u73B3>Tai;",
+	"\u73BB>Ha;",
+	"\u73C0>Haku;",
+	"\u73C2>Ka;",
+	"\u73C8>Ka;",
+	"\u73CA>San;",
+	"\u73CD>Chin;",
+	"\u73CE>Chin;",
+	"\u73DE>Raku;",
+	"\u73E0>Shu;",
+	"\u73E5>Ji;",
+	"\u73EA>Kei;",
+	"\u73ED>Han;",
+	"\u73EE>Hai;",
+	"\u73F1>Ei;",
+	"\u73F8>Go;",
+	"\u73FE>Gen;",
+	"\u7403>Kyuu;",
+	"\u7405>Rou;",
+	"\u7406>Ri;",
+	"\u7409>Ryuu;",
+	"\u7422>Taku;",
+	"\u7425>Ko;",
+	"\u7432>Hai;",
+	"\u7433>Rin;",
+	"\u7434>Kin;",
+	"\u7435>Bi;",
+	"\u7436>Ha;",
+	"\u743A>Hou;",
+	"\u743F>Kon;",
+	"\u7441>Bou;",
+	"\u7455>Ka;",
+	"\u7459>Dou;",
+	"\u745A>Ko;",
+	"\u745B>Ei;",
+	"\u745C>Yu;",
+	"\u745E>Zui;",
+	"\u745F>Shitsu;",
+	"\u7460>Ryuu;",
+	"\u7463>Sa;",
+	"\u7464>You;",
+	"\u7469>Ei;",
+	"\u746A>Ba;",
+	"\u746F>Rou;",
+	"\u7470>Kai;",
+	"\u7473>Sa;",
+	"\u7476>You;",
+	"\u747E>Kin;",
+	"\u7483>Ri;",
+	"\u748B>Shou;",
+	"\u749E>Haku;",
+	"\u74A2>Ryuu;",
+	"\u74A7>Heki;",
+	"\u74B0>Kan;",
+	"\u74BD>Ji;",
+	"\u74CA>Kei;",
+	"\u74CF>Rou;",
+	"\u74D4>Ei;",
+	"\u74DC>Ka;",
+	"\u74E0>Ko;",
+	"\u74E2>Hyou;",
+	"\u74E3>Ben;",
+	"\u74E6>Ga;",
+	"\u74EE>Ou;",
+	"\u74F6>Hei;",
+	"\u74F7>Shi;",
+	"\u7503>Shuu;",
+	"\u7504>Ken;",
+	"\u750C>Ou;",
+	"\u750D>Bou;",
+	"\u750E>Sen;",
+	"\u7511>Sou;",
+	"\u7513>Heki;",
+	"\u7515>Ou;",
+	"\u7518>Kan;",
+	"\u751A>Shin;",
+	"\u751C>Ten;",
+	"\u751E>Shou;",
+	"\u751F>Sei;",
+	"\u7523>San;",
+	"\u7525>Sei;",
+	"\u7526>So;",
+	"\u7528>You;",
+	"\u752B>Ho;",
+	"\u752C>You;",
+	"\u7530>Den;",
+	"\u7531>Yuu;",
+	"\u7532>Kou;",
+	"\u7533>Shin;",
+	"\u7537>Dan;",
+	"\u7538>Ten;",
+	"\u753A>Chou;",
+	"\u753B>Ga;",
+	"\u753C>Chou;",
+	"\u7544>Ryuu;",
+	"\u7546>Ho;",
+	"\u7549>Fu;",
+	"\u754A>Kou;",
+	"\u754B>Ten;",
+	"\u754C>Kai;",
+	"\u754D>Kai;",
+	"\u754F>I;",
+	"\u7554>Han;",
+	"\u7559>Ryuu;",
+	"\u755A>Hon;",
+	"\u755B>Shin;",
+	"\u755C>Chiku;",
+	"\u755D>Ho;",
+	"\u7562>Hitsu;",
+	"\u7564>Shi;",
+	"\u7565>Ryaku;",
+	"\u7566>Kei;",
+	"\u7567>Ryaku;",
+	"\u756A>Ban;",
+	"\u756B>Kaku;",
+	"\u756D>Yo;",
+	"\u7570>I;",
+	"\u7573>Jou;",
+	"\u7574>Chuu;",
+	"\u7576>Tou;",
+	"\u7577>Tetsu;",
+	"\u7578>Ki;",
+	"\u757F>Ki;",
+	"\u7582>Jou;",
+	"\u7586>Kyou;",
+	"\u7587>Chuu;",
+	"\u7589>Jou;",
+	"\u758A>Jou;",
+	"\u758B>So;",
+	"\u758E>So;",
+	"\u758F>So;",
+	"\u7591>Gi;",
+	"\u7594>Chou;",
+	"\u759A>Kyuu;",
+	"\u759D>San;",
+	"\u75A3>Yuu;",
+	"\u75A5>Kai;",
+	"\u75AB>Eki;",
+	"\u75B1>Hou;",
+	"\u75B2>Hi;",
+	"\u75B3>Kan;",
+	"\u75B5>Shi;",
+	"\u75B8>Tan;",
+	"\u75B9>Shin;",
+	"\u75BC>Tou;",
+	"\u75BD>Sho;",
+	"\u75BE>Shitsu;",
+	"\u75C2>Ka;",
+	"\u75C3>Ken;",
+	"\u75C5>Byou;",
+	"\u75C7>Shou;",
+	"\u75CA>Sen;",
+	"\u75CD>I;",
+	"\u75D2>You;",
+	"\u75D4>Ji;",
+	"\u75D5>Kon;",
+	"\u75D8>Tou;",
+	"\u75D9>Kei;",
+	"\u75DB>Ts;",
+	"\u75DE>Hi;",
+	"\u75E2>Ri;",
+	"\u75E3>Shi;",
+	"\u75E9>Sou;",
+	"\u75F0>Tan;",
+	"\u75F2>Ma;",
+	"\u75F3>Rin;",
+	"\u75F4>Chi;",
+	"\u75FA>Hi;",
+	"\u75FC>Ko;",
+	"\u75FE>A;",
+	"\u75FF>I;",
+	"\u7601>Sui;",
+	"\u7609>Yu;",
+	"\u760B>Fuu;",
+	"\u760D>You;",
+	"\u761F>On;",
+	"\u7620>Seki;",
+	"\u7621>Sou;",
+	"\u7622>Han;",
+	"\u7624>Ryuu;",
+	"\u7627>Gyaku;",
+	"\u7630>Rui;",
+	"\u7634>Shou;",
+	"\u763B>Rou;",
+	"\u7642>Ryou;",
+	"\u7646>Rou;",
+	"\u7647>Kan;",
+	"\u7648>Hai;",
+	"\u764C>Gan;",
+	"\u7652>Yu;",
+	"\u7656>Heki;",
+	"\u7658>Rei;",
+	"\u765C>Den;",
+	"\u7661>Chi;",
+	"\u7662>You;",
+	"\u7667>Reki;",
+	"\u7668>Kaku;",
+	"\u7669>Rai;",
+	"\u766A>Shaku;",
+	"\u766C>Sen;",
+	"\u7670>You;",
+	"\u7672>Ten;",
+	"\u7676>Hatsu;",
+	"\u7678>Ki;",
+	"\u767A>Hotsu;",
+	"\u767B>Tou;",
+	"\u767C>Hotsu;",
+	"\u767D>Haku;",
+	"\u767E>Hyaku;",
+	"\u7680>Hyuu;",
+	"\u7683>Bou;",
+	"\u7684>Teki;",
+	"\u7686>Kai;",
+	"\u7687>Kou;",
+	"\u7688>Ki;",
+	"\u768B>Kou;",
+	"\u768E>Kou;",
+	"\u7690>Kou;",
+	"\u7693>Kou;",
+	"\u7696>Kan;",
+	"\u7699>Seki;",
+	"\u769A>Gai;",
+	"\u76AE>Hi;",
+	"\u76B0>Hou;",
+	"\u76B4>Shun;",
+	"\u76B7>Ko;",
+	"\u76B8>Kun;",
+	"\u76B9>Kun;",
+	"\u76BA>Suu;",
+	"\u76BF>Bai;",
+	"\u76C2>U;",
+	"\u76C3>Hai;",
+	"\u76C6>Bon;",
+	"\u76C8>Ei;",
+	"\u76CA>Eki;",
+	"\u76CD>Kou;",
+	"\u76D2>Kou;",
+	"\u76D6>Gai;",
+	"\u76D7>Tou;",
+	"\u76DB>Sei;",
+	"\u76DC>Tou;",
+	"\u76DE>San;",
+	"\u76DF>Mei;",
+	"\u76E1>Jin;",
+	"\u76E3>Kan;",
+	"\u76E4>Ban;",
+	"\u76E5>Kan;",
+	"\u76E7>Ro;",
+	"\u76EA>Tou;",
+	"\u76EE>Moku;",
+	"\u76F2>Mou;",
+	"\u76F4>Choku;",
+	"\u76F8>Shou;",
+	"\u76FB>Kei;",
+	"\u76FE>Jun;",
+	"\u7701>Sei;",
+	"\u7704>Ben;",
+	"\u7707>Byou;",
+	"\u7708>Tan;",
+	"\u7709>Bi;",
+	"\u770B>Kan;",
+	"\u770C>Ken;",
+	"\u771B>Mai;",
+	"\u771E>Shin;",
+	"\u771F>Shin;",
+	"\u7720>Min;",
+	"\u7724>Tei;",
+	"\u7725>Sei;",
+	"\u7726>Sei;",
+	"\u7729>Gen;",
+	"\u7737>Ken;",
+	"\u7738>Bou;",
+	"\u773A>Chou;",
+	"\u773C>Gan;",
+	"\u7740>Chaku;",
+	"\u7747>Tei;",
+	"\u775A>Gai;",
+	"\u775B>Sei;",
+	"\u7761>Sui;",
+	"\u7763>Toku;",
+	"\u7765>Hei;",
+	"\u7766>Boku;",
+	"\u7768>Gei;",
+	"\u776B>Shou;",
+	"\u7779>To;",
+	"\u777E>Kou;",
+	"\u777F>Ei;",
+	"\u778B>Shin;",
+	"\u778E>Katsu;",
+	"\u7791>Mei;",
+	"\u779E>Ban;",
+	"\u77A0>Dou;",
+	"\u77A5>Betsu;",
+	"\u77AC>Shun;",
+	"\u77AD>Ryou;",
+	"\u77B0>Kan;",
+	"\u77B3>Dou;",
+	"\u77B6>Ki;",
+	"\u77B9>Ai;",
+	"\u77BB>Sen;",
+	"\u77BC>Ken;",
+	"\u77BD>Ko;",
+	"\u77BF>Ku;",
+	"\u77C7>Mou;",
+	"\u77CD>Kaku;",
+	"\u77D7>Chiku;",
+	"\u77DA>Shoku;",
+	"\u77DB>Mu;",
+	"\u77DC>Kin;",
+	"\u77E2>Shi;",
+	"\u77E3>I;",
+	"\u77E5>Chi;",
+	"\u77E7>Shin;",
+	"\u77E9>Ku;",
+	"\u77ED>Tan;",
+	"\u77EE>Wai;",
+	"\u77EF>Kyou;",
+	"\u77F3>Shaku;",
+	"\u77FC>Kou;",
+	"\u7802>Sa;",
+	"\u780C>Sei;",
+	"\u7812>Hi;",
+	"\u7814>Ken;",
+	"\u7815>Sai;",
+	"\u7820>Sho;",
+	"\u7825>Shi;",
+	"\u7826>Sai;",
+	"\u7827>Chin;",
+	"\u7832>Hou;",
+	"\u7834>Ha;",
+	"\u783A>Rei;",
+	"\u783F>Kou;",
+	"\u7845>Kei;",
+	"\u785D>Shou;",
+	"\u786B>Ryuu;",
+	"\u786C>Kou;",
+	"\u786F>Ken;",
+	"\u787C>Hou;",
+	"\u7881>Go;",
+	"\u7886>Ha;",
+	"\u7887>Tei;",
+	"\u788C>Roku;",
+	"\u788D>Gai;",
+	"\u788E>Sai;",
+	"\u7891>Hi;",
+	"\u7893>Tai;",
+	"\u7895>Ki;",
+	"\u7897>Wan;",
+	"\u789A>Hai;",
+	"\u78A3>Ketsu;",
+	"\u78A7>Heki;",
+	"\u78A9>Seki;",
+	"\u78AA>Chin;",
+	"\u78AF>Dou;",
+	"\u78B5>Seki;",
+	"\u78BA>Kaku;",
+	"\u78BC>Ba;",
+	"\u78BE>Ten;",
+	"\u78C1>Ji;",
+	"\u78C5>Hou;",
+	"\u78C6>Katsu;",
+	"\u78CA>Rai;",
+	"\u78CB>Sa;",
+	"\u78D0>Han;",
+	"\u78D1>Gai;",
+	"\u78D4>Taku;",
+	"\u78DA>Sen;",
+	"\u78E7>Seki;",
+	"\u78E8>Ma;",
+	"\u78EC>Kei;",
+	"\u78EF>Ki;",
+	"\u78F4>Tou;",
+	"\u78FD>Kou;",
+	"\u7901>Shou;",
+	"\u7907>Iku;",
+	"\u790E>So;",
+	"\u7911>Tou;",
+	"\u7912>Gi;",
+	"\u7919>Gai;",
+	"\u7926>Kou;",
+	"\u792A>Rei;",
+	"\u792B>Reki;",
+	"\u792C>Ban;",
+	"\u793A>Shi;",
+	"\u793C>Rei;",
+	"\u793E>Sha;",
+	"\u7940>Shi;",
+	"\u7941>Ki;",
+	"\u7947>Ki;",
+	"\u7948>Ki;",
+	"\u7949>Shi;",
+	"\u7950>Yuu;",
+	"\u7953>Futsu;",
+	"\u7955>Hi;",
+	"\u7956>So;",
+	"\u7957>Shi;",
+	"\u795A>So;",
+	"\u795D>Shuku;",
+	"\u795E>Shin;",
+	"\u795F>Sui;",
+	"\u7960>Shi;",
+	"\u7962>Dei;",
+	"\u7965>Shou;",
+	"\u7968>Hyou;",
+	"\u796D>Sai;",
+	"\u7977>Tou;",
+	"\u797A>Ki;",
+	"\u797F>Roku;",
+	"\u7980>Rin;",
+	"\u7981>Kin;",
+	"\u7984>Roku;",
+	"\u7985>Zen;",
+	"\u798A>Kei;",
+	"\u798D>Ka;",
+	"\u798E>Tei;",
+	"\u798F>Fuku;",
+	"\u799D>Shoku;",
+	"\u79A6>Gyo;",
+	"\u79A7>Ki;",
+	"\u79AA>Zen;",
+	"\u79AE>Rei;",
+	"\u79B0>Dei;",
+	"\u79B3>Jou;",
+	"\u79B9>U;",
+	"\u79BA>Guu;",
+	"\u79BD>Kin;",
+	"\u79BE>Ka;",
+	"\u79BF>Toku;",
+	"\u79C0>Shuu;",
+	"\u79C1>Shi;",
+	"\u79C9>Hei;",
+	"\u79CB>Shuu;",
+	"\u79D1>Ka;",
+	"\u79D2>Byou;",
+	"\u79D5>Hi;",
+	"\u79D8>Hi;",
+	"\u79DF>So;",
+	"\u79E1>Hatsu;",
+	"\u79E3>Matsu;",
+	"\u79E4>Shou;",
+	"\u79E6>Shin;",
+	"\u79E7>Ou;",
+	"\u79E9>Chitsu;",
+	"\u79EC>Kyo;",
+	"\u79F0>Shou;",
+	"\u79FB>I;",
+	"\u7A00>Ki;",
+	"\u7A08>Kan;",
+	"\u7A0B>Tei;",
+	"\u7A0D>Sou;",
+	"\u7A0E>Zei;",
+	"\u7A14>Jin;",
+	"\u7A17>Hai;",
+	"\u7A18>Ki;",
+	"\u7A19>Choku;",
+	"\u7A1A>Chi;",
+	"\u7A1C>Ryou;",
+	"\u7A1F>Rin;",
+	"\u7A20>Chuu;",
+	"\u7A2E>Shu;",
+	"\u7A31>Shou;",
+	"\u7A32>Tou;",
+	"\u7A37>Shoku;",
+	"\u7A3B>Tou;",
+	"\u7A3C>Ka;",
+	"\u7A3D>Kei;",
+	"\u7A3E>Kou;",
+	"\u7A3F>Kou;",
+	"\u7A40>Koku;",
+	"\u7A42>Sui;",
+	"\u7A43>You;",
+	"\u7A46>Boku;",
+	"\u7A49>Chi;",
+	"\u7A4D>Seki;",
+	"\u7A4E>Ei;",
+	"\u7A4F>On;",
+	"\u7A50>Shuu;",
+	"\u7A57>Sui;",
+	"\u7A61>Shoku;",
+	"\u7A62>Ai;",
+	"\u7A63>Jou;",
+	"\u7A69>On;",
+	"\u7A6B>Kaku;",
+	"\u7A70>Jou;",
+	"\u7A74>Ketsu;",
+	"\u7A76>Kyuu;",
+	"\u7A79>Kyuu;",
+	"\u7A7A>Kuu;",
+	"\u7A7D>Sei;",
+	"\u7A7F>Sen;",
+	"\u7A81>Totsu;",
+	"\u7A83>Setsu;",
+	"\u7A84>Saku;",
+	"\u7A88>You;",
+	"\u7A92>Chitsu;",
+	"\u7A93>Sou;",
+	"\u7A95>Chou;",
+	"\u7A96>Kou;",
+	"\u7A97>Sou;",
+	"\u7A98>Kin;",
+	"\u7A9F>Kutsu;",
+	"\u7AA9>Ka;",
+	"\u7AAA>Wa;",
+	"\u7AAE>Kyuu;",
+	"\u7AAF>You;",
+	"\u7AB0>You;",
+	"\u7AB6>Ku;",
+	"\u7ABA>Ki;",
+	"\u7ABF>Ryuu;",
+	"\u7AC3>Sou;",
+	"\u7AC4>Zan;",
+	"\u7AC5>Kyou;",
+	"\u7AC7>Tou;",
+	"\u7AC8>Sou;",
+	"\u7ACA>Setsu;",
+	"\u7ACB>Ritsu;",
+	"\u7AD2>Ki;",
+	"\u7AD9>Tan;",
+	"\u7ADA>Cho;",
+	"\u7ADC>Ryuu;",
+	"\u7ADD>Hei;",
+	"\u7ADF>Kei;",
+	"\u7AE0>Shou;",
+	"\u7AE2>Shi;",
+	"\u7AE3>Shun;",
+	"\u7AE5>Dou;",
+	"\u7AE6>Shou;",
+	"\u7AEA>Ju;",
+	"\u7AED>Ketsu;",
+	"\u7AEF>Tan;",
+	"\u7AF6>Kyou;",
+	"\u7AF8>Kei;",
+	"\u7AF9>Chiku;",
+	"\u7AFA>Toku;",
+	"\u7AFF>Kan;",
+	"\u7B04>Kei;",
+	"\u7B06>Ha;",
+	"\u7B08>Kyuu;",
+	"\u7B0A>Sou;",
+	"\u7B0B>Jun;",
+	"\u7B0F>Kotsu;",
+	"\u7B11>Shou;",
+	"\u7B18>Sen;",
+	"\u7B19>Sou;",
+	"\u7B1B>Teki;",
+	"\u7B1E>Chi;",
+	"\u7B20>Ryuu;",
+	"\u7B25>Shi;",
+	"\u7B26>Fu;",
+	"\u7B28>Hon;",
+	"\u7B2C>Dai;",
+	"\u7B33>Ka;",
+	"\u7B35>Han;",
+	"\u7B36>Shi;",
+	"\u7B45>Sen;",
+	"\u7B46>Hitsu;",
+	"\u7B48>Katsu;",
+	"\u7B49>Tou;",
+	"\u7B4B>Kin;",
+	"\u7B4C>Sen;",
+	"\u7B4D>Jun;",
+	"\u7B4F>Batsu;",
+	"\u7B50>Kyou;",
+	"\u7B51>Chiku;",
+	"\u7B52>Tou;",
+	"\u7B54>Tou;",
+	"\u7B56>Saku;",
+	"\u7B5D>Sou;",
+	"\u7B65>Kyo;",
+	"\u7B67>Ken;",
+	"\u7B6C>Sei;",
+	"\u7B6E>Sei;",
+	"\u7B70>Saku;",
+	"\u7B71>Shou;",
+	"\u7B74>Kyou;",
+	"\u7B75>En;",
+	"\u7B7A>Kyou;",
+	"\u7B86>Hei;",
+	"\u7B87>Ka;",
+	"\u7B8B>Sen;",
+	"\u7B8D>Ko;",
+	"\u7B8F>Sou;",
+	"\u7B92>Sou;",
+	"\u7B94>Haku;",
+	"\u7B95>Ki;",
+	"\u7B97>San;",
+	"\u7B98>Kin;",
+	"\u7B99>Fuku;",
+	"\u7B9A>Satsu;",
+	"\u7B9C>Kou;",
+	"\u7B9D>Kan;",
+	"\u7B9F>Kin;",
+	"\u7BA1>Kan;",
+	"\u7BAA>Tan;",
+	"\u7BAD>Sen;",
+	"\u7BB1>Shou;",
+	"\u7BB4>Shin;",
+	"\u7BB8>Cho;",
+	"\u7BC0>Setsu;",
+	"\u7BC1>Kou;",
+	"\u7BC4>Han;",
+	"\u7BC6>Ten;",
+	"\u7BC7>Hen;",
+	"\u7BC9>Chiku;",
+	"\u7BCB>Kyou;",
+	"\u7BCC>Kou;",
+	"\u7BCF>Kan;",
+	"\u7BDD>Kou;",
+	"\u7BE0>Shou;",
+	"\u7BE4>Toku;",
+	"\u7BE5>Ritsu;",
+	"\u7BE6>Hei;",
+	"\u7BE9>Shi;",
+	"\u7BED>Rou;",
+	"\u7BF3>Hitsu;",
+	"\u7BF6>En;",
+	"\u7BF7>Hou;",
+	"\u7C00>Saku;",
+	"\u7C07>Sou;",
+	"\u7C0D>Rou;",
+	"\u7C11>Sa;",
+	"\u7C12>San;",
+	"\u7C13>Sen;",
+	"\u7C14>Sa;",
+	"\u7C1F>Ten;",
+	"\u7C21>Kan;",
+	"\u7C23>Ki;",
+	"\u7C27>Kou;",
+	"\u7C2A>Shin;",
+	"\u7C2B>Shou;",
+	"\u7C37>En;",
+	"\u7C38>Ha;",
+	"\u7C3D>Sen;",
+	"\u7C3E>Ren;",
+	"\u7C3F>Bo;",
+	"\u7C40>Chuu;",
+	"\u7C43>Ran;",
+	"\u7C4C>Chuu;",
+	"\u7C4D>Seki;",
+	"\u7C50>Tou;",
+	"\u7C54>Su;",
+	"\u7C56>Sen;",
+	"\u7C58>Tou;",
+	"\u7C5F>Rai;",
+	"\u7C60>Rou;",
+	"\u7C64>Sen;",
+	"\u7C65>Yaku;",
+	"\u7C6C>Ri;",
+	"\u7C73>Bei;",
+	"\u7C83>Hi;",
+	"\u7C89>Fun;",
+	"\u7C8B>Sui;",
+	"\u7C90>Ro;",
+	"\u7C92>Ryuu;",
+	"\u7C95>Haku;",
+	"\u7C97>So;",
+	"\u7C98>Nen;",
+	"\u7C9B>Shuku;",
+	"\u7C9F>Zoku;",
+	"\u7CA1>Tou;",
+	"\u7CA2>Shi;",
+	"\u7CA4>Etsu;",
+	"\u7CA5>Shuku;",
+	"\u7CA7>Shou;",
+	"\u7CAB>Ji;",
+	"\u7CAE>Ryou;",
+	"\u7CB1>Ryou;",
+	"\u7CB2>San;",
+	"\u7CB3>Kou;",
+	"\u7CB9>Sui;",
+	"\u7CBD>Sou;",
+	"\u7CBE>Sei;",
+	"\u7CC2>San;",
+	"\u7CC5>Juu;",
+	"\u7CCA>Ko;",
+	"\u7CD2>Hi;",
+	"\u7CD6>Tou;",
+	"\u7CDC>Bi;",
+	"\u7CDE>Fun;",
+	"\u7CDF>Sou;",
+	"\u7CE0>Kou;",
+	"\u7CE2>Bo;",
+	"\u7CE7>Ryou;",
+	"\u7CEF>Da;",
+	"\u7CF2>Rei;",
+	"\u7CF4>Teki;",
+	"\u7CF6>Chou;",
+	"\u7CF8>Shi;",
+	"\u7CFA>Kyuu;",
+	"\u7CFB>Kei;",
+	"\u7CFE>Kyuu;",
+	"\u7D00>Ki;",
+	"\u7D02>Chuu;",
+	"\u7D04>Yaku;",
+	"\u7D05>Ku;",
+	"\u7D06>U;",
+	"\u7D0A>Bin;",
+	"\u7D0B>Mon;",
+	"\u7D0D>Tou;",
+	"\u7D10>Chuu;",
+	"\u7D14>Shun;",
+	"\u7D15>Hi;",
+	"\u7D17>Sa;",
+	"\u7D18>Kou;",
+	"\u7D19>Shi;",
+	"\u7D1A>Kyuu;",
+	"\u7D1B>Fun;",
+	"\u7D1C>Un;",
+	"\u7D20>So;",
+	"\u7D21>Bou;",
+	"\u7D22>Saku;",
+	"\u7D2B>Shi;",
+	"\u7D2C>Chuu;",
+	"\u7D2E>Satsu;",
+	"\u7D2F>Rui;",
+	"\u7D30>Sei;",
+	"\u7D32>Setsu;",
+	"\u7D33>Shin;",
+	"\u7D35>Cho;",
+	"\u7D39>Shou;",
+	"\u7D3A>Kon;",
+	"\u7D3F>Tai;",
+	"\u7D42>Shuu;",
+	"\u7D43>Gen;",
+	"\u7D44>So;",
+	"\u7D45>Kei;",
+	"\u7D46>Ban;",
+	"\u7D4B>Kou;",
+	"\u7D4C>Kei;",
+	"\u7D4E>Kou;",
+	"\u7D4F>Setsu;",
+	"\u7D50>Ketsu;",
+	"\u7D56>Kou;",
+	"\u7D5B>Jou;",
+	"\u7D5E>Kou;",
+	"\u7D61>Raku;",
+	"\u7D62>Ken;",
+	"\u7D63>Hou;",
+	"\u7D66>Kyuu;",
+	"\u7D68>Juu;",
+	"\u7D6E>Jo;",
+	"\u7D71>Tou;",
+	"\u7D72>Shi;",
+	"\u7D73>Kou;",
+	"\u7D75>Kai;",
+	"\u7D76>Zetsu;",
+	"\u7D79>Ken;",
+	"\u7D7D>Ryo;",
+	"\u7D89>Tou;",
+	"\u7D8F>Sui;",
+	"\u7D93>Kei;",
+	"\u7D99>Kei;",
+	"\u7D9A>Zoku;",
+	"\u7D9C>Sou;",
+	"\u7D9F>Rei;",
+	"\u7DA2>Chuu;",
+	"\u7DA3>Ken;",
+	"\u7DAB>Sen;",
+	"\u7DAC>Ju;",
+	"\u7DAD>I;",
+	"\u7DAE>Kei;",
+	"\u7DAF>Tou;",
+	"\u7DB0>Wan;",
+	"\u7DB1>Kou;",
+	"\u7DB2>Mou;",
+	"\u7DB4>Tei;",
+	"\u7DB5>Sai;",
+	"\u7DB8>Rin;",
+	"\u7DBA>Ki;",
+	"\u7DBB>Tan;",
+	"\u7DBD>Shaku;",
+	"\u7DBE>Ryou;",
+	"\u7DBF>Men;",
+	"\u7DC7>Shi;",
+	"\u7DCA>Kin;",
+	"\u7DCB>Hi;",
+	"\u7DCF>Sou;",
+	"\u7DD1>Ryoku;",
+	"\u7DD2>Sho;",
+	"\u7DD8>Kan;",
+	"\u7DDA>Sen;",
+	"\u7DDC>Ben;",
+	"\u7DDD>Shuu;",
+	"\u7DDE>Tan;",
+	"\u7DE0>Tei;",
+	"\u7DE1>Bin;",
+	"\u7DE4>Setsu;",
+	"\u7DE8>Hen;",
+	"\u7DE9>Kan;",
+	"\u7DEC>Men;",
+	"\u7DEF>I;",
+	"\u7DF2>Byou;",
+	"\u7DF4>Ren;",
+	"\u7DFB>Chi;",
+	"\u7E01>En;",
+	"\u7E04>Jou;",
+	"\u7E09>Shin;",
+	"\u7E0A>Ei;",
+	"\u7E0B>Tsui;",
+	"\u7E12>Shi;",
+	"\u7E1B>Baku;",
+	"\u7E1E>Kou;",
+	"\u7E1F>Joku;",
+	"\u7E21>Sai;",
+	"\u7E22>Tou;",
+	"\u7E23>Ken;",
+	"\u7E26>Juu;",
+	"\u7E2B>Hou;",
+	"\u7E2E>Shuku;",
+	"\u7E31>Juu;",
+	"\u7E32>Rui;",
+	"\u7E35>Ban;",
+	"\u7E37>Ru;",
+	"\u7E39>Hyou;",
+	"\u7E3A>Ren;",
+	"\u7E3B>Bi;",
+	"\u7E3D>Sou;",
+	"\u7E3E>Seki;",
+	"\u7E41>Han;",
+	"\u7E43>Hou;",
+	"\u7E46>Kyuu;",
+	"\u7E4A>Sen;",
+	"\u7E4B>Kei;",
+	"\u7E4D>Shuu;",
+	"\u7E54>Shoku;",
+	"\u7E55>Zen;",
+	"\u7E56>San;",
+	"\u7E59>Han;",
+	"\u7E5A>Ryou;",
+	"\u7E5D>Kan;",
+	"\u7E5E>Jou;",
+	"\u7E66>Kyou;",
+	"\u7E67>Un;",
+	"\u7E69>Jou;",
+	"\u7E6A>Kai;",
+	"\u7E6D>Ken;",
+	"\u7E70>Sou;",
+	"\u7E79>Eki;",
+	"\u7E7B>Ju;",
+	"\u7E7C>Kei;",
+	"\u7E7D>Hin;",
+	"\u7E7F>Ran;",
+	"\u7E82>San;",
+	"\u7E88>Ketsu;",
+	"\u7E89>San;",
+	"\u7E8C>Zoku;",
+	"\u7E8E>Sen;",
+	"\u7E8F>Ten;",
+	"\u7E92>Ten;",
+	"\u7E93>Ei;",
+	"\u7E94>San;",
+	"\u7E96>Sen;",
+	"\u7E9B>Tou;",
+	"\u7E9C>Ran;",
+	"\u7F36>Kan;",
+	"\u7F38>Kou;",
+	"\u7F3A>Ketsu;",
+	"\u7F45>Ka;",
+	"\u7F4C>Ou;",
+	"\u7F4D>Rai;",
+	"\u7F4E>Tan;",
+	"\u7F50>Kan;",
+	"\u7F51>Bou;",
+	"\u7F54>Bou;",
+	"\u7F55>Kan;",
+	"\u7F58>Fu;",
+	"\u7F5F>Ko;",
+	"\u7F60>Bin;",
+	"\u7F67>Shin;",
+	"\u7F68>An;",
+	"\u7F69>Tou;",
+	"\u7F6A>Zai;",
+	"\u7F6B>Kei;",
+	"\u7F6E>Chi;",
+	"\u7F70>Batsu;",
+	"\u7F72>Sho;",
+	"\u7F75>Ba;",
+	"\u7F77>Hi;",
+	"\u7F78>Batsu;",
+	"\u7F79>Ri;",
+	"\u7F82>Ken;",
+	"\u7F83>Beki;",
+	"\u7F85>Ra;",
+	"\u7F86>Hi;",
+	"\u7F87>Ki;",
+	"\u7F88>Ki;",
+	"\u7F8A>You;",
+	"\u7F8C>Kyou;",
+	"\u7F8E>Bi;",
+	"\u7F94>Kou;",
+	"\u7F9A>Rei;",
+	"\u7F9D>Tei;",
+	"\u7F9E>Shuu;",
+	"\u7FA3>Gun;",
+	"\u7FA4>Gun;",
+	"\u7FA8>Sen;",
+	"\u7FA9>Gi;",
+	"\u7FAE>Kou;",
+	"\u7FAF>Katsu;",
+	"\u7FB2>Gi;",
+	"\u7FB6>Sen;",
+	"\u7FB8>Rui;",
+	"\u7FB9>Kou;",
+	"\u7FBD>U;",
+	"\u7FC1>Ou;",
+	"\u7FC5>Shi;",
+	"\u7FC6>Sui;",
+	"\u7FCA>Yoku;",
+	"\u7FCC>Yoku;",
+	"\u7FD2>Shuu;",
+	"\u7FD4>Shou;",
+	"\u7FD5>Kyuu;",
+	"\u7FE0>Sui;",
+	"\u7FE1>Hi;",
+	"\u7FE6>Sen;",
+	"\u7FE9>Hen;",
+	"\u7FEB>Gan;",
+	"\u7FF0>Kan;",
+	"\u7FF3>Ei;",
+	"\u7FF9>Gyou;",
+	"\u7FFB>Hon;",
+	"\u7FFC>Yoku;",
+	"\u8000>You;",
+	"\u8001>Rou;",
+	"\u8003>Kou;",
+	"\u8004>Mou;",
+	"\u8005>Sha;",
+	"\u8006>Ki;",
+	"\u800B>Tetsu;",
+	"\u800C>Ji;",
+	"\u8010>Tai;",
+	"\u8012>Rai;",
+	"\u8015>Kou;",
+	"\u8017>Mou;",
+	"\u8018>Un;",
+	"\u8019>Ha;",
+	"\u801C>Shi;",
+	"\u8021>Jo;",
+	"\u8028>Dou;",
+	"\u8033>Ji;",
+	"\u8036>Ya;",
+	"\u803B>Chi;",
+	"\u803D>Tan;",
+	"\u803F>Kou;",
+	"\u8046>Rei;",
+	"\u804A>Ryou;",
+	"\u8052>Katsu;",
+	"\u8056>Sei;",
+	"\u8058>Hei;",
+	"\u805A>Shuu;",
+	"\u805E>Bun;",
+	"\u805F>Sei;",
+	"\u8061>Sou;",
+	"\u8068>Ren;",
+	"\u806F>Ren;",
+	"\u8070>Sou;",
+	"\u8072>Sei;",
+	"\u8073>Shou;",
+	"\u8074>Chou;",
+	"\u8076>Jou;",
+	"\u8077>Shoku;",
+	"\u8079>Dei;",
+	"\u807D>Chou;",
+	"\u807E>Rou;",
+	"\u807F>Itsu;",
+	"\u8084>I;",
+	"\u8085>Shuku;",
+	"\u8086>Shi;",
+	"\u8087>Chou;",
+	"\u8089>Niku;",
+	"\u808B>Roku;",
+	"\u808C>Ki;",
+	"\u8093>Kou;",
+	"\u8096>Shou;",
+	"\u8098>Chuu;",
+	"\u809A>To;",
+	"\u809B>Kou;",
+	"\u809D>Kan;",
+	"\u80A1>Ko;",
+	"\u80A2>Shi;",
+	"\u80A5>Hi;",
+	"\u80A9>Ken;",
+	"\u80AA>Bou;",
+	"\u80AC>Yuu;",
+	"\u80AD>Dotsu;",
+	"\u80AF>Kou;",
+	"\u80B1>Kou;",
+	"\u80B2>Iku;",
+	"\u80B4>Kou;",
+	"\u80BA>Hai;",
+	"\u80C3>I;",
+	"\u80C4>Chuu;",
+	"\u80C6>Tan;",
+	"\u80CC>Hai;",
+	"\u80CE>Tai;",
+	"\u80D6>Han;",
+	"\u80D9>So;",
+	"\u80DA>Hai;",
+	"\u80DB>Kou;",
+	"\u80DD>Chi;",
+	"\u80DE>Hou;",
+	"\u80E1>Ko;",
+	"\u80E4>In;",
+	"\u80E5>Sho;",
+	"\u80EF>Ko;",
+	"\u80F1>Kou;",
+	"\u80F4>Dou;",
+	"\u80F8>Kyou;",
+	"\u80FC>Hen;",
+	"\u80FD>Nou;",
+	"\u8102>Shi;",
+	"\u8105>Kyou;",
+	"\u8106>Zei;",
+	"\u8107>Kyou;",
+	"\u8108>Myaku;",
+	"\u8109>Myaku;",
+	"\u810A>Seki;",
+	"\u811A>Kyaku;",
+	"\u811B>Kei;",
+	"\u8123>Shin;",
+	"\u8129>Shuu;",
+	"\u812F>Ho;",
+	"\u8131>Datsu;",
+	"\u8133>Nou;",
+	"\u8139>Chou;",
+	"\u813E>Hi;",
+	"\u8146>Ten;",
+	"\u814B>Eki;",
+	"\u814E>Jin;",
+	"\u8150>Fu;",
+	"\u8151>Fu;",
+	"\u8153>Hi;",
+	"\u8154>Kou;",
+	"\u8155>Wan;",
+	"\u815F>Chitsu;",
+	"\u8165>Sei;",
+	"\u8166>Nou;",
+	"\u816B>Shou;",
+	"\u816E>Sai;",
+	"\u8170>You;",
+	"\u8171>Ken;",
+	"\u8174>Yu;",
+	"\u8178>Chou;",
+	"\u8179>Fuku;",
+	"\u817A>Sen;",
+	"\u817F>Tai;",
+	"\u8180>Hou;",
+	"\u8182>Ryo;",
+	"\u8183>Otsu;",
+	"\u8188>Kaku;",
+	"\u818A>Haku;",
+	"\u818F>Kou;",
+	"\u8193>Chou;",
+	"\u8195>Kaku;",
+	"\u819A>Fu;",
+	"\u819C>Maku;",
+	"\u819D>Shitsu;",
+	"\u81A0>Kou;",
+	"\u81A3>Chitsu;",
+	"\u81A8>Bou;",
+	"\u81A9>Ji;",
+	"\u81B0>Han;",
+	"\u81B3>Sen;",
+	"\u81B5>Sui;",
+	"\u81B8>Zui;",
+	"\u81BA>You;",
+	"\u81BD>Tan;",
+	"\u81BE>Kai;",
+	"\u81BF>Dou;",
+	"\u81C0>Den;",
+	"\u81C2>Hi;",
+	"\u81C6>Oku;",
+	"\u81C8>Rou;",
+	"\u81C9>Ren;",
+	"\u81CD>Sei;",
+	"\u81D1>Dau;",
+	"\u81D3>Zou;",
+	"\u81D8>Rou;",
+	"\u81D9>En;",
+	"\u81DA>Ryo;",
+	"\u81DF>Zou;",
+	"\u81E0>Ren;",
+	"\u81E3>Shin;",
+	"\u81E5>Ga;",
+	"\u81E7>Zou;",
+	"\u81E8>Rin;",
+	"\u81EA>Shi;",
+	"\u81ED>Shuu;",
+	"\u81F3>Shi;",
+	"\u81F4>Chi;",
+	"\u81FA>Tai;",
+	"\u81FB>Shin;",
+	"\u81FC>Kyuu;",
+	"\u81FE>Yu;",
+	"\u8201>Yo;",
+	"\u8202>Shou;",
+	"\u8205>Kyuu;",
+	"\u8207>Yo;",
+	"\u8208>Kyou;",
+	"\u8209>Kyo;",
+	"\u820A>Kyuu;",
+	"\u820C>Zetsu;",
+	"\u820D>Sha;",
+	"\u820E>Sha;",
+	"\u8210>Shi;",
+	"\u8212>Jo;",
+	"\u8216>Ho;",
+	"\u8217>Ho;",
+	"\u8218>Kan;",
+	"\u821B>Sen;",
+	"\u821C>Shun;",
+	"\u821E>Bu;",
+	"\u821F>Shuu;",
+	"\u8229>Sen;",
+	"\u822A>Kou;",
+	"\u822B>Hou;",
+	"\u822C>Han;",
+	"\u822E>Ro;",
+	"\u8233>Chiku;",
+	"\u8235>Ta;",
+	"\u8236>Haku;",
+	"\u8237>Ken;",
+	"\u8238>Ka;",
+	"\u8239>Sen;",
+	"\u8240>Fu;",
+	"\u8247>Tei;",
+	"\u8258>Sou;",
+	"\u8259>Sou;",
+	"\u825A>Sou;",
+	"\u825F>Dou;",
+	"\u8262>Shou;",
+	"\u8264>Gi;",
+	"\u8266>Kan;",
+	"\u8268>Mou;",
+	"\u826A>Ro;",
+	"\u826B>Ro;",
+	"\u826E>Kon;",
+	"\u826F>Ryou;",
+	"\u8271>Kan;",
+	"\u8272>Shoku;",
+	"\u8276>En;",
+	"\u8277>En;",
+	"\u8278>Sou;",
+	"\u827E>Gai;",
+	"\u828B>U;",
+	"\u828D>Shaku;",
+	"\u8292>Bou;",
+	"\u8299>Fu;",
+	"\u829D>Shi;",
+	"\u829F>San;",
+	"\u82A5>Kai;",
+	"\u82A6>Ro;",
+	"\u82AB>Gen;",
+	"\u82AC>Fun;",
+	"\u82AD>Ba;",
+	"\u82AF>Shin;",
+	"\u82B1>Ka;",
+	"\u82B3>Hou;",
+	"\u82B8>Gei;",
+	"\u82B9>Kin;",
+	"\u82BB>Suu;",
+	"\u82BD>Ga;",
+	"\u82C5>Gai;",
+	"\u82D1>En;",
+	"\u82D2>Zen;",
+	"\u82D3>Rei;",
+	"\u82D4>Tai;",
+	"\u82D7>Byou;",
+	"\u82D9>Ryuu;",
+	"\u82DB>Ka;",
+	"\u82DC>Boku;",
+	"\u82DE>Hou;",
+	"\u82DF>Kou;",
+	"\u82E1>I;",
+	"\u82E3>Kyo;",
+	"\u82E5>Jaku;",
+	"\u82E6>Ku;",
+	"\u82E7>Cho;",
+	"\u82EB>Sen;",
+	"\u82F1>Ei;",
+	"\u82F3>Tou;",
+	"\u82F4>So;",
+	"\u82F9>Hei;",
+	"\u82FA>Mai;",
+	"\u82FB>Fu;",
+	"\u8302>Mo;",
+	"\u8303>Han;",
+	"\u8304>Ka;",
+	"\u8305>Bou;",
+	"\u8306>Bou;",
+	"\u8309>Matsu;",
+	"\u830E>Kei;",
+	"\u8316>Kaku;",
+	"\u8317>Mei;",
+	"\u8318>Ri;",
+	"\u831C>Sen;",
+	"\u8323>Go;",
+	"\u8328>Shi;",
+	"\u832B>Bou;",
+	"\u832F>Fuku;",
+	"\u8331>Shu;",
+	"\u8332>Ji;",
+	"\u8334>Kai;",
+	"\u8335>In;",
+	"\u8336>Cha;",
+	"\u8338>Jou;",
+	"\u8339>Jo;",
+	"\u8340>Jun;",
+	"\u8345>Tou;",
+	"\u8349>Sou;",
+	"\u834A>Kei;",
+	"\u834F>Jin;",
+	"\u8350>Sen;",
+	"\u8352>Kou;",
+	"\u8358>Sou;",
+	"\u8373>Tou;",
+	"\u8375>Jin;",
+	"\u8377>Ka;",
+	"\u837B>Teki;",
+	"\u837C>To;",
+	"\u8385>Ri;",
+	"\u8387>Cho;",
+	"\u8389>Chi;",
+	"\u838A>Sou;",
+	"\u838E>Sa;",
+	"\u8393>Mai;",
+	"\u8396>Kei;",
+	"\u839A>En;",
+	"\u839E>Kan;",
+	"\u839F>Kan;",
+	"\u83A0>Yuu;",
+	"\u83A2>Kyou;",
+	"\u83A8>Rou;",
+	"\u83AA>Ga;",
+	"\u83AB>Bo;",
+	"\u83B1>Rai;",
+	"\u83B5>To;",
+	"\u83BD>Bou;",
+	"\u83C1>Sei;",
+	"\u83C5>Kan;",
+	"\u83CA>Kiku;",
+	"\u83CC>Kin;",
+	"\u83CE>Kon;",
+	"\u83D3>Ka;",
+	"\u83D6>Shou;",
+	"\u83D8>Suu;",
+	"\u83DC>Sai;",
+	"\u83DF>To;",
+	"\u83E0>Ha;",
+	"\u83E9>Hai;",
+	"\u83EB>Kin;",
+	"\u83EF>Ka;",
+	"\u83F0>Ko;",
+	"\u83F1>Ryou;",
+	"\u83F2>Hi;",
+	"\u83F4>An;",
+	"\u83F7>Sou;",
+	"\u83FB>Rin;",
+	"\u83FD>Shuku;",
+	"\u8403>Sui;",
+	"\u8404>Tou;",
+	"\u8407>Chou;",
+	"\u840B>Sei;",
+	"\u840C>Hou;",
+	"\u840D>Hei;",
+	"\u840E>I;",
+	"\u8413>Gi;",
+	"\u8420>Hou;",
+	"\u8429>Shuu;",
+	"\u842A>Kuwa;",
+	"\u842C>Man;",
+	"\u8431>Ken;",
+	"\u8435>Wa;",
+	"\u8438>Yu;",
+	"\u843C>Gaku;",
+	"\u843D>Raku;",
+	"\u8446>Ho;",
+	"\u8449>You;",
+	"\u844E>Ritsu;",
+	"\u8457>Cho;",
+	"\u845B>Katsu;",
+	"\u8461>Ho;",
+	"\u8462>Gai;",
+	"\u8463>Tou;",
+	"\u8466>I;",
+	"\u8469>Ha;",
+	"\u846B>Ko;",
+	"\u846C>Sou;",
+	"\u846D>Ka;",
+	"\u846E>Tan;",
+	"\u846F>Yaku;",
+	"\u8471>Sou;",
+	"\u8475>Ki;",
+	"\u8477>Gun;",
+	"\u8479>Shi;",
+	"\u847A>Shuu;",
+	"\u8482>Tei;",
+	"\u8484>Kan;",
+	"\u848B>Shou;",
+	"\u8490>Shuu;",
+	"\u8494>Shi;",
+	"\u8499>Bou;",
+	"\u849C>San;",
+	"\u849F>Kon;",
+	"\u84A1>Hou;",
+	"\u84AD>Suu;",
+	"\u84B2>Ho;",
+	"\u84B8>Jou;",
+	"\u84B9>Ken;",
+	"\u84BB>Jaku;",
+	"\u84BC>Sou;",
+	"\u84BF>Kou;",
+	"\u84C1>Shin;",
+	"\u84C4>Chiku;",
+	"\u84C6>Seki;",
+	"\u84C9>You;",
+	"\u84CA>Ou;",
+	"\u84CB>Gai;",
+	"\u84CD>Shi;",
+	"\u84D0>Joku;",
+	"\u84D1>Sa;",
+	"\u84D6>Hi;",
+	"\u84DA>Chou;",
+	"\u84EC>Hou;",
+	"\u84EE>Ren;",
+	"\u84F4>Shun;",
+	"\u84FC>Ryou;",
+	"\u84FF>Shuku;",
+	"\u8500>Hou;",
+	"\u8506>Ryou;",
+	"\u8511>Betsu;",
+	"\u8513>Ban;",
+	"\u8514>Fuku;",
+	"\u8515>Tei;",
+	"\u8517>Sho;",
+	"\u8518>Shin;",
+	"\u851A>Utsu;",
+	"\u851F>Zoku;",
+	"\u8521>Sai;",
+	"\u8526>Chou;",
+	"\u852C>So;",
+	"\u852D>In;",
+	"\u8535>Zou;",
+	"\u853D>Hei;",
+	"\u8540>Kyoku;",
+	"\u8541>Jin;",
+	"\u8543>Ban;",
+	"\u8548>Shin;",
+	"\u8549>Shou;",
+	"\u854A>Zui;",
+	"\u854B>Zui;",
+	"\u854E>Kyou;",
+	"\u8555>Yuu;",
+	"\u8557>Ro;",
+	"\u8558>Jou;",
+	"\u855A>Gaku;",
+	"\u8563>Shun;",
+	"\u8568>Ketsu;",
+	"\u8569>Tou;",
+	"\u856A>Bu;",
+	"\u856D>Shou;",
+	"\u8577>Yo;",
+	"\u857E>Rai;",
+	"\u8580>Un;",
+	"\u8584>Haku;",
+	"\u8587>Bi;",
+	"\u8588>Kai;",
+	"\u858A>Kei;",
+	"\u8590>Rou;",
+	"\u8591>Kyou;",
+	"\u8594>Shoku;",
+	"\u8597>En;",
+	"\u8599>Tei;",
+	"\u859B>Setsu;",
+	"\u859C>Heki;",
+	"\u85A4>Kai;",
+	"\u85A6>Sen;",
+	"\u85A8>Kou;",
+	"\u85A9>Satsu;",
+	"\u85AA>Shin;",
+	"\u85AB>Kun;",
+	"\u85AC>Yaku;",
+	"\u85AE>Sou;",
+	"\u85AF>Sho;",
+	"\u85B9>Tai;",
+	"\u85BA>Sei;",
+	"\u85C1>Kou;",
+	"\u85C9>Sha;",
+	"\u85CD>Ran;",
+	"\u85CF>Zou;",
+	"\u85D0>Baku;",
+	"\u85D5>Guu;",
+	"\u85DC>Rei;",
+	"\u85DD>Gei;",
+	"\u85E4>Tou;",
+	"\u85E5>Yaku;",
+	"\u85E9>Han;",
+	"\u85EA>Sou;",
+	"\u85F7>Sho;",
+	"\u85F9>Ai;",
+	"\u85FA>Rin;",
+	"\u85FB>Sou;",
+	"\u85FE>Rai;",
+	"\u8602>Zui;",
+	"\u8606>Ro;",
+	"\u8607>So;",
+	"\u860A>Un;",
+	"\u860B>Hin;",
+	"\u8613>So;",
+	"\u8616>Getsu;",
+	"\u8617>Haku;",
+	"\u861A>Sen;",
+	"\u8622>Rou;",
+	"\u862D>Ran;",
+	"\u862F>Tou;",
+	"\u863F>Ra;",
+	"\u864D>Ko;",
+	"\u864E>Ko;",
+	"\u8650>Gyaku;",
+	"\u8654>Ken;",
+	"\u8655>Sho;",
+	"\u865A>Kyo;",
+	"\u865C>Ryo;",
+	"\u865E>Gu;",
+	"\u865F>Gou;",
+	"\u8667>Ki;",
+	"\u866B>Chuu;",
+	"\u8671>Shitsu;",
+	"\u8679>Kou;",
+	"\u867B>Bou;",
+	"\u868A>Bun;",
+	"\u868B>Zei;",
+	"\u868C>Hou;",
+	"\u8693>In;",
+	"\u8695>San;",
+	"\u86A3>Kou;",
+	"\u86A4>Sou;",
+	"\u86A9>Shi;",
+	"\u86AA>Tou;",
+	"\u86AB>Hou;",
+	"\u86AF>Kyuu;",
+	"\u86B0>Yuu;",
+	"\u86B6>Kan;",
+	"\u86C4>Ko;",
+	"\u86C6>Sho;",
+	"\u86C7>Ja;",
+	"\u86C9>Rei;",
+	"\u86CB>Tan;",
+	"\u86CD>Kei;",
+	"\u86CE>Rei;",
+	"\u86D4>Kai;",
+	"\u86D9>A;",
+	"\u86DB>Shu;",
+	"\u86DE>Katsu;",
+	"\u86DF>Kou;",
+	"\u86E4>Kou;",
+	"\u86E9>Kyou;",
+	"\u86EC>Kyou;",
+	"\u86ED>Shitsu;",
+	"\u86EE>Ban;",
+	"\u86F8>Sou;",
+	"\u86F9>You;",
+	"\u86FB>Zei;",
+	"\u86FE>Ga;",
+	"\u8700>Shoku;",
+	"\u8702>Hou;",
+	"\u8703>Shin;",
+	"\u8706>Ken;",
+	"\u8708>Go;",
+	"\u8709>Fu;",
+	"\u870A>Ri;",
+	"\u870D>Sho;",
+	"\u8711>Tan;",
+	"\u8712>En;",
+	"\u8718>Chi;",
+	"\u871A>Hi;",
+	"\u871C>Mitsu;",
+	"\u8725>Seki;",
+	"\u8729>Chou;",
+	"\u8734>Eki;",
+	"\u8737>Ken;",
+	"\u873B>Sei;",
+	"\u873F>En;",
+	"\u8749>Sen;",
+	"\u874B>Rou;",
+	"\u874C>Ka;",
+	"\u874E>Katsu;",
+	"\u8753>Yu;",
+	"\u8755>Shoku;",
+	"\u8757>Kou;",
+	"\u8759>Hen;",
+	"\u875F>I;",
+	"\u8760>Fuku;",
+	"\u8763>Yuu;",
+	"\u8766>Ka;",
+	"\u8768>Shitsu;",
+	"\u876A>Tou;",
+	"\u876E>Fuku;",
+	"\u8774>Ko;",
+	"\u8776>Chou;",
+	"\u8778>Ka;",
+	"\u877F>You;",
+	"\u8782>Rou;",
+	"\u878D>Yuu;",
+	"\u879F>Mei;",
+	"\u87A2>Kei;",
+	"\u87AB>Seki;",
+	"\u87AF>Gou;",
+	"\u87B3>Tou;",
+	"\u87BA>Ra;",
+	"\u87BB>Rou;",
+	"\u87BD>Shuu;",
+	"\u87C0>Shutsu;",
+	"\u87C4>Chitsu;",
+	"\u87C6>Ba;",
+	"\u87C7>Ba;",
+	"\u87CB>Shitsu;",
+	"\u87D0>Tou;",
+	"\u87D2>Bou;",
+	"\u87E0>Han;",
+	"\u87EF>Gyou;",
+	"\u87F2>Ki;",
+	"\u87F6>Tei;",
+	"\u87F7>Tou;",
+	"\u87F9>Kai;",
+	"\u87FB>Gi;",
+	"\u87FE>Sen;",
+	"\u8805>You;",
+	"\u880D>Katsu;",
+	"\u880E>Bou;",
+	"\u880F>Kai;",
+	"\u8811>Ei;",
+	"\u8815>Da;",
+	"\u8816>Kaku;",
+	"\u8821>Rei;",
+	"\u8822>Shun;",
+	"\u8823>Rei;",
+	"\u8827>To;",
+	"\u8831>Ko;",
+	"\u8836>San;",
+	"\u8839>To;",
+	"\u883B>Ban;",
+	"\u8840>Ketsu;",
+	"\u8842>Jiku;",
+	"\u8844>Jiku;",
+	"\u8846>Shuu;",
+	"\u884C>Kou;",
+	"\u884D>En;",
+	"\u8852>Ken;",
+	"\u8853>Jutsu;",
+	"\u8857>Gai;",
+	"\u8859>Gyo;",
+	"\u885B>Ei;",
+	"\u885D>Shou;",
+	"\u885E>Ei;",
+	"\u8861>Kou;",
+	"\u8862>Ku;",
+	"\u8863>I;",
+	"\u8868>Hyou;",
+	"\u886B>San;",
+	"\u8870>Sa;",
+	"\u8872>Dou;",
+	"\u8875>Jitsu;",
+	"\u8877>Chuu;",
+	"\u887D>Jin;",
+	"\u887E>Kin;",
+	"\u887F>Kin;",
+	"\u8881>En;",
+	"\u8882>Bei;",
+	"\u8888>Ka;",
+	"\u888B>Tai;",
+	"\u888D>Hou;",
+	"\u8892>Tan;",
+	"\u8896>Shuu;",
+	"\u8897>Shin;",
+	"\u8899>Ha;",
+	"\u889E>Kon;",
+	"\u88A2>Han;",
+	"\u88A4>Bou;",
+	"\u88AB>Hi;",
+	"\u88AE>Ne;",
+	"\u88B1>Fuku;",
+	"\u88B4>Ko;",
+	"\u88B5>Jin;",
+	"\u88B7>Kou;",
+	"\u88BF>Kei;",
+	"\u88C1>Sai;",
+	"\u88C2>Retsu;",
+	"\u88C5>Sou;",
+	"\u88CF>Ri;",
+	"\u88D4>Ei;",
+	"\u88D5>Yuu;",
+	"\u88D8>Kyuu;",
+	"\u88D9>Kun;",
+	"\u88DC>Ho;",
+	"\u88DD>Sou;",
+	"\u88DF>Sa;",
+	"\u88E1>Ri;",
+	"\u88E8>Hi;",
+	"\u88F2>Ryou;",
+	"\u88F3>Shou;",
+	"\u88F4>Hai;",
+	"\u88F8>Ra;",
+	"\u88F9>Ka;",
+	"\u88FC>Seki;",
+	"\u88FD>Sei;",
+	"\u88FE>Kyo;",
+	"\u8902>Kai;",
+	"\u8907>Fuku;",
+	"\u890A>Hen;",
+	"\u890C>Kon;",
+	"\u8910>Katsu;",
+	"\u8912>Hou;",
+	"\u8913>Ho;",
+	"\u891D>Tan;",
+	"\u891E>On;",
+	"\u8925>Joku;",
+	"\u892A>Tai;",
+	"\u892B>Chi;",
+	"\u8936>Chou;",
+	"\u8938>Rou;",
+	"\u893B>Setsu;",
+	"\u8941>Kyou;",
+	"\u8943>Hou;",
+	"\u8944>Jou;",
+	"\u894C>Tan;",
+	"\u894D>Zatsu;",
+	"\u8956>Ou;",
+	"\u895E>Heki;",
+	"\u895F>Kin;",
+	"\u8960>Tou;",
+	"\u8964>Ran;",
+	"\u8966>Ju;",
+	"\u896A>Betsu;",
+	"\u896D>Ketsu;",
+	"\u896F>Shin;",
+	"\u8972>Shuu;",
+	"\u8974>Ran;",
+	"\u897E>Aka;",
+	"\u897F>Sei;",
+	"\u8981>You;",
+	"\u8983>Tan;",
+	"\u8986>Fuku;",
+	"\u8987>Ha;",
+	"\u8988>Kaku;",
+	"\u898A>Ki;",
+	"\u898B>Ken;",
+	"\u898F>Ki;",
+	"\u8993>Beki;",
+	"\u8996>Shi;",
+	"\u8997>Shi;",
+	"\u8998>Ten;",
+	"\u899A>Kaku;",
+	"\u89A1>Geki;",
+	"\u89A6>Yu;",
+	"\u89A7>Ran;",
+	"\u89A9>To;",
+	"\u89AA>Shin;",
+	"\u89AC>Ki;",
+	"\u89AF>Kou;",
+	"\u89B2>Kin;",
+	"\u89B3>Kan;",
+	"\u89BA>Kaku;",
+	"\u89BD>Ran;",
+	"\u89BF>Teki;",
+	"\u89C0>Kan;",
+	"\u89D2>Kaku;",
+	"\u89DA>Ko;",
+	"\u89DC>Shi;",
+	"\u89DD>Tei;",
+	"\u89E3>Kai;",
+	"\u89E6>Shoku;",
+	"\u89E7>Kai;",
+	"\u89F4>Shou;",
+	"\u89F8>Shoku;",
+	"\u8A00>Gen;",
+	"\u8A02>Tei;",
+	"\u8A03>Fu;",
+	"\u8A08>Kei;",
+	"\u8A0A>Jin;",
+	"\u8A0C>Kou;",
+	"\u8A0E>Tou;",
+	"\u8A10>Ketsu;",
+	"\u8A13>Kun;",
+	"\u8A16>Kitsu;",
+	"\u8A17>Taku;",
+	"\u8A18>Ki;",
+	"\u8A1B>Ka;",
+	"\u8A1D>Ga;",
+	"\u8A1F>Shou;",
+	"\u8A23>Ketsu;",
+	"\u8A25>Totsu;",
+	"\u8A2A>Hou;",
+	"\u8A2D>Setsu;",
+	"\u8A31>Kyo;",
+	"\u8A33>Yaku;",
+	"\u8A34>So;",
+	"\u8A36>Ka;",
+	"\u8A3A>Shin;",
+	"\u8A3B>Chuu;",
+	"\u8A3C>Shou;",
+	"\u8A41>Ko;",
+	"\u8A46>Tei;",
+	"\u8A48>Ri;",
+	"\u8A50>Sa;",
+	"\u8A51>Ta;",
+	"\u8A52>Tai;",
+	"\u8A54>Shou;",
+	"\u8A55>Hyou;",
+	"\u8A5B>So;",
+	"\u8A5E>Shi;",
+	"\u8A60>Ei;",
+	"\u8A62>Jun;",
+	"\u8A63>Kei;",
+	"\u8A66>Shi;",
+	"\u8A69>Shi;",
+	"\u8A6B>Ta;",
+	"\u8A6C>Kou;",
+	"\u8A6D>Ki;",
+	"\u8A6E>Sen;",
+	"\u8A70>Kitsu;",
+	"\u8A71>Wa;",
+	"\u8A72>Gai;",
+	"\u8A73>Shou;",
+	"\u8A7C>Kai;",
+	"\u8A82>Chou;",
+	"\u8A84>Rui;",
+	"\u8A85>Chuu;",
+	"\u8A87>Ko;",
+	"\u8A89>Yo;",
+	"\u8A8C>Shi;",
+	"\u8A8D>Nin;",
+	"\u8A91>Kyou;",
+	"\u8A93>Sei;",
+	"\u8A95>Tan;",
+	"\u8A98>Yuu;",
+	"\u8A9A>Shou;",
+	"\u8A9E>Go;",
+	"\u8AA0>Sei;",
+	"\u8AA1>Kai;",
+	"\u8AA3>Fu;",
+	"\u8AA4>Go;",
+	"\u8AA5>Kou;",
+	"\u8AA6>Shou;",
+	"\u8AA8>Kai;",
+	"\u8AAC>Setsu;",
+	"\u8AAD>Toku;",
+	"\u8AB0>Sui;",
+	"\u8AB2>Ka;",
+	"\u8AB9>Hi;",
+	"\u8ABC>Gi;",
+	"\u8ABF>Chou;",
+	"\u8AC2>Ten;",
+	"\u8AC4>Jun;",
+	"\u8AC7>Dan;",
+	"\u8ACB>Sei;",
+	"\u8ACC>Kan;",
+	"\u8ACD>Sou;",
+	"\u8ACF>Shu;",
+	"\u8AD2>Ryou;",
+	"\u8AD6>Ron;",
+	"\u8ADA>Jou;",
+	"\u8ADB>Yu;",
+	"\u8ADC>Chou;",
+	"\u8ADE>Hen;",
+	"\u8AE0>Ken;",
+	"\u8AE1>Shi;",
+	"\u8AE2>Kon;",
+	"\u8AE4>Gaku;",
+	"\u8AE6>Tei;",
+	"\u8AE7>Kai;",
+	"\u8AEB>Kan;",
+	"\u8AED>Yu;",
+	"\u8AEE>Shi;",
+	"\u8AF1>Ki;",
+	"\u8AF3>An;",
+	"\u8AF7>Fuu;",
+	"\u8AF8>Sho;",
+	"\u8AFA>Gen;",
+	"\u8AFE>Daku;",
+	"\u8B00>Bou;",
+	"\u8B01>Etsu;",
+	"\u8B02>I;",
+	"\u8B04>Tou;",
+	"\u8B07>Ken;",
+	"\u8B0C>Ka;",
+	"\u8B0E>Mei;",
+	"\u8B10>Hitsu;",
+	"\u8B14>Gyaku;",
+	"\u8B16>Shoku;",
+	"\u8B17>Bou;",
+	"\u8B19>Ken;",
+	"\u8B1A>Shi;",
+	"\u8B1B>Kou;",
+	"\u8B1D>Sha;",
+	"\u8B20>You;",
+	"\u8B21>You;",
+	"\u8B26>Kei;",
+	"\u8B28>Bo;",
+	"\u8B2B>Taku;",
+	"\u8B2C>Byou;",
+	"\u8B33>Ou;",
+	"\u8B39>Kin;",
+	"\u8B3E>Ban;",
+	"\u8B41>Ka;",
+	"\u8B49>Shou;",
+	"\u8B4C>Ka;",
+	"\u8B4E>Kitsu;",
+	"\u8B4F>Ki;",
+	"\u8B56>Shin;",
+	"\u8B58>Shiki;",
+	"\u8B5A>Tan;",
+	"\u8B5B>Shin;",
+	"\u8B5C>Fu;",
+	"\u8B5F>Sou;",
+	"\u8B66>Kei;",
+	"\u8B6B>Sen;",
+	"\u8B6C>Hi;",
+	"\u8B6F>Yaku;",
+	"\u8B70>Gi;",
+	"\u8B71>Zen;",
+	"\u8B72>Jou;",
+	"\u8B74>Ken;",
+	"\u8B77>Go;",
+	"\u8B7D>Yo;",
+	"\u8B80>Toku;",
+	"\u8B83>San;",
+	"\u8B8A>Hen;",
+	"\u8B8C>En;",
+	"\u8B8E>Shuu;",
+	"\u8B90>Shuu;",
+	"\u8B92>San;",
+	"\u8B93>Jou;",
+	"\u8B96>Shin;",
+	"\u8B99>Kan;",
+	"\u8B9A>San;",
+	"\u8C37>Koku;",
+	"\u8C3A>Ka;",
+	"\u8C3F>Kei;",
+	"\u8C41>Katsu;",
+	"\u8C46>Tou;",
+	"\u8C48>Ki;",
+	"\u8C4A>Hou;",
+	"\u8C4C>En;",
+	"\u8C4E>Ju;",
+	"\u8C50>Hou;",
+	"\u8C55>Shi;",
+	"\u8C5A>Ton;",
+	"\u8C61>Shou;",
+	"\u8C62>Ken;",
+	"\u8C6A>Gou;",
+	"\u8C6B>Yo;",
+	"\u8C6C>Cho;",
+	"\u8C78>Chi;",
+	"\u8C79>Hou;",
+	"\u8C7A>Sai;",
+	"\u8C7C>Hi;",
+	"\u8C82>Chou;",
+	"\u8C85>Kyuu;",
+	"\u8C89>Kaku;",
+	"\u8C8A>Haku;",
+	"\u8C8C>Bou;",
+	"\u8C8D>Ri;",
+	"\u8C8E>Gei;",
+	"\u8C94>Hi;",
+	"\u8C98>Baku;",
+	"\u8C9D>Bai;",
+	"\u8C9E>Tei;",
+	"\u8CA0>Fu;",
+	"\u8CA1>Zai;",
+	"\u8CA2>Kou;",
+	"\u8CA7>Hin;",
+	"\u8CA8>Ka;",
+	"\u8CA9>Han;",
+	"\u8CAA>Don;",
+	"\u8CAB>Kan;",
+	"\u8CAC>Seki;",
+	"\u8CAD>Shitsu;",
+	"\u8CAE>Ni;",
+	"\u8CAF>Cho;",
+	"\u8CB0>Sei;",
+	"\u8CB2>Shi;",
+	"\u8CB3>Ni;",
+	"\u8CB4>Ki;",
+	"\u8CB6>Hen;",
+	"\u8CB7>Bai;",
+	"\u8CB8>Tai;",
+	"\u8CBB>Hi;",
+	"\u8CBC>Ten;",
+	"\u8CBD>I;",
+	"\u8CBF>Bou;",
+	"\u8CC0>Ga;",
+	"\u8CC1>Hi;",
+	"\u8CC2>Ro;",
+	"\u8CC3>Chin;",
+	"\u8CC4>Wai;",
+	"\u8CC7>Shi;",
+	"\u8CC8>Ko;",
+	"\u8CCA>Zoku;",
+	"\u8CCD>Sou;",
+	"\u8CCE>Sen;",
+	"\u8CD1>Shin;",
+	"\u8CD3>Hin;",
+	"\u8CDA>Rai;",
+	"\u8CDB>San;",
+	"\u8CDC>Shi;",
+	"\u8CDE>Shou;",
+	"\u8CE0>Bai;",
+	"\u8CE2>Ken;",
+	"\u8CE3>Bai;",
+	"\u8CE4>Sen;",
+	"\u8CE6>Fu;",
+	"\u8CEA>Shitsu;",
+	"\u8CED>To;",
+	"\u8CFA>Tan;",
+	"\u8CFB>Fu;",
+	"\u8CFC>Kou;",
+	"\u8CFD>Sai;",
+	"\u8D04>Shi;",
+	"\u8D05>Zei;",
+	"\u8D07>In;",
+	"\u8D08>Zou;",
+	"\u8D0A>San;",
+	"\u8D0B>Gan;",
+	"\u8D0D>Sen;",
+	"\u8D0F>Ei;",
+	"\u8D10>Shin;",
+	"\u8D13>Zou;",
+	"\u8D14>Hi;",
+	"\u8D16>Shoku;",
+	"\u8D64>Seki;",
+	"\u8D66>Sha;",
+	"\u8D67>Tan;",
+	"\u8D6B>Kaku;",
+	"\u8D6D>Sha;",
+	"\u8D70>Sou;",
+	"\u8D71>Sou;",
+	"\u8D73>Kyuu;",
+	"\u8D74>Fu;",
+	"\u8D77>Ki;",
+	"\u8D81>Chin;",
+	"\u8D85>Chou;",
+	"\u8D8A>Etsu;",
+	"\u8D99>Chou;",
+	"\u8DA3>Shu;",
+	"\u8DA8>Suu;",
+	"\u8DB3>Soku;",
+	"\u8DBA>Fu;",
+	"\u8DBE>Shi;",
+	"\u8DC2>Ki;",
+	"\u8DCB>Batsu;",
+	"\u8DCC>Tetsu;",
+	"\u8DCF>Ka;",
+	"\u8DD6>Seki;",
+	"\u8DDA>San;",
+	"\u8DDB>Ha;",
+	"\u8DDD>Kyo;",
+	"\u8DDF>Kon;",
+	"\u8DE1>Seki;",
+	"\u8DE3>Sen;",
+	"\u8DE8>Ko;",
+	"\u8DEA>Ki;",
+	"\u8DEB>Kyou;",
+	"\u8DEF>Ro;",
+	"\u8DF3>Chou;",
+	"\u8DF5>Sen;",
+	"\u8DFC>Kyoku;",
+	"\u8DFF>To;",
+	"\u8E08>Sho;",
+	"\u8E09>Ryou;",
+	"\u8E0A>You;",
+	"\u8E0F>Tou;",
+	"\u8E10>Sen;",
+	"\u8E1D>Ka;",
+	"\u8E1E>Kyo;",
+	"\u8E1F>Chi;",
+	"\u8E2A>Shou;",
+	"\u8E30>Yu;",
+	"\u8E34>You;",
+	"\u8E35>Shou;",
+	"\u8E42>Juu;",
+	"\u8E44>Tei;",
+	"\u8E47>Ken;",
+	"\u8E48>Tou;",
+	"\u8E49>Sa;",
+	"\u8E4A>Kei;",
+	"\u8E4C>Shou;",
+	"\u8E50>Seki;",
+	"\u8E55>Hitsu;",
+	"\u8E59>Shuku;",
+	"\u8E5F>Seki;",
+	"\u8E60>Seki;",
+	"\u8E63>Man;",
+	"\u8E64>Shou;",
+	"\u8E72>Son;",
+	"\u8E74>Shuu;",
+	"\u8E76>Ketsu;",
+	"\u8E7C>Boku;",
+	"\u8E81>Sou;",
+	"\u8E84>Heki;",
+	"\u8E85>Choku;",
+	"\u8E87>Cho;",
+	"\u8E8A>Chuu;",
+	"\u8E8B>Sei;",
+	"\u8E8D>Yaku;",
+	"\u8E91>Teki;",
+	"\u8E93>Chi;",
+	"\u8E94>Ten;",
+	"\u8E99>Rin;",
+	"\u8EA1>Jou;",
+	"\u8EAA>Rin;",
+	"\u8EAB>Shin;",
+	"\u8EAC>Kyuu;",
+	"\u8EAF>Ku;",
+	"\u8EB0>Tei;",
+	"\u8EB1>Ta;",
+	"\u8EC6>Tei;",
+	"\u8ECA>Sha;",
+	"\u8ECB>Atsu;",
+	"\u8ECC>Ki;",
+	"\u8ECD>Gun;",
+	"\u8ED2>Ken;",
+	"\u8EDB>Aku;",
+	"\u8EDF>Nan;",
+	"\u8EE2>Ten;",
+	"\u8EE3>Gou;",
+	"\u8EEB>Shin;",
+	"\u8EF8>Jiku;",
+	"\u8EFB>Ka;",
+	"\u8EFC>Itsu;",
+	"\u8EFD>Kei;",
+	"\u8EFE>Shoku;",
+	"\u8F03>Kaku;",
+	"\u8F05>Ro;",
+	"\u8F09>Sai;",
+	"\u8F0A>Chi;",
+	"\u8F0C>Ryou;",
+	"\u8F12>Chou;",
+	"\u8F13>Ban;",
+	"\u8F14>Fu;",
+	"\u8F15>Kei;",
+	"\u8F19>Chou;",
+	"\u8F1B>Ryou;",
+	"\u8F1C>Shi;",
+	"\u8F1D>Ki;",
+	"\u8F1F>Tetsu;",
+	"\u8F26>Ren;",
+	"\u8F29>Hai;",
+	"\u8F2A>Rin;",
+	"\u8F2F>Shuu;",
+	"\u8F33>Sou;",
+	"\u8F38>Yu;",
+	"\u8F39>Fuku;",
+	"\u8F3B>Fuku;",
+	"\u8F3E>Ten;",
+	"\u8F3F>Yo;",
+	"\u8F42>Koku;",
+	"\u8F44>Katsu;",
+	"\u8F45>En;",
+	"\u8F46>Roku;",
+	"\u8F49>Ten;",
+	"\u8F4D>Tetsu;",
+	"\u8F4E>Kyou;",
+	"\u8F57>Kan;",
+	"\u8F5C>Ji;",
+	"\u8F5F>Gou;",
+	"\u8F61>Hi;",
+	"\u8F62>Reki;",
+	"\u8F63>Reki;",
+	"\u8F64>Ro;",
+	"\u8F9B>Shin;",
+	"\u8F9C>Ko;",
+	"\u8F9E>Ji;",
+	"\u8F9F>Heki;",
+	"\u8FA3>Ratsu;",
+	"\u8FA7>Ben;",
+	"\u8FA8>Ben;",
+	"\u8FAD>Ji;",
+	"\u8FAE>Hen;",
+	"\u8FAF>Ben;",
+	"\u8FB0>Shin;",
+	"\u8FB1>Joku;",
+	"\u8FB2>Nou;",
+	"\u8FBA>Hen;",
+	"\u8FBF>Ten;",
+	"\u8FC2>U;",
+	"\u8FC4>Kitsu;",
+	"\u8FC5>Jin;",
+	"\u8FCE>Gei;",
+	"\u8FD1>Kin;",
+	"\u8FD4>Hen;",
+	"\u8FE2>Chou;",
+	"\u8FE5>Kei;",
+	"\u8FE6>Ka;",
+	"\u8FE9>Ji;",
+	"\u8FEA>Teki;",
+	"\u8FEB>Haku;",
+	"\u8FED>Tetsu;",
+	"\u8FEF>Tou;",
+	"\u8FF0>Jutsu;",
+	"\u8FF4>Kai;",
+	"\u8FF7>Mei;",
+	"\u8FF8>Hou;",
+	"\u8FF9>Seki;",
+	"\u8FFA>Dai;",
+	"\u8FFD>Tsui;",
+	"\u9000>Tai;",
+	"\u9001>Sou;",
+	"\u9003>Tou;",
+	"\u9005>Kou;",
+	"\u9006>Gyaku;",
+	"\u900B>Ho;",
+	"\u900D>Shou;",
+	"\u900E>Shuu;",
+	"\u900F>Tou;",
+	"\u9010>Chiku;",
+	"\u9011>Kyuu;",
+	"\u9013>Tei;",
+	"\u9014>To;",
+	"\u9015>Kei;",
+	"\u9016>Teki;",
+	"\u9017>Tou;",
+	"\u9019>Gen;",
+	"\u901A>Ts;",
+	"\u901D>Sei;",
+	"\u901E>Tei;",
+	"\u901F>Soku;",
+	"\u9020>Zou;",
+	"\u9021>Shun;",
+	"\u9022>Hou;",
+	"\u9023>Ren;",
+	"\u902E>Tai;",
+	"\u9031>Shuu;",
+	"\u9032>Shin;",
+	"\u9035>Ki;",
+	"\u9036>I;",
+	"\u9038>Itsu;",
+	"\u9039>Tatsu;",
+	"\u903C>Hitsu;",
+	"\u903E>Yu;",
+	"\u9041>Ton;",
+	"\u9042>Sui;",
+	"\u9045>Chi;",
+	"\u9047>Guu;",
+	"\u9049>Tei;",
+	"\u904A>Yuu;",
+	"\u904B>Un;",
+	"\u904D>Hen;",
+	"\u904E>Ka;",
+	"\u904F>Atsu;",
+	"\u9050>Ka;",
+	"\u9051>Kou;",
+	"\u9052>Shuu;",
+	"\u9053>Dou;",
+	"\u9054>Tatsu;",
+	"\u9055>I;",
+	"\u9058>Kou;",
+	"\u9059>You;",
+	"\u905C>Son;",
+	"\u905E>Tei;",
+	"\u9060>En;",
+	"\u9061>So;",
+	"\u9063>Ken;",
+	"\u9065>You;",
+	"\u9068>Gou;",
+	"\u9069>Teki;",
+	"\u906D>Sou;",
+	"\u906E>Sha;",
+	"\u906F>Ton;",
+	"\u9072>Chi;",
+	"\u9075>Jun;",
+	"\u9076>Jou;",
+	"\u9077>Sen;",
+	"\u9078>Sen;",
+	"\u907A>I;",
+	"\u907C>Ryou;",
+	"\u907D>Kyo;",
+	"\u907F>Hi;",
+	"\u9080>You;",
+	"\u9081>Bai;",
+	"\u9082>Kai;",
+	"\u9083>Sui;",
+	"\u9084>Kan;",
+	"\u9087>Ji;",
+	"\u9089>Hen;",
+	"\u908A>Hen;",
+	"\u908F>Ra;",
+	"\u9091>Yuu;",
+	"\u90A3>Da;",
+	"\u90A6>Hou;",
+	"\u90A8>Son;",
+	"\u90AA>Ya;",
+	"\u90AF>Kan;",
+	"\u90B1>Kyuu;",
+	"\u90B5>Shou;",
+	"\u90B8>Tei;",
+	"\u90C1>Iku;",
+	"\u90CA>Kou;",
+	"\u90CE>Rou;",
+	"\u90DB>Fu;",
+	"\u90E1>Gun;",
+	"\u90E2>Ei;",
+	"\u90E4>Geki;",
+	"\u90E8>Bu;",
+	"\u90ED>Kaku;",
+	"\u90F5>Yuu;",
+	"\u90F7>Kyou;",
+	"\u90FD>To;",
+	"\u9102>Gaku;",
+	"\u9112>Suu;",
+	"\u9119>Hi;",
+	"\u912D>Tei;",
+	"\u9130>Rin;",
+	"\u9132>Tan;",
+	"\u9149>Yuu;",
+	"\u914A>Tei;",
+	"\u914B>Shuu;",
+	"\u914C>Shaku;",
+	"\u914D>Hai;",
+	"\u914E>Chuu;",
+	"\u9152>Shu;",
+	"\u9154>Sui;",
+	"\u9156>Tan;",
+	"\u9158>Tou;",
+	"\u9162>Saku;",
+	"\u9163>Kan;",
+	"\u9165>So;",
+	"\u9169>Mei;",
+	"\u916A>Raku;",
+	"\u916C>Shuu;",
+	"\u9172>Tei;",
+	"\u9173>In;",
+	"\u9175>Kou;",
+	"\u9177>Koku;",
+	"\u9178>San;",
+	"\u9182>Rin;",
+	"\u9187>Shun;",
+	"\u9189>Sui;",
+	"\u918B>Saku;",
+	"\u918D>Tei;",
+	"\u9190>Ko;",
+	"\u9192>Sei;",
+	"\u9197>Hatsu;",
+	"\u919C>Shuu;",
+	"\u91A2>Kai;",
+	"\u91A4>Shou;",
+	"\u91AA>Rou;",
+	"\u91AB>I;",
+	"\u91AF>Kei;",
+	"\u91B4>Rei;",
+	"\u91B5>Kyo;",
+	"\u91B8>Jou;",
+	"\u91BA>Kun;",
+	"\u91C0>Jou;",
+	"\u91C1>Kin;",
+	"\u91C6>Han;",
+	"\u91C7>Sai;",
+	"\u91C8>Shaku;",
+	"\u91C9>Yuu;",
+	"\u91CB>Shaku;",
+	"\u91CC>Ri;",
+	"\u91CD>Chou;",
+	"\u91CE>Ya;",
+	"\u91CF>Ryou;",
+	"\u91D0>Ri;",
+	"\u91D1>Kin;",
+	"\u91D6>Tou;",
+	"\u91D8>Tei;",
+	"\u91DB>Koku;",
+	"\u91DC>Fu;",
+	"\u91DD>Shin;",
+	"\u91DF>Hatsu;",
+	"\u91E1>Fu;",
+	"\u91E3>Chou;",
+	"\u91E6>Kou;",
+	"\u91E7>Sen;",
+	"\u91F5>Sa;",
+	"\u91F6>Shi;",
+	"\u91FC>Ken;",
+	"\u91FF>Kin;",
+	"\u920D>Don;",
+	"\u920E>Kou;",
+	"\u9211>Han;",
+	"\u9214>Shou;",
+	"\u9215>Chuu;",
+	"\u921E>Kin;",
+	"\u9229>Ro;",
+	"\u922C>Taku;",
+	"\u9234>Rei;",
+	"\u9237>Ko;",
+	"\u923F>Ten;",
+	"\u9244>Tetsu;",
+	"\u9245>Kyo;",
+	"\u9248>Sha;",
+	"\u9249>Ken;",
+	"\u924B>Hou;",
+	"\u9250>Seki;",
+	"\u9257>Kan;",
+	"\u925A>Ryuu;",
+	"\u925B>En;",
+	"\u925E>Etsu;",
+	"\u9262>Hachi;",
+	"\u9264>Kou;",
+	"\u9266>Sei;",
+	"\u9271>Kou;",
+	"\u927E>Bou;",
+	"\u9280>Gin;",
+	"\u9283>Juu;",
+	"\u9285>Dou;",
+	"\u9291>Sen;",
+	"\u9293>Sen;",
+	"\u9295>Tetsu;",
+	"\u9296>Shu;",
+	"\u9298>Mei;",
+	"\u929A>You;",
+	"\u929B>Sen;",
+	"\u929C>Kan;",
+	"\u92AD>Sen;",
+	"\u92B7>Shou;",
+	"\u92B9>Shuu;",
+	"\u92CF>Kyou;",
+	"\u92D2>Hou;",
+	"\u92E4>Jo;",
+	"\u92E9>Bou;",
+	"\u92EA>Ho;",
+	"\u92ED>Ei;",
+	"\u92F3>Chuu;",
+	"\u92F8>Kyo;",
+	"\u92FA>En;",
+	"\u92FC>Kou;",
+	"\u9306>Sei;",
+	"\u930F>A;",
+	"\u9310>Sui;",
+	"\u9318>Tsui;",
+	"\u9319>Shi;",
+	"\u931A>Sou;",
+	"\u9320>Jou;",
+	"\u9322>Sen;",
+	"\u9323>Tei;",
+	"\u9326>Kin;",
+	"\u9328>Byou;",
+	"\u932B>Seki;",
+	"\u932C>Ren;",
+	"\u932E>Ko;",
+	"\u932F>Saku;",
+	"\u9332>Roku;",
+	"\u933B>Bu;",
+	"\u9344>Kei;",
+	"\u934B>Ka;",
+	"\u934D>To;",
+	"\u9354>Gaku;",
+	"\u9356>Chin;",
+	"\u935B>Tan;",
+	"\u935C>Ka;",
+	"\u9360>Kou;",
+	"\u936C>Shuu;",
+	"\u936E>Chuu;",
+	"\u9375>Ken;",
+	"\u937C>Shin;",
+	"\u937E>Shou;",
+	"\u938C>Ren;",
+	"\u9394>You;",
+	"\u9396>Sa;",
+	"\u9397>Sou;",
+	"\u939A>Tsui;",
+	"\u93A7>Gai;",
+	"\u93AC>Kou;",
+	"\u93AD>Chin;",
+	"\u93AE>Chin;",
+	"\u93B0>Itsu;",
+	"\u93C3>Zoku;",
+	"\u93C8>Ren;",
+	"\u93D0>Ryuu;",
+	"\u93D1>Teki;",
+	"\u93D6>Ou;",
+	"\u93D7>Kou;",
+	"\u93D8>Shou;",
+	"\u93DD>Man;",
+	"\u93E1>Kyou;",
+	"\u93E4>Rou;",
+	"\u93E5>Shuu;",
+	"\u93E8>San;",
+	"\u9403>Dou;",
+	"\u9407>Han;",
+	"\u9410>Ryou;",
+	"\u9413>Tai;",
+	"\u9414>Shin;",
+	"\u9418>Shou;",
+	"\u9419>Tou;",
+	"\u941A>A;",
+	"\u9421>Tetsu;",
+	"\u942B>Sen;",
+	"\u9435>Tetsu;",
+	"\u9436>Kan;",
+	"\u9438>Taku;",
+	"\u943A>Tou;",
+	"\u9441>Ban;",
+	"\u9444>Chuu;",
+	"\u9451>Kan;",
+	"\u9452>Kan;",
+	"\u945A>San;",
+	"\u945B>Kou;",
+	"\u945E>Rou;",
+	"\u9460>Shaku;",
+	"\u9462>Ryo;",
+	"\u946A>Ro;",
+	"\u9470>Yaku;",
+	"\u9475>Kan;",
+	"\u9477>Jou;",
+	"\u947C>Ra;",
+	"\u947D>San;",
+	"\u947E>Ran;",
+	"\u947F>Saku;",
+	"\u9481>Kaku;",
+	"\u9577>Chou;",
+	"\u9580>Mon;",
+	"\u9582>San;",
+	"\u9583>Sen;",
+	"\u9587>Hei;",
+	"\u9589>Hei;",
+	"\u958B>Kai;",
+	"\u958F>Jun;",
+	"\u9591>Kan;",
+	"\u9593>Kan;",
+	"\u9594>Bin;",
+	"\u9598>Kou;",
+	"\u9599>Tou;",
+	"\u95A2>Kan;",
+	"\u95A3>Kaku;",
+	"\u95A4>Kou;",
+	"\u95A5>Batsu;",
+	"\u95A7>Kou;",
+	"\u95A8>Kei;",
+	"\u95AD>Ro;",
+	"\u95B2>Etsu;",
+	"\u95B9>En;",
+	"\u95BB>En;",
+	"\u95BC>A;",
+	"\u95BE>Yoku;",
+	"\u95C3>Geki;",
+	"\u95C7>An;",
+	"\u95CA>Katsu;",
+	"\u95CC>Ran;",
+	"\u95CD>To;",
+	"\u95D4>Kou;",
+	"\u95D5>Ketsu;",
+	"\u95D6>Chin;",
+	"\u95D8>Tou;",
+	"\u95DC>Kan;",
+	"\u95E1>Sen;",
+	"\u95E2>Heki;",
+	"\u95E5>Tatsu;",
+	"\u961C>Fu;",
+	"\u9621>Sen;",
+	"\u9628>Aku;",
+	"\u962A>Han;",
+	"\u962E>Gen;",
+	"\u962F>Shi;",
+	"\u9632>Bou;",
+	"\u963B>So;",
+	"\u963F>A;",
+	"\u9640>Da;",
+	"\u9642>Ha;",
+	"\u9644>Fu;",
+	"\u964B>Rou;",
+	"\u964C>Haku;",
+	"\u964D>Kou;",
+	"\u964F>Ta;",
+	"\u9650>Gen;",
+	"\u965B>Hei;",
+	"\u965C>Kou;",
+	"\u965D>Sen;",
+	"\u965E>Shou;",
+	"\u965F>Choku;",
+	"\u9662>In;",
+	"\u9663>Jin;",
+	"\u9664>Jo;",
+	"\u9665>Kan;",
+	"\u9666>Tou;",
+	"\u966A>Bai;",
+	"\u966C>Suu;",
+	"\u9670>In;",
+	"\u9672>Sui;",
+	"\u9673>Chin;",
+	"\u9675>Ryou;",
+	"\u9676>Tou;",
+	"\u9677>Kan;",
+	"\u9678>Riku;",
+	"\u967A>Ken;",
+	"\u967D>You;",
+	"\u9685>Guu;",
+	"\u9686>Ryuu;",
+	"\u9688>Wai;",
+	"\u968A>Tai;",
+	"\u968B>Ta;",
+	"\u968D>Kou;",
+	"\u968E>Kai;",
+	"\u968F>Zui;",
+	"\u9694>Kaku;",
+	"\u9695>In;",
+	"\u9697>Kai;",
+	"\u9698>Ai;",
+	"\u9699>Geki;",
+	"\u969B>Sai;",
+	"\u969C>Shou;",
+	"\u96A0>In;",
+	"\u96A3>Rin;",
+	"\u96A7>Sui;",
+	"\u96A8>Zui;",
+	"\u96AA>Ken;",
+	"\u96B0>Shitsu;",
+	"\u96B1>In;",
+	"\u96B2>Shitsu;",
+	"\u96B4>Rou;",
+	"\u96B6>Tai;",
+	"\u96B7>Rei;",
+	"\u96B8>Rei;",
+	"\u96B9>Sui;",
+	"\u96BB>Seki;",
+	"\u96BC>Jun;",
+	"\u96C0>Jaku;",
+	"\u96C1>Gan;",
+	"\u96C4>Yuu;",
+	"\u96C5>Ga;",
+	"\u96C6>Shuu;",
+	"\u96C7>Ko;",
+	"\u96C9>Chi;",
+	"\u96CB>Sen;",
+	"\u96CC>Shi;",
+	"\u96CD>You;",
+	"\u96CE>Sho;",
+	"\u96D1>Zatsu;",
+	"\u96D5>Chou;",
+	"\u96D6>Sui;",
+	"\u96D9>Sou;",
+	"\u96DB>Suu;",
+	"\u96DC>Zatsu;",
+	"\u96E2>Ri;",
+	"\u96E3>Nan;",
+	"\u96E8>U;",
+	"\u96EA>Setsu;",
+	"\u96EB>Da;",
+	"\u96F0>Fun;",
+	"\u96F2>Un;",
+	"\u96F6>Rei;",
+	"\u96F7>Rai;",
+	"\u96F9>Haku;",
+	"\u96FB>Den;",
+	"\u9700>Ju;",
+	"\u9704>Shou;",
+	"\u9706>Tei;",
+	"\u9707>Shin;",
+	"\u9708>Hai;",
+	"\u970A>Rei;",
+	"\u970D>Kaku;",
+	"\u970E>Sou;",
+	"\u970F>Hi;",
+	"\u9711>Ten;",
+	"\u9713>Gei;",
+	"\u9716>Rin;",
+	"\u9719>Ei;",
+	"\u971C>Sou;",
+	"\u971E>Ka;",
+	"\u9724>Ryuu;",
+	"\u9727>Mu;",
+	"\u972A>In;",
+	"\u9730>San;",
+	"\u9732>Ro;",
+	"\u9738>Haku;",
+	"\u9739>Heki;",
+	"\u973D>Sei;",
+	"\u973E>Bai;",
+	"\u9742>Reki;",
+	"\u9744>Ai;",
+	"\u9746>Tai;",
+	"\u9748>Rei;",
+	"\u9749>Ai;",
+	"\u9752>Sei;",
+	"\u9756>Sei;",
+	"\u9759>Sei;",
+	"\u975C>Sei;",
+	"\u975E>Hi;",
+	"\u9760>Kou;",
+	"\u9761>Hi;",
+	"\u9762>Men;",
+	"\u9764>Hou;",
+	"\u9766>Ten;",
+	"\u9768>You;",
+	"\u9769>Kaku;",
+	"\u976B>Sai;",
+	"\u976D>Jin;",
+	"\u9771>Jin;",
+	"\u9774>Ka;",
+	"\u9779>Ketsu;",
+	"\u977A>Matsu;",
+	"\u977C>Tan;",
+	"\u9781>Hi;",
+	"\u9784>Hou;",
+	"\u9785>Ou;",
+	"\u978B>Ai;",
+	"\u978D>An;",
+	"\u978F>Kyou;",
+	"\u9798>Sou;",
+	"\u979C>Tou;",
+	"\u97A0>Kiku;",
+	"\u97A3>Juu;",
+	"\u97A6>Shuu;",
+	"\u97A8>Katsu;",
+	"\u97AB>Kiku;",
+	"\u97AD>Hen;",
+	"\u97B3>Tou;",
+	"\u97B4>Fuku;",
+	"\u97C3>Datsu;",
+	"\u97C6>Sen;",
+	"\u97C8>Betsu;",
+	"\u97CB>I;",
+	"\u97D3>Kan;",
+	"\u97DC>Tou;",
+	"\u97ED>Kyuu;",
+	"\u97EE>Kyou;",
+	"\u97F2>Sei;",
+	"\u97F3>On;",
+	"\u97F5>In;",
+	"\u97F6>Shou;",
+	"\u97FB>In;",
+	"\u97FF>Kyou;",
+	"\u9801>Ketsu;",
+	"\u9802>Chou;",
+	"\u9803>Kei;",
+	"\u9805>Kou;",
+	"\u9806>Jun;",
+	"\u9808>Shu;",
+	"\u980C>Shou;",
+	"\u980F>Kou;",
+	"\u9810>Yo;",
+	"\u9811>Gan;",
+	"\u9812>Han;",
+	"\u9813>Ton;",
+	"\u9817>Ha;",
+	"\u9818>Ryou;",
+	"\u981A>Kei;",
+	"\u9821>Kitsu;",
+	"\u9824>I;",
+	"\u982C>Kyou;",
+	"\u982D>Tou;",
+	"\u9834>Ei;",
+	"\u9837>Kan;",
+	"\u9838>Kei;",
+	"\u983B>Hin;",
+	"\u983C>Rai;",
+	"\u983D>Tai;",
+	"\u9846>Ka;",
+	"\u984B>Sai;",
+	"\u984C>Dai;",
+	"\u984D>Gaku;",
+	"\u984E>Gaku;",
+	"\u984F>Gan;",
+	"\u9854>Gan;",
+	"\u9855>Ken;",
+	"\u9858>Gan;",
+	"\u985B>Ten;",
+	"\u985E>Rui;",
+	"\u9867>Ko;",
+	"\u986B>Sen;",
+	"\u986F>Ken;",
+	"\u9870>Hin;",
+	"\u9871>Ro;",
+	"\u9873>Shou;",
+	"\u9874>Kan;",
+	"\u98A8>Fuu;",
+	"\u98AF>Satsu;",
+	"\u98B1>Tai;",
+	"\u98B6>Ku;",
+	"\u98C3>Hyou;",
+	"\u98C4>Hyou;",
+	"\u98C6>Hyou;",
+	"\u98DB>Hi;",
+	"\u98DC>Hon;",
+	"\u98DF>Shoku;",
+	"\u98E2>Ki;",
+	"\u98E9>Ton;",
+	"\u98EB>Yo;",
+	"\u98ED>Choku;",
+	"\u98EE>In;",
+	"\u98EF>Han;",
+	"\u98F2>In;",
+	"\u98F4>I;",
+	"\u98FC>Shi;",
+	"\u98FD>Hou;",
+	"\u98FE>Shoku;",
+	"\u9903>Kou;",
+	"\u9905>Hei;",
+	"\u9909>Shou;",
+	"\u990A>You;",
+	"\u990C>Ji;",
+	"\u9910>San;",
+	"\u9912>Dai;",
+	"\u9913>Ga;",
+	"\u9914>Ho;",
+	"\u9918>Yo;",
+	"\u991D>Shoku;",
+	"\u991E>Sen;",
+	"\u9920>Hei;",
+	"\u9921>Kan;",
+	"\u9924>Tan;",
+	"\u9928>Kan;",
+	"\u992C>Ko;",
+	"\u992E>Tetsu;",
+	"\u993D>Ki;",
+	"\u993E>Ryuu;",
+	"\u9942>Un;",
+	"\u9945>Man;",
+	"\u9949>Kin;",
+	"\u994B>Ki;",
+	"\u994C>Sen;",
+	"\u9950>I;",
+	"\u9951>Ki;",
+	"\u9952>Jou;",
+	"\u9955>Tou;",
+	"\u9957>Kyou;",
+	"\u9996>Shu;",
+	"\u9997>Ki;",
+	"\u9998>Kaku;",
+	"\u9999>Kou;",
+	"\u99A5>Fuku;",
+	"\u99A8>Kei;",
+	"\u99AC>Ba;",
+	"\u99AD>Gyo;",
+	"\u99AE>Hyou;",
+	"\u99B3>Chi;",
+	"\u99B4>Shun;",
+	"\u99BC>Bun;",
+	"\u99C1>Baku;",
+	"\u99C4>Ta;",
+	"\u99C5>Eki;",
+	"\u99C6>Ku;",
+	"\u99C8>Ku;",
+	"\u99D0>Chuu;",
+	"\u99D1>Do;",
+	"\u99D2>Ku;",
+	"\u99D5>Ga;",
+	"\u99D8>Tai;",
+	"\u99DB>Shi;",
+	"\u99DD>Ta;",
+	"\u99DF>Shi;",
+	"\u99E2>Hen;",
+	"\u99ED>Kai;",
+	"\u99EE>Haku;",
+	"\u99F1>Raku;",
+	"\u99F8>Shin;",
+	"\u99FB>Kan;",
+	"\u99FF>Shun;",
+	"\u9A01>Tei;",
+	"\u9A05>Sui;",
+	"\u9A0E>Ki;",
+	"\u9A0F>Ki;",
+	"\u9A12>Sou;",
+	"\u9A13>Ken;",
+	"\u9A19>Hen;",
+	"\u9A28>Tan;",
+	"\u9A2B>Ken;",
+	"\u9A30>Tou;",
+	"\u9A37>Sou;",
+	"\u9A3E>Ra;",
+	"\u9A40>Baku;",
+	"\u9A42>San;",
+	"\u9A43>Hyou;",
+	"\u9A45>Ku;",
+	"\u9A4D>Gyou;",
+	"\u9A55>Kyou;",
+	"\u9A57>Ken;",
+	"\u9A5A>Kyou;",
+	"\u9A5B>Eki;",
+	"\u9A5F>Shuu;",
+	"\u9A62>Ryo;",
+	"\u9A64>Jou;",
+	"\u9A65>Ki;",
+	"\u9A69>Kan;",
+	"\u9A6A>Ri;",
+	"\u9A6B>Hyuu;",
+	"\u9AA8>Kotsu;",
+	"\u9AAD>Kan;",
+	"\u9AB0>Tou;",
+	"\u9AB8>Kai;",
+	"\u9ABC>Kaku;",
+	"\u9AC0>Hi;",
+	"\u9AC4>Zui;",
+	"\u9ACF>Rou;",
+	"\u9AD1>Toku;",
+	"\u9AD3>Zui;",
+	"\u9AD4>Tei;",
+	"\u9AD8>Kou;",
+	"\u9ADE>Sou;",
+	"\u9ADF>Hyou;",
+	"\u9AE2>Tei;",
+	"\u9AE3>Hou;",
+	"\u9AE6>Bou;",
+	"\u9AEA>Hatsu;",
+	"\u9AEB>Chou;",
+	"\u9AED>Shi;",
+	"\u9AEE>Hatsu;",
+	"\u9AEF>Zen;",
+	"\u9AF1>Hou;",
+	"\u9AF4>Futsu;",
+	"\u9AF7>Kyoku;",
+	"\u9AFB>Kei;",
+	"\u9B06>Shou;",
+	"\u9B18>Ban;",
+	"\u9B1A>Shu;",
+	"\u9B1F>Kan;",
+	"\u9B22>Hin;",
+	"\u9B23>Ryou;",
+	"\u9B25>Tou;",
+	"\u9B27>Tou;",
+	"\u9B28>Kou;",
+	"\u9B29>Geki;",
+	"\u9B2A>Tou;",
+	"\u9B2E>Kyuu;",
+	"\u9B2F>Chou;",
+	"\u9B31>Utsu;",
+	"\u9B32>Reki;",
+	"\u9B3B>Shuku;",
+	"\u9B3C>Ki;",
+	"\u9B41>Kai;",
+	"\u9B42>Kon;",
+	"\u9B43>Batsu;",
+	"\u9B44>Haku;",
+	"\u9B45>Mi;",
+	"\u9B4D>Bou;",
+	"\u9B4E>Ryou;",
+	"\u9B4F>Gi;",
+	"\u9B51>Chi;",
+	"\u9B54>Ma;",
+	"\u9B58>En;",
+	"\u9B5A>Gyo;",
+	"\u9B6F>Ro;",
+	"\u9B74>Hou;",
+	"\u9B83>Hyou;",
+	"\u9B8E>Nen;",
+	"\u9B91>Hou;",
+	"\u9B92>Fu;",
+	"\u9B93>Sa;",
+	"\u9B9F>An;",
+	"\u9BA0>Gai;",
+	"\u9BA8>Shi;",
+	"\u9BAA>I;",
+	"\u9BAB>Kou;",
+	"\u9BAD>Kei;",
+	"\u9BAE>Sen;",
+	"\u9BB9>Sou;",
+	"\u9BC0>Kon;",
+	"\u9BC6>Ho;",
+	"\u9BC9>Ri;",
+	"\u9BCA>Sa;",
+	"\u9BD4>Shi;",
+	"\u9BD6>Sei;",
+	"\u9BDB>Chou;",
+	"\u9BE1>Hi;",
+	"\u9BE2>Gei;",
+	"\u9BE3>Eki;",
+	"\u9BE4>Kon;",
+	"\u9BE8>Gei;",
+	"\u9BF0>Nen;",
+	"\u9BF5>Sou;",
+	"\u9C04>I;",
+	"\u9C06>Shun;",
+	"\u9C08>Chou;",
+	"\u9C09>Kou;",
+	"\u9C0A>Ren;",
+	"\u9C0C>Shuu;",
+	"\u9C0D>Shuu;",
+	"\u9C10>Gaku;",
+	"\u9C12>Fuku;",
+	"\u9C13>Sai;",
+	"\u9C14>Kan;",
+	"\u9C15>Ka;",
+	"\u9C1B>On;",
+	"\u9C21>Ryuu;",
+	"\u9C24>Shi;",
+	"\u9C25>Kan;",
+	"\u9C2D>Ki;",
+	"\u9C2E>On;",
+	"\u9C32>Gou;",
+	"\u9C39>Ken;",
+	"\u9C3A>Sou;",
+	"\u9C3B>Ban;",
+	"\u9C3E>Hyou;",
+	"\u9C46>Shou;",
+	"\u9C47>Kou;",
+	"\u9C48>Setsu;",
+	"\u9C52>Son;",
+	"\u9C57>Rin;",
+	"\u9C60>Kai;",
+	"\u9C67>Rei;",
+	"\u9C76>Shou;",
+	"\u9C78>Ro;",
+	"\u9CE5>Chou;",
+	"\u9CE7>Fu;",
+	"\u9CE9>Kyuu;",
+	"\u9CEB>Gan;",
+	"\u9CEC>Fu;",
+	"\u9CF3>Hou;",
+	"\u9CF4>Mei;",
+	"\u9CF6>En;",
+	"\u9D03>Ketsu;",
+	"\u9D06>Chin;",
+	"\u9D07>Hou;",
+	"\u9D08>Gan;",
+	"\u9D09>A;",
+	"\u9D0E>Ou;",
+	"\u9D12>Rei;",
+	"\u9D15>Ta;",
+	"\u9D1B>En;",
+	"\u9D1F>Shi;",
+	"\u9D23>Ko;",
+	"\u9D26>You;",
+	"\u9D28>Ou;",
+	"\u9D2A>Itsu;",
+	"\u9D2C>Ou;",
+	"\u9D3B>Kou;",
+	"\u9D3E>Bou;",
+	"\u9D3F>Kou;",
+	"\u9D41>Kou;",
+	"\u9D44>Shi;",
+	"\u9D50>Bu;",
+	"\u9D51>Ken;",
+	"\u9D59>Geki;",
+	"\u9D5C>Tei;",
+	"\u9D5D>Ga;",
+	"\u9D5E>Ga;",
+	"\u9D60>Koku;",
+	"\u9D61>Bu;",
+	"\u9D6C>Hou;",
+	"\u9D6F>Hi;",
+	"\u9D72>Jaku;",
+	"\u9D7A>Ya;",
+	"\u9D87>Tou;",
+	"\u9D89>Shun;",
+	"\u9D8F>Kei;",
+	"\u9D9A>Gaku;",
+	"\u9DA4>Kon;",
+	"\u9DA9>Boku;",
+	"\u9DAF>Ou;",
+	"\u9DB2>Ou;",
+	"\u9DB4>Kaku;",
+	"\u9DB8>Jaku;",
+	"\u9DBA>Seki;",
+	"\u9DBB>Kotsu;",
+	"\u9DC1>Geki;",
+	"\u9DC2>You;",
+	"\u9DC4>Kei;",
+	"\u9DC6>Ten;",
+	"\u9DCF>Ten;",
+	"\u9DD3>Sha;",
+	"\u9DD9>Shi;",
+	"\u9DE6>Shou;",
+	"\u9DED>Ban;",
+	"\u9DEF>Ryou;",
+	"\u9DF2>Shuu;",
+	"\u9DF8>Itsu;",
+	"\u9DF9>You;",
+	"\u9DFA>Ro;",
+	"\u9DFD>Kaku;",
+	"\u9E1A>Ou;",
+	"\u9E1B>Kan;",
+	"\u9E1E>Ran;",
+	"\u9E75>Ro;",
+	"\u9E78>Ken;",
+	"\u9E79>Kan;",
+	"\u9E7D>En;",
+	"\u9E7F>Roku;",
+	"\u9E81>So;",
+	"\u9E88>Shu;",
+	"\u9E8B>Bi;",
+	"\u9E8C>Gu;",
+	"\u9E91>Gei;",
+	"\u9E92>Ki;",
+	"\u9E93>Roku;",
+	"\u9E95>Kin;",
+	"\u9E97>Rei;",
+	"\u9E9D>Sha;",
+	"\u9E9F>Rin;",
+	"\u9EA5>Baku;",
+	"\u9EA6>Baku;",
+	"\u9EA9>Fu;",
+	"\u9EAA>Men;",
+	"\u9EAD>Hou;",
+	"\u9EB8>Fu;",
+	"\u9EB9>Kiku;",
+	"\u9EBA>Men;",
+	"\u9EBB>Ma;",
+	"\u9EBC>Ma;",
+	"\u9EBE>Ki;",
+	"\u9EBF>Ro;",
+	"\u9EC4>Kou;",
+	"\u9ECC>Kou;",
+	"\u9ECD>Sho;",
+	"\u9ECE>Rei;",
+	"\u9ECF>Nen;",
+	"\u9ED0>Chi;",
+	"\u9ED2>Koku;",
+	"\u9ED4>Ken;",
+	"\u9ED8>Moku;",
+	"\u9ED9>Moku;",
+	"\u9EDB>Tai;",
+	"\u9EDC>Chutsu;",
+	"\u9EDD>Yuu;",
+	"\u9EDE>Ten;",
+	"\u9EE0>Katsu;",
+	"\u9EE5>Gei;",
+	"\u9EE8>Tou;",
+	"\u9EEF>An;",
+	"\u9EF4>Bai;",
+	"\u9EF6>En;",
+	"\u9EF7>Toku;",
+	"\u9EF9>Chi;",
+	"\u9EFB>Futsu;",
+	"\u9EFC>Ho;",
+	"\u9EFD>Bou;",
+	"\u9F07>Gou;",
+	"\u9F08>Betsu;",
+	"\u9F0E>Tei;",
+	"\u9F13>Ko;",
+	"\u9F15>Tou;",
+	"\u9F20>So;",
+	"\u9F21>Sho;",
+	"\u9F2C>Yuu;",
+	"\u9F3B>Bi;",
+	"\u9F3E>Kan;",
+	"\u9F4A>Sei;",
+	"\u9F4B>Sai;",
+	"\u9F4E>Sei;",
+	"\u9F4F>Sei;",
+	"\u9F52>Shi;",
+	"\u9F54>Shin;",
+	"\u9F5F>So;",
+	"\u9F60>Chou;",
+	"\u9F61>Rei;",
+	"\u9F62>Rei;",
+	"\u9F63>Shutsu;",
+	"\u9F66>Gin;",
+	"\u9F67>Ketsu;",
+	"\u9F6A>Soku;",
+	"\u9F6C>Gyo;",
+	"\u9F72>Ku;",
+	"\u9F76>Gaku;",
+	"\u9F77>Aku;",
+	"\u9F8D>Ryuu;",
+	"\u9F95>Gan;",
+	"\u9F9C>Ki;",
+	"\u9F9D>Shuu;",
+	"\u9FA0>Yaku;",
+//*/
+}}};}}
diff --git a/src/com/ibm/text/resources/TransliterationRule_KeyboardEscape_Latin1.java b/src/com/ibm/text/resources/TransliterationRule_KeyboardEscape_Latin1.java
new file mode 100755
index 0000000..25988cf
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_KeyboardEscape_Latin1.java
@@ -0,0 +1,141 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_KeyboardEscape_Latin1.java,v $ 
+ * $Date: 2000/03/10 04:07:30 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_KeyboardEscape_Latin1 extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule",
+                "esc='';"
+                + "grave=`;"
+                + "acute='';"
+                + "hat=^;"
+                + "tilde=~;"
+                + "umlaut=:;"
+                + "ring=.;"
+                + "cedilla=,;"
+                + "slash=/;"
+                + "super=^;"
+
+                // Make keyboard entry of {esc} possible
+                // and of backslash
+                + "'\\'{esc}>{esc};"
+                + "'\\\\'>'\\';"
+              
+                // Long keys
+                + "cur{esc}>\u00A4;"
+                + "sec{esc}>\u00A7;"
+                + "not{esc}>\u00AC;"
+                + "mul{esc}>\u00D7;"
+                + "div{esc}>\u00F7;"
+
+                + "\\ {esc}>\u00A0;" // non-breaking space
+                + "!{esc}>\u00A1;" // inverted exclamation
+                + "c/{esc}>\u00A2;" // cent sign
+                + "lb{esc}>\u00A3;" // pound sign
+                + "'|'{esc}>\u00A6;" // broken vertical bar
+                + ":{esc}>\u00A8;" // umlaut
+                + "{super}a{esc}>\u00AA;" // feminine ordinal
+                + "'<<'{esc}>\u00AB;"
+                + "r{esc}>\u00AE;"
+                + "--{esc}>\u00AF;"
+                + "-{esc}>\u00AD;"
+                + "+-{esc}>\u00B1;"
+                + "{super}2{esc}>\u00B2;"
+                + "{super}3{esc}>\u00B3;"
+                + "{acute}{esc}>\u00B4;"
+                + "m{esc}>\u00B5;"
+                + "para{esc}>\u00B6;"
+                + "dot{esc}>\u00B7;"
+                + "{cedilla}{esc}>\u00B8;"
+                + "{super}1{esc}>\u00B9;"
+                + "{super}o{esc}>\u00BA;" // masculine ordinal
+                + "'>>'{esc}>\u00BB;"
+                + "1/4{esc}>\u00BC;"
+                + "1/2{esc}>\u00BD;"
+                + "3/4{esc}>\u00BE;"
+                + "?{esc}>\u00BF;"
+                + "A{grave}{esc}>\u00C0;"
+                + "A{acute}{esc}>\u00C1;"
+                + "A{hat}{esc}>\u00C2;"
+                + "A{tilde}{esc}>\u00C3;"
+                + "A{umlaut}{esc}>\u00C4;"
+                + "A{ring}{esc}>\u00C5;"
+                + "AE{esc}>\u00C6;"
+                + "C{cedilla}{esc}>\u00C7;"
+                + "E{grave}{esc}>\u00C8;"
+                + "E{acute}{esc}>\u00C9;"
+                + "E{hat}{esc}>\u00CA;"
+                + "E{umlaut}{esc}>\u00CB;"
+                + "I{grave}{esc}>\u00CC;"
+                + "I{acute}{esc}>\u00CD;"
+                + "I{hat}{esc}>\u00CE;"
+                + "I{umlaut}{esc}>\u00CF;"
+                + "D-{esc}>\u00D0;"
+                + "N{tilde}{esc}>\u00D1;"
+                + "O{grave}{esc}>\u00D2;"
+                + "O{acute}{esc}>\u00D3;"
+                + "O{hat}{esc}>\u00D4;"
+                + "O{tilde}{esc}>\u00D5;"
+                + "O{umlaut}{esc}>\u00D6;"
+                + "O{slash}{esc}>\u00D8;"
+                + "U{grave}{esc}>\u00D9;"
+                + "U{acute}{esc}>\u00DA;"
+                + "U{hat}{esc}>\u00DB;"
+                + "U{umlaut}{esc}>\u00DC;"
+                + "Y{acute}{esc}>\u00DD;"
+                + "TH{esc}>\u00DE;"
+                + "ss{esc}>\u00DF;"
+                + "a{grave}{esc}>\u00E0;"
+                + "a{acute}{esc}>\u00E1;"
+                + "a{hat}{esc}>\u00E2;"
+                + "a{tilde}{esc}>\u00E3;"
+                + "a{umlaut}{esc}>\u00E4;"
+                + "a{ring}{esc}>\u00E5;"
+                + "ae{esc}>\u00E6;"
+                + "c{cedilla}{esc}>\u00E7;"
+                + "c{esc}>\u00A9;" // copyright - after c{cedilla}
+                + "e{grave}{esc}>\u00E8;"
+                + "e{acute}{esc}>\u00E9;"
+                + "e{hat}{esc}>\u00EA;"
+                + "e{umlaut}{esc}>\u00EB;"
+                + "i{grave}{esc}>\u00EC;"
+                + "i{acute}{esc}>\u00ED;"
+                + "i{hat}{esc}>\u00EE;"
+                + "i{umlaut}{esc}>\u00EF;"
+                + "d-{esc}>\u00F0;"
+                + "n{tilde}{esc}>\u00F1;"
+                + "o{grave}{esc}>\u00F2;"
+                + "o{acute}{esc}>\u00F3;"
+                + "o{hat}{esc}>\u00F4;"
+                + "o{tilde}{esc}>\u00F5;"
+                + "o{umlaut}{esc}>\u00F6;"
+                + "o{slash}{esc}>\u00F8;"
+                + "o{esc}>\u00B0;"
+                + "u{grave}{esc}>\u00F9;"
+                + "u{acute}{esc}>\u00FA;"
+                + "u{hat}{esc}>\u00FB;"
+                + "u{umlaut}{esc}>\u00FC;"
+                + "y{acute}{esc}>\u00FD;"
+                + "y{esc}>\u00A5;" // yen sign
+                + "th{esc}>\u00FE;"
+              //masked: + "ss{esc}>\u00FF;"
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Latin_Arabic.java b/src/com/ibm/text/resources/TransliterationRule_Latin_Arabic.java
new file mode 100755
index 0000000..bba3619
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Latin_Arabic.java
@@ -0,0 +1,253 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Latin_Arabic.java,v $ 
+ * $Date: 2000/03/10 04:07:30 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Latin_Arabic extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule",
+                // To Do: finish adding shadda, add sokoon
+
+                "alefmadda=\u0622;"+
+                "alefuhamza=\u0623;"+
+                "wauuhamza=\u0624;"+
+                "alefhamza=\u0625;"+
+                "yehuhamza=\u0626;"+
+                "alef=\u0627;"+
+                "beh=\u0628;"+
+                "tehmarbuta=\u0629;"+
+                "teh=\u062A;"+
+                "theh=\u062B;"+
+                "geem=\u062C;"+
+                "hah=\u062D;"+
+                "kha=\u062E;"+
+                "dal=\u062F;"+
+                "dhal=\u0630;"+
+                "reh=\u0631;"+
+                "zain=\u0632;"+
+                "seen=\u0633;"+
+                "sheen=\u0634;"+
+                "sad=\u0635;"+
+                "dad=\u0636;"+
+                "tah=\u0637;"+
+                "zah=\u0638;"+
+                "ein=\u0639;"+
+                "ghein=\u063A;"+
+                "feh=\u0641;"+
+                "qaaf=\u0642;"+
+                "kaf=\u0643;"+
+                "lam=\u0644;"+
+                "meem=\u0645;"+
+                "noon=\u0646;"+
+                "heh=\u0647;"+
+                "wau=\u0648;"+
+                "yehmaqsura=\u0649;"+
+                "yeh=\u064A;"+
+                "peh=\u06A4;"+
+
+                "hamza=\u0621;"+
+                "fathatein=\u064B;"+
+                "dammatein=\u064C;"+
+                "kasratein=\u064D;"+
+                "fatha=\u064E;"+
+                "damma=\u064F;"+
+                "kasra=\u0650;"+
+                "shadda=\u0651;"+
+                "sokoon=\u0652;"+
+
+                // convert English to Arabic
+                "Arabic>"+
+                "\u062a\u062a\u0645\u062a\u0639' '"+
+                "\u0627\u0644\u0644\u063a\u0629' '"+
+                "\u0627\u0644\u0639\u0631\u0628\u0628\u064a\u0629' '"+
+                "\u0628\u0628\u0646\u0638\u0645' '"+
+                "\u0643\u062a\u0627\u0628\u0628\u064a\u0629' '"+
+                "\u062c\u0645\u064a\u0644\u0629;"+
+
+                "ai>{alefmadda};"+
+                "ae>{alefuhamza};"+
+                "ao>{alefhamza};"+
+                "aa>{alef};"+
+                "an>{fathatein};"+
+                "a>{fatha};"+
+                "b>{beh};"+
+                "c>{kaf};"+
+                "{dhal})dh>{shadda};"+
+                "dh>{dhal};"+
+                "{dad})dd>{shadda};"+
+                "dd>{dad};"+
+                "{dal})d>{shadda};"+
+                "d>{dal};"+
+                "e>{ein};"+
+                "f>{feh};"+
+                "gh>{ghein};"+
+                "g>{geem};"+
+                "hh>{hah};"+
+                "h>{heh};"+
+                "ii>{kasratein};"+
+                "i>{kasra};"+
+                "j>{geem};"+
+                "kh>{kha};"+
+                "k>{kaf};"+
+                "l>{lam};"+
+                "m>{meem};"+
+                "n>{noon};"+
+                "o>{hamza};"+
+                "p>{peh};"+
+                "q>{qaaf};"+
+                "r>{reh};"+
+                "sh>{sheen};"+
+                "ss>{sad};"+
+                "s>{seen};"+
+                "th>{theh};"+
+                "tm>{tehmarbuta};"+
+                "tt>{tah};"+
+                "t>{teh};"+
+                "uu>{dammatein};"+
+                "u>{damma};"+
+                "v>{beh};"+
+                "we>{wauuhamza};"+
+                "w>{wau};"+
+                "x>{kaf}{shadda}{seen};"+
+                "ye>{yehuhamza};"+
+                "ym>{yehmaqsura};"+
+                "y>{yeh};"+
+                "zz>{zah};"+
+                "z>{zain};"+
+
+                "0>\u0660;"+ // Arabic digit 0
+                "1>\u0661;"+ // Arabic digit 1
+                "2>\u0662;"+ // Arabic digit 2
+                "3>\u0663;"+ // Arabic digit 3
+                "4>\u0664;"+ // Arabic digit 4
+                "5>\u0665;"+ // Arabic digit 5
+                "6>\u0666;"+ // Arabic digit 6
+                "7>\u0667;"+ // Arabic digit 7
+                "8>\u0668;"+ // Arabic digit 8
+                "9>\u0669;"+ // Arabic digit 9
+                "%>\u066A;"+ // Arabic %
+                ".>\u066B;"+ // Arabic decimal separator
+                ",>\u066C;"+ // Arabic thousands separator
+                "*>\u066D;"+ // Arabic five-pointed star
+
+                "`0>0;"+ // Escaped forms of the above
+                "`1>1;"+
+                "`2>2;"+
+                "`3>3;"+
+                "`4>4;"+
+                "`5>5;"+
+                "`6>6;"+
+                "`7>7;"+
+                "`8>8;"+
+                "`9>9;"+
+                "`%>%;"+
+                "`.>.;"+
+                "`,>,;"+
+                "`*>*;"+
+                "``>`;"+
+
+                "''>;"+
+
+                // now Arabic to English
+
+                "''ai<a){alefmadda};"+
+                "ai<{alefmadda};"+
+                "''ae<a){alefuhamza};"+
+                "ae<{alefuhamza};"+
+                "''ao<a){alefhamza};"+
+                "ao<{alefhamza};"+
+                "''aa<a){alef};"+
+                "aa<{alef};"+
+                "''an<a){fathatein};"+
+                "an<{fathatein};"+
+                "''a<a){fatha};"+
+                "a<{fatha};"+
+                "b<{beh};"+
+                "''dh<d){dhal};"+
+                "dh<{dhal};"+
+                "''dd<d){dad};"+
+                "dd<{dad};"+
+                "''d<d){dal};"+
+                "d<{dal};"+
+                "''e<a){ein};"+
+                "''e<w){ein};"+
+                "''e<y){ein};"+
+                "e<{ein};"+
+                "f<{feh};"+
+                "gh<{ghein};"+
+                "''hh<d){hah};"+
+                "''hh<t){hah};"+
+                "''hh<k){hah};"+
+                "''hh<s){hah};"+
+                "hh<{hah};"+
+                "''h<d){heh};"+
+                "''h<t){heh};"+
+                "''h<k){heh};"+
+                "''h<s){heh};"+
+                "h<{heh};"+
+                "''ii<i){kasratein};"+
+                "ii<{kasratein};"+
+                "''i<i){kasra};"+
+                "i<{kasra};"+
+                "j<{geem};"+
+                "kh<{kha};"+
+                "x<{kaf}{shadda}{seen};"+
+                "k<{kaf};"+
+                "l<{lam};"+
+                "''m<y){meem};"+
+                "''m<t){meem};"+
+                "m<{meem};"+
+                "n<{noon};"+
+                "''o<a){hamza};"+
+                "o<{hamza};"+
+                "p<{peh};"+
+                "q<{qaaf};"+
+                "r<{reh};"+
+                "sh<{sheen};"+
+                "''ss<s){sad};"+
+                "ss<{sad};"+
+                "''s<s){seen};"+
+                "s<{seen};"+
+                "th<{theh};"+
+                "tm<{tehmarbuta};"+
+                "''tt<t){tah};"+
+                "tt<{tah};"+
+                "''t<t){teh};"+
+                "t<{teh};"+
+                "''uu<u){dammatein};"+
+                "uu<{dammatein};"+
+                "''u<u){damma};"+
+                "u<{damma};"+
+                "we<{wauuhamza};"+
+                "w<{wau};"+
+                "ye<{yehuhamza};"+
+                "ym<{yehmaqsura};"+
+                "''y<y){yeh};"+
+                "y<{yeh};"+
+                "''zz<z){zah};"+
+                "zz<{zah};"+
+                "''z<z){zain};"+
+                "z<{zain};"+
+
+                "dh<dh){shadda};"+
+                "dd<dd){shadda};"+
+                "''d<d){shadda};"
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Latin_Cyrillic.java b/src/com/ibm/text/resources/TransliterationRule_Latin_Cyrillic.java
new file mode 100755
index 0000000..c5898cf
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Latin_Cyrillic.java
@@ -0,0 +1,322 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Latin_Cyrillic.java,v $ 
+ * $Date: 2000/03/10 04:07:30 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Latin_Cyrillic extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule", "" 
+            
+                /* This class is designed to be a general Latin-Cyrillic
+                   transliteration. The standard Russian transliterations
+                   are generally used for the letters from Russian,
+                   with additional Cyrillic characters given consistent
+                   mappings.
+                */
+            
+                + "S-hacek=\u0160;"
+                + "s-hacek=\u0161;"
+
+                + "YO=\u0401;"
+                + "J=\u0408;"
+                + "A=\u0410;"
+                + "B=\u0411;"
+                + "V=\u0412;"
+                + "G=\u0413;"
+                + "D=\u0414;"
+                + "YE=\u0415;"
+                + "ZH=\u0416;"
+                + "Z=\u0417;"
+                + "YI=\u0418;"
+                + "Y=\u0419;"
+                + "K=\u041A;"
+                + "L=\u041B;"
+                + "M=\u041C;"
+                + "N=\u041D;"
+                + "O=\u041E;"
+                + "P=\u041F;"
+                + "R=\u0420;"
+                + "S=\u0421;"
+                + "T=\u0422;"
+                + "U=\u0423;"
+                + "F=\u0424;"
+                + "KH=\u0425;"
+                + "TS=\u0426;"
+                + "CH=\u0427;"
+                + "SH=\u0428;"
+                + "SHCH=\u0429;"
+                + "HARD=\u042A;"
+                + "I=\u042B;"
+                + "SOFT=\u042C;"
+                + "E=\u042D;"
+                + "YU=\u042E;"
+                + "YA=\u042F;"
+                
+                // Lowercase
+
+                + "a=\u0430;"
+                + "b=\u0431;"
+                + "v=\u0432;"
+                + "g=\u0433;"
+                + "d=\u0434;"
+                + "ye=\u0435;"
+                + "zh=\u0436;"
+                + "z=\u0437;"
+                + "yi=\u0438;"
+                + "y=\u0439;"
+                + "k=\u043a;"
+                + "l=\u043b;"
+                + "m=\u043c;"
+                + "n=\u043d;"
+                + "o=\u043e;"
+                + "p=\u043f;"
+                + "r=\u0440;"
+                + "s=\u0441;"
+                + "t=\u0442;"
+                + "u=\u0443;"
+                + "f=\u0444;"
+                + "kh=\u0445;"
+                + "ts=\u0446;"
+                + "ch=\u0447;"
+                + "sh=\u0448;"
+                + "shch=\u0449;"
+                + "hard=\u044a;"
+                + "i=\u044b;"
+                + "soft=\u044c;"
+                + "e=\u044d;"
+                + "yu=\u044e;"
+                + "ya=\u044f;"
+
+                + "yo=\u0451;"
+                + "j=\u0458;"
+                
+                // variables
+                // some are duplicated so lowercasing works
+                
+                + "csoft=[eiyEIY];"
+                + "CSOFT=[eiyEIY];"
+                
+                + "BECOMES_H=[{HARD}{hard}];"
+                + "becomes_h=[{HARD}{hard}];"
+                
+                + "BECOMES_S=[{S}{s}];"
+                + "becomes_s=[{S}{s}];"
+                
+                + "BECOMES_C=[{CH}{ch}];"
+                + "becomes_c=[{CH}{ch}];"
+ 
+                + "BECOMES_VOWEL=[{A}{E}{I}{O}{U}{a}{e}{i}{o}{u}];"
+                + "becomes_vowel=[{A}{E}{I}{O}{U}{a}{e}{i}{o}{u}];"
+                
+                + "letter=[[:Lu:][:Ll:]];"
+                + "lower=[[:Ll:]];"     
+                
+                /*
+                    Modified to combine display transliterator and typing transliterator.
+                    The display mapping uses accents for the "soft" vowels.
+                    It does not, although it could, use characters like \u0161 instead of digraphs
+                    like sh.
+                */
+                
+                // #############################################
+                // Special titlecase forms, not duplicated
+                // #############################################
+                
+                + "Ch>{CH};" + "Ch<{CH}({lower};"
+                + "Kh>{KH};" + "Kh<{KH}({lower};"
+                + "Shch>{SHCH};" + "Shch<{SHCH}({lower};"
+                + "Sh>{SH};" + "Sh<{SH}({lower};"
+                + "Ts>{TS};"  + "Ts<{TS}({lower};"
+                + "Zh>{ZH};" + "Zh<{ZH}({lower};"
+                + "Yi>{YI};"  //+ "Yi<{YI}({lower};"
+                + "Ye>{YE};"  //+ "Ye<{YE}({lower};"
+                + "Yo>{YO};" //+ "Yo<{YO}({lower};"
+                + "Yu>{YU};" //+ "Yu<{YU}({lower};"
+                + "Ya>{YA};" //+ "Ya<{YA}({lower};"
+                
+                // #############################################
+                // Rules to Duplicate
+                // To get the lowercase versions, copy these and lowercase
+                // #############################################
+
+                // variant spellings in English
+                
+                + "SHTCH>{SHCH};"
+                + "TCH>{CH};"
+                + "TH>{Z};"
+                + "Q>{K};"
+                + "WH>{V};"
+                + "W>{V};"
+                + "X>{K}{S};"      //+ "X<{K}{S};"
+                
+                // Separate letters that would otherwise join
+                
+                + "SH''<{SH}({BECOMES_C};"
+                + "T''<{T}({BECOMES_S};"
+                
+                + "K''<{K}({BECOMES_H};"
+                + "S''<{S}({BECOMES_H};"
+                + "T''<{T}({BECOMES_H};"
+                + "Z''<{Z}({BECOMES_H};"
+                
+                + "Y''<{Y}({BECOMES_VOWEL};"
+                
+                // Main letters
+
+                + "A<>{A};"
+                + "B<>{B};"
+                + "CH<>{CH};"
+                + "D<>{D};"
+                + "E<>{E};"
+                + "F<>{F};"
+                + "G<>{G};"
+                + "\u00cc<>{YI};"
+                + "I<>{I};"
+                + "KH<>{KH};"
+                + "K<>{K};"
+                + "L<>{L};"
+                + "M<>{M};"
+                + "N<>{N};"
+                + "O<>{O};"
+                + "P<>{P};"
+                + "R<>{R};"
+                + "SHCH<>{SHCH};"
+                + "SH>{SH};"       //+ "SH<{SH};"
+                + "{S-hacek}<>{SH};"
+                + "S<>{S};"
+                + "TS<>{TS};"
+                + "T<>{T};"
+                + "U<>{U};"
+                + "V<>{V};"
+                //\u00cc\u00c0\u00c8\u00d2\u00d9
+                + "YE>{YE};"       //+ "YE<{YE};"
+                + "\u00c8<>{YE};"
+                + "YO>{YO};"       //+ "YO<{YO};"
+                + "\u00d2<>{YO};"
+                + "YU>{YU};"       //+ "YU<{YU};"
+                + "\u00d9<>{YU};"
+                + "YA>{YA};"       //+ "YA<{YA};"
+                + "\u00c0<>{YA};"
+                + "Y<>{Y};"
+                + "ZH<>{ZH};"
+                + "Z<>{Z};"
+
+                + "H<>{HARD};"
+                + "\u0178<>{SOFT};"
+                
+                // Non-russian
+                
+                + "J<>{J};"
+
+                // variant spellings in English
+                
+                + "C({csoft}>{S};"
+                + "C>{K};"
+
+                // #############################################
+                // Duplicated Rules
+                // Copy and lowercase the above rules
+                // #############################################
+                
+                 // variant spellings in english
+                
+                + "shtch>{shch};"
+                + "tch>{ch};"
+                + "th>{z};"
+                + "q>{k};"
+                + "wh>{v};"
+                + "w>{v};"
+                + "x>{k}{s};"      //+ "x<{k}{s};"
+                
+                // separate letters that would otherwise join
+                
+                + "sh''<{sh}({becomes_c};"
+                + "t''<{t}({becomes_s};"
+                
+                + "k''<{k}({becomes_h};"
+                + "s''<{s}({becomes_h};"
+                + "t''<{t}({becomes_h};"
+                + "z''<{z}({becomes_h};"
+                
+                + "y''<{y}({becomes_vowel};"
+                
+                // main letters
+
+                + "a<>{a};"
+                + "b<>{b};"
+                + "ch<>{ch};"
+                + "d<>{d};"
+                + "e<>{e};"
+                + "f<>{f};"
+                + "g<>{g};"
+                + "\u00ec<>{yi};"
+                + "i<>{i};"
+                + "kh<>{kh};"
+                + "k<>{k};"
+                + "l<>{l};"
+                + "m<>{m};"
+                + "n<>{n};"
+                + "o<>{o};"
+                + "p<>{p};"
+                + "r<>{r};"
+                + "shch<>{shch};"
+                + "sh>{sh};"       //+ "sh<{sh};"
+                + "{s-hacek}<>{sh};"
+                + "s<>{s};"
+                + "ts<>{ts};"
+                + "t<>{t};"
+                + "u<>{u};"
+                + "v<>{v};"
+                //\u00ec\u00e0\u00e8\u00f2\u00f9
+                + "ye>{ye};"       //+ "ye<{ye};"
+                + "\u00e8<>{ye};"
+                + "yo>{yo};"       //+ "yo<{yo};"
+                + "\u00f2<>{yo};"
+                + "yu>{yu};"       //+ "yu<{yu};"
+                + "\u00f9<>{yu};"
+                + "ya>{ya};"       //+ "ya<{ya};"
+                + "\u00e0<>{ya};"
+                + "y<>{y};"
+                + "zh<>{zh};"
+                + "z<>{z};"
+
+                + "h<>{hard};"
+                + "\u00ff<>{soft};"
+                
+                // non-russian
+                
+                + "j<>{j};"
+
+                // variant spellings in english
+                
+                + "c({csoft}>{s};"
+                + "c>{k};"
+
+
+               
+                // #############################################
+                // End of Duplicated Rules
+                // #############################################
+                
+                //generally the last rule
+                + "''>;"
+                //the end
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Latin_Devanagari.java b/src/com/ibm/text/resources/TransliterationRule_Latin_Devanagari.java
new file mode 100755
index 0000000..ce2c0d8
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Latin_Devanagari.java
@@ -0,0 +1,421 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Latin_Devanagari.java,v $ 
+ * $Date: 2000/03/10 04:07:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Latin_Devanagari extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule",
+                //#####################################################################
+                //	Keyboard Transliteration Table
+                //#####################################################################
+                // Conversions should be:
+                // 1. complete
+                //  * convert every sequence of Latin letters (a to z plus apostrophe) 
+                //    to a sequence of Native letters
+                //  * convert every sequence of Native letters to Latin letters
+                // 2. reversable
+                //  * any string of Native converted to Latin and back should be the same
+                //  * this is not true for English converted to Native & back, e.g.:
+                //		k -> {kaf} -> k
+                //		c -> {kaf} -> k
+                //#####################################################################
+                // Sequences of Latin letters may convert to a single Native letter.
+                // When this is the case, an apostrophe can be used to indicate separate
+                // letters.$
+                // E.g.	sh -> {shin}
+                //		s'h -> {sin}{heh}
+                // 		ss -> {sad}
+                // 		s's -> {sin}{shadda}
+                //#####################################################################
+                // To Do:
+                //	finish adding shadda, add sokoon, fix uppercase
+                //	make two transliteration tables: one with vowels, one without
+                //#####################################################################
+                // Modifications
+                //	Devanagari Transliterator:  broken up with consonsants/vowels
+                //#####################################################################
+                // Unicode character name definitions
+                //#####################################################################
+
+                //consonants
+                  "candrabindu=\u0901;"
+                + "bindu=\u0902;"
+                + "visarga=\u0903;"
+
+                // w<vowel> represents the stand-alone form
+                + "wa=\u0905;"
+                + "waa=\u0906;"
+                + "wi=\u0907;"
+                + "wii=\u0908;"
+                + "wu=\u0909;"
+                + "wuu=\u090A;"
+                + "wr=\u090B;"
+                + "wl=\u090C;"
+                + "we=\u090F;"
+                + "wai=\u0910;"
+                + "wo=\u0913;"
+                + "wau=\u0914;"
+
+                + "ka=\u0915;"
+                + "kha=\u0916;"
+                + "ga=\u0917;"
+                + "gha=\u0918;"
+                + "nga=\u0919;"
+
+                + "ca=\u091A;"
+                + "cha=\u091B;"
+                + "ja=\u091C;"
+                + "jha=\u091D;"
+                + "nya=\u091E;"
+
+                + "tta=\u091F;"
+                + "ttha=\u0920;"
+                + "dda=\u0921;"
+                + "ddha=\u0922;"
+                + "nna=\u0923;"
+
+                + "ta=\u0924;"
+                + "tha=\u0925;"
+                + "da=\u0926;"
+                + "dha=\u0927;"
+                + "na=\u0928;"
+
+                + "pa=\u092A;"
+                + "pha=\u092B;"
+                + "ba=\u092C;"
+                + "bha=\u092D;"
+                + "ma=\u092E;"
+
+                + "ya=\u092F;"
+                + "ra=\u0930;"
+                + "rra=\u0931;"
+                + "la=\u0933;"
+                + "va=\u0935;"
+
+                + "sha=\u0936;"
+                + "ssa=\u0937;"
+                + "sa=\u0938;"
+                + "ha=\u0939;"
+
+                // <vowel> represents the dependent form
+                + "aa=\u093E;"
+                + "i=\u093F;"
+                + "ii=\u0940;"
+                + "u=\u0941;"
+                + "uu=\u0942;"
+                + "rh=\u0943;"
+                + "lh=\u0944;"
+                + "e=\u0947;"
+                + "ai=\u0948;"
+                + "o=\u094B;"
+                + "au=\u094C;"
+
+                + "virama=\u094D;"
+
+                + "wrr=\u0960;"
+                + "rrh=\u0962;"
+
+                  + "danda=\u0964;"
+                  + "doubleDanda=\u0965;"
+                  + "depVowelAbove=[\u093E-\u0940\u0945-\u094C];"
+                  + "depVowelBelow=[\u0941-\u0944];"
+                  + "endThing=[{danda}{doubleDanda}\u0000-\u08FF\u0980-\uFFFF];"
+
+                + "&=[{virama}{aa}{ai}{au}{ii}{i}{uu}{u}{rrh}{rh}{lh}{e}{o}];"
+                + "%=[bcdfghjklmnpqrstvwxyz];"
+
+                //#####################################################################
+                // convert from Latin letters to Native letters
+                //#####################################################################
+                //Hindi>\u092d\u093e\u0930\u0924--\u0020\u0926\u0947\u0936\u0020\u092c\u0928\u094d\u0927\u0941\u002e
+
+                // special forms with no good conversion
+
+                + "mm>{bindu};"
+                + "x>{visarga};"
+ 
+                // convert to independent forms at start of word or syllable: 
+                // e.g. keai -> {ka}{e}{wai}; k'ai -> {ka}{wai}; (ai) -> ({wai})
+                // Moved up [LIU]
+
+                + "aa>{waa};"
+                + "ai>{wai};"
+                + "au>{wau};"
+                + "ii>{wii};"
+                + "i>{wi};"
+                + "uu>{wuu};"
+                + "u>{wu};"
+                + "rrh>{wrr};"
+                + "rh>{wr};"
+                + "lh>{wl};"
+                + "e>{we};"
+                + "o>{wo};"
+                + "a>{wa};"
+
+                // normal consonants
+
+                + "kh>{kha}|{virama};"
+                + "k>{ka}|{virama};"
+                + "q>{ka}|{virama};"
+                + "gh>{gha}|{virama};"
+                + "g>{ga}|{virama};"
+                + "ng>{nga}|{virama};"
+                + "ch>{cha}|{virama};"
+                + "c>{ca}|{virama};"
+                + "jh>{jha}|{virama};"
+                + "j>{ja}|{virama};"
+                + "ny>{nya}|{virama};"
+                + "tth>{ttha}|{virama};"
+                + "tt>{tta}|{virama};"
+                + "ddh>{ddha}|{virama};"
+                + "dd>{dda}|{virama};"
+                + "nn>{nna}|{virama};"
+                + "th>{tha}|{virama};"
+                + "t>{ta}|{virama};"
+                + "dh>{dha}|{virama};"
+                + "d>{da}|{virama};"
+                + "n>{na}|{virama};"
+                + "ph>{pha}|{virama};"
+                + "p>{pa}|{virama};"
+                + "bh>{bha}|{virama};"
+                + "b>{ba}|{virama};"
+                + "m>{ma}|{virama};"
+                + "y>{ya}|{virama};"
+                + "r>{ra}|{virama};"
+                + "l>{la}|{virama};"
+                + "v>{va}|{virama};"
+                + "f>{va}|{virama};"
+                + "w>{va}|{virama};"
+                + "sh>{sha}|{virama};"
+                + "ss>{ssa}|{virama};"
+                + "s>{sa}|{virama};"
+                + "z>{sa}|{virama};"
+                + "h>{ha}|{virama};"
+
+                  + ".>{danda};"
+                  + "{danda}.>{doubleDanda};"
+                  + "{depVowelAbove})~>{bindu};"
+                  + "{depVowelBelow})~>{candrabindu};"
+
+                // convert to dependent forms after consonant with no vowel: 
+                // e.g. kai -> {ka}{virama}ai -> {ka}{ai}
+
+                + "{virama}aa>{aa};"
+                + "{virama}ai>{ai};"
+                + "{virama}au>{au};"
+                + "{virama}ii>{ii};"
+                + "{virama}i>{i};"
+                + "{virama}uu>{uu};"
+                + "{virama}u>{u};"
+                + "{virama}rrh>{rrh};"
+                + "{virama}rh>{rh};"
+                + "{virama}lh>{lh};"
+                + "{virama}e>{e};"
+                + "{virama}o>{o};"
+                + "{virama}a>;"
+
+                // otherwise convert independent forms when separated by ': k'ai -> {ka}{virama}{wai}
+
+                + "{virama}''aa>{waa};"
+                + "{virama}''ai>{wai};"
+                + "{virama}''au>{wau};"
+                + "{virama}''ii>{wii};"
+                + "{virama}''i>{wi};"
+                + "{virama}''uu>{wuu};"
+                + "{virama}''u>{wu};"
+                + "{virama}''rrh>{wrr};"
+                + "{virama}''rh>{wr};"
+                + "{virama}''lh>{wl};"
+                + "{virama}''e>{we};"
+                + "{virama}''o>{wo};"
+                + "{virama}''a>{wa};"
+
+                  + "{virama}({endThing}>;"
+
+                // convert any left-over apostrophes used for separation
+
+                + "''>;"
+
+                //#####################################################################
+                // convert from Native letters to Latin letters
+                //#####################################################################
+
+                // special forms with no good conversion
+
+                + "mm<{bindu};"
+                + "x<{visarga};"
+
+                // normal consonants
+
+                + "kh<{kha}(&;"
+                + "kha<{kha};"
+                + "k''<{ka}{virama}({ha};"
+                + "k<{ka}(&;"
+                + "ka<{ka};"
+                + "gh<{gha}(&;"
+                + "gha<{gha};"
+                + "g''<{ga}{virama}({ha};"
+                + "g<{ga}(&;"
+                + "ga<{ga};"
+                + "ng<{nga}(&;"
+                + "nga<{nga};"
+                + "ch<{cha}(&;"
+                + "cha<{cha};"
+                + "c''<{ca}{virama}({ha};"
+                + "c<{ca}(&;"
+                + "ca<{ca};"
+                + "jh<{jha}(&;"
+                + "jha<{jha};"
+                + "j''<{ja}{virama}({ha};"
+                + "j<{ja}(&;"
+                + "ja<{ja};"
+                + "ny<{nya}(&;"
+                + "nya<{nya};"
+                + "tth<{ttha}(&;"
+                + "ttha<{ttha};"
+                + "tt''<{tta}{virama}({ha};"
+                + "tt<{tta}(&;"
+                + "tta<{tta};"
+                + "ddh<{ddha}(&;"
+                + "ddha<{ddha};"
+                + "dd''<{dda}(&{ha};"
+                + "dd<{dda}(&;"
+                + "dda<{dda};"
+                + "dh<{dha}(&;"
+                + "dha<{dha};"
+                + "d''<{da}{virama}({ha};"
+                + "d''<{da}{virama}({ddha};"
+                + "d''<{da}{virama}({dda};"
+                + "d''<{da}{virama}({dha};"
+                + "d''<{da}{virama}({da};"
+                + "d<{da}(&;"
+                + "da<{da};"
+                + "th<{tha}(&;"
+                + "tha<{tha};"
+                + "t''<{ta}{virama}({ha};"
+                + "t''<{ta}{virama}({ttha};"
+                + "t''<{ta}{virama}({tta};"
+                + "t''<{ta}{virama}({tha};"
+                + "t''<{ta}{virama}({ta};"
+                + "t<{ta}(&;"
+                + "ta<{ta};"
+                + "n''<{na}{virama}({ga};"
+                + "n''<{na}{virama}({ya};"
+                + "n<{na}(&;"
+                + "na<{na};"
+                + "ph<{pha}(&;"
+                + "pha<{pha};"
+                + "p''<{pa}{virama}({ha};"
+                + "p<{pa}(&;"
+                + "pa<{pa};"
+                + "bh<{bha}(&;"
+                + "bha<{bha};"
+                + "b''<{ba}{virama}({ha};"
+                + "b<{ba}(&;"
+                + "ba<{ba};"
+                + "m''<{ma}{virama}({ma};"
+                + "m''<{ma}{virama}({bindu};"
+                + "m<{ma}(&;"
+                + "ma<{ma};"
+                + "y<{ya}(&;"
+                + "ya<{ya};"
+                + "r''<{ra}{virama}({ha};"
+                + "r<{ra}(&;"
+                + "ra<{ra};"
+                + "l''<{la}{virama}({ha};"
+                + "l<{la}(&;"
+                + "la<{la};"
+                + "v<{va}(&;"
+                + "va<{va};"
+                + "sh<{sha}(&;"
+                + "sha<{sha};"
+                + "ss<{ssa}(&;"
+                + "ssa<{ssa};"
+                + "s''<{sa}{virama}({ha};"
+                + "s''<{sa}{virama}({sha};"
+                + "s''<{sa}{virama}({ssa};"
+                + "s''<{sa}{virama}({sa};"
+                + "s<{sa}(&;"
+                + "sa<{sa};"
+                + "h<{ha}(&;"
+                + "ha<{ha};"
+
+                // dependent vowels (should never occur except following consonants)
+
+                + "aa<{aa};"
+                + "ai<{ai};"
+                + "au<{au};"
+                + "ii<{ii};"
+                + "i<{i};"
+                + "uu<{uu};"
+                + "u<{u};"
+                + "rrh<{rrh};"
+                + "rh<{rh};"
+                + "lh<{lh};"
+                + "e<{e};"
+                + "o<{o};"
+
+                // independent vowels (when following consonants)
+
+                + "''aa<a){waa};"
+                + "''aa<%){waa};"
+                + "''ai<a){wai};"
+                + "''ai<%){wai};"
+                + "''au<a){wau};"
+                + "''au<%){wau};"
+                + "''ii<a){wii};"
+                + "''ii<%){wii};"
+                + "''i<a){wi};"
+                + "''i<%){wi};"
+                + "''uu<a){wuu};"
+                + "''uu<%){wuu};"
+                + "''u<a){wu};"
+                + "''u<%){wu};"
+                + "''rrh<%){wrr};"
+                + "''rh<%){wr};"
+                + "''lh<%){wl};"
+                + "''e<%){we};"
+                + "''o<%){wo};"
+                + "''a<a){wa};"
+                + "''a<%){wa};"
+
+
+                // independent vowels (otherwise)
+
+                + "aa<{waa};"
+                + "ai<{wai};"
+                + "au<{wau};"
+                + "ii<{wii};"
+                + "i<{wi};"
+                + "uu<{wuu};"
+                + "u<{wu};"
+                + "rrh<{wrr};"
+                + "rh<{wr};"
+                + "lh<{wl};"
+                + "e<{we};"
+                + "o<{wo};"
+                + "a<{wa};"
+
+                // blow away any remaining viramas
+
+                + "<{virama};"
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Latin_Greek.java b/src/com/ibm/text/resources/TransliterationRule_Latin_Greek.java
new file mode 100755
index 0000000..1812bc7
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Latin_Greek.java
@@ -0,0 +1,389 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Latin_Greek.java,v $ 
+ * $Date: 2000/03/10 04:07:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Latin_Greek extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule", ""
+                // ==============================================
+                // Modern Greek Transliteration Rules
+                //
+                // This transliterates modern Greek characters, but using rules
+                // that are traditional for Ancient Greek, and
+                // thus more resemble Greek words that have become part
+                // of English. It differs from the official Greek
+                // transliteration, which is more phonetic (since
+                // most modern Greek vowels, for example, have
+                // degenerated simply to sound like "ee").
+                //
+                // There are only a few tricky parts.
+                // 1. eta and omega don't map directly to Latin vowels,
+                //    so we use a macron on e and o, and some
+                //    other combinations if they are accented.
+                // 2. The accented, diaeresis i and y are substituted too.
+                // 3. Some letters use digraphs, like "ph". While typical,
+                //    they need some special handling.
+                // 4. A gamma before a gamma or a few other letters is
+                //    transliterated as an "n", as in "Anglo"
+                // 5. An ypsilon after a vowel is a "u", as in
+                //    "Mouseio". Otherwise it is a "y" as in "Physikon"
+                // 6. The construction of the rules is made simpler by making sure
+                //    that most rules for lowercase letters exactly correspond to the
+                //    rules for uppercase letters, *except* for the case of the letters
+                //    in the rule itself. That way, after modifying the uppercase rules,
+                //    you can just copy, paste, and "set to lowercase" to get
+                //    the rules for lowercase letters!
+                // ==============================================
+            
+                // ==============================================
+                // Variables, used to make the rules more comprehensible
+                // and for conditionals.
+                // ==============================================
+                
+                // Latin Letters
+                
+                + "E-MACRON=\u0112;"
+                + "e-macron=\u0113;"
+                + "O-MACRON=\u014C;"
+                + "o-macron=\u014D;"
+                + "Y-UMLAUT=\u0178;"
+                + "y-umlaut=\u00FF;"
+                
+                //! // with real accents.
+                //! + "E-MACRON-ACUTE=\u0112\u0301;"
+                //! + "e-macron-acute=\u0113\u0301;"
+                //! + "O-MACRON-ACUTE=\u014C\u0301;"
+                //! + "o-macron-acute=\u014D\u0301;"
+                //! + "y-umlaut-acute=\u00FF\u0301;"
+                //! + "\u00ef-acute=\u00ef\u0301;"
+                //! + "\u00fc-acute=\u00fc\u0301;"
+                //! //
+ 
+                // single letter equivalents
+                
+                + "E-MACRON-ACUTE=\u00CA;"
+                + "e-macron-acute=\u00EA;"
+                + "O-MACRON-ACUTE=\u00D4;"
+                + "o-macron-acute=\u00F4;"
+                + "y-umlaut-acute=\u0177;"
+                + "\u00ef-acute=\u00EE;"
+                + "\u00fc-acute=\u00FB;"       
+                
+                // Greek Letters
+
+                + "ALPHA=\u0391;"
+                + "BETA=\u0392;"
+                + "GAMMA=\u0393;"
+                + "DELTA=\u0394;"
+                + "EPSILON=\u0395;"
+                + "ZETA=\u0396;"
+                + "ETA=\u0397;"
+                + "THETA=\u0398;"
+                + "IOTA=\u0399;"
+                + "KAPPA=\u039A;"
+                + "LAMBDA=\u039B;"
+                + "MU=\u039C;"
+                + "NU=\u039D;"
+                + "XI=\u039E;"
+                + "OMICRON=\u039F;"
+                + "PI=\u03A0;"
+                + "RHO=\u03A1;"
+                + "SIGMA=\u03A3;"
+                + "TAU=\u03A4;"
+                + "YPSILON=\u03A5;"
+                + "PHI=\u03A6;"
+                + "CHI=\u03A7;"
+                + "PSI=\u03A8;"
+                + "OMEGA=\u03A9;"
+
+                + "ALPHA+=\u0386;"
+                + "EPSILON+=\u0388;"
+                + "ETA+=\u0389;"
+                + "IOTA+=\u038A;"
+                + "OMICRON+=\u038C;"
+                + "YPSILON+=\u038E;"
+                + "OMEGA+=\u038F;"
+                + "IOTA_DIAERESIS=\u03AA;"
+                + "YPSILON_DIAERESIS=\u03AB;"
+
+                + "alpha=\u03B1;"
+                + "beta=\u03B2;"
+                + "gamma=\u03B3;"
+                + "delta=\u03B4;"
+                + "epsilon=\u03B5;"
+                + "zeta=\u03B6;"
+                + "eta=\u03B7;"
+                + "theta=\u03B8;"
+                + "iota=\u03B9;"
+                + "kappa=\u03BA;"
+                + "lambda=\u03BB;"
+                + "mu=\u03BC;"
+                + "nu=\u03BD;"
+                + "xi=\u03BE;"
+                + "omicron=\u03BF;"
+                + "pi=\u03C0;"
+                + "rho=\u03C1;"
+                + "sigma=\u03C3;"
+                + "tau=\u03C4;"
+                + "ypsilon=\u03C5;"
+                + "phi=\u03C6;"
+                + "chi=\u03C7;"
+                + "psi=\u03C8;"
+                + "omega=\u03C9;"
+
+                //forms
+
+                + "alpha+=\u03AC;"
+                + "epsilon+=\u03AD;"
+                + "eta+=\u03AE;"
+                + "iota+=\u03AF;"
+                + "omicron+=\u03CC;"
+                + "ypsilon+=\u03CD;"
+                + "omega+=\u03CE;"
+                + "iota_diaeresis=\u03CA;"
+                + "ypsilon_diaeresis=\u03CB;"
+                + "iota_diaeresis+=\u0390;"
+                + "ypsilon_diaeresis+=\u03B0;"
+                + "sigma+=\u03C2;"
+
+                // Variables for conditional mappings
+                
+                // Use lowercase for all variable names, to allow cut/paste below.
+
+                + "letter=[~[:Lu:][:Ll:]];"
+                + "lower=[[:Ll:]];"
+                + "softener=[eiyEIY];"
+                + "vowel=[aeiouAEIOU"
+                +   "{ALPHA}{EPSILON}{ETA}{IOTA}{OMICRON}{YPSILON}{OMEGA}"
+                +   "{ALPHA+}{EPSILON+}{ETA+}{IOTA+}{OMICRON+}{YPSILON+}{OMEGA+}"
+                +   "{IOTA_DIAERESIS}{YPSILON_DIAERESIS}"
+                +   "{alpha}{epsilon}{eta}{iota}{omicron}{ypsilon}{omega}"
+                +   "{alpha+}{epsilon+}{eta+}{iota+}{omicron+}{ypsilon+}{omega+}"
+                +   "{iota_diaeresis}{ypsilon_diaeresis}"
+                +   "{iota_diaeresis+}{ypsilon_diaeresis+}"
+                +   "];"
+                + "n-gamma=[GKXCgkxc];"
+                + "gamma-n=[{GAMMA}{KAPPA}{CHI}{XI}{gamma}{kappa}{chi}{xi}];"
+                + "pp=[Pp];"
+
+                // ==============================================
+                // Rules
+                // ==============================================
+                // The following are special titlecases, and should
+                // not be copied when duplicating the lowercase
+                // ==============================================
+                
+                + "Th <> {THETA}({lower};"
+                + "Ph <> {PHI}({lower};"
+                + "Ch <> {CHI}({lower};"
+              //masked: + "Ps<{PHI}({lower};"
+                
+                // Because there is no uppercase forms for final sigma,
+                // we had to move all the sigma rules up here.
+                
+                // Remember to insert ' to preserve round trip, for double letters
+                // don't need to do this for the digraphs with h,
+                // since it is not created when mapping back from greek
+                
+                // use special form for s
+                
+                + "''S <> ({pp}) {SIGMA} ;" // handle PS
+                + "S <> {SIGMA};"
+                
+                // The following are a bit tricky. 's' takes two forms in greek
+                // final or non final. 
+                // We use ~s to represent the abnormal form: final before letter
+                // or non-final before non-letter.
+                // We use 's to separate p and s (otherwise ps is one letter)
+                // so, we break out the following forms:
+                
+                + "''s < ({pp}) {sigma} ({letter});"
+                + "s <          {sigma} ({letter});"
+                + "~s <         {sigma} ;"
+
+                + "~s <         {sigma+} ({letter});"
+                + "''s < ({pp}) {sigma+} ;"
+                + "s <          {sigma+} ;"
+
+                + "~s ({letter})  > {sigma+};"
+                + "~s             > {sigma};"
+                + "''s ({letter}) > {sigma};"
+                + "''s            > {sigma+};"
+                + "s ({letter})   > {sigma};"
+                + "s              > {sigma+};"
+                
+                // because there are no uppercase forms, had to move these up too.
+                
+                + "i\"`>{iota_diaeresis+};"
+                + "y\"`>{ypsilon_diaeresis+};"
+                
+                + "{\u00ef-acute} <> {iota_diaeresis+};"
+                + "{\u00fc-acute} <> {vowel}){ypsilon_diaeresis+};"
+                + "{y-umlaut-acute} <> {ypsilon_diaeresis+};"
+                                
+                // ==============================================
+                // Uppercase Forms.
+                // To make lowercase forms, just copy and lowercase below
+                // ==============================================
+ 
+                // Typing variants, in case the keyboard doesn't have accents
+                
+                + "A`>{ALPHA+};"
+                + "E`>{EPSILON+};"
+                + "EE`>{ETA+};"
+                + "EE>{ETA};" 
+                + "I`>{IOTA+};"
+                + "O`>{OMICRON+};"
+                + "OO`>{OMEGA+};"
+                + "OO>{OMEGA};"
+                + "I\">{IOTA_DIAERESIS};"
+                + "Y\">{YPSILON_DIAERESIS};"
+                
+                // Basic Letters
+                
+                + "A<>{ALPHA};"
+                + "\u00c1<>{ALPHA+};"
+                + "B<>{BETA};"
+                + "N ({n-gamma}) <> {GAMMA} ({gamma-n});"
+                + "G<>{GAMMA};"
+                + "D<>{DELTA};"
+                + "''E <> ([Ee]){EPSILON};" // handle EE
+                + "E<>{EPSILON};"
+                + "\u00c9<>{EPSILON+};"
+                + "Z<>{ZETA};"
+                + "{E-MACRON-ACUTE}<>{ETA+};"
+                + "{E-MACRON}<>{ETA};"
+                + "TH<>{THETA};"
+                + "I<>{IOTA};"
+                + "\u00cd<>{IOTA+};"
+                + "\u00cf<>{IOTA_DIAERESIS};"
+                + "K<>{KAPPA};"
+                + "L<>{LAMBDA};"
+                + "M<>{MU};"
+                + "N'' <> {NU} ({gamma-n});"
+                + "N<>{NU};"
+                + "X<>{XI};"
+                + "''O <> ([Oo]) {OMICRON};" // handle OO
+                + "O<>{OMICRON};"
+                + "\u00d3<>{OMICRON+};"
+                + "PH<>{PHI};" // needs ordering before P
+                + "PS<>{PSI};" // needs ordering before P
+                + "P<>{PI};"
+                + "R<>{RHO};"
+                + "T<>{TAU};"
+                + "U <> ({vowel}) {YPSILON};"
+                + "\u00da <> ({vowel}) {YPSILON+};"
+                + "\u00dc <> ({vowel}) {YPSILON_DIAERESIS};"
+                + "Y<>{YPSILON};"
+                + "\u00dd<>{YPSILON+};"
+                + "{Y-UMLAUT}<>{YPSILON_DIAERESIS};"
+                + "CH<>{CHI};"
+                + "{O-MACRON-ACUTE}<>{OMEGA+};"
+                + "{O-MACRON}<>{OMEGA};"
+
+                // Extra English Letters. Mapped for completeness
+                
+                + "C({softener})>|S;"
+                + "C>|K;"
+                + "F>|PH;"
+                + "H>|CH;"
+                + "J>|I;"
+                + "Q>|K;"
+                + "V>|U;"
+                + "W>|U;"
+                
+                // ==============================================
+                // Lowercase Forms. Just copy above and lowercase
+                // ==============================================
+
+                // typing variants, in case the keyboard doesn't have accents
+                
+                + "a`>{alpha+};"
+                + "e`>{epsilon+};"
+                + "ee`>{eta+};"
+                + "ee>{eta};" 
+                + "i`>{iota+};"
+                + "o`>{omicron+};"
+                + "oo`>{omega+};"
+                + "oo>{omega};"
+                + "i\">{iota_diaeresis};"
+                + "y\">{ypsilon_diaeresis};"
+                
+                // basic letters
+                
+                + "a<>{alpha};"
+                + "\u00e1<>{alpha+};"
+                + "b<>{beta};"
+                + "n ({n-gamma}) <> {gamma} ({gamma-n});"
+                + "g<>{gamma};"
+                + "d<>{delta};"
+                + "''e <> ([Ee]){epsilon};" // handle EE
+                + "e<>{epsilon};"
+                + "\u00e9<>{epsilon+};"
+                + "z<>{zeta};"
+                + "{e-macron-acute}<>{eta+};"
+                + "{e-macron}<>{eta};"
+                + "th<>{theta};"
+                + "i<>{iota};"
+                + "\u00ed<>{iota+};"
+                + "\u00ef<>{iota_diaeresis};"
+                + "k<>{kappa};"
+                + "l<>{lambda};"
+                + "m<>{mu};"
+                + "n'' <> {nu} ({gamma-n});"
+                + "n<>{nu};"
+                + "x<>{xi};"
+                + "''o <> ([Oo]) {omicron};" // handle OO
+                + "o<>{omicron};"
+                + "\u00f3<>{omicron+};"
+                + "ph<>{phi};" // needs ordering before p
+                + "ps<>{psi};" // needs ordering before p
+                + "p<>{pi};"
+                + "r<>{rho};"
+                + "t<>{tau};"
+                + "u <> ({vowel}){ypsilon};"
+                + "\u00fa <> ({vowel}){ypsilon+};"
+                + "\u00fc <> ({vowel}){ypsilon_diaeresis};"
+                + "y<>{ypsilon};"
+                + "\u00fd<>{ypsilon+};"
+                + "{y-umlaut}<>{ypsilon_diaeresis};"
+                + "ch<>{chi};"
+                + "{o-macron-acute}<>{omega+};"
+                + "{o-macron}<>{omega};"
+
+                // extra english letters. mapped for completeness
+                
+                + "c({softener})>|s;"
+                + "c>|k;"
+                + "f>|ph;"
+                + "h>|ch;"
+                + "j>|i;"
+                + "q>|k;"
+                + "v>|u;"
+                + "w>|u;"
+                
+                // ====================================
+                // Normal final rule: remove '
+                // ====================================
+                
+                //+ "''>;"                
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Latin_Hebrew.java b/src/com/ibm/text/resources/TransliterationRule_Latin_Hebrew.java
new file mode 100755
index 0000000..e0fa73e
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Latin_Hebrew.java
@@ -0,0 +1,291 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Latin_Hebrew.java,v $ 
+ * $Date: 2000/03/10 04:07:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Latin_Hebrew extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule",
+                //variable names, derived from the Unicode names.
+
+                "POINT_SHEVA=\u05B0;"
+                + "POINT_HATAF_SEGOL=\u05B1;"
+                + "POINT_HATAF_PATAH=\u05B2;"
+                + "POINT_HATAF_QAMATS=\u05B3;"
+                + "POINT_HIRIQ=\u05B4;"
+                + "POINT_TSERE=\u05B5;"
+                + "POINT_SEGOL=\u05B6;"
+                + "POINT_PATAH=\u05B7;"
+                + "POINT_QAMATS=\u05B8;"
+                + "POINT_HOLAM=\u05B9;"
+                + "POINT_QUBUTS=\u05BB;"
+                + "POINT_DAGESH_OR_MAPIQ=\u05BC;"
+                + "POINT_METEG=\u05BD;"
+                + "PUNCTUATION_MAQAF=\u05BE;"
+                + "POINT_RAFE=\u05BF;"
+                + "PUNCTUATION_PASEQ=\u05C0;"
+                + "POINT_SHIN_DOT=\u05C1;"
+                + "POINT_SIN_DOT=\u05C2;"
+                + "PUNCTUATION_SOF_PASUQ=\u05C3;"
+                + "ALEF=\u05D0;"
+                + "BET=\u05D1;"
+                + "GIMEL=\u05D2;"
+                + "DALET=\u05D3;"
+                + "HE=\u05D4;"
+                + "VAV=\u05D5;"
+                + "ZAYIN=\u05D6;"
+                + "HET=\u05D7;"
+                + "TET=\u05D8;"
+                + "YOD=\u05D9;"
+                + "FINAL_KAF=\u05DA;"
+                + "KAF=\u05DB;"
+                + "LAMED=\u05DC;"
+                + "FINAL_MEM=\u05DD;"
+                + "MEM=\u05DE;"
+                + "FINAL_NUN=\u05DF;"
+                + "NUN=\u05E0;"
+                + "SAMEKH=\u05E1;"
+                + "AYIN=\u05E2;"
+                + "FINAL_PE=\u05E3;"
+                + "PE=\u05E4;"
+                + "FINAL_TSADI=\u05E5;"
+                + "TSADI=\u05E6;"
+                + "QOF=\u05E7;"
+                + "RESH=\u05E8;"
+                + "SHIN=\u05E9;"
+                + "TAV=\u05EA;"
+                + "YIDDISH_DOUBLE_VAV=\u05F0;"
+                + "YIDDISH_VAV_YOD=\u05F1;"
+                + "YIDDISH_DOUBLE_YOD=\u05F2;"
+                + "PUNCTUATION_GERESH=\u05F3;"
+                + "PUNCTUATION_GERSHAYIM=\u05F4;"
+
+                //wildcards
+                //The values can be anything we don't use in this file: start at E000.
+
+                + "letter=[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ];"
+
+                + "softvowel=[eiyEIY];"
+
+                + "vowellike=[{ALEF}{AYIN}{YOD}{VAV}];"
+
+                //?>{POINT_SHEVA}
+                //?>{POINT_HATAF_SEGOL}
+                //?>{POINT_HATAF_PATAH}
+                //?>{POINT_HATAF_QAMATS}
+                //?>{POINT_HIRIQ}
+                //?>{POINT_TSERE}
+                //?>{POINT_SEGOL}
+                //?>{POINT_PATAH}
+                //?>{POINT_QAMATS}
+                //?>{POINT_HOLAM}
+                //?>{POINT_QUBUTS}
+                //?>{POINT_DAGESH_OR_MAPIQ}
+                //?>{POINT_METEG}
+                //?>{PUNCTUATION_MAQAF}
+                //?>{POINT_RAFE}
+                //?>{PUNCTUATION_PASEQ}
+                //?>{POINT_SHIN_DOT}
+                //?>{POINT_SIN_DOT}
+                //?>{PUNCTUATION_SOF_PASUQ}
+
+                + "a>{ALEF};"
+                + "A>{ALEF};"
+
+                + "b>{BET};"
+                + "B>{BET};"
+
+                + "c({softvowel}>{SAMEKH};"
+                + "C({softvowel}>{SAMEKH};"
+                + "c({letter}>{KAF};"
+                + "C({letter}>{KAF};"
+                + "c>{FINAL_KAF};"
+                + "C>{FINAL_KAF};"
+
+                + "d>{DALET};"
+                + "D>{DALET};"
+
+                + "e>{AYIN};"
+                + "E>{AYIN};"
+
+                + "f({letter}>{PE};"
+                + "f>{FINAL_PE};"
+                + "F({letter}>{PE};"
+                + "F>{FINAL_PE};"
+
+                + "g>{GIMEL};"
+                + "G>{GIMEL};"
+
+                + "h>{HE};"
+                + "H>{HE};"
+
+                + "i>{YOD};"
+                + "I>{YOD};"
+
+                + "j>{DALET}{SHIN};"
+                + "J>{DALET}{SHIN};"
+
+                + "kH>{HET};"
+                + "kh>{HET};"
+                + "KH>{HET};"
+                + "Kh>{HET};"
+                + "k({letter}>{KAF};"
+                + "K({letter}>{KAF};"
+                + "k>{FINAL_KAF};"
+                + "K>{FINAL_KAF};"
+
+                + "l>{LAMED};"
+                + "L>{LAMED};"
+
+                + "m({letter}>{MEM};"
+                + "m>{FINAL_MEM};"
+                + "M({letter}>{MEM};"
+                + "M>{FINAL_MEM};"
+
+                + "n({letter}>{NUN};"
+                + "n>{FINAL_NUN};"
+                + "N({letter}>{NUN};"
+                + "N>{FINAL_NUN};"
+
+                + "o>{VAV};"
+                + "O>{VAV};"
+
+                + "p({letter}>{PE};"
+                + "p>{FINAL_PE};"
+                + "P({letter}>{PE};"
+                + "P>{FINAL_PE};"
+
+                + "q>{QOF};"
+                + "Q>{QOF};"
+
+                + "r>{RESH};"
+                + "R>{RESH};"
+
+                + "sH>{SHIN};"
+                + "sh>{SHIN};"
+                + "SH>{SHIN};"
+                + "Sh>{SHIN};"
+                + "s>{SAMEKH};"
+                + "S>{SAMEKH};"
+
+                + "th>{TAV};"
+                + "tH>{TAV};"
+                + "TH>{TAV};"
+                + "Th>{TAV};"
+                + "tS({letter}>{TSADI};"
+                + "ts({letter}>{TSADI};"
+                + "Ts({letter}>{TSADI};"
+                + "TS({letter}>{TSADI};"
+                + "tS>{FINAL_TSADI};"
+                + "ts>{FINAL_TSADI};"
+                + "Ts>{FINAL_TSADI};"
+                + "TS>{FINAL_TSADI};"
+                + "t>{TET};"
+                + "T>{TET};"
+
+                + "u>{VAV};"
+                + "U>{VAV};"
+
+                + "v>{VAV};"
+                + "V>{VAV};"
+
+                + "w>{VAV};"
+                + "W>{VAV};"
+
+                + "x>{KAF}{SAMEKH};"
+                + "X>{KAF}{SAMEKH};"
+
+                + "y>{YOD};"
+                + "Y>{YOD};"
+
+                + "z>{ZAYIN};"
+                + "Z>{ZAYIN};"
+
+                //#?>{YIDDISH_DOUBLE_VAV}
+                //?>{YIDDISH_VAV_YOD}
+                //?>{YIDDISH_DOUBLE_YOD}
+                //?>{PUNCTUATION_GERESH}
+                //?>{PUNCTUATION_GERSHAYIM}
+
+                + "''>;"
+
+                //{POINT_SHEVA}>@
+                //{POINT_HATAF_SEGOL}>@
+                //{POINT_HATAF_PATAH}>@
+                //{POINT_HATAF_QAMATS}>@
+                //{POINT_HIRIQ}>@
+                //{POINT_TSERE}>@
+                //{POINT_SEGOL}>@
+                //{POINT_PATAH}>@
+                //{POINT_QAMATS}>@
+                //{POINT_HOLAM}>@
+                //{POINT_QUBUTS}>@
+                //{POINT_DAGESH_OR_MAPIQ}>@
+                //{POINT_METEG}>@
+                //{PUNCTUATION_MAQAF}>@
+                //{POINT_RAFE}>@
+                //{PUNCTUATION_PASEQ}>@
+                //{POINT_SHIN_DOT}>@
+                //{POINT_SIN_DOT}>@
+                //{PUNCTUATION_SOF_PASUQ}>@
+
+                + "a<{ALEF};"
+                + "e<{AYIN};"
+                + "b<{BET};"
+                + "d<{DALET};"
+                + "k<{FINAL_KAF};"
+                + "m<{FINAL_MEM};"
+                + "n<{FINAL_NUN};"
+                + "p<{FINAL_PE};"
+                + "ts<{FINAL_TSADI};"
+                + "g<{GIMEL};"
+                + "kh<{HET};"
+                + "h<{HE};"
+                + "k''<{KAF}({HE};"
+                + "k<{KAF};"
+                + "l<{LAMED};"
+                + "m<{MEM};"
+                + "n<{NUN};"
+                + "p<{PE};"
+                + "q<{QOF};"
+                + "r<{RESH};"
+                + "s''<{SAMEKH}({HE};"
+                + "s<{SAMEKH};"
+                + "sh<{SHIN};"
+                + "th<{TAV};"
+                + "t''<{TET}({HE};"
+                + "t''<{TET}({SAMEKH};"
+                + "t''<{TET}({SHIN};"
+                + "t<{TET};"
+                + "ts<{TSADI};"
+                + "v<{VAV}({vowellike};"
+                + "u<{VAV};"
+                + "y<{YOD};"
+                + "z<{ZAYIN};"
+
+                //{YIDDISH_DOUBLE_VAV}>@
+                //{YIDDISH_VAV_YOD}>@
+                //{YIDDISH_DOUBLE_YOD}>@
+                //{PUNCTUATION_GERESH}>@
+                //{PUNCTUATION_GERSHAYIM}>@
+
+                + "<'';"
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Latin_Jamo.java b/src/com/ibm/text/resources/TransliterationRule_Latin_Jamo.java
new file mode 100755
index 0000000..098a802
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Latin_Jamo.java
@@ -0,0 +1,337 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Latin_Jamo.java,v $ 
+ * $Date: 2000/03/10 04:07:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Latin_Jamo extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule", ""
+
+  // VARIABLES
+
+  + "initial=[\u1100-\u115F];"
+  + "medial=[\u1160-\u11A7];"
+  + "final=[\u11A8-\u11F9];" // added - aliu
+  + "vowel=[aeiouwyAEIOUWY\u1160-\u11A7];"
+  + "consonant=[bcdfghjklmnpqrstvxzBCDFGHJKLMNPQRSTVXZ{medial}{final}];"
+  + "ye=[yeYE];"
+  + "ywe=[yweYWE];"
+  + "yw=[ywYW];"
+  + "nl=[nlNL];"
+  + "gnl=[gnlGNL];"
+  + "lsgb=[lsgbLSGB];"
+  + "ywao=[ywaoYWAO];"
+  + "bl=[blBL];"
+
+  // RULES
+
+  // Hangul structure is IMF or IM
+  // So you can have, because of adjacent sequences
+  // IM, but not II or IF
+  // MF or MI, but not MM
+  // FI, but not FF or FM
+
+  // For English, we just have C or V.
+  // To generate valid Hangul:
+  // Vowels:
+  // We insert IEUNG between VV, and otherwise map V to M
+  // We also insert IEUNG if there is no
+  // Consonants:
+  // We don't break doubles
+  // Cases like lmgg, we have to break at lm
+  // So to guess whether a consonant is I or F
+  // we map all C's to F, except when followed by a vowel, e.g.
+  // X[{vowel}>CHOSEONG (initial)
+  // X>JONGSEONG (final)
+
+  // special insertion for funny sequences of vowels, and for empty consonant
+
+  + "'' < ({consonant}) \u110B;" // insert a break between any consonant and the empty consonant.
+  + "({medial}) ({vowel}) <> \u110B;"  // HANGUL CHOSEONG IEUNG
+  
+  // Below, insert an empty consonant in front of a vowel, if there is no Initial in front.
+  
+  // Fix casing.
+  // Because Korean is caseless, we just want to treat everything as
+  // lowercase.
+  // we could do this by always preceeding this transliterator with
+  // an upper-lowercase transformation, but that wouldn't invert nicely.
+  // We use the "revisit" syntax to just convert latin to latin
+  // so that we can avoid
+  // having to restate all the Latin=>Jamo rules, with the I/F handling.
+
+  // We don't have to add titlecase, since that will be picked up
+  // since the first letter is converted, then revisited. E.g.
+  // |Gg => |gg => {sang kiyeok}
+  // We do have to have all caps, since otherwise we could get:
+  // |GG => |gG => {kiyeok}|G => {kiyeok}|g => {kiyeok}{kiyeok}
+
+  + "Z > |z;"
+  + "YU > |yu;"
+  + "YO > |yo;"
+  + "YI > |yi;"
+  + "YEO > |yeo;"
+  + "YE > |ye;"
+  + "YAE > |yae;"
+  + "YA > |ya;"
+  + "Y > |y;"
+  + "WI > |wi;"
+  + "WEO > |weo;"
+  + "WE > |we;"
+  + "WAE > |wae;"
+  + "WA > |wa;"
+  + "W > |w;"
+  + "U > |u;"
+  + "T > |t;"
+  + "SS > |ss;"
+  + "S > |s;"
+  + "P > |p;"
+  + "OE > |oe;"
+  + "O > |o;"
+  + "NJ > |nj;"
+  + "NH > |nh;"
+  + "NG > |ng;"
+  + "N > |n;"
+  + "M > |m;"
+  + "LT > |lt;"
+  + "LS > |ls;"
+  + "LP > |lp;"
+  + "LM > |lm;"
+  + "LH > |lh;"
+  + "LG > |lg;"
+  + "LB > |lb;"
+  + "L > |l;"
+  + "K > |k;"
+  + "JJ > |jj;"
+  + "J > |j;"
+  + "I > |i;"
+  + "H > |h;"
+  + "GS > |gs;"
+  + "GG > |gg;"
+  + "G > |g;"
+  + "EU > |eu;"
+  + "EO > |eo;"
+  + "E > |e;"
+  + "DD > |dd;"
+  + "D > |d;"
+  + "BS > |bs;"
+  + "BB > |bb;"
+  + "B > |b;"
+  + "AE > |ae;"
+  + "A > |a;"
+
+  // APOSTROPHE
+
+  // As always, an apostrophe is used to separate digraphs into
+  // singles. That is, if you really wanted [KAN][GGAN], instead
+  // of [KANG][GAN] you would write "kan'ggan".
+
+  // Rules for inserting ' when mapping separated digraphs back
+  // from Hangul to Latin. Catch every letter that can be the
+  // LAST of a digraph (or multigraph) AND first of an initial
+
+  + "'' < (l) (\u11c0;"      // hangul jongseong thieuth
+  + "'' < ({lsgb}) (\u11ba;" // hangul jongseong sios
+  + "'' < (l) (\u11c1;"      // hangul jongseong phieuph
+  + "'' < (l) (\u11b7;"      // hangul jongseong mieum
+  + "'' < (n) (\u11bd;"      // hangul jongseong cieuc
+  + "'' < ({nl}) (\u11c2;"   // hangul jongseong hieuh
+  + "'' < ({gnl}) (\u11a9;"  // hangul jongseong ssangkiyeok
+  + "'' < ({bl}) (\u11b8;"   // hangul jongseong pieup
+  + "'' < (d) (\u11ae;"      // hangul jongseong tikeut
+  
+  + "'' < ({ye}) (\u116e;"   // hangul jungseong u
+  + "'' < ({ywe}) (\u1169;"  // hangul jungseong o
+  + "'' < ({yw}) (\u1175;"   // hangul jungseong i
+  + "'' < ({ywao}) (\u1166;" // hangul jungseong e
+  + "'' < ({yw}) (\u1161;"   // hangul jungseong a
+  
+  + "'' < (l) (\u1110;"      // hangul choseong thieuth
+  + "'' < ({lsgb}) (\u110a;" // hangul choseong ssangsios
+  + "'' < ({lsgb}) (\u1109;" // hangul choseong sios
+  + "'' < (l) (\u1111;"      // hangul choseong phieuph
+  + "'' < (l) (\u1106;"      // hangul choseong mieum
+  + "'' < (n) (\u110c;"      // hangul choseong cieuc
+  + "'' < (n) (\u110d;"
+  + "'' < ({nl}) (\u1112;"   // hangul choseong hieuh
+  + "'' < ({gnl}) (\u1101;"  // hangul choseong ssangkiyeok
+  + "'' < ({gnl}) (\u1100;"  // hangul choseong kiyeok
+  + "'' < (d) (\u1103;"      // hangul choseong tikeut
+  + "'' < (d) (\u1104;"
+  + "'' < ({bl}) (\u1107;"   // hangul choseong pieup
+  + "'' < ({bl}) (\u1108;"
+
+  // INITIALS
+
+  + "t ({vowel}) <> \u1110;"   // hangul choseong thieuth
+  + "ss ({vowel}) <> \u110a;"  // hangul choseong ssangsios
+  + "s ({vowel}) <> \u1109;"   // hangul choseong sios
+  + "p ({vowel}) <> \u1111;"   // hangul choseong phieuph
+  + "n ({vowel}) <> \u1102;"   // hangul choseong nieun
+  + "m ({vowel}) <> \u1106;"   // hangul choseong mieum
+  + "l ({vowel}) <> \u1105;"   // hangul choseong rieul
+  + "k ({vowel}) <> \u110f;"   // hangul choseong khieukh
+  + "j ({vowel}) <> \u110c;"   // hangul choseong cieuc
+  + "h ({vowel}) <> \u1112;"   // hangul choseong hieuh
+  + "gg ({vowel}) <> \u1101;"  // hangul choseong ssangkiyeok
+  + "g ({vowel}) <> \u1100;"   // hangul choseong kiyeok
+  + "d ({vowel}) <> \u1103;"   // hangul choseong tikeut
+  + "c ({vowel}) <> \u110e;"   // hangul choseong chieuch
+  + "b ({vowel}) <> \u1107;"   // hangul choseong pieup  
+  + "bb ({vowel}) <> \u1108;"
+  + "jj ({vowel}) <> \u110d;"
+  + "dd ({vowel}) <> \u1104;"
+  
+  // If we have gotten through to these rules, and we start with
+  // a consonant, then the remaining mappings would be to F,
+  // because must have CC (or C<non-letter>), not CV.
+  // If we have F before us, then
+  // we would end up with FF, which is wrong. The simplest fix is
+  // to still make it an initial, but also insert an "u",
+  // so we end up with F, I, u, and then continue with the C
+
+  // special, only initial
+  + "bb > \u1108\u116e;"  // hangul choseong ssangpieup
+  + "jj > \u1108\u110d;"   // hangul choseong ssangcieuc
+  + "dd > \u1108\u1104;"   // hangul choseong ssangtikeut
+  
+  + "({final}) t > \u1110\u116e;"   // hangul choseong thieuth
+  + "({final}) ss > \u110a\u116e;"  // hangul choseong ssangsios
+  + "({final}) s > \u1109\u116e;"   // hangul choseong sios
+  + "({final}) p > \u1111\u116e;"   // hangul choseong phieuph
+  + "({final}) n > \u1102\u116e;"   // hangul choseong nieun
+  + "({final}) m > \u1106\u116e;"   // hangul choseong mieum
+  + "({final}) l > \u1105\u116e;"   // hangul choseong rieul
+  + "({final}) k > \u110f\u116e;"   // hangul choseong khieukh
+  + "({final}) j > \u110c\u116e;"   // hangul choseong cieuc
+  + "({final}) h > \u1112\u116e;"   // hangul choseong hieuh
+  + "({final}) gg > \u1101\u116e;"  // hangul choseong ssangkiyeok
+  + "({final}) g > \u1100\u116e;"   // hangul choseong kiyeok
+  + "({final}) d > \u1103\u116e;"   // hangul choseong tikeut
+  + "({final}) c > \u110e\u116e;"   // hangul choseong chieuch
+  + "({final}) b > \u1107\u116e;"   // hangul choseong pieup
+  
+  // MEDIALS after INITIALS
+  
+  + "({initial}) yu <> \u1172;"   // hangul jungseong yu
+  + "({initial}) yo <> \u116d;"   // hangul jungseong yo
+  + "({initial}) yi <> \u1174;"   // hangul jungseong yi
+  + "({initial}) yeo <> \u1167;"  // hangul jungseong yeo
+  + "({initial}) ye <> \u1168;"   // hangul jungseong ye
+  + "({initial}) yae <> \u1164;"  // hangul jungseong yae
+  + "({initial}) ya <> \u1163;"   // hangul jungseong ya
+  + "({initial}) wi <> \u1171;"   // hangul jungseong wi
+  + "({initial}) weo <> \u116f;"  // hangul jungseong weo
+  + "({initial}) we <> \u1170;"   // hangul jungseong we
+  + "({initial}) wae <> \u116b;"  // hangul jungseong wae
+  + "({initial}) wa <> \u116a;"   // hangul jungseong wa
+  + "({initial}) u <> \u116e;"    // hangul jungseong u
+  + "({initial}) oe <> \u116c;"   // hangul jungseong oe
+  + "({initial}) o <> \u1169;"    // hangul jungseong o
+  + "({initial}) i <> \u1175;"    // hangul jungseong i
+  + "({initial}) eu <> \u1173;"   // hangul jungseong eu
+  + "({initial}) eo <> \u1165;"   // hangul jungseong eo
+  + "({initial}) e <> \u1166;"    // hangul jungseong e
+  + "({initial}) ae <> \u1162;"   // hangul jungseong ae
+  + "({initial}) a <> \u1161;"    // hangul jungseong a
+  
+  // MEDIALS (vowels) not after INITIALs
+  
+  + "yu > \u110B\u1172;"   // hangul jungseong yu
+  + "yo > \u110B\u116d;"   // hangul jungseong yo
+  + "yi > \u110B\u1174;"   // hangul jungseong yi
+  + "yeo > \u110B\u1167;"  // hangul jungseong yeo
+  + "ye > \u110B\u1168;"   // hangul jungseong ye
+  + "yae > \u110B\u1164;"  // hangul jungseong yae
+  + "ya > \u110B\u1163;"   // hangul jungseong ya
+  + "wi > \u110B\u1171;"   // hangul jungseong wi
+  + "weo > \u110B\u116f;"  // hangul jungseong weo
+  + "we > \u110B\u1170;"   // hangul jungseong we
+  + "wae > \u110B\u116b;"  // hangul jungseong wae
+  + "wa > \u110B\u116a;"   // hangul jungseong wa
+  + "u > \u110B\u116e;"    // hangul jungseong u
+  + "oe > \u110B\u116c;"   // hangul jungseong oe
+  + "o > \u110B\u1169;"    // hangul jungseong o
+  + "i > \u110B\u1175;"    // hangul jungseong i
+  + "eu > \u110B\u1173;"   // hangul jungseong eu
+  + "eo > \u110B\u1165;"   // hangul jungseong eo
+  + "e > \u110B\u1166;"    // hangul jungseong e
+  + "ae > \u110B\u1162;"   // hangul jungseong ae
+  + "a > \u110B\u1161;"    // hangul jungseong a
+  
+
+  // FINALS
+  
+  + "t <> \u11c0;"    // hangul jongseong thieuth
+  + "ss <> \u11bb;"   // hangul jongseong ssangsios
+  + "s <> \u11ba;"    // hangul jongseong sios
+  + "p <> \u11c1;"    // hangul jongseong phieuph
+  + "nj <> \u11ac;"   // hangul jongseong nieun-cieuc
+  + "nh <> \u11ad;"   // hangul jongseong nieun-hieuh
+  + "ng <> \u11bc;"   // hangul jongseong ieung
+  + "n <> \u11ab;"    // hangul jongseong nieun
+  + "m <> \u11b7;"    // hangul jongseong mieum
+  + "lt <> \u11b4;"   // hangul jongseong rieul-thieuth
+  + "ls <> \u11b3;"   // hangul jongseong rieul-sios
+  + "lp <> \u11b5;"   // hangul jongseong rieul-phieuph
+  + "lm <> \u11b1;"   // hangul jongseong rieul-mieum
+  + "lh <> \u11b6;"   // hangul jongseong rieul-hieuh
+  + "lg <> \u11b0;"   // hangul jongseong rieul-kiyeok
+  + "lb <> \u11b2;"   // hangul jongseong rieul-pieup
+  + "l <> \u11af;"    // hangul jongseong rieul
+  + "k <> \u11bf;"    // hangul jongseong khieukh
+  + "j <> \u11bd;"    // hangul jongseong cieuc
+  + "h <> \u11c2;"    // hangul jongseong hieuh
+  + "gs <> \u11aa;"   // hangul jongseong kiyeok-sios
+  + "gg <> \u11a9;"   // hangul jongseong ssangkiyeok
+  + "g <> \u11a8;"    // hangul jongseong kiyeok
+  + "d <> \u11ae;"    // hangul jongseong tikeut
+  + "c <> \u11be;"     // hangul jongseong chieuch
+  + "bs <> \u11b9;"   // hangul jongseong pieup-sios
+  + "b <> \u11b8;"    // hangul jongseong pieup
+
+  // extra English letters
+  // {moved to bottom - aliu}
+
+  + "z > |s;"
+  //{ + "Z > |s;" } masked
+  + "x > |ks;"
+  + "X > |ks;"
+  + "v > |b;"
+  + "V > |b;"
+  + "r > |l;"
+  + "R > |l;"
+  + "q > |k;"
+  + "Q > |k;"
+  + "f > |p;"
+  + "F > |p;"
+  //{ + "c > |k;" } masked
+  + "C > |k;"
+  
+  + "y > \u1172;"   // hangul jungseong yu
+  + "w > \u1171;"   // hangul jungseong wi
+  
+
+  // ====================================
+  // Normal final rule: remove '
+  // ====================================
+
+  + "''>;"
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_Latin_Kana.java b/src/com/ibm/text/resources/TransliterationRule_Latin_Kana.java
new file mode 100755
index 0000000..4296559
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_Latin_Kana.java
@@ -0,0 +1,1338 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_Latin_Kana.java,v $ 
+ * $Date: 2000/03/10 04:07:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_Latin_Kana extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            // Lowercase Latin to hiragana
+            // Uppercase Latin to katakana
+
+            { "Rule", ""
+                //# $Revision: 1.2 $
+                // Transliteration rules for Japanese Hiragana and Katakana to
+                // romaji
+                // lower case roman generates hiragana.
+                // upper case roman generates katakana.
+                // Uses modified Hepburn. Small changes to make unambiguous.
+                // Kunrei-shiki: Hepburn/MHepburn
+                /*
+                si:     shi
+                si ~ya: sha
+                si ~yu: shu
+                si ~yo: sho
+                zi:     ji
+                zi ~ya: ja
+                zi ~yu: ju
+                zi ~yo: jo
+                ti:     chi
+                ti ~ya: cha
+                ti ~yu: chu
+                ti ~yu: cho
+                tu:     tsu
+                di:     ji/dji
+                du:     zu/dzu
+                hu:     fu
+                // for foreign words
+                se ~i   si
+                si ~e   she
+                
+                ze ~i   zi
+                zi ~e   je
+                
+                te ~i   ti
+                ti ~e   che
+                te ~u   tu
+                
+                de ~i   di
+                de ~u   du
+                de ~i   di
+                
+                he ~u:  hu
+                hu ~a   fa
+                hu ~i   fi
+                hu ~e   he
+                hu ~o   ho
+                // Most small forms are generated, but if necessary
+                // explicit small forms are given with ~a, ~ya, etc.
+                */
+                //#######################################
+                // Definitions of variables to be substituted
+                //#######################################
+                
+                + "vowel=[aeiou];"
+                + "quote='';"
+
+                // now the kana
+                + "long=\u30FC;"
+
+                + "~a=\u3041;"
+                + "^a=\u3042;"
+                + "~i=\u3043;"
+                + "^i=\u3044;"
+                + "~u=\u3045;"
+                + "^u=\u3046;"
+                + "~e=\u3047;"
+                + "^e=\u3048;"
+                + "~o=\u3049;"
+                + "^o=\u304A;"
+
+                + "ka=\u304B;"
+                + "ga=\u304C;"
+                + "ki=\u304D;"
+                + "gi=\u304E;"
+                + "ku=\u304F;"
+                + "gu=\u3050;"
+                + "ke=\u3051;"
+                + "ge=\u3052;"
+                + "ko=\u3053;"
+                + "go=\u3054;"
+
+                //these are small katakana
+                + "~ka=\u30F5;"
+                + "~ke=\u30F6;"
+
+                + "sa=\u3055;"
+                + "za=\u3056;"
+                + "si=\u3057;"
+                + "zi=\u3058;"
+                + "su=\u3059;"
+                + "zu=\u305A;"
+                + "se=\u305B;"
+                + "ze=\u305C;"
+                + "so=\u305D;"
+                + "zo=\u305E;"
+
+                + "ta=\u305F;"
+                + "da=\u3060;"
+                + "ti=\u3061;"
+                + "di=\u3062;"
+                + "~tu=\u3063;"
+                + "tu=\u3064;"
+                + "du=\u3065;"
+                + "te=\u3066;"
+                + "de=\u3067;"
+                + "to=\u3068;"
+                + "do=\u3069;"
+
+                + "na=\u306A;"
+                + "ni=\u306B;"
+                + "nu=\u306C;"
+                + "ne=\u306D;"
+                + "no=\u306E;"
+
+                + "ha=\u306F;"
+                + "ba=\u3070;"
+                + "pa=\u3071;"
+                + "hi=\u3072;"
+                + "bi=\u3073;"
+                + "pi=\u3074;"
+                + "hu=\u3075;"
+                + "bu=\u3076;"
+                + "pu=\u3077;"
+                + "he=\u3078;"
+                + "be=\u3079;"
+                + "pe=\u307A;"
+                + "ho=\u307B;"
+                + "bo=\u307C;"
+                + "po=\u307D;"
+
+                + "ma=\u307E;"
+                + "mi=\u307F;"
+                + "mu=\u3080;"
+                + "me=\u3081;"
+                + "mo=\u3082;"
+
+                + "~ya=\u3083;"
+                + "ya=\u3084;"
+                + "~yu=\u3085;"
+                + "yu=\u3086;"
+                + "~yo=\u3087;"
+                + "yo=\u3088;"
+                
+                + "ra=\u3089;"
+                + "ri=\u308A;"
+                + "ru=\u308B;"
+                + "re=\u308C;"
+                + "ro=\u308D;"
+
+                + "~wa=\u308E;"
+                + "wa=\u308F;"
+                + "wi=\u3090;"
+                + "we=\u3091;"
+                + "wo=\u3092;"
+
+                + "^n=\u3093;"
+                + "vu=\u3094;"
+                
+                // alternates, just to make the rules easier
+                + "~yi=\u3043;"
+                + "yi=\u3044;"
+                + "~ye=\u3047;"
+                + "ye=\u3048;"
+                + "wu={^u};"
+                // end alternates
+
+                // Katakana
+
+                + "~A=\u30A1;"
+                + "^A=\u30A2;"
+                + "~I=\u30A3;"
+                + "^I=\u30A4;"
+                + "~U=\u30A5;"
+                + "^U=\u30A6;"
+                + "~E=\u30A7;"
+                + "^E=\u30A8;"
+                + "~O=\u30A9;"
+                + "^O=\u30AA;"
+
+                + "KA=\u30AB;"
+                + "GA=\u30AC;"
+                + "KI=\u30AD;"
+                + "GI=\u30AE;"
+                + "KU=\u30AF;"
+                + "GU=\u30B0;"
+                + "KE=\u30B1;"
+                + "GE=\u30B2;"
+                + "KO=\u30B3;"
+                + "GO=\u30B4;"
+
+                //these generate small katakana
+                + "~KA=\u30F5;"
+                + "~KE=\u30F6;"
+
+                + "SA=\u30B5;"
+                + "ZA=\u30B6;"
+                + "SI=\u30B7;"
+                + "ZI=\u30B8;"
+                + "SU=\u30B9;"
+                + "ZU=\u30BA;"
+                + "SE=\u30BB;"
+                + "ZE=\u30BC;"
+                + "SO=\u30BD;"
+                + "ZO=\u30BE;"
+
+                + "TA=\u30BF;"
+                + "DA=\u30C0;"
+                + "TI=\u30C1;"
+                + "DI=\u30C2;"
+                + "~TU=\u30C3;"
+                + "TU=\u30C4;"
+                + "DU=\u30C5;"
+                + "TE=\u30C6;"
+                + "DE=\u30C7;"
+                + "TO=\u30C8;"
+                + "DO=\u30C9;"
+
+                + "NA=\u30CA;"
+                + "NI=\u30CB;"
+                + "NU=\u30CC;"
+                + "NE=\u30CD;"
+                + "NO=\u30CE;"
+
+                + "HA=\u30CF;"
+                + "BA=\u30D0;"
+                + "PA=\u30D1;"
+                + "HI=\u30D2;"
+                + "BI=\u30D3;"
+                + "PI=\u30D4;"
+                + "HU=\u30D5;"
+                + "BU=\u30D6;"
+                + "PU=\u30D7;"
+                + "HE=\u30D8;"
+                + "BE=\u30D9;"
+                + "PE=\u30DA;"
+                + "HO=\u30DB;"
+                + "BO=\u30DC;"
+                + "PO=\u30DD;"
+
+                + "MA=\u30DE;"
+                + "MI=\u30DF;"
+                + "MU=\u30E0;"
+                + "ME=\u30E1;"
+                + "MO=\u30E2;"
+
+                + "~YA=\u30E3;"
+                + "YA=\u30E4;"
+                + "~YU=\u30E5;"
+                + "YU=\u30E6;"
+                + "~YO=\u30E7;"
+                + "YO=\u30E8;"
+                + "~WA=\u30EE;"
+                
+                // alternates, just to make the rules easier
+                + "~YI=\u30A3;"
+                + "YI=\u30A4;"
+                + "~YE=\u30A7;"
+                + "YE=\u30A8;"
+                + "WU={^U};"
+                // end alternates
+
+                + "RA=\u30E9;"
+                + "RI=\u30EA;"
+                + "RU=\u30EB;"
+                + "RE=\u30EC;"
+                + "RO=\u30ED;"
+
+                + "VA=\u30F7;"
+                + "VI=\u30F8;"
+                + "VU=\u30F4;"
+                + "VE=\u30F9;"
+                + "VO=\u30FA;"
+
+                + "WA=\u30EF;"
+                + "WI=\u30F0;"
+                + "WE=\u30F1;"
+                + "WO=\u30F2;"
+
+                + "^N=\u30F3;"
+                + "LONG=\u30FC;"
+                + "QUOTE='';"
+                
+                // Variables used for double-letters with tsu
+                
+                + "K-START=[{KA}{KI}{KU}{KE}{KO}{ka}{ki}{ku}{ke}{ko}];"
+                + "G-START=[{GA}{GI}{GU}{GE}{GO}{ga}{gi}{gu}{ge}{go}];"
+                
+                + "S-START=[{SA}{SI}{SU}{SE}{SO}{sa}{si}{su}{se}{so}];"
+                + "Z-START=[{ZA}{ZU}{ZE}{ZO}{za}{zu}{ze}{zo}];"
+                + "J-START=[{ZI}{zi}];"
+                
+                + "T-START=[{TA}{TI}{TU}{TE}{TO}{ta}{ti}{tu}{te}{to}];"
+                + "D-START=[{DA}{DI}{DU}{DE}{DO}{da}{di}{du}{de}{do}];"
+                
+                + "N-START=[{NA}{NI}{NU}{NE}{NO}{na}{ni}{nu}{ne}{no}];"
+                
+                + "H-START=[{HA}{HI}{HE}{HO}{ha}{hi}{he}{ho}];"
+                + "F-START=[{HU}{hu}];"
+                + "B-START=[{BA}{BI}{BU}{BE}{BO}{ba}{bi}{bu}{be}{bo}];"
+                + "P-START=[{PA}{PI}{PU}{PE}{PO}{pa}{pi}{pu}{pe}{po}];"
+                
+                + "M-START=[{MA}{MI}{MU}{ME}{MO}{ma}{mi}{mu}{me}{mo}];"
+                
+                + "Y-START=[{YA}{YU}{YO}{ya}{yu}{yo}];"
+                
+                + "R-START=[{RA}{RI}{RU}{RE}{RO}{ra}{ri}{ru}{re}{ro}];"
+                
+                + "W-START=[{WA}{WI}{WE}{WO}{wa}{wi}{we}{wo}];"
+                
+                + "V-START=[{VA}{VI}{VU}{VE}{VO}{vu}];"
+                
+                // lowercase copies for convenience in making hiragana
+
+                + "k-start={K-START};"
+                + "g-start={G-START};"
+                + "s-start={S-START};"
+                + "z-start={Z-START};"
+                + "j-start={J-START};"
+                + "t-start={T-START};"
+                + "d-start={D-START};"
+                + "n-start={N-START};"
+                + "h-start={H-START};"
+                + "f-start={F-START};"
+                + "b-start={B-START};"
+                + "p-start={P-START};"
+                + "m-start={M-START};"
+                + "y-start={Y-START};"
+                + "r-start={R-START};"
+                + "w-start={W-START};"
+                + "v-start={V-START};"
+ 
+                // remember that the order is very significant:
+                // always put longer before shorter elements
+                
+                //#######################################
+                // KATAKANA
+                //#######################################
+
+                + "VA>{VA};"
+                + "VI>{VI};"
+                + "VE>{VE};"
+                + "VO>{VO};"
+
+                + "VA<{VA};"
+                + "VI<{VI};"
+                + "VE<{VE};"
+                + "VO<{VO};"
+
+                //#######################################
+                // KATAKANA SHARED
+                // These are also used to produce hiragana, by lowercasing
+                //#######################################
+                
+                + "A>{^A};"
+
+                + "BA>{BA};"
+                + "BI>{BI};"
+                + "BU>{BU};"
+                + "BE>{BE};"
+                + "BO>{BO};"
+                + "BY>{BI}|~Y;"
+
+                + "CHI>{TI};"
+                + "CH>{TI}|~Y;"
+
+                + "C(I>|S;"
+                + "C(E>|S;"
+
+                + "DA>{DA};"
+                + "DI>{DE}{~I};"
+                + "DU>{DE}{~U};"
+                + "DE>{DE};"
+                + "DO>{DO};"
+                + "DZU>{DU};"
+                + "DJI>{DI};"
+                + "DJ>{DI}|~Y;"
+
+                + "E>{^E};"
+
+                + "FU>{HU};"
+
+                + "GA>{GA};"
+                + "GI>{GI};"
+                + "GU>{GU};"
+                + "GE>{GE};"
+                + "GO>{GO};"
+                + "GY>{GI}|~Y;"
+
+                + "HA>{HA};"
+                + "HI>{HI};"
+                + "HU>{HE}{~U};"
+                + "HE>{HE};"
+                + "HO>{HO};"
+
+                + "I>{^I};"
+
+                + "JI>{ZI};"
+
+                + "KA>{KA};"
+                + "KI>{KI};"
+                + "KU>{KU};"
+                + "KE>{KE};"
+                + "KO>{KO};"
+                + "KY>{KI}|~Y;"
+
+                + "MA>{MA};"
+                + "MI>{MI};"
+                + "MU>{MU};"
+                + "ME>{ME};"
+                + "MO>{MO};"
+                + "MY>{MI}|~Y;"
+                
+                + "M(P>{^N};"
+                + "M(B>{^N};"
+                + "M(F>{^N};"
+                + "M(V>{^N};"
+
+                + "NA>{NA};"
+                + "NI>{NI};"
+                + "NU>{NU};"
+                + "NE>{NE};"
+                + "NO>{NO};"
+                + "NY>{NI}|~Y;"
+
+                + "O>{^O};"
+
+                + "PA>{PA};"
+                + "PI>{PI};"
+                + "PU>{PU};"
+                + "PE>{PE};"
+                + "PO>{PO};"
+                + "PY>{PI}|~Y;"
+
+                + "RA>{RA};"
+                + "RI>{RI};"
+                + "RU>{RU};"
+                + "RE>{RE};"
+                + "RO>{RO};"
+                + "RY>{RI}|~Y;"
+
+                + "SA>{SA};"
+                + "SI>{SE}{~I};"
+                + "SU>{SU};"
+                + "SE>{SE};"
+                + "SO>{SO};"
+
+                + "SHI>{SI};"
+                + "SH>{SI}|~Y;"
+                
+                + "TA>{TA};"
+                + "TI>{TE}{~I};"
+                + "TU>{TE}{~U};"
+                + "TE>{TE};"
+                + "TO>{TO};"
+                
+                + "TSU>{TU};"
+                //+ "TS>{TU}|~;"
+
+                + "U>{^U};"
+
+                + "VU>{VU};"
+
+                + "WA>{WA};"
+                + "WI>{WI};"
+                + "WU>{WU};"
+                + "WE>{WE};"
+                + "WO>{WO};"
+
+                + "YA>{YA};"
+                + "YI>{YI};"
+                + "YU>{YU};"
+                + "YE>{YE};"
+                + "YO>{YO};"
+
+                + "ZA>{ZA};"
+                + "ZI>{ZE}{~I};"
+                + "ZU>{ZU};"
+                + "ZE>{ZE};"
+                + "ZO>{ZO};"
+
+                // SMALL FORMS
+                
+                + "~A>{~A};"
+                + "~I>{~I};"
+                + "~U>{~U};"
+                + "~E>{~E};"
+                + "~O>{~O};"
+                + "~KA>{~KA};"
+                + "~KE>{~KE};"
+                + "~TSU>{~TU};"
+                + "~WA>{~WA};"
+                + "~YA>{~YA};"
+                + "~YI>{~YI};"
+                + "~YU>{~YU};"
+                + "~YE>{~YE};"
+                + "~YO>{~YO};"
+
+                // DOUBLE CONSONANTS
+                
+                + "B(B>{~TU};"
+                + "C(K>{~TU};"
+                + "C(C>{~TU};"
+                + "C(Q>{~TU};"
+                + "D(D>{~TU};"
+                + "F(F>{~TU};"
+                + "G(G>{~TU};"
+                + "H(H>{~TU};"
+                + "J(J>{~TU};"
+                + "K(K>{~TU};"
+                + "L(L>{~TU};"
+                + "M(M>{~TU};"
+                + "N(N>{~TU};"
+                + "P(P>{~TU};"
+                + "Q(Q>{~TU};"
+                + "R(R>{~TU};"
+                + "S(SH>{~TU};"
+                + "S(S>{~TU};"
+                + "T(CH>{~TU};"
+                + "T(T>{~TU};"
+                + "V(V>{~TU};"
+                + "W(W>{~TU};"
+                + "X(X>{~TU};"
+                + "Y(Y>{~TU};"
+                + "Z(Z>{~TU};"
+                
+                // ########################################
+                // CATCH MISSING VOWELS!
+                // THESE ARE TO INSURE COMPLETENESS, THAT
+                // ALL ROMAJI MAPS TO KANA
+                // ########################################
+
+                /*
+                + "SH>{SI};"
+                + "TS>{TU};"
+                + "CH>{TI};"
+                + "DJ>{DI};"
+                + "DZ>{DU};"
+                */
+                
+                // THE FOLLOWING ARE NOT REALLY NECESSARY, BUT PRODUCE
+                // SLIGHTLY MORE NATURAL RESULTS.
+                
+              //masked: + "BY>{BI};"
+                + "CY>{SE}{~I};"
+                + "DY>{DE}{~I};"
+              //masked: + "GY>{GI};"
+                + "HY>{HI};"
+              //masked: + "KY>{KI};"
+              //masked: + "MY>{MI};"
+              //masked: + "PY>{PI};"
+              //masked: + "RY>{RI};"
+                + "SY>{SE}{~I};"
+                + "TY>{TE}{~I};"
+                + "ZY>{ZE}{~I};"
+
+                // SIMPLE SUBSTITUTIONS USING BACKUP
+                
+                + "C>|K;"
+                + "F>{HU}|~;"
+                + "J>{ZI}|~Y;"
+                + "L>|R;"
+                + "Q>|K;" // BACKUP AND REDO
+                + "V>{VU}|~;"
+                + "W>{^U}|~;"
+                + "X>|KS;"
+
+                // WE HAD TO LIST THE LONGER ONES FIRST,
+                // SO HERE ARE THE ISOLATED CONSONANTS
+                
+                + "B>{BU};"
+                + "D>{DE};"
+              //masked: + "F>{HU};"
+                + "G>{GU};"
+                + "H>{HE};"
+              //masked: + "J>{ZI};"
+                + "K>{KU};"
+                + "M>{^N};"
+                + "N>{^N};"
+                + "P>{PU};"
+                + "R>{RU};"
+                + "S>{SU};"
+                + "T>{TE};"
+              //masked: + "V>{BU};"
+              //masked: + "W>{^U};"
+              //masked: + "X>{KU}{SU};"
+                + "Y>{^I};"
+                + "Z>{ZU};"
+                
+                // NOW KANA TO ROMAN
+
+                + "GYA<{GI}{~YA};"
+                + "GYI<{GI}{~I};"
+                + "GYU<{GI}{~YU};"
+                + "GYE<{GI}{~E};"
+                + "GYO<{GI}{~YO};"
+                
+                + "GA<{GA};"
+                + "GI<{GI};"
+                + "GU<{GU};"
+                + "GE<{GE};"
+                + "GO<{GO};"
+
+                + "KYA<{KI}{~YA};"
+                + "KYI<{KI}{~I};"
+                + "KYU<{KI}{~YU};"
+                + "KYE<{KI}{~E};"
+                + "KYO<{KI}{~YO};"
+
+                + "KA<{KA};"
+                + "KI<{KI};"
+                + "KU<{KU};"
+                + "KE<{KE};"
+                + "KO<{KO};"
+
+                + "JA<{ZI}{~YA};"
+                + "JI<{ZI}{~I};"
+                + "JU<{ZI}{~YU};"
+                + "JE<{ZI}{~E};"
+                + "JO<{ZI}{~YO};"
+                + "JI<{ZI};"
+                
+                + "ZA<{ZA};"
+                + "ZI<{ZE}{~I};"
+                + "ZU<{ZU};"
+                + "ZE<{ZE};"
+                + "ZO<{ZO};"
+
+                + "SHA<{SI}{~YA};"
+                + "SHI<{SI}{~I};"
+                + "SHU<{SI}{~YU};"
+                + "SHE<{SI}{~E};"
+                + "SHO<{SI}{~YO};"
+                + "SHI<{SI};"
+                
+                + "SA<{SA};"
+                + "SI<{SE}{~I};"
+                + "SU<{SU};"
+                + "SE<{SE};"
+                + "SO<{SO};"
+
+                + "DJA<{DI}{~YA};"
+                + "DJI<{DI}{~I};"
+                + "DJU<{DI}{~YU};"
+                + "DJE<{DI}{~E};"
+                + "DJO<{DI}{~YO};"
+                + "DJI<{DI};"
+                
+                + "DZU<{DU};"
+                
+                + "DA<{DA};"
+                + "DI<{DE}{~I};"
+                + "DU<{DE}{~U};"
+                + "DE<{DE};"
+                + "DO<{DO};"
+
+                + "CHA<{TI}{~YA};"
+                + "CHI<{TI}{~I};"
+                + "CHU<{TI}{~YU};"
+                + "CHE<{TI}{~E};"
+                + "CHO<{TI}{~YO};"
+                + "CHI<{TI};"
+                
+                + "TSU<{TU};"
+                
+                + "TA<{TA};"
+                + "TI<{TE}{~I};"
+                + "TU<{TE}{~U};"
+                + "TE<{TE};"
+                + "TO<{TO};"
+
+                + "NYA<{NI}{~YA};"
+                + "NYI<{NI}{~I};"
+                + "NYU<{NI}{~YU};"
+                + "NYE<{NI}{~E};"
+                + "NYO<{NI}{~YO};"
+                
+                + "NA<{NA};"
+                + "NI<{NI};"
+                + "NU<{NU};"
+                + "NE<{NE};"
+                + "NO<{NO};"
+
+                + "BYA<{BI}{~YA};"
+                + "BYI<{BI}{~I};"
+                + "BYU<{BI}{~YU};"
+                + "BYE<{BI}{~E};"
+                + "BYO<{BI}{~YO};"
+                
+                + "BA<{BA};"
+                + "BI<{BI};"
+                + "BU<{BU};"
+                + "BE<{BE};"
+                + "BO<{BO};"
+
+                + "PYA<{PI}{~YA};"
+                + "PYI<{PI}{~I};"
+                + "PYU<{PI}{~YU};"
+                + "PYE<{PI}{~E};"
+                + "PYO<{PI}{~YO};"
+                
+                + "PA<{PA};"
+                + "PI<{PI};"
+                + "PU<{PU};"
+                + "PE<{PE};"
+                + "PO<{PO};"
+
+                + "FA<{HU}{~A};"
+                + "FI<{HU}{~I};"
+                + "FE<{HU}{~E};"
+                + "FO<{HU}{~O};"
+                + "FU<{HU};"
+                
+                + "HA<{HA};"
+                + "HI<{HI};"
+                + "HU<{HE}{~U};"
+                + "HE<{HE};"
+                + "HO<{HO};"
+
+                + "MYA<{MI}{~YA};"
+                + "MYI<{MI}{~I};"
+                + "MYU<{MI}{~YU};"
+                + "MYE<{MI}{~E};"
+                + "MYO<{MI}{~YO};"
+                
+                + "MA<{MA};"
+                + "MI<{MI};"
+                + "MU<{MU};"
+                + "ME<{ME};"
+                + "MO<{MO};"
+
+                + "YA<{YA};"
+                //+ "YE<{YI};"
+                + "YU<{YU};"
+                //+ "YE<{YE};"
+                + "YO<{YO};"
+
+                + "RYA<{RI}{~YA};"
+                + "RYI<{RI}{~I};"
+                + "RYU<{RI}{~YU};"
+                + "RYE<{RI}{~E};"
+                + "RYO<{RI}{~YO};"
+                
+                + "RA<{RA};"
+                + "RI<{RI};"
+                + "RU<{RU};"
+                + "RE<{RE};"
+                + "RO<{RO};"
+
+                + "WA<{WA};"
+                + "WI<{WI};"
+                + "WE<{WE};"
+                + "WO<{WO};"
+                //+ "WU<{WU};"
+
+                + "VA<{VU}{~A};"
+                + "VI<{VU}{~I};"
+                + "VE<{VU}{~E};"
+                + "VO<{VU}{~O};"
+                + "VU<{VU};"
+                
+                // DOUBLED LETTERS
+
+                + "N''<{^N}({^A};"
+                + "N''<{^N}({^I};"
+                + "N''<{^N}({^U};"
+                + "N''<{^N}({^E};"
+                + "N''<{^N}({^O};"
+                + "N''<{^N}({NA};"
+                + "N''<{^N}({NI};"
+                + "N''<{^N}({NU};"
+                + "N''<{^N}({NE};"
+                + "N''<{^N}({NO};"
+                + "N''<{^N}({YA};"
+                + "N''<{^N}({YU};"
+                + "N''<{^N}({YO};"
+                + "N''<{^N}({^N};"
+                + "N<{^N};"
+                
+                + "N<{~TU}({N-START};"
+                + "M<{~TU}({M-START};"
+                + "W<{~TU}({W-START};"
+                + "Y<{~TU}({Y-START};"
+                + "G<{~TU}({G-START};"
+                + "K<{~TU}({K-START};"
+                + "Z<{~TU}({Z-START};"
+                + "J<{~TU}({J-START};"
+                + "S<{~TU}({S-START};"
+                + "D<{~TU}({D-START};"
+                + "T<{~TU}({T-START};"
+                + "B<{~TU}({B-START};"
+                + "P<{~TU}({P-START};"
+                + "H<{~TU}({H-START};"
+                + "F<{~TU}({F-START};"
+                + "R<{~TU}({R-START};"
+                + "V<{~TU}({V-START};"
+
+                + "A<{^A};" // MOVED THIS BLOCK DOWN {aliu}
+                + "I<{^I};"
+                + "U<{^U};"
+                + "E<{^E};"
+                + "O<{^O};"
+                
+                // SMALL FORMS
+                
+                + "~A<{~A};"
+                + "~I<{~I};"
+                + "~U<{~U};"
+                + "~E<{~E};"
+                + "~O<{~O};"
+                + "~KA<{~KA};"
+                + "~KE<{~KE};"
+                + "~YA<{~YA};"
+                + "~YU<{~YU};"
+                + "~YO<{~YO};"
+                + "~TSU<{~TU};"
+                + "~WA<{~WA};"
+                
+                // LENGTH MARK. LATER, COULD USE CIRCUMFLEX
+
+                + "A<A){LONG};" // LIU
+                + "E<E){LONG};" // LIU
+                + "I<I){LONG};" // LIU
+                + "O<O){LONG};" // LIU
+                + "U<U){LONG};" // LIU
+
+                //#######################################
+                // HIRAGANA
+                // These are derived from the above by lowercasing
+                //#######################################
+
+                + "a>{^a};"
+
+                + "ba>{ba};"
+                + "bi>{bi};"
+                + "bu>{bu};"
+                + "be>{be};"
+                + "bo>{bo};"
+                + "by>{bi}|~y;"
+
+                + "chi>{ti};"
+                + "ch>{ti}|~y;"
+
+                + "c(i>|s;"
+                + "c(e>|s;"
+
+                + "da>{da};"
+                + "di>{de}{~i};"
+                + "du>{de}{~u};"
+                + "de>{de};"
+                + "do>{do};"
+                + "dzu>{du};"
+                + "dji>{di};"
+                + "dj>{di}|~y;"
+
+                + "e>{^e};"
+
+                + "fu>{hu};"
+
+                + "ga>{ga};"
+                + "gi>{gi};"
+                + "gu>{gu};"
+                + "ge>{ge};"
+                + "go>{go};"
+                + "gy>{gi}|~y;"
+
+                + "ha>{ha};"
+                + "hi>{hi};"
+                + "hu>{he}{~u};"
+                + "he>{he};"
+                + "ho>{ho};"
+
+                + "i>{^i};"
+
+                + "ji>{zi};"
+
+                + "ka>{ka};"
+                + "ki>{ki};"
+                + "ku>{ku};"
+                + "ke>{ke};"
+                + "ko>{ko};"
+                + "ky>{ki}|~y;"
+
+                + "ma>{ma};"
+                + "mi>{mi};"
+                + "mu>{mu};"
+                + "me>{me};"
+                + "mo>{mo};"
+                + "my>{mi}|~y;"
+                
+                + "m(p>{^n};"
+                + "m(b>{^n};"
+                + "m(f>{^n};"
+                + "m(v>{^n};"
+
+                + "na>{na};"
+                + "ni>{ni};"
+                + "nu>{nu};"
+                + "ne>{ne};"
+                + "no>{no};"
+                + "ny>{ni}|~y;"
+
+                + "o>{^o};"
+
+                + "pa>{pa};"
+                + "pi>{pi};"
+                + "pu>{pu};"
+                + "pe>{pe};"
+                + "po>{po};"
+                + "py>{pi}|~y;"
+
+                + "ra>{ra};"
+                + "ri>{ri};"
+                + "ru>{ru};"
+                + "re>{re};"
+                + "ro>{ro};"
+                + "ry>{ri}|~y;"
+
+                + "sa>{sa};"
+                + "si>{se}{~i};"
+                + "su>{su};"
+                + "se>{se};"
+                + "so>{so};"
+
+                + "shi>{si};"
+                + "sh>{si}|~y;"
+                
+                + "ta>{ta};"
+                + "ti>{te}{~i};"
+                + "tu>{te}{~u};"
+                + "te>{te};"
+                + "to>{to};"
+                
+                + "tsu>{tu};"
+                //+ "ts>{tu}|~;"
+
+                + "u>{^u};"
+
+                + "vu>{vu};"
+
+                + "wa>{wa};"
+                + "wi>{wi};"
+                + "wu>{wu};"
+                + "we>{we};"
+                + "wo>{wo};"
+
+                + "ya>{ya};"
+                + "yi>{yi};"
+                + "yu>{yu};"
+                + "ye>{ye};"
+                + "yo>{yo};"
+
+                + "za>{za};"
+                + "zi>{ze}{~i};"
+                + "zu>{zu};"
+                + "ze>{ze};"
+                + "zo>{zo};"
+
+                // small forms
+                
+                + "~a>{~a};"
+                + "~i>{~i};"
+                + "~u>{~u};"
+                + "~e>{~e};"
+                + "~o>{~o};"
+                + "~ka>{~ka};"
+                + "~ke>{~ke};"
+                + "~tsu>{~tu};"
+                + "~wa>{~wa};"
+                + "~ya>{~ya};"
+                + "~yi>{~yi};"
+                + "~yu>{~yu};"
+                + "~ye>{~ye};"
+                + "~yo>{~yo};"
+
+                // Double Consonants
+                
+                + "b(b>{~tu};"
+                + "c(k>{~tu};"
+                + "c(c>{~tu};"
+                + "c(q>{~tu};"
+                + "d(d>{~tu};"
+                + "f(f>{~tu};"
+                + "g(g>{~tu};"
+                + "h(h>{~tu};"
+                + "j(j>{~tu};"
+                + "k(k>{~tu};"
+                + "l(l>{~tu};"
+                + "m(m>{~tu};"
+                + "n(n>{~tu};"
+                + "p(p>{~tu};"
+                + "q(q>{~tu};"
+                + "r(r>{~tu};"
+                + "s(sh>{~tu};"
+                + "s(s>{~tu};"
+                + "t(ch>{~tu};"
+                + "t(t>{~tu};"
+                + "v(v>{~tu};"
+                + "w(w>{~tu};"
+                + "x(x>{~tu};"
+                + "y(y>{~tu};"
+                + "z(z>{~tu};"
+                
+                // ########################################
+                // catch missing vowels!
+                // These are to insure completeness, that
+                // all romaji maps to kana
+                // ########################################
+
+                /*
+                + "sh>{si};"
+                + "ts>{tu};"
+                + "ch>{ti};"
+                + "dj>{di};"
+                + "dz>{du};"
+                */
+                
+                // the following are not really necessary, but produce
+                // slightly more natural results.
+                
+              //masked: + "by>{bi};"
+                + "cy>{se}{~i};"
+                + "dy>{de}{~i};"
+              //masked: + "gy>{gi};"
+                + "hy>{hi};"
+              //masked: + "ky>{ki};"
+              //masked: + "my>{mi};"
+              //masked: + "py>{pi};"
+              //masked: + "ry>{ri};"
+                + "sy>{se}{~i};"
+                + "ty>{te}{~i};"
+                + "zy>{ze}{~i};"
+
+                // simple substitutions using backup
+                
+                + "c>|k;"
+                + "f>{hu}|~;"
+                + "j>{zi}|~y;"
+                + "l>|r;"
+                + "q>|k;" // backup and redo
+                + "v>{vu}|~;"
+                + "w>{^u}|~;"
+                + "x>|ks;"
+
+                // We had to list the longer ones first,
+                // so here are the isolated consonants
+                
+                + "b>{bu};"
+                + "d>{de};"
+              //masked: + "f>{hu};"
+                + "g>{gu};"
+                + "h>{he};"
+              //masked: + "j>{zi};"
+                + "k>{ku};"
+                + "m>{^n};"
+                + "n>{^n};"
+                + "p>{pu};"
+                + "r>{ru};"
+                + "s>{su};"
+                + "t>{te};"
+              //masked: + "v>{bu};"
+              //masked: + "w>{^u};"
+              //masked: + "x>{ku}{su};"
+                + "y>{^i};"
+                + "z>{zu};"
+                
+                // NOW KANA TO ROMAN
+
+                + "gya<{gi}{~ya};"
+                + "gyi<{gi}{~i};"
+                + "gyu<{gi}{~yu};"
+                + "gye<{gi}{~e};"
+                + "gyo<{gi}{~yo};"
+                
+                + "ga<{ga};"
+                + "gi<{gi};"
+                + "gu<{gu};"
+                + "ge<{ge};"
+                + "go<{go};"
+
+                + "kya<{ki}{~ya};"
+                + "kyi<{ki}{~i};"
+                + "kyu<{ki}{~yu};"
+                + "kye<{ki}{~e};"
+                + "kyo<{ki}{~yo};"
+
+                + "ka<{ka};"
+                + "ki<{ki};"
+                + "ku<{ku};"
+                + "ke<{ke};"
+                + "ko<{ko};"
+
+                + "ja<{zi}{~ya};"
+                + "ji<{zi}{~i};"
+                + "ju<{zi}{~yu};"
+                + "je<{zi}{~e};"
+                + "jo<{zi}{~yo};"
+                + "ji<{zi};"
+                
+                + "za<{za};"
+                + "zi<{ze}{~i};"
+                + "zu<{zu};"
+                + "ze<{ze};"
+                + "zo<{zo};"
+
+                + "sha<{si}{~ya};"
+                + "shi<{si}{~i};"
+                + "shu<{si}{~yu};"
+                + "she<{si}{~e};"
+                + "sho<{si}{~yo};"
+                + "shi<{si};"
+                
+                + "sa<{sa};"
+                + "si<{se}{~i};"
+                + "su<{su};"
+                + "se<{se};"
+                + "so<{so};"
+
+                + "dja<{di}{~ya};"
+                + "dji<{di}{~i};"
+                + "dju<{di}{~yu};"
+                + "dje<{di}{~e};"
+                + "djo<{di}{~yo};"
+                + "dji<{di};"
+                
+                + "dzu<{du};"
+                
+                + "da<{da};"
+                + "di<{de}{~i};"
+                + "du<{de}{~u};"
+                + "de<{de};"
+                + "do<{do};"
+
+                + "cha<{ti}{~ya};"
+                + "chi<{ti}{~i};"
+                + "chu<{ti}{~yu};"
+                + "che<{ti}{~e};"
+                + "cho<{ti}{~yo};"
+                + "chi<{ti};"
+                
+                + "tsu<{tu};"
+                
+                + "ta<{ta};"
+                + "ti<{te}{~i};"
+                + "tu<{te}{~u};"
+                + "te<{te};"
+                + "to<{to};"
+
+                + "nya<{ni}{~ya};"
+                + "nyi<{ni}{~i};"
+                + "nyu<{ni}{~yu};"
+                + "nye<{ni}{~e};"
+                + "nyo<{ni}{~yo};"
+                
+                + "na<{na};"
+                + "ni<{ni};"
+                + "nu<{nu};"
+                + "ne<{ne};"
+                + "no<{no};"
+
+                + "bya<{bi}{~ya};"
+                + "byi<{bi}{~i};"
+                + "byu<{bi}{~yu};"
+                + "bye<{bi}{~e};"
+                + "byo<{bi}{~yo};"
+                
+                + "ba<{ba};"
+                + "bi<{bi};"
+                + "bu<{bu};"
+                + "be<{be};"
+                + "bo<{bo};"
+
+                + "pya<{pi}{~ya};"
+                + "pyi<{pi}{~i};"
+                + "pyu<{pi}{~yu};"
+                + "pye<{pi}{~e};"
+                + "pyo<{pi}{~yo};"
+                
+                + "pa<{pa};"
+                + "pi<{pi};"
+                + "pu<{pu};"
+                + "pe<{pe};"
+                + "po<{po};"
+
+                + "fa<{hu}{~a};"
+                + "fi<{hu}{~i};"
+                + "fe<{hu}{~e};"
+                + "fo<{hu}{~o};"
+                + "fu<{hu};"
+                
+                + "ha<{ha};"
+                + "hi<{hi};"
+                + "hu<{he}{~u};"
+                + "he<{he};"
+                + "ho<{ho};"
+
+                + "mya<{mi}{~ya};"
+                + "myi<{mi}{~i};"
+                + "myu<{mi}{~yu};"
+                + "mye<{mi}{~e};"
+                + "myo<{mi}{~yo};"
+                
+                + "ma<{ma};"
+                + "mi<{mi};"
+                + "mu<{mu};"
+                + "me<{me};"
+                + "mo<{mo};"
+
+                + "ya<{ya};"
+                //+ "ye<{yi};"
+                + "yu<{yu};"
+                //+ "ye<{ye};"
+                + "yo<{yo};"
+
+                + "rya<{ri}{~ya};"
+                + "ryi<{ri}{~i};"
+                + "ryu<{ri}{~yu};"
+                + "rye<{ri}{~e};"
+                + "ryo<{ri}{~yo};"
+                
+                + "ra<{ra};"
+                + "ri<{ri};"
+                + "ru<{ru};"
+                + "re<{re};"
+                + "ro<{ro};"
+
+                + "wa<{wa};"
+                + "wi<{wi};"
+                + "we<{we};"
+                + "wo<{wo};"
+                //+ "wu<{wu};"
+
+                + "va<{vu}{~a};"
+                + "vi<{vu}{~i};"
+                + "ve<{vu}{~e};"
+                + "vo<{vu}{~o};"
+                + "vu<{vu};"
+                
+                // Doubled letters
+
+                + "n''<{^n}({^a};"
+                + "n''<{^n}({^i};"
+                + "n''<{^n}({^u};"
+                + "n''<{^n}({^e};"
+                + "n''<{^n}({^o};"
+                + "n''<{^n}({na};"
+                + "n''<{^n}({ni};"
+                + "n''<{^n}({nu};"
+                + "n''<{^n}({ne};"
+                + "n''<{^n}({no};"
+                + "n''<{^n}({ya};"
+                + "n''<{^n}({yu};"
+                + "n''<{^n}({yo};"
+                + "n''<{^n}({^n};"
+                + "n<{^n};"
+                
+                + "n<{~tu}({n-start};"
+                + "m<{~tu}({m-start};"
+                + "w<{~tu}({w-start};"
+                + "y<{~tu}({y-start};"
+                + "g<{~tu}({g-start};"
+                + "k<{~tu}({k-start};"
+                + "z<{~tu}({z-start};"
+                + "j<{~tu}({j-start};"
+                + "s<{~tu}({s-start};"
+                + "d<{~tu}({d-start};"
+                + "t<{~tu}({t-start};"
+                + "b<{~tu}({b-start};"
+                + "p<{~tu}({p-start};"
+                + "h<{~tu}({h-start};"
+                + "f<{~tu}({f-start};"
+                + "r<{~tu}({r-start};"
+                + "v<{~tu}({v-start};"
+
+                + "a<{^a};" // Moved this block down {aliu}
+                + "i<{^i};"
+                + "u<{^u};"
+                + "e<{^e};"
+                + "o<{^o};"
+                
+                // small forms
+                
+                + "~a<{~a};"
+                + "~i<{~i};"
+                + "~u<{~u};"
+                + "~e<{~e};"
+                + "~o<{~o};"
+              //masked: + "~ka<{~ka};" ({~ka} is an alias for {~KA})
+              //masked: + "~ke<{~ke};" ({~ke} is an alias for {~KE})
+                + "~ya<{~ya};"
+                + "~yu<{~yu};"
+                + "~yo<{~yo};"
+                + "~tsu<{~tu};"
+                + "~wa<{~wa};"
+                
+                // length mark. Later, could use circumflex
+
+                + "a<a){long};" // Liu
+                + "e<e){long};" // Liu
+                + "i<i){long};" // Liu
+                + "o<o){long};" // Liu
+                + "u<u){long};" // Liu
+
+                //#######################################
+                // Non-shared stuff goes here
+                
+                + "~>;"        // remove if not used
+                + "{quote}>;"  // remove if not used
+                //+ "<{quote};"
+                + "->{long};"
+
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_StraightQuotes_CurlyQuotes.java b/src/com/ibm/text/resources/TransliterationRule_StraightQuotes_CurlyQuotes.java
new file mode 100755
index 0000000..f76b69f
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_StraightQuotes_CurlyQuotes.java
@@ -0,0 +1,96 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_StraightQuotes_CurlyQuotes.java,v $ 
+ * $Date: 2000/03/10 04:07:31 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_StraightQuotes_CurlyQuotes extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            {   "Rule",
+                // Rewritten using character codes [LIU]
+                "white=[[:Zs:][:Zl:][:Zp:]];"
+                + "black=[^{white}];"
+                + "open=[:Ps:];"
+                + "dquote=\";"
+
+                + "lAng=\u3008;"
+                + "ldAng=\u300A;"
+                + "lBrk='[';"
+                + "lBrc='{';"
+
+                + "lquote=\u2018;"
+                + "rquote=\u2019;"
+                + "ldquote=\u201C;"
+                + "rdquote=\u201D;"
+
+                + "ldguill=\u00AB;"
+                + "rdguill=\u00BB;"
+                + "lguill=\u2039;"
+                + "rguill=\u203A;"
+
+                + "mdash=\u2014;"
+
+                //#######################################
+                // Conversions from input
+                //#######################################
+
+                // join single quotes
+                + "{lquote}''>{ldquote};"
+                + "{lquote}{lquote}>{ldquote};"
+                + "{rquote}''>{rdquote};"
+                + "{rquote}{rquote}>{rdquote};"
+
+                //smart single quotes
+                + "{white})''>{lquote};"
+                + "{open})''>{lquote};"
+                + "{black})''>{rquote};"
+                + "''>{lquote};"
+
+                //smart doubles
+                + "{white}){dquote}>{ldquote};"
+                + "{open}){dquote}>{ldquote};"
+                + "{black}){dquote}>{rdquote};"
+                + "{dquote}>{ldquote};"
+
+                // join single guillemets
+                + "{rguill}{rguill}>{rdguill};"
+                + "'>>'>{rdguill};"
+                + "{lguill}{lguill}>{ldguill};"
+                + "'<<'>{ldguill};"
+
+                // prevent double spaces
+                + "\\ )\\ >;"
+
+                // join hyphens into dash
+                + "-->{mdash};"
+
+                //#######################################
+                // Conversions back to input
+                //#######################################
+
+                //smart quotes
+                + "''<{lquote};"
+                + "''<{rquote};"
+                + "{dquote}<{ldquote};"
+                + "{dquote}<{rdquote};"
+
+                //hyphens
+                + "--<{mdash};"
+            }
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/TransliterationRule_UnicodeName_UnicodeChar.java b/src/com/ibm/text/resources/TransliterationRule_UnicodeName_UnicodeChar.java
new file mode 100755
index 0000000..b827486
--- /dev/null
+++ b/src/com/ibm/text/resources/TransliterationRule_UnicodeName_UnicodeChar.java
@@ -0,0 +1,1538 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/text/resources/Attic/TransliterationRule_UnicodeName_UnicodeChar.java,v $ 
+ * $Date: 2000/03/10 04:07:32 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.text.resources;
+
+import java.util.ListResourceBundle;
+
+public class TransliterationRule_UnicodeName_UnicodeChar extends ListResourceBundle {
+    /**
+     * Overrides ListResourceBundle
+     */
+    public Object[][] getContents() {
+        return new Object[][] {
+            { "Rule", new String[] {
+                "account of%>\u2100",
+                "addressed to the subject%>\u2101",
+                "adi shakti%>\u262c",
+                "airplane%>\u2708",
+                "all equal to%>\u224c",
+                "almost equal or equal to%>\u224a",
+                "almost equal to%>\u2248",
+                "angle%>\u2220",
+                "angstrom unit%>\u212b",
+                "ankh%>\u2625",
+                "anticlockwise contour integral%>\u2233",
+                "anticlockwise open circle arrow%>\u21ba",
+                "anticlockwise top semicircle arrow%>\u21b6",
+                "apl compose operator%>\u2300",
+                "apl out%>\u2301",
+                "apple logo%>\uf8ff",
+                "approaches the limit%>\u2250",
+                "approximately but not actually equal to%>\u2246",
+                "approximately equal to or the image of%>\u2252",
+                "approximately equal to%>\u2245",
+                "aquarius%>\u2652",
+                "arc%>\u2312",
+                "aries%>\u2648",
+                "ascending node%>\u260a",
+                "assertion%>\u22a6",
+                "asterisk operator%>\u2217",
+                "asterism%>\u2042",
+                "asymptotically equal to%>\u2243",
+                "back-tilted shadowed white right arrow%>\u27ab",
+                "balloon-spoked asterisk%>\u2749",
+                "ballot box with check%>\u2611",
+                "ballot box with x%>\u2612",
+                "ballot box%>\u2610",
+                "ballot x%>\u2718",
+                "barred eighth notes%>\u266b",
+                "barred sixteenth notes%>\u266c",
+                "because%>\u2235",
+                "benzene ring%>\u232c",
+                "between%>\u226c",
+                "biohazard%>\u2623",
+                "black center white star%>\u272c",
+                "black chess bishop%>\u265d",
+                "black chess king%>\u265a",
+                "black chess knight%>\u265e",
+                "black chess pawn%>\u265f",
+                "black chess queen%>\u265b",
+                "black chess rook%>\u265c",
+                "black circle%>\u25cf",
+                "black club suit%>\u2663",
+                "black diamond minus white x%>\u2756",
+                "black diamond suit%>\u2666",
+                "black diamond%>\u25c6",
+                "black down pointing small triangle%>\u25be",
+                "black down pointing triangle%>\u25bc",
+                "black florette%>\u273f",
+                "black four pointed star%>\u2726",
+                "black heart suit%>\u2665",
+                "black left pointing index%>\u261a",
+                "black left pointing pointer%>\u25c4",
+                "black left pointing small triangle%>\u25c2",
+                "black left pointing triangle%>\u25c0",
+                "black lower left triangle%>\u25e3",
+                "black lower right triangle%>\u25e2",
+                "black nib%>\u2712",
+                "black parallelogram%>\u25b0",
+                "black rectangle%>\u25ac",
+                "black right arrow%>\u27a1",
+                "black right arrowhead%>\u27a4",
+                "black right pointing index%>\u261b",
+                "black right pointing pointer%>\u25ba",
+                "black right pointing small triangle%>\u25b8",
+                "black right pointing triangle%>\u25b6",
+                "black scissors%>\u2702",
+                "black small square%>\u25aa",
+                "black smiling face%>\u263b",
+                "black spade suit%>\u2660",
+                "black square%>\u25a0",
+                "black star%>\u2605",
+                "black sun with rays%>\u2600",
+                "black telephone%>\u260e",
+                "black up pointing small triangle%>\u25b4",
+                "black up pointing triangle%>\u25b2",
+                "black upper left triangle%>\u25e4",
+                "black upper right triangle%>\u25e5",
+                "black vertical rectangle%>\u25ae",
+                "black-feathered lower right arrow%>\u27b4",
+                "black-feathered right arrow%>\u27b5",
+                "black-feathered upper right arrow%>\u27b6",
+                "black-letter c%>\u212d",
+                "black-letter h%>\u210c",
+                "black-letter i%>\u2111",
+                "black-letter r%>\u211c",
+                "black-letter z%>\u2128",
+                "blank%>\u2422",
+                "bottom half integral%>\u2321",
+                "bottom left corner%>\u231e",
+                "bottom left crop%>\u230d",
+                "bottom right corner%>\u231f",
+                "bottom right crop%>\u230c",
+                "bowtie%>\u22c8",
+                "bra%>\u2329",
+                "broken vertical bar%>\u00a6",
+                "bullet operator%>\u2219",
+                "bullet%>\u2022",
+                "bullseye%>\u25ce",
+                "c l symbol%>\u2104",
+                "cada una%>\u2106",
+                "caduceus%>\u2624",
+                "cancer%>\u264b",
+                "capricorn%>\u2651",
+                "care of%>\u2105",
+                "caret insertion point%>\u2041",
+                "caret%>\u2038",
+                "caution sign%>\u2621",
+                "cent sign%>\u00a2",
+                "character tie%>\u2040",
+                "check mark%>\u2713",
+                "chi rho%>\u2627",
+                "circle with all but upper left quadrant black%>\u25d5",
+                "circle with left half black%>\u25d0",
+                "circle with lower half black%>\u25d2",
+                "circle with right half black%>\u25d1",
+                "circle with upper half black%>\u25d3",
+                "circle with upper right quadrant black%>\u25d4",
+                "circle with vertical fill%>\u25cd",
+                "circled asterisk operator%>\u229b",
+                "circled dash%>\u229d",
+                "circled digit eight%>\u2467",
+                "circled digit five%>\u2464",
+                "circled digit four%>\u2463",
+                "circled digit nine%>\u2468",
+                "circled digit one%>\u2460",
+                "circled digit seven%>\u2466",
+                "circled digit six%>\u2465",
+                "circled digit three%>\u2462",
+                "circled digit two%>\u2461",
+                "circled digit zero%>\u24ea",
+                "circled division slash%>\u2298",
+                "circled dot operator%>\u2299",
+                "circled equals%>\u229c",
+                "circled heavy white right arrow%>\u27b2",
+                "circled latin capital letter a%>\u24b6",
+                "circled latin capital letter b%>\u24b7",
+                "circled latin capital letter c%>\u24b8",
+                "circled latin capital letter d%>\u24b9",
+                "circled latin capital letter e%>\u24ba",
+                "circled latin capital letter f%>\u24bb",
+                "circled latin capital letter g%>\u24bc",
+                "circled latin capital letter h%>\u24bd",
+                "circled latin capital letter i%>\u24be",
+                "circled latin capital letter j%>\u24bf",
+                "circled latin capital letter k%>\u24c0",
+                "circled latin capital letter l%>\u24c1",
+                "circled latin capital letter m%>\u24c2",
+                "circled latin capital letter n%>\u24c3",
+                "circled latin capital letter o%>\u24c4",
+                "circled latin capital letter p%>\u24c5",
+                "circled latin capital letter q%>\u24c6",
+                "circled latin capital letter r%>\u24c7",
+                "circled latin capital letter s%>\u24c8",
+                "circled latin capital letter t%>\u24c9",
+                "circled latin capital letter u%>\u24ca",
+                "circled latin capital letter v%>\u24cb",
+                "circled latin capital letter w%>\u24cc",
+                "circled latin capital letter x%>\u24cd",
+                "circled latin capital letter y%>\u24ce",
+                "circled latin capital letter z%>\u24cf",
+                "circled latin small letter a%>\u24d0",
+                "circled latin small letter b%>\u24d1",
+                "circled latin small letter c%>\u24d2",
+                "circled latin small letter d%>\u24d3",
+                "circled latin small letter e%>\u24d4",
+                "circled latin small letter f%>\u24d5",
+                "circled latin small letter g%>\u24d6",
+                "circled latin small letter h%>\u24d7",
+                "circled latin small letter i%>\u24d8",
+                "circled latin small letter j%>\u24d9",
+                "circled latin small letter k%>\u24da",
+                "circled latin small letter l%>\u24db",
+                "circled latin small letter m%>\u24dc",
+                "circled latin small letter n%>\u24dd",
+                "circled latin small letter o%>\u24de",
+                "circled latin small letter p%>\u24df",
+                "circled latin small letter q%>\u24e0",
+                "circled latin small letter r%>\u24e1",
+                "circled latin small letter s%>\u24e2",
+                "circled latin small letter t%>\u24e3",
+                "circled latin small letter u%>\u24e4",
+                "circled latin small letter v%>\u24e5",
+                "circled latin small letter w%>\u24e6",
+                "circled latin small letter x%>\u24e7",
+                "circled latin small letter y%>\u24e8",
+                "circled latin small letter z%>\u24e9",
+                "circled minus%>\u2296",
+                "circled number eighteen%>\u2471",
+                "circled number eleven%>\u246a",
+                "circled number fifteen%>\u246e",
+                "circled number fourteen%>\u246d",
+                "circled number nineteen%>\u2472",
+                "circled number seventeen%>\u2470",
+                "circled number sixteen%>\u246f",
+                "circled number ten%>\u2469",
+                "circled number thirteen%>\u246c",
+                "circled number twelve%>\u246b",
+                "circled number twenty%>\u2473",
+                "circled open center eight pointed star%>\u2742",
+                "circled plus%>\u2295",
+                "circled postal mark%>\u3036",
+                "circled ring operator%>\u229a",
+                "circled sans serif digit eight%>\u2787",
+                "circled sans serif digit five%>\u2784",
+                "circled sans serif digit four%>\u2783",
+                "circled sans serif digit nine%>\u2788",
+                "circled sans serif digit one%>\u2780",
+                "circled sans serif digit seven%>\u2786",
+                "circled sans serif digit six%>\u2785",
+                "circled sans serif digit three%>\u2782",
+                "circled sans serif digit two%>\u2781",
+                "circled sans serif number ten%>\u2789",
+                "circled times%>\u2297",
+                "circled white star%>\u272a",
+                "clear key%>\u2327",
+                "clockwise contour integral%>\u2232",
+                "clockwise integral%>\u2231",
+                "clockwise open circle arrow%>\u21bb",
+                "clockwise top semicircle arrow%>\u21b7",
+                "closing angle bracket%>\u3009",
+                "closing black lenticular bracket%>\u3011",
+                "closing corner bracket%>\u300d",
+                "closing double angle bracket%>\u300b",
+                "closing tortoise shell bracket%>\u3015",
+                "closing white corner bracket%>\u300f",
+                "closing white lenticular bracket%>\u3017",
+                "closing white square bracket%>\u301b",
+                "closing white tortoise shell bracket%>\u3019",
+                "cloud%>\u2601",
+                "colon equal%>\u2254",
+                "colon sign%>\u20a1",
+                "comet%>\u2604",
+                "command key%>\u2318",
+                "complement%>\u2201",
+                "conjunction%>\u260c",
+                "contains as member%>\u220b",
+                "contains as normal subgroup or equal to%>\u22b5",
+                "contains as normal subgroup%>\u22b3",
+                "contour integral%>\u222e",
+                "copyright sign%>\u00a9",
+                "corresponds to%>\u2258",
+                "cross of jerusalem%>\u2629",
+                "cross of lorraine%>\u2628",
+                "cruzeiro sign%>\u20a2",
+                "cube root%>\u221b",
+                "curly logical and%>\u22cf",
+                "curly logical or%>\u22ce",
+                "currency sign%>\u00a4",
+                "curved stem paragraph sign ornament%>\u2761",
+                "dagger%>\u2020",
+                "dark shade%>\u2593",
+                "dashed triangle-headed right arrow%>\u279f",
+                "degree sign%>\u00b0",
+                "degrees centigrade%>\u2103",
+                "degrees fahrenheit%>\u2109",
+                "degrees kelvin%>\u212a",
+                "delete to the left key%>\u232b",
+                "delete to the right key%>\u2326",
+                "delta equal to%>\u225c",
+                "descending node%>\u260b",
+                "diamond operator%>\u22c4",
+                "difference between%>\u224f",
+                "digit eight period%>\u248f",
+                "digit five period%>\u248c",
+                "digit four period%>\u248b",
+                "digit nine period%>\u2490",
+                "digit one period%>\u2488",
+                "digit seven period%>\u248e",
+                "digit six period%>\u248d",
+                "digit three period%>\u248a",
+                "digit two period%>\u2489",
+                "ditto mark%>\u3003",
+                "divides%>\u2223",
+                "division sign%>\u00f7",
+                "division slash%>\u2215",
+                "division times%>\u22c7",
+                "does not contain as member%>\u220c",
+                "does not contain as normal subgroup or equal%>\u22ed",
+                "does not contain as normal subgroup%>\u22eb",
+                "does not divide%>\u2224",
+                "does not force%>\u22ae",
+                "does not precede or equal%>\u22e0",
+                "does not precede%>\u2280",
+                "does not prove%>\u22ac",
+                "does not succeed or equal%>\u22e1",
+                "does not succeed%>\u2281",
+                "dot minus%>\u2238",
+                "dot operator%>\u22c5",
+                "dot plus%>\u2214",
+                "dotted circle%>\u25cc",
+                "double comma quotation mark%>\u201d",
+                "double dagger%>\u2021",
+                "double exclamation mark%>\u203c",
+                "double hyphen%>\u203f",
+                "double integral%>\u222c",
+                "double intersection%>\u22d2",
+                "double prime quotation mark%>\u301e",
+                "double prime%>\u2033",
+                "double reversed comma quotation mark%>\u201f",
+                "double subset%>\u22d0",
+                "double superset%>\u22d1",
+                "double turned comma quotation mark%>\u201c",
+                "double union%>\u22d3",
+                "double vertical bar double right turnstile%>\u22ab",
+                "double vertical bar%>\u2016",
+                "double-struck c%>\u2102",
+                "double-struck h%>\u210d",
+                "double-struck n%>\u2115",
+                "double-struck p%>\u2119",
+                "double-struck q%>\u211a",
+                "double-struck r%>\u211d",
+                "double-struck z%>\u2124",
+                "down arrow from bar%>\u21a7",
+                "down arrow with corner left%>\u21b5",
+                "down arrow with double stroke%>\u21df",
+                "down arrow with tip left%>\u21b2",
+                "down arrow with tip right%>\u21b3",
+                "down arrow%>\u2193",
+                "down arrowhead%>\u2304",
+                "down dashed arrow%>\u21e3",
+                "down double arrow%>\u21d3",
+                "down harpoon with barb left%>\u21c3",
+                "down harpoon with barb right%>\u21c2",
+                "down paired arrows%>\u21ca",
+                "down right diagonal ellipsis%>\u22f1",
+                "down tack%>\u22a4",
+                "down two headed arrow%>\u21a1",
+                "down zigzag arrow%>\u21af",
+                "drafting point right arrow%>\u279b",
+                "earth%>\u2641",
+                "eight petalled outlined black florette%>\u2741",
+                "eight pointed black star%>\u2734",
+                "eight pointed pinwheel star%>\u2735",
+                "eight pointed rectilinear black star%>\u2737",
+                "eight spoked asterisk%>\u2733",
+                "eight teardrop-spoked propeller asterisk%>\u274a",
+                "eighth note%>\u266a",
+                "element of%>\u2208",
+                "small element of%>\u220a",
+                "element precedes under relation%>\u22b0",
+                "element succeeds under relation%>\u22b1",
+                "em dash%>\u2014",
+                "em quad%>\u2001",
+                "em space%>\u2003",
+                "empty set%>\u2205",
+                "en dash%>\u2013",
+                "en quad%>\u2000",
+                "en space%>\u2002",
+                "enclosing circle slash%>\u20e0",
+                "enclosing circle%>\u20dd",
+                "enclosing diamond%>\u20df",
+                "enclosing square%>\u20de",
+                "end of proof%>\u220e",
+                "enter key%>\u2324",
+                "envelope%>\u2709",
+                "equal and parallel to%>\u22d5",
+                "equal colon%>\u2255",
+                "equal to by definition%>\u225d",
+                "equal to or greater than%>\u22dd",
+                "equal to or less than%>\u22dc",
+                "equal to or precedes%>\u22de",
+                "equal to or succeeds%>\u22df",
+                "equiangular to%>\u225a",
+                "equivalent to%>\u224d",
+                "estimates%>\u2259",
+                "eulers%>\u2107",
+                "euro-currency sign%>\u20a0",
+                "european standard packaging%>\u212e",
+                "excess%>\u2239",
+                "female sign%>\u2640",
+                "feminine ordinal indicator%>\u00aa",
+                "figure dash%>\u2012",
+                "figure space%>\u2007",
+                "first quarter moon%>\u263d",
+                "first transfinite cardinal%>\u2135",
+                "fisheye%>\u25c9",
+                "flat%>\u266d",
+                "floral heart%>\u2766",
+                "for all%>\u2200",
+                "forces%>\u22a9",
+                "forms double down and horizontal%>\u2566",
+                "forms double down and left%>\u2557",
+                "forms double down and right%>\u2554",
+                "forms double horizontal%>\u2550",
+                "forms double up and horizontal%>\u2569",
+                "forms double up and left%>\u255d",
+                "forms double up and right%>\u255a",
+                "forms double vertical and horizontal%>\u256c",
+                "forms double vertical and left%>\u2563",
+                "forms double vertical and right%>\u2560",
+                "forms double vertical%>\u2551",
+                "forms down double and horizontal single%>\u2565",
+                "forms down double and left single%>\u2556",
+                "forms down double and right single%>\u2553",
+                "forms down heavy and horizontal light%>\u2530",
+                "forms down heavy and left light%>\u2512",
+                "forms down heavy and left up light%>\u2527",
+                "forms down heavy and right light%>\u250e",
+                "forms down heavy and right up light%>\u251f",
+                "forms down heavy and up horizontal light%>\u2541",
+                "forms down light and horizontal heavy%>\u252f",
+                "forms down light and left heavy%>\u2511",
+                "forms down light and left up heavy%>\u2529",
+                "forms down light and right heavy%>\u250d",
+                "forms down light and right up heavy%>\u2521",
+                "forms down light and up horizontal heavy%>\u2547",
+                "forms down single and horizontal double%>\u2564",
+                "forms down single and left double%>\u2555",
+                "forms down single and right double%>\u2552",
+                "forms heavy double dash horizontal%>\u254d",
+                "forms heavy double dash vertical%>\u254f",
+                "forms heavy down and horizontal%>\u2533",
+                "forms heavy down and left%>\u2513",
+                "forms heavy down and right%>\u250f",
+                "forms heavy down%>\u257b",
+                "forms heavy horizontal%>\u2501",
+                "forms heavy left and light right%>\u257e",
+                "forms heavy left%>\u2578",
+                "forms heavy quadruple dash horizontal%>\u2509",
+                "forms heavy quadruple dash vertical%>\u250b",
+                "forms heavy right%>\u257a",
+                "forms heavy triple dash horizontal%>\u2505",
+                "forms heavy triple dash vertical%>\u2507",
+                "forms heavy up and horizontal%>\u253b",
+                "forms heavy up and left%>\u251b",
+                "forms heavy up and light down%>\u257f",
+                "forms heavy up and right%>\u2517",
+                "forms heavy up%>\u2579",
+                "forms heavy vertical and horizontal%>\u254b",
+                "forms heavy vertical and left%>\u252b",
+                "forms heavy vertical and right%>\u2523",
+                "forms heavy vertical%>\u2503",
+                "forms left down heavy and right up light%>\u2545",
+                "forms left heavy and right down light%>\u252d",
+                "forms left heavy and right up light%>\u2535",
+                "forms left heavy and right vertical light%>\u253d",
+                "forms left lighand right down heavy%>\u2532",
+                "forms left light and right down heavy%>\u2532",
+                "forms left light and right up heavy%>\u253a",
+                "forms left light and right vertical heavy%>\u254a",
+                "forms left up heavy and right down light%>\u2543",
+                "forms light arc down and left%>\u256e",
+                "forms light arc down and right%>\u256d",
+                "forms light arc up and left%>\u256f",
+                "forms light arc up and right%>\u2570",
+                "forms light diagonal cross%>\u2573",
+                "forms light diagonal upper left to lower right%>\u2572",
+                "forms light diagonal upper right to lower left%>\u2571",
+                "forms light double dash horizontal%>\u254c",
+                "forms light double dash vertical%>\u254e",
+                "forms light down and horizontal%>\u252c",
+                "forms light down and left%>\u2510",
+                "forms light down and right%>\u250c",
+                "forms light down%>\u2577",
+                "forms light horizontal%>\u2500",
+                "forms light left and heavy right%>\u257c",
+                "forms light left%>\u2574",
+                "forms light quadruple dash horizontal%>\u2508",
+                "forms light quadruple dash vertical%>\u250a",
+                "forms light right%>\u2576",
+                "forms light triple dash horizontal%>\u2504",
+                "forms light triple dash vertical%>\u2506",
+                "forms light up and heavy down%>\u257d",
+                "forms light up and horizontal%>\u2534",
+                "forms light up and left%>\u2518",
+                "forms light up and right%>\u2514",
+                "forms light up%>\u2575",
+                "forms light vertical and horizontal%>\u253c",
+                "forms light vertical and left%>\u2524",
+                "forms light vertical and right%>\u251c",
+                "forms light vertical%>\u2502",
+                "forms right down heavy and left up light%>\u2546",
+                "forms right heavy and left down light%>\u252e",
+                "forms right heavy and left up light%>\u2536",
+                "forms right heavy and left vertical light%>\u253e",
+                "forms right light and left down heavy%>\u2531",
+                "forms right light and left up heavy%>\u2539",
+                "forms right light and left vertical heavy%>\u2549",
+                "forms right up heavy and left down light%>\u2544",
+                "forms up double and horizontal single%>\u2568",
+                "forms up double and left single%>\u255c",
+                "forms up double and right single%>\u2559",
+                "forms up heavy and down horizontal light%>\u2540",
+                "forms up heavy and horizontal light%>\u2538",
+                "forms up heavy and left down light%>\u2526",
+                "forms up heavy and left light%>\u251a",
+                "forms up heavy and right down light%>\u251e",
+                "forms up heavy and right light%>\u2516",
+                "forms up light and down horizontal heavy%>\u2548",
+                "forms up light and horizontal heavy%>\u2537",
+                "forms up light and left down heavy%>\u252a",
+                "forms up light and left heavy%>\u2519",
+                "forms up light and right down heavy%>\u2522",
+                "forms up light and right heavy%>\u2515",
+                "forms up single and horizontal double%>\u2567",
+                "forms up single and left double%>\u255b",
+                "forms up single and right double%>\u2558",
+                "forms vertical double and horizontal single%>\u256b",
+                "forms vertical double and left single%>\u2562",
+                "forms vertical double and right single%>\u255f",
+                "forms vertical heavy and horizontal light%>\u2542",
+                "forms vertical heavy and left light%>\u2528",
+                "forms vertical heavy and right light%>\u2520",
+                "forms vertical light and horizontal heavy%>\u253f",
+                "forms vertical light and left heavy%>\u2525",
+                "forms vertical light and right heavy%>\u251d",
+                "forms vertical single and horizontal double%>\u256a",
+                "forms vertical single and left double%>\u2561",
+                "forms vertical single and right double%>\u255e",
+                "four balloon-spoked asterisk%>\u2723",
+                "four club-spoked asterisk%>\u2725",
+                "four teardrop-spoked asterisk%>\u2722",
+                "four-per-em space%>\u2005",
+                "fourth root%>\u221c",
+                "fourth transfinite cardinal%>\u2138",
+                "fraction five eighths%>\u215d",
+                "fraction five sixths%>\u215a",
+                "fraction four fifths%>\u2158",
+                "fraction numerator one%>\u215f",
+                "fraction one eighth%>\u215b",
+                "fraction one fifth%>\u2155",
+                "fraction one half%>\u00bd",
+                "fraction one quarter%>\u00bc",
+                "fraction one sixth%>\u2159",
+                "fraction one third%>\u2153",
+                "fraction seven eighths%>\u215e",
+                "fraction slash%>\u2044",
+                "fraction three eighths%>\u215c",
+                "fraction three fifths%>\u2157",
+                "fraction three quarters%>\u00be",
+                "fraction two fifths%>\u2156",
+                "fraction two thirds%>\u2154",
+                "french franc sign%>\u20a3",
+                "front-tilted shadowed white right arrow%>\u27ac",
+                "frown%>\u2322",
+                "full block%>\u2588",
+                "gemini%>\u264a",
+                "geometric proportion%>\u223a",
+                "geometrically equal to%>\u2251",
+                "geometrically equivalent to%>\u224e",
+                "geta mark%>\u3013",
+                "graphic for acknowledge%>\u2406",
+                "graphic for backspace%>\u2408",
+                "graphic for bell%>\u2407",
+                "graphic for cancel%>\u2418",
+                "graphic for carriage return%>\u240d",
+                "graphic for data link escape%>\u2410",
+                "graphic for delete%>\u2421",
+                "graphic for device control four%>\u2414",
+                "graphic for device control one%>\u2411",
+                "graphic for device control three%>\u2413",
+                "graphic for device control two%>\u2412",
+                "graphic for end of medium%>\u2419",
+                "graphic for end of text%>\u2403",
+                "graphic for end of transmission block%>\u2417",
+                "graphic for end of transmission%>\u2404",
+                "graphic for enquiry%>\u2405",
+                "graphic for escape%>\u241b",
+                "graphic for file separator%>\u241c",
+                "graphic for form feed%>\u240c",
+                "graphic for group separator%>\u241d",
+                "graphic for horizontal tabulation%>\u2409",
+                "graphic for line feed%>\u240a",
+                "graphic for negative acknowledge%>\u2415",
+                "graphic for newline%>\u2424",
+                "graphic for null%>\u2400",
+                "graphic for record separator%>\u241e",
+                "graphic for shift in%>\u240f",
+                "graphic for shift out%>\u240e",
+                "graphic for space%>\u2420",
+                "graphic for start of heading%>\u2401",
+                "graphic for start of text%>\u2402",
+                "graphic for substitute%>\u241a",
+                "graphic for synchronous idle%>\u2416",
+                "graphic for unit separator%>\u241f",
+                "graphic for vertical tabulation%>\u240b",
+                "greater than but not equal to%>\u2269",
+                "greater than but not equivalent to%>\u22e7",
+                "greater than equal to or less than%>\u22db",
+                "greater than or equal to%>\u2265",
+                "greater than or equivalent to%>\u2273",
+                "greater than or less than%>\u2277",
+                "greater than over equal to%>\u2267",
+                "greater than with dot%>\u22d7",
+                "hair space%>\u200a",
+                "hammer and sickle%>\u262d",
+                "hangul double dot tone mark%>\u302f",
+                "hangul single dot tone mark%>\u302e",
+                "hangzhou numeral eight%>\u3028",
+                "hangzhou numeral five%>\u3025",
+                "hangzhou numeral four%>\u3024",
+                "hangzhou numeral nine%>\u3029",
+                "hangzhou numeral one%>\u3021",
+                "hangzhou numeral seven%>\u3027",
+                "hangzhou numeral six%>\u3026",
+                "hangzhou numeral three%>\u3023",
+                "hangzhou numeral two%>\u3022",
+                "heavy asterisk%>\u2731",
+                "heavy black curved down and right arrow%>\u27a5",
+                "heavy black curved up and right arrow%>\u27a6",
+                "heavy black heart%>\u2764",
+                "heavy black-feathered lower right arrow%>\u27b7",
+                "heavy black-feathered right arrow%>\u27b8",
+                "heavy black-feathered upper right arrow%>\u27b9",
+                "heavy check mark%>\u2714",
+                "heavy chevron snowflake%>\u2746",
+                "heavy concave-pointed black right arrow%>\u27a8",
+                "heavy dashed triangle-headed right arrow%>\u27a0",
+                "heavy double comma quotation mark ornament%>\u275e",
+                "heavy double turned comma quotation mark ornament%>\u275d",
+                "heavy eight pointed rectilinear black star%>\u2738",
+                "heavy eight teardrop-spoked propeller asterisk%>\u274b",
+                "heavy exclamation mark ornament%>\u2762",
+                "heavy four balloon-spoked asterisk%>\u2724",
+                "heavy greek cross%>\u271a",
+                "heavy heart exclamation mark ornament%>\u2763",
+                "heavy lower right arrow%>\u2798",
+                "heavy lower right-shadowed white right arrow%>\u27ad",
+                "heavy multiplication x%>\u2716",
+                "heavy open center cross%>\u271c",
+                "heavy outlined black star%>\u272e",
+                "heavy right arrow%>\u2799",
+                "heavy round-tipped right arrow%>\u279c",
+                "heavy single comma quotation mark ornament%>\u275c",
+                "heavy single turned comma quotation mark ornament%>\u275b",
+                "heavy sparkle%>\u2748",
+                "heavy teardrop-shanked right arrow%>\u27bb",
+                "heavy teardrop-spoked asterisk%>\u273d",
+                "heavy teardrop-spoked pinwheel asterisk%>\u2743",
+                "heavy triangle-headed right arrow%>\u279e",
+                "heavy upper right arrow%>\u279a",
+                "heavy upper right-shadowed white right arrow%>\u27ae",
+                "heavy vertical bar%>\u275a",
+                "heavy wedge-tailed right arrow%>\u27bd",
+                "heavy wide-headed right arrow%>\u2794",
+                "hermitian conjugate matrix%>\u22b9",
+                "homothetic%>\u223b",
+                "horizontal ellipsis%>\u2026",
+                "hot springs%>\u2668",
+                "hourglass%>\u231b",
+                "house%>\u2302",
+                "hyphen bullet%>\u2043",
+                "hyphen%>\u2010",
+                "hyphenation point%>\u2027",
+                "identical to%>\u2261",
+                "ideographic closing mark%>\u3006",
+                "ideographic comma%>\u3001",
+                "ideographic departing tone mark%>\u302c",
+                "ideographic ditto mark%>\u3004",
+                "ideographic entering tone mark%>\u302d",
+                "ideographic half fill space%>\u303f",
+                "ideographic iteration mark%>\u3005",
+                "ideographic level tone mark%>\u302a",
+                "ideographic number zero%>\u3007",
+                "ideographic period%>\u3002",
+                "ideographic rising tone mark%>\u302b",
+                "ideographic space%>\u3000",
+                "image of or approximately equal to%>\u2253",
+                "image of%>\u22b7",
+                "increment%>\u2206",
+                "infinity%>\u221e",
+                "integral%>\u222b",
+                "intercalate%>\u22ba",
+                "interrobang%>\u203d",
+                "intersection%>\u2229",
+                "inverse bullet%>\u25d8",
+                "inverse circled digit eight%>\u277d",
+                "inverse circled digit five%>\u277a",
+                "inverse circled digit four%>\u2779",
+                "inverse circled digit nine%>\u277e",
+                "inverse circled digit one%>\u2776",
+                "inverse circled digit seven%>\u277c",
+                "inverse circled digit six%>\u277b",
+                "inverse circled digit three%>\u2778",
+                "inverse circled digit two%>\u2777",
+                "inverse circled number ten%>\u277f",
+                "inverse circled sans serif digit eight%>\u2791",
+                "inverse circled sans serif digit five%>\u278e",
+                "inverse circled sans serif digit four%>\u278d",
+                "inverse circled sans serif digit nine%>\u2792",
+                "inverse circled sans serif digit one%>\u278a",
+                "inverse circled sans serif digit seven%>\u2790",
+                "inverse circled sans serif digit six%>\u278f",
+                "inverse circled sans serif digit three%>\u278c",
+                "inverse circled sans serif digit two%>\u278b",
+                "inverse circled sans serif number ten%>\u2793",
+                "inverse white circle%>\u25d9",
+                "inverted exclamation mark%>\u00a1",
+                "inverted lazy s%>\u223e",
+                "inverted question mark%>\u00bf",
+                "jupiter%>\u2643",
+                "ket%>\u232a",
+                "keyboard%>\u2328",
+                "l b bar symbol%>\u2114",
+                "last quarter moon%>\u263e",
+                "latin cross%>\u271d",
+                "left arrow from bar%>\u21a4",
+                "left arrow over right arrow%>\u21c6",
+                "left arrow to bar over right arrow to bar%>\u21b9",
+                "left arrow to bar%>\u21e4",
+                "left arrow with hook%>\u21a9",
+                "left arrow with loop%>\u21ab",
+                "left arrow with stroke%>\u219a",
+                "left arrow with tail%>\u21a2",
+                "left arrow%>\u2190",
+                "left ceiling%>\u2308",
+                "left dashed arrow%>\u21e0",
+                "left double arrow with stroke%>\u21cd",
+                "left double arrow%>\u21d0",
+                "left five eighths block%>\u258b",
+                "left floor%>\u230a",
+                "left half black circle%>\u25d6",
+                "left half block%>\u258c",
+                "left harpoon over right harpoon%>\u21cb",
+                "left harpoon with barb down%>\u21bd",
+                "left harpoon with barb up%>\u21bc",
+                "left normal factor semidirect product%>\u22c9",
+                "left one eighth block%>\u258f",
+                "left one quarter block%>\u258e",
+                "left paired arrows%>\u21c7",
+                "left pointing guillemet%>\u00ab",
+                "left pointing single guillemet%>\u2039",
+                "left right arrow with stroke%>\u21ae",
+                "left right arrow%>\u2194",
+                "left right double arrow with stroke%>\u21ce",
+                "left right double arrow%>\u21d4",
+                "left right wave arrow%>\u21ad",
+                "left semidirect product%>\u22cb",
+                "left seven eighths block%>\u2589",
+                "left squiggle arrow%>\u21dc",
+                "left tack%>\u22a3",
+                "left three eighths block%>\u258d",
+                "left three quarter block%>\u258a",
+                "left triple arrow%>\u21da",
+                "left two headed arrow%>\u219e",
+                "left wave arrow%>\u219c",
+                "left-shaded white right arrow%>\u27aa",
+                "left-to-right embedding%>\u202a",
+                "left-to-right mark%>\u200e",
+                "left-to-right override%>\u202d",
+                "leo%>\u264c",
+                "less than but not equal to%>\u2268",
+                "less than but not equivalent to%>\u22e6",
+                "less than equal to or greater than%>\u22da",
+                "less than or equal to%>\u2264",
+                "less than or equivalent to%>\u2272",
+                "less than or greater than%>\u2276",
+                "less than over equal to%>\u2266",
+                "less than with dot%>\u22d6",
+                "libra%>\u264e",
+                "light shade%>\u2591",
+                "light vertical bar%>\u2758",
+                "lightning%>\u2607",
+                "line separator%>\u2028",
+                "lira sign%>\u20a4",
+                "logical and%>\u2227",
+                "logical or%>\u2228",
+                "low double comma quotation mark%>\u201e",
+                "low double prime quotation mark%>\u301f",
+                "low single comma quotation mark%>\u201a",
+                "lower blade scissors%>\u2703",
+                "lower five eighths block%>\u2585",
+                "lower half block%>\u2584",
+                "lower half circle%>\u25e1",
+                "lower half inverse white circle%>\u25db",
+                "lower left arrow%>\u2199",
+                "lower left double arrow%>\u21d9",
+                "lower left quadrant circular arc%>\u25df",
+                "lower one eighth block%>\u2581",
+                "lower one quarter block%>\u2582",
+                "lower right arrow%>\u2198",
+                "lower right double arrow%>\u21d8",
+                "lower right drop-shadowed white square%>\u274f",
+                "lower right pencil%>\u270e",
+                "lower right quadrant circular arc%>\u25de",
+                "lower right shadowed white square%>\u2751",
+                "lower seven eighths block%>\u2587",
+                "lower three eighths block%>\u2583",
+                "lower three quarter block%>\u2586",
+                "lozenge%>\u25ca",
+                "male sign%>\u2642",
+                "maltese cross%>\u2720",
+                "masculine ordinal indicator%>\u00ba",
+                "measured angle%>\u2221",
+                "measured by%>\u225e",
+                "medium shade%>\u2592",
+                "medium vertical bar%>\u2759",
+                "mercury%>\u263f",
+                "mho%>\u2127",
+                "micro sign%>\u00b5",
+                "middle dot%>\u00b7",
+                "midline horizontal ellipsis%>\u22ef",
+                "mill sign%>\u20a5",
+                "minus sign%>\u2212",
+                "minus tilde%>\u2242",
+                "minus-or-plus sign%>\u2213",
+                "models%>\u22a7",
+                "modifier letter acute%>\u02ca",
+                "modifier letter apostrophe%>\u02bc",
+                "modifier letter centered left half ring%>\u02d3",
+                "modifier letter centered right half ring%>\u02d2",
+                "modifier letter circumflex%>\u02c6",
+                "modifier letter double prime%>\u02ba",
+                "modifier letter down arrowhead%>\u02c5",
+                "modifier letter down tack%>\u02d5",
+                "modifier letter extra-high tone bar%>\u02e5",
+                "modifier letter extra-low tone bar%>\u02e9",
+                "modifier letter glottal stop%>\u02c0",
+                "modifier letter grave%>\u02cb",
+                "modifier letter hacek%>\u02c7",
+                "modifier letter half triangular colon%>\u02d1",
+                "modifier letter high tone bar%>\u02e6",
+                "modifier letter left arrowhead%>\u02c2",
+                "modifier letter left half ring%>\u02bf",
+                "modifier letter low acute%>\u02cf",
+                "modifier letter low grave%>\u02ce",
+                "modifier letter low macron%>\u02cd",
+                "modifier letter low tone bar%>\u02e8",
+                "modifier letter low vertical line%>\u02cc",
+                "modifier letter macron%>\u02c9",
+                "modifier letter mid tone bar%>\u02e7",
+                "modifier letter minus sign%>\u02d7",
+                "modifier letter plus sign%>\u02d6",
+                "modifier letter prime%>\u02b9",
+                "modifier letter reversed comma%>\u02bd",
+                "modifier letter reversed glottal stop%>\u02c1",
+                "modifier letter rhotic hook%>\u02de",
+                "modifier letter right arrowhead%>\u02c3",
+                "modifier letter right half ring%>\u02be",
+                "modifier letter small capital inverted r%>\u02b6",
+                "modifier letter small gamma%>\u02e0",
+                "modifier letter small h hook%>\u02b1",
+                "modifier letter small h%>\u02b0",
+                "modifier letter small j%>\u02b2",
+                "modifier letter small l%>\u02e1",
+                "modifier letter small r%>\u02b3",
+                "modifier letter small reversed glottal stop%>\u02e4",
+                "modifier letter small s%>\u02e2",
+                "modifier letter small turned r hook%>\u02b5",
+                "modifier letter small turned r%>\u02b4",
+                "modifier letter small w%>\u02b7",
+                "modifier letter small x%>\u02e3",
+                "modifier letter small y%>\u02b8",
+                "modifier letter triangular colon%>\u02d0",
+                "modifier letter turned comma%>\u02bb",
+                "modifier letter up arrowhead%>\u02c4",
+                "modifier letter up tack%>\u02d4",
+                "modifier letter vertical line%>\u02c8",
+                "much greater than%>\u226b",
+                "much less than%>\u226a",
+                "multimap%>\u22b8",
+                "multiplication sign%>\u00d7",
+                "multiplication x%>\u2715",
+                "multiset multiplication%>\u228d",
+                "multiset union%>\u228e",
+                "multiset%>\u228c",
+                "n-ary coproduct%>\u2210",
+                "n-ary intersection%>\u22c2",
+                "n-ary logical and%>\u22c0",
+                "n-ary logical or%>\u22c1",
+                "n-ary product%>\u220f",
+                "n-ary summation%>\u2211",
+                "n-ary union%>\u22c3",
+                "nabla%>\u2207",
+                "naira sign%>\u20a6",
+                "nand%>\u22bc",
+                "natural%>\u266e",
+                "negated double vertical bar double right turnstile%>\u22af",
+                "neither a subset of nor equal to%>\u2288",
+                "neither a superset of nor equal to%>\u2289",
+                "neither approximately nor actually equal to%>\u2247",
+                "neither greater than nor equal to%>\u2271",
+                "neither greater than nor equivalent to%>\u2275",
+                "neither greater than nor less than%>\u2279",
+                "neither less than nor equal to%>\u2270",
+                "neither less than nor equivalent to%>\u2274",
+                "neither less than nor greater than%>\u2278",
+                "neptune%>\u2646",
+                "new sheqel sign%>\u20aa",
+                "non-breaking hyphen%>\u2011",
+                "non-breaking space%>\u00a0",
+                "non-spacing acute below%>\u0317",
+                "non-spacing acute tone mark%>\u0348",
+                "non-spacing acute%>\u0301",
+                "non-spacing anticlockwise arrow above%>\u20d4",
+                "non-spacing anticlockwise ring overlay%>\u20da",
+                "non-spacing breve below%>\u032e",
+                "non-spacing breve%>\u0306",
+                "non-spacing bridge below%>\u032a",
+                "non-spacing candrabindu%>\u0310",
+                "non-spacing cedilla%>\u0327",
+                "non-spacing centerline overscore%>\u0341",
+                "non-spacing centerline underscore%>\u0345",
+                "non-spacing circumflex below%>\u032d",
+                "non-spacing circumflex%>\u0302",
+                "non-spacing clockwise arrow above%>\u20d5",
+                "non-spacing clockwise ring overlay%>\u20d9",
+                "non-spacing comma above right%>\u0315",
+                "non-spacing comma above%>\u0313",
+                "non-spacing comma below%>\u0326",
+                "non-spacing dashed overscore%>\u0340",
+                "non-spacing dashed underscore%>\u0344",
+                "non-spacing diaeresis%>\u0308",
+                "non-spacing dot above%>\u0307",
+                "non-spacing dot below%>\u0323",
+                "non-spacing double acute%>\u030b",
+                "non-spacing double dot below%>\u0324",
+                "non-spacing double grave%>\u030f",
+                "non-spacing double overscore%>\u033f",
+                "non-spacing double underscore%>\u0333",
+                "non-spacing double vertical line above%>\u030e",
+                "non-spacing double wavy overscore%>\u0343",
+                "non-spacing down tack below%>\u031e",
+                "non-spacing four dots above%>\u20dc",
+                "non-spacing grave below%>\u0316",
+                "non-spacing grave tone mark%>\u0347",
+                "non-spacing grave%>\u0300",
+                "non-spacing hacek below%>\u032c",
+                "non-spacing hacek%>\u030c",
+                "non-spacing hook above%>\u0309",
+                "non-spacing horn%>\u031b",
+                "non-spacing inverted breve below%>\u032f",
+                "non-spacing inverted breve%>\u0311",
+                "non-spacing inverted bridge below%>\u033a",
+                "non-spacing inverted double arch below%>\u032b",
+                "non-spacing left angle above%>\u031a",
+                "non-spacing left arrow above%>\u20d6",
+                "non-spacing left half ring below%>\u031c",
+                "non-spacing left harpoon above%>\u20d0",
+                "non-spacing left right arrow above%>\u20e1",
+                "non-spacing left tack below%>\u0318",
+                "non-spacing long bar overlay%>\u0336",
+                "non-spacing long slash overlay%>\u0338",
+                "non-spacing long vertical bar overlay%>\u20d2",
+                "non-spacing macron below%>\u0331",
+                "non-spacing macron%>\u0304",
+                "non-spacing minus sign below%>\u0320",
+                "non-spacing ogonek%>\u0328",
+                "non-spacing overscore%>\u0305",
+                "non-spacing palatalized hook below%>\u0321",
+                "non-spacing plus sign below%>\u031f",
+                "non-spacing retroflex hook below%>\u0322",
+                "non-spacing reversed comma above%>\u0314",
+                "non-spacing right arrow above%>\u20d7",
+                "non-spacing right half ring below%>\u0339",
+                "non-spacing right harpoon above%>\u20d1",
+                "non-spacing right tack below%>\u0319",
+                "non-spacing ring above%>\u030a",
+                "non-spacing ring below%>\u0325",
+                "non-spacing ring overlay%>\u20d8",
+                "non-spacing seagull below%>\u033c",
+                "non-spacing short bar overlay%>\u0335",
+                "non-spacing short slash overlay%>\u0337",
+                "non-spacing short vertical bar overlay%>\u20d3",
+                "non-spacing square below%>\u033b",
+                "non-spacing three dots above%>\u20db",
+                "non-spacing tilde below%>\u0330",
+                "non-spacing tilde overlay%>\u0334",
+                "non-spacing tilde%>\u0303",
+                "non-spacing turned comma above%>\u0312",
+                "non-spacing underscore%>\u0332",
+                "non-spacing up tack below%>\u031d",
+                "non-spacing vertical line above%>\u030d",
+                "non-spacing vertical line below%>\u0329",
+                "non-spacing vertical tilde%>\u033e",
+                "non-spacing wavy overscore%>\u0342",
+                "non-spacing wavy underscore%>\u0346",
+                "non-spacing x above%>\u033d",
+                "nor%>\u22bd",
+                "normal subgroup of or equal to%>\u22b4",
+                "normal subgroup of%>\u22b2",
+                "not a subset of%>\u2284",
+                "not a superset of%>\u2285",
+                "not almost equal to%>\u2249",
+                "not an element of%>\u2209",
+                "not asymptotically equal to%>\u2244",
+                "not equal to%>\u2260",
+                "not equivalent to%>\u226d",
+                "not greater than%>\u226f",
+                "not identical to%>\u2262",
+                "not less than%>\u226e",
+                "not normal subgroup of or equal to%>\u22ec",
+                "not normal subgroup of%>\u22ea",
+                "not parallel to%>\u2226",
+                "not sign%>\u00ac",
+                "not square image of or equal to%>\u22e2",
+                "not square original of or equal to%>\u22e3",
+                "not tilde%>\u2241",
+                "not true%>\u22ad",
+                "notched lower right-shadowed white right arrow%>\u27af",
+                "notched upper right-shadowed white right arrow%>\u27b1",
+                "number eighteen period%>\u2499",
+                "number eleven period%>\u2492",
+                "number fifteen period%>\u2496",
+                "number fourteen period%>\u2495",
+                "number nineteen period%>\u249a",
+                "number seventeen period%>\u2498",
+                "number sixteen period%>\u2497",
+                "number ten period%>\u2491",
+                "number thirteen period%>\u2494",
+                "number twelve period%>\u2493",
+                "number twenty period%>\u249b",
+                "numero%>\u2116",
+                "ocr amount of check%>\u2447",
+                "ocr belt buckle%>\u2444",
+                "ocr bow tie%>\u2445",
+                "ocr branch bank identification%>\u2446",
+                "ocr chair%>\u2441",
+                "ocr customer account number%>\u2449",
+                "ocr dash%>\u2448",
+                "ocr double backslash%>\u244a",
+                "ocr fork%>\u2442",
+                "ocr hook%>\u2440",
+                "ocr inverted fork%>\u2443",
+                "ohm%>\u2126",
+                "one dot leader%>\u2024",
+                "open box%>\u2423",
+                "open center asterisk%>\u2732",
+                "open center black star%>\u272b",
+                "open center cross%>\u271b",
+                "open center teardrop-spoked asterisk%>\u273c",
+                "open-outlined right arrow%>\u27be",
+                "opening angle bracket%>\u3008",
+                "opening black lenticular bracket%>\u3010",
+                "opening corner bracket%>\u300c",
+                "opening double angle bracket%>\u300a",
+                "opening tortoise shell bracket%>\u3014",
+                "opening white corner bracket%>\u300e",
+                "opening white lenticular bracket%>\u3016",
+                "opening white square bracket%>\u301a",
+                "opening white tortoise shell bracket%>\u3018",
+                "opposition%>\u260d",
+                "option key%>\u2325",
+                "original of%>\u22b6",
+                "orthodox cross%>\u2626",
+                "ounce%>\u2125",
+                "outlined black star%>\u272d",
+                "outlined greek cross%>\u2719",
+                "outlined latin cross%>\u271f",
+                "paragraph separator%>\u2029",
+                "paragraph sign%>\u00b6",
+                "parallel to%>\u2225",
+                "parenthesized digit eight%>\u247b",
+                "parenthesized digit five%>\u2478",
+                "parenthesized digit four%>\u2477",
+                "parenthesized digit nine%>\u247c",
+                "parenthesized digit one%>\u2474",
+                "parenthesized digit seven%>\u247a",
+                "parenthesized digit six%>\u2479",
+                "parenthesized digit three%>\u2476",
+                "parenthesized digit two%>\u2475",
+                "parenthesized latin small letter a%>\u249c",
+                "parenthesized latin small letter b%>\u249d",
+                "parenthesized latin small letter c%>\u249e",
+                "parenthesized latin small letter d%>\u249f",
+                "parenthesized latin small letter e%>\u24a0",
+                "parenthesized latin small letter f%>\u24a1",
+                "parenthesized latin small letter g%>\u24a2",
+                "parenthesized latin small letter h%>\u24a3",
+                "parenthesized latin small letter i%>\u24a4",
+                "parenthesized latin small letter j%>\u24a5",
+                "parenthesized latin small letter k%>\u24a6",
+                "parenthesized latin small letter l%>\u24a7",
+                "parenthesized latin small letter m%>\u24a8",
+                "parenthesized latin small letter n%>\u24a9",
+                "parenthesized latin small letter o%>\u24aa",
+                "parenthesized latin small letter p%>\u24ab",
+                "parenthesized latin small letter q%>\u24ac",
+                "parenthesized latin small letter r%>\u24ad",
+                "parenthesized latin small letter s%>\u24ae",
+                "parenthesized latin small letter t%>\u24af",
+                "parenthesized latin small letter u%>\u24b0",
+                "parenthesized latin small letter v%>\u24b1",
+                "parenthesized latin small letter w%>\u24b2",
+                "parenthesized latin small letter x%>\u24b3",
+                "parenthesized latin small letter y%>\u24b4",
+                "parenthesized latin small letter z%>\u24b5",
+                "parenthesized number eighteen%>\u2485",
+                "parenthesized number eleven%>\u247e",
+                "parenthesized number fifteen%>\u2482",
+                "parenthesized number fourteen%>\u2481",
+                "parenthesized number nineteen%>\u2486",
+                "parenthesized number seventeen%>\u2484",
+                "parenthesized number sixteen%>\u2483",
+                "parenthesized number ten%>\u247d",
+                "parenthesized number thirteen%>\u2480",
+                "parenthesized number twelve%>\u247f",
+                "parenthesized number twenty%>\u2487",
+                "partial differential%>\u2202",
+                "peace symbol%>\u262e",
+                "pencil%>\u270f",
+                "per mille sign%>\u2030",
+                "per ten thousand sign%>\u2031",
+                "perspective%>\u2306",
+                "peseta sign%>\u20a7",
+                "pinwheel star%>\u272f",
+                "pisces%>\u2653",
+                "pitchfork%>\u22d4",
+                "planck constant over 2 pi%>\u210f",
+                "planck constant%>\u210e",
+                "plus-or-minus sign%>\u00b1",
+                "pluto%>\u2647",
+                "pop directional embedding%>\u202c",
+                "position indicator%>\u2316",
+                "postal mark face%>\u3020",
+                "postal mark%>\u3012",
+                "pound sign%>\u00a3",
+                "precedes but not equivalent to%>\u22e8",
+                "precedes or equal to%>\u227c",
+                "precedes or equivalent to%>\u227e",
+                "precedes%>\u227a",
+                "prescription take%>\u211e",
+                "prime%>\u2032",
+                "projective%>\u2305",
+                "proportion%>\u2237",
+                "proportional to%>\u221d",
+                "punctuation space%>\u2008",
+                "quarter note%>\u2669",
+                "questioned equal to%>\u225f",
+                "quotation dash%>\u2015",
+                "radioactive%>\u2622",
+                "ratio%>\u2236",
+                "reference mark%>\u203b",
+                "registered trade mark sign%>\u00ae",
+                "response%>\u211f",
+                "reversed double prime quotation mark%>\u301d",
+                "reversed double prime%>\u2036",
+                "reversed not sign%>\u2310",
+                "reversed prime%>\u2035",
+                "reversed tilde equals%>\u22cd",
+                "reversed tilde%>\u223d",
+                "reversed triple prime%>\u2037",
+                "right angle with arc%>\u22be",
+                "right angle%>\u221f",
+                "right arrow from bar%>\u21a6",
+                "right arrow over left arrow%>\u21c4",
+                "right arrow to bar%>\u21e5",
+                "right arrow with corner down%>\u21b4",
+                "right arrow with hook%>\u21aa",
+                "right arrow with loop%>\u21ac",
+                "right arrow with stroke%>\u219b",
+                "right arrow with tail%>\u21a3",
+                "right arrow%>\u2192",
+                "right ceiling%>\u2309",
+                "right dashed arrow%>\u21e2",
+                "right double arrow with stroke%>\u21cf",
+                "right double arrow%>\u21d2",
+                "right floor%>\u230b",
+                "right half black circle%>\u25d7",
+                "right half block%>\u2590",
+                "right harpoon over left harpoon%>\u21cc",
+                "right harpoon with barb down%>\u21c1",
+                "right harpoon with barb up%>\u21c0",
+                "right normal factor semidirect product%>\u22ca",
+                "right one eighth block%>\u2595",
+                "right paired arrows%>\u21c9",
+                "right pointing guillemet%>\u00bb",
+                "right pointing single guillemet%>\u203a",
+                "right semidirect product%>\u22cc",
+                "right squiggle arrow%>\u21dd",
+                "right tack%>\u22a2",
+                "right triangle%>\u22bf",
+                "right triple arrow%>\u21db",
+                "right two headed arrow%>\u21a0",
+                "right wave arrow%>\u219d",
+                "right-shaded white right arrow%>\u27a9",
+                "right-to-left embedding%>\u202b",
+                "right-to-left mark%>\u200f",
+                "right-to-left override%>\u202e",
+                "ring equal to%>\u2257",
+                "ring in equal to%>\u2256",
+                "ring operator%>\u2218",
+                "roman numeral eight%>\u2167",
+                "roman numeral eleven%>\u216a",
+                "roman numeral fifty%>\u216c",
+                "roman numeral five hundred%>\u216e",
+                "roman numeral five thousand%>\u2181",
+                "roman numeral five%>\u2164",
+                "roman numeral four%>\u2163",
+                "roman numeral nine%>\u2168",
+                "roman numeral one hundred%>\u216d",
+                "roman numeral one thousand c d%>\u2180",
+                "roman numeral one thousand%>\u216f",
+                "roman numeral one%>\u2160",
+                "roman numeral seven%>\u2166",
+                "roman numeral six%>\u2165",
+                "roman numeral ten thousand%>\u2182",
+                "roman numeral ten%>\u2169",
+                "roman numeral three%>\u2162",
+                "roman numeral twelve%>\u216b",
+                "roman numeral two%>\u2161",
+                "rotated floral heart bullet%>\u2767",
+                "rotated heavy black heart bullet%>\u2765",
+                "rupee sign%>\u20a8",
+                "sagittarius%>\u2650",
+                "saltire%>\u2613",
+                "saturn%>\u2644",
+                "scorpius%>\u264f",
+                "script b%>\u212c",
+                "script e%>\u2130",
+                "script f%>\u2131",
+                "script h%>\u210b",
+                "script i%>\u2110",
+                "script l%>\u2112",
+                "script m%>\u2133",
+                "script p%>\u2118",
+                "script r%>\u211b",
+                "script small e%>\u212f",
+                "script small g%>\u210a",
+                "script small l%>\u2113",
+                "script small o%>\u2134",
+                "scruple%>\u2108",
+                "second transfinite cardinal%>\u2136",
+                "section sign%>\u00a7",
+                "sector%>\u2314",
+                "segment%>\u2313",
+                "service mark%>\u2120",
+                "set minus%>\u2216",
+                "shadowed white circle%>\u274d",
+                "shadowed white latin cross%>\u271e",
+                "shadowed white star%>\u2730",
+                "sharp%>\u266f",
+                "sine wave%>\u223f",
+                "single comma quotation mark%>\u2019",
+                "single reversed comma quotation mark%>\u201b",
+                "single turned comma quotation mark%>\u2018",
+                "six petalled black and white florette%>\u273e",
+                "six pointed black star%>\u2736",
+                "six-per-em space%>\u2006",
+                "sixteen pointed asterisk%>\u273a",
+                "skull and crossbones%>\u2620",
+                "small contains as member%>\u220d",
+                "small roman numeral eight%>\u2177",
+                "small roman numeral eleven%>\u217a",
+                "small roman numeral fifty%>\u217c",
+                "small roman numeral five hundred%>\u217e",
+                "small roman numeral five%>\u2174",
+                "small roman numeral four%>\u2173",
+                "small roman numeral nine%>\u2178",
+                "small roman numeral one hundred%>\u217d",
+                "small roman numeral one thousand%>\u217f",
+                "small roman numeral one%>\u2170",
+                "small roman numeral seven%>\u2176",
+                "small roman numeral six%>\u2175",
+                "small roman numeral ten%>\u2179",
+                "small roman numeral three%>\u2172",
+                "small roman numeral twelve%>\u217b",
+                "small roman numeral two%>\u2171",
+                "smile%>\u2323",
+                "snowflake%>\u2744",
+                "snowman%>\u2603",
+                "soft hyphen%>\u00ad",
+                "sound recording copyright%>\u2117",
+                "spacing acute%>\u00b4",
+                "spacing breve%>\u02d8",
+                "spacing cedilla%>\u00b8",
+                "spacing diaeresis%>\u00a8",
+                "spacing dot above%>\u02d9",
+                "spacing double acute%>\u02dd",
+                "spacing double underscore%>\u2017",
+                "spacing macron%>\u00af",
+                "spacing ogonek%>\u02db",
+                "spacing overscore%>\u203e",
+                "spacing ring above%>\u02da",
+                "spacing tilde%>\u02dc",
+                "sparkle%>\u2747",
+                "spherical angle%>\u2222",
+                "square cap%>\u2293",
+                "square cup%>\u2294",
+                "square image of or equal to%>\u2291",
+                "square image of or not equal to%>\u22e4",
+                "square image of%>\u228f",
+                "square lozenge%>\u2311",
+                "square original of or equal to%>\u2292",
+                "square original of or not equal to%>\u22e5",
+                "square original of%>\u2290",
+                "square root%>\u221a",
+                "square with diagonal crosshatch fill%>\u25a9",
+                "square with horizontal fill%>\u25a4",
+                "square with left half black%>\u25e7",
+                "square with lower right diagonal half black%>\u25ea",
+                "square with orthogonal crosshatch fill%>\u25a6",
+                "square with right half black%>\u25e8",
+                "square with upper left diagonal half black%>\u25e9",
+                "square with upper left to lower right fill%>\u25a7",
+                "square with upper right to lower left fill%>\u25a8",
+                "square with vertical fill%>\u25a5",
+                "squared dot operator%>\u22a1",
+                "squared minus%>\u229f",
+                "squared plus%>\u229e",
+                "squared times%>\u22a0",
+                "squat black right arrow%>\u27a7",
+                "star and crescent%>\u262a",
+                "star equals%>\u225b",
+                "star of david%>\u2721",
+                "star operator%>\u22c6",
+                "stop directional override%>\u202f",
+                "strictly equivalent to%>\u2263",
+                "subscript closing parenthesis%>\u208e",
+                "subscript digit eight%>\u2088",
+                "subscript digit five%>\u2085",
+                "subscript digit four%>\u2084",
+                "subscript digit nine%>\u2089",
+                "subscript digit one%>\u2081",
+                "subscript digit seven%>\u2087",
+                "subscript digit six%>\u2086",
+                "subscript digit three%>\u2083",
+                "subscript digit two%>\u2082",
+                "subscript digit zero%>\u2080",
+                "subscript equals sign%>\u208c",
+                "subscript hyphen-minus%>\u208b",
+                "subscript opening parenthesis%>\u208d",
+                "subscript plus sign%>\u208a",
+                "subset of or equal to%>\u2286",
+                "subset of or not equal to%>\u228a",
+                "subset of%>\u2282",
+                "succeeds but not equivalent to%>\u22e9",
+                "succeeds or equal to%>\u227d",
+                "succeeds or equivalent to%>\u227f",
+                "succeeds%>\u227b",
+                "superscript closing parenthesis%>\u207e",
+                "superscript digit eight%>\u2078",
+                "superscript digit five%>\u2075",
+                "superscript digit four%>\u2074",
+                "superscript digit nine%>\u2079",
+                "superscript digit one%>\u00b9",
+                "superscript digit seven%>\u2077",
+                "superscript digit six%>\u2076",
+                "superscript digit three%>\u00b3",
+                "superscript digit two%>\u00b2",
+                "superscript digit zero%>\u2070",
+                "superscript equals sign%>\u207c",
+                "superscript hyphen-minus%>\u207b",
+                "superscript latin small letter n%>\u207f",
+                "superscript opening parenthesis%>\u207d",
+                "superscript plus sign%>\u207a",
+                "superset of or equal to%>\u2287",
+                "superset of or not equal to%>\u228b",
+                "superset of%>\u2283",
+                "surface integral%>\u222f",
+                "symbol of iran%>\u262b",
+                "t e l symbol%>\u2121",
+                "tape drive%>\u2707",
+                "taurus%>\u2649",
+                "teardrop-barbed right arrow%>\u27ba",
+                "teardrop-spoked asterisk%>\u273b",
+                "telephone location sign%>\u2706",
+                "telephone recorder%>\u2315",
+                "there does not exist%>\u2204",
+                "there exists%>\u2203",
+                "therefore%>\u2234",
+                "thin space%>\u2009",
+                "third transfinite cardinal%>\u2137",
+                "three-d bottom-lighted right arrowhead%>\u27a3",
+                "three-d top-lighted right arrowhead%>\u27a2",
+                "three-per-em space%>\u2004",
+                "thunderstorm%>\u2608",
+                "tight trifoliate snowflake%>\u2745",
+                "tilde operator%>\u223c",
+                "top half integral%>\u2320",
+                "top left corner%>\u231c",
+                "top left crop%>\u230f",
+                "top right corner%>\u231d",
+                "top right crop%>\u230e",
+                "trademark%>\u2122",
+                "triangle-headed right arrow%>\u279d",
+                "triangular bullet%>\u2023",
+                "trigram for earth%>\u2637",
+                "trigram for fire%>\u2632",
+                "trigram for heaven%>\u2630",
+                "trigram for lake%>\u2631",
+                "trigram for mountain%>\u2636",
+                "trigram for thunder%>\u2633",
+                "trigram for water%>\u2635",
+                "trigram for wind%>\u2634",
+                "triple integral%>\u222d",
+                "triple prime%>\u2034",
+                "triple tilde%>\u224b",
+                "triple vertical bar right turnstile%>\u22aa",
+                "true%>\u22a8",
+                "turned f%>\u2132",
+                "turned greek small letter iota%>\u2129",
+                "turned not sign%>\u2319",
+                "twelve pointed black star%>\u2739",
+                "two dot leader%>\u2025",
+                "umbrella%>\u2602",
+                "union%>\u222a",
+                "up arrow from bar%>\u21a5",
+                "up arrow left of down arrow%>\u21c5",
+                "up arrow with double stroke%>\u21de",
+                "up arrow with tip left%>\u21b0",
+                "up arrow with tip right%>\u21b1",
+                "up arrow%>\u2191",
+                "up arrowhead%>\u2303",
+                "up dashed arrow%>\u21e1",
+                "up double arrow%>\u21d1",
+                "up down arrow with base%>\u21a8",
+                "up down arrow%>\u2195",
+                "up down double arrow%>\u21d5",
+                "up harpoon with barb left%>\u21bf",
+                "up harpoon with barb right%>\u21be",
+                "up paired arrows%>\u21c8",
+                "up pointing triangle with left half black%>\u25ed",
+                "up pointing triangle with right half black%>\u25ee",
+                "up right diagonal ellipsis%>\u22f0",
+                "up tack%>\u22a5",
+                "up two headed arrow%>\u219f",
+                "upper blade scissors%>\u2701",
+                "upper half block%>\u2580",
+                "upper half circle%>\u25e0",
+                "upper half inverse white circle%>\u25da",
+                "upper left arrow to long bar%>\u21b8",
+                "upper left arrow%>\u2196",
+                "upper left double arrow%>\u21d6",
+                "upper left quadrant circular arc%>\u25dc",
+                "upper one eighth block%>\u2594",
+                "upper right arrow%>\u2197",
+                "upper right double arrow%>\u21d7",
+                "upper right drop-shadowed white square%>\u2750",
+                "upper right pencil%>\u2710",
+                "upper right quadrant circular arc%>\u25dd",
+                "upper right shadowed white square%>\u2752",
+                "uranus%>\u2645",
+                "versicle%>\u2123",
+                "vertical ellipsis%>\u22ee",
+                "vertical kana repeat mark lower half%>\u3035",
+                "vertical kana repeat mark upper half%>\u3033",
+                "vertical kana repeat mark%>\u3031",
+                "vertical kana repeat with voiced sound mark upper half%>\u3034",
+                "vertical kana repeat with voiced sound mark%>\u3032",
+                "very much greater than%>\u22d9",
+                "very much less than%>\u22d8",
+                "victory hand%>\u270c",
+                "viewdata square%>\u2317",
+                "virgo%>\u264d",
+                "volume integral%>\u2230",
+                "watch%>\u231a",
+                "wave dash%>\u301c",
+                "wavy dash%>\u3030",
+                "wavy line%>\u2307",
+                "wedge-tailed right arrow%>\u27bc",
+                "wheel of dharma%>\u2638",
+                "white bullet%>\u25e6",
+                "white chess bishop%>\u2657",
+                "white chess king%>\u2654",
+                "white chess knight%>\u2658",
+                "white chess pawn%>\u2659",
+                "white chess queen%>\u2655",
+                "white chess rook%>\u2656",
+                "white circle%>\u25cb",
+                "white club suit%>\u2667",
+                "white diamond containing black small diamond%>\u25c8",
+                "white diamond suit%>\u2662",
+                "white diamond%>\u25c7",
+                "white down arrow%>\u21e9",
+                "white down pointing index%>\u261f",
+                "white down pointing small triangle%>\u25bf",
+                "white down pointing triangle%>\u25bd",
+                "white florette%>\u2740",
+                "white four pointed star%>\u2727",
+                "white frowning face%>\u2639",
+                "white heart suit%>\u2661",
+                "white left arrow%>\u21e6",
+                "white left pointing index%>\u261c",
+                "white left pointing pointer%>\u25c5",
+                "white left pointing small triangle%>\u25c3",
+                "white left pointing triangle%>\u25c1",
+                "white nib%>\u2711",
+                "white parallelogram%>\u25b1",
+                "white rectangle%>\u25ad",
+                "white right arrow%>\u21e8",
+                "white right pointing index%>\u261e",
+                "white right pointing pointer%>\u25bb",
+                "white right pointing small triangle%>\u25b9",
+                "white right pointing triangle%>\u25b7",
+                "white scissors%>\u2704",
+                "white small square%>\u25ab",
+                "white smiling face%>\u263a",
+                "white spade suit%>\u2664",
+                "white square containing black small square%>\u25a3",
+                "white square with rounded corners%>\u25a2",
+                "white square with vertical bisecting line%>\u25eb",
+                "white square%>\u25a1",
+                "white star%>\u2606",
+                "white sun with rays%>\u263c",
+                "white telephone%>\u260f",
+                "white up arrow from bar%>\u21ea",
+                "white up arrow%>\u21e7",
+                "white up pointing index%>\u261d",
+                "white up pointing small triangle%>\u25b5",
+                "white up pointing triangle with dot%>\u25ec",
+                "white up pointing triangle%>\u25b3",
+                "white vertical rectangle%>\u25af",
+                "white-feathered right arrow%>\u27b3",
+                "won sign%>\u20a9",
+                "wreath product%>\u2240",
+                "writing hand%>\u270d",
+                "x mark3%>\u2717",
+                "xor%>\u22bb",
+                "yen sign%>\u00a5",
+                "yin yang%>\u262f",
+                "zero width joiner%>\u200d",
+                "zero width non-joiner%>\u200c",
+                "zero width space%>\u200b",
+            }}
+        };
+    }
+}
diff --git a/src/com/ibm/text/resources/thai_dict b/src/com/ibm/text/resources/thai_dict
new file mode 100755
index 0000000..9f8f77f
--- /dev/null
+++ b/src/com/ibm/text/resources/thai_dict
Binary files differ
diff --git a/src/com/ibm/tools/RuleBasedBreakIterator/BuildDictionaryFile.java b/src/com/ibm/tools/RuleBasedBreakIterator/BuildDictionaryFile.java
new file mode 100755
index 0000000..abb8df0
--- /dev/null
+++ b/src/com/ibm/tools/RuleBasedBreakIterator/BuildDictionaryFile.java
@@ -0,0 +1,875 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/tools/RuleBasedBreakIterator/Attic/BuildDictionaryFile.java,v $ 
+ * $Date: 2000/03/10 04:17:56 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.tools.RuleBasedBreakIterator;
+
+import com.ibm.util.CompactByteArray;
+import com.ibm.text.CharSet;
+import java.io.*;
+import java.util.Enumeration;
+import java.util.Vector;
+
+public class BuildDictionaryFile {
+    public static void main(String args[])
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        String filename = args[0];
+        String encoding = "";
+        String outputFile = "";
+        String listingFile = "";
+
+        if (args.length >= 2)
+            encoding = args[1];
+
+        if(args.length >= 3)
+            outputFile = args[2];
+
+        if (args.length >= 4)
+            listingFile = args[3];
+
+        BuildDictionaryFile dictionary = new BuildDictionaryFile();
+        dictionary.build(filename, encoding);
+
+        DataOutputStream out = null;
+        if (outputFile.length() != 0) {
+            out = new DataOutputStream(new FileOutputStream(outputFile));
+            dictionary.writeDictionaryFile(out);
+        }
+
+        PrintWriter listing = null;
+        if (listingFile.length() != 0) {
+            listing = new PrintWriter(new OutputStreamWriter(new FileOutputStream(listingFile), "UnicodeLittle"));
+            dictionary.printWordList("", 0, listing);
+            listing.close();
+        }
+    }
+
+    public BuildDictionaryFile() {
+    }
+
+    public void build(String filename, String encoding)
+            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+        FileInputStream file = new FileInputStream(filename);
+        InputStreamReader in;
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildColumnMap(in);
+
+        file = new FileInputStream(filename);
+        if (encoding.length() == 0)
+            in = new InputStreamReader(file);
+        else
+            in = new InputStreamReader(file, encoding);
+
+        buildStateTable(in);
+//printTable();
+    }
+
+    public void buildColumnMap(InputStreamReader in) throws IOException {
+System.out.println("Building column map...");
+        CharSet charsInFile = new CharSet();
+        int c = in.read();
+int totalChars = 0;
+        while (c >= 0) {
+++totalChars; if (totalChars > 0 && totalChars % 5000 == 0) System.out.println("Read " + totalChars + " characters...");
+            if (c > ' ')
+                charsInFile = charsInFile.union(new CharSet((char)c));
+            c = in.read();
+        }
+//        Test.debugPrintln(charsInFile.toString());
+
+        StringBuffer tempReverseMap = new StringBuffer();
+        tempReverseMap.append(' ');
+
+        columnMap = new CompactByteArray();
+        Enumeration e = charsInFile.getChars();
+        byte p = 1;
+        while (e.hasMoreElements()) {
+            char[] range = (char[])e.nextElement();
+            for (char ch = range[0]; ch <= range[1]; ch++) {
+                if (columnMap.elementAt(Character.toLowerCase(ch)) == 0) {
+                    columnMap.setElementAt(Character.toUpperCase(ch), Character.toUpperCase(ch),
+                                        p);
+                    columnMap.setElementAt(Character.toLowerCase(ch), Character.toLowerCase(ch),
+                                        p);
+                    ++p;
+                    tempReverseMap.append(ch);
+                }
+            }
+        }
+//System.out.println("Compacting...");
+        columnMap.compact();
+
+//System.out.println(tempReverseMap.toString());
+        reverseColumnMap = new char[p];
+        tempReverseMap.getChars(0, p, reverseColumnMap, 0);
+
+        System.out.println("total columns = " + p);
+        numCols = p;
+        numColGroups = (numCols >> 5) + 1;
+
+/*
+short[] index = columnMap.getIndexArray();
+System.out.println("Index:");
+for (int i = 0; i < index.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i * 128) + ":");
+}
+System.out.print("\t" + Integer.toHexString(index[i]));
+}
+System.out.println();
+byte[] data = columnMap.getStringArray();
+System.out.print("Values:");
+for (int i = 0; i < data.length; i++) {
+if (i % 16 == 0) {
+System.out.println();
+System.out.print("    " + Integer.toHexString(i) + ":");
+}
+if (data[i] == 0)
+System.out.print("\t.");
+else
+System.out.print("\t" + Integer.toString(data[i]));
+}
+System.out.println();
+*/
+    }
+
+    public void buildStateTable(InputStreamReader in) throws IOException {
+        Vector tempTable = new Vector();
+        tempTable.addElement(new int[numCols + 1]);
+        int state = 0;
+
+        int c = in.read();
+        int[] row = null;
+        int charsInWord = 0;
+        while (c >= 0) {
+            charsInWord++;
+            short column = columnMap.elementAt((char)c);
+
+            row = (int[])(tempTable.elementAt(state));
+            if (column != 0) {
+                if (row[column] == 0) {
+                    row[column] = tempTable.size();
+                    ++row[numCols];
+                    state = (tempTable.size());
+                    tempTable.addElement(new int[numCols + 1]);
+                }
+                else
+                    state = row[column];
+            }
+            else if (state != 0) {
+                if (row[0] != -1) {
+                    row[0] = -1;
+                    ++row[numCols];
+                    uniqueWords++;
+                    totalUniqueWordChars += charsInWord;
+                }
+                totalWords++;
+if (totalWords % 5000 == 0) System.out.println("Read " + totalWords + " words, " + tempTable.size() + " rows...");
+                charsInWord = 0;
+                state = 0;
+            }
+            c = in.read();
+        }
+        if (state != 0) {
+            row = (int[])(tempTable.elementAt(state));
+            if (row[0] != -1) {
+                row[0] = -1;
+                uniqueWords++;
+                totalUniqueWordChars += charsInWord;
+            }
+            totalWords++;
+        }
+
+        compress(tempTable);
+
+        table = new short[numCols * tempTable.size()];
+        for (int i = 0; i < tempTable.size(); i++) {
+            row = (int[])tempTable.elementAt(i);
+            for (int j = 0; j < numCols; j++)
+                table[i * numCols + j] = (short)row[j];
+        }
+    }
+
+    private void compress(Vector tempTable) {
+System.out.println("Before compression:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        deleteDuplicateRows(tempTable);
+if (tempTable.size() > 32767) throw new IllegalArgumentException("Too many rows in table!");
+System.out.println("After removing duplicate rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+        stackRows(tempTable);
+System.out.println("After doubling up on rows:");
+System.out.println("  Number of rows = " + tempTable.size());
+System.out.println("  Number of columns = " + numCols);
+System.out.println("  Number of cells = " + tempTable.size() * numCols);
+    }
+
+/*
+experimental...
+    private void deleteDuplicateRows(Vector tempTable) {
+        int[] rowNumMap = new int[tempTable.size()];
+        for (int i = 0; i < rowNumMap.length; i++)
+            rowNumMap[i] = i;
+
+        int nextClass = numCols;
+        int currentClass;
+        int lastClass;
+        boolean split;
+        int[] row1, row2, tempRow;
+        int tempCat;
+
+        do {
+System.out.println("Making a pass (" + nextClass + " classes)...");
+            currentClass = 0;
+            lastClass = nextClass;
+            while (currentClass < nextClass) {
+System.out.println("   currentClass = " + currentClass);
+                split = false;
+                row1 = row2 = null;
+                for (int i = 0; i < tempTable.size(); i++) {
+                    tempRow = (int[])tempTable.elementAt(i);
+                    if (tempRow[numCols] == currentClass) {
+                        if (row1 == null) {
+                            row1 = (int[])tempTable.elementAt(i);
+                        }
+                        else {
+                            row2 = (int[])tempTable.elementAt(i);
+                            for (int j = 0; j < numCols; j++) {
+                                if ((row1[j] == 0) != (row2[j] == 0) ||
+                                            (row1[j] == -1) != (row2[j] == -1)) {
+                                    row2[numCols] = nextClass;
+                                    split = true;
+                                    break;
+                                }
+                                else if (row1[j] != 0 && row2[j] != 0 && row1[j] != -1
+                                                && row2[j] != -1) {
+                                    tempRow = (int[])tempTable.elementAt(row1[j]);
+                                    tempCat = tempRow[numCols];
+                                    tempRow = (int[])tempTable.elementAt(row2[j]);
+                                    if (tempCat != tempRow[numCols]) {
+                                        row2[numCols] = nextClass;
+                                        split = true;
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+                if (split)
+                    ++nextClass;
+                ++currentClass;
+//System.out.println();
+            }
+        } while (lastClass != nextClass);
+
+        int[] representatives = new int[nextClass];
+        for (int i = 1; i < tempTable.size(); i++) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (representatives[tempRow[numCols]] == 0)
+                representatives[tempRow[numCols]] = i;
+            else
+                rowNumMap[i] = representatives[tempRow[numCols]];
+        }
+System.out.println("Renumbering...");
+
+        // renumber all remaining rows
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (rowNumMap[i] != i)
+                tempTable.setElementAt(null, i);
+        int newRowNum = 0;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) != null)
+                rowNumMap[i] = newRowNum++;
+        for (int i = 0; i < rowNumMap.length; i++)
+            if (tempTable.elementAt(i) == null)
+                rowNumMap[i] = rowNumMap[rowNumMap[i]];
+
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            tempRow = (int[])tempTable.elementAt(i);
+            if (tempRow == null)
+                tempTable.removeElementAt(i);
+            else {
+                for (int j = 0; j < numCols; j++)
+                    if (tempRow[j] != -1)
+                        tempRow[j] = rowNumMap[j];
+            }
+        }
+//for (int i = 1; i < rowNumMap.length; i++) rowNumMap[i] = i; int newRowNum = rowNumMap.length;
+    }
+*/
+
+    private void deleteDuplicateRows(Vector tempTable) {
+        Vector work = (Vector)(tempTable.clone());
+        boolean didDeleteRow = true;
+
+        Vector tempMapping = new Vector(work.size());
+        int[] mapping = new int[work.size()];
+        for (int i = 0; i < mapping.length; i++) {
+            mapping[i] = i;
+            tempMapping.addElement(new Integer(i));
+        }
+        boolean[] tbd = new boolean[work.size()];
+
+        while (didDeleteRow) {
+System.out.println(" " + work.size() + " rows...");
+int deletedRows = 0;
+            didDeleteRow = false;
+
+            sortTable(work, tempMapping, mapping, 1, work.size());
+            for (int i = 0; i < work.size() - 1; ) {
+System.out.print("Deleting, inspecting row " + i + ", deleted " + deletedRows + " rows...\r");
+                int rowToDelete = ((Integer)(tempMapping.elementAt(i + 1))).intValue();
+                int rowToMapTo = ((Integer)(tempMapping.elementAt(i))).intValue();
+                if (compareRows((int[])work.elementAt(i), (int[])work.elementAt(i + 1),
+                                mapping) == 0) {
+                    tbd[rowToDelete] = true;
+                    tempTable.setElementAt(null, rowToDelete);
+                    while (tbd[mapping[rowToMapTo]])
+                        mapping[rowToMapTo] = mapping[mapping[rowToMapTo]];
+                    mapping[rowToDelete] = mapping[rowToMapTo];
+                    didDeleteRow = true;
+deletedRows++;
+                    work.removeElementAt(i + 1);
+                    tempMapping.removeElementAt(i + 1);
+                }
+                else
+                    i++;
+            }
+            for (int i = 0; i < mapping.length; i++) {
+                if (tbd[i] && tbd[mapping[i]])
+                    mapping[i] = mapping[mapping[i]];
+            }
+        }
+
+        int decrementBy = 0;
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                decrementBy++;
+            else
+                mapping[i] -= decrementBy;
+        }
+        for (int i = 0; i < mapping.length; i++) {
+            if (tbd[i])
+                mapping[i] = mapping[mapping[i]];
+        }
+        for (int i = tempTable.size() - 1; i >= 0; i--) {
+            if (tbd[i])
+                tempTable.removeElementAt(i);
+            else {
+                int[] row = (int[])tempTable.elementAt(i);
+                for (int j = 0; j < numCols; j++)
+                    row[j] = (row[j] == -1) ? -1 : mapping[row[j]];
+            }
+        }
+    }
+
+    private void sortTable(Vector table, Vector tempMapping, int[] mapping, int start, int end) {
+System.out.print("Sorting (" + start + ", " + end + ")...\r");
+        if (start + 1 >= end)
+            return;
+        else if (start + 10 >= end) {
+            for (int i = start + 1; i < end; i++) {
+                int[] row = (int[])table.elementAt(i);
+                Integer tempMap = (Integer)tempMapping.elementAt(i);
+                int j;
+                for (j = i - 1; j >= start; j--) {
+                    if (compareRows((int[])table.elementAt(j), row, mapping) > 0) {
+                        table.setElementAt((int[])table.elementAt(j), j + 1);
+                        tempMapping.setElementAt((Integer)tempMapping.elementAt(j), j + 1);
+                    }
+                    else {
+                        table.setElementAt(row, j + 1);
+                        tempMapping.setElementAt(tempMap, j + 1);
+                        break;
+                    }
+                }
+                if (j < start) {
+                    table.setElementAt(row, start);
+                    tempMapping.setElementAt(tempMap, start);
+                }
+            }
+        }
+        else {
+            int boundaryPos = (start + end) / 2;
+            int i;
+            boolean allTheSame = true;
+            int firstDifferent = 0;
+
+            do {
+                int[] boundary = (int[])table.elementAt(boundaryPos);
+                i = start;
+                int j = end - 1;
+                int[] row = null;
+                byte compResult;
+                while (i < j) {
+                    row = (int[])table.elementAt(i);
+                    while (i <= j && compareRows(row, boundary, mapping) < 0) {
+                        i++;
+                        row = (int[])table.elementAt(i);
+                    }
+
+                    row = (int[])table.elementAt(j);
+                    compResult = compareRows(row, boundary, mapping);
+                    while (i <= j && (compResult >= 0)) {
+                        if (compResult != 0) {
+                            allTheSame = false;
+                            firstDifferent = j;
+                        }
+                        j--;
+                        row = (int[])table.elementAt(j);
+                        compResult = compareRows(row, boundary, mapping);
+                    }
+                    if (i <= j) {
+                        row = (int[])table.elementAt(j);
+                        table.setElementAt(table.elementAt(i), j);
+                        table.setElementAt(row, i);
+                        Object temp = tempMapping.elementAt(j);
+                        tempMapping.setElementAt(tempMapping.elementAt(i), j);
+                        tempMapping.setElementAt(temp, i);
+                    }
+                }
+                if (i <= start) {
+                    if (allTheSame)
+                        return;
+                    else
+                        boundaryPos = firstDifferent;
+                }
+            } while (i <= start);
+            sortTable(table, tempMapping, mapping, start, i);
+            sortTable(table, tempMapping, mapping, i, end);
+        }
+    }
+
+    private byte compareRows(int[] row1, int[] row2, int[] mapping) {
+        for (int i = 0; i < numCols; i++) {
+            int c1 = (row1[i] == -1) ? -1 : mapping[row1[i]];
+            int c2 = (row2[i] == -1) ? -1 : mapping[row2[i]];
+            if (c1 < c2)
+                return -1;
+            else if (c1 > c2)
+                return 1;
+        }
+        return 0;
+    }
+
+    private int[] buildRowIndex(Vector tempTable) {
+        int[] tempRowIndex = new int[tempTable.size()];
+        rowIndexFlagsIndex = new short[tempTable.size()];
+        Vector tempRowIndexFlags = new Vector();
+        rowIndexShifts = new byte[tempTable.size()];
+
+        // build the row index.  Each entry in the row index starts out referring
+        // to the original row (so it doesn't actually do any mapping), and we set
+        // up the index flags to show which cells in the row are populated
+        for (int i = 0; i < tempTable.size(); i++) {
+            tempRowIndex[i] = i;
+
+            int[] row = (int[])tempTable.elementAt(i);
+            if (row[numCols] == 1 && row[0] == 0) {
+                int j = 0;
+                while (row[j] == 0)
+                    ++j;
+                rowIndexFlagsIndex[i] = (short)(-j);
+            }
+            else {
+                int[] flags = new int[numColGroups];
+                int nextFlag = 1;
+                int colGroup = 0;
+                for (int j = 0; j < numCols; j++) {
+                    if (row[j] != 0)
+                        flags[colGroup] |= nextFlag;
+                    nextFlag <<= 1;
+                    if (nextFlag == 0) {
+                        ++colGroup;
+                        nextFlag = 1;
+                    }
+                }
+                colGroup = 0;
+                int j = 0;
+                while (j < tempRowIndexFlags.size()) {
+                    if (((Integer)tempRowIndexFlags.elementAt(j)).intValue() ==
+                                    flags[colGroup]) {
+                        ++colGroup;
+                        ++j;
+                        if (colGroup >= numColGroups)
+                            break;
+                    }
+                    else if (colGroup != 0)
+                        colGroup = 0;
+                    else
+                        ++j;
+                }
+                rowIndexFlagsIndex[i] = (short)(j - colGroup);
+                while (colGroup < numColGroups) {
+                    tempRowIndexFlags.addElement(new Integer(flags[colGroup]));
+                    ++colGroup;
+                }
+            }
+        }
+        rowIndexFlags = new int[tempRowIndexFlags.size()];
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            rowIndexFlags[i] = ((Integer)tempRowIndexFlags.elementAt(i)).intValue();
+System.out.println("Number of column groups = " + numColGroups);
+System.out.println("Size of rowIndexFlags = " + rowIndexFlags.length);
+
+        return tempRowIndex;
+    }
+
+    private void stackRows(Vector tempTable) {
+/*
+System.out.print("Row:\t");
+for (int i = 0; i < numCols; i++)
+System.out.print(reverseColumnMap[i] + "\t");
+System.out.println();
+for (int i = 0; i < tempTable.size(); i++) {
+System.out.print(Integer.toString(i) + ":\t");
+int[] row = (int[])tempTable.elementAt(i);
+for (int j = 0; j < row.length; j++)
+if (row[j] != 0) System.out.print(Integer.toString(row[j]) + "\t");
+else System.out.print(".\t");
+System.out.println();
+}
+*/
+
+        int[] tempRowIndex = buildRowIndex(tempTable);
+        boolean[] tbd = new boolean[tempTable.size()];
+
+        // now we actually go through and stack rows together
+        for (int i = 0; i < tempTable.size(); i++) {
+            if (tbd[i])
+                continue;
+System.out.print("Stacking, inspecting row " + i + "...\r");
+//System.out.println("Stacking, inspecting row " + i + "...");
+
+            int[] destRow = (int[])tempTable.elementAt(i);
+
+            boolean[] tempFlags = new boolean[numCols];
+            boolean[] filledCells = new boolean[numCols];
+            for (int j = 0; j < numCols; j++)
+                filledCells[j] = destRow[j] != 0;
+
+            for (int j = i + 1; destRow[numCols] < numCols && j < tempTable.size(); j++) {
+                if (tbd[j])
+                    continue;
+
+                int[] srcRow = (int[])tempTable.elementAt(j);
+                if (srcRow[numCols] + destRow[numCols] > numCols)
+                    continue;
+
+                int maxLeftShift = -999;
+                int maxRightShift = 0;
+                for (int k = 0; k < numCols; k++) {
+                    tempFlags[k] = srcRow[k] != 0;
+                    if (tempFlags[k]) {
+                        if (maxLeftShift == -999)
+                            maxLeftShift = -k;
+                        maxRightShift = (numCols - 1) - k;
+                    }
+                }
+
+                int shift;
+                for (shift = maxLeftShift; shift <= maxRightShift; shift++) {
+                    int k;
+                    for (k = 0; k < numCols; k++) {
+                        if (tempFlags[k] && filledCells[k + shift])
+                            break;
+                    }
+                    if (k >= numCols)
+                        break;
+                }
+                if (shift <= maxRightShift) {
+//System.out.println("Packing row " + j + " into row " + i + " with shift = " + shift);
+                    for (int k = 0; k < numCols; k++) {
+                        if (tempFlags[k]) {
+                            filledCells[k + shift] = true;
+                            destRow[k + shift] = srcRow[k];
+                            ++destRow[numCols];
+                        }
+                    }
+                    tbd[j] = true;
+                    tempRowIndex[j] = i;
+                    rowIndexShifts[j] = (byte)shift;
+                }
+            }
+        }
+
+        // finally, we squeeze out all the deleted rows
+        int decrementBy = 0;
+        for (int i = 0; i < tempRowIndex.length; i++) {
+            if (!tbd[i])
+                tempRowIndex[i] -= decrementBy;
+            else
+                ++decrementBy;
+        }
+        rowIndex = new short[tempRowIndex.length];
+        for (int i = tempRowIndex.length - 1; i >= 0; i--) {
+            if (tbd[i]) {
+                rowIndex[i] = (short)(tempRowIndex[tempRowIndex[i]]);
+                tempTable.removeElementAt(i);
+            }
+            else
+                rowIndex[i] = (short)tempRowIndex[i];
+        }
+    }
+
+    private void printTable() {
+        short cell;
+        int populatedCells = 0;
+/*
+        System.out.println("Conceptual table:");
+        System.out.println(" Row:   a   b   c   d   e   f   g   h   i   j   k   l   m   n"
+                + "   o   p   q   r   s   t   u   v   w   x   y   z   '   #");
+
+        boolean[] rowPrintFlags = new boolean[rowIndex.length];
+        printConceptualTable("", 0, rowPrintFlags);
+*/
+
+        System.out.println();
+        System.out.println("Conceptual table:");
+        System.out.print(" Row:");
+        for (int i = 0; i < reverseColumnMap.length; i++) {
+                System.out.print("   " + reverseColumnMap[i]);
+        }
+        for (int i = 0; i < rowIndex.length; i++) {
+            System.out.println();
+            printNumber(i, 4);
+            System.out.print(":");
+            for (int j = 0; j < numCols; j++)
+                printNumber(at(i, j), 4);
+        }
+        System.out.println('\n');
+
+        System.out.println();
+        System.out.println("Internally stored table:");
+        System.out.print(" Row:");
+        for (int i = 0; i < reverseColumnMap.length; i++) {
+                System.out.print("   " + reverseColumnMap[i]);
+        }
+        for (int i = 0; i < table.length; i++) {
+            if (i % numCols == 0) {
+                System.out.println();
+                printNumber(i / numCols, 4);
+                System.out.print(":");
+            }
+            cell = table[i];
+            if (cell != 0)
+                populatedCells++;
+            printNumber(cell, 4);
+        }
+        System.out.println('\n');
+
+System.out.println("Row index:");
+for (int i = 0; i < rowIndex.length; i++) {
+    System.out.print("   " + i + " -> " + rowIndex[i]);
+    if (rowIndexFlagsIndex[i] < 0)
+        System.out.print(", flags = " + Integer.toBinaryString((1 << (-rowIndexFlagsIndex[i]))) + " (" + rowIndexFlagsIndex[i]);
+    else
+        System.out.print(", flags = " + Integer.toBinaryString(rowIndexFlags[rowIndexFlagsIndex[i]]) + " (" + rowIndexFlagsIndex[i]);
+    System.out.println("), shift = " + rowIndexShifts[i]);
+}
+/*
+        int theoreticalMinRows = populatedCells / numCols;
+        if (populatedCells % numCols != 0)
+            theoreticalMinRows++;
+        int oneCellRows = 0;
+        for (int i = 0; i < rowIndexFlags.length; i++) {
+            double temp = Math.log(rowIndexFlags[i]) / Math.log(2);
+            if (temp == (int)temp)
+                oneCellRows++;
+        }
+
+        System.out.println('\n');
+        System.out.println("Total words in input = " + totalWords);
+        System.out.println("Total unique words = " + uniqueWords + ", comprising " +
+                        totalUniqueWordChars + " characters\n");
+        System.out.println("Number of populated cells = " + populatedCells);
+        System.out.println("Total number of cells = " + (table.length));
+        System.out.println("Residency = " + ((float)populatedCells / table.length * 100) + '%');
+        System.out.println("Ratio of populated cells to unique-word characters = " +
+                        ((float)populatedCells / totalUniqueWordChars * 100) + '%');
+        System.out.println("Ratio of total cells to unique-word characters = " +
+                        ((float)table.length / totalUniqueWordChars * 100) + '%');
+        System.out.println("Number of rows = " + (table.length / numCols));
+        System.out.println("Theoretical minimum number of rows = " + theoreticalMinRows);
+        System.out.println("Ratio of number of rows to theoretical minimum = " +
+                        ((float)(table.length / numCols) / theoreticalMinRows * 100) + '%');
+        System.out.println("Number of conceptual rows = " + rowIndex.length);
+        System.out.println("Conceptual rows with only one populated cell = " + oneCellRows);
+        System.out.println("Ratio of one-cell rows to total conceptual rows = " + (((float)oneCellRows)
+                        / rowIndex.length * 100) + '%');
+        System.out.println("Average number of populated cells in multi-cell rows = " +
+                        ((float)(populatedCells - oneCellRows) / (rowIndex.length - oneCellRows)));
+
+        int storageUsed = table.length * 2 + rowIndex.length * 2
+                        + rowIndexFlags.length * 4 + rowIndexShifts.length;
+        System.out.println("Total number of bytes in table (including indexes) = " +
+                        storageUsed);
+        System.out.println("Bytes of overhead per unique-word character = " + ((double)(storageUsed
+                        - (totalUniqueWordChars * 2)) / totalUniqueWordChars));
+*/
+    }
+
+    private void printConceptualTable(String initialString, int state, boolean[] flags) {
+        if (initialString.length() == 0)
+            System.out.println("root:");
+        else
+            System.out.println(initialString + ':');
+
+        if (!flags[state]) {
+            flags[state] = true;
+            printNumber(state, 4);
+            System.out.print(":");
+            for (int i = 0; i < numCols; i++)
+                printNumber(at(state, i), 4);
+            System.out.println();
+        }
+
+        int nextState;
+        for (int i = 0; i < numCols; i++) {
+            nextState = at(state, i);
+            if (nextState > 0 && !flags[nextState]) {
+                printNumber(nextState, 4);
+                System.out.print(":");
+                for (int j = 0; j < numCols; j++)
+                    printNumber(at(nextState, j), 4);
+                System.out.println();
+            }
+        }
+        for (int i = 0; i < numCols; i++) {
+            nextState = at(state, i);
+            if (nextState > 0 && !flags[nextState]) {
+                char nextChar;
+                if (nextState == 27)
+                    nextChar = ' ';
+                else if (nextState == 26)
+                    nextChar = '\'';
+                else
+                    nextChar = (char)(i + 'a');
+                flags[nextState] = true;
+                printConceptualTable(initialString + nextChar, nextState, flags);
+            }
+        }
+    }
+
+    private void printWordList(String partialWord, int state, PrintWriter out)
+            throws IOException {
+        if (state == -1) {
+            System.out.println(partialWord);
+            if (out != null)
+                out.println(partialWord);
+        }
+        else {
+            for (int i = 0; i < numCols; i++) {
+                if (at(state, i) != 0)
+                    printWordList(partialWord + reverseColumnMap[i], at(state, i), out);
+            }
+        }
+    }
+
+    private void writeDictionaryFile(DataOutputStream out) throws IOException {
+        out.writeInt(0);    // version number
+
+        char[] columnMapIndexes = columnMap.getIndexArray();
+        out.writeInt(columnMapIndexes.length);
+        for (int i = 0; i < columnMapIndexes.length; i++)
+            out.writeShort((short)columnMapIndexes[i]);
+        byte[] columnMapValues = columnMap.getValueArray();
+        out.writeInt(columnMapValues.length);
+        for (int i = 0; i < columnMapValues.length; i++)
+            out.writeByte((byte)columnMapValues[i]);
+
+        out.writeInt(numCols);
+        out.writeInt(numColGroups);
+
+        out.writeInt(rowIndex.length);
+        for (int i = 0; i < rowIndex.length; i++)
+            out.writeShort(rowIndex[i]);
+
+        out.writeInt(rowIndexFlagsIndex.length);
+        for (int i = 0; i < rowIndexFlagsIndex.length; i++)
+            out.writeShort(rowIndexFlagsIndex[i]);
+        out.writeInt(rowIndexFlags.length);
+        for (int i = 0; i < rowIndexFlags.length; i++)
+            out.writeInt(rowIndexFlags[i]);
+
+        out.writeInt(rowIndexShifts.length);
+        for (int i = 0; i < rowIndexShifts.length; i++)
+            out.writeByte(rowIndexShifts[i]);
+
+        out.writeInt(table.length);
+        for (int i = 0; i < table.length; i++)
+            out.writeShort(table[i]);
+
+        out.close();
+    }
+
+    private void printNumber(int x, int width) {
+        String s = String.valueOf(x);
+        if (width > s.length())
+            System.out.print(spaces.substring(0, width - s.length()));
+        if (x != 0)
+            System.out.print(s);
+        else
+            System.out.print('.');
+    }
+
+    public final short at(int row, char ch) {
+        int col = columnMap.elementAt(ch);
+        return at(row, col);
+    }
+
+    public final short at(int row, int col) {
+        if (cellIsPopulated(row, col))
+            return internalAt(rowIndex[row], col + rowIndexShifts[row]);
+        else
+            return 0;
+    }
+
+    private final boolean cellIsPopulated(int row, int col) {
+        if (rowIndexFlagsIndex[row] < 0)
+            return col == -rowIndexFlagsIndex[row];
+        else {
+            int flags = rowIndexFlags[rowIndexFlagsIndex[row] + (col >> 5)];
+            return (flags & (1 << (col & 0x1f))) != 0;
+        }
+    }
+
+    private final short internalAt(int row, int col) {
+        return table[row * numCols + col];
+    }
+
+    private CompactByteArray columnMap = null;
+    private char[] reverseColumnMap = null;
+    private int numCols;
+    private int numColGroups;
+    private short[] table = null;
+    private short[] rowIndex = null;
+    private int[] rowIndexFlags = null;
+    private short[] rowIndexFlagsIndex = null;
+    private byte[] rowIndexShifts = null;
+
+    private int totalWords = 0;
+    private int uniqueWords = 0;
+    private int totalUniqueWordChars = 0;
+
+    private static final String spaces = "      ";
+}
+
diff --git a/src/com/ibm/tools/compression/CompressionTableGenerator.java b/src/com/ibm/tools/compression/CompressionTableGenerator.java
new file mode 100755
index 0000000..9d6d8d9
--- /dev/null
+++ b/src/com/ibm/tools/compression/CompressionTableGenerator.java
@@ -0,0 +1,230 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/tools/compression/Attic/CompressionTableGenerator.java,v $ 
+ * $Date: 2000/03/10 04:17:56 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.tools.compression;
+
+import com.ibm.text.*;
+
+/**
+ * Utility class to generate the tables used by the SCSU interface and
+ * the UnicodeCompressor class.
+ *
+ * @author Stephen F. Booth
+ * @version 1.0 08 Mar 99
+ */
+class CompressionTableGenerator
+{
+    // duplicate of constants in SCSU
+
+    final static int LATININDEX                  = 0xF9;
+    final static int IPAEXTENSIONINDEX           = 0xFA;
+    final static int GREEKINDEX                  = 0xFB;
+    final static int ARMENIANINDEX               = 0xFC;
+    final static int HIRAGANAINDEX               = 0xFD;
+    final static int KATAKANAINDEX               = 0xFE;
+    final static int HALFWIDTHKATAKANAINDEX      = 0xFF;
+
+    final static int SDEFINEX                    = 0x0B;
+    final static int SRESERVED                   = 0x0C;  // reserved value
+    final static int SQUOTEU                     = 0x0E;
+    final static int SCHANGEU                    = 0x0F;
+
+    final static int SQUOTE0                     = 0x01;
+    final static int SQUOTE1                     = 0x02;
+    final static int SQUOTE2                     = 0x03;
+    final static int SQUOTE3                     = 0x04;
+    final static int SQUOTE4                     = 0x05;
+    final static int SQUOTE5                     = 0x06;
+    final static int SQUOTE6                     = 0x07;
+    final static int SQUOTE7                     = 0x08;
+
+    final static int SCHANGE0                    = 0x10;
+    final static int SCHANGE1                    = 0x11;
+    final static int SCHANGE2                    = 0x12;
+    final static int SCHANGE3                    = 0x13;
+    final static int SCHANGE4                    = 0x14;
+    final static int SCHANGE5                    = 0x15;
+    final static int SCHANGE6                    = 0x16;
+    final static int SCHANGE7                    = 0x17;
+
+    final static int SDEFINE0                    = 0x18;
+    final static int SDEFINE1                    = 0x19;
+    final static int SDEFINE2                    = 0x1A;
+    final static int SDEFINE3                    = 0x1B;
+    final static int SDEFINE4                    = 0x1C;
+    final static int SDEFINE5                    = 0x1D;
+    final static int SDEFINE6                    = 0x1E;
+    final static int SDEFINE7                    = 0x1F;
+
+    //==========================
+    // Unicode mode tags
+    //==========================
+    final static int UCHANGE0                    = 0xE0;
+    final static int UCHANGE1                    = 0xE1;
+    final static int UCHANGE2                    = 0xE2;
+    final static int UCHANGE3                    = 0xE3;
+    final static int UCHANGE4                    = 0xE4;
+    final static int UCHANGE5                    = 0xE5;
+    final static int UCHANGE6                    = 0xE6;
+    final static int UCHANGE7                    = 0xE7;
+
+    final static int UDEFINE0                    = 0xE8;
+    final static int UDEFINE1                    = 0xE9;
+    final static int UDEFINE2                    = 0xEA;
+    final static int UDEFINE3                    = 0xEB;
+    final static int UDEFINE4                    = 0xEC;
+    final static int UDEFINE5                    = 0xED;
+    final static int UDEFINE6                    = 0xEE;
+    final static int UDEFINE7                    = 0xEF;
+
+    final static int UQUOTEU                     = 0xF0;
+    final static int UDEFINEX                    = 0xF1;
+    final static int URESERVED                   = 0xF2;  // reserved value
+
+    final static int BLOCKSIZE = 0xFF;
+    
+    /**
+     * Generate the table used as sOffsetTable in SCSU.
+     * This table contains preformed indices so we can do array lookups 
+     * instead of calculations for speed during decompression.
+     */
+    static void printOffsetTable()
+    {
+        int     i           = 0;
+	int []	offsetTable = new int [ BLOCKSIZE + 1 ];
+
+        // 0x00 is reserved
+
+        // half blocks from U+0080 to U+3380
+        for( i = 0x01; i < 0x68; i++ )
+            offsetTable[i] = i * 0x80;
+	
+        // half blocks from U+E000 to U+FF80
+        for( i = 0x68; i < 0xA8; i++ )
+            offsetTable[i] = (i * 0x80) + 0xAC00;
+	
+        // 0xA8..0xF8 is reserved
+ 
+        offsetTable[ LATININDEX ] = 0x00C0;
+        offsetTable[ IPAEXTENSIONINDEX ] = 0x0250;
+        offsetTable[ GREEKINDEX ] = 0x0370;
+        offsetTable[ ARMENIANINDEX ] = 0x0530;
+        offsetTable[ HIRAGANAINDEX ] = 0x3040;
+        offsetTable[ KATAKANAINDEX ] = 0x30A0;
+        offsetTable[ HALFWIDTHKATAKANAINDEX ] = 0xFF60;
+
+        // dump the generated table
+	System.out.println("static int [] sOffsetTable = {");
+        for(i = 0; i < offsetTable.length - 1; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i])
+			     + ", ");
+        for(i = offsetTable.length - 1; i < offsetTable.length; i++)
+            System.out.print("0x" + Integer.toHexString(offsetTable[i]));
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    /**
+     * Generate the table used as sSingleTagTable in UnicodeCompressor.
+     * This table contains boolean values indicating if a byte is a
+     * single-byte mode tag.
+     */
+    static void printSingleTagTable()
+    {
+        int        i              = 0;
+	boolean [] singleTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+		
+	    case SQUOTEU:  case SCHANGEU: 
+	    case SDEFINEX: case SRESERVED:
+	    case SQUOTE0:  case SQUOTE1:  
+	    case SQUOTE2:  case SQUOTE3:
+	    case SQUOTE4:  case SQUOTE5:  
+	    case SQUOTE6:  case SQUOTE7:
+	    case SCHANGE0: case SCHANGE1: 
+	    case SCHANGE2: case SCHANGE3:
+	    case SCHANGE4: case SCHANGE5: 
+	    case SCHANGE6: case SCHANGE7:
+	    case SDEFINE0: case SDEFINE1: 
+	    case SDEFINE2: case SDEFINE3:
+	    case SDEFINE4: case SDEFINE5: 
+	    case SDEFINE6: case SDEFINE7:
+		singleTagTable[i] = true;
+                break;
+		
+	    default:
+		singleTagTable[i] = false;
+                break;
+            }
+        }
+	
+        // dump the generated table
+        System.out.println("private static boolean [] sSingleTagTable = {");
+        for(i = 0; i < singleTagTable.length - 1; i++)
+            System.out.print(singleTagTable[i] + ", ");
+        for(i = singleTagTable.length - 1; i < singleTagTable.length; i++)
+            System.out.print(singleTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    
+    /**
+     * Generate the table used as sUnicodeTagTable in 
+     * This table contains boolean values indicating if a byte is a
+     * unicode mode tag.
+     */
+    static void printUnicodeTagTable()
+    {
+        int        i               = 0;
+	boolean [] unicodeTagTable = new boolean  [ BLOCKSIZE + 1 ];
+
+        for( i = 0x00; i <= BLOCKSIZE; i++ ) {
+            switch( i ) {
+	    case UQUOTEU:  case UDEFINEX: 
+	    case URESERVED:
+	    case UCHANGE0: case UCHANGE1: 
+	    case UCHANGE2: case UCHANGE3:
+	    case UCHANGE4: case UCHANGE5: 
+	    case UCHANGE6: case UCHANGE7:
+	    case UDEFINE0: case UDEFINE1: 
+	    case UDEFINE2: case UDEFINE3:
+	    case UDEFINE4: case UDEFINE5: 
+	    case UDEFINE6: case UDEFINE7:
+		unicodeTagTable[i] = true;
+                break;
+		
+	    default:
+		unicodeTagTable[i] = false;
+                break;
+            }
+        }
+	
+        // dump the generated table
+        System.out.println("private static boolean [] sUnicodeTagTable = {");
+        for(i = 0; i < unicodeTagTable.length - 1; i++)
+            System.out.print(unicodeTagTable[i] + ", ");
+        for(i = unicodeTagTable.length - 1; i < unicodeTagTable.length; i++)
+            System.out.print(unicodeTagTable[i]);
+        System.out.println();
+        System.out.println("};");
+    }
+    
+    public static void main(String[] argv)
+    {
+        printOffsetTable();
+        printSingleTagTable();
+        printUnicodeTagTable();
+    }
+};
diff --git a/src/com/ibm/tools/normalizer/CPPWriter.java b/src/com/ibm/tools/normalizer/CPPWriter.java
new file mode 100755
index 0000000..b21295a
--- /dev/null
+++ b/src/com/ibm/tools/normalizer/CPPWriter.java
@@ -0,0 +1,201 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/tools/normalizer/Attic/CPPWriter.java,v $ 
+ * $Date: 2000/03/10 04:17:56 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.tools.normalizer;
+
+import com.ibm.text.*;
+import com.ibm.util.*;
+import com.ibm.util.CompactByteArray;
+import com.ibm.util.CompactCharArray;
+import java.io.*;
+
+/**
+ * CPPWriter knows how to write data structures out to C++ source and header files
+ */
+class CPPWriter extends SourceWriter {
+    PrintStream source;
+    PrintStream header;
+
+    String className;
+
+    public CPPWriter(String fileName, String cName) throws FileNotFoundException {
+        className = cName;
+
+        // Find the class name
+        header = new PrintStream(new FileOutputStream(fileName + ".h"));
+        header.println(kHeader);
+        header.println("#include \"ptypes.h\"");
+        header.println("#include \"cmpbytea.h\"");
+        header.println("#include \"cmpchara.h\"");
+        header.println("");
+        header.println("struct " + className + " {");   // "struct" makes everything public
+
+        source = new PrintStream(new FileOutputStream(fileName + ".cpp"));
+        source.println(kHeader);
+        source.println("#include \"" + fileName + ".h\" ");
+        source.println("\n");
+    }
+
+    public void close() {
+        header.println("};");
+        header.close();
+        source.close();
+        header = null;
+        source = null;
+    }
+
+    public void write(String name, short value) {
+        header.println("    enum { " + name + " = " + value + " };");
+    }
+
+    public void write(String name, int value) {
+        header.println("    enum { " + name + " = " + value + " };");
+    }
+
+    public void writeHex(String name, char value) {
+        header.println("    enum { " + name + " = 0x" + UInfo.hex(value) + " };");
+    }
+
+    public void writeHex(String name, int value) {
+        header.println("    enum { " + name + " = 0x" + Integer.toString(value,16) + " };");
+    }
+
+    public void write(String name, CompactCharArray array) {
+        array.compact(false);
+
+        String indexName = name + "_index";
+        String valueName = name + "_values";
+
+        write(indexName, array.getIndexArray());
+        write(valueName, array.getValueArray());
+
+        header.println("");
+        header.println("    static const CompactCharArray " + name + ";");
+
+        source.println("");
+        source.println("const CompactCharArray " + className + "::" + name + "("
+                        + indexName + "," + valueName
+                        + ", " + array.getValueArray().length + ");" );
+    }
+
+    public void write(String name, CompactByteArray array) {
+        array.compact(false);
+
+        String indexName = name + "_index";
+        String valueName = name + "_values";
+
+        write(indexName, array.getIndexArray());
+        write(valueName, array.getValueArray());
+
+        header.println("");
+        header.println("    static CompactByteArray " + name + ";");
+
+        source.println("");
+        // TODO: add "const" here when CompactByteArray::get is made const
+        source.println("CompactByteArray " + className + "::" + name + "("
+                        + "(UniChar*)" + indexName + ", (t_int8*)" + valueName
+                        + ", " + array.getValueArray().length + ");" );
+    }
+
+    public void write(String name, StringBuffer str) {
+        write(name, str.toString().toCharArray());
+    }
+
+    public void write(String name, char[] array) {
+        header.println("");
+        header.println("    static const UniChar " + name + "[];");
+
+        source.println("");
+        source.println("const UniChar " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print("\n    ");
+            }
+            source.print("0x" + UInfo.hex(array[i]) + ", ");
+        }
+        source.println("};");
+    }
+
+    public void write(String name, short[] array) {
+        header.println("");
+        header.println("    static const t_uint16 " + name + "[];");
+
+        source.println("");
+        source.println("const t_uint16 " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print("\n    ");
+            }
+            source.print("0x" + UInfo.hex((char)array[i]) + ", ");
+        }
+        source.println("};");
+    }
+
+    public void write(String name, int[] array) {
+        header.println("");
+        header.println("    static const t_int32 " + name + "[];");
+
+        source.println("");
+        source.println("const t_int32 " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print("\n    ");
+            }
+            source.print("0x" + Integer.toString(array[i],16) + ", ");
+        }
+        source.println("};");
+    }
+
+    public void write(String name, byte[] array) {
+        header.println("");
+        header.println("    static const t_int8 " + name + "[];");
+
+        source.println("");
+        source.println("const t_int8 " + className + "::" + name + "[] = {");
+
+        source.print("    ");
+        for (int i = 0; i < array.length; i++) {
+            if (i > 0 && i % 8 == 0) {
+                source.print("\n    ");
+            }
+            int value = array[i];
+            if (value < 0) value += 256;
+            source.print("(t_int8)0x" + Integer.toString(value,16) + ", ");
+        }
+        source.println("};");
+    }
+
+    static final String kHeader =
+         "/*\n"
+        +" * @(#)$RCSFile$ $Revision: 1.2 $ $Date: 2000/03/10 04:17:56 $\n"
+        +" *\n"
+        +" * (C) Copyright IBM Corp. 1997-1998 - All Rights Reserved\n"
+        +" *\n"
+        +" * The program is provided 'as is' without any warranty express or\n"
+        +" * implied, including the warranty of non-infringement and the implied\n"
+        +" * warranties of merchantibility and fitness for a particular purpose.\n"
+        +" * IBM will not be liable for any damages suffered by you as a result\n"
+        +" * of using the Program. In no event will IBM be liable for any\n"
+        +" * special, indirect or consequential damages or lost profits even if\n"
+        +" * IBM has been advised of the possibility of their occurrence. IBM\n"
+        +" * will not be liable for any third party claims against you.\n"
+        +" *\n"
+        +" * This class is MACHINE GENERATED.  Run NormalizerBuilder to regenerate.\n"
+        +" */\n"
+        +"\n";
+}
diff --git a/src/com/ibm/tools/normalizer/JavaWriter.java b/src/com/ibm/tools/normalizer/JavaWriter.java
new file mode 100755
index 0000000..4c12a4ba
--- /dev/null
+++ b/src/com/ibm/tools/normalizer/JavaWriter.java
@@ -0,0 +1,120 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/tools/normalizer/Attic/JavaWriter.java,v $ 
+ * $Date: 2000/03/10 04:17:56 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.tools.normalizer;
+
+//import com.ibm.text.*;
+import com.ibm.util.Utility;
+import com.ibm.util.CompactCharArray;
+import com.ibm.util.CompactByteArray;
+import java.io.*;
+
+/**
+ * JavaWriter knows how to write data structures out to a Java source file
+ */
+class JavaWriter extends SourceWriter {
+    PrintStream out;
+
+    public JavaWriter(String name) throws FileNotFoundException {
+        // Find the class name
+        int cIndex = name.lastIndexOf('/');
+        String cName = (cIndex >= 0) ? name.substring(cIndex+1) : name;
+
+        out = new PrintStream(new FileOutputStream(name + ".java"));
+
+        out.println(kHeader);
+        out.println("class " + cName + " {");
+    }
+
+    public void close() {
+        out.println("}");
+        out.close();
+        out = null;
+    }
+
+    public void write(String name, short value) {
+        out.println("    static final short " + name + " = " + value + ";");
+    }
+
+    public void write(String name, int value) {
+        out.println("    static final int " + name + " = " + value + ";");
+    }
+
+    public void writeHex(String name, char value) {
+        out.println("    static final char " + name + " = 0x" + Integer.toString((int)value,16) + ";");
+    }
+
+    public void writeHex(String name, int value) {
+        out.println("    static final int " + name + " = 0x" + Integer.toString(value,16) + ";");
+    }
+
+    public void write(String name, CompactCharArray array) {
+        array.compact(false);
+        out.println("");
+        out.println("    static final CompactCharArray " + name + " = new CompactCharArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getIndexArray())));
+        out.println("        ," );
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getValueArray())));
+        out.println("        );" );
+    }
+
+    public void write(String name, CompactByteArray array) {
+        array.compact(false);
+        out.println("");
+        out.println("    static final CompactByteArray " + name + " = new CompactByteArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getIndexArray())));
+        out.println("        ," );
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array.getValueArray())));
+        out.println("        );" );
+    }
+
+    public void write(String name, StringBuffer str) {
+        out.println("");
+        out.println("    static final String " + name + " = ");
+        out.println(Utility.formatForSource(str.toString()));
+        out.println("    ;");
+    }
+
+    public void write(String name, char[] array) {
+        out.println("");
+        out.println("    static final char[] " + name + " = Utility.RLEStringToCharArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array)));
+        out.println("    );");
+    }
+
+    public void write(String name, int[] array) {
+        out.println("");
+        out.println("    static final int[] " + name + " = Utility.RLEStringToIntArray(");
+        out.println(Utility.formatForSource(Utility.arrayToRLEString(array)));
+        out.println("    );");
+    }
+
+    static final String kHeader =
+         "/*\n"
+        +" * (C) Copyright IBM Corp. 1997-1998 - All Rights Reserved\n"
+        +" *\n"
+        +" * The program is provided 'as is' without any warranty express or\n"
+        +" * implied, including the warranty of non-infringement and the implied\n"
+        +" * warranties of merchantibility and fitness for a particular purpose.\n"
+        +" * IBM will not be liable for any damages suffered by you as a result\n"
+        +" * of using the Program. In no event will IBM be liable for any\n"
+        +" * special, indirect or consequential damages or lost profits even if\n"
+        +" * IBM has been advised of the possibility of their occurrence. IBM\n"
+        +" * will not be liable for any third party claims against you.\n"
+        +" */\n"
+        +"\n"
+        +"package com.ibm.text;\n"
+        +"import com.ibm.util.*;\n"
+        + "// This class is MACHINE GENERATED.  Run NormalizerBuilder to regenerate.\n"
+        +"\n";
+}
+
diff --git a/src/com/ibm/tools/normalizer/MutableChar.java b/src/com/ibm/tools/normalizer/MutableChar.java
new file mode 100755
index 0000000..600e196
--- /dev/null
+++ b/src/com/ibm/tools/normalizer/MutableChar.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/tools/normalizer/Attic/MutableChar.java,v $ 
+ * $Date: 2000/03/10 04:17:56 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+// MutableChar.java
+
+package com.ibm.tools.normalizer;
+
+import com.ibm.text.*;
+import java.lang.Comparable;
+import java.io.Serializable;
+
+class MutableChar implements Cloneable, Comparable, Serializable {
+
+    public char value;
+
+    public MutableChar(char newValue) {
+        value = newValue;
+    }
+    public MutableChar set(char newValue) {
+        value = newValue;
+        return this;
+    }
+    public boolean equals(Object other) {
+        return value == ((MutableChar)other).value;
+    }
+    public int hashCode() {
+        return value;
+    }
+    public String toString() {
+        return String.valueOf(value);
+    }
+    public int compareTo(Object b) {
+        char ch = ((MutableChar)b).value;
+        return value == ch ? 0 : value < ch ? -1 : 1;
+    }
+}
+
diff --git a/src/com/ibm/tools/normalizer/NormalizerBuilder.java b/src/com/ibm/tools/normalizer/NormalizerBuilder.java
new file mode 100755
index 0000000..894c456
--- /dev/null
+++ b/src/com/ibm/tools/normalizer/NormalizerBuilder.java
@@ -0,0 +1,998 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/tools/normalizer/Attic/NormalizerBuilder.java,v $ 
+ * $Date: 2000/03/10 04:17:56 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.tools.normalizer;
+
+import java.io.*;
+import java.util.*;
+import com.ibm.text.*;
+import com.ibm.util.CompactByteArray;
+import com.ibm.util.CompactCharArray;
+
+public final class NormalizerBuilder
+{
+    public static void main(String args[]) throws IOException {
+        try {
+            NormalizerBuilder foo = new NormalizerBuilder(args);
+        } catch (Throwable e) {
+            System.err.println(e.getLocalizedMessage());
+            e.printStackTrace();
+            System.in.read();
+        }
+    }
+
+    private UInfo uinfo;
+
+    private DecompMap decomps = new DecompMap();
+
+    private DecompMap explodeCompat = new DecompMap();
+    private DecompMap explodeOnly   = new DecompMap();
+
+    private CompMap permutedCompositions = new CompMap();
+    private CompMap binaryCompositions = new CompMap();
+
+    private CharSet bases = new CharSet();
+    private CharSet combining = new CharSet();
+
+    private Map pairExplosions = new HashMap();
+
+    private boolean fVerbose = false;
+    private boolean fWriteData = false;
+    private boolean fShowSizes = false;
+    private boolean fPrompt = false;
+    private boolean fJava = true;
+    private boolean fCPP = false;
+
+    /**
+     * The highest Unicode character that has a canonical decomposition.
+     * (i.e. largest char that can result from a primary canonical composition.)
+     */
+    char largestChar = 0;
+
+    public NormalizerBuilder(String[] args) throws IOException
+    {
+        // Parse my command line
+        for (int i = 0; i < args.length; i++)
+        {
+            if (args[i].equals("-data")) {
+                uinfo = new UInfo(args[++i]);
+            }
+            else if (args[i].equals("-write")) {
+                fWriteData = true;
+            }
+            else if (args[i].equals("-verbose")) {
+                fVerbose = true;
+            }
+            else if (args[i].equals("-size")) {
+                fShowSizes = true;
+            }
+            else if (args[i].equals("-prompt")) {
+                fPrompt = true;
+            }
+            else if (args[i].equals("-java")) {
+                fJava = true;
+                fCPP = false;
+            }
+            else if (args[i].equals("-cpp")) {
+                fCPP = true;
+                fJava = false;
+            }
+        }
+        if (uinfo == null) {
+            uinfo = new UInfo("../src/data/unicode/UnicodeData.txt");
+        }
+
+        boolean canonicalOnly = true;
+
+        createDecompositions();
+
+        out("\nGenerating permuted compositions...");
+
+        // Form the list of all the permuted sequences that are canonically
+        // equivalent to the canonical decompositions.
+        // As a by-product, find out which are not combining character sequences,
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            String decomp = decomps.get(ch);
+
+            if (decomp != null) {
+                boolean done = false;
+
+                if (!uinfo.getFullDecomposition(ch,true).equals(
+                            uinfo.getFullDecomposition(ch,false)))
+                {
+                    explodeCompat.put(ch, uinfo.getFullDecomposition(ch, false));
+                    done = true;
+                }
+                if (uinfo.hasCanonicalDecomposition(ch) && decomp.length() > 1
+                    && !uinfo.isExcludedComposition(ch) && uinfo.isCBS(decomp))
+                {
+                    if (decomp.length() <= 2) {
+                        permutedCompositions.put(decomp, ch);
+                    }
+                    else {
+                        List alternatives = concat(decomp.charAt(0),
+                            jumble(decomp.substring(1, decomp.length())));
+
+                        for (int i = 0; i < alternatives.size(); ++i)
+                        {
+                            String variant = (String)alternatives.get(i);
+                            String normalized = uinfo.fixCanonical(variant);
+
+                            if (normalized.equals(decomp)) {
+                                permutedCompositions.put(variant, ch);
+                            }
+                        }
+                    }
+                    largestChar = ch;
+                    done = true;
+                }
+                if (!done) {
+                    explodeOnly.put(ch, decomp);    // Disparaged
+                }
+            }
+        }
+
+        out("\nLargest composed char: " + uinfo.hex(largestChar));
+
+        // Form the binary compositions
+        out("\nGenerating pairwise compositions...");
+
+        Iterator list = permutedCompositions.keySet().iterator();
+        while (list.hasNext()) {
+            String decomp = (String)list.next();
+            char ch = permutedCompositions.get(decomp);
+
+            if (decomp.length() > 2) {
+                //
+                // If this is a composition of more than two characters,
+                // see if its initial portion is also a composition.  If so, that lets
+                // us build up this composed character iteratively.
+                //
+                for (int i = decomp.length()-1; i > 1; --i) {
+                    String partial = decomp.substring(0,i);
+                    char partialMap = permutedCompositions.get(partial);
+                    if (partialMap != 0) {
+                        decomp = partialMap + decomp.substring(i);
+                        break;
+                    }
+                }
+            }
+            if (decomp.length() <= 2) {
+                binaryCompositions.put(decomp, ch);
+            } else {
+                //
+                // The composition takes more than two characters, and there's
+                // no way to build it up from smaller ones.
+                //
+                if (decomp.equals(uinfo.fixCanonical(decomp)))
+                {
+                    // If the decomp is in canonical order, we're in trouble,
+                    // since that means there's no way to generate this composed
+                    // character from its canonically decomposed equivalent.
+                    err("No pairwise compose of " + uinfo.hex(decomp) +
+                            " > " + uinfo.hex(ch) + " " + uinfo.getName(ch,true) );
+                }
+                else {
+                    // If the decomp is *not* in canonical order, it's not as
+                    // bad, since composition will still work as long as
+                    warn("No pairwise compose of non-canon " + uinfo.hex(decomp) +
+                            " > " + uinfo.hex(ch) + " " + uinfo.getName(ch,true) );
+                }
+            }
+
+            bases.add(decomp.charAt(0));
+
+            // add to list of all combining characters in composites
+            for (int q = 1; q < decomp.length(); ++q) {
+                combining.add(decomp.charAt(q));
+            }
+        }
+
+
+        // Generate the pairwise explosions, where a composed char + combining char
+        // transforms into a different pair of characters, usually because the
+        // canonical combining classes are reversed.
+
+        out("\nGenerating exploding pairs....");
+
+        List binaryValues = new ArrayList(binaryCompositions.values());
+        Collections.sort(binaryValues);
+
+        for (char addOn = 0; addOn < 0xFFFF; addOn++) {
+            if (combining.contains(addOn))
+            {
+                list = binaryValues.iterator();
+
+                while (list.hasNext()) {
+                    MutableChar unichar = (MutableChar)list.next();
+                    String chStr = String.valueOf(unichar.value);
+                    String source = chStr + addOn;
+
+                    String comp = binaryComposition(source);
+
+                    if (comp.length() == 1) continue; // don't care if combines
+                    if (comp.charAt(0) == addOn || comp.charAt(1) == addOn) continue; // rearranges
+
+                    if (!source.equals(comp)) {
+                        String decomp = fullDecomposition(source);
+                        pairExplosions.put(source,comp);
+                        bases.add(unichar);
+                    }
+                }
+            }
+        }
+
+        buildDecompData();
+        buildComposeData();
+        out("Success!");
+
+        if (fPrompt) {
+            System.out.println("\nHit any key to continue...");
+            System.in.read();
+        }
+    }
+
+    public String fullDecomposition(String s) {
+        return fullDecomposition(s, new StringBuffer()).toString();
+    }
+
+    public StringBuffer fullDecomposition(char ch, StringBuffer output) {
+        String value = decomps.get(ch);
+        if (value == null) {
+            bubbleAppend(output, ch);
+        }
+        else {
+            bubbleAppend(output, value);
+        }
+        return output;
+    }
+
+    public StringBuffer fullDecomposition(String s, StringBuffer output) {
+        for (int i = 0; i < s.length(); ++i) {
+            fullDecomposition(s.charAt(i),output);
+        }
+        return output;
+    }
+
+    public String binaryComposition(String sr) {
+        // set up decomposed string, init variables
+        StringBuffer output = new StringBuffer();
+        StringBuffer decomp = new StringBuffer();
+
+        if (sr.length() == 0) return output.toString();
+
+        // First generate the full decomposition of the input string
+        fullDecomposition(sr, decomp);
+        int basePosition = 0;
+        char base = decomp.charAt(0);
+        output.append(base);
+
+        // handle degenerate case--no base character at start
+        if (uinfo.getCanonicalClass(base) != 0) {
+            // later
+        }
+
+        // loop through, composing items with base
+        for (int i = 1; i < decomp.length(); ++i) {
+            char ch = decomp.charAt(i);
+            short can = uinfo.getCanonicalClass(ch);
+
+            char value = binaryCompositions.get(String.valueOf(base) + ch);
+
+            if (value != 0 && noObstructions(output, basePosition, can)) {
+                base = value;
+                output.setCharAt(basePosition, base);
+            } else if (can == 0) {
+                basePosition = output.length();
+                base = ch;
+                output.append(ch);
+            } else {
+                bubbleAppend(output, ch, can);
+            }
+        }
+        return output.toString();
+    }
+
+    public boolean noObstructions(StringBuffer buffer, int pos, short can) {
+        for (int j = buffer.length()-1; j > pos; --j) {
+            if (can == uinfo.getCanonicalClass(buffer.charAt(j))) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    public void bubbleAppend(StringBuffer buffer, char ch, short can) {
+        for (int j = buffer.length()-1; j >= 0; --j) {
+            if (can >= uinfo.getCanonicalClass(buffer.charAt(j))) {
+                buffer.insert(j + 1, ch);
+                return;
+            }
+        }
+        buffer.insert(0, ch);
+    }
+
+    public void bubbleAppend(StringBuffer buffer, char ch) {
+        bubbleAppend(buffer, ch, uinfo.getCanonicalClass(ch));
+    }
+
+    public void bubbleAppend(StringBuffer buffer, String s) {
+        for (int i = 0; i < s.length(); ++i) {
+            bubbleAppend(buffer, s.charAt(i));
+        }
+    }
+
+    String getDecomposition(char ch) {
+        return decomps.get(ch);
+    }
+
+
+    /**
+     * Generate a Map of all decompositions in Unicode.
+     * The keys in the map are MutableChar objects, one for each character that has a decomposition.
+     * The values are String objects containing the full decomposition for the character,
+     * in canonical order.
+     */
+    private void createDecompositions()
+    {
+        out("\nGenerating Full decompositions...");
+        StringBuffer temp = new StringBuffer();
+
+        short compatCount=0, canonCount=0;
+
+        for (char ch = 0; ch < 0xFFFF; ++ch) {
+            if (ch >= '\u4E00' && ch <= '\uD7A3') continue; // skip ideos
+
+            short category = uinfo.getCategory(ch);
+
+            if (category == uinfo.UNASSIGNED) continue; //skip reserved
+            if (category == uinfo.CONTROL) continue;
+            if (category == uinfo.FORMAT) continue;
+            if (category == uinfo.PRIVATE_USE) continue;
+            if (category == uinfo.SURROGATE) continue;
+
+            boolean canon = uinfo.hasCanonicalDecomposition(ch);
+
+            if (uinfo.hasCanonicalDecomposition(ch)) canonCount++;
+            if (uinfo.hasCompatibilityDecomposition(ch)) compatCount++;
+
+            if (canon || uinfo.hasCompatibilityDecomposition(ch)) {
+                String decomp = uinfo.getFullDecomposition(ch, canon);
+                temp.setLength(0);
+                temp.append(decomp);
+                uinfo.fixCanonical(temp);
+
+                decomps.put(ch, temp.toString() );
+            }
+        }
+    }
+
+    static List concat(char ch, List a) {
+        for (int i = 0; i < a.size(); ++i) {
+            a.set(i, ch + (String)a.get(i));
+        }
+        return a;
+    }
+
+    /**
+     * Return a list of Strings for all possible permutations of the
+     * characters in the input string.
+     */
+    static List jumble (String source)
+    {
+        ArrayList result = new ArrayList();
+        if (source.length() == 1) {
+            result.add(source);
+        } else for (int i = 0; i < source.length(); ++i) {
+            result.addAll( concat( source.charAt(i),
+                                   jumble(source.substring(0,i)
+                                          + source.substring(i+1,source.length()))));
+        }
+        return result;
+    }
+
+    static final int STR_INDEX_SHIFT = 2;
+    static final int STR_LENGTH_MASK = 0x0003;
+
+    static final int DECOMP_RECURSE = 0x00008000;
+    static final int DECOMP_MASK  = 0x00007FFF;
+
+    /**
+     * Generate a new "DecompData.java" that contains the CompactArray definitions
+     * used in the {@link Normalizer.DECOMPOSE} operation.
+     */
+    void buildDecompData() throws IOException {
+
+        out("\nGenerating DecompData.java....");
+        //
+        // For each Unicode character that has a decomposition, we put its
+        // fully-decomposed form at the end of the "contents" string, followed
+        // by a null, and we put its index in "contents" into the CompactArray.
+        // If it does not have a decomposition, we store a bogus index.
+        //
+        // We do this first for all of the compatibility decompositions, save
+        // the index in MAX_COMPAT, and then do it again for the canonical
+        // decompositions.  When the array is used later, any character whose
+        // decomp has an index greater than MAX_COMPAT is a canonical decomp.
+        //
+        int canonIndex = 0;
+        int compatIndex = 0;
+
+        // Map from Unicode character to replacement string index
+        CompactCharArray offsets = new CompactCharArray((char)0);
+
+        // We also need a place to store the replacement strings.  Add a char at
+        // the front so that "0" won't be the index of any of the replacement strings.
+        StringBuffer replace = new StringBuffer().append("\uffff");
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            if (uinfo.hasCompatibilityDecomposition(ch)) {
+                compatIndex = putLength(replace, decomps.get(ch), 0);
+                offsets.setElementAt(ch, (char)compatIndex);
+            }
+        }
+
+        // Add the canonical decomps.  Their indices must be > compatIndex.
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            if (uinfo.hasCanonicalDecomposition(ch)) {
+
+                if (ch == 0x0f77) {
+                    out("0F77: decomps.get() = " + uinfo.hex(decomps.get(ch)));
+                    out("0F77: fullDecomp = " + uinfo.hex(uinfo.getFullDecomposition(ch,false)));
+                }
+
+                canonIndex = putLength(replace, decomps.get(ch), compatIndex);
+
+                // If this character's full compatibility decomposition is different from
+                // its canonical decomp, that means one of the characters in its
+                // canonical decomp itself has a compatibility decomp.  To deal with this,
+                // we set a bit flag telling the decomposer to recurse on this character.
+
+                if (!uinfo.getFullDecomposition(ch,true).equals(uinfo.getFullDecomposition(ch,false))) {
+                    offsets.setElementAt(ch, (char)(canonIndex | DECOMP_RECURSE));
+                } else {
+                    offsets.setElementAt(ch, (char)canonIndex);
+                }
+            }
+        }
+
+        //
+        // Now generate another CompactArray containing the combining class of every
+        // character in Unicode
+        //
+        final byte BASE = 0;
+        CompactByteArray canonClasses = new CompactByteArray(BASE);
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            short canonClass = uinfo.getCanonicalClass(ch);
+            if (canonClass != 0) {
+                canonClasses.setElementAt(ch, (byte)canonClass);
+            }
+        }
+
+        // Finally, write the data out to a compilable Java source file
+
+        if (fJava) {
+            writeDecompData(new JavaWriter("../src/com/ibm/text/DecompData"),
+                        canonIndex, compatIndex, BASE, offsets, replace, canonClasses);
+        }
+
+        if (fCPP) {
+            writeDecompData(new CPPWriter("/intlwork/source/collate/CPP/dcmpdata", "DecompData"),
+                        canonIndex, compatIndex, BASE, offsets, replace, canonClasses);
+        }
+
+        out("Decomp data: MAX_CANONICAL = " + canonIndex + ", MAX_DECOMP = " + compatIndex);
+
+        if (fShowSizes) {
+            int offsetSize = offsets.getIndexArray().length * 2 + offsets.getValueArray().length * 2;
+            int canonSize = canonClasses.getIndexArray().length * 2 + canonClasses.getValueArray().length;
+            int replaceLength = replace.length();
+
+            out("Total runtime size of decomp data is "
+                + (offsetSize + canonSize + replaceLength));
+
+            out("  offsets:      " + offsetSize);
+            out("  canonClasses: " + canonSize);
+            out("  replace:      " + replaceLength);
+        }
+    }
+
+    void writeDecompData(SourceWriter out, int maxCanon, int maxCompat, short BASE,
+                        CompactCharArray offsets, StringBuffer contents,
+                        CompactByteArray canonClasses)
+    {
+        out.write("MAX_CANONICAL",  maxCanon        );
+        out.write("MAX_COMPAT",     maxCompat       );
+        out.write("DECOMP_MASK",    DECOMP_MASK     );
+        out.write("DECOMP_RECURSE", DECOMP_RECURSE  );
+        out.write("BASE",           BASE            );
+        out.write("offsets",        offsets         );
+        out.write("contents",       contents        );
+        out.write("canonClass",     canonClasses    );
+        out.close();
+    }
+
+
+    //==========================================================================================
+    // Methods for generating and writing the composition data
+    //
+    final int TYPE_MASK   = 0x0007;
+    final int INDEX_MASK  = 0xFFF8;
+    final int INDEX_SHIFT = 3;
+
+    // MAX_BASES is used to map a 2-diminsional (base,combining) index pair onto a
+    // one-dimensional CompactArray.  We could just use baseCount, but making it a power
+    // of two allows slightly better compaction.
+
+    final int MAX_BASES   = 1024;   // Product must be <= 64K
+    final int MAX_COMBINE = 65536/MAX_BASES;
+
+    final char                // for character types
+        IGNORE = 0,
+        BASE = 1,
+        EXPLODING_BASE = 2,
+        COMBINING = 3,
+        INITIAL_JAMO = 4,
+        MEDIAL_JAMO = 5,
+        FINAL_JAMO = 6,
+        HANGUL = 7;
+
+    // These variables actually hold the composition data.
+    short baseCount = 1;        // Leave 0 as an invalid index
+    short combineCount = 1;     // Leave 0 as an invalid index
+    short nccCount = 0;
+    int   maxCompat = 0;
+    int   maxCanon = 0;
+
+    // This array contains types (from the set above) and indices into the "replace"
+    // and "actions" arrays
+    CompactCharArray lookup = new CompactCharArray(IGNORE);
+
+    // We also need a place to store the strings that result from replacements,
+    // explosions, and combinations.  Add a char at the front so that "0" won't
+    // be the index of any of the replacement strings.
+    StringBuffer replace = new StringBuffer().append(" ");
+
+    // We need to represent each canonical character class as a single bit
+    // so that we can OR together a mask of all combining char classes seen
+    // Build an array that maps from combining class to bit mask.
+    int[] classMap = new int[256];
+    int[] typeMask;
+
+    // Build a two-dimensional array of the action to take for each base/combining pair
+    CompactCharArray actions = new CompactCharArray((char)0);
+
+    char[] actionIndex;
+
+    /**
+     * Generate a new "ComposeData.java" that contains the CompactArray definitions
+     * used in the {@link Normalizer.COMPOSE} operation.
+     */
+    void buildComposeData() throws IOException
+    {
+       out("\nGenerating ComposeData.java....");
+
+        BitSet usedIndices = new BitSet();
+        CharSet explodingBases = new CharSet();
+
+        // Find all characters that are both bases *and* have compatibility
+        // decompositions.  These are weird
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            if (bases.contains(ch) && uinfo.hasCompatibilityDecomposition(ch)) {
+                //
+                // Add this character's explosion to the replacement string list.
+                // We're going to make sure that its "base index", i.e. the
+                // index for it in the actions array, is the same as the
+                // explosion's index in the replace string.  This lets
+                // us use the same index for the character's two behaviors
+                //
+                int index = put(replace, explodeCompat.get(ch), 0);
+
+                out(uinfo.hex(ch) + " is base and has compat explosion "
+                                  + uinfo.hex(explodeCompat.get(ch)) );
+
+                addChar(lookup, ch, EXPLODING_BASE, index);
+                usedIndices.set(index);
+                explodingBases.add(ch);
+            }
+        }
+
+        // First add the base characters to the array.
+        // At the same time, compute their indices.
+        // Leave an empty base index of 0 as a placeholder for null operations.
+        //
+
+        for (char ch = 0; ch < 0xFFFF; ch++)
+        {
+
+            if (explodingBases.contains(ch)) {
+                continue;
+            }
+
+            short cclass = uinfo.getCanonicalClass(ch);
+
+            if (bases.contains(ch)) {
+                // Make sure that we don't use a base index that was already used
+                // for an exploding base character.
+                while (usedIndices.get(baseCount)) {
+                    baseCount++;
+                }
+                // Now add the character to lookup as a base
+                addChar(lookup, ch, BASE, baseCount++);
+            }
+            if (combining.contains(ch)) {
+                classMap[cclass] = 1;       // Mark this combining class as being used
+                addChar(lookup, ch, COMBINING, combineCount++);
+            }
+
+            if (ch >= '\u1100' && ch < '\u1160') {
+                addChar(lookup, ch, INITIAL_JAMO, 0);
+            }
+            if (ch >= '\u1161' && ch < '\u11a6') {
+                addChar(lookup, ch, MEDIAL_JAMO, 0);
+            }
+            if (ch >= '\u11a7' && ch < '\u11fa') {
+                addChar(lookup, ch, FINAL_JAMO, 0);
+            }
+            if (ch >= 0xac00 && ch <= 0xd7a4) {
+                addChar(lookup, ch, HANGUL, 0);
+            }
+
+            // Add explosions for all compatibility decompositions,
+            // including the Jamo --> Conjoining Jamo decomps.
+            if (explodeCompat.contains(ch))
+            {
+                maxCompat = put(replace, explodeCompat.get(ch), 0);
+                addExplosion(lookup, ch, maxCompat);
+            }
+        }
+
+        // Now add the explosions resulting from canonical decompositions
+        // These will all have indices greater than "maxCompat" so we can distinguish them.
+        //
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            short cclass = uinfo.getCanonicalClass(ch);
+
+            if (explodeOnly.contains(ch) && uinfo.hasCanonicalDecomposition(ch)) {
+                maxCanon = put(replace, explodeOnly.get(ch), maxCompat);
+                addExplosion(lookup, ch, maxCanon);
+            }
+            else if (!combining.contains(ch) && cclass != 0 && classMap[cclass] != 0) {
+                //
+                // If a combining character didn't happen to end up in one of
+                // the pairwise combinations or explosions we use but still has
+                // a combining class that is the same as a character we *do* use,
+                // we need to save its class so that we don't combine things "past" it.
+                //
+                // However, if the character has an explosion we *don't* need it, because
+                // we'll never see it, only the results of its explosion.
+                //
+                addChar(lookup, ch, COMBINING, 0);
+                nccCount++;
+            }
+        }
+
+        // Now run through the combining classes again and assign bitmasks
+        // in the same ascending order as the canonical classes
+        int maskShift = 0;
+        for (int i = 0; i < 256; i++) {
+            if (classMap[i] != 0) {
+                classMap[i] = (1 << (maskShift++));
+            }
+        }
+        if (maskShift > 32) {
+            err(Integer.toString(maskShift) + "combining classes; max is 32");
+        }
+        out("# of combining classes is " + maskShift);
+
+        out("baseCount=" + baseCount + ", combineCount=" + combineCount
+                            + ", nccCount=" + nccCount);
+
+        if (baseCount > MAX_BASES) {
+            err(Integer.toString(baseCount) + " bases, limit is " + MAX_BASES);
+            err(Integer.toString(combineCount) + " combining chars, limit is " + MAX_COMBINE);
+        }
+
+        // Now build the "actions" array that tells what to do when each base /
+        // combining pair is seen.
+        //
+        // First do character pairs that combine into a single character...
+        //
+        Iterator iter = binaryCompositions.keySet().iterator();
+        while (iter.hasNext()) {
+            String source = (String)iter.next();
+            char ch = binaryCompositions.get(source);
+
+            int baseIndex = lookup.elementAt(source.charAt(0)) >>> INDEX_SHIFT;
+            int combiningIndex = lookup.elementAt(source.charAt(1)) >>> INDEX_SHIFT;
+
+            actions.setElementAt((char)(baseIndex + MAX_BASES*combiningIndex), ch);
+        }
+
+
+        //
+        // Pair explosions: base/combining pairs that explode into something else
+        // We're squeezing the indices for these in between MAX_COMPOSED and 0xFFFF,
+        // which means they can't be indexes into the "replace" string; those are too big.
+        // Instead they're indexes into the "actionIndex" array, which in turn contains
+        // indices in "replace"
+        //
+        actionIndex = new char[ pairExplosions.size() ];
+        short index = 0;
+
+        iter = pairExplosions.keySet().iterator();
+        while (iter.hasNext()) {
+            String source = (String)iter.next();
+            char base = source.charAt(0);
+            char combining = source.charAt(1);
+
+            int strIndex = put(replace, (String)pairExplosions.get(source), 0);
+            actionIndex[index] = (char)strIndex;
+
+            int baseIndex = lookup.elementAt(base) >>> INDEX_SHIFT;
+            int combiningIndex = lookup.elementAt(combining) >>> INDEX_SHIFT;
+
+            actions.setElementAt((char)(baseIndex + MAX_BASES*combiningIndex),
+                                 (char)(index + largestChar));
+            index++;
+        }
+
+        // Fill in the "type mask" array that maps from combining character index
+        // to a bit mask representing the canonical combining class
+        typeMask = new int[combineCount + nccCount];
+
+        for (char ch = 0; ch < 0xFFFF; ch++) {
+            int value = lookup.elementAt(ch);
+            int type = value & TYPE_MASK;
+
+            if (type == COMBINING) {
+                int ind = value >>> INDEX_SHIFT;
+                int cclass = uinfo.getCanonicalClass(ch);
+                typeMask[ind] = classMap[cclass];
+            }
+        }
+
+        if (fJava) {
+            writeComposeData(new JavaWriter("../src/com/ibm/text/ComposeData"));
+        }
+        if (fCPP) {
+           writeComposeData(new CPPWriter("/intlwork/source/collate/CPP/compdata", "ComposeData"));
+        }
+
+        if (fShowSizes) {
+            int lookupSize = lookup.getIndexArray().length * 2 + lookup.getValueArray().length * 2;
+            int actionSize = actions.getIndexArray().length * 2 + actions.getValueArray().length * 2;
+            int actIndexSize = actionIndex.length * 2;
+            int replaceSize = replace.length();
+            int typeMaskSize = typeMask.length * 2;
+
+            out("Total runtime size of compose data is "
+                + (lookupSize + actionSize + actIndexSize + replaceSize + typeMaskSize));
+
+            out("  lookup:       " + lookupSize);
+            out("  actions:      " + actionSize);
+            out("  actionIndex:  " + actIndexSize);
+            out("  typeMask:     " + typeMaskSize);
+            out("  replace:      " + replaceSize);
+        }
+    }
+
+    void writeComposeData(SourceWriter out) {
+        out.write("BASE_COUNT",         baseCount);
+        out.write("COMBINING_COUNT",    combineCount);
+        out.write("MAX_COMPAT",         maxCompat);
+        out.write("MAX_CANON",          maxCanon);
+
+        out.writeHex("MAX_COMPOSED",    largestChar);
+
+        int maxIndex = replace.length();
+        out.write("MAX_INDEX",          maxIndex    );
+        out.write("INITIAL_JAMO_INDEX", maxIndex + 1);
+        out.write("MEDIAL_JAMO_INDEX",  maxIndex + 2);
+
+        out.write("MAX_BASES",          MAX_BASES  );
+        out.write("MAX_COMBINE",        MAX_COMBINE);
+
+        out.writeHex("TYPE_MASK",       TYPE_MASK);
+        out.write("INDEX_SHIFT",        INDEX_SHIFT);
+
+        // The character types
+        out.write("IGNORE",             (int)IGNORE);
+        out.write("BASE",               (int)BASE);
+        out.write("EXPLODING_BASE",     (int)EXPLODING_BASE);
+        out.write("COMBINING",          (int)COMBINING);
+        out.write("INITIAL_JAMO",       (int)INITIAL_JAMO);
+        out.write("MEDIAL_JAMO",        (int)MEDIAL_JAMO);
+        out.write("FINAL_JAMO",         (int)FINAL_JAMO);
+        out.write("HANGUL",             (int)HANGUL);
+
+        out.write("lookup",         lookup        );
+        out.write("actions",        actions       );
+        out.write("actionIndex",    actionIndex   );
+        out.write("replace",        replace       );
+        out.write("typeMask",       typeMask      );
+
+        out.close();
+    }
+
+    void addChar(CompactCharArray lookup, char ch, int type, int index)
+    {
+        // First make sure it's not already present
+        if (lookup.elementAt(ch) != IGNORE)
+        {
+            char oldValue = lookup.elementAt(ch);
+            err(typeName(type) + " char is also "
+                  + typeName(oldValue & TYPE_MASK) + ": "
+                  + uinfo.hex(ch) + "  " + uinfo.getName(ch,true));
+        }
+        else if ((index << INDEX_SHIFT) > 65536) {
+            err("not enough bits: index " + index + " << INDEX_SHIFT = " + (index << INDEX_SHIFT));
+        } else {
+            lookup.setElementAt(ch, (char)(type | (index << INDEX_SHIFT)));
+        }
+    }
+
+    void addExplosion(CompactCharArray lookup, char ch, int index)
+    {
+        // First make sure it doesn't already have an index
+        char oldValue = lookup.elementAt(ch);
+        int oldIndex = oldValue >>> INDEX_SHIFT;
+
+        if (oldValue != IGNORE) {
+            err("Exploding char is already " + typeName(oldValue & TYPE_MASK)
+                             + " (index " + oldIndex + "): "
+                             + uinfo.hex(ch) + "  " + uinfo.getName(ch,true));
+        }
+
+        if (oldIndex != 0) {
+            err("Exploding char is already " + typeName(oldValue & TYPE_MASK)
+                             + " (index " + oldIndex + "): "
+                             + uinfo.hex(ch) + "  " + uinfo.getName(ch,true));
+        }
+        else if ((index << INDEX_SHIFT) > 65536) {
+            err("not enough bits: index " + index + " << INDEX_SHIFT = " + (index << INDEX_SHIFT));
+        } else {
+            lookup.setElementAt(ch, (char)((oldValue & ~INDEX_MASK) | (index << INDEX_SHIFT)));
+        }
+    }
+
+    String typeName(int type) {
+        switch (type) {
+            case IGNORE:            return "Ignored";
+            case BASE:              return "Base";
+            case EXPLODING_BASE:    return "Exploding Base";
+            case COMBINING:         return "Combining";
+            case INITIAL_JAMO:      return "Initial Jamo";
+            case MEDIAL_JAMO:       return "Medial Jamo";
+            case FINAL_JAMO:        return "Final Jamo";
+            case HANGUL:            return "Hangul";
+            default:                return "Unknown";
+        }
+    }
+
+
+    static final int put(StringBuffer buf, String str, int minIndex)
+    {
+        str = str + '\u0000';   // Add trailing null
+
+        int index = buf.toString().indexOf(str);
+        if (index <= minIndex) {
+            index = buf.length();
+            buf.append(str);
+        }
+        return index;
+    }
+
+    static final int putLength(StringBuffer buf, String str, int minIndex) {
+        int length = str.length();
+
+        if (length >= (1 << STR_INDEX_SHIFT)) {
+            // There's no room to store the length in the index, so
+            // add a null terminator and use a 0 length to flag this
+            str = str + '\u0000';
+            length = 0;
+        }
+
+        int index = buf.toString().indexOf(str);
+        if (index <= minIndex) {
+            index = buf.length();
+            buf.append(str);
+        }
+        return (index << STR_INDEX_SHIFT) | length;
+    }
+
+    //--------------------------------------------------------------------------------
+    // Source file headers
+    //
+
+    static final String kCHeader =
+         "/*\n"
+        +" * (C) Copyright IBM Corp. 1997-1998 - All Rights Reserved\n"
+        +" *\n"
+        +" * The program is provided 'as is' without any warranty express or\n"
+        +" * implied, including the warranty of non-infringement and the implied\n"
+        +" * warranties of merchantibility and fitness for a particular purpose.\n"
+        +" * IBM will not be liable for any damages suffered by you as a result\n"
+        +" * of using the Program. In no event will IBM be liable for any\n"
+        +" * special, indirect or consequential damages or lost profits even if\n"
+        +" * IBM has been advised of the possibility of their occurrence. IBM\n"
+        +" * will not be liable for any third party claims against you.\n"
+        +" */\n"
+        + "// This class is MACHINE GENERATED.  Run NormalizerBuilder to regenerate.\n"
+        +"\n";
+
+    void out(String str) {
+        if (fVerbose) System.out.println(str);
+    }
+    void warn(String str) {
+        System.err.println("Warning: " + str);
+    }
+    void err(String str) {
+        System.err.println("ERROR:   " + str);
+    }
+}
+
+//-----------------------------------------------------------------------------
+// Utility classes
+//-----------------------------------------------------------------------------
+
+class DecompMap extends HashMap {
+    public DecompMap() {
+    }
+
+    void put(char ch, String value) {
+        put(new MutableChar(ch), value);
+    }
+
+    String get(char ch) {
+        Object obj = get(probe.set(ch));
+        return (obj != null) ? (String)obj : null;
+    }
+
+    boolean contains(char ch) {
+        return containsKey(probe.set(ch));
+    }
+
+    MutableChar probe = new MutableChar(' ');
+}
+
+class CompMap extends HashMap {
+    public CompMap() {
+    }
+
+    void put(String key, char value) {
+        put(key, new MutableChar(value));
+    }
+
+    char get(String key) {
+        Object obj = get((Object)key);
+        return (obj != null) ? ((MutableChar)obj).value : 0;
+    }
+}
+
+class CharSet extends HashSet {
+    public CharSet() {
+    }
+
+    public void add(char ch) {
+        add(new MutableChar(ch));
+    }
+
+    public boolean contains(char ch) {
+        return contains(probe.set(ch));
+    }
+    MutableChar probe = new MutableChar(' ');
+}
+
diff --git a/src/com/ibm/tools/normalizer/SourceWriter.java b/src/com/ibm/tools/normalizer/SourceWriter.java
new file mode 100755
index 0000000..5795169
--- /dev/null
+++ b/src/com/ibm/tools/normalizer/SourceWriter.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/tools/normalizer/Attic/SourceWriter.java,v $ 
+ * $Date: 2000/03/10 04:17:57 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.tools.normalizer;
+
+import com.ibm.text.*;
+import com.ibm.util.CompactCharArray;
+import com.ibm.util.CompactByteArray;
+
+//===========================================================================================
+// Utilities for writing data out as compilable source code
+//
+public abstract class SourceWriter {
+    abstract public void close();
+    abstract public void write(String name, short value);
+    abstract public void write(String name, int value);
+
+    abstract public void write(String name, CompactCharArray array);
+    abstract public void write(String name, CompactByteArray array);
+    abstract public void write(String name, StringBuffer str);
+
+    abstract public void write(String name, char[] array);
+    abstract public void write(String name, int[] array);
+
+    abstract public void writeHex(String name, char value);
+    abstract public void writeHex(String name, int value);
+}
+
diff --git a/src/com/ibm/util/BuddhistCalendar.java b/src/com/ibm/util/BuddhistCalendar.java
new file mode 100755
index 0000000..e85d794
--- /dev/null
+++ b/src/com/ibm/util/BuddhistCalendar.java
@@ -0,0 +1,272 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/BuddhistCalendar.java,v $ 
+ * $Date: 2000/03/10 04:17:57 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * <code>BuddhistCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years since the birth of the Buddha.  This is the civil calendar
+ * in some predominantly Buddhist countries such as Thailand, and it is used for
+ * religious purposes elsewhere.
+ * <p>
+ * The Buddhist calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  Years are numbered since the birth of the
+ * Buddha in 543 BC (Gregorian), so that 1 AD (Gregorian) is equivalent to 544
+ * BE (Buddhist Era) and 1998 AD is 2541 BE.
+ * <p>
+ * The Buddhist Calendar has only one allowable era: <code>BE</code>.  If the
+ * calendar is not in lenient mode (see <code>setLenient</code>), dates before
+ * 1/1/1 BE are rejected with an <code>IllegalArgumentException</code>.
+ *
+ * @see java.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ */
+public class BuddhistCalendar extends GregorianCalendar {
+    
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constant for the Buddhist Era.  This is the only allowable <code>ERA</code>
+     * value for the Buddhist calendar.
+     *
+     * @see java.util.Calendar#ERA
+     */
+    public static final int BE = 0;
+    
+    /**
+     * Constructs a <code>BuddhistCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public BuddhistCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone the given time zone.
+     */
+    public BuddhistCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     */
+    public BuddhistCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     */
+    public BuddhistCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public BuddhistCalendar(Date date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>BuddhistCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     */
+    public BuddhistCalendar(int year, int month, int date) {
+        super(year, month, date);
+    }
+
+    /**
+     * Constructs a BuddhistCalendar with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    public BuddhistCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // The only practical difference from a Gregorian calendar is that years
+    // are numbered since the birth of the Buddha.  A couple of overrides will
+    // take care of that....
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Override of the <code>GregorianCalendar</code> method that computes the
+     * fields such as <code>YEAR</code>, <code>MONTH</code>, and <code>DATE</code>
+     * from the date in milliseconds since 1/1/1970 AD.
+     *
+     * This method calls {@link GregorianCalendar#computeFields} to do most
+     * of the work,
+     * then adjusts the {@link #YEAR YEAR} and {@link #ERA ERA} fields to use the
+     * Buddhist Era rather than the Gregorian {@link #AD AD} or {@link #BC BC}.
+     */
+    protected void computeFields() {
+        // Let GregorianCalendar do its thing.
+        super.computeFields();
+        
+        // Now adjust the year and era to the proper Buddhist values
+        fromGregorian();
+        
+        //
+        // If we're in strict mode and the year is less than 1, fail.
+        // But do this after setting both the year and era to the right values
+        // anyway, so that this object is in a consistent state.
+        //
+        if (!isLenient() && fields[YEAR] < 1) {
+            throw new IllegalArgumentException("Time before start of Buddhist era");
+        }
+    }
+    
+    /**
+     * Override of the <code>GregorianCalendar</code> method that computes the 
+     * elapsed time in milliseconds since 1/1/1970 AD from the fields such
+     * as <code>YEAR</code>, <code>MONTH</code>, and <code>DATE</code>.
+     *
+     * This method adjusts the {@link #YEAR YEAR} and {@link #ERA ERA} from their
+     * values in the Buddhist calendar to the corresponding Gregorian values, calls
+     * {@link GregorianCalendar#computeTime} to do the real millisecond
+     * calculation, and then restores the Buddhist <code>YEAR</code> and
+     * <code>ERA</code>.
+     */
+    protected void computeTime() {
+        int year = fields[YEAR];
+        int era = fields[ERA];
+        
+        if (!isLenient()) {
+            if (era != BE) {
+                throw new IllegalArgumentException("Illegal value for ERA");
+            }
+            if (year < 1) {
+                throw new IllegalArgumentException("YEAR must be greater than 0");
+            }
+        }
+
+        try {
+            toGregorian();
+            super.computeTime();
+        }
+        finally {
+            // Set the year and era back to the Buddhist values, even if
+            // GregorianCalendar fails because other fields are invalid.
+            fields[YEAR] = year;
+            fields[ERA] = era;
+        }
+    }
+    
+    public void add(int field, int amount) {
+        toGregorian();
+        try {
+            super.add(field, amount);
+        }
+        finally {
+            fromGregorian();
+        }
+    }
+    
+    public void roll(int field, boolean up) {
+        toGregorian();
+        try {
+            super.roll(field, up);
+        }
+        finally {
+            fromGregorian();
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Methods for converting between Gregorian and Buddhist calendars
+    //-------------------------------------------------------------------------
+
+    private static int BUDDHIST_ERA_START = -543;    // Starts in -543 AD, ie 544 BC
+    
+    /**
+     * Convert the YEAR and ERA fields from Buddhist to Gregorian values
+     * Return the (Buddhist) value of the YEAR field on input;
+     */
+    private void toGregorian() {
+        int year = fields[YEAR];
+        
+        if (year > 0) {
+            fields[YEAR] = year + BUDDHIST_ERA_START;
+            fields[ERA] = AD;
+        } else {
+            fields[YEAR] = 1 - year - BUDDHIST_ERA_START;
+            fields[ERA] = BC;
+        }
+    }
+    
+    /**
+     * Adjust the year and era from Gregorian to Buddhist values
+     */
+    private void fromGregorian() {
+        // Now adjust the year and era to the proper Buddhist values
+        int year = fields[YEAR];
+        
+        if (fields[ERA] == BC) {
+            fields[YEAR] = 1 - year - BUDDHIST_ERA_START;
+        } else {
+            fields[YEAR] = year - BUDDHIST_ERA_START;
+        }
+        fields[ERA] = BE;
+    }
+    
+};
diff --git a/src/com/ibm/util/CalendarAstronomer.java b/src/com/ibm/util/CalendarAstronomer.java
new file mode 100755
index 0000000..8971eb8
--- /dev/null
+++ b/src/com/ibm/util/CalendarAstronomer.java
@@ -0,0 +1,1188 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/CalendarAstronomer.java,v $ 
+ * $Date: 2000/03/10 04:17:57 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+import java.util.*;
+import java.text.*;
+
+/**
+ * <code>CalendarAstronomer</code> is a class that can perform the calculations to
+ * determine the positions of the sun and moon, the time of sunrise and
+ * sunset, and other astronomy-related data.  The calculations it performs
+ * are in some cases quite complicated, and this utility class saves you
+ * the trouble of worrying about them.
+ * <p>
+ * The measurement of time is a very important part of astronomy.  Because
+ * astronomical bodies are constantly in motion, observations are only valid
+ * at a given moment in time.  Accordingly, each <code>CalendarAstronomer</code>
+ * object has a <code>time</code> property that determines the date
+ * and time for which its calculations are performed.  You can set and
+ * retrieve this property with {@link #setDate setDate}, {@link #getDate getDate}
+ * and related methods.
+ * <p>
+ * Almost all of the calculations performed by this class, or by any
+ * astronomer, are approximations to various degrees of accuracy.  The
+ * calculations in this class are mostly modelled after those described
+ * in the book
+ * <a href="http://www.amazon.com/exec/obidos/ISBN=0521356997" target="_top">
+ * Practical Astronomy With Your Calculator</a>, by Peter J.
+ * Duffett-Smith, Cambridge University Press, 1990.  This is an excellent
+ * book, and if you want a greater understanding of how these calculations
+ * are performed it a very good, readable starting point.
+ * <p>
+ * <strong>WARNING:</strong> This class is very early in its development, and
+ * it is highly likely that its API will change to some degree in the future.
+ * At the moment, it basically does just enough to support {@link IslamicCalendar}
+ * and a Chinese calendar class that is still in development.
+ *
+ * @author Laura Werner
+ */
+public class CalendarAstronomer {
+    
+    //-------------------------------------------------------------------------
+    // Astronomical constants
+    //-------------------------------------------------------------------------
+
+    /**
+     * The number of standard hours in one sidereal day.
+     * Approximately 24.93.
+     */
+    public static final double SIDEREAL_DAY = 23.93446960027;
+    
+    /**
+     * The number of sidereal hours in one mean solar day.
+     * Approximately 24.07.
+     */
+    public static final double SOLAR_DAY =  24.065709816;
+    
+    /**
+     * The average number of solar days from one new moon to the next.  This is the time
+     * it takes for the moon to return the same ecliptic longitude as the sun.
+     * It is longer than the sidereal month because the sun's longitude increases
+     * during the year due to the revolution of the earth around the sun.
+     * Approximately 29.53.
+     *
+     * @see #SIDEREAL_MONTH
+     */
+    public static final double SYNODIC_MONTH = 29.530588853;
+    
+    /**
+     * The average number of days it takes
+     * for the moon to return to the same ecliptic longitude relative to the
+     * stellar background.  This is referred to as the sidereal month.
+     * It is shorter than the synodic month due to
+     * the revolution of the earth around the sun.
+     * Approximately 27.32.
+     *
+     * @see #SYNODIC_MONTH
+     */
+    public static final double SIDEREAL_MONTH = 27.32166;
+    
+    /**
+     * The average number number of days between successive vernal equinoxes.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the sidereal year.
+     * Approximately 365.24
+     *
+     * @see #SIDEREAL_YEAR
+     */
+    public static final double TROPICAL_YEAR = 365.242191;
+    
+    /**
+     * The average number of days it takes
+     * for the sun to return to the same position against the fixed stellar
+     * background.  This is the duration of one orbit of the earth about the sun
+     * as it would appear to an outside observer.
+     * Due to the precession of the earth's
+     * axis, this is not precisely the same as the tropical year.
+     * Approximately 365.25.
+     *
+     * @see #TROPICAL_YEAR
+     */
+    public static final double SIDEREAL_YEAR = 365.25636;
+
+    //-------------------------------------------------------------------------
+    // Time-related constants
+    //-------------------------------------------------------------------------
+
+    /** The number of milliseconds in one second. */
+    public static final int  SECOND_MS = 1000;
+
+    /** The number of milliseconds in one minute. */
+    public static final int  MINUTE_MS = 60*SECOND_MS;
+
+    /** The number of milliseconds in one hour. */
+    public static final int  HOUR_MS   = 60*MINUTE_MS;
+
+    /** The number of milliseconds in one day. */
+    public static final long DAY_MS    = 24*HOUR_MS;
+
+    /**
+     * The start of the julian day numbering scheme used by astronomers, which
+     * is 1/1/4713 BC (Julian), 12:00 GMT.  This is given as the number of milliseconds
+     * since 1/1/1970 AD (Gregorian), a negative number.
+     * Note that julian day numbers and
+     * the Julian calendar are <em>not</em> the same thing.  Also note that
+     * julian days start at <em>noon</em>, not midnight.
+     */
+    public static final long JULIAN_EPOCH_MS = -210866760000000L;
+    
+
+    //-------------------------------------------------------------------------
+    // Assorted private data used for conversions
+    //-------------------------------------------------------------------------
+
+    // My own copies of these so compilers are more likely to optimize them away
+    static private final double PI = 3.14159265358979323846;
+    static private final double PI2 = PI * 2.0;
+
+    static private final double HOUR_RAD = PI / 12;        // hours -> radians
+    static private final double RAD_HOUR = 12 / PI;        // radians -> hours
+    static private final double DEG_RAD  = PI / 180;        // degrees -> radians
+    static private final double RAD_DEG  = 180 / PI;        // radians -> degrees
+    
+    //-------------------------------------------------------------------------
+    // Constructors
+    //-------------------------------------------------------------------------
+
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the current date and time.
+     */
+    public CalendarAstronomer() {
+        this(System.currentTimeMillis());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified date and time.
+     */
+    public CalendarAstronomer(Date d) {
+        this(d.getTime());
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object that is initialized to
+     * the specified time.  The time is expressed as a number of milliseconds since
+     * January 1, 1970 AD (Gregorian).
+     *
+     * @see java.util.Date#getTime
+     */
+    public CalendarAstronomer(long aTime) {
+        time = aTime;
+    }
+    
+    /**
+     * Construct a new <code>CalendarAstronomer</code> object with the given
+     * latitude and longitude.  The object's time is set to the current
+     * date and time.
+     * <p>
+     * @param longitude The desired longitude, in <em>degrees</em> east of
+     *                  the Greenwich meridian.
+     *
+     * @param latitude  The desired latitude, in <em>degrees</em>.  Positive
+     *                  values signify North, negative South.
+     *
+     * @see java.util.Date#getTime
+     */
+    public CalendarAstronomer(double longitude, double latitude) {
+        this();
+        fLongitude = normPI(longitude * DEG_RAD);
+        fLatitude  = normPI(latitude  * DEG_RAD);
+        fGmtOffset = (long)(fLongitude * 24 * HOUR_MS / PI2);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Time and date getters and setters
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param aTime the date and time, expressed as the number of milliseconds since
+     *              1/1/1970 0:00 GMT (Gregorian).
+     *
+     * @see #setDate
+     * @see #getTime
+     */
+    public void setTime(long aTime) {
+        time = aTime;
+        clearCache();
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param aTime the time and date, expressed as a <code>Date</code> object.
+     *
+     * @see #setTime
+     * @see #getDate
+     */
+    public void setDate(Date date) {
+        setTime(date.getTime());
+    }
+    
+    /**
+     * Set the current date and time of this <code>CalendarAstronomer</code> object.  All
+     * astronomical calculations are performed based on this time setting.
+     *
+     * @param jdn   the desired time, expressed as a "julian day number",
+     *              which is the number of elapsed days since 
+     *              1/1/4713 BC (Julian), 12:00 GMT.  Note that julian day
+     *              numbers start at <em>noon</em>.  To get the jdn for
+     *              the corresponding midnight, subtract 0.5.
+     *
+     * @see #getJulianDay
+     * @see #JULIAN_EPOCH_MS
+     */
+    public void setJulianDay(double jdn) {
+        time = (long)(jdn * DAY_MS) + JULIAN_EPOCH_MS;
+        clearCache();
+        julianDay = jdn;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as the number of milliseconds since
+     * 1/1/1970 AD 0:00 GMT (Gregorian).
+     *
+     * @see #setTime
+     * @see #getDate
+     */
+    public long getTime() {
+        return time;
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * represented as a <code>Date</code> object.
+     *
+     * @see #setDate
+     * @see #getTime
+     */
+    public Date getDate() {
+        return new Date(time);
+    }
+    
+    /**
+     * Get the current time of this <code>CalendarAstronomer</code> object,
+     * expressed as a "julian day number", which is the number of elapsed
+     * days since 1/1/4713 BC (Julian), 12:00 GMT.
+     *
+     * @see #setJulianDay
+     * @see #JULIAN_EPOCH_MS
+     */
+    public double getJulianDay() {
+        if (julianDay == INVALID) {
+            julianDay = (double)(time - JULIAN_EPOCH_MS) / (double)DAY_MS;
+        }
+        return julianDay;
+    }
+    
+    /**
+     * Return this object's time expressed in julian centuries:
+     * the number of centuries after 1/1/1900 AD, 12:00 GMT
+     *
+     * @see #getJulianDay
+     */
+    public double getJulianCentury() {
+        if (julianCentury == INVALID) {
+            julianCentury = (getJulianDay() - 2415020.0) / 36525;
+        }
+        return julianCentury;
+    }
+
+    /**
+     * Returns the current Greenwich sidereal time, measured in hours
+     */
+    public double getGreenwichSidereal() {
+        if (siderealTime == INVALID) {
+            // See page 86 of "Practial Astronomy with your Calculator",
+            // by Peter Duffet-Smith, for details on the algorithm.
+                
+            double UT = normalize((double)time/HOUR_MS, 24);
+        
+            siderealTime = normalize(getSiderealOffset() + UT*1.002737909, 24);
+        }
+        return siderealTime;
+    }
+    
+    private double getSiderealOffset() {
+        if (siderealT0 == INVALID) {
+            double JD  = Math.floor(getJulianDay() - 0.5) + 0.5;
+            double S   = JD - 2451545.0;
+            double T   = S / 36525.0;
+            siderealT0 = normalize(6.697374558 + 2400.051336*T + 0.000025862*T*T, 24);
+        }
+        return siderealT0;
+    }
+    
+    /**
+     * Returns the current local sidereal time, measured in hours
+     */
+    public double getLocalSidereal() {
+        return normalize(getGreenwichSidereal() + (double)fGmtOffset/HOUR_MS, 24);
+    }
+    
+    /**
+     * Converts local sidereal time to Universal Time.
+     *
+     * @param lst   The Local Sidereal Time, in hours since sidereal midnight
+     *              on this object's current date.
+     *
+     * @return      The corresponding Universal Time, in milliseconds since
+     *              1 Jan 1970, GMT.  
+     */
+    private long lstToUT(double lst) {
+        // Convert to local mean time
+        double lt = normalize((lst - getSiderealOffset()) * 0.9972695663, 24);
+        
+        // Then find local midnight on this day
+        long base = DAY_MS * ((time + fGmtOffset)/DAY_MS) - fGmtOffset;
+        
+        //out("    lt  =" + lt + " hours");
+        //out("    base=" + new Date(base));
+        
+        return base + (long)(lt * HOUR_MS);
+    }
+    
+    
+    //-------------------------------------------------------------------------
+    // Coordinate transformations, all based on the current time of this object
+    //-------------------------------------------------------------------------
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param ecliptic  A point in the sky in ecliptic coordinates.
+     * @return          The corresponding point in equatorial coordinates.
+     */
+    public final Equatorial eclipticToEquatorial(Ecliptic ecliptic)
+    {
+        return eclipticToEquatorial(ecliptic.longitude, ecliptic.latitude);
+    }
+
+    /**
+     * Convert from ecliptic to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     * @param eclipLat      The ecliptic latitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong, double eclipLat)
+    {
+        // See page 42 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+
+        double obliq = eclipticObliquity();
+        double sinE = Math.sin(obliq);
+        double cosE = Math.cos(obliq);
+        
+        double sinL = Math.sin(eclipLong);
+        double cosL = Math.cos(eclipLong);
+        
+        double sinB = Math.sin(eclipLat);
+        double cosB = Math.cos(eclipLat);
+        double tanB = Math.tan(eclipLat);
+        
+        return new Equatorial(Math.atan2(sinL*cosE - tanB*sinE, cosL),
+                               Math.asin(sinB*cosE + cosB*sinE*sinL) );
+    }
+
+    /**
+     * Convert from ecliptic longitude to equatorial coordinates.
+     *
+     * @param eclipLong     The ecliptic longitude
+     *
+     * @return              The corresponding point in equatorial coordinates.
+     */
+    public final Equatorial eclipticToEquatorial(double eclipLong)
+    {
+        return eclipticToEquatorial(eclipLong, 0);  // TODO: optimize
+    }
+
+
+    public Horizon eclipticToHorizon(double eclipLong)
+    {
+        Equatorial equatorial = eclipticToEquatorial(eclipLong);
+        
+        double H = getLocalSidereal()*PI/12 - equatorial.ascension;     // Hour-angle
+        
+        double sinH = Math.sin(H);
+        double cosH = Math.cos(H);
+        double sinD = Math.sin(equatorial.declination);
+        double cosD = Math.cos(equatorial.declination);
+        double sinL = Math.sin(fLatitude);
+        double cosL = Math.cos(fLatitude);
+        
+        double altitude = Math.asin(sinD*sinL + cosD*cosL*cosH);
+        double azimuth  = Math.atan2(-cosD*cosL*sinH, sinD - sinL * Math.sin(altitude));
+
+        return new Horizon(azimuth, altitude);
+    }
+
+    
+    //-------------------------------------------------------------------------
+    // The Sun
+    //-------------------------------------------------------------------------
+    
+    //
+    // Parameters of the Sun's orbit as of 1/1/1990
+    // Angles are in radians (after multiplying by PI/180)
+    //
+    double jdnEpoch  = 2447891.5;           // JDN of epoch (Jan 0.0 1990)
+
+    double sunEtaG   = 279.403303 * PI/180; // Ecliptic longitude at epoch
+    double sunOmegaG = 282.768422 * PI/180; // Ecliptic longitude of perigee
+    double sunE      =   0.016713;          // Eccentricity of orbit
+    double sunR0     =   1.495585e8;        // Semi-major axis in KM
+    double sunTheta0 =   0.533128 * PI/180; // Angular diameter at R0
+
+    /**
+     * The longitude of the sun at the time specified by this object.
+     * The longitude is measured in radians along the ecliptic
+     * from the "first point of Aries," the point at which the ecliptic
+     * crosses the earth's equatorial plane at the vernal equinox.
+     * <p>
+     * Currently, this method uses an approximation of the two-body Kepler's
+     * equation for the earth and the sun.  It does not take into account the
+     * perturbations caused by the other planets, the moon, etc.
+     */
+    public double getSunLongitude()
+    {
+        // See page 86 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        
+        if (sunLongitude == INVALID) {
+            double day = getJulianDay() - jdnEpoch;       // Days since epoch
+            
+            // Find the angular distance the sun in a fictitious
+            // circular orbit has travelled since the epoch.
+            double epochAngle = norm2PI(PI2/TROPICAL_YEAR*day);
+            
+            // The epoch wasn't at the sun's perigee; find the angular distance
+            // since perigee, which is called the "mean anomaly"
+            meanAnomalySun = norm2PI(epochAngle + sunEtaG - sunOmegaG);
+            
+            // Now find the "true anomaly", e.g. the real solar longitude
+            // by solving Kepler's equation for an elliptical orbit
+            sunLongitude = norm2PI(trueAnomaly(meanAnomalySun, sunE) + sunOmegaG);
+        }
+        return sunLongitude;
+    }
+  
+    /**
+     * The position of the sun at this object's current date and time,
+     * in equatorial coordinates.
+     */
+    public Equatorial getSunPosition() {
+        return eclipticToEquatorial(getSunLongitude(), 0);
+    }
+    
+    private static class SolarLongitude {
+        double value;
+        SolarLongitude(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing the vernal equinox.
+     * For use with {@link #getSunTime getSunTime}. 
+     * Note: In this case, "vernal" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude VERNAL_EQUINOX  = new SolarLongitude(0);
+    
+    /**
+     * Constant representing the summer solstice.
+     * For use with {@link #getSunTime getSunTime}.
+     * Note: In this case, "summer" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude SUMMER_SOLSTICE = new SolarLongitude(PI/2);
+    
+    /**
+     * Constant representing the autumnal equinox.
+     * For use with {@link #getSunTime getSunTime}.
+     * Note: In this case, "autumn" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude AUTUMN_EQUINOX  = new SolarLongitude(PI);
+    
+    /**
+     * Constant representing the winter solstice.
+     * For use with {@link #getSunTime getSunTime}.
+     * Note: In this case, "winter" refers to the northern hemisphere's seasons.
+     */
+    public static final SolarLongitude WINTER_SOLSTICE = new SolarLongitude((PI*3)/2);
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     */
+    public long getSunTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() { public double eval() { return getSunLongitude(); } },
+                            desired,
+                            TROPICAL_YEAR,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next time at which the sun's ecliptic longitude will have
+     * the desired value.  
+     */
+    public long getSunTime(SolarLongitude desired, boolean next) {
+        return getSunTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     */
+    public long getSunRiseSet(boolean rise)
+    {
+        // Make a rough guess: 6am or 6pm local time on the current day
+        long noon = ((time + fGmtOffset)/DAY_MS)*DAY_MS - fGmtOffset + 12*HOUR_MS;
+        
+        setTime(noon + (long)((rise ? -6 : 6) * HOUR_MS));
+        
+        return riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getSunPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS);            // Desired accuracy
+    }
+
+    //-------------------------------------------------------------------------
+    // The Moon
+    //-------------------------------------------------------------------------
+    
+    static final double moonL0 = 318.351648 * PI/180;   // Mean long. at epoch
+    static final double moonP0 =  36.340410 * PI/180;   // Mean long. of perigee
+    static final double moonN0 = 318.510107 * PI/180;   // Mean long. of node
+    static final double moonI  =   5.145366 * PI/180;   // Inclination of orbit
+    static final double moonE  =   0.054900;            // Eccentricity of orbit
+    
+    // These aren't used right now
+    static final double moonA  =   3.84401e5;           // semi-major axis (km)
+    static final double moonT0 =   0.5181 * PI/180;     // Angular size at distance A
+    static final double moonPi =   0.9507 * PI/180;     // Parallax at distance A
+    
+    /**
+     * The position of the moon at the time set on this
+     * object, in equatorial coordinates.
+     */
+    public Equatorial getMoonPosition()
+    {
+        //
+        // See page 142 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        if (moonPosition == null) {
+            // Calculate the solar longitude.  Has the side effect of
+            // filling in "meanAnomalySun" as well.
+            double sunLongitude = getSunLongitude();
+            
+            //
+            // Find the # of days since the epoch of our orbital parameters.
+            // TODO: Convert the time of day portion into ephemeris time
+            //
+            double day = getJulianDay() - jdnEpoch;       // Days since epoch
+            
+            // Calculate the mean longitude and anomaly of the moon, based on
+            // a circular orbit.  Similar to the corresponding solar calculation.
+            double meanLongitude = norm2PI(13.1763966*PI/180*day + moonL0);
+            double meanAnomalyMoon = norm2PI(meanLongitude - 0.1114041*PI/180 * day - moonP0);
+            
+            //
+            // Calculate the following corrections:
+            //  Evection:   the sun's gravity affects the moon's eccentricity
+            //  Annual Eqn: variation in the effect due to earth-sun distance
+            //  A3:         correction factor (for ???)
+            //
+            double evection = 1.2739*PI/180 * Math.sin(2 * (meanLongitude - sunLongitude)
+                                                - meanAnomalyMoon);
+            double annual   = 0.1858*PI/180 * Math.sin(meanAnomalySun);
+            double a3       = 0.3700*PI/180 * Math.sin(meanAnomalySun);
+
+            meanAnomalyMoon += evection - annual - a3;
+            
+            //
+            // More correction factors:
+            //  center  equation of the center correction
+            //  a4      yet another error correction (???)
+            //
+            // TODO: Skip the equation of the center correction and solve Kepler's eqn?
+            //
+            double center = 6.2886*PI/180 * Math.sin(meanAnomalyMoon);
+            double a4 =     0.2140*PI/180 * Math.sin(2 * meanAnomalyMoon);
+            
+            // Now find the moon's corrected longitude
+            moonLongitude = meanLongitude + evection + center - annual + a4;
+
+            //
+            // And finally, find the variation, caused by the fact that the sun's
+            // gravitational pull on the moon varies depending on which side of
+            // the earth the moon is on
+            //
+            double variation = 0.6583*PI/180 * Math.sin(2*(moonLongitude - sunLongitude));
+            
+            moonLongitude += variation;
+            
+            //
+            // What we've calculated so far is the moon's longitude in the plane
+            // of its own orbit.  Now map to the ecliptic to get the latitude
+            // and longitude.  First we need to find the longitude of the ascending
+            // node, the position on the ecliptic where it is crossed by the moon's
+            // orbit as it crosses from the southern to the northern hemisphere.
+            //
+            double nodeLongitude = norm2PI(moonN0 - 0.0529539*PI/180 * day);
+
+            nodeLongitude -= 0.16*PI/180 * Math.sin(meanAnomalySun);
+
+            double y = Math.sin(moonLongitude - nodeLongitude);
+            double x = Math.cos(moonLongitude - nodeLongitude);
+            
+            moonEclipLong = Math.atan2(y*Math.cos(moonI), x) + nodeLongitude;
+            double moonEclipLat = Math.asin(y * Math.sin(moonI));
+
+            moonPosition = eclipticToEquatorial(moonEclipLong, moonEclipLat);
+        }
+        return moonPosition;
+    }
+    
+    /**
+     * The "age" of the moon at the time specified in this object.
+     * This is really the angle between the
+     * current ecliptic longitudes of the sun and the moon,
+     * measured in radians.
+     *
+     * @see #getMoonPhase
+     */
+    public double getMoonAge() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        //
+        // Force the moon's position to be calculated.  We're going to use
+        // some the intermediate results cached during that calculation.
+        //
+        getMoonPosition();
+        
+        return norm2PI(moonEclipLong - sunLongitude);
+    }
+    
+    /**
+     * Calculate the phase of the moon at the time set in this object.
+     * The returned phase is a <code>double</code> in the range
+     * <code>0 <= phase < 1</code>, interpreted as follows:
+     * <ul>
+     * <li>0.00: New moon
+     * <li>0.25: First quarter
+     * <li>0.50: Full moon
+     * <li>0.75: Last quarter
+     * </ul>
+     *
+     * @see #getMoonAge
+     */
+    public double getMoonPhase() {
+        // See page 147 of "Practial Astronomy with your Calculator",
+        // by Peter Duffet-Smith, for details on the algorithm.
+        return 0.5 * (1 - Math.cos(getMoonAge()));
+    }
+    
+    private static class MoonAge {
+        double value;
+        MoonAge(double val) { value = val; }
+    }
+    
+    /**
+     * Constant representing a new moon.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge NEW_MOON      = new MoonAge(0);
+
+    /**
+     * Constant representing the moon's first quarter.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge FIRST_QUARTER = new MoonAge(PI/2);
+    
+    /**
+     * Constant representing a full moon.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge FULL_MOON     = new MoonAge(PI);
+    
+    /**
+     * Constant representing the moon's last quarter.
+     * For use with {@link #getMoonTime getMoonTime}
+     */
+    public static final MoonAge LAST_QUARTER  = new MoonAge((PI*3)/2);
+    
+    /**
+     * Find the next or previous time at which the Moon's ecliptic
+     * longitude will have the desired value.  
+     * <p>
+     * @param desired   The desired longitude.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     */
+    public long getMoonTime(double desired, boolean next)
+    {
+        return timeOfAngle( new AngleFunc() {
+                            public double eval() { return getMoonAge(); } },
+                            desired,
+                            SYNODIC_MONTH,
+                            MINUTE_MS,
+                            next);
+    }
+    
+    /**
+     * Find the next or previous time at which the moon will be in the
+     * desired phase.
+     * <p>
+     * @param desired   The desired phase of the moon.
+     * @param next      <tt>true</tt> if the next occurrance of the phase
+     *                  is desired, <tt>false</tt> for the previous occurrance. 
+     */
+    public long getMoonTime(MoonAge desired, boolean next) {
+        return getMoonTime(desired.value, next);
+    }
+    
+    /**
+     * Returns the time (GMT) of sunrise or sunset on the local date to which
+     * this calendar is currently set.
+     */
+    public long getMoonRiseSet(boolean rise)
+    {
+        return riseOrSet(new CoordFunc() {
+                            public Equatorial eval() { return getMoonPosition(); }
+                         },
+                         rise,
+                         .533 * DEG_RAD,        // Angular Diameter
+                         34 /60.0 * DEG_RAD,    // Refraction correction
+                         MINUTE_MS);            // Desired accuracy
+    }
+
+    //-------------------------------------------------------------------------
+    // Interpolation methods for finding the time at which a given event occurs
+    //-------------------------------------------------------------------------
+    
+    private interface AngleFunc {
+        public double eval();
+    };
+    
+    private long timeOfAngle(AngleFunc func, double desired,
+                             double periodDays, long epsilon, boolean next)
+    {
+        // Find the value of the function at the current time
+        long   lastTime  = time;
+        double lastAngle = func.eval();
+        
+        // Find out how far we are from the desired angle
+        double deltaAngle = norm2PI(desired - lastAngle) ;
+        
+        // Using the average period, estimate the next (or previous) time at
+        // which the desired angle occurs.
+        double deltaT =  (deltaAngle + (next ? 0 : -PI2)) * (periodDays*DAY_MS) / PI2;
+        
+        setTime(time + (long)deltaT);
+        
+        // Now iterate until we get the error below epsilon.  Throughout
+        // this loop we use normPI to get values in the range -Pi to Pi,
+        // since we're using them as correction factors rather than absolute angles.
+        do {
+            // Evaluate the function at the time we've estimated
+            double angle = func.eval();
+            
+            // Find the # of milliseconds per radian at this point on the curve
+            double factor = Math.abs(deltaT / normPI(angle-lastAngle));
+
+            // Correct the time estimate based on how far off the angle is
+            deltaT = normPI(desired - angle) * factor;
+            
+            lastTime  = time;
+            lastAngle = angle;
+            
+            setTime(time + (long)deltaT);
+        }
+        while (Math.abs(deltaT) > epsilon);
+        
+        return time;
+    }
+    
+    private interface CoordFunc {
+        public Equatorial eval();
+    };
+    
+    private long riseOrSet(CoordFunc func, boolean rise,
+                           double diameter, double refraction, 
+                           long epsilon)
+    {        
+        Equatorial  pos = null;
+        double      tanL   = Math.tan(fLatitude);
+        long        deltaT = Long.MAX_VALUE;
+        int         count = 0;
+        
+        //
+        // Calculate the object's position at the current time, then use that
+        // position to calculate the time of rising or setting.  The position
+        // will be different at that time, so iterate until the error is allowable.
+        //
+        do {
+            // See "Practical Astronomy With Your Calculator, section 33.
+            pos = func.eval();
+            double angle = Math.acos(-tanL * Math.tan(pos.declination));
+            double lst = ((rise ? PI2-angle : angle) + pos.ascension ) * 24 / PI2;
+                         
+            // Convert from LST to Universal Time.
+            long newTime = lstToUT( lst );
+            
+            deltaT = newTime - time;
+            setTime(newTime);
+        }
+        while (++ count < 5 && Math.abs(deltaT) > epsilon);
+        
+        // Calculate the correction due to refraction and the object's angular diameter
+        double cosD  = Math.cos(pos.declination);
+        double psi   = Math.acos(Math.sin(fLatitude) / cosD);
+        double x     = diameter / 2 + refraction;
+        double y     = Math.asin(Math.sin(x) / Math.sin(psi));
+        long  delta  = (long)((240 * y * RAD_DEG / cosD)*SECOND_MS);
+        
+        return time + (rise ? -delta : delta);
+    }
+    
+    //-------------------------------------------------------------------------
+    // Other utility methods
+    //-------------------------------------------------------------------------
+
+    private static final double normalize(double value, double range) {
+        return value - range * Math.floor(value / range);
+    }
+    
+    /**
+     * Normalize an angle so that it's in the range 0 - 2pi.
+     * For positive angles this is just (angle % 2pi), but the Java
+     * mod operator doesn't work that way for negative numbers....
+     */
+    private static final double norm2PI(double angle) {
+        return normalize(angle, PI2);
+    }
+    
+    /**
+     * Normalize an angle into the range -PI - PI
+     */
+    private static final double normPI(double angle) {
+        return normalize(angle + PI, PI2) - PI;
+    }
+    
+    /**
+     * Find the "true anomaly" (longitude) of an object from
+     * its mean anomaly and the eccentricity of its orbit.  This uses
+     * an iterative solution to Kepler's equation.
+     *
+     * @param meanAnomaly   The object's longitude calculated as if it were in
+     *                      a regular, circular orbit, measured in radians
+     *                      from the point of perigee.  
+     *
+     * @param eccentricity  The eccentricity of the orbit
+     *
+     * @return The true anomaly (longitude) measured in radians
+     */
+    private double trueAnomaly(double meanAnomaly, double eccentricity)
+    {
+        // First, solve Kepler's equation iteratively
+        double delta;
+        double E = meanAnomaly;
+        do {
+            delta = E - eccentricity * Math.sin(E) - meanAnomaly;
+            E = E - delta / (1 - eccentricity * Math.cos(E));
+        } 
+        while (Math.abs(delta) > accuracy);
+
+        return 2.0 * Math.atan( Math.tan(E/2) * Math.sqrt( (1+eccentricity)
+                                                          /(1-eccentricity) ) );
+    }
+    
+    static private final double accuracy = 0.01 * PI/180;  // 0.01 degrees
+    
+    /**
+     * Return the obliquity of the ecliptic (the angle between the ecliptic
+     * and the earth's equator) at the current time.  This varies due to
+     * the precession of the earth's axis.
+     *
+     * @return  the obliquity of the ecliptic relative to the equator,
+     *          measured in radians.
+     */
+    private double eclipticObliquity() {
+        if (eclipObliquity == INVALID) {
+            final double epoch = 2451545.0;     // 2000 AD, January 1.5
+
+            double T = (getJulianDay() - epoch) / 36525;
+            
+            eclipObliquity = 23.439292
+                           - 46.815/3600 * T
+                           - 0.0006 * T*T
+                           + 0.00181 * T*T*T;
+                           
+            eclipObliquity *= DEG_RAD;
+        }
+        return eclipObliquity;
+    }
+    
+     
+    //-------------------------------------------------------------------------
+    // Private data
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Current time in milliseconds since 1/1/1970 AD
+     * @see java.util.Date#getTime
+     */
+    private long time;
+    
+    /* These aren't used yet, but they'll be needed for sunset calculations
+     * and equatorial to horizon coordinate conversions
+     */
+    private double fLongitude = 0.0;
+    private double fLatitude  = 0.0;
+    private long   fGmtOffset = 0;
+    
+    //
+    // The following fields are used to cache calculated results for improved
+    // performance.  These values all depend on the current time setting
+    // of this object, so the clearCache method is provided.
+    //
+    static final private double INVALID = Double.MIN_VALUE;
+    
+    private transient double    julianDay       = INVALID;
+    private transient double    julianCentury   = INVALID;
+    private transient double    sunLongitude    = INVALID;
+    private transient double    meanAnomalySun  = INVALID;
+    private transient double    moonLongitude   = INVALID;
+    private transient double    moonEclipLong   = INVALID;
+    private transient double    meanAnomalyMoon = INVALID;
+    private transient double    eclipObliquity  = INVALID;
+    private transient double    siderealT0      = INVALID;
+    private transient double    siderealTime    = INVALID;
+    
+    private transient Equatorial  moonPosition = null;
+
+    private void clearCache() {
+        julianDay       = INVALID;
+        julianCentury   = INVALID;
+        sunLongitude    = INVALID;
+        meanAnomalySun  = INVALID;
+        moonLongitude   = INVALID;
+        moonEclipLong   = INVALID;
+        meanAnomalyMoon = INVALID;
+        eclipObliquity  = INVALID;
+        siderealTime    = INVALID;
+        siderealT0      = INVALID;
+        moonPosition    = null;
+    }
+    
+    private static void out(String s) {
+        System.out.println(s);
+    }
+    
+    private static String deg(double rad) {
+        return Double.toString(rad * RAD_DEG);
+    }
+    
+    private static String hours(long ms) {
+        return Double.toString((double)ms / HOUR_MS) + " hours";
+    }
+    public String local(long localMillis) {
+        return new Date(localMillis - TimeZone.getDefault().getRawOffset()).toString();
+    }
+    
+    
+    /**
+     * Represents the position of an object in the sky relative to the ecliptic,
+     * the plane of the earth's orbit around the Sun. 
+     * This is a spherical coordinate system in which the latitude
+     * specifies the position north or south of the plane of the ecliptic.
+     * The longitude specifies the position along the ecliptic plane
+     * relative to the "First Point of Aries", which is the Sun's position in the sky
+     * at the Vernal Equinox.
+     * <p>
+     * Note that Ecliptic objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Equatorial
+     * @see CalendarAstronomer.Horizon
+     */
+    public static final class Ecliptic {
+        /**
+         * Constructs an Ecliptic coordinate object.
+         * <p>
+         * @param lat The ecliptic latitude, measured in radians.
+         * @param lon The ecliptic longitude, measured in radians.
+         */
+        public Ecliptic(double lat, double lon) {
+            latitude = lat;
+            longitude = lon;
+        }
+
+        /**
+         * Return a string representation of this object
+         */
+        public String toString() {
+            return Double.toString(longitude*RAD_DEG) + "," + (latitude*RAD_DEG);
+        }
+        
+        /**
+         * The ecliptic latitude, in radians.  This specifies an object's
+         * position north or south of the plane of the ecliptic,
+         * with positive angles representing north.
+         */
+        public final double latitude;
+        
+        /**
+         * The ecliptic longitude, in radians.
+         * This specifies an object's position along the ecliptic plane
+         * relative to the "First Point of Aries", which is the Sun's position
+         * in the sky at the Vernal Equinox,
+         * with positive angles representing east.
+         * <p>
+         * A bit of trivia: the first point of Aries is currently in the
+         * constellation Pisces, due to the precession of the earth's axis.
+         */
+        public final double longitude;
+    };
+
+    /**
+     * Represents the position of an 
+     * object in the sky relative to the plane of the earth's equator. 
+     * The <i>Right Ascension</i> specifies the position east or west
+     * along the equator, relative to the sun's position at the vernal
+     * equinox.  The <i>Declination</i> is the position north or south
+     * of the equatorial plane.
+     * <p>
+     * Note that Equatorial objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Horizon
+     */
+    public static final class Equatorial {
+        /**
+         * Constructs an Equatorial coordinate object.
+         * <p>
+         * @param asc The right ascension, measured in radians.
+         * @param dec The declination, measured in radians.
+         */
+        public Equatorial(double asc, double dec) {
+            ascension = asc;
+            declination = dec;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         */
+        public String toString() {
+            return Double.toString(ascension*RAD_DEG) + "," + (declination*RAD_DEG);
+        }
+        
+        /**
+         * Return a string representation of this object with the right ascension
+         * measured in hours, minutes, and seconds.
+         */
+        public String toHmsString() {
+            return radToHms(ascension) + "," + radToDms(declination);
+        }
+        
+        /**
+         * The right ascension, in radians. 
+         * This is the position east or west along the equator
+         * relative to the sun's position at the vernal equinox,
+         * with positive angles representing East.
+         */
+        public final double ascension;
+        
+        /**
+         * The declination, in radians.
+         * This is the position north or south of the equatorial plane,
+         * with positive angles representing north.
+         */
+        public final double declination;
+    };
+
+    /**
+     * Represents the position of an  object in the sky relative to 
+     * the local horizon.
+     * The <i>Altitude</i> represents the object's elevation above the horizon,
+     * with objects below the horizon having a negative altitude.
+     * The <i>Azimuth</i> is the geographic direction of the object from the
+     * observer's position, with 0 representing north.  The azimuth increases
+     * clockwise from north.
+     * <p>
+     * Note that Horizon objects are immutable and cannot be modified
+     * once they are constructed.  This allows them to be passed and returned by
+     * value without worrying about whether other code will modify them.
+     *
+     * @see CalendarAstronomer.Ecliptic
+     * @see CalendarAstronomer.Equatorial
+     */
+    public static final class Horizon {
+        /**
+         * Constructs a Horizon coordinate object.
+         * <p>
+         * @param alt  The altitude, measured in radians above the horizon.
+         * @param azim The azimuth, measured in radians clockwise from north.
+         */
+        public Horizon(double alt, double azim) {
+            altitude = alt;
+            azimuth = azim;
+        }
+
+        /**
+         * Return a string representation of this object, with the
+         * angles measured in degrees.
+         */
+        public String toString() {
+            return Double.toString(altitude*RAD_DEG) + "," + (azimuth*RAD_DEG);
+        }
+        
+        /** The object's altitude above the horizon, in radians. */
+        public final double altitude;
+        
+        /** The object's direction, in radians clockwise from north. */
+        public final double azimuth;
+    };
+
+    static private String radToHms(double angle) {
+        int hrs = (int) (angle*RAD_HOUR);
+        int min = (int)((angle*RAD_HOUR - hrs) * 60);
+        int sec = (int)((angle*RAD_HOUR - hrs - min/60.0) * 3600);
+        
+        return Integer.toString(hrs) + "h" + min + "m" + sec + "s";
+    }
+    
+    static private String radToDms(double angle) {
+        int deg = (int) (angle*RAD_DEG);
+        int min = (int)((angle*RAD_DEG - deg) * 60);
+        int sec = (int)((angle*RAD_DEG - deg - min/60.0) * 3600);
+        
+        return Integer.toString(deg) + "\u00b0" + min + "'" + sec + "\"";
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/util/CalendarCache.java b/src/com/ibm/util/CalendarCache.java
new file mode 100755
index 0000000..01abd4e
--- /dev/null
+++ b/src/com/ibm/util/CalendarCache.java
@@ -0,0 +1,114 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/CalendarCache.java,v $ 
+ * $Date: 2000/03/10 04:17:57 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+public class CalendarCache
+{
+    public CalendarCache() {
+        makeArrays(arraySize);
+    }
+    
+    private void makeArrays(int newSize) {
+        keys    = new long[newSize];
+        values  = new long[newSize];
+        
+        for (int i = 0; i < newSize; i++) {
+            values[i] = EMPTY;
+        }
+        arraySize = newSize;
+        threshold = (int)(arraySize * 0.75);
+        size = 0;
+    }
+    
+    public synchronized long get(long key) {
+        return values[findIndex(key)];
+    }
+    
+    public synchronized void put(long key, long value)
+    {
+        if (size >= threshold) {
+            rehash();
+        }
+        int index = findIndex(key);
+        
+        keys[index] = key;
+        values[index] = value;
+        size++;
+    }
+    
+    private final int findIndex(long key) {
+        int index = hash(key);
+        int delta = 0;
+        
+        while (values[index] != EMPTY && keys[index] != key)
+        {
+            if (delta == 0) {
+                delta = hash2(key);
+            }
+            index = (index + delta) % arraySize;
+        }
+        return index;
+    }
+    
+    private void rehash()
+    {
+        int oldSize = arraySize;
+        long[] oldKeys = keys;
+        long[] oldValues = values;
+        
+        if (pIndex < primes.length - 1) {
+            arraySize = primes[++pIndex];
+        } else {
+            arraySize = arraySize * 2 + 1;
+        }
+        size = 0;
+        
+        makeArrays(arraySize);
+        for (int i = 0; i < oldSize; i++) {
+            if (oldValues[i] != EMPTY) {
+                put(oldKeys[i], oldValues[i]);
+            }
+        }
+        oldKeys = oldValues = null; // Help out the garbage collector
+    }
+    
+    
+    /**
+     * Produce a uniformly-distributed hash value from an integer key.
+     * This is essentially a linear congruential random number generator
+     * that uses the key as its seed value.
+     */
+    private final int hash(long key)
+    {
+        return (int)((key * 15821 + 1) % arraySize);
+    }
+    
+    private final int hash2(long key) {
+        return arraySize - 2 - (int)(key % (arraySize-2) );
+    }
+    
+    static private final int primes[] = {  // 5, 17, 31, 47, // for testing
+        61, 127, 509, 1021, 2039, 4093, 8191, 16381, 32749, 65521,
+        131071, 262139, 
+    };
+
+    private int     pIndex      = 0;
+    private int     size        = 0;
+    private int     arraySize   = primes[pIndex];
+    private int     threshold   = (arraySize * 3) / 4;
+    
+    private long[]  keys        = new long[arraySize];
+    private long[]  values      = new long[arraySize];
+    
+    static public  long EMPTY   = Long.MIN_VALUE;
+}
diff --git a/src/com/ibm/util/CompactByteArray.java b/src/com/ibm/util/CompactByteArray.java
new file mode 100755
index 0000000..3819623
--- /dev/null
+++ b/src/com/ibm/util/CompactByteArray.java
@@ -0,0 +1,355 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/CompactByteArray.java,v $ 
+ * $Date: 2000/03/10 04:17:57 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ *
+ * @see                CompactCharArray
+ * @version            $Revision: 1.5 $
+ * @author             Helena Shih
+ */
+public final class CompactByteArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     */
+    public static  final int UNICODECOUNT =65536;
+
+    /**
+     * Default constructor for CompactByteArray, the default value of the
+     * compact array is 0.
+     */
+    public CompactByteArray()
+    {
+        this((byte)0);
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param defaultValue the default value of the compact array.
+     */
+    public CompactByteArray(byte defaultValue)
+    {
+        int i;
+        values = new byte[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If index is out of range.
+     */
+    public CompactByteArray(char indexArray[],
+                            byte newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds!");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds!");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactByteArray.
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     * @exception IllegalArgumentException If index is out of range.
+     */
+    public CompactByteArray(String indexArray,
+                            String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToByteArray(valueArray) );
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     */
+    public byte elementAt(char index)
+    {
+        return (values[(indices[index >> BLOCKSHIFT] & 0xFFFF)
+                       + (index & BLOCKMASK)]);
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     */
+    public void setElementAt(char index, byte value)
+    {
+        if (isCompact)
+            expand();
+        values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     * @param start the starting offset o of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     */
+    public void setElementAt(char start, char end, byte value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+
+    public void compact() {
+        compact(false);
+    }
+
+    /**
+     * Compact the array.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int limitCompacted = 0;
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    int j = 0;
+                    for (j = 0; j < limitCompacted;
+                            ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = (char)jBlockStart;
+                            break;
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        // we didn't match, so copy & update
+                        System.arraycopy(values, iBlockStart,
+                            values, jBlockStart, BLOCKCOUNT);
+                        indices[i] = (char)jBlockStart;
+                        hashes[j] = hashes[i];
+                        ++limitCompacted;
+
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array charer
+            int newSize = limitCompacted*BLOCKCOUNT;
+            byte[] result = new byte[newSize];
+            System.arraycopy(values, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(byte[] source, int sourceStart,
+                                            byte[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     */
+    public byte[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try {
+            CompactByteArray other = (CompactByteArray) super.clone();
+            other.values = (byte[])values.clone();
+            other.indices = (char[])indices.clone();
+            if (hashes != null) other.hashes = (int[])hashes.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactByteArray other = (CompactByteArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+    // --------------------------------------------------------------
+    // package private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            byte[]  tempArray;
+            hashes = new int[INDEXCOUNT];
+            tempArray = new byte[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                byte value = elementAt((char)i);
+                tempArray[i] = value;
+                touchBlock(i >> BLOCKSHIFT, value);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+
+    private byte[] getArray()
+    {
+        return values;
+    }
+
+    private static  final int BLOCKSHIFT =7;
+    private static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    private static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    private static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    private static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private byte[] values;
+    private char indices[];
+    private boolean isCompact;
+    private int[] hashes;
+};
diff --git a/src/com/ibm/util/CompactCharArray.java b/src/com/ibm/util/CompactCharArray.java
new file mode 100755
index 0000000..ee864d2
--- /dev/null
+++ b/src/com/ibm/util/CompactCharArray.java
@@ -0,0 +1,376 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/CompactCharArray.java,v $ 
+ * $Date: 2000/03/10 04:17:57 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import com.ibm.util.Utility;
+
+/**
+ * class CompactATypeArray : use only on primitive data types
+ * Provides a compact way to store information that is indexed by Unicode
+ * values, such as character properties, types, keyboard values, etc.This
+ * is very useful when you have a block of Unicode data that contains
+ * significant values while the rest of the Unicode data is unused in the
+ * application or when you have a lot of redundance, such as where all 21,000
+ * Han ideographs have the same value.  However, lookup is much faster than a
+ * hash table.
+ * A compact array of any primitive data type serves two purposes:
+ * <UL type = round>
+ *     <LI>Fast access of the indexed values.
+ *     <LI>Smaller memory footprint.
+ * </UL>
+ * A compact array is composed of a index array and value array.  The index
+ * array contains the indicies of Unicode characters to the value array.
+ * @see                CompactByteArray
+ * @version            $Revision: 1.5 $
+ * @author             Helena Shih
+ */
+public final class CompactCharArray implements Cloneable {
+
+    /**
+     * The total number of Unicode characters.
+     */
+    public static  final int UNICODECOUNT = 65536;
+
+    /**
+     * Default constructor for CompactCharArray, the default value of the
+     * compact array is 0.
+     */
+    public CompactCharArray()
+    {
+        this((char)0);
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param defaultValue the default value of the compact array.
+     */
+    public CompactCharArray(char defaultValue)
+    {
+        int i;
+        values = new char[UNICODECOUNT];
+        indices = new char[INDEXCOUNT];
+        hashes = new int[INDEXCOUNT];
+        for (i = 0; i < UNICODECOUNT; ++i) {
+            values[i] = defaultValue;
+        }
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            indices[i] = (char)(i<<BLOCKSHIFT);
+            hashes[i] = 0;
+        }
+        isCompact = false;
+
+        this.defaultValue = defaultValue;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     * @param indexArray the indicies of the compact array.
+     * @param newValues the values of the compact array.
+     * @exception IllegalArgumentException If the index is out of range.
+     */
+    public CompactCharArray(char indexArray[],
+                             char newValues[])
+    {
+        int i;
+        if (indexArray.length != INDEXCOUNT)
+            throw new IllegalArgumentException("Index out of bounds.");
+        for (i = 0; i < INDEXCOUNT; ++i) {
+            char index = indexArray[i];
+            if ((index < 0) || (index >= newValues.length+BLOCKCOUNT))
+                throw new IllegalArgumentException("Index out of bounds.");
+        }
+        indices = indexArray;
+        values = newValues;
+        isCompact = true;
+    }
+
+    /**
+     * Constructor for CompactCharArray.
+     *
+     * @param indexArray the RLE-encoded indicies of the compact array.
+     * @param valueArray the RLE-encoded values of the compact array.
+     *
+     * @throws IllegalArgumentException if the index or value array is
+     *          the wrong size.
+     */
+    public CompactCharArray(String indexArray,
+                             String valueArray)
+    {
+        this( Utility.RLEStringToCharArray(indexArray),
+              Utility.RLEStringToCharArray(valueArray));
+    }
+
+    /**
+     * Get the mapped value of a Unicode character.
+     * @param index the character to get the mapped value with
+     * @return the mapped value of the given character
+     */
+    public char elementAt(char index) // parameterized on char
+    {
+        return (values[(indices[index >> BLOCKSHIFT] & 0xFFFF)
+                       + (index & BLOCKMASK)]);
+    }
+
+    /**
+     * Set a new value for a Unicode character.
+     * Set automatically expands the array if it is compacted.
+     * @param index the character to set the mapped value with
+     * @param value the new mapped value
+     */
+    public void setElementAt(char index, char value)
+    {
+        if (isCompact)
+            expand();
+         values[(int)index] = value;
+        touchBlock(index >> BLOCKSHIFT, value);
+    }
+
+    /**
+     * Set new values for a range of Unicode character.
+     *
+     * @param start the starting offset of the range
+     * @param end the ending offset of the range
+     * @param value the new mapped value
+     */
+    public void setElementAt(char start, char end, char value)
+    {
+        int i;
+        if (isCompact) {
+            expand();
+        }
+        for (i = start; i <= end; ++i) {
+            values[i] = value;
+            touchBlock(i >> BLOCKSHIFT, value);
+        }
+    }
+
+    public void compact() {
+        compact(true);
+    }
+
+    /**
+     * Compact the array.
+     */
+    public void compact(boolean exhaustive)
+    {
+        if (!isCompact) {
+            int iBlockStart = 0;
+            char iUntouched = 0xFFFF;
+            int newSize = 0;
+
+            char[] target = exhaustive ? new char[UNICODECOUNT] : values;
+
+            for (int i = 0; i < indices.length; ++i, iBlockStart += BLOCKCOUNT) {
+                indices[i] = 0xFFFF;
+                boolean touched = blockTouched(i);
+                if (!touched && iUntouched != 0xFFFF) {
+                    // If no values in this block were set, we can just set its
+                    // index to be the same as some other block with no values
+                    // set, assuming we've seen one yet.
+                    indices[i] = iUntouched;
+                } else {
+                    int jBlockStart = 0;
+                    // See if we can find a previously compacted block that's identical
+                    for (int j = 0; j < i; ++j, jBlockStart += BLOCKCOUNT) {
+                        if (hashes[i] == hashes[j] &&
+                                arrayRegionMatches(values, iBlockStart,
+                                                   values, jBlockStart, BLOCKCOUNT)) {
+                            indices[i] = indices[j];
+                        }
+                    }
+                    if (indices[i] == 0xFFFF) {
+                        int dest;   // Where to copy
+                        if (exhaustive) {
+                            // See if we can find some overlap with another block
+                            dest = FindOverlappingPosition(iBlockStart, target,
+                                                            newSize);
+                        } else {
+                            // Just copy to the end; it's quicker
+                            dest = newSize;
+                        }
+                        int limit = dest + BLOCKCOUNT;
+                        if (limit > newSize) {
+                            for (int j = newSize; j < limit; ++j) {
+                                target[j] = values[iBlockStart + j - dest];
+                            }
+                            newSize = limit;
+                        }
+                        indices[i] = (char)dest;
+                        if (!touched) {
+                            // If this is the first untouched block we've seen,
+                            // remember its index.
+                            iUntouched = (char)jBlockStart;
+                        }
+                    }
+                }
+            }
+            // we are done compacting, so now make the array shorter
+            char[] result = new char[newSize];
+            System.arraycopy(target, 0, result, 0, newSize);
+            values = result;
+            isCompact = true;
+            hashes = null;
+        }
+    }
+
+    private int FindOverlappingPosition(int start, char[] tempValues, int tempCount)
+    {
+        for (int i = 0; i < tempCount; i += 1) {
+            int currentCount = BLOCKCOUNT;
+            if (i + BLOCKCOUNT > tempCount) {
+                currentCount = tempCount - i;
+            }
+            if (arrayRegionMatches(values, start, tempValues, i, currentCount))
+                return i;
+        }
+        return tempCount;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    final static boolean arrayRegionMatches(char[] source, int sourceStart,
+                                            char[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Remember that a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final void touchBlock(int i, int value) {
+        hashes[i] = (hashes[i] + (value<<1)) | 1;
+    }
+
+    /**
+     * Query whether a specified block was "touched", i.e. had a value set.
+     * Untouched blocks can be skipped when compacting the array
+     */
+    private final boolean blockTouched(int i) {
+        return hashes[i] != 0;
+    }
+
+    /** For internal use only.  Do not modify the result, the behavior of
+      * modified results are undefined.
+      */
+    public char[] getIndexArray()
+    {
+        return indices;
+    }
+
+    /**
+     * For internal use only.  Do not modify the result, the behavior of
+     * modified results are undefined.
+     */
+    public char[] getValueArray()
+    {
+        return values;
+    }
+
+    /**
+     * Overrides Cloneable
+     */
+    public Object clone()
+    {
+        try {
+            CompactCharArray other = (CompactCharArray) super.clone();
+            other.values = (char[])values.clone();
+            other.indices = (char[])indices.clone();
+            return other;
+        } catch (CloneNotSupportedException e) {
+            throw new InternalError();
+        }
+    }
+
+    /**
+     * Compares the equality of two compact array objects.
+     * @param obj the compact array object to be compared with this.
+     * @return true if the current compact array object is the same
+     * as the compact array object obj; false otherwise.
+     */
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (this == obj)                      // quick check
+            return true;
+        if (getClass() != obj.getClass())         // same class?
+            return false;
+        CompactCharArray other = (CompactCharArray) obj;
+        for (int i = 0; i < UNICODECOUNT; i++) {
+            // could be sped up later
+            if (elementAt((char)i) != other.elementAt((char)i))
+                return false;
+        }
+        return true; // we made it through the guantlet.
+    }
+
+    /**
+     * Generates the hash code for the compact array object
+     */
+    public int hashCode() {
+        int result = 0;
+        int increment = Math.min(3, values.length/16);
+        for (int i = 0; i < values.length; i+= increment) {
+            result = result * 37 + values[i];
+        }
+        return result;
+    }
+
+
+    // --------------------------------------------------------------
+    // private
+    // --------------------------------------------------------------
+
+    /**
+     * Expanding takes the array back to a 65536 element array.
+     */
+    private void expand()
+    {
+        int i;
+        if (isCompact) {
+            char[] tempArray;
+            tempArray = new char[UNICODECOUNT];
+            for (i = 0; i < UNICODECOUNT; ++i) {
+                tempArray[i] = elementAt((char)i);
+            }
+            for (i = 0; i < INDEXCOUNT; ++i) {
+                indices[i] = (char)(i<<BLOCKSHIFT);
+            }
+            values = null;
+            values = tempArray;
+            isCompact = false;
+        }
+    }
+
+    static  final int BLOCKSHIFT = 5;
+    static  final int BLOCKCOUNT =(1<<BLOCKSHIFT);
+    static  final int INDEXSHIFT =(16-BLOCKSHIFT);
+    static  final int INDEXCOUNT =(1<<INDEXSHIFT);
+    static  final int BLOCKMASK = BLOCKCOUNT - 1;
+
+    private char values[];
+    private char indices[];
+    private int[] hashes;
+    private boolean isCompact;
+    char defaultValue;
+};
diff --git a/src/com/ibm/util/DateRule.java b/src/com/ibm/util/DateRule.java
new file mode 100755
index 0000000..6fdfdba
--- /dev/null
+++ b/src/com/ibm/util/DateRule.java
@@ -0,0 +1,74 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/DateRule.java,v $ 
+ * $Date: 2000/03/10 04:17:58 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import java.util.Date;
+
+/**
+ * DateRule is an interface for calculating the date of an event.
+ * It supports both recurring events and those which occur only once.
+ * DateRule is useful for storing information about holidays,
+ * Daylight Savings Time rules, and other events such as meetings.
+ *
+ * @see SimpleDateRule
+ */
+public interface DateRule
+{
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     */
+    abstract public Date    firstAfter(Date start);
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     */
+    abstract public Date    firstBetween(Date start, Date end);
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     *
+     */
+    abstract public boolean isOn(Date date);
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     */
+    abstract public boolean isBetween(Date start, Date end);
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/EasterHoliday.java b/src/com/ibm/util/EasterHoliday.java
new file mode 100755
index 0000000..b9e1b60
--- /dev/null
+++ b/src/com/ibm/util/EasterHoliday.java
@@ -0,0 +1,279 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/EasterHoliday.java,v $ 
+ * $Date: 2000/03/10 04:17:58 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Calendar;
+import java.util.SimpleTimeZone;
+
+/**
+ * A Holiday subclass which represents holidays that occur
+ * a fixed number of days before or after Easter.  Supports both the
+ * Western and Orthodox methods for calculating Easter.
+ *
+ */
+public class EasterHoliday extends Holiday
+{
+    /**
+     * Construct a holiday that falls on Easter Sunday every year
+     *
+     * @param name The name of the holiday
+     */
+    public EasterHoliday(String name)
+    {
+        super(name, new EasterRule(0, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param name      The name of the holiday
+     */
+    public EasterHoliday(int daysAfter, String name)
+    {
+        super(name, new EasterRule(daysAfter, false));
+    }
+
+    /**
+     * Construct a holiday that falls a specified number of days before
+     * or after Easter Sunday each year, using either the Western
+     * or Orthodox calendar.
+     *
+     * @param daysAfter The number of days before (-) or after (+) Easter
+     * @param orthodox  Use the Orthodox calendar?
+     * @param name      The name of the holiday
+     */
+    public EasterHoliday(int daysAfter, boolean orthodox, String name)
+    {
+        super(name, new EasterRule(daysAfter, orthodox));
+    }
+
+    /**
+     * Shrove Tuesday, aka Mardi Gras, 48 days before Easter
+     */
+    static public final EasterHoliday SHROVE_TUESDAY  = new EasterHoliday(-48,    "Shrove Tuesday");
+
+    /**
+     * Ash Wednesday, start of Lent, 47 days before Easter
+     */
+    static public final EasterHoliday ASH_WEDNESDAY   = new EasterHoliday(-47,    "Ash Wednesday");
+
+    /**
+     * Palm Sunday, 7 days before Easter
+     */
+    static public final EasterHoliday PALM_SUNDAY     = new EasterHoliday( -7,    "Palm Sunday");
+
+    /**
+     * Maundy Thursday, 3 days before Easter
+     */
+    static public final EasterHoliday MAUNDY_THURSDAY = new EasterHoliday( -3,    "Maundy Thursday");
+
+    /**
+     * Good Friday, 2 days before Easter
+     */
+    static public final EasterHoliday GOOD_FRIDAY     = new EasterHoliday( -2,    "Good Friday");
+
+    /**
+     * Easter Sunday
+     */
+    static public final EasterHoliday EASTER_SUNDAY   = new EasterHoliday(  0,    "Easter Sunday");
+
+    /**
+     * Easter Monday, 1 day after Easter
+     */
+    static public final EasterHoliday EASTER_MONDAY   = new EasterHoliday(  1,    "Easter Monday");
+
+    /**
+     * Ascension, 39 days after Easter
+     */
+    static public final EasterHoliday ASCENSION       = new EasterHoliday( 39,    "Ascension");
+
+    /**
+     * Pentecost (aka Whit Sunday), 49 days after Easter
+     */
+    static public final EasterHoliday PENTECOST       = new EasterHoliday( 49,    "Pentecost");
+
+    /**
+     * Whit Sunday (aka Pentecost), 49 days after Easter
+     */
+    static public final EasterHoliday WHIT_SUNDAY     = new EasterHoliday( 49,    "Whit Sunday");
+
+    /**
+     * Whit Monday, 50 days after Easter
+     */
+    static public final EasterHoliday WHIT_MONDAY     = new EasterHoliday( 50,    "Whit Monday");
+
+    /**
+     * Corpus Christi, 60 days after Easter
+     */
+    static public final EasterHoliday CORPUS_CHRISTI  = new EasterHoliday( 60,    "Corpus Christi");
+}
+
+class EasterRule implements DateRule {
+    public EasterRule(int daysAfterEaster, boolean isOrthodox) {
+        this.daysAfterEaster = daysAfterEaster;
+        if (isOrthodox) {
+            orthodox.setGregorianChange(new Date(Long.MAX_VALUE));
+            calendar = orthodox;
+        }
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after the given date
+     */
+    public Date firstAfter(Date start)
+    {
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        return doFirstBetween(start, null);
+    }
+
+    /**
+     * Return the first occurrance of this rule on or after
+     * the given start date and before the given end date.
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        // Pin to the min/max dates for this rule
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Return true if the given Date is on the same day as Easter
+     */
+    public boolean isOn(Date date)
+    {
+        if (startDate != null && date.before(startDate)) {
+            return false;
+        }
+
+        synchronized(calendar) {
+            calendar.setTime(date);
+            int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
+
+            calendar.setTime(computeInYear(calendar.getTime(), calendar));
+
+            return calendar.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Return true if Easter occurs between the two dates given
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        //System.out.println("doFirstBetween: start   = " + start.toString());
+        //System.out.println("doFirstBetween: end     = " + end.toString());
+
+        synchronized(calendar) {
+            // Figure out when this holiday lands in the given year
+            Date result = computeInYear(start, calendar);
+
+         //System.out.println("                result  = " + result.toString());
+
+            // We might have gotten a date that's in the same year as "start", but
+            // earlier in the year.  If so, go to next year
+            if (result.before(start))
+            {
+                calendar.setTime(start);
+                calendar.get(Calendar.YEAR);    // JDK 1.1.2 bug workaround
+                calendar.add(Calendar.YEAR, 1);
+
+                //System.out.println("                Result before start, going to next year: "
+                //                        + calendar.getTime().toString());
+
+                result = computeInYear(calendar.getTime(), calendar);
+                //System.out.println("                result  = " + result.toString());
+            }
+
+            if (end != null && result.after(end)) {
+                //System.out.println("Result after end, returning null");
+                return null;
+            }
+            return result;
+        }
+    }
+
+    /**
+     * Compute the month and date on which this holiday falls in the year
+     * containing the date "date".  First figure out which date Easter
+     * lands on in this year, and then add the offset for this holiday to get
+     * the right date.
+     * <p>
+     * The algorithm here is taken from the
+     * <a href=http://www.pip.dknet.dk/~pip10160/calendar.html>Calendar FAQ,
+     * version 1.7</a>
+     */
+    private Date computeInYear(Date date, GregorianCalendar cal)
+    {
+        if (cal == null) cal = calendar;
+
+        synchronized(cal) {
+            cal.setTime(date);
+
+            int year = cal.get(Calendar.YEAR);
+            int g = year % 19;  // "Golden Number" of year - 1
+            int i = 0;          // # of days from 3/21 to the Paschal full moon
+            int j = 0;          // Weekday (0-based) of Paschal full moon
+
+            if (cal.getTime().after( cal.getGregorianChange()))
+            {
+                // We're past the Gregorian switchover, so use the Gregorian rules.
+                int c = year / 100;
+                int h = (c - c/4 - (8*c+13)/25 + 19*g + 15) % 30;
+                i = h - (h/28)*(1 - (h/28)*(29/(h+1))*((21-g)/11));
+                j = (year + year/4 + i + 2 - c + c/4) % 7;
+            }
+            else
+            {
+                // Use the old Julian rules.
+                i = (19*g + 15) % 30;
+                j = (year + year/4 + i) % 7;
+            }
+            int l = i - j;
+            int m = 3 + (l+40)/44;              // 1-based month in which Easter falls
+            int d = l + 28 - 31*(m/4);          // Date of Easter within that month
+
+            cal.clear();
+            cal.set(Calendar.ERA, GregorianCalendar.AD);
+            cal.set(Calendar.YEAR, year);
+            cal.set(Calendar.MONTH, m-1);       // 0-based
+            cal.set(Calendar.DATE, d);
+            cal.getTime();                      // JDK 1.1.2 bug workaround
+            cal.add(Calendar.DATE, daysAfterEaster);
+
+            return cal.getTime();
+        }
+    }
+
+    static GregorianCalendar gregorian = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+    static GregorianCalendar orthodox = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+
+    int               daysAfterEaster;
+    Date              startDate = null;
+    GregorianCalendar calendar = gregorian;
+
+}
diff --git a/src/com/ibm/util/HebrewCalendar.java b/src/com/ibm/util/HebrewCalendar.java
new file mode 100755
index 0000000..06c6f49
--- /dev/null
+++ b/src/com/ibm/util/HebrewCalendar.java
@@ -0,0 +1,1102 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/HebrewCalendar.java,v $ 
+ * $Date: 2000/03/10 04:17:58 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+/**
+ * <code>HebrewCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the traditional Hebrew calendar.
+ * This is the civil calendar in Israel and the liturgical calendar
+ * of the Jewish faith worldwide.
+ * <p>
+ * The Hebrew calendar is lunisolar and thus has a number of interesting
+ * properties that distinguish it from the Gregorian.  Months start
+ * on the day of (an arithmetic approximation of) each new moon.  Since the
+ * solar year (approximately 365.24 days) is not an even multiple of
+ * the lunar month (approximately 29.53 days) an extra "leap month" is
+ * inserted in 7 out of every 19 years.  To make matters even more
+ * interesting, the start of a year can be delayed by up to three days
+ * in order to prevent certain holidays from falling on the Sabbath and
+ * to prevent certain illegal year lengths.  Finally, the lengths of certain
+ * months can vary depending on the number of days in the year.
+ * <p>
+ * The leap month is known as "Adar 1" and is inserted between the
+ * months of Shevat and Adar in leap years.  Since the leap month does
+ * not come at the end of the year, calculations involving
+ * month numbers are particularly complex.  Users of this class should
+ * make sure to use the {@link #roll roll} and {@link #add add} methods
+ * rather than attempting to perform date arithmetic by manipulating
+ * the fields directly.
+ * <p>
+ * <b>Note:</b> In the traditional Hebrew calendar, days start at sunset.
+ * However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * If you are interested in more information on the rules behind the Hebrew
+ * calendar, see one of the following references:
+ * <ul>
+ * <li>"<a href="http://www.amazon.com/exec/obidos/ASIN/0521564743">Calendrical Calculations</a>",
+ *      by Nachum Dershowitz & Edward Reingold, Cambridge University Press, 1997, pages 85-91.
+ *
+ * <li>Hebrew Calendar Science and Myths,
+ *      <a href="http://www.geocities.com/Athens/1584/">
+ *      http://www.geocities.com/Athens/1584/</a>
+ *
+ * <li>The Calendar FAQ,
+ *      <a href="http://www.pip.dknet.dk/~pip10160/calendar.html">
+ *      http://www.pip.dknet.dk/~pip10160/calendar.html</a>
+ * </ul>
+ * <p>
+ * @see java.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ */
+public class HebrewCalendar extends IBMCalendar {
+
+    private static String copyright = "Copyright \u00a9 1997-1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Tons o' Constants...
+    //-------------------------------------------------------------------------
+
+    /** Constant for Tishri, the 1st month of the Hebrew year. */
+    public static final int TISHRI = 0;
+
+    /** Constant for Heshvan, the 2nd month of the Hebrew year. */
+    public static final int HESHVAN = 1;
+
+    /** Constant for Kislev, the 3rd month of the Hebrew year. */
+    public static final int KISLEV = 2;
+
+    /** Constant for Tevet, the 4th month of the Hebrew year. */
+    public static final int TEVET = 3;
+
+    /** Constant for Shevat, the 5th month of the Hebrew year. */
+    public static final int SHEVAT = 4;
+
+    /**
+     * Constant for Adar I, the 6th month of the Hebrew year
+     * (present in leap years only). In non-leap years, the calendar
+     * jumps from Shevat (5th month) to Adar (7th month).
+     */
+    public static final int ADAR_1 = 5;
+
+    /** Constant for the Adar, the 7th month of the Hebrew year. */
+    public static final int ADAR = 6;
+
+    /** Constant for Nisan, the 8th month of the Hebrew year. */
+    public static final int NISAN = 7;
+
+    /** Constant for Iyar, the 9th month of the Hebrew year. */
+    public static final int IYAR = 8;
+
+    /** Constant for Sivan, the 10th month of the Hebrew year. */
+    public static final int SIVAN = 9;
+
+    /** Constant for Tammuz, the 11th month of the Hebrew year. */
+    public static final int TAMUZ = 10;
+
+    /** Constant for Av, the 12th month of the Hebrew year. */
+    public static final int AV = 11;
+
+    /** Constant for Elul, the 13th month of the Hebrew year. */
+    public static final int ELUL = 12;
+
+    /**
+     * The absolute date, in milliseconds since 1/1/1970 AD, Gregorian,
+     * of the start of the Hebrew calendar.  In order to keep this calendar's
+     * time of day in sync with that of the Gregorian calendar, we use
+     * midnight, rather than sunset the day before.
+     */
+    private static final long EPOCH_MILLIS = -180799862400000L; // 1/1/1 HY
+
+    // Useful millisecond constants
+    private static final int  SECOND_MS = 1000;
+    private static final int  MINUTE_MS = 60*SECOND_MS;
+    private static final int  HOUR_MS   = 60*MINUTE_MS;
+    private static final long DAY_MS    = 24*HOUR_MS;
+    private static final long WEEK_MS   = 7*DAY_MS;
+
+    /**
+     * The minimum and maximum values for all of the fields, for validation
+     */
+    private static final int MinMax[][] = {
+        // Min         Greatest Min    Least Max            Max
+        {   0,              0,              0,              0         },  // ERA
+        {   1,              1,        5000000,        5000000         },  // YEAR
+        {   0,              0,             12,             12         },  // MONTH
+        {   0,              0,             51,             56         },  // WEEK_OF_YEAR
+        {   0,              0,              5,              6         },  // WEEK_OF_MONTH
+        {   1,              1,             29,             30         },  // DAY_OF_MONTH
+        {   1,              1,            353,            385         },  // DAY_OF_YEAR
+        {   1,              1,              7,              7         },  // DAY_OF_WEEK
+        {  -1,             -1,              4,              6         },  // DAY_OF_WEEK_IN_MONTH
+        {   0,              0,              1,              1         },  // AM_PM
+        {   0,              0,             11,             11         },  // HOUR
+        {   0,              0,             23,             23         },  // HOUR_OF_DAY
+        {   0,              0,             59,             59         },  // MINUTE
+        {   0,              0,             59,             59         },  // SECOND
+        {   0,              0,            999,            999         },  // MILLISECOND
+        { -12*HOUR_MS,    -12*HOUR_MS,     12*HOUR_MS,     12*HOUR_MS },  // ZONE_OFFSET
+        {   0,              0,              1*HOUR_MS,      1*HOUR_MS },
+    };
+
+    /**
+     * The lengths of the Hebrew months.  This is complicated, because there
+     * are three different types of years, or six if you count leap years.
+     * Due to the rules for postponing the start of the year to avoid having
+     * certain holidays fall on the sabbath, the year can end up being three
+     * different lengths, called "deficient", "normal", and "complete".
+     */
+    private static final int MONTH_LENGTH[][] = {
+        // Deficient  Normal     Complete
+        {   30,         30,         30     },           //Tishri
+        {   29,         29,         30     },           //Heshvan
+        {   29,         30,         30     },           //Kislev
+        {   29,         29,         29     },           //Tevet
+        {   30,         30,         30     },           //Shevat
+        {   30,         30,         30     },           //Adar I (leap years only)
+        {   29,         29,         29     },           //Adar
+        {   30,         30,         30     },           //Nisan
+        {   29,         29,         29     },           //Iyar
+        {   30,         30,         30     },           //Sivan
+        {   29,         29,         29     },           //Tammuz
+        {   30,         30,         30     },           //Av
+        {   29,         29,         29     },           //Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a non-leap year
+     * Although this can be calculated from the MONTH_LENGTH table,
+     * keeping it around separately makes some calculations a lot faster
+     */
+    private static final int NUM_DAYS[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  147,        148,        149  },          // (Adar I)
+        {  176,        177,        178  },          // Adar
+        {  206,        207,        208  },          // Nisan
+        {  235,        236,        237  },          // Iyar
+        {  265,        266,        267  },          // Sivan
+        {  294,        295,        296  },          // Tammuz
+        {  324,        325,        326  },          // Av
+        {  353,        354,        355  },          // Elul
+    };
+
+    /**
+     * The cumulative # of days to the end of each month in a leap year
+     */
+    private static final int LEAP_NUM_DAYS[][] = {
+        // Deficient  Normal     Complete
+        {    0,          0,          0  },          // (placeholder)
+        {   30,         30,         30  },          // Tishri
+        {   59,         59,         60  },          // Heshvan
+        {   88,         89,         90  },          // Kislev
+        {  117,        118,        119  },          // Tevet
+        {  147,        148,        149  },          // Shevat
+        {  177,        178,        179  },          // Adar I
+        {  206,        207,        208  },          // Adar II
+        {  236,        237,        238  },          // Nisan
+        {  265,        266,        267  },          // Iyar
+        {  295,        296,        297  },          // Sivan
+        {  324,        325,        326  },          // Tammuz
+        {  354,        355,        356  },          // Av
+        {  383,        384,        385  },          // Elul
+    };
+
+    //-------------------------------------------------------------------------
+    // Data Members...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Since TimeZone rules are all defined in terms of GregorianCalendar,
+     * we need a GregorianCalendar object for doing time zone calculations
+     * There's no point in lazy-allocating this since it's needed for
+     * almost anything this class does.
+     */
+    private static GregorianCalendar gregorian = new GregorianCalendar();
+
+    private static CalendarCache cache = new CalendarCache();
+    
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>HebrewCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public HebrewCalendar() {
+        this(TimeZone.getDefault(), Locale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     *
+     * @param zone The time zone for the new calendar.
+     */
+    public HebrewCalendar(TimeZone zone) {
+        this(zone, Locale.getDefault());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    public HebrewCalendar(Locale aLocale) {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone The time zone for the new calendar.
+     *
+     * @param aLocale The locale for the new calendar.
+     */
+    public HebrewCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     */
+    public HebrewCalendar(int year, int month, int date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public HebrewCalendar(Date date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>HebrewCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for Tishri.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    public HebrewCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(YEAR, year);
+        this.set(MONTH, month);
+        this.set(DATE, date);
+        this.set(HOUR_OF_DAY, hour);
+        this.set(MINUTE, minute);
+        this.set(SECOND, second);
+    }
+
+    //-------------------------------------------------------------------------
+    // Minimum / Maximum access functions
+    //-------------------------------------------------------------------------
+
+    /**
+     * Returns the minimum value for the given field.
+     * e.g. for DAY_OF_MONTH, 1
+     *
+     * @param field The field whose minimum value is desired.
+     *
+     * @see java.util.Calendar#getMinimum
+     */
+    public int getMinimum(int field)
+    {
+        return MinMax[field][0];
+    }
+
+    /**
+     * Returns the highest minimum value for the given field.  For the Hebrew
+     * calendar, this always returns the same result as <code>getMinimum</code>.
+     *
+     * @param field The field whose greatest minimum value is desired.
+     *
+     * @see #getMinimum
+     */
+    public int getGreatestMinimum(int field)
+    {
+        return MinMax[field][1];
+    }
+
+    /**
+     * Returns the maximum value for the given field.
+     * e.g. for {@link #DAY_OF_MONTH DAY_OF_MONTH}, 30
+     *
+     * @param field The field whose maximum value is desired.
+     *
+     * @see #getLeastMaximum
+     * @see #getActualMaximum
+     */
+    public int getMaximum(int field)
+    {
+        return MinMax[field][3];
+    }
+
+    /**
+     * Returns the lowest maximum value for the given field.  For most fields,
+     * this returns the same result as {@link #getMaximum getMaximum}.  However,
+     * for some fields this can be a lower number. For example,
+     * the maximum {@link #DAY_OF_MONTH DAY_OF_MONTH} in the Hebrew caleandar varies
+     * from month to month, so this method returns 29 while <code>getMaximum</code>
+     * returns 30.
+     *
+     * @param field The field whose least maximum value is desired.
+     *
+     * @see #getMaximum
+     * @see #getActualMaximum
+     */
+    public int getLeastMaximum(int field)
+    {
+        return MinMax[field][2];
+    }
+
+    /**
+     * Return the maximum value that a field could have, given the current date.
+     * For example, with the date "Kislev 3, 5757" and the {@link #DAY_OF_MONTH DAY_OF_MONTH} field,
+     * the actual maximum would be 29; for "Kislev 3, 5758" it would be 30,
+     * since the length of the month Kislev varies from year to year.
+     *
+     * @param field The field whose actual maximum value is desired.
+     *
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     */
+    public int getActualMaximum(int field)
+    {
+        if (!isSet[YEAR] || !isSet[MONTH]) {
+            complete();
+        }
+        switch (field) {
+          case MONTH:
+            return isLeapYear(fields[YEAR]) ? 13 : 12;
+
+          case DAY_OF_MONTH:
+            return monthLength(fields[YEAR], fields[MONTH]);
+
+          case DAY_OF_YEAR:
+            return yearLength(fields[YEAR]);
+
+          default:
+            return super.getActualMaximum(field);
+        }   
+    }
+        
+    //-------------------------------------------------------------------------
+    // Rolling and adding functions overridden from Calendar
+    //
+    // These methods call through to the default implementation in IBMCalendar
+    // for most of the fields and only handle the unusual ones themselves.
+    //-------------------------------------------------------------------------
+
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>. 
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul 5758".
+     * <p>
+     * This method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.
+     * <p>
+     * <b>Note:</b> You should always use {@link #roll roll} and add rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     */
+    public void add(int field, int amount)
+    {
+        switch (field) {
+          case MONTH: 
+            {
+                //
+                // MONTH is tricky, because the number of months per year varies
+                // It's easiest to just convert to an absolute # of months
+                // since the epoch, do the addition, and convert back.
+                //
+                int month = (235 * get(YEAR) - 234) / 19 + get(MONTH);
+                month += amount;
+
+                // Now convert back to year and month values
+                int year = (19 * month + 234) / 235;
+                month -= (235 * year - 234) / 19;
+                
+                // In a non-leap year, months after the (missing) leap month
+                // must be bumped up by one.
+                // TODO: but only if we started before the leap month
+                if (month >= ADAR_1 && !isLeapYear(year)) {
+                    month++;
+                }
+                this.set(YEAR, year);
+                this.set(MONTH, month);
+
+                pinField(DAY_OF_MONTH);
+                break;
+            }
+
+          default:
+            super.add(field, amount);
+            break;
+        }
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.  
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Hebrew calendar set to "25 Av 5758" will result in the date "5 Av 5758".
+     * <p>
+     * When rolling certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * upward by one for the date "30 Av 5758", the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is "29 Elul 5758" rather than the invalid
+     * "30 Elul".
+     * <p>
+     * This method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use roll and {@link #add add} rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>HebrewCalendar</tt>.  Since the {@link #MONTH MONTH} field behaves
+     * discontinuously in non-leap years, simple arithmetic can give invalid results.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     */
+    public void roll(int field, int amount)
+    {
+        switch (field) {
+          case MONTH:
+            {
+                int month = get(MONTH);
+                int year = get(YEAR);
+                
+                boolean leapYear = isLeapYear(year);
+                int yearLength = leapYear ? 13 : 12;
+                int newMonth = month + (amount % yearLength);
+                //
+                // If it's not a leap year and we're rolling past the missing month
+                // of ADAR_1, we need to roll an extra month to make up for it.
+                // TODO: fix cases like Av + 12 -> Tammuz
+                //
+                if (!leapYear) {
+                    if (amount > 0 && month < ADAR_1 && newMonth >= ADAR_1) {
+                        newMonth++;
+                    } else if (amount < 0 && month > ADAR_1 && newMonth <= ADAR_1) {
+                        newMonth--;
+                    }
+                }
+                set(MONTH, (newMonth + 13) % 13);
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+          default:
+            super.roll(field, amount);
+        }
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds and back...
+    //
+    // These are overrides of abstract methods on java.util.Calendar
+    //-------------------------------------------------------------------------
+
+    /**
+     * Converts time field values to UTC as milliseconds.
+     *
+     * @exception IllegalArgumentException if an unknown field is given.
+     */
+    protected void computeTime()
+    {
+        if (isTimeSet) return;
+
+        if (!isLenient() && !validateFields())
+            throw new IllegalArgumentException("Invalid field values for HebrewCalendar");
+
+        if (isSet[ERA] && internalGet(ERA) != 0)
+            throw new IllegalArgumentException("ERA out of range in HebrewCalendar");
+
+        // The year is required.  We don't have to check if it's unset,
+        // because if it is, by definition it will be 0.
+
+        int year = internalGet(YEAR);
+        long dayNumber = 0, date = 0;
+
+        if (year <= 0) {
+            throw new IllegalArgumentException("YEAR out of range in HebrewCalendar");
+        }
+
+        // The following code is somewhat convoluted. The various nested
+        //  if's handle the different cases of what fields are present.
+        if (isSet[MONTH] &&
+            (isSet[DATE] ||
+             (isSet[DAY_OF_WEEK] &&
+              (isSet[WEEK_OF_MONTH] || isSet[DAY_OF_WEEK_IN_MONTH])
+             )))
+        {
+            // We have the month specified. Make it 1-based for the algorithm.
+            int month = internalGet(MONTH);
+            
+            // normalize month
+            // TODO: I think this is wrong, since months/year can vary
+            if (month < 0) {
+                year += month / 13 - 1;
+                month = 13 + month % 13;
+            } else if (month > 12) {
+                year += month / 13;
+                month = month % 13;
+            }
+
+            dayNumber = startOfYear(year);
+            if (isLeapYear(year)) {
+                dayNumber += LEAP_NUM_DAYS[month][yearType(year)];
+            } else {
+                dayNumber += NUM_DAYS[month][yearType(year)];
+            }
+
+            if (isSet[DATE])
+            {
+                date = internalGet(DATE);
+            }
+            else
+            {
+                // Compute from day of week plus week number or from the day of
+                // week plus the day of week in month.  The computations are
+                // almost identical.
+
+                // Find the day of the week for the first of this month.  This
+                // is zero-based, with 0 being the locale-specific first day of
+                // the week.  Add 1 to get the 1st day of month.  Subtract
+                // getFirstDayOfWeek() to make 0-based.
+                int fdm = absoluteDayToDayOfWeek(dayNumber + 1) - getFirstDayOfWeek();
+                if (fdm < 0) fdm += 7;
+
+                // Find the start of the first week.  This will be a date from
+                // 1..-6.  It represents the locale-specific first day of the
+                // week of the first day of the month, ignoring minimal days in
+                // first week.
+                date = 1 - fdm + internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+
+                if (isSet[WEEK_OF_MONTH])
+                {
+                    // Adjust for minimal days in first week.
+                    if ((7 - fdm) < getMinimalDaysInFirstWeek()) date += 7;
+
+                    // Now adjust for the week number.
+                    date += 7 * (internalGet(WEEK_OF_MONTH) - 1);
+                }
+                else
+                {
+                    // Adjust into the month, if needed.
+                    if (date < 1) date += 7;
+
+                    // We are basing this on the day-of-week-in-month.  The only
+                    // trickiness occurs if the day-of-week-in-month is
+                    // negative.
+                    int dim = internalGet(DAY_OF_WEEK_IN_MONTH);
+                    if (dim >= 0) {
+                        date += 7*(dim - 1);
+                    } else {
+                        // Move date to the last of this day-of-week in this
+                        // month, then back up as needed.  If dim==-1, we don't
+                        // back up at all.  If dim==-2, we back up once, etc.
+                        // Don't back up past the first of the given day-of-week
+                        // in this month.  Note that we handle -2, -3,
+                        // etc. correctly, even though values < -1 are
+                        // technically disallowed.
+                        date += ((monthLength(year, fields[MONTH]) - date) / 7 + dim + 1) * 7;
+                    }
+                }
+            }
+            dayNumber += date;
+        }
+        else if (isSet[DAY_OF_YEAR]) {
+            dayNumber = startOfYear(year) + internalGet(DAY_OF_YEAR);
+        }
+        else if (isSet[DAY_OF_WEEK] && isSet[WEEK_OF_YEAR])
+        {
+            dayNumber = startOfYear(year);
+
+            // Compute from day of week plus week of year
+
+            // Find the day of the week for the first of this year.  This
+            // is zero-based, with 0 being the locale-specific first day of
+            // the week.  Add 1 to get the 1st day of month.  Subtract
+            // getFirstDayOfWeek() to make 0-based.
+            int fdy = absoluteDayToDayOfWeek(dayNumber + 1) - getFirstDayOfWeek();
+            if (fdy < 0) fdy += 7;
+
+            // Find the start of the first week.  This may be a valid date
+            // from 1..7, or a date before the first, from 0..-6.  It
+            // represents the locale-specific first day of the week
+            // of the first day of the year.
+
+            // First ignore the minimal days in first week.
+            date = 1 - fdy + internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+
+            // Adjust for minimal days in first week.
+            if ((7 - fdy) < getMinimalDaysInFirstWeek()) date += 7;
+
+            // Now adjust for the week number.
+            date += 7 * (internalGet(WEEK_OF_YEAR) - 1);
+
+            dayNumber += date;
+        }
+        else {    // Not enough information
+            throw new IllegalArgumentException("Not enough fields set to calculate time");
+        }
+
+        long millis = dayNumber * DAY_MS + EPOCH_MILLIS;
+
+        // Now we can do the time portion of the conversion.
+        int millisInDay = 0;
+
+        // Hours
+        if (isSet[HOUR_OF_DAY])
+            // Don't normalize here; let overflow bump into the next period.
+            // This is consistent with how we handle other fields.
+            millisInDay += internalGet(HOUR_OF_DAY);
+
+        else if (isSet[HOUR])
+        {
+            // Don't normalize here; let overflow bump into the next period.
+            // This is consistent with how we handle other fields.
+            millisInDay += internalGet(HOUR);
+            millisInDay += 12 * internalGet(AM_PM);
+        }
+
+        // Minutes. We use the fact that unset == 0
+        millisInDay *= 60;
+        millisInDay += internalGet(MINUTE);
+
+        // Seconds. unset == 0
+        millisInDay *= 60;
+        millisInDay += internalGet(SECOND);
+
+        // Milliseconds. unset == 0
+        millisInDay *= 1000;
+        millisInDay += internalGet(MILLISECOND);
+
+        // Now add date and millisInDay together, to make millis contain local wall
+        // millis, with no zone or DST adjustments
+        millis += millisInDay;
+
+        //
+        // Compute the time zone offset and DST offset.
+        // Since the TimeZone API expects the Gregorian year, month, etc.,
+        // We have to convert to local Gregorian time in order to
+        // figure out the time zone calculations.  This is a bit slow, but
+        // it saves us from doing some *really* nasty calculations here.
+        //
+        TimeZone zone = getTimeZone();
+        int dstOffset = 0;
+        
+        if (zone.useDaylightTime()) {
+            synchronized(gregorian) {
+                gregorian.setTimeZone(zone);
+                gregorian.setTime(new Date(millis));    // "millis" is local wall clock time
+                dstOffset = gregorian.get(DST_OFFSET);
+            }
+        }
+        // Store our final computed GMT time, with timezone adjustments.
+        time = millis - dstOffset - zone.getRawOffset();
+        isTimeSet = true;
+    }
+
+    /**
+     * Validates the value of the given time field.
+     */
+    private boolean boundsCheck(int value, int field)
+    {
+        return value >= getMinimum(field) && value <= getMaximum(field);
+    }
+
+
+    /**
+     * Validates the values of the set time fields.
+     */
+    private boolean validateFields()
+    {
+        for (int field = 0; field < FIELD_COUNT; field++)
+        {
+            // Ignore DATE and DAY_OF_YEAR which are handled below
+            if (field != DATE &&
+                field != DAY_OF_YEAR &&
+                isSet[field] &&
+                !boundsCheck(internalGet(field), field))
+
+                return false;
+        }
+
+        // Values differ in Least-Maximum and Maximum should be handled
+        // specially.
+        if (isSet[DATE])
+        {
+            int date = internalGet(DATE);
+            return (date >= getMinimum(DATE) &&
+                    date <= monthLength(fields[YEAR], fields[MONTH]));
+        }
+
+        if (isSet[DAY_OF_YEAR])
+        {
+            int days = internalGet(DAY_OF_YEAR);
+
+            if (days < 1 || days > yearLength(internalGet(YEAR)))
+                    return false;
+        }
+
+        if (isSet[YEAR])
+        {
+            int year = internalGet(YEAR);
+            if (year < 1)
+                return false;
+        }
+
+        // Handle DAY_OF_WEEK_IN_MONTH, which must not have the value zero.
+        // We've checked against minimum and maximum above already.
+        if (isSet[DAY_OF_WEEK_IN_MONTH] &&
+            0 == internalGet(DAY_OF_WEEK_IN_MONTH)) return false;
+
+        return true;
+    }
+
+    /**
+     * Convert the time as milliseconds since 1/1/1970 to the Calendar fields
+     * such as YEAR, MONTH and DAY.
+     */
+    protected void computeFields()
+    {
+        if (areFieldsSet) return;
+
+        // The following algorithm only works for dates from the start of the Hebrew
+        // calendar onward.
+        if (time < EPOCH_MILLIS && !isLenient()) {
+            throw new IllegalArgumentException("HebrewCalendar does not handle dates before 1/1/1 AM");
+        }
+
+        //
+        // Compute the time zone offset and DST offset.
+        // Since the TimeZone API expects the Gregorian year, month, etc.,
+        // We have to convert to local Gregorian time in order to
+        // figure out the time zone calculations.  This is a bit slow, but
+        // it saves us from doing some *really* nasty calculations here.
+        //
+        TimeZone zone = getTimeZone();
+        int rawOffset = zone.getRawOffset();
+        int dstOffset = 0;                     // Extra DST offset
+
+        if (zone.useDaylightTime()) {
+            synchronized(gregorian) {
+                gregorian.setTimeZone(zone);
+                gregorian.setTime(new Date(time));
+                dstOffset = gregorian.get(DST_OFFSET);
+            }
+        }
+
+        long localMillis = time + rawOffset + dstOffset;
+
+        // We need to find out which Hebrew year the given time is in.
+        // Once we know that, we find the time when the year started,
+        // and everything else is straightforward
+
+        long epochMillis = localMillis - EPOCH_MILLIS;  // Millis since epoch
+        long d = epochMillis / DAY_MS;                  // Days
+        long m = (d * DAY_PARTS) / MONTH_PARTS;         // Months (approx)
+
+        int year = (int)((19 * m + 234) / 235) + 1;     // Years (approx)
+        long ys  = startOfYear(year);                   // 1st day of year
+        int dayOfYear = (int)(d - ys);
+
+        // Because of the postponement rules, it's possible to guess wrong.  Fix it.
+        while (dayOfYear < 1) {
+            year--;
+            ys  = startOfYear(year);
+            dayOfYear = (int)(d - ys);
+        }
+
+        int dayOfWeek = absoluteDayToDayOfWeek((long)d);
+
+        // Now figure out which month we're in, and the date within that month
+        int yearType = yearType(year);
+        int numDays[][] = isLeapYear(year) ? LEAP_NUM_DAYS : NUM_DAYS;
+
+        int month = 0;
+        while (dayOfYear > numDays[month][yearType]) {
+            month++;
+        }
+        month--;
+        int date = dayOfYear - numDays[month][yearType];
+
+        fields[ERA] = 0;
+        fields[YEAR] = year;
+        fields[MONTH] = month;
+        fields[DATE] = date;
+
+        fields[DAY_OF_YEAR] = dayOfYear;
+        fields[DAY_OF_WEEK] = dayOfWeek;
+
+        fields[WEEK_OF_YEAR] = weekNumber(dayOfYear, dayOfWeek);
+        fields[WEEK_OF_MONTH] = weekNumber(date, dayOfWeek);
+
+        fields[DAY_OF_WEEK_IN_MONTH] = (date-1) / 7 + 1;
+
+        //long days = (long) (localMillis / DAY_MS);
+        //int millisInDay = (int) (localMillis - (days * DAY_MS));
+        //if (millisInDay < 0) millisInDay += DAY_MS;
+        
+        int millisInDay = (int)(localMillis % DAY_MS);
+
+        // Fill in all time-related fields based on millisInDay.
+        fields[MILLISECOND] = millisInDay % 1000;
+        millisInDay /= 1000;
+        fields[SECOND] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[MINUTE] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[HOUR_OF_DAY] = millisInDay;
+        fields[AM_PM] = millisInDay / 12;
+        fields[HOUR] = millisInDay % 12;
+
+        fields[ZONE_OFFSET] = rawOffset;
+        fields[DST_OFFSET] = dstOffset;
+
+        areFieldsSet = true;
+
+        // Careful here: We are manually setting the isSet[] flags to true, so we
+        // must be sure that the above code actually does set all these fields.
+        for (int i=0; i<FIELD_COUNT; ++i) isSet[i] = true;
+    }
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    // Hebrew date calculations are performed in terms of days, hours, and
+    // "parts" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.
+    private static final long HOUR_PARTS = 1080;
+    private static final long DAY_PARTS  = 24*HOUR_PARTS;
+    
+    // An approximate value for the length of a lunar month.
+    // It is used to calculate the approximate year and month of a given
+    // absolute date.
+    static private final int  MONTH_DAYS = 29;
+    static private final long MONTH_FRACT = 12*HOUR_PARTS + 793;
+    static private final long MONTH_PARTS = MONTH_DAYS*DAY_PARTS + MONTH_FRACT;
+    
+    // The time of the new moon (in parts) on 1 Tishri, year 1 (the epoch)
+    // counting from noon on the day before.  BAHARAD is an abbreviation of
+    // Bet (Monday), Hey (5 hours from sunset), Resh-Daled (204).
+    static private final long BAHARAD = 11*HOUR_PARTS + 204;
+
+    /**
+     * Finds the day # of the first day in the given Hebrew year.
+     * To do this, we want to calculate the time of the Tishri 1 new moon
+     * in that year.
+     * <p>
+     * The algorithm here is similar to ones described in a number of
+     * references, including:
+     * <ul>
+     * <li>"Calendrical Calculations", by Nachum Dershowitz & Edward Reingold,
+     *     Cambridge University Press, 1997, pages 85-91.
+     *
+     * <li>Hebrew Calendar Science and Myths,
+     *     <a href="http://www.geocities.com/Athens/1584/">
+     *     http://www.geocities.com/Athens/1584/</a>
+     *
+     * <li>The Calendar FAQ,
+     *      <a href="http://www.pip.dknet.dk/~pip10160/calendar.faq2.txt">
+     *      http://www.pip.dknet.dk/~pip10160/calendar.html</a>
+     * </ul>
+     */
+    private static long startOfYear(int year)
+    {
+        long day = cache.get(year);
+        
+        if (day == CalendarCache.EMPTY) {
+            int months = (235 * year - 234) / 19;           // # of months before year
+
+            long frac = months * MONTH_FRACT + BAHARAD;     // Fractional part of day #
+            day  = months * 29 + (frac / DAY_PARTS);   // Whole # part of calculation
+            frac = frac % DAY_PARTS;                        // Time of day
+
+            int wd = (int)(day % 7);                        // Day of week (0 == Monday)
+
+            if (wd == 2 || wd == 4 || wd == 6) {
+                // If the 1st is on Sun, Wed, or Fri, postpone to the next day
+                day += 1;
+                wd = (int)(day % 7);
+            }
+            if (wd == 1 && frac > 15*HOUR_PARTS+204 && !isLeapYear(year) ) {
+                // If the new moon falls after 3:11:20am (15h204p from the previous noon)
+                // on a Tuesday and it is not a leap year, postpone by 2 days.
+                // This prevents 356-day years.
+                day += 2;
+            }
+            else if (wd == 0 && frac > 21*HOUR_PARTS+589 && isLeapYear(year-1) ) {
+                // If the new moon falls after 9:32:43 1/3am (21h589p from yesterday noon)
+                // on a Monday and *last* year was a leap year, postpone by 1 day.
+                // Prevents 382-day years.
+                day += 1;
+            }
+            cache.put(year, day);
+        }
+        return day;
+    };
+
+    /**
+     * Find the day of the week for a given day
+     *
+     * @param day   The # of days since the start of the Hebrew calendar,
+     *              1-based (i.e. 1/1/1 AM is day 1).
+     */
+    private static int absoluteDayToDayOfWeek(long day)
+    {
+        // We know that 1/1/1 AM is a Monday, which makes the math easy...
+        return (int)(day % 7) + 1;
+    }
+
+    /**
+     * Returns the number of days in the given Hebrew year
+     */
+    private static int yearLength(int year)
+    {
+        return (int)(startOfYear(year+1) - startOfYear(year));
+    }
+
+    /**
+     * Returns the the type of a given year.
+     *  0   "Deficient" year with 353 or 383 days
+     *  1   "Normal"    year with 354 or 384 days
+     *  2   "Complete"  year with 355 or 385 days
+     */
+    private static int yearType(int year)
+    {
+        int yearLength = yearLength(year);
+
+        if (yearLength > 380) {
+           yearLength -= 30;        // Subtract length of leap month.
+        }
+
+        int type = 0;
+
+        switch (yearLength) {
+            case 353:
+                type = 0; break;
+            case 354:
+                type = 1; break;
+            case 355:
+                type = 2; break;
+            default:
+                System.out.println("Illegal year length " + yearLength + " in yearType");
+
+        }
+        return type;
+    }
+
+    /**
+     * Returns the length of the given month in the given year
+     */
+    private static int monthLength(int year, int month)
+    {
+        switch (month) {
+            case HESHVAN:
+            case KISLEV:
+                // These two month lengths can vary
+                return MONTH_LENGTH[month][yearType(year)];
+                
+            default:
+                // The rest are a fixed length
+                return MONTH_LENGTH[month][0];
+        }
+    }
+
+    /**
+     * Determine whether a given Hebrew year is a leap year
+     *
+     * The rule here is that if (year % 19) == 0, 3, 6, 8, 11, 14, or 17.
+     * The formula below performs the same test, believe it or not.
+     */
+    private static boolean isLeapYear(int year)
+    {
+        return (year * 12 + 17) % 19 >= 12;
+    }
+
+    
+    static private void debug(String str) {
+        if (false) {
+            System.out.println(str);
+        }
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/HebrewHoliday.java b/src/com/ibm/util/HebrewHoliday.java
new file mode 100755
index 0000000..95ecd86
--- /dev/null
+++ b/src/com/ibm/util/HebrewHoliday.java
@@ -0,0 +1,66 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/HebrewHoliday.java,v $ 
+ * $Date: 2000/03/10 04:17:58 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+public class HebrewHoliday extends Holiday
+{
+    private static final HebrewCalendar gCalendar = new HebrewCalendar();
+
+    /**
+     * Construct a holiday that falls on Easter Sunday every year
+     *
+     * @param name The name of the holiday
+     */
+    public HebrewHoliday(int month, int date, String name)
+    {
+        this(month, date, 1, name);
+    }
+
+    public HebrewHoliday(int month, int date, int length, String name)
+    {
+        super(name, null);
+
+        SimpleDateRule rule = new SimpleDateRule(month, date);
+        rule.setCalendar(gCalendar);
+
+        setRule(rule);
+    }
+
+    public static HebrewHoliday
+        ROSH_HASHANAH   = new HebrewHoliday(HebrewCalendar.TISHRI,  1,  2,  "Rosh Hashanah"),
+        GEDALIAH        = new HebrewHoliday(HebrewCalendar.TISHRI,  3,      "Fast of Gedaliah"),
+        YOM_KIPPUR      = new HebrewHoliday(HebrewCalendar.TISHRI, 10,      "Yom Kippur"),
+        SUKKOT          = new HebrewHoliday(HebrewCalendar.TISHRI, 15,  6,  "Sukkot"),
+        HOSHANAH_RABBAH = new HebrewHoliday(HebrewCalendar.TISHRI, 21,      "Hoshanah Rabbah"),
+        SHEMINI_ATZERET = new HebrewHoliday(HebrewCalendar.TISHRI, 22,      "Shemini Atzeret"),
+        SIMCHAT_TORAH   = new HebrewHoliday(HebrewCalendar.TISHRI, 23,      "Simchat Torah"),
+        HANUKKAH        = new HebrewHoliday(HebrewCalendar.KISLEV, 25,      "Hanukkah"),
+        TEVET_10        = new HebrewHoliday(HebrewCalendar.TEVET,  10,      "Fast of Tevet 10"),
+        TU_BSHEVAT      = new HebrewHoliday(HebrewCalendar.SHEVAT, 15,      "Tu B'Shevat"),
+        ESTHER          = new HebrewHoliday(HebrewCalendar.ADAR,   13,      "Fast of Esther"),
+        PURIM           = new HebrewHoliday(HebrewCalendar.ADAR,   14,      "Purim"),
+        SHUSHAN_PURIM   = new HebrewHoliday(HebrewCalendar.ADAR,   15,      "Shushan Purim"),
+        PASSOVER        = new HebrewHoliday(HebrewCalendar.NISAN,  15,  8,  "Passover"),
+        YOM_HASHOAH     = new HebrewHoliday(HebrewCalendar.NISAN,  27,      "Yom Hashoah"),
+        YOM_HAZIKARON   = new HebrewHoliday(HebrewCalendar.IYAR,    4,      "Yom Hazikaron"),
+        YOM_HAATZMAUT   = new HebrewHoliday(HebrewCalendar.IYAR,    5,      "Yom Ha'Atzmaut"),
+        PESACH_SHEINI   = new HebrewHoliday(HebrewCalendar.IYAR,   14,      "Pesach Sheini"),
+        LAG_BOMER       = new HebrewHoliday(HebrewCalendar.IYAR,   18,      "Lab B'Omer"),
+        YOM_YERUSHALAYIM= new HebrewHoliday(HebrewCalendar.IYAR,   28,      "Yom Yerushalayim"),
+        SHAVUOT         = new HebrewHoliday(HebrewCalendar.SIVAN,   6,  2,  "Shavuot"),
+        TAMMUZ_17       = new HebrewHoliday(HebrewCalendar.TAMUZ,  17,      "Fast of Tammuz 17"),
+        TISHA_BAV       = new HebrewHoliday(HebrewCalendar.AV,      9,      "Fast of Tisha B'Av"),
+        SELIHOT         = new HebrewHoliday(HebrewCalendar.ELUL,   21,      "Selihot");
+
+}
\ No newline at end of file
diff --git a/src/com/ibm/util/Holiday.java b/src/com/ibm/util/Holiday.java
new file mode 100755
index 0000000..96795f8
--- /dev/null
+++ b/src/com/ibm/util/Holiday.java
@@ -0,0 +1,166 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/Holiday.java,v $ 
+ * $Date: 2000/03/10 04:17:58 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.util.Date;
+import java.util.MissingResourceException;
+
+/**
+ * An abstract class representing a holiday.  This class simply adds
+ * a holiday name to the DateRule interface for calculating the date
+ * of an event.
+ *
+ */
+public abstract class Holiday implements DateRule
+{
+    public static Holiday[] getHolidays()
+    {
+        return getHolidays(Locale.getDefault());
+    }
+
+    public static Holiday[] getHolidays(Locale locale)
+    {
+        Holiday[] result = noHolidays;
+
+        try {
+            ResourceBundle bundle = ResourceBundle.getBundle(
+                                    "com.ibm.util.resources.HolidayBundle",
+                                    locale);
+
+            result = (Holiday[]) bundle.getObject("holidays");
+        }
+        catch (MissingResourceException e) {
+        }
+        return result;
+    }
+
+    /**
+     * Return the first occurrance of this holiday on or after the given date
+     *
+     * @param start Only holidays on or after this date are returned.
+     *
+     * @return      The date on which this holiday occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     */
+    public Date firstAfter(Date start) {
+        return rule.firstAfter(start);
+    }
+
+    /**
+     * Return the first occurrance of this holiday that is on or after
+     * the given start date and before the given end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     */
+    public Date firstBetween(Date start, Date end) {
+        return rule.firstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this holiday falls on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether the holiday and the given date are on the same day.
+     *
+     * @param date  The date to check.
+     * @return      true if this holiday occurs on the given date.
+     *
+     */
+    public boolean isOn(Date date) {
+        //System.out.println(name + ".isOn(" + date.toString() + "):");
+        return rule.isOn(date);
+    }
+
+    /**
+     * Check whether this holiday occurs at least once between the two
+     * dates given.
+     */
+    public boolean isBetween(Date start, Date end) {
+        return rule.isBetween(start, end);
+    }
+
+    /**
+     * Construct a new Holiday object.  This is for use by subclasses only.
+     * This constructs a new holiday with the given name and date rules.
+     *
+     * @param name  The name of this holiday.  The getDisplayName method
+     *              uses this string as a key to look up the holiday's name a
+     *              resource bundle object named HolidayBundle.
+     *
+     * @param rule  The date rules used for determining when this holiday
+     *              falls.  Holiday's implementation of the DateRule inteface
+     *              simply delegates to this DateRule object.
+     */
+    protected Holiday(String name, DateRule rule)
+    {
+        this.name = name;
+        this.rule = rule;
+    }
+
+    /**
+     * Return the name of this holiday in the language of the default locale
+     */
+    public String getDisplayName() {
+        return getDisplayName(Locale.getDefault());
+    }
+
+    /**
+     * Return the name of this holiday in the language of the specified locale
+     * The <code>name</code> parameter passed to this object's constructor is used
+     * as a key to look up the holiday's localized name in a ResourceBundle object
+     * named HolidayBundle.
+     *
+     * @param loc   A locale specifying the language in which the name is desired.
+     *
+     * @see ResourceBundle
+     */
+    public String getDisplayName(Locale locale)
+    {
+        String name = this.name;
+
+        try {
+            ResourceBundle bundle = ResourceBundle.getBundle(
+                                    "com.ibm.util.resources.HolidayBundle",
+                                    locale);
+            name = bundle.getString(name);
+        }
+        catch (MissingResourceException e) {
+            //System.out.println("Using default display name for " + name);
+        }
+        return name;
+    }
+
+    public DateRule getRule() {
+        return rule;
+    }
+
+    public void setRule(DateRule rule) {
+        this.rule = rule;
+    }
+
+    private String      name;
+    private DateRule    rule;
+
+    private static Holiday[] noHolidays = {};
+
+}
diff --git a/src/com/ibm/util/IBMCalendar.java b/src/com/ibm/util/IBMCalendar.java
new file mode 100755
index 0000000..f25f66a
--- /dev/null
+++ b/src/com/ibm/util/IBMCalendar.java
@@ -0,0 +1,1382 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/IBMCalendar.java,v $ 
+ * $Date: 2000/03/10 04:17:58 $ 
+ * $Revision: 1.5 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+import java.util.TimeZone;
+import java.text.MessageFormat;
+import java.text.DateFormat;
+import com.ibm.text.DateFormatSymbols;
+import com.ibm.text.SimpleDateFormat;
+
+
+/**
+ * Calendar utility class.
+ *
+ * The API methods on this class fall into several categories:
+ * <ul>
+ *  <li>Static methods for retrieving {@link java.text.DateFormat} and
+ *      {@link java.text.DateFormatSymbols} objects that match a particular
+ *      subclass of <code>Calendar</code>.
+ *
+ *  <li>Methods that were added to {@link java.util.Calendar Calendar} in JDK 1.2 or that
+ *      we hope to add in a later release.
+ *
+ *  <li>Methods that make <code>Calendar</code> easier to subclass.  This includes
+ *      default implementations for methods declared abstract on Calendar,
+ *      so that subclasses are not forced to implement them.  In addition,
+ *      there are several new utility methods that make it easier for
+ *      subclassers to implement methods such as roll, add, computeTime,
+ *      and computeFields.
+ *  </ul>
+ * <p>
+ * <b>Note:</b> You should always use {@link #roll roll} and {@link #add add} rather
+ * than attempting to perform arithmetic operations directly on the fields
+ * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+ * to have fields with non-linear behavior, for example missing months
+ * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+ * methods will take this into account, while simple arithmetic manipulations
+ * may give invalid results.
+ *  <p>
+ *  <b>Subclassing</b>
+ *  <br>
+ *  It is possible to create subclasses of IBMCalendar that interpret
+ *  dates according to other calendar systems that are not yet supported
+ *  by Sun or IBM.  In order to do so, you must do the following:
+ *  <ul>
+ *  <li>Override {@link #getMinimum getMinimum},
+ *      {@link #getGreatestMinimum getGreatestMinimum},
+ *      {@link #getMaximum getMaximum}, and 
+ *      {@link #getLeastMaximum getLeastMaximum} to return
+ *      appropriate values for the new calendar system.
+ *
+ *  <li>If there are any fields whose minimum or maximum value can vary
+ *      depending on the actual date set in the calendar (e.g. the number
+ *      of days in a month
+ *      varies depending on the month and/or year), you must override
+ *      {@link #getActualMaximum getActualMaximum} and/or
+ *      {@link #getActualMinimum getActualMinimum}
+ *      to take this into account.
+ *
+ *  <li>Override {@link #computeTime computeTime} and {@link #computeFields computeFields}
+ *      to perform the conversion from field values to milliseconds and
+ *      vice-versa.  These two methods are the real heart of any subclass
+ *      and are typically the ones that require the most work.  The protected
+ *      utility method {@link #weekNumber weekNumber} is often helpful when implementing
+ *      these two methods.
+ *
+ *  <li>If there are any fields whose ranges are not always continuous, you
+ *      must override {@link #roll roll} and {@link #add add} to take this
+ *      into account.  For example, in the Hebrew calendar the month "Adar I"
+ *      only occurs in leap years; in other years the calendar jumps from
+ *      Shevat (month #4) to Adar (month #6).  The
+ *      {@link HebrewCalendar#add HebrewCalendar.add} and
+ *      {@link HebrewCalendar#roll HebrewCalendar.roll}
+ *      methods take this into account, so that adding
+ *      1 month to Shevat gives the proper result (Adar) in a non-leap year.
+ *      The protected utility method {@link #pinField pinField} is often useful
+ *      when implementing these two methods.
+ *  </ul>
+ *  See the individual descriptions of the above methods for more information
+ *  on their implications for subclassing.
+ *
+ * @author Laura Werner
+ */
+public abstract class IBMCalendar extends java.util.Calendar {
+
+    private static String copyright = "Copyright \u00a9 1997-1998 IBM Corp. All Rights Reserved.";
+
+    protected IBMCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+    
+    /**
+     * Compare this object to another {@link Calendar} or to a {@link Date}.
+     * <p>
+     * @param when  the {@link Calendar} or {@link Date} object to
+     *              be compared against.
+     *
+     * @return true if this object's absolute time is before that
+     *              represented by <code>when</code>, false otherwise.
+     *
+     * @throws IllegalArgumentException if <code>when</code> is null or is
+     *          not a <code>Calendar</code> or <code>Date</code>.
+     */
+    public boolean before(Object when)
+    {
+        if (this == when) {
+            return false;
+        }
+        else if (when instanceof Calendar) {
+            return getTime().before(((Calendar)when).getTime());
+        }
+        else if (when instanceof Date) {
+            return getTime().before((Date)when);
+        } else {
+            throw new IllegalArgumentException("argument must be a non-null Calendar or Date");
+        }
+    }
+
+    /**
+     * Compare this object to another {@link Calendar} or to a {@link Date}.
+     * <p>
+     * @param when  the {@link Calendar} or {@link Date} object to be compared against.
+     *
+     * @return true if this object's absolute time is after that
+     *              represented by <code>when</code>, false otherwise.
+     *
+     * @throws IllegalArgumentException if <code>when</code> is null or is
+     *          not a <code>Calendar</code> or <code>Date</code>.
+     */
+    public boolean after(Object when)
+    {
+        if (this == when) {
+            return false;
+        }
+        else if (when instanceof Calendar) {
+            return getTime().after(((Calendar)when).getTime());
+        }
+        else if (when instanceof Date) {
+            return getTime().after((Date)when);
+        } else {
+            throw new IllegalArgumentException("argument must be a non-null Calendar or Date");
+        }            
+    }
+
+    /**
+     * Compares this object to another {@link Calendar} and returns <code>true</code>
+     * if they are the same.  Unlike {@link #before before} and {@link #after after},
+     * this method
+     * compares all of the properties of the calendar rather than comparing only
+     * its time in milliseconds.
+     * <p>
+     * @param obj the {@link Calendar} object to compair against.
+     */
+    public boolean equals(Object obj)
+    {
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (this.getClass() != obj.getClass()) return false;
+
+        Calendar that = (Calendar) obj;
+
+        return
+            getTimeInMillis() == that.getTime().getTime() &&
+            isLenient() == that.isLenient() &&
+            getFirstDayOfWeek() == that.getFirstDayOfWeek() &&
+            getMinimalDaysInFirstWeek() == that.getMinimalDaysInFirstWeek() &&
+            getTimeZone().equals(that.getTimeZone());
+    }
+    
+    /**
+     * Return the maximum value that this field could have, given the current date.
+     * For example, with the Gregorian date "Feb 3, 1997" and the
+     * {@link #DAY_OF_MONTH DAY_OF_MONTH} field, the actual
+     * maximum is 28; for "Feb 3, 1996" it is 29.
+     * <p>
+     * <b>Note:</b>This method has been added to {@link java.util.Calendar} in JDK 1.2; it
+     * is provided here so that 1.1 clients can take advantage of it as well.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * For the {@link #WEEK_OF_YEAR WEEK_OF_YEAR}, {@link #WEEK_OF_MONTH WEEK_OF_MONTH},
+     * and {@link #DAY_OF_WEEK_IN_MONTH DAY_OF_WEEK_IN_MONTH} fields, this method
+     * calls <code>getActualMaximum(DAY_OF_YEAR)</code> or
+     * <code>getActualMaximum(DAY_OF_MONTH)</code> and then uses that value in a call to
+     * {@link #weekNumber weekNumber} to determine the result.  However, for all other
+     * fields it iterates between the values returned by
+     * {@link #getLeastMaximum getLeastMaximum} and {@link #getMaximum getMaximum}
+     * to determine the actual maximum value for the field.
+     * <p>
+     * There is almost always a more efficient way to accomplish this,
+     * and thus you should almost always override this method in your subclass.
+     * For most fields, you can simply return the same thing as
+     * {@link #getMaximum getMaximum}.  If your class has an internal method that
+     * calculates the number of days in a month or year, your getActualMaximum override
+     * can use those functions in its implementation.  For fields that you cannot
+     * handle efficiently, you can simply call <code>super.getActualMaximum(field)</code>.
+     * <p>
+     * @param field the field whose maximum is desired
+     *
+     * @return the maximum of the given field for the current date of this calendar
+     *
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     */
+    public int getActualMaximum(int field) {
+        int result;
+        
+        switch (field) {
+            //
+            // For the week-related fields, there's a shortcut.  Since we know the
+            // current DAY_OF_WEEK and DAY_OF_MONTH or DAY_OF_YEAR, we can compute
+            // the the maximum for this field in terms of the maximum DAY_OF_*,
+            // on the theory that's easier to determine.
+            //
+            case WEEK_OF_YEAR:
+                result = weekNumber(getActualMaximum(DAY_OF_YEAR),
+                                    get(DAY_OF_YEAR), get(DAY_OF_WEEK));
+                break;
+                
+            case WEEK_OF_MONTH:
+                result = weekNumber(getActualMaximum(DAY_OF_MONTH),
+                                    get(DAY_OF_MONTH), get(DAY_OF_WEEK));
+                break;
+          
+            case DAY_OF_WEEK_IN_MONTH:
+                int weekLength = getMaximum(DAY_OF_WEEK) - getMinimum(DAY_OF_WEEK) + 1;
+                result = (getActualMaximum(DAY_OF_MONTH) - 1) / weekLength + 1;
+                break;
+            
+            // For all other fields, do it the hard way....
+            default:
+                result = getActualHelper(field, getLeastMaximum(field), getMaximum(field));
+                break;
+        }
+        return result;
+    }
+    
+    /**
+     * Return the minimum value that this field could have, given the current date.
+     * For most fields, this is the same as {@link #getMinimum getMinimum}
+     * and {@link #getGreatestMinimum getGreatestMinimum}.  However, some fields,
+     * especially those related to week number, are more complicated.
+     * <p>
+     * For example, assume {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     * returns 4 and {@link #getFirstDayOfWeek getFirstDayOfWeek} returns SUNDAY.
+     * If the first day of the month is Sunday, Monday, Tuesday, or Wednesday
+     * there will be four or more days in the first week, so it will be week number 1,
+     * and <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 1.  However,
+     * if the first of the month is a Thursday, Friday, or Saturday, there are
+     * <em>not</em> four days in that week, so it is week number 0, and 
+     * <code>getActualMinimum(WEEK_OF_MONTH)</code> will return 0.
+     * <p>
+     * <b>Note:</b>This method has been added to java.util.Calendar in JDK 1.2; it
+     * is provided here so that 1.1 clients can take advantage of it as well.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * For the {@link #WEEK_OF_YEAR WEEK_OF_YEAR}, {@link #WEEK_OF_MONTH WEEK_OF_MONTH},
+     * and {@link #DAY_OF_WEEK_IN_MONTH DAY_OF_WEEK_IN_MONTH} fields, this method
+     * calls <code>getActualMinimum(DAY_OF_YEAR)</code> or
+     * <code>getActualMinimum(DAY_OF_MONTH)</code> and then uses that value in a call to
+     * {@link #weekNumber weekNumber} to determine the result.  However, for all other
+     * fields it iterates between the values returned by
+     * {@link #getMinimum getMinimum} and {@link #getGreatestMinimum getGreatestMinimum}
+     * to determine the actual maximum value for the field.
+     * <p>
+     * There is almost always a more efficient way to accomplish this,
+     * and thus you should almost always override this method in your subclass.
+     * For most fields, you can simply return the same thing as
+     * {@link #getMinimum getMinimum}.  For fields that you cannot
+     * handle efficiently, you can simply call <code>super.getActualMaximum(field)</code>.
+     * <p>
+     * @param field the field whose actual minimum value is desired.
+     * @return the minimum of the given field for the current date of this calendar
+     *
+     * @see #getMinimum
+     * @see #getGreatestMinimum
+     */
+    public int getActualMinimum(int field) {
+        int result;
+        
+        switch (field) {
+            //
+            // For the week-related fields, there's a shortcut.  Since we know the
+            // current DAY_OF_WEEK and DAY_OF_MONTH or DAY_OF_YEAR, we can compute
+            // the the maximum for this field in terms of the maximum DAY_OF_*,
+            // on the theory that's easier to determine.
+            //
+            case WEEK_OF_YEAR:
+                result = weekNumber(getActualMinimum(DAY_OF_YEAR),
+                                    get(DAY_OF_YEAR), get(DAY_OF_WEEK));
+                break;
+                
+            case WEEK_OF_MONTH:
+                result = weekNumber(getActualMinimum(DAY_OF_MONTH),
+                                    get(DAY_OF_MONTH), get(DAY_OF_WEEK));
+                break;
+          
+            case DAY_OF_WEEK_IN_MONTH:
+                int weekLength = getMaximum(DAY_OF_WEEK) - getMinimum(DAY_OF_WEEK) + 1;
+                result = (getActualMinimum(DAY_OF_MONTH) - 1) / weekLength + 1;
+                break;
+            
+            // For all other fields, do it the hard way....
+            default:
+                result = getActualHelper(field, getGreatestMinimum(field), getMinimum(field));
+                break;
+        }
+        return result;
+    }
+
+    private int getActualHelper(int field, int startValue, int endValue)
+    {
+        int result = startValue;
+        
+        if (startValue == endValue) {
+            // if we know that the maximum value is always the same, just return it
+            result = startValue;
+        } 
+        else if (startValue != endValue) {
+            // clone the calendar so we don't mess with the real one, and set it to
+            // accept anything for the field values
+            Calendar work = (Calendar)this.clone();
+            work.setLenient(true);
+
+            //
+            // now try each value from the start to the end one by one until
+            // we get a value that normalizes to another value.  The last value that
+            // normalizes to itself is the actual maximum for the current date
+            //
+            int delta = (endValue > startValue) ? 1 : -1;
+            
+            startValue += delta;
+            result = startValue;
+
+            while (result != endValue) {
+                work.set(field, startValue);
+                if (work.get(field) != startValue) {
+                    break;
+                } else {
+                    result = startValue;
+                    startValue += delta;
+                }
+            }
+        }
+        return result;
+    }
+    
+    /**
+     * Rolls (up/down) a single unit of time on the given field.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling. For
+     * example, to roll the current date up by one day, you can call:
+     * <p>
+     * <code>roll({@link #DATE}, true)</code>
+     * <p>
+     * When rolling on the {@link #YEAR} field, it will roll the year
+     * value in the range between 1 and the value returned by calling
+     * {@link #getMaximum getMaximum}({@link #YEAR}).
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the <code>MONTH</code> field
+     * for the Gregorian date 1/31/96 upward, the <code>DAY_OF_MONTH</code> field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * <b>Note:</b> Calling <tt>roll(field, true)</tt> N times is <em>not</em>
+     * necessarily equivalent to calling <tt>roll(field, N)</tt>.  For example,
+     * imagine that you start with the date Gregorian date January 31, 1995.  If you call
+     * <tt>roll(Calendar.MONTH, 2)</tt>, the result will be March 31, 1995.
+     * But if you call <tt>roll(Calendar.MONTH, true)</tt>, the result will be
+     * February 28, 1995.  Calling it one more time will give March 28, 1995, which
+     * is usually not the desired result.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * @param field the calendar field to roll.
+     *
+     * @param up    indicates if the value of the specified time field is to be
+     *              rolled up or rolled down. Use <code>true</code> if rolling up,
+     *              <code>false</code> otherwise.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     * @see #add
+     */
+    public final void roll(int field, boolean up)
+    {
+        roll(field, up ? +1 : -1);
+    }
+
+    /**
+     * Rolls (up/down) a specified amount time on the given field.  For
+     * example, to roll the current date up by three days, you can call
+     * <code>roll(Calendar.DATE, 3)</code>.  If the
+     * field is rolled past its maximum allowable value, it will "wrap" back
+     * to its minimum and continue rolling.  
+     * For example, calling <code>roll(Calendar.DATE, 10)</code>
+     * on a Gregorian calendar set to 4/25/96 will result in the date 4/5/96.
+     * <p>
+     * When rolling on certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when rolling the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96 by +1, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>IBMCalendar</code> implementation of this method is able to roll
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>roll</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>roll</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and {@link #getActualMaximum getActualMaximum}.
+     * For most such fields, simple addition, subtraction, and modulus operations
+     * are sufficient to perform the roll.  For week-related fields,
+     * the results of {@link #getFirstDayOfWeek getFirstDayOfWeek} and
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} are also necessary.
+     * Subclasses can override these two methods if their values differ from the defaults.
+     * <p>
+     * Subclasses that have fields for which the assumption of continuity breaks
+     * down must overide <code>roll</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The 
+     * {@link HebrewCalendar#roll HebrewCalendar.roll} method takes this into account,
+     * so that rolling the month of Shevat by one gives the proper result (Adar) in a
+     * non-leap year.
+     * <p>
+     * @param field     the calendar field to roll.
+     * @param amount    the amount by which the field should be rolled.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, boolean)
+     * @see #add
+     */
+    public void roll(int field, int amount)
+    {
+        if (amount == 0) return; // Nothing to do
+
+        complete();
+
+        switch (field) {
+        case DAY_OF_MONTH:
+        case AM_PM:
+        case MINUTE:
+        case SECOND:
+        case MILLISECOND:
+            // These are the standard roll instructions.  These work for all
+            // simple cases, that is, cases in which the limits are fixed, such
+            // as the hour, the day of the month, and the era.
+            {
+                int min = getActualMinimum(field);
+                int max = getActualMaximum(field);
+                int gap = max - min + 1;
+
+                int value = internalGet(field) + amount;
+                value = (value - min) % gap;
+                if (value < 0) value += gap;
+                value += min;
+
+                set(field, value);
+                return;
+            }
+
+        case HOUR:
+        case HOUR_OF_DAY:
+            // Rolling the hour is difficult on the ONSET and CEASE days of
+            // daylight savings.  For example, if the change occurs at
+            // 2 AM, we have the following progression:
+            // ONSET: 12 Std -> 1 Std -> 3 Dst -> 4 Dst
+            // CEASE: 12 Dst -> 1 Dst -> 1 Std -> 2 Std
+            // To get around this problem we don't use fields; we manipulate
+            // the time in millis directly.
+            {
+                // Assume min == 0 in calculations below
+                Date start = getTime();
+                int oldHour = internalGet(field);
+                int max = getActualMaximum(field);
+                int newHour = (oldHour + amount) % (max + 1);
+                if (newHour < 0) {
+                    newHour += max + 1;
+                }
+                setTime(new Date(start.getTime() + HOUR_MS * (newHour - oldHour)));
+                return;
+            }
+
+        case MONTH:
+            // Rolling the month involves both pinning the final value
+            // and adjusting the DAY_OF_MONTH if necessary.  We only adjust the
+            // DAY_OF_MONTH if, after updating the MONTH field, it is illegal.
+            // E.g., <jan31>.roll(MONTH, 1) -> <feb28> or <feb29>.
+            {
+                int max = getActualMaximum(MONTH);
+                int mon = (internalGet(MONTH) + amount) % (max+1);
+                
+                if (mon < 0) mon += (max + 1);
+                set(MONTH, mon);
+                
+                // Keep the day of month in range.  We don't want to spill over
+                // into the next month; e.g., we don't want jan31 + 1 mo -> feb31 ->
+                // mar3.
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+
+        case YEAR:
+            // Rolling the year can involve pinning the DAY_OF_MONTH.
+            set(YEAR, internalGet(YEAR) + amount);
+            pinField(MONTH);
+            pinField(DAY_OF_MONTH);
+            return;
+
+        case WEEK_OF_MONTH:
+            {
+                // This is tricky, because during the roll we may have to shift
+                // to a different day of the week.  For example:
+
+                //    s  m  t  w  r  f  s
+                //          1  2  3  4  5
+                //    6  7  8  9 10 11 12
+
+                // When rolling from the 6th or 7th back one week, we go to the
+                // 1st (assuming that the first partial week counts).  The same
+                // thing happens at the end of the month.
+
+                // The other tricky thing is that we have to figure out whether
+                // the first partial week actually counts or not, based on the
+                // minimal first days in the week.  And we have to use the
+                // correct first day of the week to delineate the week
+                // boundaries.
+
+                // Here's our algorithm.  First, we find the real boundaries of
+                // the month.  Then we discard the first partial week if it
+                // doesn't count in this locale.  Then we fill in the ends with
+                // phantom days, so that the first partial week and the last
+                // partial week are full weeks.  We then have a nice square
+                // block of weeks.  We do the usual rolling within this block,
+                // as is done elsewhere in this method.  If we wind up on one of
+                // the phantom days that we added, we recognize this and pin to
+                // the first or the last day of the month.  Easy, eh?
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the month.
+                int fdm = (dow - internalGet(DAY_OF_MONTH) + 1) % 7;
+                if (fdm < 0) fdm += 7;
+
+                // Get the first day of the first full week of the month,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdm) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdm; // Skip the first partial week
+                else
+                    start = 1 - fdm; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the month.
+                int monthLen = getActualMaximum(DAY_OF_MONTH);
+                int ldm = (monthLen - internalGet(DAY_OF_MONTH) + dow) % 7;
+                // We know monthLen >= DAY_OF_MONTH so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular month; that
+                // is, the day which is one past the last day of the month,
+                // after the month has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = monthLen + 7 - ldm;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_month = (internalGet(DAY_OF_MONTH) + amount*7 -
+                                    start) % gap;
+                if (day_of_month < 0) day_of_month += gap;
+                day_of_month += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_month < 1) day_of_month = 1;
+                if (day_of_month > monthLen) day_of_month = monthLen;
+
+                // Set the DAY_OF_MONTH.  We rely on the fact that this field
+                // takes precedence over everything else (since all other fields
+                // are also set at this point).  If this fact changes (if the
+                // disambiguation algorithm changes) then we will have to unset
+                // the appropriate fields here so that DAY_OF_MONTH is attended
+                // to.
+                set(DAY_OF_MONTH, day_of_month);
+                return;
+            }
+        case WEEK_OF_YEAR:
+            {
+                // This follows the outline of WEEK_OF_MONTH, except it applies
+                // to the whole year.  Please see the comment for WEEK_OF_MONTH
+                // for general notes.
+
+                // Normalize the DAY_OF_WEEK so that 0 is the first day of the week
+                // in this locale.  We have dow in 0..6.
+                int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (dow < 0) dow += 7;
+
+                // Find the day of the week (normalized for locale) for the first
+                // of the year.
+                int fdy = (dow - internalGet(DAY_OF_YEAR) + 1) % 7;
+                if (fdy < 0) fdy += 7;
+
+                // Get the first day of the first full week of the year,
+                // including phantom days, if any.  Figure out if the first week
+                // counts or not; if it counts, then fill in phantom days.  If
+                // not, advance to the first real full week (skip the partial week).
+                int start;
+                if ((7 - fdy) < getMinimalDaysInFirstWeek())
+                    start = 8 - fdy; // Skip the first partial week
+                else
+                    start = 1 - fdy; // This may be zero or negative
+
+                // Get the day of the week (normalized for locale) for the last
+                // day of the year.
+                int yearLen = getActualMaximum(DAY_OF_YEAR);
+                int ldy = (yearLen - internalGet(DAY_OF_YEAR) + dow) % 7;
+                // We know yearLen >= DAY_OF_YEAR so we skip the += 7 step here.
+
+                // Get the limit day for the blocked-off rectangular year; that
+                // is, the day which is one past the last day of the year,
+                // after the year has already been filled in with phantom days
+                // to fill out the last week.  This day has a normalized DOW of 0.
+                int limit = yearLen + 7 - ldy;
+
+                // Now roll between start and (limit - 1).
+                int gap = limit - start;
+                int day_of_year = (internalGet(DAY_OF_YEAR) + amount*7 -
+                                    start) % gap;
+                if (day_of_year < 0) day_of_year += gap;
+                day_of_year += start;
+
+                // Finally, pin to the real start and end of the month.
+                if (day_of_year < 1) day_of_year = 1;
+                if (day_of_year > yearLen) day_of_year = yearLen;
+
+                // Make sure that the year and day of year are attended to by
+                // clearing other fields which would normally take precedence.
+                // If the disambiguation algorithm is changed, this section will
+                // have to be updated as well.
+                set(DAY_OF_YEAR, day_of_year);
+                clear(MONTH);
+                return;
+            }
+        case DAY_OF_YEAR:
+            {
+                // Roll the day of year using millis.  Compute the millis for
+                // the start of the year, and get the length of the year.
+                long delta = amount * DAY_MS; // Scale up from days to millis
+                long min2 = time - (internalGet(DAY_OF_YEAR) - 1) * DAY_MS;
+                int yearLength = getActualMaximum(DAY_OF_YEAR);
+                time = (time + delta - min2) % (yearLength*DAY_MS);
+                if (time < 0) time += yearLength*DAY_MS;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK:
+            {
+                // Roll the day of week using millis.  Compute the millis for
+                // the start of the week, using the first day of week setting.
+                // Restrict the millis to [start, start+7days).
+                long delta = amount * DAY_MS; // Scale up from days to millis
+                // Compute the number of days before the current day in this
+                // week.  This will be a value 0..6.
+                int leadDays = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+                if (leadDays < 0) leadDays += 7;
+                long min2 = time - leadDays * DAY_MS;
+                time = (time + delta - min2) % WEEK_MS;
+                if (time < 0) time += WEEK_MS;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        case DAY_OF_WEEK_IN_MONTH:
+            {
+                // Roll the day of week in the month using millis.  Determine
+                // the first day of the week in the month, and then the last,
+                // and then roll within that range.
+                long delta = amount * WEEK_MS; // Scale up from weeks to millis
+                // Find the number of same days of the week before this one
+                // in this month.
+                int preWeeks = (internalGet(DAY_OF_MONTH) - 1) / 7;
+                // Find the number of same days of the week after this one
+                // in this month.
+                int postWeeks = (getActualMaximum(DAY_OF_MONTH) -
+                                 internalGet(DAY_OF_MONTH)) / 7;
+                // From these compute the min and gap millis for rolling.
+                long min2 = time - preWeeks * WEEK_MS;
+                long gap2 = WEEK_MS * (preWeeks + postWeeks + 1); // Must add 1!
+                // Roll within this range
+                time = (time + delta - min2) % gap2;
+                if (time < 0) time += gap2;
+                setTimeInMillis(time + min2);
+                return;
+            }
+        default:
+            // Other fields cannot be rolled by this method
+            throw new IllegalArgumentException("IBMCalendar.roll: field not supported");
+        }
+    }
+    
+    /**
+     * Add a signed amount to a specified field, using this calendar's rules.
+     * For example, to add three days to the current date, you can call
+     * <code>add(Calendar.DATE, 3)</code>. 
+     * <p>
+     * When adding to certain fields, the values of other fields may conflict and
+     * need to be changed.  For example, when adding one to the {@link #MONTH MONTH} field
+     * for the Gregorian date 1/31/96, the {@link #DAY_OF_MONTH DAY_OF_MONTH} field
+     * must be adjusted so that the result is 2/29/96 rather than the invalid
+     * 2/31/96.
+     * <p>
+     * The <code>IBMCalendar</code> implementation of this method is able to add to
+     * all fields except for {@link #ERA ERA}, {@link #DST_OFFSET DST_OFFSET},
+     * and {@link #ZONE_OFFSET ZONE_OFFSET}.  Subclasses may, of course, add support for
+     * additional fields in their overrides of <code>add</code>.
+     * <p>
+     * <b>Note:</b> You should always use <tt>roll</tt> and <tt>add</tt> rather
+     * than attempting to perform arithmetic operations directly on the fields
+     * of a <tt>Calendar</tt>.  It is quite possible for <tt>Calendar</tt> subclasses
+     * to have fields with non-linear behavior, for example missing months
+     * or days during non-leap years.  The subclasses' <tt>add</tt> and <tt>roll</tt>
+     * methods will take this into account, while simple arithmetic manipulations
+     * may give invalid results.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * This implementation of <code>add</code> assumes that the behavior of the
+     * field is continuous between its minimum and maximum, which are found by
+     * calling {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum}.
+     * For such fields, simple arithmetic operations are sufficient to
+     * perform the add.
+     * <p>
+     * Subclasses that have fields for which this assumption of continuity breaks
+     * down must overide <code>add</code> to handle those fields specially.
+     * For example, in the Hebrew calendar the month "Adar I"
+     * only occurs in leap years; in other years the calendar jumps from
+     * Shevat (month #4) to Adar (month #6).  The 
+     * {@link HebrewCalendar#add HebrewCalendar.add} method takes this into account,
+     * so that adding one month
+     * to a date in Shevat gives the proper result (Adar) in a non-leap year.
+     * <p>
+     * @param field     the time field.
+     * @param amount    the amount to add to the field.
+     *
+     * @exception   IllegalArgumentException if the field is invalid or refers
+     *              to a field that cannot be handled by this method.
+     * @see #roll(int, int)
+     */
+    public void add(int field, int amount)
+    {
+        if (amount == 0) return;   // Do nothing!
+
+        long delta = amount;
+
+        switch (field) {
+        case YEAR:
+            {
+                int year = get(YEAR) + amount;
+                set(YEAR, year);
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+        
+        case MONTH:
+            // About the best we can do for a default implementation is
+            // assume a constant number of months per year.  Subclasses
+            // with a variable number of months will have to do this
+            // one themselves
+            {
+                int month = this.get(MONTH) + amount;
+                int year = get(YEAR);
+                int length = getMaximum(MONTH) + 1;
+                
+                if (month >= 0) {
+                    set(YEAR, year + month/length);
+                    set(MONTH, month % length);
+                } else {
+                    set(YEAR, year + (month + 1)/length - 1);
+                    month %= length;
+                    if (month < 0) {
+                        month += length;
+                    }
+                    set(MONTH, month);
+                }
+                pinField(DAY_OF_MONTH);
+                return;
+            }
+            
+        case WEEK_OF_YEAR:
+        case WEEK_OF_MONTH:
+        case DAY_OF_WEEK_IN_MONTH:
+            delta *= WEEK_MS;
+            break;
+
+        case AM_PM:
+            delta *= 12 * HOUR_MS;
+            break;
+
+        case DAY_OF_MONTH:
+        case DAY_OF_YEAR:
+        case DAY_OF_WEEK:
+            delta *= DAY_MS;
+            break;
+
+        case HOUR_OF_DAY:
+        case HOUR:
+            delta *= HOUR_MS;
+            break;
+
+        case MINUTE:
+            delta *= MINUTE_MS;
+            break;
+
+        case SECOND:
+            delta *= SECOND_MS;
+            break;
+
+        case MILLISECOND:
+            break;
+
+        default:
+            throw new IllegalArgumentException("IBMCalendar.add: field not supported");
+        }
+        setTimeInMillis(getTimeInMillis() + delta);
+    }
+
+    
+    /**
+     * Return the name of this calendar in the language of the given locale.
+     */
+    public String getDisplayName(Locale loc) {
+        return this.getClass().getName();
+    }
+    
+    //-------------------------------------------------------------------------
+    // Public static interface for creating custon DateFormats for different
+    // types of Calendars.
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date format is desired.
+     *
+     * @see java.text.DateFormat#getDateInstance
+     */
+    static public DateFormat getDateFormat(Calendar cal, int dateStyle, Locale locale)
+    {
+        return getDateTimeFormat(cal, locale, dateStyle, -1);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the time format is desired.
+     *
+     * @see java.text.DateFormat#getTimeInstance
+     */
+    static public DateFormat getTimeFormat(Calendar cal, int timeStyle, Locale locale)
+    {
+        return getDateTimeFormat(cal, locale, -1, timeStyle);
+    }
+    
+    /**
+     * Create a {@link DateFormat} object that can be used to format dates and times in
+     * the calendar system specified by <code>cal</code>.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replaced by a new overload of {@link DateFormat#getInstance}.
+     * <p>
+     * @param cal   The calendar system for which a date/time format is desired.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *              {@link DateFormat#SHORT}, {@link DateFormat#MEDIUM},
+     *              etc.
+     *
+     * @param locale The locale for which the date/time format is desired.
+     *
+     * @see java.text.DateFormat#getDateTimeInstance
+     */
+    static public DateFormat getDateTimeFormat(Calendar cal, int dateStyle,
+                                        int timeStyle, Locale locale)
+    {
+        return getDateTimeFormat(cal, locale, dateStyle, timeStyle);
+    }
+
+    /**
+     * Get the {@link DateFormatSymbols} object that should be used to format a
+     * calendar system's dates in the given locale.
+     * <p>
+     * <b>Note:</b> When this functionality is moved into the core JDK, this method
+     * will probably be replace by a new constructor on <tt>DateFormatSymbols</tt>.
+     * <p>
+     * <b>Subclassing:</b><br>
+     * When creating a new Calendar subclass, you must create the
+     * {@link ResourceBundle ResourceBundle}
+     * containing its {@link DateFormatSymbols DateFormatSymbols} in a specific place.
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.util.HebrewCalendar"
+     * is "com.ibm.util.resources.HebrewCalendarSymbols".
+     * <p>
+     * Within the ResourceBundle, this method searches for five keys: 
+     * <ul>
+     * <li><b>DayNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>DAY_OF_WEEK</code> field.  Even though
+     *      <code>DAY_OF_WEEK</code> starts with <code>SUNDAY</code> = 1,
+     *      This array is 0-based; the name for Sunday goes in the
+     *      first position, at index 0.  If this key is not found
+     *      in the bundle, the day names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>DayAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "DayNames" array.  If this key
+     *      is not found in the resource bundle, the "DayNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>MonthNames</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>MONTH</code> field.  If this key is not found
+     *      in the bundle, the month names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     *
+     * <li><b>MonthAbbreviations</b> -
+     *      An array of abbreviated day names corresponding
+     *      to the values in the "MonthNames" array.  If this key
+     *      is not found in the resource bundle, the "MonthNames"
+     *      values are used instead.  If neither key is found,
+     *      the day abbreviations are inherited from the default
+     *      <code>DateFormatSymbols</code> for the locale.
+     *
+     * <li><b>Eras</b> -
+     *      An array of strings corresponding to each possible
+     *      value of the <code>ERA</code> field.  If this key is not found
+     *      in the bundle, the era names are inherited from the
+     *      default <code>DateFormatSymbols</code> for the requested locale.
+     * </ul>
+     * <p>
+     * @param cal       The calendar system whose date format symbols are desired.
+     * @param locale    The locale whose symbols are desired.
+     *
+     * @see java.text.DateFormatSymbols#DateFormatSymbols(java.util.Locale)
+     */
+    static public DateFormatSymbols getDateFormatSymbols(Calendar cal,
+                                                         Locale locale)
+    {
+        ResourceBundle bundle = null;
+        try {
+            bundle = getDateFormatBundle(cal, locale);
+        }
+        catch (MissingResourceException e) {
+            if (!(cal instanceof GregorianCalendar)) {
+                // Ok for symbols to be missing for a Gregorian calendar, but
+                // not for any other type.
+                throw e;
+            }
+        }
+        return getDateFormatSymbols(null, bundle, locale);
+    }
+
+    /**
+     * Fetch a custom calendar's DateFormatSymbols out of the given resource
+     * bundle.  Symbols that are not overridden are inherited from the
+     * default DateFormatSymbols for the locale.
+     * @see java.text.DateFormatSymbols#DateFormatSymbols
+     */
+    static protected DateFormatSymbols getDateFormatSymbols(DateFormatSymbols result,
+                                                            ResourceBundle bundle,
+                                                            Locale locale)
+    {
+        // Get the default symbols for the locale, since most calendars will only
+        // need to override month names and will want everything else the same
+        if (result == null) {
+            result = new DateFormatSymbols(locale);
+        }
+
+        //
+        // Fetch the day names from the resource bundle.  If they're not found,
+        // it's ok; we'll just use the default ones.
+        // Allow a null ResourceBundle just for the sake of completeness;
+        // this is useful for calendars that don't have any overridden symbols
+        //
+        if (bundle != null) {
+            try {
+                String[] temp = bundle.getStringArray("DayNames");
+                result.setWeekdays(temp);
+                result.setShortWeekdays(temp);
+
+                temp = bundle.getStringArray("DayAbbreviations");
+                result.setShortWeekdays( temp );
+            }
+            catch (MissingResourceException e) {
+            }
+
+            try {
+                String[] temp = bundle.getStringArray("MonthNames");
+                result.setMonths( temp );
+                result.setShortMonths( temp );
+
+                temp = bundle.getStringArray("MonthAbbreviations");
+                result.setShortMonths( temp );
+            }
+            catch (MissingResourceException e) {
+            }
+
+            try {
+                String[] temp = bundle.getStringArray("Eras");
+                result.setEras( temp );
+            }
+            catch (MissingResourceException e) {
+            }
+        }
+        return result;
+    }
+
+    protected DateFormatSymbols getDateFormatSymbols(Locale locale) {
+        return getDateFormatSymbols(null, getDateFormatBundle(this, locale), locale);
+    }
+    
+    /**
+     * Private utility method to retrive a date and/or time format
+     * for the specified calendar and locale.  This method has knowledge of
+     * (and is partly copied from) the corresponding code in SimpleDateFormat,
+     * but it knows how to find the right resource bundle based on the calendar class.
+     * <p>
+     * @param cal       The calendar system whose date/time format is desired.
+     *
+     * @param timeStyle The type of time format desired.  This can be
+     *                  <code>DateFormat.SHORT</code>, etc, or -1 if the time
+     *                  of day should not be included in the format.
+     *
+     * @param dateStyle The type of date format desired.  This can be
+     *                  <code>DateFormat.SHORT</code>, etc, or -1 if the date
+     *                  should not be included in the format.
+     *
+     * @param loc       The locale for which the date/time format is desired.
+     *
+     * @see java.text.DateFormat#getDateTimeInstance
+     */
+    static private DateFormat getDateTimeFormat(Calendar cal, Locale loc,
+                                            int dateStyle, int timeStyle)
+    {
+        if (cal instanceof IBMCalendar) {
+            return ((IBMCalendar)cal).getDateTimeFormat(dateStyle,timeStyle,loc);
+        } else {
+            return formatHelper(cal, loc, dateStyle, timeStyle);
+        }
+    }
+    
+    protected DateFormat getDateTimeFormat(int dateStyle, int timeStyle, Locale loc) {
+        return formatHelper(this, loc, dateStyle, timeStyle);
+    }
+    
+    static private DateFormat formatHelper(Calendar cal, Locale loc,
+                                            int dateStyle, int timeStyle)
+    {
+        // See if there are any custom resources for this calendar
+        // If not, just use the default DateFormat
+        DateFormat result = null;
+        DateFormatSymbols symbols = null;
+
+        ResourceBundle bundle = getDateFormatBundle(cal, loc);
+
+        if (bundle != null) {
+            if (cal instanceof IBMCalendar) {
+                symbols = ((IBMCalendar)cal).getDateFormatSymbols(loc);
+            } else {
+                symbols = getDateFormatSymbols(null, bundle, loc);
+            }
+            
+            try {
+                String[] patterns = bundle.getStringArray("DateTimePatterns");
+
+                String pattern = null;
+                if ((timeStyle >= 0) && (dateStyle >= 0)) {
+                    Object[] dateTimeArgs = { patterns[timeStyle],
+                                             patterns[dateStyle + 4] };
+                    pattern = MessageFormat.format(patterns[8], dateTimeArgs);
+                }
+                else if (timeStyle >= 0) {
+                    pattern = patterns[timeStyle];
+                }
+                else if (dateStyle >= 0) {
+                    pattern = patterns[dateStyle + 4];
+                }
+                else {
+                    throw new IllegalArgumentException("No date or time style specified");
+                }
+                result = new SimpleDateFormat(pattern, symbols);
+            } catch (MissingResourceException e) {
+                // No custom patterns
+                if (dateStyle == -1) {
+	                result = SimpleDateFormat.getTimeInstance(timeStyle, loc);
+	            } else if (timeStyle == -1) {
+	                result = SimpleDateFormat.getDateInstance(dateStyle, loc);
+	            } else {
+	                result = SimpleDateFormat.getDateTimeInstance(dateStyle, timeStyle, loc);
+	            }
+                ((java.text.SimpleDateFormat)result).setDateFormatSymbols(oldStyleSymbols(symbols, loc));
+            }
+        } else {
+            if (dateStyle == -1) {
+	            result = SimpleDateFormat.getTimeInstance(timeStyle, loc);
+	        } else if (timeStyle == -1) {
+	            result = SimpleDateFormat.getDateInstance(dateStyle, loc);
+	        } else {
+	            result = SimpleDateFormat.getDateTimeInstance(dateStyle, timeStyle, loc);
+	        }
+        }
+        result.setCalendar(cal);
+        return result;
+    }
+    
+    private static final java.text.DateFormatSymbols oldStyleSymbols(DateFormatSymbols syms, Locale loc) {
+        java.text.DateFormatSymbols result = new java.text.DateFormatSymbols(loc);
+        result.setAmPmStrings(syms.getAmPmStrings());
+        result.setEras(syms.getEras());
+        result.setLocalPatternChars(syms.getLocalPatternChars());
+        result.setMonths(syms.getMonths());
+        result.setShortMonths(syms.getShortMonths());
+        result.setShortWeekdays(syms.getShortWeekdays());
+        result.setWeekdays(syms.getWeekdays());
+        result.setZoneStrings(syms.getZoneStrings());
+        return result;
+    }
+
+    /**
+     * Find the ResourceBundle containing the date format information for
+     * a specified calendar subclass in a given locale.
+     * <p>
+     * The resource bundle name is based on the calendar's fully-specified
+     * class name, with ".resources" inserted at the end of the package name
+     * (just before the class name) and "Symbols" appended to the end.
+     * For example, the bundle corresponding to "com.ibm.util.HebrewCalendar"
+     * is "com.ibm.util.resources.HebrewCalendarSymbols".
+     */
+    static protected ResourceBundle getDateFormatBundle(Calendar cal, Locale locale)
+                                  throws MissingResourceException
+    {
+        // Find the calendar's class name, which we're going to use to construct the
+        // resource bundle name.
+        String fullName = cal.getClass().getName();
+        int lastDot = fullName.lastIndexOf('.');
+        String className = fullName.substring(lastDot+1);
+
+        // The name of the ResourceBundle itself is the calendar's fully-qualified
+        // name, with ".resources" inserted in the package and "Symbols" appended
+        String bundleName = fullName.substring(0, lastDot+1) + "resources."
+                                + className + "Symbols";
+        
+        ResourceBundle result = null;
+        try {
+            result = ResourceBundle.getBundle(bundleName, locale);
+        }
+        catch (MissingResourceException e) {
+            if (!(cal instanceof GregorianCalendar)) {
+                // Ok for symbols to be missing for a Gregorian calendar, but
+                // not for any other type.
+                throw e;
+            }
+        }
+        return result;
+    }
+    
+
+    //-------------------------------------------------------------------------
+    // Protected utility methods for use by subclasses.  These are very handy
+    // for implementing add, roll, and computeFields.
+    //-------------------------------------------------------------------------
+    
+    /**
+     * Adjust the specified field so that it is within
+     * the allowable range for the date to which this calendar is set.
+     * For example, in a Gregorian calendar pinning the {@link #DAY_OF_MONTH DAY_OF_MONTH}
+     * field for a calendar set to April 31 would cause it to be set
+     * to April 30.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This utility method is intended for use by subclasses that need to implement
+     * their own overrides of {@link #roll roll} and {@link #add add}.
+     * <p>
+     * <b>Note:</b>
+     * <code>pinField</code> is implemented in terms of
+     * {@link #getActualMinimum getActualMinimum}
+     * and {@link #getActualMaximum getActualMaximum}.  If either of those methods uses
+     * a slow, iterative algorithm for a particular field, it would be
+     * unwise to attempt to call <code>pinField</code> for that field.  If you
+     * really do need to do so, you should override this method to do
+     * something more efficient for that field.
+     * <p>
+     * @param field The calendar field whose value should be pinned.
+     *
+     * @see #getActualMinimum
+     * @see #getActualMaximum
+     */
+    protected void pinField(int field) {
+        int max = getActualMaximum(field);
+        int min = getActualMinimum(field);
+        
+        if (fields[field] > max) {
+            set(field, max);
+        } else if (fields[field] < min) {
+            set(fields[field], min);
+        }
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1, then 
+     * the week number will be zero for those
+     * initial days. This method requires the day number and day of week for some
+     * known date in the period in order to determine the day of week 
+     * on the desired day.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * This variant is handy for computing the week number of some other
+     * day of a period (often the first or last day of the period) when its day
+     * of the week is not known but the day number and day of week for some other
+     * day in the period (e.g. the current date) <em>is</em> known.
+     * <p>
+     * @param desiredDay    The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *              {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *              Should be 1 for the first day of the period.
+     *
+     * @param knownDayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR}
+     *              or {@link #DAY_OF_MONTH DAY_OF_MONTH} for a day in the period whose
+     *              {@link #DAY_OF_WEEK DAY_OF_WEEK} is specified by the
+     *              <code>knownDayOfWeek</code> parameter.
+     *              Should be 1 for first day of period.
+     *
+     * @param knownDayOfWeek  The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *              corresponding to the <code>knownDayOfPeriod</code> parameter.
+     *              1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     */
+    protected int weekNumber(int desiredDay, int dayOfPeriod, int dayOfWeek)
+    {
+        int length = getMaximum(DAY_OF_WEEK) - getMinimum(DAY_OF_WEEK) + 1;
+
+        // Determine the day of the week of the first day of the period
+        // in question (either a year or a month).  Zero represents the
+        // first day of the week on this calendar.
+        int periodStartDayOfWeek = (dayOfWeek - getFirstDayOfWeek() - dayOfPeriod + 1) % length;
+        if (periodStartDayOfWeek < 0) periodStartDayOfWeek += length;
+
+        // Compute the week number.  Initially, ignore the first week, which
+        // may be fractional (or may not be).  We add periodStartDayOfWeek in
+        // order to fill out the first week, if it is fractional.
+        int weekNo = (desiredDay + periodStartDayOfWeek - 1)/length;
+
+        // If the first week is long enough, then count it.  If
+        // the minimal days in the first week is one, or if the period start
+        // is zero, we always increment weekNo.
+        if ((length - periodStartDayOfWeek) >= getMinimalDaysInFirstWeek()) ++weekNo;
+
+        return weekNo;
+    }
+
+    /**
+     * Return the week number of a day, within a period. This may be the week number in
+     * a year, or the week number in a month. Usually this will be a value >= 1, but if
+     * some initial days of the period are excluded from week 1, because
+     * {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek} is > 1,
+     * then the week number will be zero for those
+     * initial days. This method requires the day of week for the given date in order to 
+     * determine the result.
+     * <p>
+     * <b>Subclassing:</b>
+     * <br>
+     * This method is intended for use by subclasses in implementing their
+     * {@link #computeTime computeTime} and/or {@link #computeFields computeFields} methods.
+     * It is often useful in {@link #getActualMinimum getActualMinimum} and
+     * {@link #getActualMaximum getActualMaximum} as well.
+     * <p>
+     * @param dayOfPeriod   The {@link #DAY_OF_YEAR DAY_OF_YEAR} or
+     *                      {@link #DAY_OF_MONTH DAY_OF_MONTH} whose week number is desired.
+     *                      Should be 1 for the first day of the period.
+     *
+     * @param dayofWeek     The {@link #DAY_OF_WEEK DAY_OF_WEEK} for the day
+     *                      corresponding to the <code>dayOfPeriod</code> parameter.
+     *                      1-based with 1=Sunday.
+     *
+     * @return      The week number (one-based), or zero if the day falls before
+     *              the first week because
+     *              {@link #getMinimalDaysInFirstWeek getMinimalDaysInFirstWeek}
+     *              is more than one.
+     */
+    protected final int weekNumber(int dayOfPeriod, int dayOfWeek)
+    {
+        return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);
+    }
+
+    //-------------------------------------------------------------------------
+    // Constants
+    //-------------------------------------------------------------------------
+    
+    private static final int  SECOND_MS = 1000;
+    private static final int  MINUTE_MS = 60*SECOND_MS;
+    private static final int  HOUR_MS   = 60*MINUTE_MS;
+    private static final long DAY_MS    = 24*HOUR_MS;
+    private static final long WEEK_MS   = 7*DAY_MS;
+}
diff --git a/src/com/ibm/util/IslamicCalendar.java b/src/com/ibm/util/IslamicCalendar.java
new file mode 100755
index 0000000..4725c82
--- /dev/null
+++ b/src/com/ibm/util/IslamicCalendar.java
@@ -0,0 +1,920 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/IslamicCalendar.java,v $ 
+ * $Date: 2000/03/10 04:17:59 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+import com.ibm.util.CalendarAstronomer;
+
+/**
+ * <code>IslamicCalendar</code> is a subclass of <code>Calendar</code>
+ * that that implements the Islamic civil and religious calendars.  It
+ * is used as the civil calendar in most of the Arab world and the
+ * liturgical calendar of the Islamic faith worldwide.  This calendar
+ * is also known as the "Hijri" calendar, since it starts at the time
+ * of Mohammed's emigration (or "hijra") to Medinah on Thursday, 
+ * July 15, 622 AD (Julian).
+ * <p>
+ * The Islamic calendar is strictly lunar, and thus an Islamic year of twelve
+ * lunar months does not correspond to the solar year used by most other
+ * calendar systems, including the Gregorian.  An Islamic year is, on average,
+ * about 354 days long, so each successive Islamic year starts about 11 days
+ * earlier in the corresponding Gregorian year.
+ * <p>
+ * Each month of the calendar starts when the new moon's crescent is visible
+ * at sunset.  However, in order to keep the time fields in this class
+ * synchronized with those of the other calendars and with local clock time,
+ * we treat days and months as beginning at midnight,
+ * roughly 6 hours after the corresponding sunset.
+ * <p>
+ * There are two main variants of the Islamic calendar in existence.  The first
+ * is the <em>civil</em> calendar, which uses a fixed cycle of alternating 29-
+ * and 30-day months, with a leap day added to the last month of 11 out of
+ * every 30 years.  This calendar is easily calculated and thus predictable in
+ * advance, so it is used as the civil calendar in a number of Arab countries.
+ * This is the default behavior of a newly-created <code>IslamicCalendar</code>
+ * object.
+ * <p>
+ * The Islamic <em>religious</em> calendar, however, is based on the <em>observation</em>
+ * of the crescent moon.  It is thus affected by the position at which the
+ * observations are made, seasonal variations in the time of sunset, the
+ * eccentricities of the moon's orbit, and even the weather at the observation
+ * site.  This makes it impossible to calculate in advance, and it causes the
+ * start of a month in the religious calendar to differ from the civil calendar
+ * by up to three days.
+ * <p>
+ * Using astronomical calculations for the position of the sun and moon, the
+ * moon's illumination, and other factors, it is possible to determine the start
+ * of a lunar month with a fairly high degree of certainty.  However, these
+ * calculations are extremely complicated and thus slow, so most algorithms,
+ * including the one used here, are only approximations of the true astronical
+ * calculations.  At present, the approximations used in this class are fairly
+ * simplistic; they will be improved in later versions of the code.
+ * <p>
+ * The {@link #setCivil setCivil} method determines
+ * which approach is used to determine the start of a month.  By default, the
+ * fixed-cycle civil calendar is used.  However, if <code>setCivil(false)</code>
+ * is called, an approximation of the true lunar calendar will be used.
+ *
+ * @see java.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ * @version 1.0
+ */
+public class IslamicCalendar extends IBMCalendar {
+
+    private static String copyright = "Copyright \u00a9 1997-1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Constants...
+    //-------------------------------------------------------------------------
+    
+    /** Constant for Muharram, the 1st month of the Islamic year. */
+    public static final int MUHARRAM = 0;
+
+    /** Constant for Safar, the 2nd month of the Islamic year. */
+    public static final int SAFAR = 1;
+
+    /** Constant for Rabi' al-awwal (or Rabi' I), the 3rd month of the Islamic year. */
+    public static final int RABI_1 = 2;
+
+    /** Constant for Rabi' al-thani or (Rabi' II), the 4th month of the Islamic year. */
+    public static final int RABI_2 = 3;
+
+    /** Constant for Jumada al-awwal or (Jumada I), the 5th month of the Islamic year. */
+    public static final int JUMADA_1 = 4;
+
+    /** Constant for Jumada al-thani or (Jumada II), the 6th month of the Islamic year. */
+    public static final int JUMADA_2 = 5;
+
+    /** Constant for Rajab, the 7th month of the Islamic year. */
+    public static final int RAJAB = 6;
+
+    /** Constant for Sha'ban, the 8th month of the Islamic year. */
+    public static final int SHABAN = 7;
+
+    /** Constant for Ramadan, the 9th month of the Islamic year. */
+    public static final int RAMADAN = 8;
+
+    /** Constant for Shawwal, the 10th month of the Islamic year. */
+    public static final int SHAWWAL = 9;
+
+    /** Constant for Dhu al-Qi'dah, the 11th month of the Islamic year. */
+    public static final int DHU_AL_QIDAH = 10;
+
+    /** Constant for Dhu al-Hijjah, the 12th month of the Islamic year. */
+    public static final int DHU_AL_HIJJAH = 11;
+
+
+    // Useful millisecond constants
+    private static final int  SECOND_MS = 1000;
+    private static final int  MINUTE_MS = 60*SECOND_MS;
+    private static final int  HOUR_MS   = 60*MINUTE_MS;
+    private static final long DAY_MS    = 24*HOUR_MS;
+    private static final long WEEK_MS   = 7*DAY_MS;
+
+    private static final long HIJRA_MILLIS = -42521587200000L;    // 7/16/622 AD 00:00
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>IslamicCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public IslamicCalendar()
+    {
+        this(TimeZone.getDefault(), Locale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     */
+    public IslamicCalendar(TimeZone zone)
+    {
+        this(zone, Locale.getDefault());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     *
+     * @param aLocale the given locale.
+     */
+    public IslamicCalendar(Locale aLocale)
+    {
+        this(TimeZone.getDefault(), aLocale);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     */
+    public IslamicCalendar(TimeZone zone, Locale aLocale)
+    {
+        super(zone, aLocale);
+        setTimeInMillis(System.currentTimeMillis());
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public IslamicCalendar(Date date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     *
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     *
+     * @param date the value used to set the {@link #DATE DATE} time field in the calendar.
+     */
+    public IslamicCalendar(int year, int month, int date)
+    {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+    }
+
+    /**
+     * Constructs an <code>IslamicCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year  the value used to set the {@link #YEAR YEAR} time field in the calendar.
+     *
+     * @param month the value used to set the {@link #MONTH MONTH} time field in the calendar.
+     *              Note that the month value is 0-based. e.g., 0 for Muharram.
+     *
+     * @param date  the value used to set the {@link #DATE DATE} time field in the calendar.
+     *
+     * @param hour  the value used to set the {@link #HOUR_OF_DAY HOUR_OF_DAY} time field
+     *              in the calendar.
+     *
+     * @param minute the value used to set the {@link #MINUTE MINUTE} time field
+     *              in the calendar.
+     *
+     * @param second the value used to set the {@link #SECOND SECOND} time field
+     *              in the calendar.
+     */
+    public IslamicCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.set(Calendar.YEAR, year);
+        this.set(Calendar.MONTH, month);
+        this.set(Calendar.DATE, date);
+        this.set(Calendar.HOUR_OF_DAY, hour);
+        this.set(Calendar.MINUTE, minute);
+        this.set(Calendar.SECOND, second);
+    }
+
+    /**
+     * Determines whether this object uses the fixed-cycle Islamic civil calendar
+     * or an approximation of the religious, astronomical calendar.
+     *
+     * @param beCivil   <code>true</code> to use the civil calendar,
+     *                  <code>false</code> to use the astronomical calendar.
+     */
+    public void setCivil(boolean beCivil)
+    {
+        if (civil != beCivil) {
+            // The fields of the calendar will become invalid, because the calendar
+            // rules are different
+            computeTime();
+            areFieldsSet = false;
+            civil = beCivil;
+        }
+    }
+    
+    /**
+     * Returns <code>true</code> if this object is using the fixed-cycle civil
+     * calendar, or <code>false</code> if using the religious, astronomical
+     * calendar.
+     */
+    public boolean isCivil() {
+        return civil;
+    }
+    
+    //-------------------------------------------------------------------------
+    // Minimum / Maximum access functions
+    //-------------------------------------------------------------------------
+
+    // The minimum and maximum values for all of the fields, for validation
+    private static final int MinMax[][] = {
+        // Min         Greatest Min    Least Max            Max
+        {   0,              0,              0,              0           },  // ERA
+        {   1,              1,        5000000,        5000000           },  // YEAR
+        {   0,              0,             11,             11           },  // MONTH
+        {   0,              0,             51,             52           },  // WEEK_OF_YEAR
+        {   0,              0,              5,              6           },  // WEEK_OF_MONTH
+        {   1,              1,             29,             30           },  // DAY_OF_MONTH
+        {   1,              1,            354,            355           },  // DAY_OF_YEAR
+        {   1,              1,              7,              7           },  // DAY_OF_WEEK
+        {  -1,             -1,              4,              5           },  // DAY_OF_WEEK_IN_MONTH
+        {   0,              0,              1,              1           },  // AM_PM
+        {   0,              0,             11,             11           },  // HOUR
+        {   0,              0,             23,             23           },  // HOUR_OF_DAY
+        {   0,              0,             59,             59           },  // MINUTE
+        {   0,              0,             59,             59           },  // SECOND
+        {   0,              0,            999,            999           },  // MILLISECOND
+        {  -12*HOUR_MS,   -12*HOUR_MS,     12*HOUR_MS,     12*HOUR_MS   },  // ZONE_OFFSET
+        {   0,              0,              1*HOUR_MS,      1*HOUR_MS   },  // DST_OFFSET
+    };
+
+    /**
+     * Returns minimum value for the given field.
+     * For example, for {@link #DAY_OF_MONTH DAY_OF_MONTH} this method returns 1,
+     *
+     * @param field The field whose minimum value is desired.
+     *
+     * @see java.util.Calendar#getMinimum
+     */
+    public int getMinimum(int field)
+    {
+        return MinMax[field][0];
+    }
+
+    /**
+     * Returns highest minimum value for the given field.  For the Islamic
+     * calendar, this always returns the same result as {@link #getMinimum}.
+     *
+     * @param field The field whose greatest minimum value is desired.
+     *
+     * @see #getMinimum
+     */
+    public int getGreatestMinimum(int field)
+    {
+        return MinMax[field][1];
+    }
+
+    /**
+     * Returns maximum value for the given field
+     * For the {@link #DAY_OF_MONTH DAY_OF_MONTH} field, this method returns 30.
+     *
+     * @param field The field whose maximum value is desired.
+     *
+     * @see #getLeastMaximum
+     * @see #getActualMaximum
+     */
+    public int getMaximum(int field)
+    {
+        return MinMax[field][3];
+    }
+
+    /**
+     * Returns lowest maximum value for the given field.  For most fields,
+     * this returns the same result as {@link #getMaximum getMaximum}.  However,
+     * for some fields this can be a lower number. For example,
+     * the maximum {@link #DAY_OF_MONTH DAY_OF_MONTH} in the Islamic caleandar varies
+     * from month to month, so this method returns 29 while <code>getMaximum</code>
+     * returns 30.
+     *
+     * @param field The field whose least maximum value is desired.
+     *
+     * @see #getMaximum
+     * @see #getActualMaximum
+     */
+    public int getLeastMaximum(int field)
+    {
+        return MinMax[field][2];
+    }
+
+    /**
+     * Return the maximum value that a field could have, given the current date.
+     * For example, for the {@link #DAY_OF_MONTH DAY_OF_MONTH} field the actual maximum varies
+     * depending on the length of the month, which in turn varies according
+     * to either the civil calendar cycle or the actual time of the next new moon.
+     *
+     * @param field The field whose maximum value is desired.
+     *
+     * @see #getMaximum
+     * @see #getLeastMaximum
+     */
+    public int getActualMaximum(int field) {
+        if (!isSet[YEAR] || !isSet[MONTH]) {
+            complete();
+        }
+        switch (field) {
+          case DAY_OF_MONTH:
+            return monthLength(fields[YEAR], fields[MONTH]);
+
+          case DAY_OF_YEAR:
+            return yearLength(fields[YEAR]);
+          
+          default:
+            return super.getActualMaximum(field);
+        }   
+    }
+        
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from field values to milliseconds....
+    //-------------------------------------------------------------------------
+
+    /**
+     * Converts time field values to UTC as milliseconds.
+     *
+     * @exception IllegalArgumentException if a field has an invalid value 
+     * and {@link #isLenient isLenient} returns <code>false</code>.
+     */
+    protected void computeTime()
+    {
+        if (isTimeSet) return;
+
+        if (!isLenient() && !validateFields())
+            throw new IllegalArgumentException();
+
+        if (isSet[ERA] && internalGet(ERA) != 0)
+            throw new IllegalArgumentException();
+
+        // We need the time zone offset for some of the calculations below.
+        // We use the TimeZone object, unless the user has explicitly set the
+        // ZONE_OFFSET field.
+        TimeZone zone = getTimeZone();
+        int zoneOffset = zone.getRawOffset();
+
+        // The year is required.  We don't have to check if it's unset,
+        // because if it is, by definition it will be 0.
+
+        int year = internalGet(YEAR);
+
+        if (year <= 0 && !isLenient())
+            throw new IllegalArgumentException();
+
+        long dayNumber = 0, date = 0;
+        
+        // The following code is somewhat convoluted. The various nested
+        //  if's handle the different cases of what fields are present.
+        if (isSet[MONTH] &&
+            (isSet[DATE] ||
+             (isSet[DAY_OF_WEEK] &&
+              (isSet[WEEK_OF_MONTH] ||
+               isSet[DAY_OF_WEEK_IN_MONTH])
+                 )
+                ))
+        {
+            // We have the month specified.  Figure out when that month starts
+            int month = internalGet(MONTH);
+            dayNumber = monthStart(year, month);
+
+            if (isSet[DATE])
+            {
+                date = internalGet(DATE);
+            }
+            else
+            {
+                // Compute from day of week plus week number or from the day of
+                // week plus the day of week in month.  The computations are
+                // almost identical.
+
+                // Find the day of the week for the first of this month.  This
+                // is zero-based, with 0 being the locale-specific first day of
+                // the week.  Add 1 to get the 1st day of month.  Subtract
+                // getFirstDayOfWeek() to make 0-based.
+
+                int fdm = absoluteDayToDayOfWeek(dayNumber + 1) - getFirstDayOfWeek();
+                if (fdm < 0) fdm += 7;
+
+                // Find the start of the first week.  This will be a date from
+                // 1..-6.  It represents the locale-specific first day of the
+                // week of the first day of the month, ignoring minimal days in
+                // first week.
+                date = 1 - fdm + internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+
+                if (isSet[WEEK_OF_MONTH])
+                {
+                    // Adjust for minimal days in first week.
+                    if ((7 - fdm) < getMinimalDaysInFirstWeek()) date += 7;
+
+                    // Now adjust for the week number.
+                    date += 7 * (internalGet(WEEK_OF_MONTH) - 1);
+                }
+                else
+                {
+                    // Adjust into the month, if needed.
+                    if (date < 1) date += 7;
+
+                    // We are basing this on the day-of-week-in-month.  The only
+                    // trickiness occurs if the day-of-week-in-month is
+                    // negative.
+                    int dim = internalGet(DAY_OF_WEEK_IN_MONTH);
+                    if (dim >= 0) date += 7*(dim - 1);
+                    else
+                    {
+                        // Move date to the last of this day-of-week in this
+                        // month, then back up as needed.  If dim==-1, we don't
+                        // back up at all.  If dim==-2, we back up once, etc.
+                        // Don't back up past the first of the given day-of-week
+                        // in this month.  Note that we handle -2, -3,
+                        // etc. correctly, even though values < -1 are
+                        // technically disallowed.
+                        date += ((monthLength(year, month) - date) / 7 + dim + 1) * 7;
+                    }
+                }
+            }
+        }
+        else if (isSet[DAY_OF_YEAR]) {
+            dayNumber = yearStart(year) + internalGet(DAY_OF_YEAR);
+        }
+        else if (isSet[DAY_OF_WEEK] && isSet[WEEK_OF_YEAR])
+        {
+            dayNumber = yearStart(year);
+
+            // Compute from day of week plus week of year
+
+            // Find the day of the week for the first of this year.  This
+            // is zero-based, with 0 being the locale-specific first day of
+            // the week.  Add 1 to get the 1st day of month.  Subtract
+            // getFirstDayOfWeek() to make 0-based.
+            int fdy = absoluteDayToDayOfWeek(dayNumber + 1) - getFirstDayOfWeek();
+            if (fdy < 0) fdy += 7;
+
+            // Find the start of the first week.  This may be a valid date
+            // from 1..7, or a date before the first, from 0..-6.  It
+            // represents the locale-specific first day of the week
+            // of the first day of the year.
+
+            // First ignore the minimal days in first week.
+            date = 1 - fdy + internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
+
+            // Adjust for minimal days in first week.
+            if ((7 - fdy) < getMinimalDaysInFirstWeek()) date += 7;
+
+            // Now adjust for the week number.
+            date += 7 * (internalGet(WEEK_OF_YEAR) - 1);
+
+            dayNumber += date;
+        } else {    // Not enough information
+            throw new IllegalArgumentException();
+        }
+
+        long millis = dayNumber * DAY_MS + HIJRA_MILLIS;
+        
+        // Add in the days we calculated above
+        millis += (date - 1) * DAY_MS;
+
+        // Now we can do the time portion of the conversion.
+
+        int millisInDay = 0;
+
+        // Hours
+        if (isSet[HOUR_OF_DAY]) {
+            // Don't normalize here; let overflow bump into the next period.
+            // This is consistent with how we handle other fields.
+            millisInDay += internalGet(HOUR_OF_DAY);
+
+         } else if (isSet[HOUR])
+        {
+            // Don't normalize here; let overflow bump into the next period.
+            // This is consistent with how we handle other fields.
+            millisInDay += internalGet(HOUR);
+
+            millisInDay += 12 * internalGet(AM_PM);
+        }
+
+        // Minutes. We use the fact that unset == 0
+        millisInDay *= 60;
+        millisInDay += internalGet(MINUTE);
+
+        // Seconds. unset == 0
+        millisInDay *= 60;
+        millisInDay += internalGet(SECOND);
+
+        // Milliseconds. unset == 0
+        millisInDay *= 1000;
+        millisInDay += internalGet(MILLISECOND);
+
+        // Add millis and millisInDay together, to make millis contain the GMT time
+        // computed so far, with no DST adjustments
+        millis += millisInDay;
+
+        int dstOffset = 0;
+
+        //
+        // Compute the time zone offset and DST offset.
+        // Since the TimeZone API expects the Gregorian year, month, etc.,
+        // We have to convert to local Gregorian time in order to
+        // figure out the time zone calculations.  This is a bit slow, but
+        // it saves us from doing some *really* nasty calculations here.
+        //
+        if (getTimeZone().useDaylightTime())
+        {
+            synchronized(gregorian) {
+                gregorian.setTimeZone(zone);
+                gregorian.setTime(new Date(millis));
+                dstOffset = gregorian.get(DST_OFFSET);
+            }
+        }
+
+        // Store our final computed GMT time, with DST adjustments.
+        time = millis - zoneOffset - dstOffset;
+        isTimeSet = true;
+    }
+
+    /**
+     * Validates the values of the set time fields.
+     */
+    private boolean validateFields()
+    {
+        for (int field = 0; field < FIELD_COUNT; field++)
+        {
+            // Ignore DATE and DAY_OF_YEAR which are handled below
+            if (isSet[field] &&
+                !boundsCheck(internalGet(field), field))
+
+                return false;
+        }
+
+        if (isSet[YEAR])
+        {
+            int year = internalGet(YEAR);
+            if (year < 1)
+                return false;
+        }
+
+        // Handle DAY_OF_WEEK_IN_MONTH, which must not have the value zero.
+        // We've checked against minimum and maximum above already.
+        if (isSet[DAY_OF_WEEK_IN_MONTH] &&
+            0 == internalGet(DAY_OF_WEEK_IN_MONTH)) return false;
+
+        return true;
+    }
+
+    /**
+     * Validates the value of the given time field.
+     */
+    private boolean boundsCheck(int value, int field)
+    {
+        return value >= getMinimum(field) && value <= getMaximum(field);
+    }
+
+
+    //-------------------------------------------------------------------------
+    // Functions for converting from milliseconds to field values
+    //-------------------------------------------------------------------------
+
+    /**
+     * Converts UTC as milliseconds to time field values.
+     * The time is <em>not</em>
+     * recomputed first; to recompute the time, then the fields, call the
+     * {@link #complete} method.
+     */
+    protected void computeFields()
+    {
+        if (areFieldsSet) return;
+
+        // The following algorithm only works for dates after the Hijra (16 July AD 622)
+        if (time < HIJRA_MILLIS && !isLenient()) {
+            throw new IllegalArgumentException("IslamicCalendar does not handle dates before 1 AH");
+        }
+
+        //
+        // Compute the time zone offset and DST offset.
+        // Since the TimeZone API expects the Gregorian year, month, etc.,
+        // We have to convert to local Gregorian time in order to
+        // figure out the time zone calculations.  This is a bit slow, but
+        // it saves us from doing some *really* nasty calculations here.
+        //
+        TimeZone zone = getTimeZone();
+        int rawOffset = zone.getRawOffset();   // Not including DST
+        int dstOffset = 0;
+        if (zone.useDaylightTime())
+        {
+            synchronized (gregorian) {
+                gregorian.setTimeZone(zone);
+                gregorian.setTime(new Date(time));
+                dstOffset += gregorian.get(DST_OFFSET);
+            }
+        }
+        long localMillis = time + rawOffset + dstOffset;
+        
+        long days = (localMillis - HIJRA_MILLIS) / DAY_MS;
+        int millisInDay = (int)(localMillis % DAY_MS);
+        
+        if (civil) {
+            // Use the civil calendar approximation, which is just arithmetic
+            int year  = (int)Math.floor( (30 * days + 10646) / 10631.0 );
+            int month = (int)Math.ceil((days - 29 - yearStart(year)) / 29.5 );
+            month = Math.min(month, 11);
+            
+            int date = (int)(days - monthStart(year, month)) + 1;
+            
+            fields[YEAR] = year;
+            fields[MONTH] = month;
+            fields[DATE] = date;
+        } else {
+            // Guess at the number of elapsed full months since the epoch
+            int months = (int)Math.floor(days / CalendarAstronomer.SYNODIC_MONTH);
+
+            long start = (long)Math.floor(months * CalendarAstronomer.SYNODIC_MONTH - 1);
+
+            if ( days - start >= 28 && MoonAge(time) > 0) {
+                // If we're near the end of the month, assume next month and search backwards
+                months++;
+            }
+
+            // Find out the last time that the new moon was actually visible at this longitude
+            // This returns midnight the night that the moon was visible at sunset.
+            while ((start = trueMonthStart(months)) > days) {
+                // If it was after the date in question, back up a month and try again
+                months--;
+            }
+
+            fields[YEAR] = months / 12 + 1;
+            fields[MONTH] = months % 12;
+            fields[DATE] = (int)(days - start) + 1;
+
+        }
+        fields[ERA] = 0;
+
+        // Calculate the day of the week.
+        int dayOfWeek = absoluteDayToDayOfWeek(days);
+        fields[DAY_OF_WEEK] = dayOfWeek;
+        fields[WEEK_OF_MONTH] = weekNumber(fields[DATE], dayOfWeek);
+        fields[DAY_OF_WEEK_IN_MONTH] = (fields[DATE]-1) / 7 + 1;
+
+        // Now figure out the day of the year.
+        int dayOfYear = (int)(days - monthStart(fields[YEAR], fields[MONTH]) + 1);
+
+        fields[DAY_OF_YEAR] = dayOfYear;
+        fields[WEEK_OF_YEAR] = weekNumber(dayOfYear, dayOfWeek);
+
+        // Fill in all time-related fields based on millisInDay.
+
+        fields[MILLISECOND] = millisInDay % 1000;
+        millisInDay /= 1000;
+        fields[SECOND] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[MINUTE] = millisInDay % 60;
+        millisInDay /= 60;
+        fields[HOUR_OF_DAY] = millisInDay;
+        fields[AM_PM] = millisInDay / 12;
+        fields[HOUR] = millisInDay % 12;
+
+        fields[ZONE_OFFSET] = rawOffset;
+        fields[DST_OFFSET] = dstOffset;
+
+        areFieldsSet = true;
+
+        // Careful here: We are manually setting the isSet[] flags to true, so we
+        // must be sure that the above code actually does set all these fields.
+        for (int i=0; i<FIELD_COUNT; ++i) isSet[i] = true;
+    }
+
+    //-------------------------------------------------------------------------
+    // Assorted calculation utilities
+    //
+
+    /**
+     * Find the day of the week for a given day
+     *
+     * @param day   The # of days since the start of the Islamic calendar.
+     */
+    private static final int absoluteDayToDayOfWeek(long day)
+    {
+        // Calculate the day of the week.
+        // This relies on the fact that the epoch was a Thursday.
+        int dayOfWeek = (int)(day + THURSDAY) % 7 + SUNDAY;
+        if (dayOfWeek < 0) {
+            dayOfWeek += 7;
+        }
+        return dayOfWeek;
+    }
+
+    /**
+     * Determine whether a year is a leap year in the Islamic civil calendar
+     */
+    private final static boolean civilLeapYear(int year)
+    {
+        return (14 + 11 * year) % 30 < 11;
+        
+    }
+    
+    /**
+     * Return the day # on which the given year starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     */
+    private long yearStart(int year) {
+        if (civil) {
+            return (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1));
+        }
+    }
+    
+    /**
+     * Return the number of days in the given Islamic year
+     */
+    private final int yearLength(int year)
+    {
+        if (civil) {
+            return 354 + (civilLeapYear(year) ? 1 : 0);
+        } else {
+            int month = 12*(year-1);
+            return (int)(trueMonthStart(month + 12) - trueMonthStart(month));
+        }
+    }
+
+    /**
+     * Return the day # on which the given month starts.  Days are counted
+     * from the Hijri epoch, origin 0.
+     *
+     * @param year  The hijri year
+     * @param year  The hijri month, 0-based
+     */
+    private long monthStart(int year, int month) {
+        if (civil) {
+            return (long)Math.ceil(29.5*month)
+                    + (year-1)*354 + (long)Math.floor((3+11*year)/30.0);
+        } else {
+            return trueMonthStart(12*(year-1) + month);
+        }
+    }
+    
+    /**
+     * Return the length (in days) of the given month.
+     *
+     * @param year  The hijri year
+     * @param year  The hijri month, 0-based
+     */
+    private final int monthLength(int year, int month)
+    {
+        int length = 0;
+        
+        if (civil) {
+            length = 29 + (month+1) % 2;
+            if (month == DHU_AL_HIJJAH && civilLeapYear(year)) {
+                length++;
+            }
+        } else {
+            month = 12*(year-1) + month;
+            length = (int)( trueMonthStart(month+1) - trueMonthStart(month) );
+        }
+        return length;
+    }
+
+    /**
+     * Find the day number on which a particular month of the true/lunar
+     * Islamic calendar starts.
+     *
+     * @param month The month in question, origin 0 from the Hijri epoch
+     *
+     * @return The day number on which the given month starts.
+     */
+    private static final long trueMonthStart(long month)
+    {
+        long start = cache.get(month);
+
+        if (start == CalendarCache.EMPTY)
+        {
+            // Make a guess at when the month started, using the average length
+            long origin = HIJRA_MILLIS 
+                        + (long)Math.floor(month * CalendarAstronomer.SYNODIC_MONTH - 1) * DAY_MS;
+
+            double age = MoonAge(origin);
+
+            if (MoonAge(origin) >= 0) {
+                // The month has already started
+                do {
+                    origin -= DAY_MS;
+                    age = MoonAge(origin);
+                } while (age >= 0);
+            }
+            else {
+                // Preceding month has not ended yet.
+                do {
+                    origin += DAY_MS;
+                    age = MoonAge(origin);
+                } while (age < 0);
+            }
+
+            start = (origin - HIJRA_MILLIS) / DAY_MS + 1;
+            
+            cache.put(month, start);
+        }
+        return start;
+    }
+
+    /**
+     * Return the "age" of the moon at the given time; this is the difference
+     * in ecliptic latitude between the moon and the sun.  This method simply
+     * calls CalendarAstronomer.moonAge, converts to degrees, 
+     * and adjusts the resultto be in the range [-180, 180].
+     *
+     * @param time  The time at which the moon's age is desired,
+     *              in millis since 1/1/1970.
+     */
+    static final double MoonAge(long time)
+    {
+        double age = 0;
+        
+        synchronized(astro) {
+            astro.setTime(time);
+            age = astro.getMoonAge();
+        }
+        // Convert to degrees and normalize...
+        age = age * 180 / Math.PI;
+        if (age > 180) {
+            age = age - 360;
+        }
+
+        return age;
+    }
+
+    //-------------------------------------------------------------------------
+    // Internal data....
+    //
+
+    // We need a GregorianCalendar object for doing time zone calculations
+    private static GregorianCalendar gregorian = new GregorianCalendar();
+    
+    // And an Astronomer object for the moon age calculations
+    private static CalendarAstronomer astro = new CalendarAstronomer();
+    
+    private static CalendarCache cache = new CalendarCache();
+    
+    /**
+     * <code>true</code> if this object uses the fixed-cycle Islamic civil calendar,
+     * and <code>false</code> if it approximates the true religious calendar using
+     * astronomical calculations for the time of the new moon.
+     *
+     * @serial
+     */
+    private boolean civil = true;
+
+    static private void debug(String str) {
+        if (true) {
+            System.out.println(str);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/ibm/util/JapaneseCalendar.java b/src/com/ibm/util/JapaneseCalendar.java
new file mode 100755
index 0000000..8072c86
--- /dev/null
+++ b/src/com/ibm/util/JapaneseCalendar.java
@@ -0,0 +1,573 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/JapaneseCalendar.java,v $ 
+ * $Date: 2000/03/10 04:17:59 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.SimpleTimeZone;
+import java.util.TimeZone;
+
+/**
+ * <code>JapaneseCalendar</code> is a subclass of <code>GregorianCalendar</code>
+ * that numbers years and eras based on the reigns of the Japanese emperors.
+ * The Japanese calendar is identical to the Gregorian calendar in all respects
+ * except for the year and era.  The ascension of each  emperor to the throne
+ * begins a new era, and the years of that era are numbered starting with the
+ * year of ascension as year 1.
+ * <p>
+ * Note that in the year of an imperial ascension, there are two possible sets
+ * of year and era values: that for the old era and for the new.  For example, a
+ * new era began on January 7, 1989 AD.  Strictly speaking, the first six days
+ * of that year were in the Showa era, e.g. "January 6, 64 Showa", while the rest
+ * of the year was in the Heisei era, e.g. "January 7, 1 Heisei".  This class
+ * handles this distinction correctly when computing dates.  However, in lenient
+ * mode either form of date is acceptable as input. 
+ * <p>
+ * In modern times, eras have started on January 8, 1868 AD, Gregorian (Meiji),
+ * July 30, 1912 (Taisho), December 25, 1926 (Showa), and January 7, 1989 (Heisei).  Constants
+ * for these eras, suitable for use in the <code>ERA</code> field, are provided
+ * in this class.  Note that the <em>number</em> used for each era is more or
+ * less arbitrary.  Currently, the era starting in 1053 AD is era #0; however this
+ * may change in the future as we add more historical data.  Use the predefined
+ * constants rather than using actual, absolute numbers.
+ * <p>
+ *
+ * @see java.util.GregorianCalendar
+ *
+ * @author Laura Werner
+ */
+public class JapaneseCalendar extends GregorianCalendar {
+    
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    //-------------------------------------------------------------------------
+    // Constructors...
+    //-------------------------------------------------------------------------
+
+    /**
+     * Constructs a default <code>JapaneseCalendar</code> using the current time
+     * in the default time zone with the default locale.
+     */
+    public JapaneseCalendar() {
+        super();
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the default locale.
+     * @param zone the given time zone.
+     */
+    public JapaneseCalendar(TimeZone zone) {
+        super(zone);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the default time zone with the given locale.
+     * @param aLocale the given locale.
+     */
+    public JapaneseCalendar(Locale aLocale) {
+        super(aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> based on the current time
+     * in the given time zone with the given locale.
+     *
+     * @param zone the given time zone.
+     *
+     * @param aLocale the given locale.
+     */
+    public JapaneseCalendar(TimeZone zone, Locale aLocale) {
+        super(zone, aLocale);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param date      The date to which the new calendar is set.
+     */
+    public JapaneseCalendar(Date date) {
+        super(TimeZone.getDefault(), Locale.getDefault());
+        this.setTime(date);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param era       The imperial era used to set the calendar's {@link #ERA ERA} field.
+     *                  Eras are numbered starting with the Tenki era, which
+     *                  began in 1053 AD Gregorian, as era zero.  Recent
+     *                  eras can be specified using the constants
+     *                  {@link #MEIJI} (which started in 1868 AD),
+     *                  {@link #TAISHO} (1912 AD),
+     *                  {@link #SHOWA} (1926 AD), and
+     *                  {@link #HEISEI} (1989 AD).
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in terms of the era.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's DATE field.
+     */
+    public JapaneseCalendar(int era, int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, era);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date set
+     * in the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} field,
+     *                  in the era Heisei, the most current at the time this
+     *                  class was last updated.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} field.
+     */
+    public JapaneseCalendar(int year, int month, int date) {
+        super(year, month, date);
+        set(ERA, eras.length - 1);
+    }
+
+    /**
+     * Constructs a <code>JapaneseCalendar</code> with the given date
+     * and time set for the default time zone with the default locale.
+     *
+     * @param year      The value used to set the calendar's {@link #YEAR YEAR} time field,
+     *                  in the era Heisei, the most current at the time of this
+     *                  writing.
+     *
+     * @param month     The value used to set the calendar's {@link #MONTH MONTH} time field.
+     *                  The value is 0-based. e.g., 0 for January.
+     *
+     * @param date      The value used to set the calendar's {@link #DATE DATE} time field.
+     *
+     * @param hour      The value used to set the calendar's {@link #HOUR_OF_DAY HOUR_OF_DAY} time field.
+     *
+     * @param minute    The value used to set the calendar's {@link #MINUTE MINUTE} time field.
+     *
+     * @param second    The value used to set the calendar's {@link #SECOND SECOND} time field.
+     */
+    public JapaneseCalendar(int year, int month, int date, int hour,
+                             int minute, int second)
+    {
+        super(year, month, date, hour, minute, second);
+        set(ERA, eras.length - 1);
+    }
+
+    /**
+     * Override of the <code>GregorianCalendar</code> method that computes the
+     * fields such as YEAR, MONTH, and DATE from the date in milliseconds
+     * since 1/1/1970 AD.
+     * <p>
+     * This method calls {@link GregorianCalendar#computeFields} to do most
+     * of the work, then determines the imperial era corresponding to the
+     * Gregorian date and adjusts the {@link #YEAR YEAR} and {@link #ERA ERA}
+     * fields accordingly.
+     */
+    protected void computeFields() {
+        // Let GregorianCalendar do its thing.
+        super.computeFields();
+        
+        fromGregorian();
+        
+        //
+        // If the date was too early for this calendar, throw an exception,
+        // but only after we've made all the fields consistent
+        //
+        if (fields[YEAR] < 1 && !isLenient()) {
+            throw new IllegalArgumentException("Year out of range");
+        }
+    }
+
+    /**
+     * Override of the <code>GregorianCalendar</code> method that computes the 
+     * elapsed time in milliseconds since 1/1/1970 AD from the fields such
+     * as YEAR, MONTH, and DATE.
+     * <p>
+     * This method adjusts the {@link #YEAR YEAR} and {@link #ERA ERA} from their
+     * values in the Japanese calendar to the corresponding Gregorian values, calls
+     * {@link GregorianCalendar#computeTime} to do the real millisecond
+     * calculation, and then restores the Japanese <code>YEAR</code> and
+     * <code>ERA</code>.
+     */
+    protected void computeTime() {
+        int year = fields[YEAR];
+        int era = fields[ERA];
+
+        // If we're in strict mode, make sure that the year actually
+        // falls within the era, i.e. isn't < 1 or > era length
+        if (era < 0 || era >= eras.length) {
+            throw new IllegalArgumentException("Era out of range");
+        }
+        if (!isLenient() && (year < 1
+            || era < eras.length && year > (eras[(era+1)*3] - eras[era*3] + 1))) {
+                throw new IllegalArgumentException("Year out of range");
+        }
+        
+        // Adjust the year and era to the corresponding Gregorian values
+        toGregorian();
+        try {
+            // Let GregorianCalendar do its thing.
+            super.computeTime();
+        }
+        finally {
+            // Set the year and era back to the original values
+            fields[YEAR] = year;
+            fields[ERA] = era;
+        }
+    }
+
+    public void add(int field, int amount) {
+        toGregorian();
+        try {
+            super.add(field, amount);
+        }
+        finally {
+            fromGregorian();
+        }
+    }
+    
+    public void roll(int field, boolean up) {
+        toGregorian();
+        try {
+            super.roll(field, up);
+        }
+        finally {
+            fromGregorian();
+        }
+    }
+    
+    //-------------------------------------------------------------------------
+    // Methods for converting between Gregorian and Buddhist calendars
+    //-------------------------------------------------------------------------
+
+    /**
+     * Convert the YEAR and ERA fields from Japanese to Gregorian values
+     * Return the (Buddhist) value of the YEAR field on input;
+     */
+    private void toGregorian() {
+        int year = fields[YEAR] + eras[fields[ERA] * 3] - 1;
+        int era = AD;
+        
+        if (year < 1) {
+            year = 1 - year;
+            era = BC;
+        }
+        fields[ERA] = era;
+        fields[YEAR] = year;
+    }
+    
+    /**
+     * Adjust the year and era from Gregorian to Japanese values
+     */
+    private void fromGregorian() {
+        // Figure out which emperor's reign we're in, and adjust the
+        // year and era accordingly.
+        int year = fields[ERA] == AD ? fields[YEAR] : 1 - fields[YEAR];
+
+        // Binary search...
+        int low = 0, high = eras.length / 3;
+        
+        while (low < high - 1) {
+            int i = (low + high + 1) / 2;
+            
+            int diff = year  - eras[i*3 + 0];
+            if (diff == 0) {
+                // Years were the same; compare the months.  In the eras
+                // array months are 1-based for easier maintenance.
+                diff = fields[MONTH] - (eras[i*3 + 1] - 1);
+            }
+            if (diff == 0) {
+                diff = fields[DATE]  - eras[i*3 + 2];
+            }
+            if (diff > 0) {
+                low = i;
+            } else {
+                high = i;
+            }
+        }
+
+        // Now we've found the last era that starts before this date,
+        // so adjust the year to count from the start of that era.
+        fields[ERA] = low;
+        fields[YEAR] = year - eras[low*3 + 0] + 1;
+    }
+    
+    private static final int[] eras = {
+    //  Gregorian date of each emperor's ascension
+    //  Years are AD, months are 1-based.
+    //  Year  Month Day
+         645,    6, 19,     // Taika
+         650,    2, 15,     // Hakuchi
+         672,    1,  1,     // Hakuho
+         686,    7, 20,     // Shucho
+         701,    3, 21,     // Taiho
+         704,    5, 10,     // Keiun
+         708,    1, 11,     // Wado
+         715,    9,  2,     // Reiki
+         717,   11, 17,     // Yoro
+         724,    2,  4,     // Jinki
+         729,    8,  5,     // Tempyo
+         749,    4, 14,     // Tempyo-kampo
+         749,    7,  2,     // Tempyo-shoho
+         757,    8, 18,     // Tempyo-hoji
+         765,    1,  7,     // Tempho-jingo
+         767,    8, 16,     // Jingo-keiun
+         770,   10,  1,     // Hoki
+         781,    1,  1,     // Ten-o
+         782,    8, 19,     // Enryaku
+         806,    5, 18,     // Daido
+         810,    9, 19,     // Konin
+         824,    1,  5,     // Tencho
+         834,    1,  3,     // Showa
+         848,    6, 13,     // Kajo
+         851,    4, 28,     // Ninju
+         854,   11, 30,     // Saiko
+         857,    2, 21,     // Tennan
+         859,    4, 15,     // Jogan
+         877,    4, 16,     // Genkei
+         885,    2, 21,     // Ninna
+         889,    4, 27,     // Kampyo
+         898,    4, 26,     // Shotai
+         901,    7, 15,     // Engi
+         923,    4, 11,     // Encho
+         931,    4, 26,     // Shohei
+         938,    5, 22,     // Tengyo
+         947,    4, 22,     // Tenryaku
+         957,   10, 27,     // Tentoku
+         961,    2, 16,     // Owa
+         964,    7, 10,     // Koho
+         968,    8, 13,     // Anna
+         970,    3, 25,     // Tenroku
+         973,   12, 20,     // Ten-en
+         976,    7, 13,     // Jogen
+         978,   11, 29,     // Tengen
+         983,    4, 15,     // Eikan
+         985,    4, 27,     // Kanna
+         987,    4,  5,     // Ei-en
+         989,    8,  8,     // Eiso
+         990,   11,  7,     // Shoryaku
+         995,    2, 22,     // Chotoku
+         999,    1, 13,     // Choho
+        1004,    7, 20,     // Kanko
+        1012,   12, 25,     // Chowa
+        1017,    4, 23,     // Kannin
+        1021,    2,  2,     // Jian
+        1024,    7, 13,     // Manju
+        1028,    7, 25,     // Chogen
+        1037,    4, 21,     // Choryaku
+        1040,   11, 10,     // Chokyu
+        1044,   11, 24,     // Kantoku
+        1046,    4, 14,     // Eisho
+        1053,    1, 11,     // Tengi
+        1058,    8, 29,     // Kohei
+        1065,    8,  2,     // Jiryaku
+        1069,    4, 13,     // Enkyu
+        1074,    8, 23,     // Shoho
+        1077,   11, 17,     // Shoryaku
+        1081,    2, 10,     // Eiho
+        1084,    2,  7,     // Otoku
+        1087,    4,  7,     // Kanji
+        1094,   12, 15,     // Kaho
+        1096,   12, 17,     // Eicho
+        1097,   11, 21,     // Shotoku
+        1099,    8, 28,     // Kowa
+        1104,    2, 10,     // Choji
+        1106,    4,  9,     // Kasho
+        1108,    8,  3,     // Tennin
+        1110,    7, 13,     // Ten-ei
+        1113,    7, 13,     // Eikyu
+        1118,    4,  3,     // Gen-ei
+        1120,    4, 10,     // Hoan
+        1124,    4,  3,     // Tenji
+        1126,    1, 22,     // Daiji
+        1131,    1, 29,     // Tensho
+        1132,    8, 11,     // Chosho
+        1135,    4, 27,     // Hoen
+        1141,    7, 10,     // Eiji
+        1142,    4, 28,     // Koji
+        1144,    2, 23,     // Tenyo
+        1145,    7, 22,     // Kyuan
+        1151,    1, 26,     // Ninpei
+        1154,   10, 28,     // Kyuju
+        1156,    4, 27,     // Hogen
+        1159,    4, 20,     // Heiji
+        1160,    1, 10,     // Eiryaku
+        1161,    9,  4,     // Oho
+        1163,    3, 29,     // Chokan
+        1165,    6,  5,     // Eiman
+        1166,    8, 27,     // Nin-an
+        1169,    4,  8,     // Kao
+        1171,    4, 21,     // Shoan
+        1175,    7, 28,     // Angen
+        1177,    8,  4,     // Jisho
+        1181,    7, 14,     // Yowa
+        1182,    5, 27,     // Juei
+        1184,    4, 16,     // Genryuku
+        1185,    8, 14,     // Bunji
+        1190,    4, 11,     // Kenkyu
+        1199,    4, 27,     // Shoji
+        1201,    2, 13,     // Kennin
+        1204,    2, 20,     // Genkyu
+        1206,    4, 27,     // Ken-ei
+        1207,   10, 25,     // Shogen
+        1211,    3,  9,     // Kenryaku
+        1213,   12,  6,     // Kenpo
+        1219,    4, 12,     // Shokyu
+        1222,    4, 13,     // Joo
+        1224,   11, 20,     // Gennin
+        1225,    4, 20,     // Karoku
+        1227,   12, 10,     // Antei
+        1229,    3,  5,     // Kanki
+        1232,    4,  2,     // Joei
+        1233,    4, 15,     // Tempuku
+        1234,   11,  5,     // Bunryaku
+        1235,    9, 19,     // Katei
+        1238,   11, 23,     // Ryakunin
+        1239,    2,  7,     // En-o
+        1240,    7, 16,     // Ninji
+        1243,    2, 26,     // Kangen
+        1247,    2, 28,     // Hoji
+        1249,    3, 18,     // Kencho
+        1256,   10,  5,     // Kogen
+        1257,    3, 14,     // Shoka
+        1259,    3, 26,     // Shogen
+        1260,    4, 13,     // Bun-o
+        1261,    2, 20,     // Kocho
+        1264,    2, 28,     // Bun-ei
+        1275,    4, 25,     // Kenji
+        1278,    2, 29,     // Koan
+        1288,    4, 28,     // Shoo
+        1293,    8, 55,     // Einin
+        1299,    4, 25,     // Shoan
+        1302,   11, 21,     // Kengen
+        1303,    8,  5,     // Kagen
+        1306,   12, 14,     // Tokuji
+        1308,   10,  9,     // Enkei
+        1311,    4, 28,     // Ocho
+        1312,    3, 20,     // Showa
+        1317,    2,  3,     // Bunpo
+        1319,    4, 28,     // Geno
+        1321,    2, 23,     // Genkyo
+        1324,   12,  9,     // Shochu
+        1326,    4, 26,     // Kareki
+        1329,    8, 29,     // Gentoku
+        1331,    8,  9,     // Genko
+        1334,    1, 29,     // Kemmu
+        1336,    2, 29,     // Engen
+        1340,    4, 28,     // Kokoku
+        1346,   12,  8,     // Shohei
+        1370,    7, 24,     // Kentoku
+        1372,    4,  1,     // Bunch\u0169
+        1375,    5, 27,     // Tenju
+        1381,    2, 10,     // Kowa
+        1384,    4, 28,     // Gench\u0169
+        1384,    2, 27,     // Meitoku
+        1379,    3, 22,     // Koryaku
+        1387,    8, 23,     // Kakei
+        1389,    2,  9,     // Koo
+        1390,    3, 26,     // Meitoku
+        1394,    7,  5,     // Oei
+        1428,    4, 27,     // Shocho
+        1429,    9,  5,     // Eikyo
+        1441,    2, 17,     // Kakitsu
+        1444,    2,  5,     // Bun-an
+        1449,    7, 28,     // Hotoku
+        1452,    7, 25,     // Kyotoku
+        1455,    7, 25,     // Kosho
+        1457,    9, 28,     // Choroku
+        1460,   12, 21,     // Kansho
+        1466,    2, 28,     // Bunsho
+        1467,    3,  3,     // Onin
+        1469,    4, 28,     // Bunmei
+        1487,    7, 29,     // Chokyo
+        1489,    8, 21,     // Entoku
+        1492,    7, 19,     // Meio
+        1501,    2, 29,     // Bunki
+        1504,    2, 30,     // Eisho
+        1521,    8, 23,     // Taiei
+        1528,    8, 20,     // Kyoroku
+        1532,    7, 29,     // Tenmon
+        1555,   10, 23,     // Koji
+        1558,    2, 28,     // Eiroku
+        1570,    4, 23,     // Genki
+        1573,    7, 28,     // Tensho
+        1592,   12,  8,     // Bunroku
+        1596,   10, 27,     // Keicho
+        1615,    7, 13,     // Genwa
+        1624,    2, 30,     // Kan-ei
+        1644,   12, 16,     // Shoho
+        1648,    2, 15,     // Keian
+        1652,    9, 18,     // Shoo
+        1655,    4, 13,     // Meiryaku
+        1658,    7, 23,     // Manji
+        1661,    4, 25,     // Kanbun
+        1673,    9, 21,     // Enpo
+        1681,    9, 29,     // Tenwa
+        1684,    2, 21,     // Jokyo
+        1688,    9, 30,     // Genroku
+        1704,    3, 13,     // Hoei
+        1711,    4, 25,     // Shotoku
+        1716,    6, 22,     // Kyoho
+        1736,    4, 28,     // Genbun
+        1741,    2, 27,     // Kanpo
+        1744,    2, 21,     // Enkyo
+        1748,    7, 12,     // Kan-en
+        1751,   10, 27,     // Horyaku
+        1764,    6,  2,     // Meiwa
+        1772,   11, 16,     // An-ei
+        1781,    4,  2,     // Tenmei
+        1789,    1, 25,     // Kansei
+        1801,    2,  5,     // Kyowa
+        1804,    2, 11,     // Bunka
+        1818,    4, 22,     // Bunsei
+        1830,   12, 10,     // Tenpo
+        1844,   12,  2,     // Koka
+        1848,    2, 28,     // Kaei
+        1854,   11, 27,     // Ansei
+        1860,    3, 18,     // Man-en
+        1861,    2, 19,     // Bunkyu
+        1864,    2, 20,     // Genji
+        1865,    4,  7,     // Keio
+        1868,    9,  8,     // Meiji
+        1912,    7, 30,     // Taisho
+        1926,   12, 25,     // Showa
+        1989,    1,  8,     // Heisei
+    };
+
+    //-------------------------------------------------------------------------
+    // Public constants for some of the recent eras that folks might use...
+    //-------------------------------------------------------------------------
+
+    /** Constant for the era starting on Sept. 8, 1868 AD */
+    static public final int MEIJI = eras.length - 4;
+
+    /** Constant for the era starting on July 30, 1912 AD */
+    static public final int TAISHO = eras.length - 3;
+    
+    /** Constant for the era starting on Dec. 25, 1926 AD */
+    static public final int SHOWA = eras.length - 2;
+
+    /** Constant for the era starting on Jan. 7, 1989 AD */
+    static public final int HEISEI = eras.length - 1;
+};
diff --git a/src/com/ibm/util/RangeDateRule.java b/src/com/ibm/util/RangeDateRule.java
new file mode 100755
index 0000000..c226d9d
--- /dev/null
+++ b/src/com/ibm/util/RangeDateRule.java
@@ -0,0 +1,141 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/RangeDateRule.java,v $ 
+ * $Date: 2000/03/10 04:17:59 $ 
+ * $Revision: 1.4 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import java.util.Date;
+import java.util.Vector;
+
+public class RangeDateRule implements DateRule
+{
+    public RangeDateRule()
+    {
+    }
+
+    public RangeDateRule(Range[] ranges)
+    {
+        for (int i = 0; i < ranges.length; i++) {
+            this.ranges.addElement(ranges[i]);
+        }
+    }
+
+    public void add(DateRule rule)
+    {
+        add(new Date(Long.MIN_VALUE), rule);
+    }
+
+    public void add(Date start, DateRule rule)
+    {
+        // TODO: Insert in the right place
+        // System.out.println("Add: " + start.toString());
+        ranges.addElement(new Range(start, rule));
+    }
+
+    //-----------------------------------------------------------------------
+
+    public Date firstAfter(Date start)
+    {
+        // Find the range that I should look at
+        int index = startIndex(start);
+        Date result = null;
+
+        Range r = rangeAt(index);
+        Range e = rangeAt(index+1);
+
+        if (r != null && r.rule != null)
+        {
+            if (e != null) {
+                result = r.rule.firstBetween(start, e.start);
+            } else {
+                result = r.rule.firstAfter(start);
+            }
+        }
+        return result;
+    }
+
+    public Date firstBetween(Date start, Date end)
+    {
+        // Find the range that I should look at
+        int index = startIndex(start);
+        Date result = null;
+
+        Range next = rangeAt(index);
+
+        while (result == null && next != null && ! next.start.after(end))
+        {
+            Range r = next;
+            next = rangeAt(index+1);
+
+            if (r.rule != null) {
+                Date e = (next != null && next.start.before(end)) ? next.start
+                                                                  : end;
+                result = r.rule.firstBetween(start, e);
+            }
+        }
+        return result;
+    }
+
+    public boolean isOn(Date date)
+    {
+        return false;
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start,end) == null;
+    }
+
+    /*
+     * find the index of the last range whose start date is before "start"
+     * returns an index >= ranges.size() if there is none
+     */
+    private int startIndex(Date start)
+    {
+        int lastIndex = ranges.size();
+
+        for (int i = 0; i < ranges.size(); i++) {
+            Range r = (Range) ranges.elementAt(i);
+            if (start.before(r.start)) {
+                break;
+            }
+            lastIndex = i;
+        }
+        return lastIndex;
+    }
+
+    private Range rangeAt(int index)
+    {
+       return (index < ranges.size()) ? (Range) ranges.elementAt(index)
+                                      : null;
+    }
+
+    Vector ranges = new Vector(2,2);
+};
+
+//-----------------------------------------------------------------------
+// Privates
+//
+
+class Range {
+    public Range(Date start, DateRule rule) {
+        this.start = start;
+        this.rule = rule;
+    }
+    public Date     start;
+    public DateRule rule;
+}
+
diff --git a/src/com/ibm/util/SimpleDateRule.java b/src/com/ibm/util/SimpleDateRule.java
new file mode 100755
index 0000000..30e39bb
--- /dev/null
+++ b/src/com/ibm/util/SimpleDateRule.java
@@ -0,0 +1,228 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/SimpleDateRule.java,v $ 
+ * $Date: 2000/03/10 04:17:59 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import java.util.Date;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.SimpleTimeZone;
+
+public class SimpleDateRule implements DateRule
+{
+    /**
+     * Construct a rule for a fixed date within a month
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    The date in that month (1-based).
+     * </ul>
+     */
+    public SimpleDateRule(int month, int dayOfMonth)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = 0;
+    }
+
+    /**
+     * Construct a rule for a weekday within a month, e.g. the first Monday
+     *
+     * @param month         The month in which this rule occurs (0-based).
+     * @param dayOfMonth    A date within that month (1-based).
+     * @param dayOfWeek     The day of the week on which this rule occurs.
+     * @param after         If true, this rule selects the first dayOfWeek
+     *                      on or after dayOfMonth.  If false, the rule selects
+     *                      the first dayOfWeek on or before dayOfMonth.
+     * </ul>
+     */
+    public SimpleDateRule(int month, int dayOfMonth, int dayOfWeek, boolean after)
+    {
+        this.month      = month;
+        this.dayOfMonth = dayOfMonth;
+        this.dayOfWeek  = after ? dayOfWeek : -dayOfWeek;
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur on or after the start date.
+     *
+     * @see #firstBetween
+     */
+    public Date firstAfter(Date start)
+    {
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        return doFirstBetween(start, endDate);
+    }
+
+    /**
+     * Return the first occurrance of the event represented by this rule
+     * that is on or after the given start date and before the given
+     * end date.
+     *
+     * @param start Only occurrances on or after this date are returned.
+     * @param end   Only occurrances before this date are returned.
+     *
+     * @return      The date on which this event occurs, or null if it
+     *              does not occur between the start and end dates.
+     *
+     * @see #firstAfter
+     */
+    public Date firstBetween(Date start, Date end)
+    {
+        // Pin to the min/max dates for this rule
+        if (startDate != null && start.before(startDate)) {
+            start = startDate;
+        }
+        if (endDate != null && end.after(endDate)) {
+            end = endDate;
+        }
+        return doFirstBetween(start, end);
+    }
+
+    /**
+     * Checks whether this event occurs on the given date.  This does
+     * <em>not</em> take time of day into account; instead it checks
+     * whether this event and the given date are on the same day.
+     * This is useful for applications such as determining whether a given
+     * day is a holiday.
+     *
+     * @param date  The date to check.
+     * @return      true if this event occurs on the given date.
+     *
+     */
+    public boolean isOn(Date date)
+    {
+        if (startDate != null && date.before(startDate)) {
+            return false;
+        }
+        if (endDate != null && date.after(endDate)) {
+            return false;
+        }
+
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(date);
+
+            int dayOfYear = c.get(Calendar.DAY_OF_YEAR);
+
+            c.setTime(computeInYear(c.get(Calendar.YEAR), c));
+
+            //System.out.println("  isOn: dayOfYear = " + dayOfYear);
+            //System.out.println("        holiday   = " + c.get(Calendar.DAY_OF_YEAR));
+
+            return c.get(Calendar.DAY_OF_YEAR) == dayOfYear;
+        }
+    }
+
+    /**
+     * Check whether this event occurs at least once between the two
+     * dates given.
+     */
+    public boolean isBetween(Date start, Date end)
+    {
+        return firstBetween(start, end) != null; // TODO: optimize?
+    }
+
+    private Date doFirstBetween(Date start, Date end)
+    {
+        Calendar c = calendar;
+
+        synchronized(c) {
+            c.setTime(start);
+
+            int year = c.get(Calendar.YEAR);
+            int month = c.get(Calendar.MONTH);
+
+            // If the rule is earlier in the year than the start date
+            // we have to go to the next year.
+            if (month > this.month) {
+                year++;
+            }
+
+            // Figure out when the rule lands in the given year
+            Date result = computeInYear(year, c);
+
+            // If the rule is in the same month as the start date, it's possible
+            // to get a result that's before the start.  If so, go to next year.
+            if (month == this.month && result.before(start)) {
+                result = computeInYear(year+1, c);
+            }
+
+            if (end != null && result.after(end)) {
+                return null;
+            }
+            return result;
+        }
+    }
+    private Date computeInYear(int year, Calendar c)
+    {
+        if (c == null) c = calendar;
+
+        synchronized(c) {
+            c.clear();
+            c.set(Calendar.ERA, c.getMaximum(Calendar.ERA));
+            c.set(Calendar.YEAR, year);
+            c.set(Calendar.MONTH, month);
+            c.set(Calendar.DATE, dayOfMonth);
+
+            //System.out.println("     computeInYear: start at " + c.getTime().toString());
+
+            if (dayOfWeek != 0) {
+                c.setTime(c.getTime());        // JDK 1.1.2 workaround
+                int weekday = c.get(Calendar.DAY_OF_WEEK);
+
+                //System.out.println("                    weekday = " + weekday);
+                //System.out.println("                    dayOfYear = " + c.get(Calendar.DAY_OF_YEAR));
+
+                int delta = 0;
+                if (dayOfWeek > 0) {
+                    // We want the first occurrance of the given day of the week
+                    // on or after the specified date in the month.
+                    delta = (dayOfWeek - weekday + 7) % 7;
+                }
+                else if (dayOfWeek < 0) {
+                    // We want the first occurrance of the (-dayOfWeek)
+                    // on or before the specified date in the month.
+                    delta = -((dayOfWeek + weekday + 7) % 7);
+                }
+                //System.out.println("                    adding " + delta + " days");
+                c.add(Calendar.DATE, delta);
+            }
+
+            return c.getTime();
+        }
+    }
+
+    public void setCalendar(Calendar c) {
+        calendar = c;
+    }
+
+    static GregorianCalendar gCalendar = new GregorianCalendar(new SimpleTimeZone(0, "UTC"));
+
+    Calendar calendar = gCalendar;
+
+    private int     month;
+    private int     dayOfMonth;
+    private int     dayOfWeek;
+
+    private Date    startDate = null;
+    private Date    endDate = null;
+};
diff --git a/src/com/ibm/util/SimpleHoliday.java b/src/com/ibm/util/SimpleHoliday.java
new file mode 100755
index 0000000..ccf9086
--- /dev/null
+++ b/src/com/ibm/util/SimpleHoliday.java
@@ -0,0 +1,239 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/SimpleHoliday.java,v $ 
+ * $Date: 2000/03/10 04:17:59 $ 
+ * $Revision: 1.3 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util;
+
+import java.util.Date;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+/**
+ * A holiday whose date can be represented by a SimpleDateRule object
+ *
+ * @see SimpleDateRule
+ */
+public class SimpleHoliday extends Holiday {
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth));
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear)
+    {
+        super(name, null);
+
+        setRange(startYear, 0, new SimpleDateRule(month, dayOfMonth) );
+    }
+
+    /**
+     * Construct an object representing a holiday
+     *
+     * @param month         The month in which this holiday occurs (0-based)
+     * @param dayOfMonth    The date within the month (1-based).
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, String name,
+                            int startYear, int endYear)
+    {
+        super(name, null);
+
+        setRange(startYear, endYear, new SimpleDateRule(month, dayOfMonth) );
+    }
+
+    /** // TODO: remove
+     * Construct an object representing a holiday
+     *
+     * @param month The month in which this holiday occurs (0-based)
+     *
+     * @param dayOfMonth A date within the month (1-based).  The
+     *      interpretation of this parameter depends on the value of
+     *      <code>dayOfWeek</code>.
+     *
+     * @param dayOfWeek The day of the week on which this holiday occurs.
+     *      The following values are legal: <ul>
+     *      <li>dayOfWeek == 0 - use dayOfMonth only
+     *      <li>dayOfWeek < 0  - use last -dayOfWeek before or on dayOfMonth
+     *      <li>dayOfWeek > 0  - use first dayOfWeek after or on dayOfMonth
+     *      </ul>
+     *
+     * @param name  The name of this holiday.  This string is used as a key
+     *              to look up the holiday's name a resource bundle.
+     *              If the name is not found in the resource bundle,
+     *              getDisplayName will return this string instead.
+     *
+     * @see SimpleDateRule
+     * @see Holiday#getDisplayName(java.util.Locale)
+     *
+     */
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name)
+    {
+        super(name, new SimpleDateRule(month, dayOfMonth,
+                                        dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                        dayOfWeek > 0) );
+    }
+
+
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear)
+    {
+        super(name, null);
+
+        setRange(startYear, 0, new SimpleDateRule(month, dayOfMonth,
+                                            dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                            dayOfWeek > 0) );
+    }
+
+
+    public SimpleHoliday(int month, int dayOfMonth, int dayOfWeek, String name,
+                        int startYear, int endYear)
+    {
+        super(name, null);
+
+        setRange(startYear, endYear, new SimpleDateRule(month, dayOfMonth,
+                                            dayOfWeek > 0 ? dayOfWeek : - dayOfWeek,
+                                            dayOfWeek > 0) );
+    }
+
+    private void setRange(int startYear, int endYear, DateRule rule)
+    {
+        RangeDateRule rangeRule = new RangeDateRule();
+
+        if (startYear != 0) {
+            Calendar start = new GregorianCalendar(startYear, Calendar.JANUARY, 1);
+            rangeRule.add(start.getTime(), rule);
+        } else {
+            rangeRule.add(rule);
+        }
+        if (endYear != 0) {
+            Date end = new GregorianCalendar(endYear, Calendar.DECEMBER, 31).getTime();
+            rangeRule.add(end, null);
+        }
+
+        setRule(rangeRule);
+    }
+
+    /* Constants for holidays that are common throughout the Western
+     * and Christian worlds.... */
+
+    /**
+     * New Year's Day - January 1st
+     */
+    public static final SimpleHoliday NEW_YEARS_DAY =
+        new SimpleHoliday(Calendar.JANUARY,    1,  "New Year's Day");
+
+    /**
+     * Epiphany, January 6th
+     */
+    public static final SimpleHoliday EPIPHANY =
+        new SimpleHoliday(Calendar.JANUARY,    6,  "Epiphany");
+
+    /**
+     * May Day, May 1st
+     */
+    public static final SimpleHoliday MAY_DAY =
+        new SimpleHoliday(Calendar.MAY,        1,  "May Day");
+
+    /**
+     * Assumption, August 15th
+     */
+    public static final SimpleHoliday ASSUMPTION =
+        new SimpleHoliday(Calendar.AUGUST,    15,  "Assumption");
+
+    /**
+     * All Saints' Day, November 1st
+     */
+    public static final SimpleHoliday ALL_SAINTS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   1,  "All Saints' Day");
+
+    /**
+     * All Souls' Day, November 1st
+     */
+    public static final SimpleHoliday ALL_SOULS_DAY =
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  "All Souls' Day");
+
+    /**
+     * Immaculate Conception, December 8th
+     */
+    public static final SimpleHoliday IMMACULATE_CONCEPTION =
+        new SimpleHoliday(Calendar.DECEMBER,   8,  "Immaculate Conception");
+
+    /**
+     * Christmas Eve, December 24th
+     */
+    public static final SimpleHoliday CHRISTMAS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  24,  "Christmas Eve");
+
+    /**
+     * Christmas, December 25th
+     */
+    public static final SimpleHoliday CHRISTMAS =
+        new SimpleHoliday(Calendar.DECEMBER,  25,  "Christmas");
+
+    /**
+     * Boxing Day, December 26th
+     */
+    public static final SimpleHoliday BOXING_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "Boxing Day");
+
+    /**
+     * Saint Stephen's Day, December 26th
+     */
+    public static final SimpleHoliday ST_STEPHENS_DAY =
+        new SimpleHoliday(Calendar.DECEMBER,  26,  "St. Stephen's Day");
+
+    /**
+     * New Year's Eve, December 31st
+     */
+    public static final SimpleHoliday NEW_YEARS_EVE =
+        new SimpleHoliday(Calendar.DECEMBER,  31,  "New Year's Eve");
+
+}
diff --git a/src/com/ibm/util/Utility.java b/src/com/ibm/util/Utility.java
new file mode 100755
index 0000000..fdab765
--- /dev/null
+++ b/src/com/ibm/util/Utility.java
@@ -0,0 +1,636 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/Attic/Utility.java,v $ 
+ * $Date: 2000/03/10 04:18:00 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util;
+
+public final class Utility {
+
+    /**
+     * Convenience utility to compare two Object[]s.
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof Object[])) return false;
+        Object[] targ = (Object[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two int[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(int[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof int[])) return false;
+        int[] targ = (int[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two double[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(double[] source, Object target) {
+        if (source == null) return (target == null);
+        if (!(target instanceof double[])) return false;
+        double[] targ = (double[]) target;
+        return (source.length == targ.length
+                && arrayRegionMatches(source, 0, targ, 0, source.length));
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System
+     */
+    public final static boolean arrayEquals(Object source, Object target) {
+        if (source == null) return (target == null);
+        // for some reason, the correct arrayEquals is not being called
+        // so do it by hand for now.
+        if (source instanceof Object[])
+            return(arrayEquals((Object[]) source,target));
+        if (source instanceof int[])
+            return(arrayEquals((int[]) source,target));
+        if (source instanceof double[])
+            return(arrayEquals((int[]) source,target));
+        return source.equals(target);
+    }
+
+    /**
+     * Convenience utility to compare two Object[]s
+     * Ought to be in System.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     */
+    public final static boolean arrayRegionMatches(Object[] source, int sourceStart,
+                                            Object[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (!arrayEquals(source[i],target[i + delta]))
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two int[]s.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(int[] source, int sourceStart,
+                                            int[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility to compare two arrays of doubles.
+     * @param len the length to compare.
+     * The start indices and start+len must be valid.
+     * Ought to be in System
+     */
+    public final static boolean arrayRegionMatches(double[] source, int sourceStart,
+                                            double[] target, int targetStart,
+                                            int len)
+    {
+        int sourceEnd = sourceStart + len;
+        int delta = targetStart - sourceStart;
+        for (int i = sourceStart; i < sourceEnd; i++) {
+            if (source[i] != target[i + delta])
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Convenience utility. Does null checks on objects, then calls equals.
+     */
+    public final static boolean objectEquals(Object source, Object target) {
+    if (source == null)
+            return (target == null);
+    else
+            return source.equals(target);
+    }
+
+    /**
+     * The ESCAPE character is used during run-length encoding.  It signals
+     * a run of identical chars.
+     */
+    private static final char ESCAPE = '\uA5A5';
+
+    /**
+     * The ESCAPE_BYTE character is used during run-length encoding.  It signals
+     * a run of identical bytes.
+     */
+    static final byte ESCAPE_BYTE = (byte)0xA5;
+
+    /**
+     * Construct a string representing an int array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(int[] a) {
+        StringBuffer buffer = new StringBuffer();
+
+        appendInt(buffer, a.length);
+        int runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            int s = a[i];
+            if (s == runValue && runLength < 0xFFFF) {
+                ++runLength;
+            } else {
+                encodeRun(buffer, runValue, runLength);
+                runValue = s;
+                runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a short array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(short[] a) {
+        StringBuffer buffer = new StringBuffer();
+        // for (int i=0; i<a.length; ++i) buffer.append((char) a[i]);
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        short runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            short s = a[i];
+            if (s == runValue && runLength < 0xFFFF) ++runLength;
+            else {
+            encodeRun(buffer, runValue, runLength);
+            runValue = s;
+            runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a char array.  Use run-length encoding.
+     * A character represents itself, unless it is the ESCAPE character.  Then
+     * the following notations are possible:
+     *   ESCAPE ESCAPE   ESCAPE literal
+     *   ESCAPE n c      n instances of character c
+     * Since an encoded run occupies 3 characters, we only encode runs of 4 or
+     * more characters.  Thus we have n > 0 and n != ESCAPE and n <= 0xFFFF.
+     * If we encounter a run where n == ESCAPE, we represent this as:
+     *   c ESCAPE n-1 c
+     * The ESCAPE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(char[] a) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        char runValue = a[0];
+        int runLength = 1;
+        for (int i=1; i<a.length; ++i) {
+            char s = a[i];
+            if (s == runValue && runLength < 0xFFFF) ++runLength;
+            else {
+            encodeRun(buffer, (short)runValue, runLength);
+            runValue = s;
+            runLength = 1;
+            }
+        }
+        encodeRun(buffer, (short)runValue, runLength);
+        return buffer.toString();
+    }
+
+    /**
+     * Construct a string representing a byte array.  Use run-length encoding.
+     * Two bytes are packed into a single char, with a single extra zero byte at
+     * the end if needed.  A byte represents itself, unless it is the
+     * ESCAPE_BYTE.  Then the following notations are possible:
+     *   ESCAPE_BYTE ESCAPE_BYTE   ESCAPE_BYTE literal
+     *   ESCAPE_BYTE n b           n instances of byte b
+     * Since an encoded run occupies 3 bytes, we only encode runs of 4 or
+     * more bytes.  Thus we have n > 0 and n != ESCAPE_BYTE and n <= 0xFF.
+     * If we encounter a run where n == ESCAPE_BYTE, we represent this as:
+     *   b ESCAPE_BYTE n-1 b
+     * The ESCAPE_BYTE value is chosen so as not to collide with commonly
+     * seen values.
+     */
+    static public final String arrayToRLEString(byte[] a) {
+        StringBuffer buffer = new StringBuffer();
+        buffer.append((char) (a.length >> 16));
+        buffer.append((char) a.length);
+        byte runValue = a[0];
+        int runLength = 1;
+        byte[] state = new byte[2];
+        for (int i=1; i<a.length; ++i) {
+            byte b = a[i];
+            if (b == runValue && runLength < 0xFF) ++runLength;
+            else {
+                encodeRun(buffer, runValue, runLength, state);
+                runValue = b;
+                runLength = 1;
+            }
+        }
+        encodeRun(buffer, runValue, runLength, state);
+
+        // We must save the final byte, if there is one, by padding
+        // an extra zero.
+        if (state[0] != 0) appendEncodedByte(buffer, (byte)0, state);
+
+        return buffer.toString();
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFFFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, int value, int length) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == ESCAPE) {
+                    appendInt(buffer, value);
+                }
+                appendInt(buffer, value);
+            }
+        }
+        else {
+            if (length == (int) ESCAPE) {
+                if (value == (int) ESCAPE) {
+                    appendInt(buffer, ESCAPE);
+                }
+                appendInt(buffer, value);
+                --length;
+            }
+            appendInt(buffer, ESCAPE);
+            appendInt(buffer, length);
+            appendInt(buffer, value); // Don't need to escape this value
+        }
+    }
+    private static final void appendInt(StringBuffer buffer, int value) {
+        buffer.append((char)(value >>> 16));
+        buffer.append((char)(value & 0xFFFF));
+    }
+
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFFFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, short value, int length) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == (int) ESCAPE) buffer.append(ESCAPE);
+                buffer.append((char) value);
+            }
+        }
+        else {
+            if (length == (int) ESCAPE) {
+                if (value == (int) ESCAPE) buffer.append(ESCAPE);
+                buffer.append((char) value);
+                --length;
+            }
+            buffer.append(ESCAPE);
+            buffer.append((char) length);
+            buffer.append((char) value); // Don't need to escape this value
+        }
+    }
+
+    /**
+     * Encode a run, possibly a degenerate run (of < 4 values).
+     * @param length The length of the run; must be > 0 && <= 0xFF.
+     */
+    private static final void encodeRun(StringBuffer buffer, byte value, int length,
+                    byte[] state) {
+        if (length < 4) {
+            for (int j=0; j<length; ++j) {
+                if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+                appendEncodedByte(buffer, value, state);
+            }
+        }
+        else {
+            if (length == ESCAPE_BYTE) {
+            if (value == ESCAPE_BYTE) appendEncodedByte(buffer, ESCAPE_BYTE, state);
+            appendEncodedByte(buffer, value, state);
+            --length;
+            }
+            appendEncodedByte(buffer, ESCAPE_BYTE, state);
+            appendEncodedByte(buffer, (byte)length, state);
+            appendEncodedByte(buffer, value, state); // Don't need to escape this value
+        }
+    }
+
+    /**
+     * Append a byte to the given StringBuffer, packing two bytes into each
+     * character.  The state parameter maintains intermediary data between
+     * calls.
+     * @param state A two-element array, with state[0] == 0 if this is the
+     * first byte of a pair, or state[0] != 0 if this is the second byte
+     * of a pair, in which case state[1] is the first byte.
+     */
+    private static final void appendEncodedByte(StringBuffer buffer, byte value,
+                        byte[] state) {
+        if (state[0] != 0) {
+            char c = (char) ((state[1] << 8) | (((int) value) & 0xFF));
+            buffer.append(c);
+            state[0] = 0;
+        }
+        else {
+            state[0] = 1;
+            state[1] = value;
+        }
+    }
+
+    /**
+     * Construct an array of ints from a run-length encoded string.
+     */
+    static public final int[] RLEStringToIntArray(String s) {
+        int length = getInt(s, 0);
+        int[] array = new int[length];
+        int ai = 0, i = 1;
+
+        int maxI = s.length() / 2;
+        while (ai < length && i < maxI) {
+            int c = getInt(s, i++);
+
+            if (c == ESCAPE) {
+                c = getInt(s, i++);
+                if (c == ESCAPE) {
+                    array[ai++] = c;
+                } else {
+                    int runLength = c;
+                    int runValue = getInt(s, i++);
+                    for (int j=0; j<runLength; ++j) {
+                        array[ai++] = runValue;
+                    }
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length || i != maxI) {
+            throw new InternalError("Bad run-length encoded int array");
+        }
+
+        return array;
+    }
+    static final int getInt(String s, int i) {
+        return (((int) s.charAt(2*i)) << 16) | (int) s.charAt(2*i+1);
+    }
+
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public final short[] RLEStringToShortArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        short[] array = new short[length];
+        int ai = 0;
+        for (int i=2; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c == ESCAPE) {
+                c = s.charAt(++i);
+                if (c == ESCAPE) {
+                    array[ai++] = (short) c;
+                } else {
+                    int runLength = (int) c;
+                    short runValue = (short) s.charAt(++i);
+                    for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+                }
+            }
+            else {
+                array[ai++] = (short) c;
+            }
+        }
+
+        if (ai != length)
+            throw new InternalError("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of shorts from a run-length encoded string.
+     */
+    static public final char[] RLEStringToCharArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        char[] array = new char[length];
+        int ai = 0;
+        for (int i=2; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c == ESCAPE) {
+                c = s.charAt(++i);
+                if (c == ESCAPE) {
+                    array[ai++] = c;
+                } else {
+                    int runLength = (int) c;
+                    char runValue = s.charAt(++i);
+                    for (int j=0; j<runLength; ++j) array[ai++] = runValue;
+                }
+            }
+            else {
+                array[ai++] = c;
+            }
+        }
+
+        if (ai != length)
+            throw new InternalError("Bad run-length encoded short array");
+
+        return array;
+    }
+
+    /**
+     * Construct an array of bytes from a run-length encoded string.
+     */
+    static public final byte[] RLEStringToByteArray(String s) {
+        int length = (((int) s.charAt(0)) << 16) | ((int) s.charAt(1));
+        byte[] array = new byte[length];
+        boolean nextChar = true;
+        char c = 0;
+        int node = 0;
+        int runLength = 0;
+        int i = 2;
+        for (int ai=0; ai<length; ) {
+            // This part of the loop places the next byte into the local
+            // variable 'b' each time through the loop.  It keeps the
+            // current character in 'c' and uses the boolean 'nextChar'
+            // to see if we've taken both bytes out of 'c' yet.
+            byte b;
+            if (nextChar) {
+                c = s.charAt(i++);
+                b = (byte) (c >> 8);
+                nextChar = false;
+            }
+            else {
+                b = (byte) (c & 0xFF);
+                nextChar = true;
+            }
+
+            // This part of the loop is a tiny state machine which handles
+            // the parsing of the run-length encoding.  This would be simpler
+            // if we could look ahead, but we can't, so we use 'node' to
+            // move between three nodes in the state machine.
+            switch (node) {
+            case 0:
+                // Normal idle node
+                if (b == ESCAPE_BYTE) {
+                    node = 1;
+                }
+                else {
+                    array[ai++] = b;
+                }
+                break;
+            case 1:
+                // We have seen one ESCAPE_BYTE; we expect either a second
+                // one, or a run length and value.
+                if (b == ESCAPE_BYTE) {
+                    array[ai++] = ESCAPE_BYTE;
+                    node = 0;
+                }
+                else {
+                    runLength = b;
+                    // Interpret signed byte as unsigned
+                    if (runLength < 0) runLength += 0x100;
+                    node = 2;
+                }
+                break;
+            case 2:
+                // We have seen an ESCAPE_BYTE and length byte.  We interpret
+                // the next byte as the value to be repeated.
+                for (int j=0; j<runLength; ++j) array[ai++] = b;
+                node = 0;
+                break;
+            }
+        }
+
+        if (node != 0)
+            throw new InternalError("Bad run-length encoded byte array");
+
+        if (i != s.length())
+            throw new InternalError("Excess data in RLE byte array string");
+
+        return array;
+    }
+
+    /**
+     * Format a String for representation in a source file.  This includes
+     * breaking it into lines escaping characters using octal notation
+     * when necessary (control characters and double quotes).
+     */
+    static public final String formatForSource(String s) {
+        StringBuffer buffer = new StringBuffer();
+        for (int i=0; i<s.length();) {
+            if (i > 0) buffer.append("+\n");
+            buffer.append("        \"");
+            int count = 11;
+            while (i<s.length() && count<80) {
+            char c = s.charAt(i++);
+            if (c < '\u0020' || c == '"' || c == '\\') {
+                // Represent control characters, backslash and double quote
+                // using octal notation; otherwise the string we form
+                // won't compile, since Unicode escape sequences are
+                // processed before tokenization.
+                buffer.append('\\');
+                buffer.append(HEX_DIGIT[(c & 0700) >> 6]); // HEX_DIGIT works for octal
+                buffer.append(HEX_DIGIT[(c & 0070) >> 3]);
+                buffer.append(HEX_DIGIT[(c & 0007)]);
+                count += 4;
+            }
+            else if (c <= '\u007E') {
+                buffer.append(c);
+                count += 1;
+            }
+            else {
+                buffer.append("\\u");
+                buffer.append(HEX_DIGIT[(c & 0xF000) >> 12]);
+                buffer.append(HEX_DIGIT[(c & 0x0F00) >> 8]);
+                buffer.append(HEX_DIGIT[(c & 0x00F0) >> 4]);
+                buffer.append(HEX_DIGIT[(c & 0x000F)]);
+                count += 6;
+            }
+            }
+            buffer.append('"');
+        }
+        return buffer.toString();
+    }
+
+    static final char[] HEX_DIGIT = {'0','1','2','3','4','5','6','7',
+                     '8','9','A','B','C','D','E','F'};
+
+
+    /**
+     * Convert characters outside the range U+0020 to U+007F to
+     * Unicode escapes, and convert backslash to a double backslash.
+     */
+    public static final String escape(String s) {
+        StringBuffer buf = new StringBuffer();
+        for (int i=0; i<s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c >= ' ' && c <= 0x007F) {
+                if (c == '\\') {
+                    buf.append("\\\\"); // That is, "\\"
+                } else {
+                    buf.append(c);
+                }
+            } else {
+                buf.append("\\u");
+                if (c < 0x1000) {
+                    buf.append('0');
+                    if (c < 0x100) {
+                        buf.append('0');
+                        if (c < 0x10) {
+                            buf.append('0');
+                        }
+                    }
+                }
+                buf.append(Integer.toHexString(c));
+            }
+        }
+        return buf.toString();
+    }
+}
+
diff --git a/src/com/ibm/util/resources/BuddhistCalendarSymbols.java b/src/com/ibm/util/resources/BuddhistCalendarSymbols.java
new file mode 100755
index 0000000..07f95ce
--- /dev/null
+++ b/src/com/ibm/util/resources/BuddhistCalendarSymbols.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/BuddhistCalendarSymbols.java,v $ 
+ * $Date: 2000/03/10 04:18:00 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Buddhist Calendar
+ */
+public class BuddhistCalendarSymbols extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "BE"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/BuddhistCalendarSymbols_ar.java b/src/com/ibm/util/resources/BuddhistCalendarSymbols_ar.java
new file mode 100755
index 0000000..d03d817
--- /dev/null
+++ b/src/com/ibm/util/resources/BuddhistCalendarSymbols_ar.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/BuddhistCalendarSymbols_ar.java,v $ 
+ * $Date: 2000/03/10 04:18:00 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Buddhist Calendar
+ */
+public class BuddhistCalendarSymbols_ar extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1999 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "\u0627\u0644\u062A\u0642\u0648\u064A\u0645 \u0627\u0644\u0628\u0648\u0630\u064A"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/BuddhistCalendarSymbols_hu.java b/src/com/ibm/util/resources/BuddhistCalendarSymbols_hu.java
new file mode 100755
index 0000000..2a3a333
--- /dev/null
+++ b/src/com/ibm/util/resources/BuddhistCalendarSymbols_hu.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/BuddhistCalendarSymbols_hu.java,v $ 
+ * $Date: 2000/03/10 04:18:00 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hungarian Date Format symbols for the Buddhist Calendar
+ */
+public class BuddhistCalendarSymbols_hu extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "BK"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/BuddhistCalendarSymbols_th.java b/src/com/ibm/util/resources/BuddhistCalendarSymbols_th.java
new file mode 100755
index 0000000..8ce2bf9
--- /dev/null
+++ b/src/com/ibm/util/resources/BuddhistCalendarSymbols_th.java
@@ -0,0 +1,33 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/BuddhistCalendarSymbols_th.java,v $ 
+ * $Date: 2000/03/10 04:18:00 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Thai version of the Date Format symbols for the Buddhist calendar
+ */
+public class BuddhistCalendarSymbols_th extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Eras", new String[] {
+                "\u0e1e.\u0e28."
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HebrewCalendarSymbols.java b/src/com/ibm/util/resources/HebrewCalendarSymbols.java
new file mode 100755
index 0000000..14898b7
--- /dev/null
+++ b/src/com/ibm/util/resources/HebrewCalendarSymbols.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HebrewCalendarSymbols.java,v $ 
+ * $Date: 2000/03/10 04:18:00 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+                "Tishri",
+                "Heshvan",
+                "Kislev",
+                "Tevet",
+                "Shevat",
+                "Adar I",       // Leap years only
+                "Adar",
+                "Nisan",
+                "Iyar",
+                "Sivan",
+                "Tamuz",
+                "Av",
+                "Elul",
+            } },
+        { "Eras", new String[] { 
+                "AM"
+            } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HebrewCalendarSymbols_fi.java b/src/com/ibm/util/resources/HebrewCalendarSymbols_fi.java
new file mode 100755
index 0000000..48a88ee
--- /dev/null
+++ b/src/com/ibm/util/resources/HebrewCalendarSymbols_fi.java
@@ -0,0 +1,51 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HebrewCalendarSymbols_fi.java,v $ 
+ * $Date: 2000/03/10 04:18:01 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Finnish date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_fi extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "Name",       "Juutalainen kalenteri" },
+        
+        { "MonthNames", new String[] {
+                "Ti\u0161r\u00ECkuu",       // Tishri
+                "He\u0161v\u00E1nkuu",      // Heshvan
+                "Kisl\u00E9vkuu",           // Kislev
+                "Tev\u00E9tkuu",            // Tevet
+                "\u0160evatkuu",            // Shevat
+                "Ad\u00E1rkuu",             // Adar I
+                "Ad\u00E1rkuu II",          // Adar
+                "Nis\u00E1nkuu",            // Nisan
+                "Ijj\u00E1rkuu",            // Iyar
+                "Siv\u00E1nkuu",            // Sivan
+                "Tamm\u00FAzkuu",           // Tamuz
+                "Abkuu",                    // Av
+                "El\u00FAlkuu",             // Elul
+            } },
+
+        { "Eras", new String[] { 
+                "AM"                        // Anno Mundi
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HebrewCalendarSymbols_fr.java b/src/com/ibm/util/resources/HebrewCalendarSymbols_fr.java
new file mode 100755
index 0000000..b3befa0
--- /dev/null
+++ b/src/com/ibm/util/resources/HebrewCalendarSymbols_fr.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HebrewCalendarSymbols_fr.java,v $ 
+ * $Date: 2000/03/10 04:18:01 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * French date format symbols for the Hebrew Calendar.
+ * This data actually applies to French Canadian.  If we receive
+ * official French data from our France office, we should move the 
+ * French Canadian data (if it's different) down into _fr_CA
+ */
+public class HebrewCalendarSymbols_fr extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+                "Tisseri",      // Tishri
+                "Hesvan",       // Heshvan
+                "Kislev",       // Kislev
+                "T\u00e9beth",  // Tevet
+                "Sch\u00e9bat", // Shevat
+                "Adar",         // Adar I
+                "Adar II",      // Adar
+                "Nissan",       // Nisan
+                "Iyar",         // Iyar
+                "Sivan",        // Sivan
+                "Tamouz",       // Tamuz
+                "Ab",           // Av
+                "Elloul",       // Elul
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HebrewCalendarSymbols_hu.java b/src/com/ibm/util/resources/HebrewCalendarSymbols_hu.java
new file mode 100755
index 0000000..16908fc
--- /dev/null
+++ b/src/com/ibm/util/resources/HebrewCalendarSymbols_hu.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HebrewCalendarSymbols_hu.java,v $ 
+ * $Date: 2000/03/10 04:18:01 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hungarian date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_hu extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+                "Tisri",                        // Tishri
+                "Hesv\u00E1n",                  // Heshvan
+                "Kiszl\u00E9v",                 // Kislev
+                "T\u00E9v\u00E9sz",             // Tevet
+                "Sv\u00E1t",                    // Shevat
+                "\u00C1d\u00E1r ris\u00F3n",    // Adar I
+                "\u00C1d\u00E1r s\u00E9ni",     // Adar
+                "Nisz\u00E1n",                  // Nisan
+                "Ij\u00E1r",                    // Iyar
+                "Sziv\u00E1n",                  // Sivan
+                "Tamuz",                        // Tamuz
+                "\u00C1v",                      // Av
+                "Elul",                         // Elul
+            } },
+        { "Eras", new String[] {
+                "T\u00C9"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HebrewCalendarSymbols_iw.java b/src/com/ibm/util/resources/HebrewCalendarSymbols_iw.java
new file mode 100755
index 0000000..ac78f23
--- /dev/null
+++ b/src/com/ibm/util/resources/HebrewCalendarSymbols_iw.java
@@ -0,0 +1,48 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HebrewCalendarSymbols_iw.java,v $ 
+ * $Date: 2000/03/10 04:18:01 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hebrew-language date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_iw extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+                "\u05EA\u05E9\u05E8\u05D9",                 // Tishri
+                "\u05D7\u05E9\u05D5\u05DF",                 // Heshvan
+                "\u05DB\u05E1\u05DC\u05D5",                 // Kislev
+                "\u05D8\u05D1\u05EA",                       // Tevet
+                "\u05E9\u05D1\u05D8",                       // Shevat
+                "\u05E9\u05D1\u05D8",                       // Adar I
+                "\u05D0\u05D3\u05E8 \u05E9\u05E0\u05D9",    // Adar
+                "\u05E0\u05D9\u05E1\u05DF",                 // Nisan
+                "\u05D0\u05D9\u05D9\u05E8",                 // Iyar
+                "\u05E1\u05D9\u05D5\u05DF",                 // Sivan
+                "\u05EA\u05DE\u05D5\u05D6",                 // Tamuz
+                "\u05D0\u05D1",                             // Av
+                "\u05D0\u05DC\u05D5\u05DC",                 // Elul
+            } },
+        { "Eras", new String[] { 
+                "\u05DC\u05D1\u05D4\042\u05E2"
+            } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HebrewCalendarSymbols_nl.java b/src/com/ibm/util/resources/HebrewCalendarSymbols_nl.java
new file mode 100755
index 0000000..ebceb36
--- /dev/null
+++ b/src/com/ibm/util/resources/HebrewCalendarSymbols_nl.java
@@ -0,0 +1,45 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HebrewCalendarSymbols_nl.java,v $ 
+ * $Date: 2000/03/10 04:18:01 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Dutch date format symbols for the Hebrew Calendar
+ */
+public class HebrewCalendarSymbols_nl extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+                "Tisjrie",      // Tishri
+                "Chesjwan",     // Heshvan
+                "Kislev",       // Kislev
+                "Tevet",        // Tevet
+                "Sjevat",       // Shevat
+                "Adar",         // Adar I
+                "Adar B",       // Adar
+                "Nisan",        // Nisan
+                "Ijar",         // Iyar
+                "Sivan",        // Sivan
+                "Tammoez",      // Tamuz
+                "Av",           // Av
+                "Elloel",       // Elul
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HolidayBundle.java b/src/com/ibm/util/resources/HolidayBundle.java
new file mode 100755
index 0000000..7180302
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle.java,v $ 
+ * $Date: 2000/03/10 04:18:01 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; };
+
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_da.java b/src/com/ibm/util/resources/HolidayBundle_da.java
new file mode 100755
index 0000000..12f9a51
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_da.java
@@ -0,0 +1,38 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_da.java,v $ 
+ * $Date: 2000/03/10 04:18:02 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da extends ListResourceBundle
+{
+    static private final Object[][] fContents =
+    {
+        {   "Armistice Day",        "v…benhvile" },
+        {   "Ascension",            "himmelfart" },
+        {   "Boxing Day",           "anden juledag" },
+        {   "Christmas Eve",        "juleaften" },
+        {   "Easter",               "p…ske" },
+        {   "Epiphany",             "helligtrekongersdag" },
+        {   "Good Friday",          "langfredag" },
+        {   "Halloween",            "allehelgensaften" },
+        {   "Maundy Thursday",      "sk†rtorsdag" },
+        {   "Palm Sunday",          "palmes°ndag" },
+        {   "Pentecost",            "pinse" },
+        {   "Shrove Tuesday",       "hvidetirsdag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_da_DK.java b/src/com/ibm/util/resources/HolidayBundle_da_DK.java
new file mode 100755
index 0000000..7b4d890
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_da_DK.java
@@ -0,0 +1,44 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_da_DK.java,v $ 
+ * $Date: 2000/03/10 04:18:02 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_da_DK extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.APRIL,   30, -Calendar.FRIDAY, "General Prayer Day"),
+        new SimpleHoliday(Calendar.JUNE,    5,                    "Constitution Day"),
+        SimpleHoliday.CHRISTMAS_EVE,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.MAUNDY_THURSDAY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        {   "holidays",             fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_de.java b/src/com/ibm/util/resources/HolidayBundle_de.java
new file mode 100755
index 0000000..9bbef32
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_de.java
@@ -0,0 +1,73 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_de.java,v $ 
+ * $Date: 2000/03/10 04:18:02 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",              "Allerheiligen" },
+        {   "All Souls' Day",               "Allerseelen" },
+        {   "Armistice Day",                "Waffenstillstandstag" },
+        {   "Ascension",                    "Christi Himmelfahrt" },
+        {   "Ash Wednesday",                "Aschermittwoch" },
+        {   "Assumption",                   "Mari„ Himmelfahrt" },
+        {   "Boxing Day",                   "2. Weihnachtstag" },
+        {   "Carnival",                     "Karneval" },
+        {   "Christmas",                    "Weihnachtstag" },
+        {   "Civic Holiday",                "B’rgerfeiertag" },
+        {   "Constitution Day",             "Verfassungstag" },
+        {   "Corpus Christi",               "Fronleichnam" },
+        {   "Day of Prayer and Repentance", "Buž- und Bettag" },
+        {   "Easter Monday",                "Ostermonntag" },
+        {   "Easter Sunday",                "Ostersonntag" },
+        {   "Epiphany",                     "Heilige 3 K÷nige" },
+        {   "Father's Day",                 "Vatertag" },
+        {   "Flag Day",                     "Jahrestag der Nationalflagge" },
+        {   "German Unity Day",             "Tag der deutschen Einheit" },
+        {   "Good Friday",                  "Karfreitag" },
+        {   "Halloween",                    "Abend vor Allerheiligen" },
+        {   "Immaculate Conception",        "Mari„ Empf„ngnis" },
+        {   "Independence Day",             "Unabh„ngigkeitstag" },
+        {   "Labor Day",                    "Tag der Arbeit" },
+        {   "Liberation Day",               "Befreiungstag" },
+        {   "Mardi Gras",                   "Faschingsdienstag" },
+        {   "Maundy Thursday",              "Gr’ndonnerstag" },
+        {   "May Day",                      "Maifeiertag" },
+        {   "Memorial Day",                 "Tag des Gedenkens" },
+        {   "Mother's Day",                 "Muttertag" },
+        {   "National Holiday",             "Nationalfeiertag" },
+        {   "New Year's Day",               "Neujahr" },
+        {   "New Year's Eve",               "Silvesterabend" },
+        {   "Palm Sunday",                  "Palmsonntag" },
+        {   "Pentecost",                    "Pfingsten" },
+        {   "Presidents' Day",              "Pr„sidentstag" },
+        {   "Remembrance Day",              "Volkstrauertag" },
+        {   "Revolution Day",               "Jahrestag der Revolution" },
+        {   "Rose Monday",                  "Rosenmontag" },
+        {   "St. Stephen's Day",            "Stephanitag" },
+        {   "Shrove Tuesday",               "Faschingsdienstag" },
+        {   "Spring Holiday",               "Tag des Fr’hlings" },
+        {   "Summer Bank Holiday",          "Bankfeiertag" },
+        {   "Thanksgiving",                 "Dankfest" },
+        {   "Unity Day",                    "Einheitstag" },
+        {   "Veterans' Day",                "Veteranstag" },
+        {   "Victory Day",                  "Tag der Befreiung" },
+        {   "Washington's Birthday",        "Washingtons Geburtstag" },
+        {   "Whit Monday",                  "Pfingstmontag" },
+        {   "Whit Sunday",                  "Pfingstsonntag" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_de_AT.java b/src/com/ibm/util/resources/HolidayBundle_de_AT.java
new file mode 100755
index 0000000..ed3d872
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_de_AT.java
@@ -0,0 +1,49 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_de_AT.java,v $ 
+ * $Date: 2000/03/10 04:18:02 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_AT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+        EasterHoliday.CORPUS_CHRISTI,
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.ST_STEPHENS_DAY,
+
+        new SimpleHoliday(Calendar.MAY,        1,  0,               "National Holiday"),
+        new SimpleHoliday(Calendar.OCTOBER,   31, -Calendar.MONDAY, "National Holiday"),
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        // Only holidays names different from those used in Germany are listed here
+        {   "Christmas",        "Christtag" },
+        {   "New Year's Day",   "Neujahrstag" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/HolidayBundle_de_DE.java b/src/com/ibm/util/resources/HolidayBundle_de_DE.java
new file mode 100755
index 0000000..f18c820
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_de_DE.java
@@ -0,0 +1,44 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_de_DE.java,v $ 
+ * $Date: 2000/03/10 04:18:02 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_de_DE extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.JUNE,      15,  Calendar.WEDNESDAY,  "Memorial Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    3,  0,                   "Unity Day"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  18,  0,                   "Day of Prayer and Repentance"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_el.java b/src/com/ibm/util/resources/HolidayBundle_el.java
new file mode 100755
index 0000000..26fafa1
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_el.java
@@ -0,0 +1,37 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_el.java,v $ 
+ * $Date: 2000/03/10 04:18:02 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "Assumption",           "15 \u0391\u03cd\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5" },
+        {   "Boxing Day",           "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03ce\u03bd \u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03c5\u03b3\u03ad\u03bd\u03bd\u03c9\u03bd" },
+        {   "Christmas",            "\u03a7\u03c1\u03b9\u03c3\u03c4\u03bf\u03cd\u03b3\u03b5\u03bd\u03bd\u03b1" },
+        {   "Clean Monday",         "\u039a\u03b1\u03b8\u03b1\u03c1\u03ae \u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1" },
+        {   "Easter Monday",        "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03ac\u03c3\u03c7\u03b1" },
+        {   "Epiphany",             "\u0388\u03c0\u03b9\u03c6\u03ac\u03bd\u03b5\u03b9\u03b1" },
+        {   "Good Friday",          "\u039c\u03b5\u03b3\u03ac\u03bb\u03b7 \u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae" },
+        {   "May Day",              "\u03a0\u03c1\u03c9\u03c4\u03bf\u03bc\u03b1\u03b3\u03b9\u03ac" },
+        {   "New Year's Day",       "\u03a0\u03c1\u03c9\u03c4\u03bf\u03c7\u03c1\u03bf\u03bd\u03b9\u03ac" },
+        {   "Ochi Day",             "28 \u038c\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5" },
+        {   "Whit Monday",          "\u0394\u03b5\u03cd\u03c4\u03b5\u03c1\u03b7 \u03bc\u03ad\u03c1\u03b1 \u03c4\u03bf\u03cd \u03a0\u03b5\u03bd\u03c4\u03b7\u03ba\u03bf\u03c3\u03c4\u03ae" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_el_GR.java b/src/com/ibm/util/resources/HolidayBundle_el_GR.java
new file mode 100755
index 0000000..c236303
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_el_GR.java
@@ -0,0 +1,45 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_el_GR.java,v $ 
+ * $Date: 2000/03/10 04:18:02 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_el_GR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+
+        new SimpleHoliday(Calendar.MARCH,     25,  0,    "Independence Day"),
+
+        SimpleHoliday.MAY_DAY,
+        SimpleHoliday.ASSUMPTION,
+
+        new SimpleHoliday(Calendar.OCTOBER,   28,  0,    "Ochi Day"),
+
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+
+        // Easter and related holidays in the Orthodox calendar
+        new EasterHoliday(-2,   true, "Good Friday"),
+        new EasterHoliday( 0,   true, "Easter Sunday"),
+        new EasterHoliday( 1,   true, "Easter Monday"),
+        new EasterHoliday(50,   true, "Whit Monday"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_en.java b/src/com/ibm/util/resources/HolidayBundle_en.java
new file mode 100755
index 0000000..bf62361
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_en.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_en.java,v $ 
+ * $Date: 2000/03/10 04:18:03 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en extends ListResourceBundle {
+
+    // Normally, each HolidayBundle uses the holiday's US English name
+    // as the string key for looking up the localized name.  This means
+    // that the key itself can be used if no name is found for the requested
+    // locale.
+    //
+    // For holidays where the key is _not_ the English name, e.g. in the
+    // case of conflicts, the English name must be given here.
+    //
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; };
+
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_en_CA.java b/src/com/ibm/util/resources/HolidayBundle_en_CA.java
new file mode 100755
index 0000000..cbc34f9
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_en_CA.java
@@ -0,0 +1,46 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_en_CA.java,v $ 
+ * $Date: 2000/03/10 04:18:03 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,       19, 0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JULY,       1, 0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1, Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,    "Labor Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11, 0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        //hey {jf} - where are these from?
+//        EasterHoliday.GOOD_FRIDAY,
+//        EasterHoliday.EASTER_SUNDAY,
+//        EasterHoliday.EASTER_MONDAY,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_en_GB.java b/src/com/ibm/util/resources/HolidayBundle_en_GB.java
new file mode 100755
index 0000000..055a097
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_en_GB.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_en_GB.java,v $ 
+ * $Date: 2000/03/10 04:18:03 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_GB extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        31, -Calendar.MONDAY,    "Spring Holiday"),
+        new SimpleHoliday(Calendar.AUGUST,     31, -Calendar.MONDAY,    "Summer Bank Holiday"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        new SimpleHoliday(Calendar.DECEMBER,   31, -Calendar.MONDAY,    "Christmas Holiday"),
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+
+        { "Labor Day",  "Labour Day" },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_en_US.java b/src/com/ibm/util/resources/HolidayBundle_en_US.java
new file mode 100755
index 0000000..a8912fb
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_en_US.java
@@ -0,0 +1,52 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_en_US.java,v $ 
+ * $Date: 2000/03/10 04:18:03 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_en_US extends ListResourceBundle
+{
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.JANUARY,   15, Calendar.MONDAY,      "Martin Luther King Day",   1986),
+
+        new SimpleHoliday(Calendar.FEBRUARY,  15, Calendar.MONDAY,      "Presidents' Day",          1976),
+        new SimpleHoliday(Calendar.FEBRUARY,  22,                       "Washington's Birthday",    1776, 1975),
+
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+
+        new SimpleHoliday(Calendar.MAY,        8, Calendar.SUNDAY,      "Mother's Day",             1914),
+
+        new SimpleHoliday(Calendar.MAY,       31, -Calendar.MONDAY,     "Memorial Day",             1971),
+        new SimpleHoliday(Calendar.MAY,       30,                       "Memorial Day",             1868, 1970),
+
+        new SimpleHoliday(Calendar.JUNE,      15, Calendar.SUNDAY,      "Father's Day",             1956),
+        new SimpleHoliday(Calendar.JULY,       4,                       "Independence Day",         1776),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1, Calendar.MONDAY,      "Labor Day",                1894),
+        new SimpleHoliday(Calendar.NOVEMBER,   2, Calendar.TUESDAY,     "Election Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8, Calendar.MONDAY,      "Columbus Day",             1971),
+        new SimpleHoliday(Calendar.OCTOBER ,  31,                       "Halloween"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,                       "Veterans' Day",            1918),
+        new SimpleHoliday(Calendar.NOVEMBER,  22, Calendar.THURSDAY,    "Thanksgiving",             1863),
+
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_es.java b/src/com/ibm/util/resources/HolidayBundle_es.java
new file mode 100755
index 0000000..7cd4a30
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_es.java
@@ -0,0 +1,57 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_es.java,v $ 
+ * $Date: 2000/03/10 04:18:03 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",          "Todos los Santos" },
+        {   "Armistice Day",            "Da del Armisticio" },
+        {   "Ascension",                "Ascensin" },
+        {   "Benito Jußrez Day",        "Da de la Benito Jußrez" },
+        {   "Boxing Day",               "Da en que se dan Aguinaldos Navide±os" },
+        {   "Canada Day",               "Da del Canadß" },
+        {   "Christmas Eve",            "Visperas de Navidad" },
+        {   "Christmas",                "Navidad" },
+        {   "Constitution Day",         "Da de la Constitucin" },
+        {   "Day of the Dead",          "Da de los Muertos" },
+        {   "Easter Sunday",            "Pascua" },
+        {   "Easter Monday",            "Pascua Lunes" },
+        {   "Epiphany",                 "Epifana" },
+        {   "Father's Day",             "Da del Padre" },
+        {   "Flag Day",                 "Da de la Bandera" },
+        {   "Good Friday",              "Viernes Santo" },
+        {   "Halloween",                "vspera de Todos los Santos" },
+        {   "Independence Day",         "Da de la Independencia" },
+        {   "Labor Day",                "Da de Trabajadores" },
+        {   "Maundy Thursday",          "Jueves Santo" },
+        {   "May Day",                  "Primero de Mayo" },
+        {   "Memorial Day",             "Da de la Rememoracin" },
+        {   "Mother's Day",             "Da de la Madre" },
+        {   "New Year's Day",           "A±o Nuevo" },
+        {   "Palm Sunday",              "Domingo de Ramos" },
+        {   "Pentecost",                "Pentecost‰s" },
+        {   "Presidents' Day",          "Da de Presidentes" },
+        {   "Revolution Day",           "Da de la Revolucin" },
+        {   "Shrove Tuesday",           "Martes de Carnaval" },
+        {   "Thanksgiving",             "Da de Accin de Gracias" },
+        {   "Veterans' Day",            "Da de Veteranos" },
+        {   "Victoria Day",             "Da de Victoria" },
+        {   "Whit Sunday",              "Pentecost‰s" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_es_MX.java b/src/com/ibm/util/resources/HolidayBundle_es_MX.java
new file mode 100755
index 0000000..a755834
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_es_MX.java
@@ -0,0 +1,40 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_es_MX.java,v $ 
+ * $Date: 2000/03/10 04:18:03 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_es_MX extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.FEBRUARY,   5,  0,    "Constitution Day"),
+        new SimpleHoliday(Calendar.MARCH,     21,  0,    "Benito Jußrez Day"),
+        SimpleHoliday.MAY_DAY,
+        new SimpleHoliday(Calendar.MAY,        5,  0,    "Cinco de Mayo"),
+        new SimpleHoliday(Calendar.JUNE,       1,  0,    "Navy Day"),
+        new SimpleHoliday(Calendar.SEPTEMBER, 16,  0,    "Independence Day"),
+        new SimpleHoliday(Calendar.OCTOBER,   12,  0,    "Da de la Raza"),
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,   2,  0,    "Day of the Dead"),
+        new SimpleHoliday(Calendar.NOVEMBER,  20,  0,    "Revolution Day"),
+        new SimpleHoliday(Calendar.DECEMBER,  12,  0,    "Flag Day"),
+        SimpleHoliday.CHRISTMAS,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_fr.java b/src/com/ibm/util/resources/HolidayBundle_fr.java
new file mode 100755
index 0000000..8a5691d
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_fr.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_fr.java,v $ 
+ * $Date: 2000/03/10 04:18:04 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr extends ListResourceBundle {
+    static private final Object[][] fContents = {
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Armistice Day",        "Jour de l'Armistice" },
+        {   "Ascension",            "Ascension" },
+        {   "Bastille Day",         "FŠte de la Bastille" },
+        {   "Benito Jußrez Day",    "FŠte de Benito Jußrez" },
+        {   "Boxing Day",           "Lendemain de No‹l" },
+        {   "Christmas Eve",        "Veille de No‹l" },
+        {   "Christmas",            "No‹l" },
+        {   "Easter Monday",        "P‚ques lundi" },
+        {   "Easter Sunday",        "P‚ques" },
+        {   "Epiphany",             "l'Ðpiphanie" },
+        {   "Flag Day",             "FŠte du Drapeau" },
+        {   "Good Friday",          "Vendredi Saint" },
+        {   "Halloween",            "Veille de la Toussaint" },
+        {   "All Saints' Day",      "Toussaint" },
+        {   "Independence Day",     "FŠte Ind‰pendance" },
+        {   "Maundy Thursday",      "Jeudi Saint" },
+        {   "Mother's Day",         "FŠte des mˆres" },
+        {   "National Day",         "FŠte Nationale" },
+        {   "New Year's Day",       "Jour de l'an" },
+        {   "Palm Sunday",          "les Rameaux" },
+        {   "Pentecost",            "PentecŸte" },
+        {   "Shrove Tuesday",       "Mardi Gras" },
+        {   "St. Stephen's Day",    "Saint-Ðtienne" },
+        {   "Victoria Day",         "FŠte de la Victoria" },
+        {   "Victory Day",          "FŠte de la Victoire" },
+    };
+
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_fr_CA.java b/src/com/ibm/util/resources/HolidayBundle_fr_CA.java
new file mode 100755
index 0000000..5b4a62c
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_fr_CA.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_fr_CA.java,v $ 
+ * $Date: 2000/03/10 04:18:04 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_CA extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.JANUARY,    1,  0,                  "New Year's Day"),
+        new SimpleHoliday(Calendar.MAY,       19,  0,                  "Victoria Day"),
+        new SimpleHoliday(Calendar.JUNE,      24,  0,                  "National Day"),
+        new SimpleHoliday(Calendar.JULY,       1,  0,                  "Canada Day"),
+        new SimpleHoliday(Calendar.AUGUST,     1,  Calendar.MONDAY,    "Civic Holiday"),
+        new SimpleHoliday(Calendar.SEPTEMBER,  1,  Calendar.MONDAY,    "Labour Day"),
+        new SimpleHoliday(Calendar.OCTOBER,    8,  Calendar.MONDAY,    "Thanksgiving"),
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0,                  "Remembrance Day"),
+        SimpleHoliday.CHRISTMAS,
+        SimpleHoliday.BOXING_DAY,
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.GOOD_FRIDAY,
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_fr_FR.java b/src/com/ibm/util/resources/HolidayBundle_fr_FR.java
new file mode 100755
index 0000000..edbba71
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_fr_FR.java
@@ -0,0 +1,42 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_fr_FR.java,v $ 
+ * $Date: 2000/03/10 04:18:04 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_fr_FR extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        new SimpleHoliday(Calendar.MAY,        1,  0, "Labor Day"),
+        new SimpleHoliday(Calendar.MAY,        8,  0, "Victory Day"),
+        new SimpleHoliday(Calendar.JULY,      14,  0, "Bastille Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        new SimpleHoliday(Calendar.NOVEMBER,  11,  0, "Armistice Day"),
+        SimpleHoliday.CHRISTMAS,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+        EasterHoliday.ASCENSION,
+        EasterHoliday.WHIT_SUNDAY,
+        EasterHoliday.WHIT_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_it.java b/src/com/ibm/util/resources/HolidayBundle_it.java
new file mode 100755
index 0000000..ddee7fb
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_it.java
@@ -0,0 +1,43 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_it.java,v $ 
+ * $Date: 2000/03/10 04:18:04 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it extends ListResourceBundle {
+    static private final Object[][] fContents =
+    {
+        {   "All Saints' Day",      "Ognissanti" },
+        {   "Armistice Day",        "armistizio" },
+        {   "Ascension",            "ascensione" },
+        {   "Ash Wednesday",        "mercoledΠdelle ceneri" },
+        {   "Boxing Day",           "Santo Stefano" },
+        {   "Christmas",            "natale" },
+        {   "Easter Sunday",        "pasqua" },
+        {   "Epiphany",             "Epifania" },
+        {   "Good Friday",          "venerdΠsanto" },
+        {   "Halloween",            "vigilia di Ognissanti" },
+        {   "Maundy Thursday",      "giovedΠsanto" },
+        {   "New Year's Day",       "anno nuovo" },
+        {   "Palm Sunday",          "domenica delle palme" },
+        {   "Pentecost",            "di Pentecoste" },
+        {   "Shrove Tuesday",       "martedi grasso" },
+        {   "St. Stephen's Day",    "Santo Stefano" },
+        {   "Thanksgiving",         "Giorno del Ringraziamento" },
+
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_it_IT.java b/src/com/ibm/util/resources/HolidayBundle_it_IT.java
new file mode 100755
index 0000000..738e137
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_it_IT.java
@@ -0,0 +1,41 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_it_IT.java,v $ 
+ * $Date: 2000/03/10 04:18:04 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_it_IT extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        SimpleHoliday.NEW_YEARS_DAY,
+        SimpleHoliday.EPIPHANY,
+        new SimpleHoliday(Calendar.APRIL,      1,  0,    "Liberation Day"),
+        new SimpleHoliday(Calendar.MAY,        1,  0,    "Labor Day"),
+        SimpleHoliday.ASSUMPTION,
+        SimpleHoliday.ALL_SAINTS_DAY,
+        SimpleHoliday.IMMACULATE_CONCEPTION,
+        SimpleHoliday.CHRISTMAS,
+        new SimpleHoliday(Calendar.DECEMBER,  26,  0,    "St. Stephens Day"),
+        SimpleHoliday.NEW_YEARS_EVE,
+
+        // Easter and related holidays
+        EasterHoliday.EASTER_SUNDAY,
+        EasterHoliday.EASTER_MONDAY,
+    };
+    static private final Object[][] fContents = {
+        { "holidays",           fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_iw.java b/src/com/ibm/util/resources/HolidayBundle_iw.java
new file mode 100755
index 0000000..f5c403c
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_iw.java
@@ -0,0 +1,27 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_iw.java,v $ 
+ * $Date: 2000/03/10 04:18:04 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw extends ListResourceBundle {
+
+    static private final Object[][] fContents = {
+        {   "", ""  },      // Can't be empty!
+    };
+
+    public synchronized Object[][] getContents() { return fContents; };
+
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_iw_IL.java b/src/com/ibm/util/resources/HolidayBundle_iw_IL.java
new file mode 100755
index 0000000..5e9bd30
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_iw_IL.java
@@ -0,0 +1,35 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_iw_IL.java,v $ 
+ * $Date: 2000/03/10 04:18:05 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_iw_IL extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        HebrewHoliday.ROSH_HASHANAH,
+        HebrewHoliday.YOM_KIPPUR,
+        HebrewHoliday.HANUKKAH,
+        HebrewHoliday.PURIM,
+        HebrewHoliday.PASSOVER,
+        HebrewHoliday.SHAVUOT,
+        HebrewHoliday.SELIHOT,
+    };
+
+    static private final Object[][] fContents = {
+        { "holidays",   fHolidays },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/HolidayBundle_ja_JP.java b/src/com/ibm/util/resources/HolidayBundle_ja_JP.java
new file mode 100755
index 0000000..785c967
--- /dev/null
+++ b/src/com/ibm/util/resources/HolidayBundle_ja_JP.java
@@ -0,0 +1,28 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/HolidayBundle_ja_JP.java,v $ 
+ * $Date: 2000/03/10 04:18:05 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+
+package com.ibm.util.resources;
+
+import com.ibm.util.*;
+import java.util.Calendar;
+import java.util.ListResourceBundle;
+
+public class HolidayBundle_ja_JP extends ListResourceBundle {
+    static private final Holiday[] fHolidays = {
+        new SimpleHoliday(Calendar.FEBRUARY,  11,  0,    "National Foundation Day"),
+    };
+    static private final Object[][] fContents = {
+        {   "holidays",         fHolidays   },
+    };
+    public synchronized Object[][] getContents() { return fContents; }
+};
diff --git a/src/com/ibm/util/resources/IslamicCalendarSymbols.java b/src/com/ibm/util/resources/IslamicCalendarSymbols.java
new file mode 100755
index 0000000..0fe5c68
--- /dev/null
+++ b/src/com/ibm/util/resources/IslamicCalendarSymbols.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/IslamicCalendarSymbols.java,v $ 
+ * $Date: 2000/03/10 04:18:05 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols extends ListResourceBundle {
+    
+    private static String copyright = "Copyright \u00a9 1998-1999 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+                "Muharram",
+                "Safar",
+                "Rabi' I",
+                "Rabi' II",
+                "Jumada I",
+                "Jumada I",
+                "Rajab",
+                "Sha'ban",
+                "Ramadan",
+                "Shawwal",
+                "Dhu'l-Qi'dah",
+                "Dhu'l-Hijjah",
+            } },
+        { "Eras", new String[] { 
+                "AH"
+            } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/IslamicCalendarSymbols_ar.java b/src/com/ibm/util/resources/IslamicCalendarSymbols_ar.java
new file mode 100755
index 0000000..30ecd6b
--- /dev/null
+++ b/src/com/ibm/util/resources/IslamicCalendarSymbols_ar.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/IslamicCalendarSymbols_ar.java,v $ 
+ * $Date: 2000/03/10 04:18:05 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_ar extends ListResourceBundle {
+    
+    private static String copyright = "Copyright \u00a9 1999 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] { 
+            "\u0645\u062D\u0631\u0645",                                             // Muharram
+            "\u0635\u0641\u0631",                                                   // Safar
+            "\u0631\u0628\u064A\u0639 \u0627\u0644\u0623\u0648\u0644",              // Rabi' I
+            "\u0631\u0628\u064A\u0639 \u0627\u0644\u0622\u062E\u0631",              // Rabi' II
+            "\u062C\u0645\u0627\u062F\u0649 \u0627\u0644\u0623\u0648\u0644\u0649",  // Jumada I
+            "\u062C\u0645\u0627\u062F\u0649 \u0627\u0644\u0622\u062E\u0631\u0629",  // Jumada I
+            "\u0631\u062C\u0628",                                                   // Rajab
+            "\u0634\u0639\u0628\u0627\u0646",                                       // Sha'ban
+            "\u0631\u0645\u0636\u0627\u0646",                                       // Ramadan
+            "\u0634\u0648\u0627\u0644",                                             // Shawwal
+            "\u0630\u0648 \u0627\u0644\u0642\u0639\u062F\u0629",                    // Dhu'l-Qi'dah
+            "\u0630\u0648 \u0627\u0644\u062D\u062C\u0629",                          // Dhu'l-Hijjah
+        } },
+        { "Eras", new String[] { 
+            "\u0647\u200D",  // AH
+        } },
+    };
+        
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/IslamicCalendarSymbols_fi.java b/src/com/ibm/util/resources/IslamicCalendarSymbols_fi.java
new file mode 100755
index 0000000..a59e07b
--- /dev/null
+++ b/src/com/ibm/util/resources/IslamicCalendarSymbols_fi.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/IslamicCalendarSymbols_fi.java,v $ 
+ * $Date: 2000/03/10 04:18:05 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Finnish date format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_fi extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Muh\u00E1rram",                // Muharram
+            "S\u00E1far",                   // Safar
+            "Rab\u00ED' al-\u00E1wwal",     // Rabi' al-awwal
+            "Rab\u00ED' al-\u00E1khir",     // Rabi' al-thani
+            "D\u017Eumada-l-\u00FAla",      // Jumada al-awwal
+            "D\u017Eumada-l-\u00E1khira",   // Jumada al-thani
+            "Rad\u017Eab",                  // Rajab
+            "\u0160a'b\u00E1n",             // Sha'ban
+            "Ramad\u00E1n",                 // Ramadan
+            "\u0160awwal",                  // Shawwal
+            "Dhu-l-qada",                   // Dhu al-Qi'dah
+            "Dhu-l-hidd\u017Ea",            // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "AH"                            // Anno Hid\u017Era
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/IslamicCalendarSymbols_fr.java b/src/com/ibm/util/resources/IslamicCalendarSymbols_fr.java
new file mode 100755
index 0000000..ea33465
--- /dev/null
+++ b/src/com/ibm/util/resources/IslamicCalendarSymbols_fr.java
@@ -0,0 +1,50 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/IslamicCalendarSymbols_fr.java,v $ 
+ * $Date: 2000/03/10 04:18:05 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * French date format symbols for the Islamic Calendar
+ * This data actually applies to French Canadian.  If we receive
+ * official French data from our France office, we should move the 
+ * French Canadian data (if it's different) down into _fr_CA
+ */
+public class IslamicCalendarSymbols_fr extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Mouharram",            // Muharram
+            "Safar",                // Safar
+            "Rabi'-oul-Aououal",    // Rabi' al-awwal
+            "Rabi'-out-Tani",       // Rabi' al-thani
+            "Djoumada-l-Oula",      // Jumada al-awwal
+            "Djoumada-t-Tania",     // Jumada al-thani
+            "Radjab",               // Rajab
+            "Cha'ban",              // Sha'ban
+            "Ramadan",              // Ramadan
+            "Chaououal",            // Shawwal
+            "Dou-l-Qa'da",          // Dhu al-Qi'dah
+            "Dou-l-Hidjja",         // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "AH"        // Anno Hijri
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/IslamicCalendarSymbols_hu.java b/src/com/ibm/util/resources/IslamicCalendarSymbols_hu.java
new file mode 100755
index 0000000..fa6ce4b
--- /dev/null
+++ b/src/com/ibm/util/resources/IslamicCalendarSymbols_hu.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/IslamicCalendarSymbols_hu.java,v $ 
+ * $Date: 2000/03/10 04:18:06 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Hungarian date format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_hu extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Moharrem",                 // Muharram
+            "Safar",                    // Safar
+            "R\u00E9bi el avvel",       // Rabi' al-awwal
+            "R\u00E9bi el accher",      // Rabi' al-thani
+            "Dsem\u00E1di el avvel",    // Jumada al-awwal
+            "Dsem\u00E1di el accher",   // Jumada al-thani
+            "Redseb",                   // Rajab
+            "Sab\u00E1n",               // Sha'ban
+            "Ramad\u00E1n",             // Ramadan
+            "Sevv\u00E1l",              // Shawwal
+            "Ds\u00FCl kade",           // Dhu al-Qi'dah
+            "Ds\u00FCl hedse",          // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "MF"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/IslamicCalendarSymbols_iw.java b/src/com/ibm/util/resources/IslamicCalendarSymbols_iw.java
new file mode 100755
index 0000000..c39c8ae
--- /dev/null
+++ b/src/com/ibm/util/resources/IslamicCalendarSymbols_iw.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/IslamicCalendarSymbols_iw.java,v $ 
+ * $Date: 2000/03/10 04:18:06 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_iw extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "\u05DE\u05D5\u05D7\u05E8\u05DD",                                               // Muharram
+            "\u05E1\u05E4\u05E8",                                                           // Safar
+            "\u05E8\u05D1\u05D9\u05E2 \u05D0\u05DC-\u05D0\u05D5\u05D5\u05D0\u05DC",         // Rabi' al-awwal
+            "\u05E8\u05D1\u05D9\u05E2 \u05D0\u05DC-\u05EA\u05E0\u05D9",                     // Rabi' al-thani
+            "\u05D2'\u05D5\u05DE\u05D3\u05D4 \u05D0\u05DC-\u05D0\u05D5\u05D5\u05D0\u05DC",  // Jumada al-awwal
+            "\u05D2'\u05D5\u05DE\u05D3\u05D4 \u05D0\u05DC-\u05EA\u05E0\u05D9",              // Jumada al-thani
+            "\u05E8\u05D2'\u05D0\u05D1",                                                    // Rajab
+            "\u05E9\u05E2\u05D1\u05D0\u05DF",                                               // Sha'ban
+            "\u05E8\u05D0\u05DE\u05D3\u05DF",                                               // Ramadan
+            "\u05E9\u05D5\u05D5\u05D0\u05DC",                                               // Shawwal
+            "\u05E9\u05D5\u05D5\u05D0\u05DC",                                               // Dhu al-Qi'dah
+            "\u05D6\u05D5 \u05D0\u05DC-\u05D7\u05D9\u05D2'\u05D4",                          // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "\u05E9\u05E0\u05EA \u05D4\u05D9\u05D2'\u05E8\u05D4"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/IslamicCalendarSymbols_nl.java b/src/com/ibm/util/resources/IslamicCalendarSymbols_nl.java
new file mode 100755
index 0000000..bc5e352
--- /dev/null
+++ b/src/com/ibm/util/resources/IslamicCalendarSymbols_nl.java
@@ -0,0 +1,47 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/IslamicCalendarSymbols_nl.java,v $ 
+ * $Date: 2000/03/10 04:18:06 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Dutch date format symbols for the Islamic Calendar
+ */
+public class IslamicCalendarSymbols_nl extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "MonthNames", new String[] {
+            "Moeharram",            // Muharram
+            "Safar",                // Safar
+            "Rabi'a al awal ",      // Rabi' al-awwal
+            "Rabi'a al thani",      // Rabi' al-thani
+            "Joemad'al awal",       // Jumada al-awwal
+            "Joemad'al thani",      // Jumada al-thani
+            "Rajab",                // Rajab
+            "Sja'aban",             // Sha'ban
+            "Ramadan",              // Ramadan
+            "Sjawal",               // Shawwal
+            "Doe al ka'aba",        // Dhu al-Qi'dah
+            "Doe al hizja",         // Dhu al-Hijjah
+            } },
+        { "Eras", new String[] {
+            "Sa'na Hizjria"
+            } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/JapaneseCalendarSymbols.java b/src/com/ibm/util/resources/JapaneseCalendarSymbols.java
new file mode 100755
index 0000000..02f0d91
--- /dev/null
+++ b/src/com/ibm/util/resources/JapaneseCalendarSymbols.java
@@ -0,0 +1,282 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/JapaneseCalendarSymbols.java,v $ 
+ * $Date: 2000/03/10 04:18:06 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Default Date Format symbols for the Japanese Calendar
+ */
+public class JapaneseCalendarSymbols extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "DateTimePatterns",
+            new String[] {
+                "h:mm:ss a z", // full time pattern
+                "h:mm:ss a z", // long time pattern
+                "h:mm:ss a", // medium time pattern
+                "h:mm a", // short time pattern
+                "EEEE, MMMM d, yy G", // full date pattern
+                "MMMM d, yy G", // long date pattern
+                "MMM d, yy G", // medium date pattern
+                "M/d/yy", // short date pattern
+                "{1} {0}" // date-time pattern
+            }
+        },
+        { "Eras", new String[] {
+            // Name                         Gregorian Year
+            "Taika",                        //  645
+            "Hakuchi",                      //  650
+            "Hakuh\u014D",                  //  672
+            "Shuch\u014D",                  //  686
+            "Taih\u014D",                   //  701
+            "Keiun",                        //  704
+            "Wad\u014D",                    //  708
+            "Reiki",                        //  715
+            "Y\u014Dr\u014D",               //  717
+            "Jinki",                        //  724
+            "Tempy\u014D",                  //  729
+            "Tempy\u014D-kamp\u014D",       //  749
+            "Tempy\u014D-sh\u014Dh\u014D",  //  749
+            "Tempy\u014D-h\u014Dji",        //  757
+            "Temph\u014D-jingo",            //  765
+            "Jingo-keiun",                  //  767
+            "H\u014Dki",                    //  770
+            "Ten-\u014D",                   //  781
+            "Enryaku",                      //  782
+            "Daid\u014D",                   //  806
+            "K\u014Dnin",                   //  810
+            "Tench\u014D",                  //  824
+            "Sh\u014Dwa",                   //  834
+            "Kaj\u014D",                    //  848
+            "Ninju",                        //  851
+            "Saiko",                        //  854
+            "Tennan",                       //  857
+            "J\u014Dgan",                   //  859
+            "Genkei",                       //  877
+            "Ninna",                        //  885
+            "Kampy\u014D",                  //  889
+            "Sh\u014Dtai",                  //  898
+            "Engi",                         //  901
+            "Ench\u014D",                   //  923
+            "Sh\u014Dhei",                  //  931
+            "Tengy\u014D",                  //  938
+            "Tenryaku",                     //  947
+            "Tentoku",                      //  957
+            "\u014Cwa",                     //  961
+            "K\u014Dh\u014D",               //  964
+            "Anna",                         //  968
+            "Tenroku",                      //  970
+            "Ten-en",                       //  973
+            "J\u014Dgen",                   //  976
+            "Tengen",                       //  978
+            "Eikan",                        //  983
+            "Kanna",                        //  985
+            "Ei-en",                        //  987
+            "Eiso",                         //  989
+            "Sh\u014Dryaku",                //  990
+            "Ch\u014Dtoku",                 //  995
+            "Ch\u014Dh\u014D",              //  999
+            "Kank\u014D",                   // 1004
+            "Ch\u014Dwa",                   // 1012
+            "Kannin",                       // 1017
+            "Jian",                         // 1021
+            "Manju",                        // 1024
+            "Ch\u014Dgen",                  // 1028
+            "Ch\u014Dryaku",                // 1037
+            "Ch\u014Dky\u016B",             // 1040
+            "Kantoku",                      // 1044
+            "Eish\u014D",                   // 1046
+            "Tengi",                        // 1053
+            "K\u014Dhei",                   // 1058
+            "Jiryaku",                      // 1065
+            "Enky\u016B",                   // 1069
+            "Sh\u014Dho",                   // 1074
+            "Sh\u014Dryaku",                // 1077
+            "Eiho",                         // 1081
+            "\u014Ctoku",                   // 1084
+            "Kanji",                        // 1087
+            "Kaho",                         // 1094
+            "Eich\u014D",                   // 1096
+            "Sh\u014Dtoku",                 // 1097
+            "K\u014Dwa",                    // 1099
+            "Ch\u014Dji",                   // 1104
+            "Kash\u014D",                   // 1106
+            "Tennin",                       // 1108
+            "Ten-ei",                       // 1110
+            "Eiky\u016B",                   // 1113
+            "Gen-ei",                       // 1118
+            "Hoan",                         // 1120
+            "Tenji",                        // 1124
+            "Daiji",                        // 1126
+            "Tensh\u014D",                  // 1131
+            "Ch\u014Dsh\u014D",             // 1132
+            "Hoen",                         // 1135
+            "Eiji",                         // 1141
+            "K\u014Dji",                    // 1142
+            "Teny\u014D",                   // 1144
+            "Ky\u016Ban",                   // 1145
+            "Ninpei",                       // 1151
+            "Ky\u016Bju",                   // 1154
+            "Hogen",                        // 1156
+            "Heiji",                        // 1159
+            "Eiryaku",                      // 1160
+            "\u014Cho",                     // 1161
+            "Ch\u014Dkan",                  // 1163
+            "Eiman",                        // 1165
+            "Nin-an",                       // 1166
+            "Ka\u014D",                     // 1169
+            "Sh\u014Dan",                   // 1171
+            "Angen",                        // 1175
+            "Jish\u014D",                   // 1177
+            "Y\u014Dwa",                    // 1181
+            "Juei",                         // 1182
+            "Genryuku",                     // 1184
+            "Bunji",                        // 1185
+            "Kenky\u016B",                  // 1190
+            "Sh\u014Dji",                   // 1199
+            "Kennin",                       // 1201
+            "Genky\u016B",                  // 1204
+            "Ken-ei",                       // 1206
+            "Sh\u014Dgen",                  // 1207
+            "Kenryaku",                     // 1211
+            "Kenp\u014D",                   // 1213
+            "Sh\u014Dky\u016B",             // 1219
+            "J\u014D\u014D",                // 1222
+            "Gennin",                       // 1224
+            "Karoku",                       // 1225
+            "Antei",                        // 1227
+            "Kanki",                        // 1229
+            "J\u014Dei",                    // 1232
+            "Tempuku",                      // 1233
+            "Bunryaku",                     // 1234
+            "Katei",                        // 1235
+            "Ryakunin",                     // 1238
+            "En-\u014D",                    // 1239
+            "Ninji",                        // 1240
+            "Kangen",                       // 1243
+            "H\u014Dji",                    // 1247
+            "Kench\u014D",                  // 1249
+            "K\u014Dgen",                   // 1256
+            "Sh\u014Dka",                   // 1257
+            "Sh\u014Dgen",                  // 1259
+            "Bun-\u014D",                   // 1260
+            "K\u014Dch\u014D",              // 1261
+            "Bun-ei",                       // 1264
+            "Kenji",                        // 1275
+            "K\u014Dan",                    // 1278
+            "Sh\u014D\u014D",               // 1288
+            "Einin",                        // 1293
+            "Sh\u014Dan",                   // 1299
+            "Kengen",                       // 1302
+            "Kagen",                        // 1303
+            "Tokuji",                       // 1306
+            "Enkei",                        // 1308
+            "\u014Cch\u014D",               // 1311
+            "Sh\u014Dwa",                   // 1312
+            "Bunp\u014D",                   // 1317
+            "Gen\u014D",                    // 1319
+            "Genky\u014D",                  // 1321
+            "Sh\u014Dch\u016B",             // 1324
+            "Kareki",                       // 1326
+            "Gentoku",                      // 1329
+            "Genk\u014D",                   // 1331
+            "Kemmu",                        // 1334
+            "Engen",                        // 1336
+            "K\u014Dkoku",                  // 1340
+            "Sh\u014Dhei",                  // 1346
+            "Kentoku",                      // 1370
+            "Bunch\u0169",                  // 1372
+            "Tenju",                        // 1375
+            "K\u014Dwa",                    // 1381
+            "Gench\u0169",                  // 1384
+            "Meitoku",                      // 1384
+            "K\u014Dryaku",                 // 1379
+            "Kakei",                        // 1387
+            "K\u014D\u014D",                // 1389
+            "Meitoku",                      // 1390
+            "\u014Cei",                     // 1394
+            "Sh\u014Dch\u014D",             // 1428
+            "Eiky\u014D",                   // 1429
+            "Kakitsu",                      // 1441
+            "Bun-an",                       // 1444
+            "H\u014Dtoku",                  // 1449
+            "Ky\u014Dtoku",                 // 1452
+            "K\u014Dsh\u014D",              // 1455
+            "Ch\u014Droku",                 // 1457
+            "Kansh\u014D",                  // 1460
+            "Bunsh\u014D",                  // 1466
+            "\u014Cnin",                    // 1467
+            "Bunmei",                       // 1469
+            "Ch\u014Dky\u014D",             // 1487
+            "Entoku",                       // 1489
+            "Mei\u014D",                    // 1492
+            "Bunki",                        // 1501
+            "Eish\u014D",                   // 1504
+            "Taiei",                        // 1521
+            "Ky\u014Droku",                 // 1528
+            "Tenmon",                       // 1532
+            "K\u014Dji",                    // 1555
+            "Eiroku",                       // 1558
+            "Genki",                        // 1570
+            "Tensh\u014D",                  // 1573
+            "Bunroku",                      // 1592
+            "Keich\u014D",                  // 1596
+            "Genwa",                        // 1615
+            "Kan-ei",                       // 1624
+            "Sh\u014Dho",                   // 1644
+            "Keian",                        // 1648
+            "Sh\u014D\u014D",               // 1652
+            "Meiryaku",                     // 1655
+            "Manji",                        // 1658
+            "Kanbun",                       // 1661
+            "Enp\u014D",                    // 1673
+            "Tenwa",                        // 1681
+            "J\u014Dky\u014D",              // 1684
+            "Genroku",                      // 1688
+            "H\u014Dei",                    // 1704
+            "Sh\u014Dtoku",                 // 1711
+            "Ky\u014Dh\u014D",              // 1716
+            "Genbun",                       // 1736
+            "Kanp\u014D",                   // 1741
+            "Enky\u014D",                   // 1744
+            "Kan-en",                       // 1748
+            "H\u014Dryaku",                 // 1751
+            "Meiwa",                        // 1764
+            "An-ei",                        // 1772
+            "Tenmei",                       // 1781
+            "Kansei",                       // 1789
+            "Ky\u014Dwa",                   // 1801
+            "Bunka",                        // 1804
+            "Bunsei",                       // 1818
+            "Tenp\u014D",                   // 1830
+            "K\u014Dka",                    // 1844
+            "Kaei",                         // 1848
+            "Ansei",                        // 1854
+            "Man-en",                       // 1860
+            "Bunky\u016B",                  // 1861
+            "Genji",                        // 1864
+            "Kei\u014D",                    // 1865
+            "Meiji",                        // 1868
+            "Taish\u014D",                  // 1912
+            "Sh\u014Dwa",                   // 1926
+            "Heisei",                       // 1989
+        } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/com/ibm/util/resources/JapaneseCalendarSymbols_ja.java b/src/com/ibm/util/resources/JapaneseCalendarSymbols_ja.java
new file mode 100755
index 0000000..ebdf158
--- /dev/null
+++ b/src/com/ibm/util/resources/JapaneseCalendarSymbols_ja.java
@@ -0,0 +1,281 @@
+/*
+ *******************************************************************************
+ * Copyright (C) 1996-2000, International Business Machines Corporation and    *
+ * others. All Rights Reserved.                                                *
+ *******************************************************************************
+ *
+ * $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/util/resources/Attic/JapaneseCalendarSymbols_ja.java,v $ 
+ * $Date: 2000/03/10 04:18:06 $ 
+ * $Revision: 1.2 $
+ *
+ *****************************************************************************************
+ */
+package com.ibm.util.resources;
+
+import java.util.ListResourceBundle;
+
+/**
+ * Japanese Kanji version of the Date Format symbols for the Japanese calendar
+ */
+public class JapaneseCalendarSymbols_ja extends ListResourceBundle {
+
+    private static String copyright = "Copyright \u00a9 1998 IBM Corp. All Rights Reserved.";
+
+    static final Object[][] fContents = {
+        { "DateTimePatterns",
+            new String[] {
+                "H'\u6642'mm'\u5206'ss'\u79d2'z", // full time pattern
+                "H:mm:ss:z", // long time pattern
+                "H:mm:ss", // medium time pattern
+                "H:mm", // short time pattern
+                "G yy'\u5e74'M'\u6708'd'\u65e5'", // full date pattern
+                "G yy/MM/dd", // long date pattern
+                "G yy/MM/dd", // medium date pattern
+                "G yy/MM/dd", // short date pattern
+                "{1} {0}" // date-time pattern
+            }
+        },
+        { "Eras", new String[] {
+            "\u5927\u5316",             //  645 Taika
+            "\u767D\u96C9",             //  650 Hakuchi
+            "\u767D\u9CEF",             //  672 Hakuho
+            "\u6731\u9CE5",             //  686 Shucho
+            "\u5927\u5B9D",             //  701 Taiho
+            "\u6176\u96F2",             //  704 Keiun
+            "\u548C\u9285",             //  708 Wado
+            "\u970A\u4E80",             //  715 Reiki
+            "\u990A\u8001",             //  717 Yoro
+            "\u795E\u4E80",             //  724 Jinki
+            "\u5929\u5E73",             //  729 Tempyo
+            "\u5929\u5E73\u611F\u5B9D", //  749 Tempyo-kampo
+            "\u5929\u5E73\u52DD\u5B9D", //  749 Tempyo-shoho
+            "\u5929\u5E73\u5B9D\u5B57", //  757 Tempyo-hoji
+            "\u5929\u5E73\u795E\u8B77", //  765 Tempho-jingo
+            "\u795E\u8B77\u666F\u96F2", //  767 Jingo-keiun
+            "\u5B9D\u4E80",             //  770 Hoki
+            "\u5929\u5FDC",             //  781 Ten-o
+            "\u5EF6\u66A6",             //  782 Enryaku
+            "\u5927\u540C",             //  806 Daido
+            "\u5F18\u4EC1",             //  810 Konin
+            "\u5929\u9577",             //  824 Tencho
+            "\u627F\u548C",             //  834 Showa
+            "\u5609\u7965",             //  848 Kajo
+            "\u4EC1\u5BFF",             //  851 Ninju
+            "\u6589\u8861",             //  854 Saiko
+            "\u5929\u5B89",             //  857 Tennan
+            "\u8C9E\u89B3",             //  859 Jogan
+            "\u5143\u6176",             //  877 Genkei
+            "\u4EC1\u548C",             //  885 Ninna
+            "\u5BDB\u5E73",             //  889 Kampyo
+            "\u660C\u6CF0",             //  898 Shotai
+            "\u5EF6\u559C",             //  901 Engi
+            "\u5EF6\u9577",             //  923 Encho
+            "\u627F\u5E73",             //  931 Shohei
+            "\u5929\u6176",             //  938 Tengyo
+            "\u5929\u66A6",             //  947 Tenryaku
+            "\u5929\u5FB3",             //  957 Tentoku
+            "\u5FDC\u548C",             //  961 Owa
+            "\u5EB7\u4FDD",             //  964 Koho
+            "\u5B89\u548C",             //  968 Anna
+            "\u5929\u7984",             //  970 Tenroku
+            "\u5929\u5EF6",             //  973 Ten-en
+            "\u8C9E\u5143",             //  976 Jogen
+            "\u5929\u5143",             //  978 Tengen
+            "\u6C38\u89B3",             //  983 Eikan
+            "\u5BDB\u548C",             //  985 Kanna
+            "\u6C38\u5EF6",             //  987 Ei-en
+            "\u6C38\u795A",             //  989 Eiso
+            "\u6B63\u66A6",             //  990 Shoryaku
+            "\u9577\u5FB3",             //  995 Chotoku
+            "\u9577\u4FDD",             //  999 Choho
+            "\u5BDB\u5F18",             // 1004 Kanko
+            "\u9577\u548C",             // 1012 Chowa
+            "\u5BDB\u4EC1",             // 1017 Kannin
+            "\u6CBB\u5B89",             // 1021 Jian
+            "\u4E07\u5BFF",             // 1024 Manju
+            "\u9577\u5143",             // 1028 Chogen
+            "\u9577\u66A6",             // 1037 Choryaku
+            "\u9577\u4E45",             // 1040 Chokyu
+            "\u5BDB\u5FB3",             // 1044 Kantoku
+            "\u6C38\u627F",             // 1046 Eisho
+            "\u5929\u559C",             // 1053 Tengi
+            "\u5EB7\u5E73",             // 1058 Kohei
+            "\u6CBB\u66A6",             // 1065 Jiryaku
+            "\u5EF6\u4E45",             // 1069 Enkyu
+            "\u627F\u4FDD",             // 1074 Shoho
+            "\u627F\u66A6",             // 1077 Shoryaku
+            "\u6C38\u4FDD",             // 1081 Eiho
+            "\u5FDC\u5FB3",             // 1084 Otoku
+            "\u5BDB\u6CBB",             // 1087 Kanji
+            "\u5609\u4FDD",             // 1094 Kaho
+            "\u6C38\u9577",             // 1096 Eicho
+            "\u627F\u5FB3",             // 1097 Shotoku
+            "\u5EB7\u548C",             // 1099 Kowa
+            "\u9577\u6CBB",             // 1104 Choji
+            "\u5609\u627F",             // 1106 Kasho
+            "\u5929\u4EC1",             // 1108 Tennin
+            "\u5929\u6C38",             // 1110 Ten-ei
+            "\u6C38\u4E45",             // 1113 Eikyu
+            "\u5143\u6C38",             // 1118 Gen-ei
+            "\u4FDD\u5B89",             // 1120 Hoan
+            "\u5929\u6CBB",             // 1124 Tenji
+            "\u5927\u6CBB",             // 1126 Daiji
+            "\u5929\u627F",             // 1131 Tensho
+            "\u9577\u627F",             // 1132 Chosho
+            "\u4FDD\u5EF6",             // 1135 Hoen
+            "\u6C38\u6CBB",             // 1141 Eiji
+            "\u5EB7\u6CBB",             // 1142 Koji
+            "\u5929\u990A",             // 1144 Tenyo
+            "\u4E45\u5B89",             // 1145 Kyuan
+            "\u4EC1\u5E73",             // 1151 Ninpei
+            "\u4E45\u5BFF",             // 1154 Kyuju
+            "\u4FDD\u5143",             // 1156 Hogen
+            "\u5E73\u6CBB",             // 1159 Heiji
+            "\u6C38\u66A6",             // 1160 Eiryaku
+            "\u5FDC\u4FDD",             // 1161 Oho
+            "\u9577\u5BDB",             // 1163 Chokan
+            "\u6C38\u4E07",             // 1165 Eiman
+            "\u4EC1\u5B89",             // 1166 Nin-an
+            "\u5609\u5FDC",             // 1169 Kao
+            "\u627F\u5B89",             // 1171 Shoan
+            "\u5B89\u5143",             // 1175 Angen
+            "\u6CBB\u627F",             // 1177 Jisho
+            "\u990A\u548C",             // 1181 Yowa
+            "\u5BFF\u6C38",             // 1182 Juei
+            "\u5143\u66A6",             // 1184 Genryuku
+            "\u6587\u6CBB",             // 1185 Bunji
+            "\u5EFA\u4E45",             // 1190 Kenkyu
+            "\u6B63\u6CBB",             // 1199 Shoji
+            "\u5EFA\u4EC1",             // 1201 Kennin
+            "\u5143\u4E45",             // 1204 Genkyu
+            "\u5EFA\u6C38",             // 1206 Ken-ei
+            "\u627F\u5143",             // 1207 Shogen
+            "\u5EFA\u66A6",             // 1211 Kenryaku
+            "\u5EFA\u4FDD",             // 1213 Kenpo
+            "\u627F\u4E45",             // 1219 Shokyu
+            "\u8C9E\u5FDC",             // 1222 Joo
+            "\u5143\u4EC1",             // 1224 Gennin
+            "\u5609\u7984",             // 1225 Karoku
+            "\u5B89\u8C9E",             // 1227 Antei
+            "\u5BDB\u559C",             // 1229 Kanki
+            "\u8C9E\u6C38",             // 1232 Joei
+            "\u5929\u798F",             // 1233 Tempuku
+            "\u6587\u66A6",             // 1234 Bunryaku
+            "\u5609\u798E",             // 1235 Katei
+            "\u66A6\u4EC1",             // 1238 Ryakunin
+            "\u5EF6\u5FDC",             // 1239 En-o
+            "\u4EC1\u6CBB",             // 1240 Ninji
+            "\u5BDB\u5143",             // 1243 Kangen
+            "\u5B9D\u6CBB",             // 1247 Hoji
+            "\u5EFA\u9577",             // 1249 Kencho
+            "\u5EB7\u5143",             // 1256 Kogen
+            "\u6B63\u5609",             // 1257 Shoka
+            "\u6B63\u5143",             // 1259 Shogen
+            "\u6587\u5FDC",             // 1260 Bun-o
+            "\u5F18\u9577",             // 1261 Kocho
+            "\u6587\u6C38",             // 1264 Bun-ei
+            "\u5EFA\u6CBB",             // 1275 Kenji
+            "\u5F18\u5B89",             // 1278 Koan
+            "\u6B63\u5FDC",             // 1288 Shoo
+            "\u6C38\u4EC1",             // 1293 Einin
+            "\u6B63\u5B89",             // 1299 Shoan
+            "\u4E7E\u5143",             // 1302 Kengen
+            "\u5609\u5143",             // 1303 Kagen
+            "\u5FB3\u6CBB",             // 1306 Tokuji
+            "\u5EF6\u6176",             // 1308 Enkei
+            "\u5FDC\u9577",             // 1311 Ocho
+            "\u6B63\u548C",             // 1312 Showa
+            "\u6587\u4FDD",             // 1317 Bunpo
+            "\u5143\u5FDC",             // 1319 Geno
+            "\u5143\u4EA8",             // 1321 Genkyo
+            "\u6B63\u4E2D",             // 1324 Shochu
+            "\u5609\u66A6",             // 1326 Kareki
+            "\u5143\u5FB3",             // 1329 Gentoku
+            "\u5143\u5F18",             // 1331 Genko
+            "\u5EFA\u6B66",             // 1334 Kemmu
+            "\u5EF6\u5143",             // 1336 Engen
+            "\u8208\u56FD",             // 1340 Kokoku
+            "\u6B63\u5E73",             // 1346 Shohei
+            "\u5EFA\u5FB3",             // 1370 Kentoku
+            "\u6587\u4E2D",             // 1372 Bunchu
+            "\u5929\u6388",             // 1375 Tenju
+            "\u5F18\u548C",             // 1381 Kowa
+            "\u5143\u4E2D",             // 1384 Genchu
+            "\u81F3\u5FB3",             // 1384 Meitoku
+            "\u5EB7\u66A6",             // 1379 Koryaku
+            "\u5609\u6176",             // 1387 Kakei
+            "\u5EB7\u5FDC",             // 1389 Koo
+            "\u660E\u5FB3",             // 1390 Meitoku
+            "\u5FDC\u6C38",             // 1394 Oei
+            "\u6B63\u9577",             // 1428 Shocho
+            "\u6C38\u4EAB",             // 1429 Eikyo
+            "\u5609\u5409",             // 1441 Kakitsu
+            "\u6587\u5B89",             // 1444 Bun-an
+            "\u5B9D\u5FB3",             // 1449 Hotoku
+            "\u4EAB\u5FB3",             // 1452 Kyotoku
+            "\u5EB7\u6B63",             // 1455 Kosho
+            "\u9577\u7984",             // 1457 Choroku
+            "\u5BDB\u6B63",             // 1460 Kansho
+            "\u6587\u6B63",             // 1466 Bunsho
+            "\u5FDC\u4EC1",             // 1467 Onin
+            "\u6587\u660E",             // 1469 Bunmei
+            "\u9577\u4EAB",             // 1487 Chokyo
+            "\u5EF6\u5FB3",             // 1489 Entoku
+            "\u660E\u5FDC",             // 1492 Meio
+            "\u6587\u4E80",             // 1501 Bunki
+            "\u6C38\u6B63",             // 1504 Eisho
+            "\u5927\u6C38",             // 1521 Taiei
+            "\u4EAB\u7984",             // 1528 Kyoroku
+            "\u5929\u6587",             // 1532 Tenmon
+            "\u5F18\u6CBB",             // 1555 Koji
+            "\u6C38\u7984",             // 1558 Eiroku
+            "\u5143\u4E80",             // 1570 Genki
+            "\u5929\u6B63",             // 1573 Tensho
+            "\u6587\u7984",             // 1592 Bunroku
+            "\u6176\u9577",             // 1596 Keicho
+            "\u5143\u548C",             // 1615 Genwa
+            "\u5BDB\u6C38",             // 1624 Kan-ei
+            "\u6B63\u4FDD",             // 1644 Shoho
+            "\u6176\u5B89",             // 1648 Keian
+            "\u627F\u5FDC",             // 1652 Shoo
+            "\u660E\u66A6",             // 1655 Meiryaku
+            "\u4E07\u6CBB",             // 1658 Manji
+            "\u5BDB\u6587",             // 1661 Kanbun
+            "\u5EF6\u5B9D",             // 1673 Enpo
+            "\u5929\u548C",             // 1681 Tenwa
+            "\u8C9E\u4EAB",             // 1684 Jokyo
+            "\u5143\u7984",             // 1688 Genroku
+            "\u5B9D\u6C38",             // 1704 Hoei
+            "\u6B63\u5FB3",             // 1711 Shotoku
+            "\u4EAB\u4FDD",             // 1716 Kyoho
+            "\u5143\u6587",             // 1736 Genbun
+            "\u5BDB\u4FDD",             // 1741 Kanpo
+            "\u5EF6\u4EAB",             // 1744 Enkyo
+            "\u5BDB\u5EF6",             // 1748 Kan-en
+            "\u5B9D\u66A6",             // 1751 Horyaku
+            "\u660E\u548C",             // 1764 Meiwa
+            "\u5B89\u6C38",             // 1772 An-ei
+            "\u5929\u660E",             // 1781 Tenmei
+            "\u5BDB\u653F",             // 1789 Kansei
+            "\u4EAB\u548C",             // 1801 Kyowa
+            "\u6587\u5316",             // 1804 Bunka
+            "\u6587\u653F",             // 1818 Bunsei
+            "\u5929\u4FDD",             // 1830 Tenpo
+            "\u5F18\u5316",             // 1844 Koka
+            "\u5609\u6C38",             // 1848 Kaei
+            "\u5B89\u653F",             // 1854 Ansei
+            "\u4E07\u5EF6",             // 1860 Man-en
+            "\u6587\u4E45",             // 1861 Bunkyu
+            "\u5143\u6CBB",             // 1864 Genji
+            "\u6176\u5FDC",             // 1865 Keio
+            "\u660E\u6CBB",             // 1868 Meiji
+            "\u5927\u6B63",             // 1912 Taisho
+            "\u662D\u548C",             // 1926 Showa
+            "\u5E73\u6210",             // 1989 Heisei
+        } },
+    };
+
+    public synchronized Object[][] getContents() {
+        return fContents;
+    }
+};
\ No newline at end of file
diff --git a/src/data/holidays_jp.ucs b/src/data/holidays_jp.ucs
new file mode 100755
index 0000000..2e6bc49
--- /dev/null
+++ b/src/data/holidays_jp.ucs
Binary files differ
diff --git a/src/data/unicode/CompositionExclusions-1.txt b/src/data/unicode/CompositionExclusions-1.txt
new file mode 100755
index 0000000..5ea46af
--- /dev/null
+++ b/src/data/unicode/CompositionExclusions-1.txt
@@ -0,0 +1,143 @@
+# Composition Exclusions
+# This file lists the characters from the UTR #15 Composition Exclusion Table.
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData 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
+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
+
+# (2) Post Composition Version characters
+# These characters cannot be derived from the UnicodeData file.
+# (There are no characters in this category in this version of Unicode.)
+
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+
+# 0340 COMBINING GRAVE TONE MARK
+# 0341 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 GREEK DIALYTIKA AND OXIA
+# 1FEF GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000 EN QUAD
+# 2001 EM QUAD
+# 2126 OHM SIGN
+# 212A KELVIN SIGN
+# 212B ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900 CJK COMPATIBILITY IDEOGRAPH-F900
+#.. FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
+#.. FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
+# FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
+#.. FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
+
+# (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 canonical
+# class of zero.
+# These characters are simply quoted here for reference.
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
diff --git a/src/data/unicode/CompositionExclusions.txt b/src/data/unicode/CompositionExclusions.txt
new file mode 100755
index 0000000..a95d39a
--- /dev/null
+++ b/src/data/unicode/CompositionExclusions.txt
@@ -0,0 +1,145 @@
+# Composition Exclusions
+# This file lists the characters from the UTR #15 Composition Exclusion Table.
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary Exclusion List Table
+
+# (1) Script Specifics
+# This list of characters cannot be derived from the UnicodeData 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
+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
+
+# (2) Post Composition Version characters
+# These characters cannot be derived from the UnicodeData file.
+# (There are no characters in this category in this version of Unicode.)
+
+# (3) Singleton Decompositions
+# These characters can be derived from the UnicodeData file
+# by including all characters whose canonical decomposition
+# consists of a single character.
+# These characters are simply quoted here for reference.
+
+# 0340 COMBINING GRAVE TONE MARK
+# 0341 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 GREEK DIALYTIKA AND OXIA
+# 1FEF GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000 EN QUAD
+# 2001 EM QUAD
+# 2126 OHM SIGN
+# 212A KELVIN SIGN
+# 212B ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900 CJK COMPATIBILITY IDEOGRAPH-F900
+#.. FA0D CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15 CJK COMPATIBILITY IDEOGRAPH-FA15
+#.. FA1E CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25 CJK COMPATIBILITY IDEOGRAPH-FA25
+# FA26 CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A CJK COMPATIBILITY IDEOGRAPH-FA2A
+#.. FA2D CJK COMPATIBILITY IDEOGRAPH-FA2D
+
+# (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 canonical
+# class of zero.
+# These characters are simply quoted here for reference.
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
+
+
diff --git a/src/data/unicode/SpecialCasing-2.txt b/src/data/unicode/SpecialCasing-2.txt
new file mode 100755
index 0000000..af002ef
--- /dev/null
+++ b/src/data/unicode/SpecialCasing-2.txt
@@ -0,0 +1,219 @@
+# SpecialCasing-2.txt
+#
+# 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.)
+# These are informative character properties.
+#
+# Send comments to mark@unicode.org
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <entry> := <case_mapping> <condition_list>? (<s>* "#" <comment>)?
+#
+# <case_mapping> := <source> <sep> <lower> <sep> <title> <sep> <upper> <sep>
+#
+# <source> := <code_point>
+# <sep> := <s>* ";" <s>*
+# <lower> := <code_point_list>
+# <title> := <code_point_list>
+# <upper> := <code_point_list>
+# <code_point_list> := <code_point> (<s>+ <code_point>)*
+# <code_point> := <hex><hex><hex><hex>
+# <hex> := [0-1A-Fa-f]
+# <s> := <space>
+#
+# <condition_list> := <locale>? (<s>+ <context>)*
+# <locale> := <ISO_3166_code> ( "_" <ISO_639_code> )? ( "_" <variant> )?
+# <ISO_3166_code> := 2-letter country code,
+#                    as in http://www.unicode.org/unicode/onlinedat/countries.html
+# <ISO_639_code> :=  2-letter code,
+#                    as in http://www.unicode.org/unicode/onlinedat/languages.html
+# <context> := "FINAL" | "NON_FINAL" | "MODERN" | "NON_MODERN"
+#
+#  A condition list overrides the normal behavior if any of the listed conditions is true.
+#   FINAL:  The letter is not followed by a letter of category L* (e.g. Ll, Lt, Lu, Lm, or Lo).
+#   MODERN: The mapping is only used for modern text.
+#  Conditions preceded by "NON_" represent the negation of the condition
+#
+# New contexts may be added in the future.
+# Parsers of this file must be prepared to deal with that situation.
+# Additional whitespace around elements is optional. Blank lines are ignored in parsing.
+# On any line, all text following "#" is a comment, and are ignored in parsing.
+# ================================================================================
+
+# ================================================================================
+# 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
+
+# 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 006E; 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 are 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; # 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 normalize in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; FINAL; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; NON_FINAL; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Turkish
+
+0049; 0131; 0049; 0049; TR; # LATIN CAPITAL LETTER I
+0069; 0069; 0130; 0130; TR; # LATIN SMALL LETTER I
+
+# Note: the following cases are already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; TR; # LATIN SMALL LETTER DOTLESS I
+# 0130; 0069; 0130; 0130; TR; # LATIN CAPITAL LETTER I WITH DOT ABOVE
diff --git a/src/data/unicode/SpecialCasing.txt b/src/data/unicode/SpecialCasing.txt
new file mode 100755
index 0000000..c1288ba
--- /dev/null
+++ b/src/data/unicode/SpecialCasing.txt
@@ -0,0 +1,221 @@
+# SpecialCasing-2.txt
+#
+# 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.)
+# These are informative character properties.
+#
+# Send comments to mark@unicode.org
+#
+# ================================================================================
+# Format
+# ================================================================================
+# The entries in this file are in the following machine-readable format:
+#
+# <entry> := <case_mapping> <condition_list>? (<s>* "#" <comment>)?
+#
+# <case_mapping> := <source> <sep> <lower> <sep> <title> <sep> <upper> <sep>
+#
+# <source> := <code_point>
+# <sep> := <s>* ";" <s>*
+# <lower> := <code_point_list>
+# <title> := <code_point_list>
+# <upper> := <code_point_list>
+# <code_point_list> := <code_point> (<s>+ <code_point>)*
+# <code_point> := <hex><hex><hex><hex>
+# <hex> := [0-1A-Fa-f]
+# <s> := <space>
+#
+# <condition_list> := <locale>? (<s>+ <context>)*
+# <locale> := <ISO_3166_code> ( "_" <ISO_639_code> )? ( "_" <variant> )?
+# <ISO_3166_code> := 2-letter country code,
+#                    as in http://www.unicode.org/unicode/onlinedat/countries.html
+# <ISO_639_code> :=  2-letter code,
+#                    as in http://www.unicode.org/unicode/onlinedat/languages.html
+# <context> := "FINAL" | "NON_FINAL" | "MODERN" | "NON_MODERN"
+#
+#  A condition list overrides the normal behavior if any of the listed conditions is true.
+#   FINAL:  The letter is not followed by a letter of category L* (e.g. Ll, Lt, Lu, Lm, or Lo).
+#   MODERN: The mapping is only used for modern text.
+#  Conditions preceded by "NON_" represent the negation of the condition
+#
+# New contexts may be added in the future.
+# Parsers of this file must be prepared to deal with that situation.
+# Additional whitespace around elements is optional. Blank lines are ignored in parsing.
+# On any line, all text following "#" is a comment, and are ignored in parsing.
+# ================================================================================
+
+# ================================================================================
+# 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
+
+# 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 006E; 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 are 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; # 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 normalize in lowercasing
+
+# 03C3; 03C2; 03A3; 03A3; FINAL; # GREEK SMALL LETTER SIGMA
+# 03C2; 03C3; 03A3; 03A3; NON_FINAL; # GREEK SMALL LETTER FINAL SIGMA
+
+# ================================================================================
+# Locale-sensitive mappings
+# ================================================================================
+
+# Turkish
+
+0049; 0131; 0049; 0049; TR; # LATIN CAPITAL LETTER I
+0069; 0069; 0130; 0130; TR; # LATIN SMALL LETTER I
+
+# Note: the following cases are already in the UnicodeData file.
+
+# 0131; 0131; 0049; 0049; TR; # LATIN SMALL LETTER DOTLESS I
+# 0130; 0069; 0130; 0130; TR; # LATIN CAPITAL LETTER I WITH DOT ABOVE
+
+
diff --git a/src/data/unicode/UnicodeData-2.1.2.txt b/src/data/unicode/UnicodeData-2.1.2.txt
new file mode 100755
index 0000000..bca59e6
--- /dev/null
+++ b/src/data/unicode/UnicodeData-2.1.2.txt
@@ -0,0 +1,6590 @@
+0000;<control>;Cc;0;ON;;;;;N;NULL;;;;
+0001;<control>;Cc;0;ON;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;ON;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;ON;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;ON;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;ON;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;ON;;;;;N;BELL;;;;
+0008;<control>;Cc;0;ON;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;ON;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;ON;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;ON;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;ON;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;ON;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;ON;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;ON;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;ON;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;ON;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;ON;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;ON;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;ON;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;ON;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;ON;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;ON;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;ON;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;ON;;;;;N;UNIT SEPARATOR;;;;
+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;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;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;<compat> 0020 0302;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;<compat> 0020 0332;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;<compat> 0020 0300;;;;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;ON;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;ON;;;;;N;;;;;
+0081;<control>;Cc;0;ON;;;;;N;;;;;
+0082;<control>;Cc;0;ON;;;;;N;;;;;
+0083;<control>;Cc;0;ON;;;;;N;;;;;
+0084;<control>;Cc;0;ON;;;;;N;;;;;
+0085;<control>;Cc;0;ON;;;;;N;;;;;
+0086;<control>;Cc;0;ON;;;;;N;;;;;
+0087;<control>;Cc;0;ON;;;;;N;;;;;
+0088;<control>;Cc;0;ON;;;;;N;;;;;
+0089;<control>;Cc;0;ON;;;;;N;;;;;
+008A;<control>;Cc;0;ON;;;;;N;;;;;
+008B;<control>;Cc;0;ON;;;;;N;;;;;
+008C;<control>;Cc;0;ON;;;;;N;;;;;
+008D;<control>;Cc;0;ON;;;;;N;;;;;
+008E;<control>;Cc;0;ON;;;;;N;;;;;
+008F;<control>;Cc;0;ON;;;;;N;;;;;
+0090;<control>;Cc;0;ON;;;;;N;;;;;
+0091;<control>;Cc;0;ON;;;;;N;;;;;
+0092;<control>;Cc;0;ON;;;;;N;;;;;
+0093;<control>;Cc;0;ON;;;;;N;;;;;
+0094;<control>;Cc;0;ON;;;;;N;;;;;
+0095;<control>;Cc;0;ON;;;;;N;;;;;
+0096;<control>;Cc;0;ON;;;;;N;;;;;
+0097;<control>;Cc;0;ON;;;;;N;;;;;
+0098;<control>;Cc;0;ON;;;;;N;;;;;
+0099;<control>;Cc;0;ON;;;;;N;;;;;
+009A;<control>;Cc;0;ON;;;;;N;;;;;
+009B;<control>;Cc;0;ON;;;;;N;;;;;
+009C;<control>;Cc;0;ON;;;;;N;;;;;
+009D;<control>;Cc;0;ON;;;;;N;;;;;
+009E;<control>;Cc;0;ON;;;;;N;;;;;
+009F;<control>;Cc;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;WS;<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;ON;<super> 0061;;;;N;;;;;
+00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Ps;0;ON;;;;;N;LEFT POINTING GUILLEMET;;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;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;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;ON;<compat> 03BC;;;;N;;;;;
+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;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;ON;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pe;0;ON;;;;;N;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;;;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;;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;;;;
+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;;;;
+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;;;;
+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;;;;;
+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;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;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;;;;
+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;Lo;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;Lo;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Lo;0;L;;;;;N;;;;;
+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;
+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;
+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;
+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;0041 0307 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0061 0307 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;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;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;
+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
+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;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;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
+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;;;;;
+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;
+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;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;Ll;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;;;;
+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;Sk;0;L;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;0;L;;;;;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;L;;;;;N;;;;;
+02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;L;;;;;N;;;;;
+02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;L;;;;;N;;;;;
+02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;L;;;;;N;;;;;
+02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;L;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;L;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;L;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;L;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;L;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;L;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;L;;;;;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;L;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
+02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;L;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
+02D4;MODIFIER LETTER UP TACK;Sk;0;L;;;;;N;;;;;
+02D5;MODIFIER LETTER DOWN TACK;Sk;0;L;;;;;N;;;;;
+02D6;MODIFIER LETTER PLUS SIGN;Sk;0;L;;;;;N;;;;;
+02D7;MODIFIER LETTER MINUS SIGN;Sk;0;L;;;;;N;;;;;
+02D8;BREVE;Sk;0;L;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;L;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;;
+02DA;RING ABOVE;Sk;0;L;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;L;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;L;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;L;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
+02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;L;;;;;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;L;;;;;N;;;;;
+02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;L;;;;;N;;;;;
+02E7;MODIFIER LETTER MID TONE BAR;Sk;0;L;;;;;N;;;;;
+02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;L;;;;;N;;;;;
+02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;L;;;;;N;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;L;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;L;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;L;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;L;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;L;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;L;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;L;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;L;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;L;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;L;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;L;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;L;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;L;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;L;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;L;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;L;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;L;0306 0307;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;L;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;L;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;L;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;L;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;L;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;L;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;L;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;L;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;L;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;L;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;L;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;L;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;L;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;L;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;L;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;L;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;L;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;L;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;L;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;L;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;L;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;L;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;L;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;L;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;L;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;L;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;L;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;L;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;L;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;L;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;L;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;L;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;L;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;L;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;L;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;L;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;L;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;L;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;L;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;L;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;L;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;L;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;L;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;L;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;L;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;L;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;L;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;L;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;L;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;L;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;L;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;L;0308 030D;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;220;L;;;;;N;GREEK NON-SPACING IOTA BELOW;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;L;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;L;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Po;0;L;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Po;0;L;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;L;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;L;<compat> 0020 030D;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;L;00A8 030D;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 030D;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;L;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 030D;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 030D;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 030D;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 030D;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 030D;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 030D;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03B9 0344;;;;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 030D;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 030D;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 030D;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 030D;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03C5 0344;;;;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 030D;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 030D;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 030D;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;
+03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 030D;;;;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;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;
+03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;;
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;;
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;;
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;;
+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;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;
+03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;;;
+03F3;GREEK LETTER YOT;Lo;0;L;;;;;N;;;;;
+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;
+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
+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
+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;L;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;L;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;L;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;L;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+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;Lo;0;L;;;;;N;CYRILLIC LETTER I;;;;
+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
+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
+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
+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;00C6;;;;N;;;;04D5;
+04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;00E6;;;;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;018F;;;;N;;;;04D9;
+04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;0259;;;;N;;;04D8;;04D8
+04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;018F 0308;;;;N;;;;04DB;
+04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;0259 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;01B7;;;;N;;;;04E1;
+04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;0292;;;;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;019F;;;;N;;;;04E9;
+04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;0275;;;;N;;;04E8;;04E8
+04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;019F 0308;;;;N;;;;04EB;
+04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;0275 0308;;;;N;;;04EA;;04EA
+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
+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
+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;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;R;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;R;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;R;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;R;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;R;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;R;;;;;N;;;;;
+0597;HEBREW ACCENT REVIA;Mn;230;R;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;R;;;;;N;;;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;R;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;R;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;R;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;R;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;R;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;R;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;R;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;R;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;R;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;R;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;R;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;R;;;;;N;;;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;R;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;R;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;R;;;;;N;;;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;R;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;R;;;;;N;;;;;
+05AB;HEBREW ACCENT OLE;Mn;230;R;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;R;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;R;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;230;R;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;R;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;R;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;R;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;R;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;R;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;R;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;R;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;R;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;R;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;R;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;R;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;R;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;R;;;;;N;HEBREW POINT DAGESH;;;;
+05BD;HEBREW POINT METEG;Mn;22;R;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;R;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;R;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;R;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;R;;;;;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;;;;;
+060C;ARABIC COMMA;Po;0;R;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;R;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;R;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;R;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;R;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;R;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;R;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;R;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;R;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;R;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;R;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;R;;;;;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;R;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;R;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;R;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;R;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;R;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;R;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;R;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;R;;;;;N;;;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;R;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;R;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;R;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;R;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;R;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;R;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06D0;ARABIC LETTER E;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;R;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;R;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;R;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;R;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;R;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;R;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;R;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;R;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;R;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;R;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;R;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;R;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;R;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;R;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;R;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;R;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;R;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;R;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;R;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;R;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;R;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;R;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;R;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;R;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;R;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;R;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;R;;;;;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;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;37;L;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;36;L;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;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;L;;;;;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;38;L;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;39;L;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;40;L;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;41;L;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;42;L;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;43;L;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;44;L;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;45;L;;;;;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;L;;;;;N;;;;;
+0950;DEVANAGARI OM;So;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;46;L;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;47;L;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;L;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;L;;;;;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;48;L;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;49;L;;;;;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;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;50;L;;;;;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;09AC 09BC;;;;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;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;51;L;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;52;L;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;53;L;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;54;L;;;;;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;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;55;L;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;56;L;;;;;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;L;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;L;;;;;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;;;;-1;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;57;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;;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;L;;;;;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;58;L;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;59;L;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;60;L;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;61;L;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;62;L;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;63;L;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;L;;;;;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;0A21 0A3C;;;;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;64;L;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;65;L;;;;;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;67;L;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;66;L;;;;;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;;;;;
+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;L;;;;;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;68;L;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;69;L;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;70;L;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;71;L;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;72;L;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;73;L;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;74;L;;;;;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;L;;;;;N;;;;;
+0AD0;GUJARATI OM;So;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;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;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;75;L;;;;;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;;;;;
+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;L;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;76;L;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;77;L;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;78;L;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;79;L;;;;;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;L;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;230;L;;;;;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;0B2F 0B3C;;;;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;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;L;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;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;;;;;
+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;80;L;;;;;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;L;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;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;;;;;
+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;81;L;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;82;L;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;83;L;;;;;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;84;L;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;85;L;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;86;L;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;87;L;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;88;L;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;89;L;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;90;L;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;L;;;;;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;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;92;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;93;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;0CC6 0CC2 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;94;L;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;L;;;;;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;;;;;
+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;;;;;
+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;95;L;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;96;L;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;97;L;;;;;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;L;;;;;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;;;;;
+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;Po;0;L;;;;;N;THAI PAI YAN NOI;;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;98;L;;;;;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;0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;99;L;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;100;L;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;101;L;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;102;L;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
+0E38;THAI CHARACTER SARA U;Mn;103;L;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;104;L;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;105;L;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
+0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;L;;;;;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;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;106;L;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;L;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;108;L;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;109;L;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;110;L;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;111;L;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;112;L;;;;;N;THAI NIKKHAHIT;;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;128;L;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;So;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;Po;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;113;L;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;114;L;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;115;L;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;116;L;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;117;L;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;L;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;119;L;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;120;L;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;121;L;;;;;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;L;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;123;L;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;124;L;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;125;L;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;126;L;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;127;L;;;;;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;So;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;;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;;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;;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;;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;;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;;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;L;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;L;;;;;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;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;230;L;;;;;N;;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;230;L;;;;;N;;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;L;;;;;N;;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;L;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;L;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;L;;;;;N;;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;L;;;;;N;;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;220;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;220;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;;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;145;L;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;L;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;131;L;0F72 0F71;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;L;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;133;L;0F74 0F71;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;134;L;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;135;L;0F76 0F71;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;136;L;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;137;L;0F78 0F71;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;138;L;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;139;L;;;;;N;;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;140;L;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;141;L;;;;;N;;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;142;L;;;;;N;;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;143;L;;;;;N;;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;144;L;0F80 0F71;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;L;;;;;N;;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;L;;;;;N;;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;L;;;;;N;;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;L;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;L;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Mn;230;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;Mn;230;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Mn;230;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Mn;230;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;6;L;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;6;L;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;6;L;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;6;L;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;6;L;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;6;L;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;6;L;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;6;L;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;6;L;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;6;L;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;6;L;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;6;L;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;6;L;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;6;L;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;6;L;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;6;L;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;6;L;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;6;L;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;6;L;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;6;L;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;6;L;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;6;L;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;6;L;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;6;L;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;6;L;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;6;L;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;6;L;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;6;L;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;6;L;;;;;N;;;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;6;L;;;;;N;;;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;6;L;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;6;L;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;6;L;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;6;L;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;6;L;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;6;L;0F90 0FB5;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;10D0;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;10D1;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;10D2;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;10D3;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;10D4;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;10D5;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;10D6;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;10D7;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;10D8;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;10D9;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;10DA;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;10DB;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;10DC;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;10DD;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;10DE;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;10DF;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;10E0;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;10E1;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;10E2;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;10E3;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;10E4;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;10E5;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;10E6;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;10E7;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;10E8;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;10E9;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;10EA;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;10EB;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;10EC;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;10ED;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;10EE;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;10EF;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;10F0;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;10F1;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;10F2;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;10F3;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;10F4;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;10F5;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;<compat> 1100 1100;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;<compat> 1103 1103;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;<compat> 1107 1107;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;<compat> 1109 1109;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;<compat> 110C 110C;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 1102 1100;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;<compat> 1102 1102;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 1102 1103;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;<compat> 1102 1107;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 1103 1100;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;<compat> 1105 1102;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;<compat> 1105 1105;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;<compat> 1105 1112;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;<compat> 1105 110B;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;<compat> 1106 1107;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 1106 110B;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;<compat> 1107 1100;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;<compat> 1107 1102;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;<compat> 1107 1103;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;<compat> 1107 1109;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1107 1109 1100;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1107 1109 1103;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;<compat> 1107 1109 1107;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;<compat> 1107 1109 1109;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;<compat> 1107 1109 110C;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;<compat> 1107 110C;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;<compat> 1107 110E;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;<compat> 1107 1110;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 1107 1111;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 1107 110B;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 1107 1107 110B;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;<compat> 1109 1100;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;<compat> 1109 1102;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;<compat> 1109 1103;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;<compat> 1109 1105;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;<compat> 1109 1106;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;<compat> 1109 1107;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;<compat> 1109 1107 1100;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;<compat> 1109 1109 1109;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;<compat> 1109 110B;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;<compat> 1109 110C;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;<compat> 1109 110E;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;<compat> 1109 110F;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;<compat> 1109 1110;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;<compat> 1109 1111;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;<compat> 1109 1112;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;<compat> 113C 113C;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;<compat> 113E 113E;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 110B 1100;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;<compat> 110B 1103;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;<compat> 110B 1106;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;<compat> 110B 1107;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;<compat> 110B 1109;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;<compat> 110B 1140;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;<compat> 110B 110B;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;<compat> 110B 110C;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;<compat> 110B 110E;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;<compat> 110B 1110;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;<compat> 110B 1111;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;<compat> 110C 110B;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;<compat> 114E 114E;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;<compat> 1150 1150;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;<compat> 110E 110F;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;<compat> 110E 1112;;;;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;<compat> 1111 1107;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1111 110B;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;<compat> 1112 1112;;;;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;<compat> 1161 1175;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;<compat> 1163 1175;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;<compat> 1165 1175;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;<compat> 1167 1175;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;<compat> 1169 1161;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;<compat> 1169 1161 1175;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;<compat> 1169 1175;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;<compat> 116E 1165;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;<compat> 116E 1165 1175;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;<compat> 116E 1175;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;<compat> 1173 1175;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;<compat> 1161 1169;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;<compat> 1161 116E;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;<compat> 1163 1169;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;<compat> 1163 116D;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;<compat> 1165 1169;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;<compat> 1165 116E;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;<compat> 1165 1173;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;<compat> 1167 1169;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;<compat> 1167 116E;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;<compat> 1169 1165;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;<compat> 1169 1166;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;<compat> 1169 1168;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;<compat> 1169 1169;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;<compat> 1169 116E;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;<compat> 116D 1163;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;<compat> 116D 1164;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;<compat> 116D 1167;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;<compat> 116D 1169;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;<compat> 116D 1175;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;<compat> 116E 1161;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;<compat> 116E 1162;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;<compat> 116E 1165 1173;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;<compat> 116E 1168;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;<compat> 116E 116E;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;<compat> 1172 1161;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;<compat> 1172 1165;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;<compat> 1172 1166;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;<compat> 1172 1167;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;<compat> 1172 1168;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;<compat> 1172 116E;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;<compat> 1172 1175;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;<compat> 1173 116E;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;<compat> 1173 1173;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;<compat> 1174 116E;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;<compat> 1175 1161;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;<compat> 1175 1163;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;<compat> 1175 1169;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;<compat> 1175 116E;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;<compat> 1175 1173;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;<compat> 1175 119E;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;<compat> 119E 1165;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;<compat> 119E 116E;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;<compat> 119E 1175;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;<compat> 119E 119E;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;<compat> 11A8 11A8;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;<compat> 11A8 11BA;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;<compat> 11AB 11BD;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;<compat> 11AB 11C2;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;<compat> 11AF 11A8;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;<compat> 11AF 11B7;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;<compat> 11AF 11B8;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;<compat> 11AF 11BA;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;<compat> 11AF 11C0;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;<compat> 11AF 11C1;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;<compat> 11AF 11C2;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;<compat> 11B8 11BA;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;<compat> 11BA 11BA;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;<compat> 11A8 11AF;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;<compat> 11A8 11BA 11A8;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 11AB 11A8;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 11AB 11AE;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;<compat> 11AB 11BA;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;<compat> 11AB 11EB;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;<compat> 11AB 11C0;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 11AE 11A8;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;<compat> 11AE 11AF;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11AF 11A8 11BA;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;<compat> 11AF 11AB;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;<compat> 11AF 11AE;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;<compat> 11AF 11AE 11C2;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;<compat> 11AF 11AF;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;<compat> 11AF 11B7 11A8;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;<compat> 11AF 11B7 11BA;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11AF 11B8 11BA;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;<compat> 11AF 11B8 11C2;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;<compat> 11AF 11B8 11BC;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;<compat> 11AF 11BA 11BA;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;<compat> 11AF 11EB;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;<compat> 11AF 11BF;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11AF 11F9;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;<compat> 11B7 11A8;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;<compat> 11B7 11AF;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;<compat> 11B7 11B8;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;<compat> 11B7 11BA;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;<compat> 11B7 11BA 11BA;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;<compat> 11B7 11EB;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;<compat> 11B7 11BE;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;<compat> 11B7 11C2;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 11B7 11BC;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;<compat> 11B8 11AF;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 11B8 11C1;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;<compat> 11B8 11C2;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 11B8 11BC;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;<compat> 11BA 11A8;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;<compat> 11BA 11AE;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;<compat> 11BA 11AF;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;<compat> 11BA 11B8;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 11BC 11A8;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;<compat> 11BC 11A8 11A8;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;<compat> 11BC 11BC;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;<compat> 11BC 11BF;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;<compat> 11F0 11BA;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F0 11EB;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 11C1 11B8;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 11C1 11BC;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;<compat> 11C2 11AB;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;<compat> 11C2 11AF;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;<compat> 11C2 11B7;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;<compat> 11C2 11B8;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;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;0114 0327;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0115 0327;;;;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;;;;;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;00C2 0323;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00E2 0323;;;;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;0102 0323;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;0103 0323;;;;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;00CA 0323;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00EA 0323;;;;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;00D4 0323;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00F4 0323;;;;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;03B1 0301;;;;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;03B5 0301;;;;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;03B7 0301;;;;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;03B9 0301;;;;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;03BF 0301;;;;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;03C5 0301;;;;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;03C9 0301;;;;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;Lu;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;Lu;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;Lu;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;1F71 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;0391 0301;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lu;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;L;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Lu;0;L;03B9;;;;N;;;;;
+1FBF;GREEK PSILI;Sk;0;L;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;L;<compat> 0020 0342;;;;N;;;;;
+1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;L;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;1F75 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;0395 0301;;;;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;0397 0301;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lu;0;L;0397 0345;;;;N;;;;1FC3;
+1FCD;GREEK PSILI AND VARIA;Sk;0;L;1FBF 0300;;;;N;;;;;
+1FCE;GREEK PSILI AND OXIA;Sk;0;L;1FBF 0301;;;;N;;;;;
+1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;L;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;03CA 0301;;;;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;0399 0301;;;;N;;;;1F77;
+1FDD;GREEK DASIA AND VARIA;Sk;0;L;1FFE 0300;;;;N;;;;;
+1FDE;GREEK DASIA AND OXIA;Sk;0;L;1FFE 0301;;;;N;;;;;
+1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;L;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;03CB 0301;;;;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;03A5 0301;;;;N;;;;1F7B;
+1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
+1FED;GREEK DIALYTIKA AND VARIA;Sk;0;L;00A8 0300;;;;N;;;;;
+1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;L;00A8 0301;;;;N;;;;;
+1FEF;GREEK VARIA;Sk;0;L;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;1F79 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;039F 0301;;;;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;03A9 0301;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lu;0;L;03A9 0345;;;;N;;;;1FF3;
+1FFD;GREEK OXIA;Sk;0;L;00B4;;;;N;;;;;
+1FFE;GREEK DASIA;Sk;0;L;<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;CS;<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;Zs;0;WS;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;ON;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;ON;;;;;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;Ps;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pe;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Ps;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Ps;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pe;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Ps;0;ON;;;;;N;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;B;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;ON;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;ON;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;ON;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;ON;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;ON;;;;;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;Ps;0;ON;;;;;N;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pe;0;ON;;;;;N;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;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<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;ON;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;0;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<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;;;;
+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;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;L;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;L;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;L;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;L;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;L;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;L;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;L;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;L;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;L;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;L;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;L;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;L;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;L;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;L;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;1;L;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+2100;ACCOUNT OF;So;0;ON;;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;ON;<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;;;;;N;;;;;
+2106;CADA UNA;So;0;ON;;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;ON;<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;ON;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;ON;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;ON;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;ON;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;ON;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;ON;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;ON;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;ON;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;ON;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;ON;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;ON;<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;Lu;0;ON;<font> 0050;;;;N;SCRIPT P;;;;
+2119;DOUBLE-STRUCK CAPITAL P;Lu;0;ON;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;ON;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;ON;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;ON;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;ON;<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;<super> 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;ON;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
+2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
+2126;OHM SIGN;Lu;0;ON;03A9;;;;N;OHM;;;;
+2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
+2128;BLACK-LETTER CAPITAL Z;Lu;0;ON;<font> 005A;;;;N;BLACK-LETTER Z;;;;
+2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
+212A;KELVIN SIGN;Lu;0;ON;004B;;;;N;DEGREES KELVIN;;;;
+212B;ANGSTROM SIGN;Lu;0;ON;00C5;;;;N;ANGSTROM UNIT;;;;
+212C;SCRIPT CAPITAL B;Lu;0;ON;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;ON;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;Ll;0;ON;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;ON;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;ON;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;ON;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;So;0;ON;;;;;N;TURNED F;;;;
+2133;SCRIPT CAPITAL M;Lu;0;ON;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;ON;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;ON;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;ON;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;ON;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;ON;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+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;;;;;
+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;So;0;ON;;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;So;0;ON;;;;;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;So;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;So;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;So;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;So;0;ON;;;;;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;;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;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;;;;
+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;ET;;;;;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;;;;;
+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;007E 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;;;;;
+2300;DIAMETER SIGN;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;;;;;
+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;;;;
+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;ON;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;ON;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;ON;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;ON;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;ON;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;ON;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;ON;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;ON;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;ON;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;ON;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;ON;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;ON;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;ON;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;ON;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;ON;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;ON;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;ON;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;ON;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;ON;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;ON;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;ON;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;ON;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;ON;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;ON;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;ON;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;ON;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;ON;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;ON;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;ON;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;ON;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;ON;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;ON;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;ON;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;ON;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;ON;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;ON;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;ON;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;ON;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;ON;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;ON;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;ON;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;ON;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;ON;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;ON;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;ON;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;ON;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;ON;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;ON;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;ON;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;ON;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;ON;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;ON;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;ON;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;ON;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;ON;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;ON;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;ON;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;ON;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;ON;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;ON;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;ON;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;ON;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;ON;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;ON;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;ON;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;ON;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;ON;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;ON;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;ON;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;ON;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;ON;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;ON;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;ON;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;ON;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;ON;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;ON;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;ON;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;ON;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;ON;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;ON;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;ON;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;ON;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;ON;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;ON;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;ON;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;ON;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;ON;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;ON;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;ON;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;ON;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;ON;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;ON;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;ON;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;ON;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;ON;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;ON;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;ON;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;ON;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;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;;;;;
+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;So;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;So;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;;;;;
+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;;;;;
+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;So;0;ON;;;;;N;SHARP;;;;
+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;;;;;
+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;;;;
+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;ON;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Po;0;ON;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;ON;;;;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;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+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;L;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;L;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;L;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;L;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;L;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;L;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;ON;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;ON;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;ON;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;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;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;L;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;L;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Lm;0;L;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Lm;0;L;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;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;L;;;;;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;;;;;
+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;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;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;;;
+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;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;
+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;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Unassigned High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Unassigned 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, First>;Lo;0;L;;;;;N;;;;;
+FA2D;<CJK Compatibility Ideograph, Last>;Lo;0;L;;;;;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;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;R;;;;;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;R;<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;05E9 05BC 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;05E9 05BC 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;R;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;R;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;R;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;R;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;R;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;R;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;R;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;R;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;R;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;R;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;R;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;R;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;R;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;R;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;R;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;R;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;R;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;R;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;R;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;R;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;R;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;R;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;R;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;R;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;R;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;R;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;R;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;R;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;R;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;R;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;R;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;R;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;R;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;R;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;R;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;R;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;R;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;R;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;R;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;R;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;R;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;R;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;R;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;R;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;R;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;R;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;R;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;R;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;R;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;R;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;R;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;R;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;R;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;R;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;R;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;R;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;R;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;R;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;R;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;R;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;R;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;R;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;R;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;R;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;R;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;R;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;R;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;R;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;R;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;R;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;R;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;R;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;R;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;R;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;R;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;R;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;R;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;R;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;R;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;R;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;R;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;R;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;R;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;R;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;R;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;R;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;R;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;R;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;R;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;R;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;R;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;R;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;R;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;R;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;R;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;R;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;R;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;R;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;R;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;R;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;R;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;R;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;R;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;R;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;R;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;R;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;R;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;R;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;R;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;R;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;R;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;R;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;R;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;R;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;R;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;R;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;R;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;R;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;R;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;R;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;R;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;R;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;R;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;R;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;R;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;R;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;R;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;R;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;R;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;R;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;R;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;R;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;R;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064C;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064D;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064E;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064F;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0650;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;R;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;R;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;R;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;R;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;R;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;R;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;R;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;R;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;R;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;R;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;R;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;R;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;R;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;R;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;R;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;R;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;R;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;R;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;R;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;R;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;R;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;R;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;R;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;R;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;R;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;R;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;R;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;R;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;R;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;R;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;R;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;R;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;R;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064E;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064F;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 0650;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;R;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;R;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;R;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;R;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;R;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;R;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;R;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;R;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;R;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;R;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;R;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;R;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;R;<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;R;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;R;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;R;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;R;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;R;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;R;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;R;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;R;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;R;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;R;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;R;<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;R;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;ON;;;;;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;;;;
+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;ON;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;ON;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;ON;<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;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ON;<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;ON;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ON;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+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;ON;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ON;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;R;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;R;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;R;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;R;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;R;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;R;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;R;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;R;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;R;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;R;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;R;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;R;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;R;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;R;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;R;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;R;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;R;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;R;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;R;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;R;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;R;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;R;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;R;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;R;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;R;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;R;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;R;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;R;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;R;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;R;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;R;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;R;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;R;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;R;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;R;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;R;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;R;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;R;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;R;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;R;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;R;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;R;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;R;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;R;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;R;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;R;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;R;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;R;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;R;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;R;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;R;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;R;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;R;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;R;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;R;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;R;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;R;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;R;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;R;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;R;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;R;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;R;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;R;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;R;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;R;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;R;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;R;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;R;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;R;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;R;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;R;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;R;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;R;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;R;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;R;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;R;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;R;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;R;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;R;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;R;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;R;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;R;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;R;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;R;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;R;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;R;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;R;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;R;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;R;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;R;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;R;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;R;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;R;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;R;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;R;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;R;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;R;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;R;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;R;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;R;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;R;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;R;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;R;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;R;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;R;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;R;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;R;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;R;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<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;R;<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;R;<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;R;<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;R;<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;R;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;R;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;ON;;;;;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;ON;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ON;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ON;<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;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ON;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;ON;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ON;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;ON;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ON;<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;ON;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+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;;;;N;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;;;;N;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;;;;N;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;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;L;<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> 309B;;;;N;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309C;;;;N;;;;;
+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;ON;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ON;<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;ON;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ON;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;Sm;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;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/data/unicode/UnicodeData-2.1.5.txt b/src/data/unicode/UnicodeData-2.1.5.txt
new file mode 100755
index 0000000..4e4e629
--- /dev/null
+++ b/src/data/unicode/UnicodeData-2.1.5.txt
@@ -0,0 +1,6890 @@
+0000;<control>;Cc;0;ON;;;;;N;NULL;;;;
+0001;<control>;Cc;0;ON;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;ON;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;ON;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;ON;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;ON;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;ON;;;;;N;BELL;;;;
+0008;<control>;Cc;0;ON;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;B;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;ON;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;ON;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;ON;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;ON;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;ON;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;ON;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;ON;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;ON;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;ON;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+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;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;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;<compat> 0020 0302;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;<compat> 0020 0332;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;<compat> 0020 0300;;;;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;ON;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;ON;;;;;N;;;;;
+0081;<control>;Cc;0;ON;;;;;N;;;;;
+0082;<control>;Cc;0;ON;;;;;N;;;;;
+0083;<control>;Cc;0;ON;;;;;N;;;;;
+0084;<control>;Cc;0;ON;;;;;N;;;;;
+0085;<control>;Cc;0;ON;;;;;N;;;;;
+0086;<control>;Cc;0;ON;;;;;N;;;;;
+0087;<control>;Cc;0;ON;;;;;N;;;;;
+0088;<control>;Cc;0;ON;;;;;N;;;;;
+0089;<control>;Cc;0;ON;;;;;N;;;;;
+008A;<control>;Cc;0;ON;;;;;N;;;;;
+008B;<control>;Cc;0;ON;;;;;N;;;;;
+008C;<control>;Cc;0;ON;;;;;N;;;;;
+008D;<control>;Cc;0;ON;;;;;N;;;;;
+008E;<control>;Cc;0;ON;;;;;N;;;;;
+008F;<control>;Cc;0;ON;;;;;N;;;;;
+0090;<control>;Cc;0;ON;;;;;N;;;;;
+0091;<control>;Cc;0;ON;;;;;N;;;;;
+0092;<control>;Cc;0;ON;;;;;N;;;;;
+0093;<control>;Cc;0;ON;;;;;N;;;;;
+0094;<control>;Cc;0;ON;;;;;N;;;;;
+0095;<control>;Cc;0;ON;;;;;N;;;;;
+0096;<control>;Cc;0;ON;;;;;N;;;;;
+0097;<control>;Cc;0;ON;;;;;N;;;;;
+0098;<control>;Cc;0;ON;;;;;N;;;;;
+0099;<control>;Cc;0;ON;;;;;N;;;;;
+009A;<control>;Cc;0;ON;;;;;N;;;;;
+009B;<control>;Cc;0;ON;;;;;N;;;;;
+009C;<control>;Cc;0;ON;;;;;N;;;;;
+009D;<control>;Cc;0;ON;;;;;N;;;;;
+009E;<control>;Cc;0;ON;;;;;N;;;;;
+009F;<control>;Cc;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;WS;<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;;;;;N;LEFT POINTING GUILLEMET;;;;
+00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
+00AD;SOFT HYPHEN;Pd;0;ON;;;;;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;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;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;;;;;
+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;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;;;;;N;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;;;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;;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;;;;
+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;;;;
+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;;;;
+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;;;;;
+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;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;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;;;;
+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;Lo;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;Lo;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Lo;0;L;;;;;N;;;;;
+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;
+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;
+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;
+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;0041 0307 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0061 0307 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;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;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;
+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
+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;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;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
+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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;Ll;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;;;;
+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;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;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;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;ON;;;;;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;;;;;
+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;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;ON;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;ON;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;ON;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;ON;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;ON;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;ON;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;ON;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;ON;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;ON;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;ON;0306 0307;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;ON;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;ON;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;ON;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;ON;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;ON;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;ON;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;ON;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;ON;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;ON;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;ON;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;ON;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;ON;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;ON;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;ON;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;ON;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;ON;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;ON;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;ON;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;ON;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;ON;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;ON;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;ON;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;ON;0308 030D;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;220;ON;;;;;N;GREEK NON-SPACING IOTA BELOW;;;;
+0360;COMBINING DOUBLE TILDE;Mn;234;ON;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;ON;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Po;0;L;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Po;0;L;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+037E;GREEK QUESTION MARK;Po;0;L;003B;;;;N;;Erotimatiko;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 0020 030D;;;;N;GREEK SPACING TONOS;;;;
+0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 030D;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
+0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 030D;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
+0387;GREEK ANO TELEIA;Po;0;L;00B7;;;;N;;;;;
+0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 030D;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
+0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 030D;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
+038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 030D;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
+038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 030D;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
+038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 030D;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
+038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 030D;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
+0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03B9 0344;;;;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 030D;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
+03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 030D;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
+03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 030D;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
+03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 030D;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
+03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03C5 0344;;;;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 030D;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
+03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 030D;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
+03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 030D;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
+03D0;GREEK BETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
+03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 030D;;;;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;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;;
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;;
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;;
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;;
+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;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Lo;0;L;;;;;N;;;;;
+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;
+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
+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
+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;ON;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+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;Lo;0;L;;;;;N;CYRILLIC LETTER I;;;;
+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
+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
+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
+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
+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
+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
+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;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;ON;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;ON;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;ON;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;ON;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;ON;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;ON;;;;;N;;;;;
+0597;HEBREW ACCENT REVIA;Mn;230;ON;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;ON;;;;;N;;;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;ON;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;ON;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;ON;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;ON;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;ON;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;ON;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;ON;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;ON;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;ON;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;ON;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;ON;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;ON;;;;;N;;;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;ON;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;ON;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;ON;;;;;N;;;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;ON;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;ON;;;;;N;;;;;
+05AB;HEBREW ACCENT OLE;Mn;230;ON;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;ON;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;ON;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;230;ON;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;ON;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;ON;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;ON;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;ON;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;ON;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;ON;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;ON;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;ON;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;ON;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;ON;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;ON;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;ON;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;ON;;;;;N;HEBREW POINT DAGESH;;;;
+05BD;HEBREW POINT METEG;Mn;22;ON;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;ON;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;ON;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;ON;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;ON;;;;;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;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;R;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;R;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;R;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;ON;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;ON;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;ON;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;ON;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;ON;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;ON;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;ON;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;ON;;;;;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;R;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;ON;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;R;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;R;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;R;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;R;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;R;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;R;;;;;N;;;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;R;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;R;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;R;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;R;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;R;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;R;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06D0;ARABIC LETTER E;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;R;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;R;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;R;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;ON;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;ON;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;ON;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;ON;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;ON;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;ON;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;ON;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;ON;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;ON;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;ON;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;ON;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;ON;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;ON;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;R;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;R;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;ON;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;ON;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;ON;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;ON;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;ON;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;ON;;;;;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;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;37;ON;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;36;ON;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;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;ON;;;;;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;38;ON;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;39;ON;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;40;ON;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;41;ON;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;42;ON;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;43;ON;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;44;ON;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;45;ON;;;;;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;ON;;;;;N;;;;;
+0950;DEVANAGARI OM;So;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;46;ON;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;47;ON;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;ON;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;ON;;;;;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;48;ON;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;49;ON;;;;;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;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;50;ON;;;;;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;09AC 09BC;;;;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;ON;;;;;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;51;ON;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;52;ON;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;53;ON;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;54;ON;;;;;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;ON;;;;;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;55;ON;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;56;ON;;;;;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;L;;;;;N;;;;;
+09F3;BENGALI RUPEE SIGN;Sc;0;L;;;;;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;;;;-1;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;57;ON;;;;;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;;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;ON;;;;;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;58;ON;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;59;ON;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;60;ON;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;61;ON;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;62;ON;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;63;ON;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;ON;;;;;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;0A21 0A3C;;;;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;64;ON;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;65;ON;;;;;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;67;ON;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;66;ON;;;;;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;;;;;
+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;ON;;;;;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;68;ON;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;69;ON;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;70;ON;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;71;ON;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;72;ON;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;73;ON;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;74;ON;;;;;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;ON;;;;;N;;;;;
+0AD0;GUJARATI OM;So;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;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;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;75;ON;;;;;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;;;;;
+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;ON;;;;;N;;;;;
+0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0B3F;ORIYA VOWEL SIGN I;Mn;76;ON;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;77;ON;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;78;ON;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;79;ON;;;;;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;ON;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;230;ON;;;;;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;0B2F 0B3C;;;;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;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;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;;;;;
+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;80;ON;;;;;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;ON;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;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;;;;;
+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;81;ON;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;82;ON;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;83;ON;;;;;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;84;ON;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;85;ON;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;86;ON;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;87;ON;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;88;ON;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;89;ON;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;90;ON;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;ON;;;;;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;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;92;ON;;;;;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;93;ON;;;;;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;0CC6 0CC2 0CD5;;;;N;;;;;
+0CCC;KANNADA VOWEL SIGN AU;Mn;94;ON;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;ON;;;;;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;;;;;
+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;;;;;
+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;95;ON;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;96;ON;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;97;ON;;;;;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;ON;;;;;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;;;;;
+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;Po;0;L;;;;;N;THAI PAI YAN NOI;;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;98;ON;;;;;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;0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;99;ON;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;100;ON;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;101;ON;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;102;ON;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
+0E38;THAI CHARACTER SARA U;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;104;ON;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;105;ON;;;;;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;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;106;ON;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;ON;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;108;ON;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;109;ON;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;110;ON;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;111;ON;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;112;ON;;;;;N;THAI NIKKHAHIT;;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;128;ON;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;So;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;Po;0;L;;;;;N;;;;;
+0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
+0EB1;LAO VOWEL SIGN MAI KAN;Mn;113;ON;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;114;ON;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;115;ON;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;116;ON;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;117;ON;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;ON;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;119;ON;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;120;ON;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;121;ON;;;;;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;ON;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;123;ON;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;124;ON;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;125;ON;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;126;ON;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;127;ON;;;;;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;So;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;;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;;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;;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;;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;;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;;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;ON;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;ON;;;;;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;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;230;ON;;;;;N;;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;230;ON;;;;;N;;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;ON;;;;;N;;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;L;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;L;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;L;;;;;N;;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;L;;;;;N;;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Ps;0;L;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Pe;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;;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;145;ON;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;ON;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;131;ON;0F72 0F71;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;ON;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;133;ON;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;134;ON;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;135;ON;0F76 0F71;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;136;ON;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;137;ON;0F78 0F71;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;138;ON;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;139;ON;;;;;N;;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;140;ON;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;141;ON;;;;;N;;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;142;ON;;;;;N;;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;143;ON;;;;;N;;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;144;ON;0F80 0F71;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;ON;;;;;N;;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;ON;;;;;N;;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;ON;;;;;N;;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;ON;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;ON;;;;;N;;yang ta;;;
+0F88;TIBETAN SIGN LCE TSA CAN;So;0;L;;;;;N;;che tsa chen;;;
+0F89;TIBETAN SIGN MCHU CAN;So;0;L;;;;;N;;chu chen;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;So;0;L;;;;;N;;tru chen ging;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;So;0;L;;;;;N;;tru me ging;;;
+0F90;TIBETAN SUBJOINED LETTER KA;Mn;6;ON;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;6;ON;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;6;ON;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;6;ON;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;6;ON;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;6;ON;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;6;ON;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;6;ON;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;6;ON;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;6;ON;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;6;ON;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;6;ON;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;6;ON;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;6;ON;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;6;ON;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;6;ON;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;6;ON;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;6;ON;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;6;ON;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;6;ON;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;6;ON;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;6;ON;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;6;ON;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;6;ON;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;6;ON;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;6;ON;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;6;ON;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;6;ON;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;6;ON;;;;;N;;;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;6;ON;;;;;N;;;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;6;ON;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;6;ON;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;6;ON;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;6;ON;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;6;ON;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;6;ON;0F90 0FB5;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;10D0;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;10D1;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;10D2;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;10D3;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;10D4;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;10D5;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;10D6;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;10D7;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;10D8;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;10D9;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;10DA;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;10DB;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;10DC;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;10DD;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;10DE;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;10DF;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;10E0;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;10E1;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;10E2;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;10E3;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;10E4;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;10E5;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;10E6;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;10E7;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;10E8;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;10E9;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;10EA;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;10EB;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;10EC;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;10ED;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;10EE;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;10EF;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;10F0;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;10F1;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;10F2;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;10F3;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;10F4;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;10F5;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;<compat> 1100 1100;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;<compat> 1103 1103;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;<compat> 1107 1107;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;<compat> 1109 1109;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;<compat> 110C 110C;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 1102 1100;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;<compat> 1102 1102;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 1102 1103;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;<compat> 1102 1107;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 1103 1100;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;<compat> 1105 1102;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;<compat> 1105 1105;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;<compat> 1105 1112;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;<compat> 1105 110B;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;<compat> 1106 1107;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 1106 110B;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;<compat> 1107 1100;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;<compat> 1107 1102;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;<compat> 1107 1103;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;<compat> 1107 1109;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1107 1109 1100;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1107 1109 1103;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;<compat> 1107 1109 1107;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;<compat> 1107 1109 1109;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;<compat> 1107 1109 110C;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;<compat> 1107 110C;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;<compat> 1107 110E;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;<compat> 1107 1110;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 1107 1111;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 1107 110B;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 1107 1107 110B;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;<compat> 1109 1100;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;<compat> 1109 1102;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;<compat> 1109 1103;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;<compat> 1109 1105;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;<compat> 1109 1106;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;<compat> 1109 1107;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;<compat> 1109 1107 1100;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;<compat> 1109 1109 1109;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;<compat> 1109 110B;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;<compat> 1109 110C;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;<compat> 1109 110E;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;<compat> 1109 110F;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;<compat> 1109 1110;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;<compat> 1109 1111;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;<compat> 1109 1112;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;<compat> 113C 113C;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;<compat> 113E 113E;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 110B 1100;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;<compat> 110B 1103;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;<compat> 110B 1106;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;<compat> 110B 1107;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;<compat> 110B 1109;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;<compat> 110B 1140;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;<compat> 110B 110B;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;<compat> 110B 110C;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;<compat> 110B 110E;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;<compat> 110B 1110;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;<compat> 110B 1111;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;<compat> 110C 110B;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;<compat> 114E 114E;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;<compat> 1150 1150;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;<compat> 110E 110F;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;<compat> 110E 1112;;;;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;<compat> 1111 1107;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1111 110B;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;<compat> 1112 1112;;;;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;<compat> 1161 1175;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;<compat> 1163 1175;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;<compat> 1165 1175;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;<compat> 1167 1175;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;<compat> 1169 1161;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;<compat> 1169 1161 1175;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;<compat> 1169 1175;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;<compat> 116E 1165;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;<compat> 116E 1165 1175;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;<compat> 116E 1175;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;<compat> 1173 1175;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;<compat> 1161 1169;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;<compat> 1161 116E;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;<compat> 1163 1169;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;<compat> 1163 116D;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;<compat> 1165 1169;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;<compat> 1165 116E;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;<compat> 1165 1173;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;<compat> 1167 1169;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;<compat> 1167 116E;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;<compat> 1169 1165;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;<compat> 1169 1166;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;<compat> 1169 1168;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;<compat> 1169 1169;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;<compat> 1169 116E;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;<compat> 116D 1163;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;<compat> 116D 1164;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;<compat> 116D 1167;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;<compat> 116D 1169;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;<compat> 116D 1175;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;<compat> 116E 1161;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;<compat> 116E 1162;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;<compat> 116E 1165 1173;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;<compat> 116E 1168;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;<compat> 116E 116E;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;<compat> 1172 1161;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;<compat> 1172 1165;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;<compat> 1172 1166;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;<compat> 1172 1167;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;<compat> 1172 1168;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;<compat> 1172 116E;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;<compat> 1172 1175;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;<compat> 1173 116E;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;<compat> 1173 1173;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;<compat> 1174 116E;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;<compat> 1175 1161;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;<compat> 1175 1163;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;<compat> 1175 1169;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;<compat> 1175 116E;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;<compat> 1175 1173;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;<compat> 1175 119E;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;<compat> 119E 1165;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;<compat> 119E 116E;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;<compat> 119E 1175;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;<compat> 119E 119E;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;<compat> 11A8 11A8;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;<compat> 11A8 11BA;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;<compat> 11AB 11BD;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;<compat> 11AB 11C2;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;<compat> 11AF 11A8;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;<compat> 11AF 11B7;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;<compat> 11AF 11B8;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;<compat> 11AF 11BA;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;<compat> 11AF 11C0;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;<compat> 11AF 11C1;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;<compat> 11AF 11C2;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;<compat> 11B8 11BA;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;<compat> 11BA 11BA;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;<compat> 11A8 11AF;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;<compat> 11A8 11BA 11A8;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 11AB 11A8;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 11AB 11AE;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;<compat> 11AB 11BA;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;<compat> 11AB 11EB;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;<compat> 11AB 11C0;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 11AE 11A8;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;<compat> 11AE 11AF;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11AF 11A8 11BA;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;<compat> 11AF 11AB;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;<compat> 11AF 11AE;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;<compat> 11AF 11AE 11C2;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;<compat> 11AF 11AF;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;<compat> 11AF 11B7 11A8;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;<compat> 11AF 11B7 11BA;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11AF 11B8 11BA;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;<compat> 11AF 11B8 11C2;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;<compat> 11AF 11B8 11BC;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;<compat> 11AF 11BA 11BA;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;<compat> 11AF 11EB;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;<compat> 11AF 11BF;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11AF 11F9;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;<compat> 11B7 11A8;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;<compat> 11B7 11AF;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;<compat> 11B7 11B8;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;<compat> 11B7 11BA;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;<compat> 11B7 11BA 11BA;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;<compat> 11B7 11EB;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;<compat> 11B7 11BE;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;<compat> 11B7 11C2;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 11B7 11BC;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;<compat> 11B8 11AF;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 11B8 11C1;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;<compat> 11B8 11C2;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 11B8 11BC;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;<compat> 11BA 11A8;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;<compat> 11BA 11AE;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;<compat> 11BA 11AF;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;<compat> 11BA 11B8;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 11BC 11A8;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;<compat> 11BC 11A8 11A8;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;<compat> 11BC 11BC;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;<compat> 11BC 11BF;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;<compat> 11F0 11BA;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F0 11EB;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 11C1 11B8;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 11C1 11BC;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;<compat> 11C2 11AB;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;<compat> 11C2 11AF;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;<compat> 11C2 11B7;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;<compat> 11C2 11B8;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;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;0114 0327;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0115 0327;;;;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;;;;;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;00C2 0323;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00E2 0323;;;;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;0102 0323;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;0103 0323;;;;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;00CA 0323;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00EA 0323;;;;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;00D4 0323;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00F4 0323;;;;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;03B1 0301;;;;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;03B5 0301;;;;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;03B7 0301;;;;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;03B9 0301;;;;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;03BF 0301;;;;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;03C5 0301;;;;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;03C9 0301;;;;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;Lu;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;Lu;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;Lu;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;1F71 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;0391 0301;;;;N;;;;1F71;
+1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lu;0;L;0391 0345;;;;N;;;;1FB3;
+1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Lu;0;L;03B9;;;;N;;;;;
+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;1F75 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;0395 0301;;;;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;0397 0301;;;;N;;;;1F75;
+1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lu;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;03CA 0301;;;;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;0399 0301;;;;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;03CB 0301;;;;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;03A5 0301;;;;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;00A8 0301;;;;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;1F79 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;039F 0301;;;;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;03A9 0301;;;;N;;;;1F7D;
+1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lu;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;CS;<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;Zs;0;WS;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;ON;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;ON;;;;;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;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;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;B;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;L;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;R;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;ON;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;L;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;R;;;;;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;;;;;N;LEFT POINTING SINGLE GUILLEMET;;;;
+203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;N;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;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<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;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<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;;;;
+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;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;ON;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;ON;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;ON;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;ON;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;1;ON;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+2100;ACCOUNT OF;So;0;ON;;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;;;;;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;;;;;N;;;;;
+2106;CADA UNA;So;0;ON;;;;;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;Lu;0;L;<font> 0050;;;;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;;;;
+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;;;;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;;
+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;Ll;0;L;;;;;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;So;0;ON;;;;;N;TURNED F;;;;
+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;;;;
+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;;;;;
+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;So;0;ON;;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;So;0;ON;;;;;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;So;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;So;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;So;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;So;0;ON;;;;;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;;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;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;;;;
+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;ET;;;;;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;;;;;
+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;007E 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;;;;;
+2300;DIAMETER SIGN;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;;;;;
+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;;;;
+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;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<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;EN;<circle> 0030;;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;;;;;
+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;So;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;So;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;;;;;
+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;;;;;
+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;So;0;ON;;;;;N;SHARP;;;;
+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;;;;;
+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;;;;
+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;ON;;;;;N;;;;;
+3006;IDEOGRAPHIC CLOSING MARK;Po;0;ON;;;;;N;;;;;
+3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;ON;;;;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;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+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;ON;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;ON;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;ON;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;ON;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;ON;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;ON;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;ON;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;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;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
+309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Lm;0;L;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Lm;0;L;<compat> 0020 309A;;;;N;;;;;
+309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
+309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;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;L;;;;;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;;;;;
+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;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;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;;;
+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;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;
+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;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Unassigned High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Unassigned 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;96FB;;;;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;;;;;
+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;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;ON;;;;;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;ET;<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;05E9 05BC 05C1;;;;N;;;;;
+FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;05E9 05BC 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;R;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;R;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;R;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;R;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;R;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;R;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;R;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;R;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;R;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;R;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;R;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;R;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;R;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;R;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;R;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;R;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;R;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;R;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;R;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;R;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;R;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;R;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;R;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;R;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;R;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;R;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;R;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;R;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;R;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;R;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;R;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;R;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;R;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;R;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;R;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;R;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;R;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;R;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;R;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;R;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;R;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;R;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;R;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;R;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;R;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;R;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;R;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;R;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;R;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;R;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;R;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;R;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;R;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;R;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;R;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;R;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;R;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;R;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;R;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;R;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;R;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;R;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;R;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;R;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;R;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;R;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;R;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;R;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;R;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;R;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;R;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;R;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;R;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;R;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;R;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;R;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;R;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;R;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;R;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;R;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;R;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;R;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;R;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;R;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;R;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;R;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;R;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;R;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;R;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;R;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;R;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;R;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;R;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;R;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;R;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;R;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;R;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;R;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;R;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;R;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;R;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;R;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;R;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;R;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;R;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;R;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;R;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;R;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;R;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;R;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;R;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;R;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;R;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;R;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;R;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;R;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;R;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;R;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;R;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;R;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;R;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;R;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;R;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;R;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;R;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;R;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;R;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;R;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;R;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;R;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;R;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;R;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;R;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064C;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064D;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064E;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064F;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0650;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;R;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;R;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;R;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;R;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;R;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;R;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;R;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;R;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;R;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;R;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;R;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;R;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;R;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;R;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;R;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;R;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;R;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;R;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;R;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;R;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;R;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;R;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;R;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;R;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;R;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;R;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;R;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;R;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;R;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;R;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;R;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;R;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;R;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064E;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064F;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 0650;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;R;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;R;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;R;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;R;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;R;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;R;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;R;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;R;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;R;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;R;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;R;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;R;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;R;<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;R;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;R;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;R;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;R;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;R;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;R;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;R;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;R;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;R;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;R;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;R;<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;R;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;ON;;;;;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;;;;
+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;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;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;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+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;R;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;R;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;R;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;R;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;R;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;R;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;R;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;R;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;R;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;R;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;R;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;R;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;R;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;R;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;R;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;R;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;R;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;R;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;R;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;R;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;R;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;R;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;R;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;R;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;R;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;R;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;R;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;R;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;R;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;R;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;R;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;R;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;R;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;R;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;R;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;R;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;R;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;R;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;R;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;R;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;R;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;R;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;R;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;R;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;R;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;R;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;R;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;R;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;R;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;R;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;R;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;R;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;R;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;R;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;R;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;R;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;R;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;R;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;R;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;R;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;R;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;R;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;R;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;R;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;R;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;R;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;R;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;R;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;R;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;R;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;R;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;R;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;R;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;R;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;R;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;R;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;R;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;R;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;R;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;R;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;R;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;R;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;R;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;R;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;R;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;R;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;R;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;R;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;R;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;R;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;R;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;R;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;R;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;R;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;R;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;R;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;R;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;R;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;R;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;R;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;R;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;R;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;R;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;R;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;R;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;R;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;R;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;R;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;R;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<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;R;<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;R;<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;R;<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;R;<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;R;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;R;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;ON;;;;;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;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<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;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+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;;;;N;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;;;;N;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;;;;N;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;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;L;<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;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;
+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;Sm;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;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/data/unicode/UnicodeData-2.1.8.txt b/src/data/unicode/UnicodeData-2.1.8.txt
new file mode 100755
index 0000000..6c2f693
--- /dev/null
+++ b/src/data/unicode/UnicodeData-2.1.8.txt
@@ -0,0 +1,6890 @@
+0000;<control>;Cc;0;ON;;;;;N;NULL;;;;
+0001;<control>;Cc;0;ON;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;ON;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;ON;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;ON;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;ON;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;ON;;;;;N;BELL;;;;
+0008;<control>;Cc;0;ON;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;B;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+000E;<control>;Cc;0;ON;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;ON;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;ON;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;ON;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;ON;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;ON;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;ON;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;ON;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;ON;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;ON;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;ON;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+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;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;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;<compat> 0020 0302;;;;N;SPACING CIRCUMFLEX;;;;
+005F;LOW LINE;Pc;0;ON;<compat> 0020 0332;;;;N;SPACING UNDERSCORE;;;;
+0060;GRAVE ACCENT;Sk;0;ON;<compat> 0020 0300;;;;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;ON;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;ON;;;;;N;;;;;
+0081;<control>;Cc;0;ON;;;;;N;;;;;
+0082;<control>;Cc;0;ON;;;;;N;;;;;
+0083;<control>;Cc;0;ON;;;;;N;;;;;
+0084;<control>;Cc;0;ON;;;;;N;;;;;
+0085;<control>;Cc;0;ON;;;;;N;;;;;
+0086;<control>;Cc;0;ON;;;;;N;;;;;
+0087;<control>;Cc;0;ON;;;;;N;;;;;
+0088;<control>;Cc;0;ON;;;;;N;;;;;
+0089;<control>;Cc;0;ON;;;;;N;;;;;
+008A;<control>;Cc;0;ON;;;;;N;;;;;
+008B;<control>;Cc;0;ON;;;;;N;;;;;
+008C;<control>;Cc;0;ON;;;;;N;;;;;
+008D;<control>;Cc;0;ON;;;;;N;;;;;
+008E;<control>;Cc;0;ON;;;;;N;;;;;
+008F;<control>;Cc;0;ON;;;;;N;;;;;
+0090;<control>;Cc;0;ON;;;;;N;;;;;
+0091;<control>;Cc;0;ON;;;;;N;;;;;
+0092;<control>;Cc;0;ON;;;;;N;;;;;
+0093;<control>;Cc;0;ON;;;;;N;;;;;
+0094;<control>;Cc;0;ON;;;;;N;;;;;
+0095;<control>;Cc;0;ON;;;;;N;;;;;
+0096;<control>;Cc;0;ON;;;;;N;;;;;
+0097;<control>;Cc;0;ON;;;;;N;;;;;
+0098;<control>;Cc;0;ON;;;;;N;;;;;
+0099;<control>;Cc;0;ON;;;;;N;;;;;
+009A;<control>;Cc;0;ON;;;;;N;;;;;
+009B;<control>;Cc;0;ON;;;;;N;;;;;
+009C;<control>;Cc;0;ON;;;;;N;;;;;
+009D;<control>;Cc;0;ON;;;;;N;;;;;
+009E;<control>;Cc;0;ON;;;;;N;;;;;
+009F;<control>;Cc;0;ON;;;;;N;;;;;
+00A0;NO-BREAK SPACE;Zs;0;WS;<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;Pd;0;ON;;;;;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;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;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;;;;;
+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;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;;;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;;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;;;;
+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;;;;
+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;;;;
+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;;;;;
+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;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;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;Lo;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;Lo;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
+01BF;LATIN LETTER WYNN;Lo;0;L;;;;;N;;;;;
+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;
+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;
+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;
+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;0041 0307 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
+01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0061 0307 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;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;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;
+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
+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;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;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
+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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;Ll;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;;;;
+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;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;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;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
+02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;ON;;;;;N;;;;;
+02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;ON;;;;;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;;;;;
+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;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING ACUTE;Oxia;;;
+0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;ON;;;;;N;NON-SPACING CIRCUMFLEX;;;;
+0303;COMBINING TILDE;Mn;230;ON;;;;;N;NON-SPACING TILDE;;;;
+0304;COMBINING MACRON;Mn;230;ON;;;;;N;NON-SPACING MACRON;;;;
+0305;COMBINING OVERLINE;Mn;230;ON;;;;;N;NON-SPACING OVERSCORE;;;;
+0306;COMBINING BREVE;Mn;230;ON;;;;;N;NON-SPACING BREVE;Vrachy;;;
+0307;COMBINING DOT ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;ON;;;;;N;NON-SPACING DIAERESIS;Dialytika;;;
+0309;COMBINING HOOK ABOVE;Mn;230;ON;;;;;N;NON-SPACING HOOK ABOVE;;;;
+030A;COMBINING RING ABOVE;Mn;230;ON;;;;;N;NON-SPACING RING ABOVE;;;;
+030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
+030C;COMBINING CARON;Mn;230;ON;;;;;N;NON-SPACING HACEK;;;;
+030D;COMBINING VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL LINE ABOVE;Tonos;;;
+030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
+030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;ON;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
+0310;COMBINING CANDRABINDU;Mn;230;ON;;;;;N;NON-SPACING CANDRABINDU;;;;
+0311;COMBINING INVERTED BREVE;Mn;230;ON;;;;;N;NON-SPACING INVERTED BREVE;;;;
+0312;COMBINING TURNED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
+0313;COMBINING COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING COMMA ABOVE;Psili;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;ON;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;;
+0315;COMBINING COMMA ABOVE RIGHT;Mn;232;ON;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
+0316;COMBINING GRAVE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING GRAVE BELOW;;;;
+0317;COMBINING ACUTE ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING ACUTE BELOW;;;;
+0318;COMBINING LEFT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
+0319;COMBINING RIGHT TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
+031A;COMBINING LEFT ANGLE ABOVE;Mn;232;ON;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
+031B;COMBINING HORN;Mn;216;ON;;;;;N;NON-SPACING HORN;;;;
+031C;COMBINING LEFT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
+031D;COMBINING UP TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING UP TACK BELOW;;;;
+031E;COMBINING DOWN TACK BELOW;Mn;220;ON;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
+031F;COMBINING PLUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
+0320;COMBINING MINUS SIGN BELOW;Mn;220;ON;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
+0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
+0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;ON;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
+0323;COMBINING DOT BELOW;Mn;220;ON;;;;;N;NON-SPACING DOT BELOW;;;;
+0324;COMBINING DIAERESIS BELOW;Mn;220;ON;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
+0325;COMBINING RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RING BELOW;;;;
+0326;COMBINING COMMA BELOW;Mn;220;ON;;;;;N;NON-SPACING COMMA BELOW;;;;
+0327;COMBINING CEDILLA;Mn;202;ON;;;;;N;NON-SPACING CEDILLA;;;;
+0328;COMBINING OGONEK;Mn;202;ON;;;;;N;NON-SPACING OGONEK;;;;
+0329;COMBINING VERTICAL LINE BELOW;Mn;220;ON;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
+032A;COMBINING BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING BRIDGE BELOW;;;;
+032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
+032C;COMBINING CARON BELOW;Mn;220;ON;;;;;N;NON-SPACING HACEK BELOW;;;;
+032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;ON;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
+032E;COMBINING BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING BREVE BELOW;;;;
+032F;COMBINING INVERTED BREVE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
+0330;COMBINING TILDE BELOW;Mn;220;ON;;;;;N;NON-SPACING TILDE BELOW;;;;
+0331;COMBINING MACRON BELOW;Mn;220;ON;;;;;N;NON-SPACING MACRON BELOW;;;;
+0332;COMBINING LOW LINE;Mn;220;ON;;;;;N;NON-SPACING UNDERSCORE;;;;
+0333;COMBINING DOUBLE LOW LINE;Mn;220;ON;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
+0334;COMBINING TILDE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING TILDE OVERLAY;;;;
+0335;COMBINING SHORT STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
+0336;COMBINING LONG STROKE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
+0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
+0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
+0339;COMBINING RIGHT HALF RING BELOW;Mn;220;ON;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
+033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;ON;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
+033B;COMBINING SQUARE BELOW;Mn;220;ON;;;;;N;NON-SPACING SQUARE BELOW;;;;
+033C;COMBINING SEAGULL BELOW;Mn;220;ON;;;;;N;NON-SPACING SEAGULL BELOW;;;;
+033D;COMBINING X ABOVE;Mn;230;ON;;;;;N;NON-SPACING X ABOVE;;;;
+033E;COMBINING VERTICAL TILDE;Mn;230;ON;;;;;N;NON-SPACING VERTICAL TILDE;;;;
+033F;COMBINING DOUBLE OVERLINE;Mn;230;ON;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
+0340;COMBINING GRAVE TONE MARK;Mn;230;ON;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;ON;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;;
+0342;COMBINING GREEK PERISPOMENI;Mn;230;ON;;;;;N;;;;;
+0343;COMBINING GREEK KORONIS;Mn;230;ON;0313;;;;N;;;;;
+0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;ON;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
+0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;ON;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;
+0360;COMBINING DOUBLE TILDE;Mn;234;ON;;;;;N;;;;;
+0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;ON;;;;;N;;;;;
+0374;GREEK NUMERAL SIGN;Po;0;L;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;;
+0375;GREEK LOWER NUMERAL SIGN;Po;0;L;;;;;N;;Aristeri keraia;;;
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
+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;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;;;;;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;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;;
+03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;;
+03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;;
+03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;;
+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;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03A3;;03A3
+03F3;GREEK LETTER YOT;Lo;0;L;;;;;N;;;;;
+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;
+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
+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
+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;ON;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
+0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
+0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
+0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;ON;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
+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;Lo;0;L;;;;;N;CYRILLIC LETTER I;;;;
+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
+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
+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
+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
+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
+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
+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;;;;
+0591;HEBREW ACCENT ETNAHTA;Mn;220;ON;;;;;N;;;;;
+0592;HEBREW ACCENT SEGOL;Mn;230;ON;;;;;N;;;;;
+0593;HEBREW ACCENT SHALSHELET;Mn;230;ON;;;;;N;;;;;
+0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;ON;;;;;N;;;;;
+0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;ON;;;;;N;;;;;
+0596;HEBREW ACCENT TIPEHA;Mn;220;ON;;;;;N;;;;;
+0597;HEBREW ACCENT REVIA;Mn;230;ON;;;;;N;;;;;
+0598;HEBREW ACCENT ZARQA;Mn;230;ON;;;;;N;;;;;
+0599;HEBREW ACCENT PASHTA;Mn;230;ON;;;;;N;;;;;
+059A;HEBREW ACCENT YETIV;Mn;222;ON;;;;;N;;;;;
+059B;HEBREW ACCENT TEVIR;Mn;220;ON;;;;;N;;;;;
+059C;HEBREW ACCENT GERESH;Mn;230;ON;;;;;N;;;;;
+059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;ON;;;;;N;;;;;
+059E;HEBREW ACCENT GERSHAYIM;Mn;230;ON;;;;;N;;;;;
+059F;HEBREW ACCENT QARNEY PARA;Mn;230;ON;;;;;N;;;;;
+05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;ON;;;;;N;;;;;
+05A1;HEBREW ACCENT PAZER;Mn;230;ON;;;;;N;;;;;
+05A3;HEBREW ACCENT MUNAH;Mn;220;ON;;;;;N;;;;;
+05A4;HEBREW ACCENT MAHAPAKH;Mn;220;ON;;;;;N;;;;;
+05A5;HEBREW ACCENT MERKHA;Mn;220;ON;;;;;N;;;;;
+05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;ON;;;;;N;;;;;
+05A7;HEBREW ACCENT DARGA;Mn;220;ON;;;;;N;;;;;
+05A8;HEBREW ACCENT QADMA;Mn;230;ON;;;;;N;;;;;
+05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;ON;;;;;N;;;;;
+05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;ON;;;;;N;;;;;
+05AB;HEBREW ACCENT OLE;Mn;230;ON;;;;;N;;;;;
+05AC;HEBREW ACCENT ILUY;Mn;230;ON;;;;;N;;;;;
+05AD;HEBREW ACCENT DEHI;Mn;222;ON;;;;;N;;;;;
+05AE;HEBREW ACCENT ZINOR;Mn;230;ON;;;;;N;;;;;
+05AF;HEBREW MARK MASORA CIRCLE;Mn;230;ON;;;;;N;;;;;
+05B0;HEBREW POINT SHEVA;Mn;10;ON;;;;;N;;;;;
+05B1;HEBREW POINT HATAF SEGOL;Mn;11;ON;;;;;N;;;;;
+05B2;HEBREW POINT HATAF PATAH;Mn;12;ON;;;;;N;;;;;
+05B3;HEBREW POINT HATAF QAMATS;Mn;13;ON;;;;;N;;;;;
+05B4;HEBREW POINT HIRIQ;Mn;14;ON;;;;;N;;;;;
+05B5;HEBREW POINT TSERE;Mn;15;ON;;;;;N;;;;;
+05B6;HEBREW POINT SEGOL;Mn;16;ON;;;;;N;;;;;
+05B7;HEBREW POINT PATAH;Mn;17;ON;;;;;N;;;;;
+05B8;HEBREW POINT QAMATS;Mn;18;ON;;;;;N;;;;;
+05B9;HEBREW POINT HOLAM;Mn;19;ON;;;;;N;;;;;
+05BB;HEBREW POINT QUBUTS;Mn;20;ON;;;;;N;;;;;
+05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;ON;;;;;N;HEBREW POINT DAGESH;;;;
+05BD;HEBREW POINT METEG;Mn;22;ON;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;;
+05BF;HEBREW POINT RAFE;Mn;23;ON;;;;;N;;;;;
+05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
+05C1;HEBREW POINT SHIN DOT;Mn;24;ON;;;;;N;;;;;
+05C2;HEBREW POINT SIN DOT;Mn;25;ON;;;;;N;;;;;
+05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
+05C4;HEBREW MARK UPPER DOT;Mn;230;ON;;;;;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;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;Po;0;R;;;;;N;;;;;
+061F;ARABIC QUESTION MARK;Po;0;R;;;;;N;;;;;
+0621;ARABIC LETTER HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH;;;;
+0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
+0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
+0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
+0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
+0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
+0627;ARABIC LETTER ALEF;Lo;0;R;;;;;N;;;;;
+0628;ARABIC LETTER BEH;Lo;0;R;;;;;N;ARABIC LETTER BAA;;;;
+0629;ARABIC LETTER TEH MARBUTA;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
+062A;ARABIC LETTER TEH;Lo;0;R;;;;;N;ARABIC LETTER TAA;;;;
+062B;ARABIC LETTER THEH;Lo;0;R;;;;;N;ARABIC LETTER THAA;;;;
+062C;ARABIC LETTER JEEM;Lo;0;R;;;;;N;;;;;
+062D;ARABIC LETTER HAH;Lo;0;R;;;;;N;ARABIC LETTER HAA;;;;
+062E;ARABIC LETTER KHAH;Lo;0;R;;;;;N;ARABIC LETTER KHAA;;;;
+062F;ARABIC LETTER DAL;Lo;0;R;;;;;N;;;;;
+0630;ARABIC LETTER THAL;Lo;0;R;;;;;N;;;;;
+0631;ARABIC LETTER REH;Lo;0;R;;;;;N;ARABIC LETTER RA;;;;
+0632;ARABIC LETTER ZAIN;Lo;0;R;;;;;N;;;;;
+0633;ARABIC LETTER SEEN;Lo;0;R;;;;;N;;;;;
+0634;ARABIC LETTER SHEEN;Lo;0;R;;;;;N;;;;;
+0635;ARABIC LETTER SAD;Lo;0;R;;;;;N;;;;;
+0636;ARABIC LETTER DAD;Lo;0;R;;;;;N;;;;;
+0637;ARABIC LETTER TAH;Lo;0;R;;;;;N;;;;;
+0638;ARABIC LETTER ZAH;Lo;0;R;;;;;N;ARABIC LETTER DHAH;;;;
+0639;ARABIC LETTER AIN;Lo;0;R;;;;;N;;;;;
+063A;ARABIC LETTER GHAIN;Lo;0;R;;;;;N;;;;;
+0640;ARABIC TATWEEL;Lm;0;R;;;;;N;;;;;
+0641;ARABIC LETTER FEH;Lo;0;R;;;;;N;ARABIC LETTER FA;;;;
+0642;ARABIC LETTER QAF;Lo;0;R;;;;;N;;;;;
+0643;ARABIC LETTER KAF;Lo;0;R;;;;;N;ARABIC LETTER CAF;;;;
+0644;ARABIC LETTER LAM;Lo;0;R;;;;;N;;;;;
+0645;ARABIC LETTER MEEM;Lo;0;R;;;;;N;;;;;
+0646;ARABIC LETTER NOON;Lo;0;R;;;;;N;;;;;
+0647;ARABIC LETTER HEH;Lo;0;R;;;;;N;ARABIC LETTER HA;;;;
+0648;ARABIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+0649;ARABIC LETTER ALEF MAKSURA;Lo;0;R;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
+064A;ARABIC LETTER YEH;Lo;0;R;;;;;N;ARABIC LETTER YA;;;;
+064B;ARABIC FATHATAN;Mn;27;ON;;;;;N;;;;;
+064C;ARABIC DAMMATAN;Mn;28;ON;;;;;N;;;;;
+064D;ARABIC KASRATAN;Mn;29;ON;;;;;N;;;;;
+064E;ARABIC FATHA;Mn;30;ON;;;;;N;ARABIC FATHAH;;;;
+064F;ARABIC DAMMA;Mn;31;ON;;;;;N;ARABIC DAMMAH;;;;
+0650;ARABIC KASRA;Mn;32;ON;;;;;N;ARABIC KASRAH;;;;
+0651;ARABIC SHADDA;Mn;33;ON;;;;;N;ARABIC SHADDAH;;;;
+0652;ARABIC SUKUN;Mn;34;ON;;;;;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;R;;;;;N;;;;;
+0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;ON;;;;;N;ARABIC ALEF ABOVE;;;;
+0671;ARABIC LETTER ALEF WASLA;Lo;0;R;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
+0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
+0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;R;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
+0674;ARABIC LETTER HIGH HAMZA;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
+0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;R;;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
+0679;ARABIC LETTER TTEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
+067A;ARABIC LETTER TTEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
+067B;ARABIC LETTER BEEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
+067C;ARABIC LETTER TEH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH RING;;;;
+067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
+067E;ARABIC LETTER PEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
+067F;ARABIC LETTER TEHEH;Lo;0;R;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
+0680;ARABIC LETTER BEHEH;Lo;0;R;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
+0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
+0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
+0683;ARABIC LETTER NYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
+0684;ARABIC LETTER DYEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
+0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
+0686;ARABIC LETTER TCHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
+0687;ARABIC LETTER TCHEHEH;Lo;0;R;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
+0688;ARABIC LETTER DDAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
+0689;ARABIC LETTER DAL WITH RING;Lo;0;R;;;;;N;;;;;
+068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;R;;;;;N;;;;;
+068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;R;;;;;N;;;;;
+068C;ARABIC LETTER DAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
+068D;ARABIC LETTER DDAHAL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
+068E;ARABIC LETTER DUL;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
+068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;R;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
+0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+0691;ARABIC LETTER RREH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
+0692;ARABIC LETTER REH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
+0693;ARABIC LETTER REH WITH RING;Lo;0;R;;;;;N;ARABIC LETTER RA WITH RING;;;;
+0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
+0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;R;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
+0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
+0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
+0698;ARABIC LETTER JEH;Lo;0;R;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
+0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;R;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
+069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;R;;;;;N;;;;;
+069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A1;ARABIC LETTER DOTLESS FEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS FA;;;;
+06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
+06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
+06A4;ARABIC LETTER VEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
+06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
+06A6;ARABIC LETTER PEHEH;Lo;0;R;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
+06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06A9;ARABIC LETTER KEHEH;Lo;0;R;;;;;N;ARABIC LETTER OPEN CAF;;;;
+06AA;ARABIC LETTER SWASH KAF;Lo;0;R;;;;;N;ARABIC LETTER SWASH CAF;;;;
+06AB;ARABIC LETTER KAF WITH RING;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH RING;;;;
+06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
+06AD;ARABIC LETTER NG;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
+06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
+06AF;ARABIC LETTER GAF;Lo;0;R;;;;;N;;;;;
+06B0;ARABIC LETTER GAF WITH RING;Lo;0;R;;;;;N;;;;;
+06B1;ARABIC LETTER NGOEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
+06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;R;;;;;N;;;;;
+06B3;ARABIC LETTER GUEH;Lo;0;R;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
+06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;R;;;;;N;;;;;
+06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
+06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BA;ARABIC LETTER NOON GHUNNA;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
+06BB;ARABIC LETTER RNOON;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
+06BC;ARABIC LETTER NOON WITH RING;Lo;0;R;;;;;N;;;;;
+06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;R;;;;;N;ARABIC LETTER KNOTTED HA;;;;
+06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
+06C1;ARABIC LETTER HEH GOAL;Lo;0;R;;;;;N;ARABIC LETTER HA GOAL;;;;
+06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
+06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;R;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
+06C4;ARABIC LETTER WAW WITH RING;Lo;0;R;;;;;N;;;;;
+06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
+06C6;ARABIC LETTER OE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
+06C7;ARABIC LETTER U;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
+06C8;ARABIC LETTER YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
+06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
+06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;R;;;;;N;;;;;
+06CB;ARABIC LETTER VE;Lo;0;R;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
+06CC;ARABIC LETTER FARSI YEH;Lo;0;R;;;;;N;ARABIC LETTER DOTLESS YA;;;;
+06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
+06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;R;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
+06D0;ARABIC LETTER E;Lo;0;R;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
+06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;R;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
+06D2;ARABIC LETTER YEH BARREE;Lo;0;R;;;;;N;ARABIC LETTER YA BARREE;;;;
+06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;R;;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
+06D4;ARABIC FULL STOP;Po;0;R;;;;;N;ARABIC PERIOD;;;;
+06D5;ARABIC LETTER AE;Lo;0;R;;;;;N;;;;;
+06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;ON;;;;;N;;;;;
+06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;ON;;;;;N;;;;;
+06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;ON;;;;;N;;;;;
+06DA;ARABIC SMALL HIGH JEEM;Mn;230;ON;;;;;N;;;;;
+06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;ON;;;;;N;;;;;
+06DC;ARABIC SMALL HIGH SEEN;Mn;230;ON;;;;;N;;;;;
+06DD;ARABIC END OF AYAH;Me;0;ON;;;;;N;;;;;
+06DE;ARABIC START OF RUB EL HIZB;Me;0;ON;;;;;N;;;;;
+06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;ON;;;;;N;;;;;
+06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;ON;;;;;N;;;;;
+06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;ON;;;;;N;;;;;
+06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;ON;;;;;N;;;;;
+06E3;ARABIC SMALL LOW SEEN;Mn;220;ON;;;;;N;;;;;
+06E4;ARABIC SMALL HIGH MADDA;Mn;230;ON;;;;;N;;;;;
+06E5;ARABIC SMALL WAW;Lm;0;R;;;;;N;;;;;
+06E6;ARABIC SMALL YEH;Lm;0;R;;;;;N;;;;;
+06E7;ARABIC SMALL HIGH YEH;Mn;230;ON;;;;;N;;;;;
+06E8;ARABIC SMALL HIGH NOON;Mn;230;ON;;;;;N;;;;;
+06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
+06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;ON;;;;;N;;;;;
+06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;ON;;;;;N;;;;;
+06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;ON;;;;;N;;;;;
+06ED;ARABIC SMALL LOW MEEM;Mn;220;ON;;;;;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;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;ON;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;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;ON;;;;;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;ON;;;;;N;;;;;
+0942;DEVANAGARI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;ON;;;;;N;;;;;
+0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;ON;;;;;N;;;;;
+0947;DEVANAGARI VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0948;DEVANAGARI VOWEL SIGN AI;Mn;0;ON;;;;;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;ON;;;;;N;;;;;
+0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
+0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;ON;;;;;N;;;;;
+0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;ON;;;;;N;;;;;
+0953;DEVANAGARI GRAVE ACCENT;Mn;230;ON;;;;;N;;;;;
+0954;DEVANAGARI ACUTE ACCENT;Mn;230;ON;;;;;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;ON;;;;;N;;;;;
+0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;ON;;;;;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;;;;;
+0981;BENGALI SIGN CANDRABINDU;Mn;0;ON;;;;;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;09AC 09BC;;;;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;ON;;;;;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;ON;;;;;N;;;;;
+09C2;BENGALI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;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;ON;;;;;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;ON;;;;;N;;;;;
+09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;ON;;;;;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;;;;-1;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;ON;;;;;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;;;;;N;;;;;
+0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
+0A36;GURMUKHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
+0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
+0A3C;GURMUKHI SIGN NUKTA;Mn;7;ON;;;;;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;ON;;;;;N;;;;;
+0A42;GURMUKHI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0A47;GURMUKHI VOWEL SIGN EE;Mn;0;ON;;;;;N;;;;;
+0A48;GURMUKHI VOWEL SIGN AI;Mn;0;ON;;;;;N;;;;;
+0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;ON;;;;;N;;;;;
+0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0A4D;GURMUKHI SIGN VIRAMA;Mn;9;ON;;;;;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;0A21 0A3C;;;;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;ON;;;;;N;;;;;
+0A71;GURMUKHI ADDAK;Mn;0;ON;;;;;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;ON;;;;;N;;;;;
+0A82;GUJARATI SIGN ANUSVARA;Mn;0;ON;;;;;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;;;;;
+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;ON;;;;;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;ON;;;;;N;;;;;
+0AC2;GUJARATI VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;N;;;;;
+0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;ON;;;;;N;;;;;
+0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;ON;;;;;N;;;;;
+0AC7;GUJARATI VOWEL SIGN E;Mn;0;ON;;;;;N;;;;;
+0AC8;GUJARATI VOWEL SIGN AI;Mn;0;ON;;;;;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;ON;;;;;N;;;;;
+0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
+0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;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;;;;;
+0B01;ORIYA SIGN CANDRABINDU;Mn;0;ON;;;;;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;;;;;
+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;ON;;;;;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;ON;;;;;N;;;;;
+0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+0B41;ORIYA VOWEL SIGN U;Mn;0;ON;;;;;N;;;;;
+0B42;ORIYA VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;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;ON;;;;;N;;;;;
+0B56;ORIYA AI LENGTH MARK;Mn;0;ON;;;;;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;0B2F 0B3C;;;;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;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;ON;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;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;;;;;
+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;ON;;;;;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;ON;;;;;N;;;;;
+0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;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;;;;;
+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;ON;;;;;N;;;;;
+0C3F;TELUGU VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0C40;TELUGU VOWEL SIGN II;Mn;0;ON;;;;;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;84;ON;;;;;N;;;;;
+0C47;TELUGU VOWEL SIGN EE;Mn;0;ON;;;;;N;;;;;
+0C48;TELUGU VOWEL SIGN AI;Mn;0;ON;0C46 0C56;;;;N;;;;;
+0C4A;TELUGU VOWEL SIGN O;Mn;0;ON;;;;;N;;;;;
+0C4B;TELUGU VOWEL SIGN OO;Mn;0;ON;;;;;N;;;;;
+0C4C;TELUGU VOWEL SIGN AU;Mn;0;ON;;;;;N;;;;;
+0C4D;TELUGU SIGN VIRAMA;Mn;9;ON;;;;;N;;;;;
+0C55;TELUGU LENGTH MARK;Mn;84;ON;;;;;N;;;;;
+0C56;TELUGU AI LENGTH MARK;Mn;91;ON;;;;;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;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;ON;;;;;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;ON;;;;;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;ON;;;;;N;;;;;
+0CCD;KANNADA SIGN VIRAMA;Mn;9;ON;;;;;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;;;;;
+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;;;;;
+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;ON;;;;;N;;;;;
+0D42;MALAYALAM VOWEL SIGN UU;Mn;0;ON;;;;;N;;;;;
+0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;ON;;;;;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;ON;;;;;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;;;;;
+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;;;;
+0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
+0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;ON;;;;;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;0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
+0E34;THAI CHARACTER SARA I;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA I;;;;
+0E35;THAI CHARACTER SARA II;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA II;;;;
+0E36;THAI CHARACTER SARA UE;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA UE;;;;
+0E37;THAI CHARACTER SARA UEE;Mn;0;ON;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
+0E38;THAI CHARACTER SARA U;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA U;;;;
+0E39;THAI CHARACTER SARA UU;Mn;103;ON;;;;;N;THAI VOWEL SIGN SARA UU;;;;
+0E3A;THAI CHARACTER PHINTHU;Mn;9;ON;;;;;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;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;ON;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+0E48;THAI CHARACTER MAI EK;Mn;107;ON;;;;;N;THAI TONE MAI EK;;;;
+0E49;THAI CHARACTER MAI THO;Mn;107;ON;;;;;N;THAI TONE MAI THO;;;;
+0E4A;THAI CHARACTER MAI TRI;Mn;107;ON;;;;;N;THAI TONE MAI TRI;;;;
+0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;ON;;;;;N;THAI TONE MAI CHATTAWA;;;;
+0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;ON;;;;;N;THAI THANTHAKHAT;;;;
+0E4D;THAI CHARACTER NIKHAHIT;Mn;107;ON;;;;;N;THAI NIKKHAHIT;;;;
+0E4E;THAI CHARACTER YAMAKKAN;Mn;0;ON;;;;;N;THAI YAMAKKAN;;;;
+0E4F;THAI CHARACTER FONGMAN;So;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;ON;;;;;N;;;;;
+0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
+0EB3;LAO VOWEL SIGN AM;Lo;0;L;0ECD 0EB2;;;;N;;;;;
+0EB4;LAO VOWEL SIGN I;Mn;0;ON;;;;;N;;;;;
+0EB5;LAO VOWEL SIGN II;Mn;0;ON;;;;;N;;;;;
+0EB6;LAO VOWEL SIGN Y;Mn;0;ON;;;;;N;;;;;
+0EB7;LAO VOWEL SIGN YY;Mn;0;ON;;;;;N;;;;;
+0EB8;LAO VOWEL SIGN U;Mn;118;ON;;;;;N;;;;;
+0EB9;LAO VOWEL SIGN UU;Mn;118;ON;;;;;N;;;;;
+0EBB;LAO VOWEL SIGN MAI KON;Mn;0;ON;;;;;N;;;;;
+0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;ON;;;;;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;ON;;;;;N;;;;;
+0EC9;LAO TONE MAI THO;Mn;122;ON;;;;;N;;;;;
+0ECA;LAO TONE MAI TI;Mn;122;ON;;;;;N;;;;;
+0ECB;LAO TONE MAI CATAWA;Mn;122;ON;;;;;N;;;;;
+0ECC;LAO CANCELLATION MARK;Mn;0;ON;;;;;N;;;;;
+0ECD;LAO NIGGAHITA;Mn;122;ON;;;;;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;;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;;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;;tsek;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;;;;;N;;tsek tar;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;;shey;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;;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;;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;;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;ON;;;;;N;;kyu pa;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;ON;;;;;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;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;N;;;;;
+0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;230;ON;;;;;N;;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;230;ON;;;;;N;;nge zung gor ta;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;ON;;;;;N;;tsa tru;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;;ang kang ye;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;ON;;;;;N;;yar tse;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;ON;;;;;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;;;;;
+0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;;;;;
+0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;;;;;
+0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
+0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0F71;TIBETAN VOWEL SIGN AA;Mn;0;ON;;;;;N;;;;;
+0F72;TIBETAN VOWEL SIGN I;Mn;130;ON;;;;;N;;;;;
+0F73;TIBETAN VOWEL SIGN II;Mn;0;ON;0F72 0F71;;;;N;;;;;
+0F74;TIBETAN VOWEL SIGN U;Mn;132;ON;;;;;N;;;;;
+0F75;TIBETAN VOWEL SIGN UU;Mn;0;ON;0F71 0F74;;;;N;;;;;
+0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;ON;0FB2 0F80;;;;N;;;;;
+0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;ON;0F76 0F71;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;ON;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;ON;0F78 0F71;;;;N;;;;;
+0F7A;TIBETAN VOWEL SIGN E;Mn;130;ON;;;;;N;;;;;
+0F7B;TIBETAN VOWEL SIGN EE;Mn;130;ON;;;;;N;;;;;
+0F7C;TIBETAN VOWEL SIGN O;Mn;130;ON;;;;;N;;;;;
+0F7D;TIBETAN VOWEL SIGN OO;Mn;130;ON;;;;;N;;;;;
+0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;ON;;;;;N;;je su nga ro;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;;nam chey;;;
+0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;ON;;;;;N;;;;;
+0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;ON;0F80 0F71;;;;N;;;;;
+0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;ON;;;;;N;;nyi da na da;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;ON;;;;;N;;nan de;;;
+0F84;TIBETAN MARK HALANTA;Mn;9;ON;;;;;N;;;;;
+0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;;;;;
+0F86;TIBETAN SIGN LCI RTAGS;Mn;230;ON;;;;;N;;ji ta;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;ON;;;;;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;ON;;;;;N;;;;;
+0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;ON;;;;;N;;;;;
+0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;ON;;;;;N;;;;;
+0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;ON;0F92 0FB7;;;;N;;;;;
+0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;ON;;;;;N;;;;;
+0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;ON;;;;;N;;;;;
+0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;ON;;;;;N;;;;;
+0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;ON;;;;;N;;;;;
+0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;ON;;;;;N;;;;;
+0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;ON;;;;;N;;;;;
+0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;ON;;;;;N;;;;;
+0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;ON;0F9C 0FB7;;;;N;;;;;
+0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;ON;;;;;N;;;;;
+0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;ON;;;;;N;;;;;
+0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;ON;;;;;N;;;;;
+0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;ON;;;;;N;;;;;
+0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;ON;0FA1 0FB7;;;;N;;;;;
+0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;ON;;;;;N;;;;;
+0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;ON;;;;;N;;;;;
+0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;ON;;;;;N;;;;;
+0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;ON;;;;;N;;;;;
+0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;ON;0FA6 0FB7;;;;N;;;;;
+0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;ON;;;;;N;;;;;
+0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;ON;;;;;N;;;;;
+0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;ON;;;;;N;;;;;
+0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;ON;;;;;N;;;;;
+0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;ON;0FAB 0FB7;;;;N;;;;;
+0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;ON;;;;;N;;;;;
+0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;ON;;;;;N;;;;;
+0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;ON;;;;;N;;;;;
+0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;ON;;;;;N;;;;;
+0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;ON;;;;;N;;;;;
+0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;ON;;;;;N;;;;;
+0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;ON;;;;;N;;;;;
+0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;ON;;;;;N;;;;;
+0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;ON;0F90 0FB5;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;10D0;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;10D1;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;10D2;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;10D3;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;10D4;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;10D5;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;10D6;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;10D7;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;10D8;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;10D9;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;10DA;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;10DB;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;10DC;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;10DD;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;10DE;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;10DF;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;10E0;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;10E1;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;10E2;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;10E3;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;10E4;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;10E5;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;10E6;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;10E7;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;10E8;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;10E9;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;10EA;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;10EB;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;10EC;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;10ED;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;10EE;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;10EF;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;10F0;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;10F1;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;10F2;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;10F3;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;10F4;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;10F5;
+10D0;GEORGIAN LETTER AN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
+10D1;GEORGIAN LETTER BAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
+10D2;GEORGIAN LETTER GAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
+10D3;GEORGIAN LETTER DON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
+10D4;GEORGIAN LETTER EN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
+10D5;GEORGIAN LETTER VIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
+10D6;GEORGIAN LETTER ZEN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
+10D7;GEORGIAN LETTER TAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
+10D8;GEORGIAN LETTER IN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
+10D9;GEORGIAN LETTER KAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
+10DA;GEORGIAN LETTER LAS;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
+10DB;GEORGIAN LETTER MAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
+10DC;GEORGIAN LETTER NAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
+10DD;GEORGIAN LETTER ON;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
+10DE;GEORGIAN LETTER PAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
+10DF;GEORGIAN LETTER ZHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
+10E0;GEORGIAN LETTER RAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
+10E1;GEORGIAN LETTER SAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
+10E2;GEORGIAN LETTER TAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
+10E3;GEORGIAN LETTER UN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
+10E4;GEORGIAN LETTER PHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
+10E5;GEORGIAN LETTER KHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
+10E6;GEORGIAN LETTER GHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
+10E7;GEORGIAN LETTER QAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
+10E8;GEORGIAN LETTER SHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
+10E9;GEORGIAN LETTER CHIN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
+10EA;GEORGIAN LETTER CAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
+10EB;GEORGIAN LETTER JIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
+10EC;GEORGIAN LETTER CIL;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
+10ED;GEORGIAN LETTER CHAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
+10EE;GEORGIAN LETTER XAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
+10EF;GEORGIAN LETTER JHAN;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
+10F0;GEORGIAN LETTER HAE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
+10F1;GEORGIAN LETTER HE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
+10F2;GEORGIAN LETTER HIE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
+10F3;GEORGIAN LETTER WE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
+10F4;GEORGIAN LETTER HAR;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
+10F5;GEORGIAN LETTER HOE;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
+10F6;GEORGIAN LETTER FI;Ll;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;<compat> 1100 1100;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;<compat> 1103 1103;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;<compat> 1107 1107;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;<compat> 1109 1109;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;<compat> 110C 110C;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 1102 1100;;;;N;;;;;
+1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;<compat> 1102 1102;;;;N;;;;;
+1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 1102 1103;;;;N;;;;;
+1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;<compat> 1102 1107;;;;N;;;;;
+1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 1103 1100;;;;N;;;;;
+1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;<compat> 1105 1102;;;;N;;;;;
+1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;<compat> 1105 1105;;;;N;;;;;
+111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;<compat> 1105 1112;;;;N;;;;;
+111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;<compat> 1105 110B;;;;N;;;;;
+111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;<compat> 1106 1107;;;;N;;;;;
+111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 1106 110B;;;;N;;;;;
+111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;<compat> 1107 1100;;;;N;;;;;
+111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;<compat> 1107 1102;;;;N;;;;;
+1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;<compat> 1107 1103;;;;N;;;;;
+1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;<compat> 1107 1109;;;;N;;;;;
+1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1107 1109 1100;;;;N;;;;;
+1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1107 1109 1103;;;;N;;;;;
+1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;<compat> 1107 1109 1107;;;;N;;;;;
+1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;<compat> 1107 1109 1109;;;;N;;;;;
+1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;<compat> 1107 1109 110C;;;;N;;;;;
+1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;<compat> 1107 110C;;;;N;;;;;
+1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;<compat> 1107 110E;;;;N;;;;;
+1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;<compat> 1107 1110;;;;N;;;;;
+112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 1107 1111;;;;N;;;;;
+112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 1107 110B;;;;N;;;;;
+112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 1107 1107 110B;;;;N;;;;;
+112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;<compat> 1109 1100;;;;N;;;;;
+112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;<compat> 1109 1102;;;;N;;;;;
+112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;<compat> 1109 1103;;;;N;;;;;
+1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;<compat> 1109 1105;;;;N;;;;;
+1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;<compat> 1109 1106;;;;N;;;;;
+1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;<compat> 1109 1107;;;;N;;;;;
+1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;<compat> 1109 1107 1100;;;;N;;;;;
+1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;<compat> 1109 1109 1109;;;;N;;;;;
+1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;<compat> 1109 110B;;;;N;;;;;
+1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;<compat> 1109 110C;;;;N;;;;;
+1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;<compat> 1109 110E;;;;N;;;;;
+1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;<compat> 1109 110F;;;;N;;;;;
+1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;<compat> 1109 1110;;;;N;;;;;
+113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;<compat> 1109 1111;;;;N;;;;;
+113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;<compat> 1109 1112;;;;N;;;;;
+113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
+113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;<compat> 113C 113C;;;;N;;;;;
+113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
+113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;<compat> 113E 113E;;;;N;;;;;
+1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 110B 1100;;;;N;;;;;
+1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;<compat> 110B 1103;;;;N;;;;;
+1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;<compat> 110B 1106;;;;N;;;;;
+1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;<compat> 110B 1107;;;;N;;;;;
+1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;<compat> 110B 1109;;;;N;;;;;
+1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;<compat> 110B 1140;;;;N;;;;;
+1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;<compat> 110B 110B;;;;N;;;;;
+1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;<compat> 110B 110C;;;;N;;;;;
+1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;<compat> 110B 110E;;;;N;;;;;
+114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;<compat> 110B 1110;;;;N;;;;;
+114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;<compat> 110B 1111;;;;N;;;;;
+114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;<compat> 110C 110B;;;;N;;;;;
+114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
+114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;<compat> 114E 114E;;;;N;;;;;
+1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
+1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;<compat> 1150 1150;;;;N;;;;;
+1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;<compat> 110E 110F;;;;N;;;;;
+1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;<compat> 110E 1112;;;;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;<compat> 1111 1107;;;;N;;;;;
+1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1111 110B;;;;N;;;;;
+1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;<compat> 1112 1112;;;;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;<compat> 1161 1175;;;;N;;;;;
+1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
+1164;HANGUL JUNGSEONG YAE;Lo;0;L;<compat> 1163 1175;;;;N;;;;;
+1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
+1166;HANGUL JUNGSEONG E;Lo;0;L;<compat> 1165 1175;;;;N;;;;;
+1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
+1168;HANGUL JUNGSEONG YE;Lo;0;L;<compat> 1167 1175;;;;N;;;;;
+1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
+116A;HANGUL JUNGSEONG WA;Lo;0;L;<compat> 1169 1161;;;;N;;;;;
+116B;HANGUL JUNGSEONG WAE;Lo;0;L;<compat> 1169 1161 1175;;;;N;;;;;
+116C;HANGUL JUNGSEONG OE;Lo;0;L;<compat> 1169 1175;;;;N;;;;;
+116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
+116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
+116F;HANGUL JUNGSEONG WEO;Lo;0;L;<compat> 116E 1165;;;;N;;;;;
+1170;HANGUL JUNGSEONG WE;Lo;0;L;<compat> 116E 1165 1175;;;;N;;;;;
+1171;HANGUL JUNGSEONG WI;Lo;0;L;<compat> 116E 1175;;;;N;;;;;
+1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
+1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
+1174;HANGUL JUNGSEONG YI;Lo;0;L;<compat> 1173 1175;;;;N;;;;;
+1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
+1176;HANGUL JUNGSEONG A-O;Lo;0;L;<compat> 1161 1169;;;;N;;;;;
+1177;HANGUL JUNGSEONG A-U;Lo;0;L;<compat> 1161 116E;;;;N;;;;;
+1178;HANGUL JUNGSEONG YA-O;Lo;0;L;<compat> 1163 1169;;;;N;;;;;
+1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;<compat> 1163 116D;;;;N;;;;;
+117A;HANGUL JUNGSEONG EO-O;Lo;0;L;<compat> 1165 1169;;;;N;;;;;
+117B;HANGUL JUNGSEONG EO-U;Lo;0;L;<compat> 1165 116E;;;;N;;;;;
+117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;<compat> 1165 1173;;;;N;;;;;
+117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;<compat> 1167 1169;;;;N;;;;;
+117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;<compat> 1167 116E;;;;N;;;;;
+117F;HANGUL JUNGSEONG O-EO;Lo;0;L;<compat> 1169 1165;;;;N;;;;;
+1180;HANGUL JUNGSEONG O-E;Lo;0;L;<compat> 1169 1166;;;;N;;;;;
+1181;HANGUL JUNGSEONG O-YE;Lo;0;L;<compat> 1169 1168;;;;N;;;;;
+1182;HANGUL JUNGSEONG O-O;Lo;0;L;<compat> 1169 1169;;;;N;;;;;
+1183;HANGUL JUNGSEONG O-U;Lo;0;L;<compat> 1169 116E;;;;N;;;;;
+1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;<compat> 116D 1163;;;;N;;;;;
+1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;<compat> 116D 1164;;;;N;;;;;
+1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;<compat> 116D 1167;;;;N;;;;;
+1187;HANGUL JUNGSEONG YO-O;Lo;0;L;<compat> 116D 1169;;;;N;;;;;
+1188;HANGUL JUNGSEONG YO-I;Lo;0;L;<compat> 116D 1175;;;;N;;;;;
+1189;HANGUL JUNGSEONG U-A;Lo;0;L;<compat> 116E 1161;;;;N;;;;;
+118A;HANGUL JUNGSEONG U-AE;Lo;0;L;<compat> 116E 1162;;;;N;;;;;
+118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;<compat> 116E 1165 1173;;;;N;;;;;
+118C;HANGUL JUNGSEONG U-YE;Lo;0;L;<compat> 116E 1168;;;;N;;;;;
+118D;HANGUL JUNGSEONG U-U;Lo;0;L;<compat> 116E 116E;;;;N;;;;;
+118E;HANGUL JUNGSEONG YU-A;Lo;0;L;<compat> 1172 1161;;;;N;;;;;
+118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;<compat> 1172 1165;;;;N;;;;;
+1190;HANGUL JUNGSEONG YU-E;Lo;0;L;<compat> 1172 1166;;;;N;;;;;
+1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;<compat> 1172 1167;;;;N;;;;;
+1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;<compat> 1172 1168;;;;N;;;;;
+1193;HANGUL JUNGSEONG YU-U;Lo;0;L;<compat> 1172 116E;;;;N;;;;;
+1194;HANGUL JUNGSEONG YU-I;Lo;0;L;<compat> 1172 1175;;;;N;;;;;
+1195;HANGUL JUNGSEONG EU-U;Lo;0;L;<compat> 1173 116E;;;;N;;;;;
+1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;<compat> 1173 1173;;;;N;;;;;
+1197;HANGUL JUNGSEONG YI-U;Lo;0;L;<compat> 1174 116E;;;;N;;;;;
+1198;HANGUL JUNGSEONG I-A;Lo;0;L;<compat> 1175 1161;;;;N;;;;;
+1199;HANGUL JUNGSEONG I-YA;Lo;0;L;<compat> 1175 1163;;;;N;;;;;
+119A;HANGUL JUNGSEONG I-O;Lo;0;L;<compat> 1175 1169;;;;N;;;;;
+119B;HANGUL JUNGSEONG I-U;Lo;0;L;<compat> 1175 116E;;;;N;;;;;
+119C;HANGUL JUNGSEONG I-EU;Lo;0;L;<compat> 1175 1173;;;;N;;;;;
+119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;<compat> 1175 119E;;;;N;;;;;
+119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
+119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;<compat> 119E 1165;;;;N;;;;;
+11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;<compat> 119E 116E;;;;N;;;;;
+11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;<compat> 119E 1175;;;;N;;;;;
+11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;<compat> 119E 119E;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;<compat> 11A8 11A8;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;<compat> 11A8 11BA;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;<compat> 11AB 11BD;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;<compat> 11AB 11C2;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;<compat> 11AF 11A8;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;<compat> 11AF 11B7;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;<compat> 11AF 11B8;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;<compat> 11AF 11BA;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;<compat> 11AF 11C0;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;<compat> 11AF 11C1;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;<compat> 11AF 11C2;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;<compat> 11B8 11BA;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;<compat> 11BA 11BA;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;<compat> 11A8 11AF;;;;N;;;;;
+11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;<compat> 11A8 11BA 11A8;;;;N;;;;;
+11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;<compat> 11AB 11A8;;;;N;;;;;
+11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;<compat> 11AB 11AE;;;;N;;;;;
+11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;<compat> 11AB 11BA;;;;N;;;;;
+11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;<compat> 11AB 11EB;;;;N;;;;;
+11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;<compat> 11AB 11C0;;;;N;;;;;
+11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;<compat> 11AE 11A8;;;;N;;;;;
+11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;<compat> 11AE 11AF;;;;N;;;;;
+11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11AF 11A8 11BA;;;;N;;;;;
+11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;<compat> 11AF 11AB;;;;N;;;;;
+11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;<compat> 11AF 11AE;;;;N;;;;;
+11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;<compat> 11AF 11AE 11C2;;;;N;;;;;
+11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;<compat> 11AF 11AF;;;;N;;;;;
+11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;<compat> 11AF 11B7 11A8;;;;N;;;;;
+11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;<compat> 11AF 11B7 11BA;;;;N;;;;;
+11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11AF 11B8 11BA;;;;N;;;;;
+11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;<compat> 11AF 11B8 11C2;;;;N;;;;;
+11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;<compat> 11AF 11B8 11BC;;;;N;;;;;
+11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;<compat> 11AF 11BA 11BA;;;;N;;;;;
+11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;<compat> 11AF 11EB;;;;N;;;;;
+11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;<compat> 11AF 11BF;;;;N;;;;;
+11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11AF 11F9;;;;N;;;;;
+11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;<compat> 11B7 11A8;;;;N;;;;;
+11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;<compat> 11B7 11AF;;;;N;;;;;
+11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;<compat> 11B7 11B8;;;;N;;;;;
+11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;<compat> 11B7 11BA;;;;N;;;;;
+11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;<compat> 11B7 11BA 11BA;;;;N;;;;;
+11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;<compat> 11B7 11EB;;;;N;;;;;
+11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;<compat> 11B7 11BE;;;;N;;;;;
+11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;<compat> 11B7 11C2;;;;N;;;;;
+11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;<compat> 11B7 11BC;;;;N;;;;;
+11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;<compat> 11B8 11AF;;;;N;;;;;
+11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;<compat> 11B8 11C1;;;;N;;;;;
+11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;<compat> 11B8 11C2;;;;N;;;;;
+11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;<compat> 11B8 11BC;;;;N;;;;;
+11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;<compat> 11BA 11A8;;;;N;;;;;
+11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;<compat> 11BA 11AE;;;;N;;;;;
+11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;<compat> 11BA 11AF;;;;N;;;;;
+11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;<compat> 11BA 11B8;;;;N;;;;;
+11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
+11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;<compat> 11BC 11A8;;;;N;;;;;
+11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;<compat> 11BC 11A8 11A8;;;;N;;;;;
+11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;<compat> 11BC 11BC;;;;N;;;;;
+11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;<compat> 11BC 11BF;;;;N;;;;;
+11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
+11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;<compat> 11F0 11BA;;;;N;;;;;
+11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F0 11EB;;;;N;;;;;
+11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;<compat> 11C1 11B8;;;;N;;;;;
+11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;<compat> 11C1 11BC;;;;N;;;;;
+11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;<compat> 11C2 11AB;;;;N;;;;;
+11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;<compat> 11C2 11AF;;;;N;;;;;
+11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;<compat> 11C2 11B7;;;;N;;;;;
+11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;<compat> 11C2 11B8;;;;N;;;;;
+11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;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;0114 0327;;;;N;;;;1E1D;
+1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0115 0327;;;;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;00C2 0323;;;;N;;;;1EAD;
+1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00E2 0323;;;;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;0102 0323;;;;N;;;;1EB7;
+1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;0103 0323;;;;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;00CA 0323;;;;N;;;;1EC7;
+1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00EA 0323;;;;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;00D4 0323;;;;N;;;;1ED9;
+1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;00F4 0323;;;;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;Lu;0;L;1F08 0345;;;;N;;;;1F80;
+1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F09 0345;;;;N;;;;1F81;
+1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0A 0345;;;;N;;;;1F82;
+1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F0B 0345;;;;N;;;;1F83;
+1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0C 0345;;;;N;;;;1F84;
+1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F0D 0345;;;;N;;;;1F85;
+1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F0E 0345;;;;N;;;;1F86;
+1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;Lu;0;L;1F28 0345;;;;N;;;;1F90;
+1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F29 0345;;;;N;;;;1F91;
+1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2A 0345;;;;N;;;;1F92;
+1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F2B 0345;;;;N;;;;1F93;
+1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2C 0345;;;;N;;;;1F94;
+1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F2D 0345;;;;N;;;;1F95;
+1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F2E 0345;;;;N;;;;1F96;
+1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;Lu;0;L;1F68 0345;;;;N;;;;1FA0;
+1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lu;0;L;1F69 0345;;;;N;;;;1FA1;
+1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6A 0345;;;;N;;;;1FA2;
+1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lu;0;L;1F6B 0345;;;;N;;;;1FA3;
+1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6C 0345;;;;N;;;;1FA4;
+1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lu;0;L;1F6D 0345;;;;N;;;;1FA5;
+1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lu;0;L;1F6E 0345;;;;N;;;;1FA6;
+1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lu;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;Lu;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;;
+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;Lu;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;Lu;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;CS;<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;Zs;0;WS;;;;;N;;;;;
+200C;ZERO WIDTH NON-JOINER;Cf;0;ON;;;;;N;;;;;
+200D;ZERO WIDTH JOINER;Cf;0;ON;;;;;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;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;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;B;;;;;N;;;;;
+2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
+202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;L;;;;;N;;;;;
+202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;R;;;;;N;;;;;
+202C;POP DIRECTIONAL FORMATTING;Cf;0;ON;;;;;N;;;;;
+202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;L;;;;;N;;;;;
+202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;R;;;;;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;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;ON;;;;;N;;;;;
+206C;INHIBIT ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;ON;;;;;N;;;;;
+206E;NATIONAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+206F;NOMINAL DIGIT SHAPES;Cf;0;ON;;;;;N;;;;;
+2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;0;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<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;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<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;;;;
+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;;;;;
+20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
+20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
+20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
+20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;ON;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
+20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
+20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
+20D6;COMBINING LEFT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
+20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;ON;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
+20D8;COMBINING RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING RING OVERLAY;;;;
+20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
+20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;ON;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
+20DB;COMBINING THREE DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
+20DC;COMBINING FOUR DOTS ABOVE;Mn;230;ON;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
+20DD;COMBINING ENCLOSING CIRCLE;Me;0;ON;;;;;N;ENCLOSING CIRCLE;;;;
+20DE;COMBINING ENCLOSING SQUARE;Me;0;ON;;;;;N;ENCLOSING SQUARE;;;;
+20DF;COMBINING ENCLOSING DIAMOND;Me;0;ON;;;;;N;ENCLOSING DIAMOND;;;;
+20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;ON;;;;;N;ENCLOSING CIRCLE SLASH;;;;
+20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;1;ON;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
+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;Ll;0;L;;;;;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;;;;
+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;;;;
+212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;;
+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;Ll;0;L;;;;;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;So;0;ON;;;;;N;TURNED F;;;;
+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;;;;
+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;;;;;
+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;So;0;ON;;;;;N;LEFT ARROW WITH STROKE;;;;
+219B;RIGHTWARDS ARROW WITH STROKE;So;0;ON;;;;;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;So;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;So;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;So;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;So;0;ON;;;;;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;;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
+21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;So;0;ON;;;;;N;;;;;
+21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;;;;;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;;;;
+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;ET;;;;;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;;;;;
+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;007E 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;;;;;
+2300;DIAMETER SIGN;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;;;;;
+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;;;;
+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;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<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;EN;<circle> 0030;;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;;;;;
+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;So;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;So;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;;;;;
+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;;;;;
+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;So;0;ON;;;;;N;SHARP;;;;
+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;;;;;
+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;;;;
+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;ON;;;;;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;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+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;ON;;;;;N;;;;;
+302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;ON;;;;;N;;;;;
+302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;ON;;;;;N;;;;;
+302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;ON;;;;;N;;;;;
+302E;HANGUL SINGLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;ON;;;;;N;;;;;
+3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
+3031;VERTICAL KANA REPEAT MARK;Lm;0;ON;;;;;N;;;;;
+3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;ON;;;;;N;;;;;
+3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;ON;;;;;N;;;;;
+3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;ON;;;;;N;;;;;
+3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;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;;;;;
+3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;ON;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
+309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;ON;;;;;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;;;;;
+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;Pc;0;L;;;;;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;;;;;
+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;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;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;;;
+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;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;
+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;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D800;<Unassigned High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Unassigned 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;96FB;;;;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;;;;;
+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;;;;;
+FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;ON;;;;;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;ET;<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;R;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;R;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;R;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;R;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;R;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;R;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;R;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;R;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;R;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;R;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;R;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;R;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;R;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;R;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;R;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;R;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;R;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;R;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;R;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;R;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;R;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;R;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;R;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;R;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;R;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;R;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;R;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;R;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;R;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;R;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;R;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;R;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;R;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;R;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;R;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;R;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;R;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;R;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;R;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;R;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;R;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;R;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;R;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;R;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;R;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;R;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;R;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;R;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;R;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;R;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;R;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;R;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;R;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;R;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;R;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;R;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;R;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;R;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;R;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;R;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;R;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;R;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;R;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;R;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;R;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;R;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;R;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;R;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;R;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;R;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;R;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;R;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;R;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;R;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;R;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;R;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;R;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;R;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;R;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;R;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;R;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;R;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;R;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;R;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;R;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;R;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;R;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;R;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;R;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;R;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;R;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;R;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;R;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;R;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;R;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;R;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;R;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;R;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;R;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;R;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;R;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;R;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;R;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;R;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;R;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;R;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;R;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;R;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;R;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;R;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;R;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;R;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;R;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;R;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;R;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;R;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;R;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;R;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;R;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;R;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;R;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;R;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;R;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;R;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;R;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;R;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;R;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;R;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;R;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;R;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;R;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;R;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;R;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;R;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;R;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064C;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064D;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064E;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 064F;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0650;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;R;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;R;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;R;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;R;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;R;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;R;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;R;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;R;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;R;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;R;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;R;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;R;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;R;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;R;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;R;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;R;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;R;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;R;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;R;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;R;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;R;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;R;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;R;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;R;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;R;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;R;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;R;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;R;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;R;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;R;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;R;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;R;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;R;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;R;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;R;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;R;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;R;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;R;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;R;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;R;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;R;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;R;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;R;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064E;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 064F;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0651 0650;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;R;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;R;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;R;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;R;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;R;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;R;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;R;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;R;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;R;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;R;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;R;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;R;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;R;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;R;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;R;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;R;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;R;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;R;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;R;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;R;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;R;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;R;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;R;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;R;<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;R;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;R;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;R;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;R;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;R;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;R;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;R;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;R;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;R;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;R;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;R;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;R;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;R;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;R;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;R;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;R;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;R;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;R;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;R;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;R;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;R;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;R;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;R;<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;R;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FE20;COMBINING LIGATURE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;ON;;;;;N;;;;;
+FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;ON;;;;;N;;;;;
+FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;ON;;;;;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;;;;
+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;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;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;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+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;R;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;R;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;R;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;R;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;R;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;R;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;R;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;R;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;R;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;R;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;R;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;R;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;R;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;R;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;R;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;R;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;R;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;R;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;R;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;R;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;R;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;R;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;R;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;R;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;R;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;R;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;R;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;R;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;R;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;R;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;R;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;R;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;R;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;R;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;R;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;R;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;R;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;R;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;R;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;R;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;R;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;R;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;R;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;R;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;R;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;R;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;R;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;R;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;R;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;R;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;R;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;R;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;R;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;R;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;R;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;R;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;R;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;R;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;R;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;R;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;R;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;R;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;R;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;R;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;R;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;R;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;R;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;R;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;R;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;R;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;R;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;R;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;R;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;R;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;R;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;R;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;R;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;R;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;R;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;R;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;R;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;R;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;R;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;R;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;R;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;R;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;R;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;R;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;R;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;R;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;R;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;R;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;R;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;R;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;R;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;R;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;R;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;R;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;R;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;R;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;R;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;R;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;R;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;R;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;R;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;R;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;R;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;R;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;R;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;R;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;R;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;R;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;R;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;R;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;R;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;R;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;R;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;R;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;R;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;R;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;R;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;R;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;R;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;R;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;R;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;R;<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;R;<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;R;<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;R;<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;R;<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;R;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;R;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;R;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
+FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;ON;;;;;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;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<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;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+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;;;;N;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;;;;N;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;;;;N;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;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;0;L;<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;ON;<narrow> 3099;;;;N;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;ON;<narrow> 309A;;;;N;;;;;
+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;Sm;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;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/data/unicode/UnicodeData-3.0.0.txt b/src/data/unicode/UnicodeData-3.0.0.txt
new file mode 100755
index 0000000..6a54d3d
--- /dev/null
+++ b/src/data/unicode/UnicodeData-3.0.0.txt
@@ -0,0 +1,10617 @@
+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;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+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;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+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;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;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;INDEX;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
+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 DOWN;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
+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;Pd;0;ON;;;;;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;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;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;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;;;;
+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;;;;
+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;;;;;
+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;
+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;
+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;
+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;
+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
+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
+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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;Ll;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;;;;;
+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;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;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;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;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;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
+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;Tonos;;;
+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;;;;;
+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;;;;;
+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;;;;
+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;;;;;
+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;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+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;;;;;
+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;;;;
+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
+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
+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
+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
+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
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;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;;;;;
+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;;;;;
+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;Me;0;NSM;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;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;NSM;;;;;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;;;;;
+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;;;;;
+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;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;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;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;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;;;;;
+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;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+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;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;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;;;;;
+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;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+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;No;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;No;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;No;0;L;;;;19;N;;golden number 19;;;
+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;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;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;Po;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;Po;0;L;;;;;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;;;;;
+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;Cf;0;BN;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;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;;;;;
+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;Zs;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;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;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;WS;<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;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+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;;;;;
+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;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<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;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<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;;;;
+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;;;;;
+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;;;;;
+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;So;0;ON;;;;;N;TURNED F;;;;
+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;;;;;
+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;Nl;0;L;;;;;N;;;;;
+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;;;;;
+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;ET;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<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;EN;<circle> 0030;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+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;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;Pc;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;;;;;
+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;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;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;;;;;
+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;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;
+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;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<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;Lo;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;;;;;
+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;;;;;
+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;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;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;96FB;;;;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;;;;;
+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;ET;<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;;;;
+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;;;;
+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;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;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;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+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;;;;
+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;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<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;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+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;;;;N;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;;;;N;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;;;;N;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;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;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;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
diff --git a/src/data/unicode/UnicodeData.txt b/src/data/unicode/UnicodeData.txt
new file mode 100755
index 0000000..a90744a
--- /dev/null
+++ b/src/data/unicode/UnicodeData.txt
@@ -0,0 +1,10619 @@
+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;HORIZONTAL TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED;;;;
+000B;<control>;Cc;0;S;;;;;N;VERTICAL TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED;;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN;;;;
+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;FILE SEPARATOR;;;;
+001D;<control>;Cc;0;B;;;;;N;GROUP SEPARATOR;;;;
+001E;<control>;Cc;0;B;;;;;N;RECORD SEPARATOR;;;;
+001F;<control>;Cc;0;S;;;;;N;UNIT SEPARATOR;;;;
+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;ET;;;;;N;;;;;
+002C;COMMA;Po;0;CS;;;;;N;;;;;
+002D;HYPHEN-MINUS;Pd;0;ET;;;;;N;;;;;
+002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
+002F;SOLIDUS;Po;0;ES;;;;;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;INDEX;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE;;;;
+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 DOWN;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE UP;;;;
+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;Pd;0;ON;;;;;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;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;3;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;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;;;;
+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;;;;
+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;;;;;
+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;
+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;
+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;
+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;
+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
+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
+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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;Ll;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;;;;;
+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;Sk;0;ON;;;;;N;;;;;
+02BA;MODIFIER LETTER DOUBLE PRIME;Sk;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;Sk;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
+02C7;CARON;Sk;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Sk;0;ON;;;;;N;;Mandarin Chinese first tone;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;;
+02CC;MODIFIER LETTER LOW VERTICAL LINE;Sk;0;ON;;;;;N;;;;;
+02CD;MODIFIER LETTER LOW MACRON;Sk;0;ON;;;;;N;;;;;
+02CE;MODIFIER LETTER LOW GRAVE ACCENT;Sk;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
+02CF;MODIFIER LETTER LOW ACUTE ACCENT;Sk;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;;;;;
+0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia;;;
+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;Tonos;;;
+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;;;;;
+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;;;;;
+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;;;;
+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;;;;;
+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;;03A3;;03A3
+03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
+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;;;;;
+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;;;;
+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
+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
+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
+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
+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
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
+061B;ARABIC SEMICOLON;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;;;;;
+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;;;;;
+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;Me;0;NSM;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0903;DEVANAGARI SIGN VISARGA;Mc;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+0B83;TAMIL SIGN VISARGA;Mc;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+0CBF;KANNADA VOWEL SIGN I;Mn;0;NSM;;;;;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;NSM;;;;;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;;;;;
+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;;;;;
+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;;;;;N;;;;;
+0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;;N;;;;;
+0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;;N;;;;;
+0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;;N;;;;;
+0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;;N;;;;;
+0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;;N;;;;;
+0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;;N;;;;;
+0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;;N;;;;;
+0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;;N;;;;;
+0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;;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;;;;;N;;gug ta yun;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;N;;gug ta ye;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;N;TIBETAN LEFT BRACE;ang kang yun;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;N;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;;;;;
+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;;;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;;
+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;;;;
+10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;Nd;0;L;;1;1;1;N;;;;;
+136A;ETHIOPIC DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+136B;ETHIOPIC DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+136C;ETHIOPIC DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+136D;ETHIOPIC DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+136E;ETHIOPIC DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+136F;ETHIOPIC DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1370;ETHIOPIC DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1371;ETHIOPIC DIGIT NINE;Nd;0;L;;9;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;;;;;
+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;;;;;N;;;;;
+169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;N;;;;;
+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;No;0;L;;;;17;N;;golden number 17;;;
+16EF;RUNIC TVIMADUR SYMBOL;No;0;L;;;;18;N;;golden number 18;;;
+16F0;RUNIC BELGTHOR SYMBOL;No;0;L;;;;19;N;;golden number 19;;;
+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;Mc;0;L;;;;;N;;;;;
+17B5;KHMER VOWEL INHERENT AA;Mc;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;Po;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;Po;0;L;;;;;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;;;;;
+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;Cf;0;BN;;;;;N;;;;;
+180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Cf;0;BN;;;;;N;;;;;
+180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Cf;0;BN;;;;;N;;;;;
+180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;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;;;;;
+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;Zs;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;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;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;WS;<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;ON;;;;;N;;;;;
+2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
+2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
+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;;;;;
+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;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;4;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;5;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;6;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;7;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;8;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;9;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ET;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ET;<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;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;1;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;2;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;3;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;4;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;5;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;6;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;7;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;8;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;9;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ET;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ET;<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;;;;
+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;;;;;
+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;;;;;
+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;So;0;ON;;;;;N;TURNED F;;;;
+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;;;;;
+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;Nl;0;L;;;;;N;;;;;
+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;;;;;
+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;ET;;;;;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;;;;;
+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;;;;;
+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;;;;;
+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;EN;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;EN;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;EN;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;EN;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;EN;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;EN;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;EN;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;EN;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;EN;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;EN;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;EN;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;EN;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;EN;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;EN;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;EN;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;EN;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;EN;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;EN;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;EN;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;EN;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;EN;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;EN;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;EN;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;EN;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;EN;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;EN;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;EN;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;EN;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;EN;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;EN;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;EN;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;EN;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;EN;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;EN;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;EN;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;EN;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;EN;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;EN;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;EN;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;EN;<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;EN;<circle> 0030;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;
+2800;BRAILLE PATTERN BLANK;So;0;ON;;;;;N;;;;;
+2801;BRAILLE PATTERN DOTS-1;So;0;ON;;;;;N;;;;;
+2802;BRAILLE PATTERN DOTS-2;So;0;ON;;;;;N;;;;;
+2803;BRAILLE PATTERN DOTS-12;So;0;ON;;;;;N;;;;;
+2804;BRAILLE PATTERN DOTS-3;So;0;ON;;;;;N;;;;;
+2805;BRAILLE PATTERN DOTS-13;So;0;ON;;;;;N;;;;;
+2806;BRAILLE PATTERN DOTS-23;So;0;ON;;;;;N;;;;;
+2807;BRAILLE PATTERN DOTS-123;So;0;ON;;;;;N;;;;;
+2808;BRAILLE PATTERN DOTS-4;So;0;ON;;;;;N;;;;;
+2809;BRAILLE PATTERN DOTS-14;So;0;ON;;;;;N;;;;;
+280A;BRAILLE PATTERN DOTS-24;So;0;ON;;;;;N;;;;;
+280B;BRAILLE PATTERN DOTS-124;So;0;ON;;;;;N;;;;;
+280C;BRAILLE PATTERN DOTS-34;So;0;ON;;;;;N;;;;;
+280D;BRAILLE PATTERN DOTS-134;So;0;ON;;;;;N;;;;;
+280E;BRAILLE PATTERN DOTS-234;So;0;ON;;;;;N;;;;;
+280F;BRAILLE PATTERN DOTS-1234;So;0;ON;;;;;N;;;;;
+2810;BRAILLE PATTERN DOTS-5;So;0;ON;;;;;N;;;;;
+2811;BRAILLE PATTERN DOTS-15;So;0;ON;;;;;N;;;;;
+2812;BRAILLE PATTERN DOTS-25;So;0;ON;;;;;N;;;;;
+2813;BRAILLE PATTERN DOTS-125;So;0;ON;;;;;N;;;;;
+2814;BRAILLE PATTERN DOTS-35;So;0;ON;;;;;N;;;;;
+2815;BRAILLE PATTERN DOTS-135;So;0;ON;;;;;N;;;;;
+2816;BRAILLE PATTERN DOTS-235;So;0;ON;;;;;N;;;;;
+2817;BRAILLE PATTERN DOTS-1235;So;0;ON;;;;;N;;;;;
+2818;BRAILLE PATTERN DOTS-45;So;0;ON;;;;;N;;;;;
+2819;BRAILLE PATTERN DOTS-145;So;0;ON;;;;;N;;;;;
+281A;BRAILLE PATTERN DOTS-245;So;0;ON;;;;;N;;;;;
+281B;BRAILLE PATTERN DOTS-1245;So;0;ON;;;;;N;;;;;
+281C;BRAILLE PATTERN DOTS-345;So;0;ON;;;;;N;;;;;
+281D;BRAILLE PATTERN DOTS-1345;So;0;ON;;;;;N;;;;;
+281E;BRAILLE PATTERN DOTS-2345;So;0;ON;;;;;N;;;;;
+281F;BRAILLE PATTERN DOTS-12345;So;0;ON;;;;;N;;;;;
+2820;BRAILLE PATTERN DOTS-6;So;0;ON;;;;;N;;;;;
+2821;BRAILLE PATTERN DOTS-16;So;0;ON;;;;;N;;;;;
+2822;BRAILLE PATTERN DOTS-26;So;0;ON;;;;;N;;;;;
+2823;BRAILLE PATTERN DOTS-126;So;0;ON;;;;;N;;;;;
+2824;BRAILLE PATTERN DOTS-36;So;0;ON;;;;;N;;;;;
+2825;BRAILLE PATTERN DOTS-136;So;0;ON;;;;;N;;;;;
+2826;BRAILLE PATTERN DOTS-236;So;0;ON;;;;;N;;;;;
+2827;BRAILLE PATTERN DOTS-1236;So;0;ON;;;;;N;;;;;
+2828;BRAILLE PATTERN DOTS-46;So;0;ON;;;;;N;;;;;
+2829;BRAILLE PATTERN DOTS-146;So;0;ON;;;;;N;;;;;
+282A;BRAILLE PATTERN DOTS-246;So;0;ON;;;;;N;;;;;
+282B;BRAILLE PATTERN DOTS-1246;So;0;ON;;;;;N;;;;;
+282C;BRAILLE PATTERN DOTS-346;So;0;ON;;;;;N;;;;;
+282D;BRAILLE PATTERN DOTS-1346;So;0;ON;;;;;N;;;;;
+282E;BRAILLE PATTERN DOTS-2346;So;0;ON;;;;;N;;;;;
+282F;BRAILLE PATTERN DOTS-12346;So;0;ON;;;;;N;;;;;
+2830;BRAILLE PATTERN DOTS-56;So;0;ON;;;;;N;;;;;
+2831;BRAILLE PATTERN DOTS-156;So;0;ON;;;;;N;;;;;
+2832;BRAILLE PATTERN DOTS-256;So;0;ON;;;;;N;;;;;
+2833;BRAILLE PATTERN DOTS-1256;So;0;ON;;;;;N;;;;;
+2834;BRAILLE PATTERN DOTS-356;So;0;ON;;;;;N;;;;;
+2835;BRAILLE PATTERN DOTS-1356;So;0;ON;;;;;N;;;;;
+2836;BRAILLE PATTERN DOTS-2356;So;0;ON;;;;;N;;;;;
+2837;BRAILLE PATTERN DOTS-12356;So;0;ON;;;;;N;;;;;
+2838;BRAILLE PATTERN DOTS-456;So;0;ON;;;;;N;;;;;
+2839;BRAILLE PATTERN DOTS-1456;So;0;ON;;;;;N;;;;;
+283A;BRAILLE PATTERN DOTS-2456;So;0;ON;;;;;N;;;;;
+283B;BRAILLE PATTERN DOTS-12456;So;0;ON;;;;;N;;;;;
+283C;BRAILLE PATTERN DOTS-3456;So;0;ON;;;;;N;;;;;
+283D;BRAILLE PATTERN DOTS-13456;So;0;ON;;;;;N;;;;;
+283E;BRAILLE PATTERN DOTS-23456;So;0;ON;;;;;N;;;;;
+283F;BRAILLE PATTERN DOTS-123456;So;0;ON;;;;;N;;;;;
+2840;BRAILLE PATTERN DOTS-7;So;0;ON;;;;;N;;;;;
+2841;BRAILLE PATTERN DOTS-17;So;0;ON;;;;;N;;;;;
+2842;BRAILLE PATTERN DOTS-27;So;0;ON;;;;;N;;;;;
+2843;BRAILLE PATTERN DOTS-127;So;0;ON;;;;;N;;;;;
+2844;BRAILLE PATTERN DOTS-37;So;0;ON;;;;;N;;;;;
+2845;BRAILLE PATTERN DOTS-137;So;0;ON;;;;;N;;;;;
+2846;BRAILLE PATTERN DOTS-237;So;0;ON;;;;;N;;;;;
+2847;BRAILLE PATTERN DOTS-1237;So;0;ON;;;;;N;;;;;
+2848;BRAILLE PATTERN DOTS-47;So;0;ON;;;;;N;;;;;
+2849;BRAILLE PATTERN DOTS-147;So;0;ON;;;;;N;;;;;
+284A;BRAILLE PATTERN DOTS-247;So;0;ON;;;;;N;;;;;
+284B;BRAILLE PATTERN DOTS-1247;So;0;ON;;;;;N;;;;;
+284C;BRAILLE PATTERN DOTS-347;So;0;ON;;;;;N;;;;;
+284D;BRAILLE PATTERN DOTS-1347;So;0;ON;;;;;N;;;;;
+284E;BRAILLE PATTERN DOTS-2347;So;0;ON;;;;;N;;;;;
+284F;BRAILLE PATTERN DOTS-12347;So;0;ON;;;;;N;;;;;
+2850;BRAILLE PATTERN DOTS-57;So;0;ON;;;;;N;;;;;
+2851;BRAILLE PATTERN DOTS-157;So;0;ON;;;;;N;;;;;
+2852;BRAILLE PATTERN DOTS-257;So;0;ON;;;;;N;;;;;
+2853;BRAILLE PATTERN DOTS-1257;So;0;ON;;;;;N;;;;;
+2854;BRAILLE PATTERN DOTS-357;So;0;ON;;;;;N;;;;;
+2855;BRAILLE PATTERN DOTS-1357;So;0;ON;;;;;N;;;;;
+2856;BRAILLE PATTERN DOTS-2357;So;0;ON;;;;;N;;;;;
+2857;BRAILLE PATTERN DOTS-12357;So;0;ON;;;;;N;;;;;
+2858;BRAILLE PATTERN DOTS-457;So;0;ON;;;;;N;;;;;
+2859;BRAILLE PATTERN DOTS-1457;So;0;ON;;;;;N;;;;;
+285A;BRAILLE PATTERN DOTS-2457;So;0;ON;;;;;N;;;;;
+285B;BRAILLE PATTERN DOTS-12457;So;0;ON;;;;;N;;;;;
+285C;BRAILLE PATTERN DOTS-3457;So;0;ON;;;;;N;;;;;
+285D;BRAILLE PATTERN DOTS-13457;So;0;ON;;;;;N;;;;;
+285E;BRAILLE PATTERN DOTS-23457;So;0;ON;;;;;N;;;;;
+285F;BRAILLE PATTERN DOTS-123457;So;0;ON;;;;;N;;;;;
+2860;BRAILLE PATTERN DOTS-67;So;0;ON;;;;;N;;;;;
+2861;BRAILLE PATTERN DOTS-167;So;0;ON;;;;;N;;;;;
+2862;BRAILLE PATTERN DOTS-267;So;0;ON;;;;;N;;;;;
+2863;BRAILLE PATTERN DOTS-1267;So;0;ON;;;;;N;;;;;
+2864;BRAILLE PATTERN DOTS-367;So;0;ON;;;;;N;;;;;
+2865;BRAILLE PATTERN DOTS-1367;So;0;ON;;;;;N;;;;;
+2866;BRAILLE PATTERN DOTS-2367;So;0;ON;;;;;N;;;;;
+2867;BRAILLE PATTERN DOTS-12367;So;0;ON;;;;;N;;;;;
+2868;BRAILLE PATTERN DOTS-467;So;0;ON;;;;;N;;;;;
+2869;BRAILLE PATTERN DOTS-1467;So;0;ON;;;;;N;;;;;
+286A;BRAILLE PATTERN DOTS-2467;So;0;ON;;;;;N;;;;;
+286B;BRAILLE PATTERN DOTS-12467;So;0;ON;;;;;N;;;;;
+286C;BRAILLE PATTERN DOTS-3467;So;0;ON;;;;;N;;;;;
+286D;BRAILLE PATTERN DOTS-13467;So;0;ON;;;;;N;;;;;
+286E;BRAILLE PATTERN DOTS-23467;So;0;ON;;;;;N;;;;;
+286F;BRAILLE PATTERN DOTS-123467;So;0;ON;;;;;N;;;;;
+2870;BRAILLE PATTERN DOTS-567;So;0;ON;;;;;N;;;;;
+2871;BRAILLE PATTERN DOTS-1567;So;0;ON;;;;;N;;;;;
+2872;BRAILLE PATTERN DOTS-2567;So;0;ON;;;;;N;;;;;
+2873;BRAILLE PATTERN DOTS-12567;So;0;ON;;;;;N;;;;;
+2874;BRAILLE PATTERN DOTS-3567;So;0;ON;;;;;N;;;;;
+2875;BRAILLE PATTERN DOTS-13567;So;0;ON;;;;;N;;;;;
+2876;BRAILLE PATTERN DOTS-23567;So;0;ON;;;;;N;;;;;
+2877;BRAILLE PATTERN DOTS-123567;So;0;ON;;;;;N;;;;;
+2878;BRAILLE PATTERN DOTS-4567;So;0;ON;;;;;N;;;;;
+2879;BRAILLE PATTERN DOTS-14567;So;0;ON;;;;;N;;;;;
+287A;BRAILLE PATTERN DOTS-24567;So;0;ON;;;;;N;;;;;
+287B;BRAILLE PATTERN DOTS-124567;So;0;ON;;;;;N;;;;;
+287C;BRAILLE PATTERN DOTS-34567;So;0;ON;;;;;N;;;;;
+287D;BRAILLE PATTERN DOTS-134567;So;0;ON;;;;;N;;;;;
+287E;BRAILLE PATTERN DOTS-234567;So;0;ON;;;;;N;;;;;
+287F;BRAILLE PATTERN DOTS-1234567;So;0;ON;;;;;N;;;;;
+2880;BRAILLE PATTERN DOTS-8;So;0;ON;;;;;N;;;;;
+2881;BRAILLE PATTERN DOTS-18;So;0;ON;;;;;N;;;;;
+2882;BRAILLE PATTERN DOTS-28;So;0;ON;;;;;N;;;;;
+2883;BRAILLE PATTERN DOTS-128;So;0;ON;;;;;N;;;;;
+2884;BRAILLE PATTERN DOTS-38;So;0;ON;;;;;N;;;;;
+2885;BRAILLE PATTERN DOTS-138;So;0;ON;;;;;N;;;;;
+2886;BRAILLE PATTERN DOTS-238;So;0;ON;;;;;N;;;;;
+2887;BRAILLE PATTERN DOTS-1238;So;0;ON;;;;;N;;;;;
+2888;BRAILLE PATTERN DOTS-48;So;0;ON;;;;;N;;;;;
+2889;BRAILLE PATTERN DOTS-148;So;0;ON;;;;;N;;;;;
+288A;BRAILLE PATTERN DOTS-248;So;0;ON;;;;;N;;;;;
+288B;BRAILLE PATTERN DOTS-1248;So;0;ON;;;;;N;;;;;
+288C;BRAILLE PATTERN DOTS-348;So;0;ON;;;;;N;;;;;
+288D;BRAILLE PATTERN DOTS-1348;So;0;ON;;;;;N;;;;;
+288E;BRAILLE PATTERN DOTS-2348;So;0;ON;;;;;N;;;;;
+288F;BRAILLE PATTERN DOTS-12348;So;0;ON;;;;;N;;;;;
+2890;BRAILLE PATTERN DOTS-58;So;0;ON;;;;;N;;;;;
+2891;BRAILLE PATTERN DOTS-158;So;0;ON;;;;;N;;;;;
+2892;BRAILLE PATTERN DOTS-258;So;0;ON;;;;;N;;;;;
+2893;BRAILLE PATTERN DOTS-1258;So;0;ON;;;;;N;;;;;
+2894;BRAILLE PATTERN DOTS-358;So;0;ON;;;;;N;;;;;
+2895;BRAILLE PATTERN DOTS-1358;So;0;ON;;;;;N;;;;;
+2896;BRAILLE PATTERN DOTS-2358;So;0;ON;;;;;N;;;;;
+2897;BRAILLE PATTERN DOTS-12358;So;0;ON;;;;;N;;;;;
+2898;BRAILLE PATTERN DOTS-458;So;0;ON;;;;;N;;;;;
+2899;BRAILLE PATTERN DOTS-1458;So;0;ON;;;;;N;;;;;
+289A;BRAILLE PATTERN DOTS-2458;So;0;ON;;;;;N;;;;;
+289B;BRAILLE PATTERN DOTS-12458;So;0;ON;;;;;N;;;;;
+289C;BRAILLE PATTERN DOTS-3458;So;0;ON;;;;;N;;;;;
+289D;BRAILLE PATTERN DOTS-13458;So;0;ON;;;;;N;;;;;
+289E;BRAILLE PATTERN DOTS-23458;So;0;ON;;;;;N;;;;;
+289F;BRAILLE PATTERN DOTS-123458;So;0;ON;;;;;N;;;;;
+28A0;BRAILLE PATTERN DOTS-68;So;0;ON;;;;;N;;;;;
+28A1;BRAILLE PATTERN DOTS-168;So;0;ON;;;;;N;;;;;
+28A2;BRAILLE PATTERN DOTS-268;So;0;ON;;;;;N;;;;;
+28A3;BRAILLE PATTERN DOTS-1268;So;0;ON;;;;;N;;;;;
+28A4;BRAILLE PATTERN DOTS-368;So;0;ON;;;;;N;;;;;
+28A5;BRAILLE PATTERN DOTS-1368;So;0;ON;;;;;N;;;;;
+28A6;BRAILLE PATTERN DOTS-2368;So;0;ON;;;;;N;;;;;
+28A7;BRAILLE PATTERN DOTS-12368;So;0;ON;;;;;N;;;;;
+28A8;BRAILLE PATTERN DOTS-468;So;0;ON;;;;;N;;;;;
+28A9;BRAILLE PATTERN DOTS-1468;So;0;ON;;;;;N;;;;;
+28AA;BRAILLE PATTERN DOTS-2468;So;0;ON;;;;;N;;;;;
+28AB;BRAILLE PATTERN DOTS-12468;So;0;ON;;;;;N;;;;;
+28AC;BRAILLE PATTERN DOTS-3468;So;0;ON;;;;;N;;;;;
+28AD;BRAILLE PATTERN DOTS-13468;So;0;ON;;;;;N;;;;;
+28AE;BRAILLE PATTERN DOTS-23468;So;0;ON;;;;;N;;;;;
+28AF;BRAILLE PATTERN DOTS-123468;So;0;ON;;;;;N;;;;;
+28B0;BRAILLE PATTERN DOTS-568;So;0;ON;;;;;N;;;;;
+28B1;BRAILLE PATTERN DOTS-1568;So;0;ON;;;;;N;;;;;
+28B2;BRAILLE PATTERN DOTS-2568;So;0;ON;;;;;N;;;;;
+28B3;BRAILLE PATTERN DOTS-12568;So;0;ON;;;;;N;;;;;
+28B4;BRAILLE PATTERN DOTS-3568;So;0;ON;;;;;N;;;;;
+28B5;BRAILLE PATTERN DOTS-13568;So;0;ON;;;;;N;;;;;
+28B6;BRAILLE PATTERN DOTS-23568;So;0;ON;;;;;N;;;;;
+28B7;BRAILLE PATTERN DOTS-123568;So;0;ON;;;;;N;;;;;
+28B8;BRAILLE PATTERN DOTS-4568;So;0;ON;;;;;N;;;;;
+28B9;BRAILLE PATTERN DOTS-14568;So;0;ON;;;;;N;;;;;
+28BA;BRAILLE PATTERN DOTS-24568;So;0;ON;;;;;N;;;;;
+28BB;BRAILLE PATTERN DOTS-124568;So;0;ON;;;;;N;;;;;
+28BC;BRAILLE PATTERN DOTS-34568;So;0;ON;;;;;N;;;;;
+28BD;BRAILLE PATTERN DOTS-134568;So;0;ON;;;;;N;;;;;
+28BE;BRAILLE PATTERN DOTS-234568;So;0;ON;;;;;N;;;;;
+28BF;BRAILLE PATTERN DOTS-1234568;So;0;ON;;;;;N;;;;;
+28C0;BRAILLE PATTERN DOTS-78;So;0;ON;;;;;N;;;;;
+28C1;BRAILLE PATTERN DOTS-178;So;0;ON;;;;;N;;;;;
+28C2;BRAILLE PATTERN DOTS-278;So;0;ON;;;;;N;;;;;
+28C3;BRAILLE PATTERN DOTS-1278;So;0;ON;;;;;N;;;;;
+28C4;BRAILLE PATTERN DOTS-378;So;0;ON;;;;;N;;;;;
+28C5;BRAILLE PATTERN DOTS-1378;So;0;ON;;;;;N;;;;;
+28C6;BRAILLE PATTERN DOTS-2378;So;0;ON;;;;;N;;;;;
+28C7;BRAILLE PATTERN DOTS-12378;So;0;ON;;;;;N;;;;;
+28C8;BRAILLE PATTERN DOTS-478;So;0;ON;;;;;N;;;;;
+28C9;BRAILLE PATTERN DOTS-1478;So;0;ON;;;;;N;;;;;
+28CA;BRAILLE PATTERN DOTS-2478;So;0;ON;;;;;N;;;;;
+28CB;BRAILLE PATTERN DOTS-12478;So;0;ON;;;;;N;;;;;
+28CC;BRAILLE PATTERN DOTS-3478;So;0;ON;;;;;N;;;;;
+28CD;BRAILLE PATTERN DOTS-13478;So;0;ON;;;;;N;;;;;
+28CE;BRAILLE PATTERN DOTS-23478;So;0;ON;;;;;N;;;;;
+28CF;BRAILLE PATTERN DOTS-123478;So;0;ON;;;;;N;;;;;
+28D0;BRAILLE PATTERN DOTS-578;So;0;ON;;;;;N;;;;;
+28D1;BRAILLE PATTERN DOTS-1578;So;0;ON;;;;;N;;;;;
+28D2;BRAILLE PATTERN DOTS-2578;So;0;ON;;;;;N;;;;;
+28D3;BRAILLE PATTERN DOTS-12578;So;0;ON;;;;;N;;;;;
+28D4;BRAILLE PATTERN DOTS-3578;So;0;ON;;;;;N;;;;;
+28D5;BRAILLE PATTERN DOTS-13578;So;0;ON;;;;;N;;;;;
+28D6;BRAILLE PATTERN DOTS-23578;So;0;ON;;;;;N;;;;;
+28D7;BRAILLE PATTERN DOTS-123578;So;0;ON;;;;;N;;;;;
+28D8;BRAILLE PATTERN DOTS-4578;So;0;ON;;;;;N;;;;;
+28D9;BRAILLE PATTERN DOTS-14578;So;0;ON;;;;;N;;;;;
+28DA;BRAILLE PATTERN DOTS-24578;So;0;ON;;;;;N;;;;;
+28DB;BRAILLE PATTERN DOTS-124578;So;0;ON;;;;;N;;;;;
+28DC;BRAILLE PATTERN DOTS-34578;So;0;ON;;;;;N;;;;;
+28DD;BRAILLE PATTERN DOTS-134578;So;0;ON;;;;;N;;;;;
+28DE;BRAILLE PATTERN DOTS-234578;So;0;ON;;;;;N;;;;;
+28DF;BRAILLE PATTERN DOTS-1234578;So;0;ON;;;;;N;;;;;
+28E0;BRAILLE PATTERN DOTS-678;So;0;ON;;;;;N;;;;;
+28E1;BRAILLE PATTERN DOTS-1678;So;0;ON;;;;;N;;;;;
+28E2;BRAILLE PATTERN DOTS-2678;So;0;ON;;;;;N;;;;;
+28E3;BRAILLE PATTERN DOTS-12678;So;0;ON;;;;;N;;;;;
+28E4;BRAILLE PATTERN DOTS-3678;So;0;ON;;;;;N;;;;;
+28E5;BRAILLE PATTERN DOTS-13678;So;0;ON;;;;;N;;;;;
+28E6;BRAILLE PATTERN DOTS-23678;So;0;ON;;;;;N;;;;;
+28E7;BRAILLE PATTERN DOTS-123678;So;0;ON;;;;;N;;;;;
+28E8;BRAILLE PATTERN DOTS-4678;So;0;ON;;;;;N;;;;;
+28E9;BRAILLE PATTERN DOTS-14678;So;0;ON;;;;;N;;;;;
+28EA;BRAILLE PATTERN DOTS-24678;So;0;ON;;;;;N;;;;;
+28EB;BRAILLE PATTERN DOTS-124678;So;0;ON;;;;;N;;;;;
+28EC;BRAILLE PATTERN DOTS-34678;So;0;ON;;;;;N;;;;;
+28ED;BRAILLE PATTERN DOTS-134678;So;0;ON;;;;;N;;;;;
+28EE;BRAILLE PATTERN DOTS-234678;So;0;ON;;;;;N;;;;;
+28EF;BRAILLE PATTERN DOTS-1234678;So;0;ON;;;;;N;;;;;
+28F0;BRAILLE PATTERN DOTS-5678;So;0;ON;;;;;N;;;;;
+28F1;BRAILLE PATTERN DOTS-15678;So;0;ON;;;;;N;;;;;
+28F2;BRAILLE PATTERN DOTS-25678;So;0;ON;;;;;N;;;;;
+28F3;BRAILLE PATTERN DOTS-125678;So;0;ON;;;;;N;;;;;
+28F4;BRAILLE PATTERN DOTS-35678;So;0;ON;;;;;N;;;;;
+28F5;BRAILLE PATTERN DOTS-135678;So;0;ON;;;;;N;;;;;
+28F6;BRAILLE PATTERN DOTS-235678;So;0;ON;;;;;N;;;;;
+28F7;BRAILLE PATTERN DOTS-1235678;So;0;ON;;;;;N;;;;;
+28F8;BRAILLE PATTERN DOTS-45678;So;0;ON;;;;;N;;;;;
+28F9;BRAILLE PATTERN DOTS-145678;So;0;ON;;;;;N;;;;;
+28FA;BRAILLE PATTERN DOTS-245678;So;0;ON;;;;;N;;;;;
+28FB;BRAILLE PATTERN DOTS-1245678;So;0;ON;;;;;N;;;;;
+28FC;BRAILLE PATTERN DOTS-345678;So;0;ON;;;;;N;;;;;
+28FD;BRAILLE PATTERN DOTS-1345678;So;0;ON;;;;;N;;;;;
+28FE;BRAILLE PATTERN DOTS-2345678;So;0;ON;;;;;N;;;;;
+28FF;BRAILLE PATTERN DOTS-12345678;So;0;ON;;;;;N;;;;;
+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;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;Pc;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;;;;;
+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;;;;N;KAERITEN ITI;Kaeriten;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;;N;KAERITEN NI;Kaeriten;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;;N;KAERITEN SAN;Kaeriten;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;;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;;;;;
+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;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;;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;;;;;
+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;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+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;;;;
+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;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
+4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FA5;<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;Lo;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;;;;;
+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;;;;;
+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;;;;;
+A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
+A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
+A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
+A4C6;YI RADICAL KE;So;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;96FB;;;;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;;;;;
+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;ET;<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;;;;
+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;;;;
+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;;;;N;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;N;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;N;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;N;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;N;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;N;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;ET;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ET;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;N;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;N;;;;;
+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;;;;
+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;;;;N;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;N;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ET;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ET;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;ES;<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;;;;N;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;N;;;;;
+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;;;;N;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;;;;N;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;;;;N;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;;;;N;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;N;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;N;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Pc;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;BN;;;;;N;;;;;
+FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;BN;;;;;N;;;;;
+FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;BN;;;;;N;;;;;
+FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
+
+